msx revision 298920
155714Skris
255714Skris#------------------------------------------------------------------------------
355714Skris# msx:  file(1) magic for the MSX Home Computer
455714Skris# v1.1
555714Skris# Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
655714Skris
755714Skris############## MSX Music file formats ##############
8280304Sjkim
955714Skris# Gigamix MGSDRV music file
1055714Skris0	string/b		MGS	MSX Gigamix MGSDRV3 music file, 
1155714Skris>6	ubeshort	0x0D0A
1255714Skris>>3	byte		x	\bv%c
1355714Skris>>4	byte		x	\b.%c
1455714Skris>>5	byte		x	\b%c
15280304Sjkim>>8	string		>\0	\b, title: %s
1655714Skris
1755714Skris1	string/b		mgs2\ 	MSX Gigamix MGSDRV2 music file
1855714Skris>6	uleshort	0x80
1955714Skris>>0x2E	uleshort	0
2055714Skris>>>0x30	string		>\0	\b, title: %s
2155714Skris
22280304Sjkim# KSS music file
2355714Skris0	string/b		KSCC	KSS music file v1.03
2455714Skris>0xE	byte		0
2555714Skris>>0xF	byte&0x02	0	\b, soundchips: AY-3-8910, SCC(+)
2655714Skris>>0xF	byte&0x02	2	\b, soundchip(s): SN76489
2755714Skris>>>0xF	byte&0x04	4	stereo
2855714Skris>>0xF	byte&0x01	1	\b, YM2413
2955714Skris>>0xF	byte&0x08	8	\b, Y8950
3055714Skris
3155714Skris0	string/b		KSSX	KSS music file v1.20
3255714Skris>0xE	byte&0xEF	0
3355714Skris>>0xF	byte&0x40	0x00	\b, 60Hz
3455714Skris>>0xF	byte&0x40	0x40	\b, 50Hz
3555714Skris>>0xF	byte&0x02	0	\b, soundchips: AY-3-8910, SCC(+)
3655714Skris>>0xF	byte&0x02	0x02	\b, soundchips: SN76489
37280304Sjkim>>>0xF	byte&0x04	0x04	stereo
3855714Skris>>0xF	byte&0x01	0x01	\b, 
3955714Skris>>>0xF	byte&0x18	0x00	\bYM2413
40280304Sjkim>>>0xF	byte&0x18	0x08	\bYM2413, Y8950
4155714Skris>>>0xF	byte&0x18	0x18	\bYM2413+Y8950 pseudostereo
4255714Skris>>0xF	byte&0x18	0x10	\b, Majyutsushi DAC
4355714Skris
4455714Skris# Moonblaster for Moonsound
4555714Skris0	string/b		MBMS
4655714Skris>4	byte		0x10	MSX Moonblaster for MoonSound music
4755714Skris
4855714Skris# Music Player K-kaz
4955714Skris0	string/b		MPK	MSX Music Player K-kaz song
5055714Skris>6	ubeshort	0x0D0A
5155714Skris>>3	byte		x	v%c
52280304Sjkim>>4	byte		x	\b.%c
5355714Skris>>5	byte		x	\b%c
5455714Skris
5555714Skris# I don't know why these don't work
5655714Skris#0	search/0xFFFF	\r\n.FM9
5755714Skris#>0	search/0xFFFF	\r\n#FORMAT	MSX Music Player K-kaz source MML file
5855714Skris#0	search/0xFFFF	\r\nFM1\ \=
5955714Skris#>0	search/0xFFFF	\r\nPSG1\=
6055714Skris#>>0	search/0xFFFF	\r\nSCC1\=		MSX MuSiCa MML source file
6155714Skris
6255714Skris# OPX Music file
6355714Skris0x35	beshort		0x0d0a
6455714Skris>0x7B	beshort		0x0d0a
6555714Skris>>0x7D	byte		0x1a
66280304Sjkim>>>0x87	uleshort	0		MSX OPX Music file
6755714Skris>>>>0x86	byte		0		v1.5
68280304Sjkim>>>>>0	string		>\32		\b, title: %s
69160814Ssimon>>>>0x86	byte		1		v2.4
70280304Sjkim>>>>>0	string		>\32		\b, title: %s
71280304Sjkim
72280304Sjkim# SCMD music file
7355714Skris0x8B	string/b		SCMD
74280304Sjkim>0xCE	uleshort	0	MSX SCMD Music file
75280304Sjkim#>>-2	uleshort	0x6a71	; The file must end with this value. How to code this here?
76280304Sjkim>>0x8F	string		>\0		\b, title: %s
77280304Sjkim
78280304Sjkim0	search/0xFFFF	\r\n@title
79160814Ssimon>&0	search/0xFFFF	\r\n@m=[	MSX SCMD source MML file
80280304Sjkim
81280304Sjkim
82280304Sjkim############## MSX image file formats ##############
83280304Sjkim
84280304Sjkim# MSX raw VRAM dump
85280304Sjkim0	ubyte		0xFE
8655714Skris>1	uleshort	0
87280304Sjkim>>5	uleshort	0
88280304Sjkim>>>3	uleshort	0x37FF		MSX SC2/GRP raw image
89280304Sjkim>>>3	uleshort	0x6A00		MSX Graph Saurus SR5 raw image
90162911Ssimon>>>3	uleshort	>0x769E
91280304Sjkim>>>>3	uleshort	<0x8000		MSX GE5/GE6 raw image
92280304Sjkim>>>>>3	uleshort	0x7FFF		\b, with sprite patterns
93280304Sjkim>>>3	uleshort	0xD3FF		MSX screen 7-12 raw image
94280304Sjkim>>>3	uleshort	0xD400		MSX Graph Saurus SR7/SR8/SRS raw image
95280304Sjkim
96280304Sjkim# Graph Saurus compressed images
97280304Sjkim0	ubyte		0xFD
9855714Skris>1	uleshort	0
99280304Sjkim>>5	uleshort	0
100280304Sjkim>>>3	uleshort	>0x013D		MSX Graph Saurus compressed image
101280304Sjkim
102280304Sjkim# Maki-chan Graphic format
103280304Sjkim0	string/b		MAKI02\ \ 	Maki-chan image,
104194206Ssimon>8	byte		x		system ID: %c
105194206Ssimon>9	byte		x		\b%c
106280304Sjkim>10	byte		x		\b%c
107194206Ssimon>11	byte		x		\b%c,
108280304Sjkim>13	search/0x200	\x1A
109280304Sjkim# >>&3	ubyte		0		, video mode: PC-98 400 lines, 16 analog colors
110194206Ssimon# >>&3	ubyte		1		, video mode: MSX SC7, 16 analog colors
111194206Ssimon# >>&3	ubyte		2		, video mode: VM-98 400 lines, 8 analog colors
112194206Ssimon# >>&3	ubyte		3		, video mode: PC-88 analog, 200 lines, 8 analog colors
113194206Ssimon# >>&3	ubyte		4		, video mode: 400 lines, 16 digital colors
114280304Sjkim# >>&3	ubyte		5		, video mode: 200 lines, 16 digital colors
115194206Ssimon# >>&3	ubyte		6		, video mode: old PC-98 digital 400 lines, 8 colors
11668651Skris# >>&3	ubyte		7		, video mode: PC-88 400 lines, 8 digital colors
11768651Skris>>&8	uleshort+1	x		%dx
11868651Skris>>&10	uleshort+1	x		\b%d,
11968651Skris>>&3	ubyte&0x82	0x80		256 colors
120160814Ssimon>>&3	ubyte&0x82	0x00		16 colors
121160814Ssimon>>&3	ubyte&0x82	0x01		8 colors
122160814Ssimon>>&3	ubyte&0x04	4		digital
12359191Skris>>&3	ubyte&0x04	0		analog
124280304Sjkim>>&3	ubyte&0x01	1		\b, 2:1 dot aspect ratio
125280304Sjkim
126280304Sjkim# Japanese PIC file
127280304Sjkim0	string/b		PIC\x1A
12859191Skris>4	lelong		0		Japanese PIC image file
129280304Sjkim
130280304Sjkim# MSX G9B image file
131280304Sjkim0	string/b		G9B
132280304Sjkim>1	uleshort	11
133280304Sjkim>>3	uleshort	>10
134280304Sjkim>>>5	ubyte		>0		MSX G9B image, depth=%d
135280304Sjkim>>>>8	uleshort	x		\b, %dx
136280304Sjkim>>>>10	uleshort	x		\b%d
137280304Sjkim>>>>5	ubyte		<9
138280304Sjkim>>>>>6	ubyte		0
139280304Sjkim>>>>>>7	ubyte		x		\b, codec=%d RGB color palettes
140280304Sjkim>>>>>6	ubyte		64		\b, codec=RGB fixed color
141280304Sjkim>>>>>6	ubyte		128		\b, codec=YJK
142280304Sjkim>>>>>6	ubyte		192		\b, codec=YUV
143280304Sjkim>>>>5	ubyte		>8		codec=RGB fixed color
144280304Sjkim>>>>12	ubyte		0		\b, raw
145280304Sjkim>>>>12	ubyte		1		\b, bitbuster compression
146280304Sjkim
147280304Sjkim############## Other MSX file formats ##############
148280304Sjkim
149280304Sjkim# MSX ROMs
150280304Sjkim0	string/b		AB
151280304Sjkim>2	uleshort	0x0010			MSX ROM
152280304Sjkim>>2	uleshort	x			\b, init=0x%4x
153280304Sjkim>>4	uleshort	>0			\b, stat=0x%4x
15459191Skris>>6	uleshort	>0			\b, dev=0x%4x
155280304Sjkim>>8	uleshort	>0			\b, bas=0x%4x
156280304Sjkim>2	uleshort	0x4010			MSX ROM
157280304Sjkim>>2	uleshort	x			\b, init=0x%04x
158280304Sjkim>>4	uleshort	>0			\b, stat=0x%04x
159280304Sjkim>>6	uleshort	>0			\b, dev=0x%04x
160280304Sjkim>>8	uleshort	>0			\b, bas=0x%04x
161280304Sjkim>2	uleshort	0x8010			MSX ROM
162280304Sjkim>>2	uleshort	x			\b, init=0x%04x
163280304Sjkim>>4	uleshort	>0			\b, stat=0x%04x
164280304Sjkim>>6	uleshort	>0			\b, dev=0x%04x
165280304Sjkim>>8	uleshort	>0			\b, bas=0x%04x
166280304Sjkim
167280304Sjkim0	string/b		AB
168280304Sjkim#>2	string		5JSuperLAYDOCK		MSX Super Laydock ROM
169280304Sjkim#>3	string		@HYDLIDE3MSX		MSX Hydlide-3 ROM
170280304Sjkim#>3	string		@3\x80IA862		Golvellius MSX1 ROM
171280304Sjkim>2	uleshort	>10
172280304Sjkim>>10	string		\0\0\0\0\0\0		MSX ROM
173280304Sjkim>>>0x10	string		YZ\0\0\0\0		Konami Game Master 2 MSX ROM
174280304Sjkim>>>0x10	string		CD			\b, Konami RC-
175280304Sjkim>>>>0x12	ubyte		x			\b%d
176280304Sjkim>>>>0x13	ubyte/16	x			\b%d
177280304Sjkim>>>>0x13	ubyte&0xF	x			\b%d
178280304Sjkim>>>0x10	string		EF			\b, Konami RC-
17955714Skris>>>>0x12	ubyte		x			\b%d
180280304Sjkim>>>>0x13	ubyte/16	x			\b%d
181280304Sjkim>>>>0x13	ubyte&0xF	x			\b%d
182280304Sjkim>>>2	uleshort	x			\b, init=0x%04x
183280304Sjkim>>>4	uleshort	>0			\b, stat=0x%04x
184280304Sjkim>>>6	uleshort	>0			\b, dev=0x%04x
185280304Sjkim>>>8	uleshort	>0			\b, bas=0x%04x
18655714Skris>2	uleshort	0
187238405Sjkim>>4	uleshort	0
188280304Sjkim>>>6	uleshort	0
189280304Sjkim>>>>8	uleshort	>0			MSX BASIC program in ROM, bas=0x%04x
190280304Sjkim
191280304Sjkim0x4000	string/b		AB
19255714Skris>0x4002	uleshort	>0x4010
193280304Sjkim>>0x400A	string		\0\0\0\0\0\0	MSX MegaROM with nonstandard page order
194280304Sjkim>>0x4002	uleshort	x			\b, init=0x%04x
195280304Sjkim>>0x4004	uleshort	>0			\b, stat=0x%04x
19655714Skris>>0x4006	uleshort	>0			\b, dev=0x%04x
197109998Smarkm>>0x4008	uleshort	>0			\b, bas=0x%04x
19859191Skris
199280304Sjkim0x8000	string/b		AB
200109998Smarkm>0x8002	uleshort	>0x4010
201280304Sjkim>>0x800A	string		\0\0\0\0\0\0	MSX MegaROM with nonstandard page order
20259191Skris>>0x8002	uleshort	x			\b, init=0x%04x
203280304Sjkim>>0x8004	uleshort	>0			\b, stat=0x%04x
204280304Sjkim>>0x8006	uleshort	>0			\b, dev=0x%04x
205280304Sjkim>>0x8008	uleshort	>0			\b, bas=0x%04x
206109998Smarkm
207280304Sjkim
208280304Sjkim0x3C000	string		AB
209280304Sjkim>0x3C008	string/b		\0\0\0\0\0\0\0\0	MSX MegaROM with nonstandard page order
210280304Sjkim>>0x3C002	uleshort	x			\b, init=0x%04x
211280304Sjkim>>0x3C004	uleshort	>0			\b, stat=0x%04x
212280304Sjkim>>0x3C006	uleshort	>0			\b, dev=0x%04x
213280304Sjkim>>0x3C008	uleshort	>0			\b, bas=0x%04x
214280304Sjkim
21559191Skris# MSX BIN file
216280304Sjkim#0	byte		0xFE
21759191Skris#>1	uleshort	>0x8000
21859191Skris#>>3	uleshort	>0x8004
21955714Skris#>>>5	uleshort	>0x8000			MSX BIN file
220280304Sjkim
221280304Sjkim# MSX-BASIC file
222280304Sjkim0	byte		0xFF
223160814Ssimon>3	uleshort	0x000A
224160814Ssimon>>1	uleshort	>0x8000			MSX-BASIC program
225280304Sjkim
226280304Sjkim# MSX .CAS file
227280304Sjkim0	string	\x1F\xA6\xDE\xBA\xCC\x13\x7D\x74	MSX cassette archive
228280304Sjkim
229280304Sjkim# Mega-Assembler file
230280304Sjkim0	byte		0xFE
231160814Ssimon>1	uleshort	0x0001
232160814Ssimon>>5	uleshort	0xffff
233280304Sjkim>>>6	byte		0x0A		MSX Mega-Assembler source
234280304Sjkim
235280304Sjkim# Execrom Patchfile
236280304Sjkim0	string		ExecROM\ patchfile\x1A	MSX ExecROM patchfile
237160814Ssimon>0x12	ubyte/16	x		v%d
238280304Sjkim>0x12	ubyte&0xF	x		\b.%d
239280304Sjkim>0x13	ubyte		x		\b, contains %d patches
240280304Sjkim
241280304Sjkim# Konami's King's Valley-2 custom stage (ELG file)
24255714Skris4	uleshort	0x0900
243280304Sjkim>0xF	byte		1
244280304Sjkim>>0x14	byte		0
245280304Sjkim>>>0x1E	string		\ \ \ 
246280304Sjkim>>>>0x23	byte	1
247280304Sjkim>>>>>0x25	byte	0
248280304Sjkim>>>>>>0x15	string	>\x30
249280304Sjkim>>>>>>>0x15	string	<\x5A		Konami King's Valley-2 custom stage, title: "%-8.8s"
250280304Sjkim>>>>>>>>0x1D	byte	<32	\b, theme: %d
25155714Skris
252280304Sjkim# Metal Gear 1 savegame
253280304Sjkim#0x4F	string	\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
254280304Sjkim#>>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
255280304Sjkim#>>>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
256280304Sjkim