| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 | 
#------------------------------------------------------------------------------# $File: msx,v 1.12 2024/08/30 17:29:28 christos Exp $# msx:  file(1) magic for the MSX Home Computer# v1.3# Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>############## MSX Music file formats ############### Gigamix MGSDRV music file0	string/b		MGS	MSX Gigamix MGSDRV3 music file,>6	ubeshort	0x0D0A>>3	byte		x	\bv%c>>4	byte		x	\b.%c>>5	byte		x	\b%c>>8	string		>\0	\b, title: %s1	string/b		mgs2\ 	MSX Gigamix MGSDRV2 music file>6	uleshort	0x80>>0x2E	uleshort	0>>>0x30	string		>\0	\b, title: %s# KSS music file0	string/b		KSCC	KSS music file v1.03>0xE	byte		0>>0xF	byte&0x02	0	\b, soundchips: AY-3-8910, SCC(+)>>0xF	byte&0x02	2	\b, soundchip(s): SN76489>>>0xF	byte&0x04	4	stereo>>0xF	byte&0x01	1	\b, YM2413>>0xF	byte&0x08	8	\b, Y89500	string/b		KSSX	KSS music file v1.20>0xE	byte&0xEF	0>>0xF	byte&0x40	0x00	\b, 60Hz>>0xF	byte&0x40	0x40	\b, 50Hz>>0xF	byte&0x02	0	\b, soundchips: AY-3-8910, SCC(+)>>0xF	byte&0x02	0x02	\b, soundchips: SN76489>>>0xF	byte&0x04	0x04	stereo>>0xF	byte&0x01	0x01	\b,>>>0xF	byte&0x18	0x00	\bYM2413>>>0xF	byte&0x18	0x08	\bYM2413, Y8950>>>0xF	byte&0x18	0x18	\bYM2413+Y8950 pseudostereo>>0xF	byte&0x18	0x10	\b, Majyutsushi DAC# Moonblaster for Moonsound0	string/b		MBMS>4	byte		0x10	MSX Moonblaster for MoonSound music# Music Player K-kaz0	string/b		MPK	MSX Music Player K-kaz song>6	ubeshort	0x0D0A>>3	byte		x	v%c>>4	byte		x	\b.%c>>5	byte		x	\b%c# I don't know why these don't work#0	search/0xFFFF	\r\n.FM9#>0	search/0xFFFF	\r\n#FORMAT	MSX Music Player K-kaz source MML file#0	search/0xFFFF	\r\nFM1\ \=#>0	search/0xFFFF	\r\nPSG1\=#>>0	search/0xFFFF	\r\nSCC1\=		MSX MuSiCa MML source file# OPX Music file0x35	beshort		0x0d0a>0x7B	beshort		0x0d0a>>0x7D	byte		0x1a>>>0x87	uleshort	0		MSX OPX Music file>>>>0x86	byte		0		v1.5>>>>>0	string		>\32		\b, title: %s>>>>0x86	byte		1		v2.4>>>>>0	string		>\32		\b, title: %s# SCMD music file0x8B	string/b		SCMD>0xCE	uleshort	0	MSX SCMD Music file#>>-2	uleshort	0x6a71	; The file must end with this value. How to code this here?>>0x8F	string		>\0		\b, title: %s0	search/0xFFFF	\r\n@title>&0	search/0xFFFF	\r\n@m=[	MSX SCMD source MML file############## MSX image file formats ############### MSX raw VRAM dump0	ubyte		0xFE>1	uleshort	0>>5	uleshort	0>>>3	uleshort	0x37FF		MSX SC2/GRP raw image>>>3	uleshort	0x6A00		MSX Graph Saurus SR5 raw image>>>3	uleshort	>0x769E>>>>3	uleshort	<0x8000		MSX GE5/GE6 raw image>>>>>3	uleshort	0x7FFF		\b, with sprite patterns>>>3	uleshort	0xD3FF		MSX screen 7-12 raw image>>>3	uleshort	0xD400		MSX Graph Saurus SR7/SR8/SRS raw image# Graph Saurus compressed images0	ubyte		0xFD>1	uleshort	0>>5	uleshort	0>>>3	uleshort	>0x013D		MSX Graph Saurus compressed image# MSX G9B image file0	string/b		G9B>1	uleshort	11>>3	uleshort	>10>>>5	ubyte		>0		MSX G9B image, depth=%d>>>>8	uleshort	x		\b, %dx>>>>10	uleshort	x		\b%d>>>>5	ubyte		<9>>>>>6	ubyte		0>>>>>>7	ubyte		x		\b, codec=%d RGB color palettes>>>>>6	ubyte		64		\b, codec=RGB fixed color>>>>>6	ubyte		128		\b, codec=YJK>>>>>6	ubyte		192		\b, codec=YUV>>>>5	ubyte		>8		codec=RGB fixed color>>>>12	ubyte		0		\b, raw>>>>12	ubyte		1		\b, bitbuster compression############## Other MSX file formats ############### MSX internal ROMs0		ubeshort	0xF3C3>2		uleshort	<0x4000>>8		ubyte		0xC3>>>9		uleshort	<0x4000>>>>0x0B	ubeshort	0x00C3>>>>>0x0D	uleshort	<0x4000>>>>>>0x0F	ubeshort	0x00C3>>>>>>>0x11	uleshort	<0x4000>>>>>>>>0x13	ubeshort	0x00C3>>>>>>>>>0x15	uleshort	<0x4000>>>>>>>>>>0x50	ubyte		0xC3>>>>>>>>>>>0x51	uleshort	<0x4000>>>>>>>>>>>>(9.s)	ubyte	0xC3>>>>>>>>>>>>>&0	uleshort	>0x4000>>>>>>>>>>>>>>&0	ubyte	0xC3		MSX BIOS+BASIC>>>>>>>>>>>>>>>0x002D	ubyte+1	<3		\b. version=MSX%d>>>>>>>>>>>>>>>0x002D	ubyte	2		\b, version=MSX2+>>>>>>>>>>>>>>>0x002D	ubyte	3		\b, version=MSX Turbo-R>>>>>>>>>>>>>>>0x002D	ubyte	>3		\b, version=Unknown MSX %d version>>>>>>>>>>>>>>>0x0006	ubyte	x		\b, VDP.DR=%#2x>>>>>>>>>>>>>>>0x0007	ubyte	x		\b, VDP.DW=%#2x>>>>>>>>>>>>>>>0x002B	ubyte&0xF	0		\b, charset=Japanese>>>>>>>>>>>>>>>0x002B	ubyte&0xF	1		\b, charset=International>>>>>>>>>>>>>>>0x002B	ubyte&0xF	2		\b, charset=Korean>>>>>>>>>>>>>>>0x002B	ubyte&0xF	>2		\b, charset=Unknown id:%d>>>>>>>>>>>>>>>0x002B	ubyte&0x70	0x00		\b, date format=Y-M-D>>>>>>>>>>>>>>>0x002B	ubyte&0x70	0x10		\b, date format=M-D-Y>>>>>>>>>>>>>>>0x002B	ubyte&0x70	0x20		\b, date format=D-M-Y>>>>>>>>>>>>>>>0x002B	ubyte&0x80	0x00		\b, vfreq=60Hz>>>>>>>>>>>>>>>0x002B	ubyte&0x80	0x80		\b, vfreq=50Hz>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	0		\b, keyboard=Japanese>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	1		\b, keyboard=International>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	2		\b, keyboard=French>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	3		\b, keyboard=UK>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	4		\b, keyboard=German>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	5		\b, keyboard=Unknown id:%d>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	6		\b, keyboard=Spanish>>>>>>>>>>>>>>>0x002C	ubyte&0x0F	>6		\b, keyboard=Unknown id:%d>>>>>>>>>>>>>>>0x002C	ubyte&0xF0	0x00		\b, basic=Japanese>>>>>>>>>>>>>>>0x002C	ubyte&0xF0	0x10		\b, basic=International>>>>>>>>>>>>>>>0x002C	ubyte&0xF0	>0x10		\b, basic=Unknown id:%d>>>>>>>>>>>>>>>0x002E	ubyte&1		1		\b, built-in MIDI0		string/b		CD>2		uleshort	>0x10>>2		uleshort	<0x4000>>>4		uleshort	<0x4000>>>>6		uleshort	<0x4000>>>>>8		ubyte		0xC3>>>>>>9		uleshort	<0x4000>>>>>>>0x10	ubyte		0xC3>>>>>>>>0x11	uleshort	<0x4000>>>>>>>>>0x14	ubyte		0xC3>>>>>>>>>>0x15	uleshort	<0x4000		MSX2/2+/TR SubROM0		string		\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>0x5F0		ubequad		0x8282828244380000>>0x150		ubyte		0x38>>>0x170	string		\20\20\20>>>>0x1E32	string		())>>>>>0x2130	ubequad		0xA5A5594924231807>>>>>0x2138	ubequad		0x4A4A3424488830C0	MSX Kanji Font# MSX extension ROMs0	string/b		AB>2	uleshort	0x0010			MSX ROM>>2	uleshort	x			\b, init=%#4x>>4	uleshort	>0			\b, stahdl=%#4x>>6	uleshort	>0			\b, devhdl=%#4x>>8	uleshort	>0			\b, bas=%#4x>2	uleshort	0x4010			MSX ROM>>2	uleshort	x			\b, init=%#04x>>4	uleshort	>0			\b, stahdl=%#04x>>6	uleshort	>0			\b, devhdl=%#04x>>8	uleshort	>0			\b, bas=%#04x>2	uleshort	0x8010			MSX ROM>>2	uleshort	x			\b, init=%#04x>>4	uleshort	>0			\b, stahdl=%#04x>>6	uleshort	>0			\b, devhdl=%#04x>>8	uleshort	>0			\b, bas=%#04x#>2	string		5JSuperLAYDOCK		MSX Super Laydock ROM#>3	string		@HYDLIDE3MSX		MSX Hydlide-3 ROM#>3	string		@3\x80IA862		Golvellius MSX1 ROM>2	uleshort	>15>>2	uleshort	<0xC000>>>8	string		\0\0\0\0\0\0\0\0>>>>(2.s&0x3FFF)	uleshort	>0		MSX ROM>>>>>0x10	string		YZ\0\0\0\0		Konami Game Master 2 MSX ROM>>>>>0x10	string		CD			\b, Konami RC->>>>>>0x12	ubyte		x			\b%d>>>>>>0x13	ubyte/16	x			\b%d>>>>>>0x13	ubyte&0xF	x			\b%d>>>>>0x10	string		EF			\b, Konami RC->>>>>>0x12	ubyte		x			\b%d>>>>>>0x13	ubyte/16	x			\b%d>>>>>>0x13	ubyte&0xF	x			\b%d>>>>>2	uleshort	x			\b, init=%#04x>>>>>4	uleshort	>0			\b, stahdl=%#04x>>>>>6	uleshort	>0			\b, devhdl=%#04x>>>>>8	uleshort	>0			\b, bas=%#04x>>>2	uleshort	0>>>>4	uleshort	0>>>>>6	uleshort	0>>>>>>8	uleshort	>0			MSX BASIC program in ROM, bas=%#04x0	string/b		AB\0\0>6	uleshort	0>>4	uleshort	>0x400F			MSX-BASIC extension ROM>>>4	uleshort	>0			\b, stahdl=%#04x>>>6	uleshort	>0			\b, devhdl=%#04x>>>0x1C		string		OPLL			\b, MSX-Music>>>>0x18	string		PAC2			\b (external)>>>>0x18	string		APRL			\b (internal)0	string/b		AB\0\0\0\0>6	uleshort	>0x400F			MSX device BIOS>>6	uleshort	>0			\b, devhdl=%#04x0x4000	string/b		AB>0x4002	uleshort	>0x400F>>0x400A	string		\0\0\0\0\0\0	MSX ROM with nonstandard page order>>>0x4002	uleshort	x			\b, init=%#04x>>>0x4004	uleshort	>0			\b, stahdl=%#04x>>>0x4006	uleshort	>0			\b, devhdl=%#04x>>>0x4008	uleshort	>0			\b, bas=%#04x0x8000	string/b		AB>0x8002	uleshort	>0x400F>>0x800A	string		\0\0\0\0\0\0	MSX ROM with nonstandard page order>>>0x8002	uleshort	x			\b, init=%#04x>>>0x8004	uleshort	>0			\b, stahdl=%#04x>>>0x8006	uleshort	>0			\b, devhdl=%#04x>>>0x8008	uleshort	>0			\b, bas=%#04x0x3C000	string/b		AB>0x3C008	string		\0\0\0\0\0\0\0\0	MSX MegaROM with nonstandard page order>>0x3C002	uleshort	x			\b, init=%#04x>>0x3C004	uleshort	>0			\b, stahdl=%#04x>>0x3C006	uleshort	>0			\b, devhdl=%#04x>>0x3C008	uleshort	>0			\b, bas=%#04x# MSX BIN file#0	byte		0xFE#>1	uleshort	>0x8000#>>3	uleshort	>0x8004#>>>5	uleshort	>0x8000			MSX BIN file# MSX-BASIC file0	byte		0xFF>3	uleshort	0x000A>>1	uleshort	>0x8000			MSX-BASIC program# MSX .CAS file0	string/b	\x1F\xA6\xDE\xBA\xCC\x13\x7D\x74	MSX cassette archive# Mega-Assembler file0	byte		0xFE>1	uleshort	0x0001>>5	uleshort	0xffff>>>6	byte		0x0A		MSX Mega-Assembler source# Execrom Patchfile0	string		ExecROM\ patchfile\x1A	MSX ExecROM patchfile>0x12	ubyte/16	x		v%d>0x12	ubyte&0xF	x		\b.%d>0x13	ubyte		x		\b, contains %d patches# Konami's King's Valley-2 custom stage (ELG file)4	uleshort	0x0900>0xF	byte		1>>0x14	byte		0>>>0x1E	string		\040\040\040>>>>0x23	byte	1>>>>>0x25	byte	0>>>>>>0x15	string	>\x30>>>>>>>0x15	string	<\x5A		Konami King's Valley-2 custom stage, title: "%-8.8s">>>>>>>>0x1D	byte	<32	\b, theme: %d# Metal Gear 1 savegame#0x4F	string	\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF#>>0x60	string	\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF#>>>0x7B	string	\0x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00	Metal Gear 1 savegame
 |