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