XEVIOUSを解析してみた

ここらへんを参考にして、SUPER 1500 シリーズ XEVIOUSを解析してみる。

http://mamedev.org/source/src/mame/drivers/galaga.c.html

 2559  ROM_START( xevious )
 2560      ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for the first CPU */
 2561      ROM_LOAD( "xvi_1.3p",     0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
 2562      ROM_LOAD( "xvi_2.3m",     0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
 2563      ROM_LOAD( "xvi_3.2m",     0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
 2564      ROM_LOAD( "xvi_4.2l",     0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
 2565  
 2566      ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
 2567      ROM_LOAD( "xvi_5.3f",     0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
 2568      ROM_LOAD( "xvi_6.3j",     0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
 2569  
 2570      ROM_REGION( 0x10000, "sub2", 0 )
 2571      ROM_LOAD( "xvi_7.2c",     0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
 2572  
 2573      ROM_REGION( 0x1000, "gfx1", 0 )
 2574      ROM_LOAD( "xvi_12.3b",    0x0000, 0x1000, CRC(088c8b26) SHA1(9c3b61dfca2f84673a78f7f66e363777a8f47a59) )    /* foreground characters */
 2575  
 2576      ROM_REGION( 0x2000, "gfx2", 0 )
 2577      ROM_LOAD( "xvi_13.3c",    0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )    /* bg pattern B0 */
 2578      ROM_LOAD( "xvi_14.3d",    0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )    /* bg pattern B1 */
 2579  
 2580      ROM_REGION( 0xa000, "gfx3", 0 )
 2581      ROM_LOAD( "xvi_15.4m",    0x0000, 0x2000, CRC(dc2c0ecb) SHA1(19ddbd9805f77f38c9a9a1bb30dba6c720b8609f) )    /* sprite set #1, planes 0/1 */
 2582      ROM_LOAD( "xvi_17.4p",    0x2000, 0x2000, CRC(dfb587ce) SHA1(acff2bf5cde85a16cdc98a52cdea11f77fadf25a) )    /* sprite set #2, planes 0/1 */
 2583      ROM_LOAD( "xvi_16.4n",    0x4000, 0x1000, CRC(605ca889) SHA1(3bf380ef76c03822a042ecc73b5edd4543c268ce) )    /* sprite set #3, planes 0/1 */
 2584      ROM_LOAD( "xvi_18.4r",    0x5000, 0x2000, CRC(02417d19) SHA1(b5f830dd2cf25cf154308d2e640f0ecdcda5d8cd) )    /* sprite set #1, plane 2, set #2, plane 2 */
 2585      /* 0x7000-0x8fff  will be unpacked from 0x5000-0x6fff */
 2586      ROM_FILL(                 0x9000, 0x1000, 0x00 )    // empty space to decode sprite set #3 as 3 bits per pixel
 2587  
 2588      ROM_REGION( 0x4000, "gfx4", 0 ) /* background tilemaps */
 2589      ROM_LOAD( "xvi_9.2a",     0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
 2590      ROM_LOAD( "xvi_10.2b",    0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
 2591      ROM_LOAD( "xvi_11.2c",    0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
 2592  
 2593      ROM_REGION( 0x0b00, "proms", 0 )
 2594      ROM_LOAD( "xvi-8.6a",     0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) ) /* palette red component */
 2595      ROM_LOAD( "xvi-9.6d",     0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) ) /* palette green component */
 2596      ROM_LOAD( "xvi-10.6e",    0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) ) /* palette blue component */
 2597      ROM_LOAD( "xvi-7.4h",     0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) ) /* bg tiles lookup table low bits */
 2598      ROM_LOAD( "xvi-6.4f",     0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) ) /* bg tiles lookup table high bits */
 2599      ROM_LOAD( "xvi-4.3l",     0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) ) /* sprite lookup table low bits */
 2600      ROM_LOAD( "xvi-5.3m",     0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) ) /* sprite lookup table high bits */
 2601  
 2602      ROM_REGION( 0x0200, "namco", 0 )    /* sound PROMs */
 2603      ROM_LOAD( "xvi-2.7n",     0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
 2604      ROM_LOAD( "xvi-1.5n",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )    /* timing - not used */
 2605  ROM_END

PROM以外はCRC32が一致しました!

>crc xevious.exe 09964dda 1000
crc32=09964dda,size=1000
crc32=09964dda,addr=f5860-f685f

>crc xevious.exe 60ecce84 1000
crc32=60ecce84,size=1000
crc32=60ecce84,addr=f6860-f785f

>crc xevious.exe 79754b7d 1000
crc32=79754b7d,size=1000
crc32=79754b7d,addr=f7860-f885f

>crc xevious.exe c7d4bbf0 1000
crc32=c7d4bbf0,size=1000
crc32=c7d4bbf0,addr=f8860-f985f

>crc xevious.exe c85b703f 1000
crc32=c85b703f,size=1000
crc32=c85b703f,addr=e9860-ea85f

>crc xevious.exe e18cdaad 1000
crc32=e18cdaad,size=1000
crc32=e18cdaad,addr=ea860-eb85f

>crc xevious.exe dd35cf1c 1000
crc32=dd35cf1c,size=1000
crc32=dd35cf1c,addr=ef860-f085f

>crc xevious.exe 088c8b26 1000
crc32=088c8b26,size=1000
crc32=088c8b26,addr=ed860-ee85f

>crc xevious.exe de60ba25 1000
crc32=de60ba25,size=1000
crc32=de60ba25,addr=ec860-ed85f

>crc xevious.exe 535cdbbc 1000
crc32=535cdbbc,size=1000
crc32=535cdbbc,addr=eb860-ec85f

>crc xevious.exe dc2c0ecb 2000
crc32=dc2c0ecb,size=2000
crc32=dc2c0ecb,addr=e7860-e985f

>crc xevious.exe dfb587ce 2000
crc32=dfb587ce,size=2000
crc32=dfb587ce,addr=e2860-e485f

>crc xevious.exe 605ca889 1000
crc32=605ca889,size=1000
crc32=605ca889,addr=e6860-e785f

>crc xevious.exe 02417d19 2000
crc32=02417d19,size=2000
crc32=02417d19,addr=e0860-e285f

>crc xevious.exe 57ed9879 1000
crc32=57ed9879,size=1000
crc32=57ed9879,addr=f4860-f585f

>crc xevious.exe ae3ba9e5 2000
crc32=ae3ba9e5,size=2000
crc32=ae3ba9e5,addr=f0860-f285f

>crc xevious.exe 31e244dd 1000
crc32=31e244dd,size=1000
crc32=31e244dd,addr=ee860-ef85f

MAMEで起動してみます。

>mame64 -window -resolution 574x448 xevious

以下のROMが不足しているようです。

xvi-8.6a 0x0100 5cc2727f 0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1
xvi-9.6d 0x0100 5c8796cc 63015e3c0874afc6b1ca032f1ffb8f90562c77c8
xvi-10.6e0x0100 3cb60975 c94d5a5dd4d8a08d6d39c051a4a722581b903f45
xvi-7.4h 0x0200 22d98032 ec6626828c79350417d08b98e9631ad35edd4a41
xvi-6.4f 0x0200 3a7599f0 a4bdf58c190ca16fc7b976c97f41087a61fdb8b8
xvi-4.3l 0x0200 fd8b9d91 87ddf0b9d723aabb422d6d416aa9ec6bc246bf34
xvi-5.3m 0x0200 bf906d82 776168a73d3b9f0ce05610acc8a623deae0a572b
xvi-2.7n 0x0100 550f06bc 816a0fafa0b084ac11ae1af70a5186539376fc2a
xvi-1.5n 0x0100 77245b66 0c4d0bee858b97632411c440bea6948a74759746
50xx.bin 0x0800 a0acbaf7 f03c79451e73b3a93c1591cdb27fedc9f130508d mcu 
51xx.bin 0x0400 c2f57ef8 50de79e0d6a76bda95ffb02fcce369a79e6abfec mcu 
54xx.bin 0x0400 ee7357e0 01bdf984a49e8d0cc8761b2cc162fd6434d5afbe mcu