/* sound hardware */ MDRV_SOUND_ADD(YM2203, ym2203_interface) MDRV_SOUND_ADD(SAMPLES, samples_interface) MDRV_SOUND_ADD(CUSTOM, custom_interface) MACHINE_DRIVER_END ROM_START( ninjakd2 ) ROM_REGION( 0x30000, REGION_CPU1, 0 ) ROM_LOAD( "nk2_01.rom", 0x00000, 0x8000, CRC(3cdbb906) SHA1(f48f82528b5fc581ee3b1ccd0ef9cdecc7249bb3) ) ROM_LOAD( "nk2_02.rom", 0x10000, 0x8000, CRC(b5ce9a1a) SHA1(295a7e1d41e1a8ee45f1250086a0c9314837eded) ) ROM_LOAD( "nk2_03.rom", 0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) ) ROM_LOAD( "nk2_04.rom", 0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) ) ROM_LOAD( "nk2_05.rom", 0x28000, 0x8000, CRC(5dac9426) SHA1(0916cddbbe1e93c32b96fe28e145d34b2a892e80) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "nk2_06.rom", 0x0000, 0x10000, CRC(d3a18a79) SHA1(e4df713f89d8a8b43ef831b14864c50ec9b53f0b) ) // sound z80 code encrypted ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_11.rom", 0x00000, 0x4000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) ) /* background tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_10.rom", 0x08000, 0x4000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_08.rom", 0x00000, 0x4000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) ) /* sprites tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_07.rom", 0x08000, 0x4000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x08000, REGION_GFX3, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_12.rom", 0x00000, 0x02000, CRC(db5657a9) SHA1(abbb033edb9a5a0c66ee5981d1e4df1ab334a82d) ) /* foreground tiles */ ROM_CONTINUE( 0x04000, 0x02000) ROM_CONTINUE( 0x02000, 0x02000) ROM_CONTINUE( 0x06000, 0x02000) ROM_REGION( 0x10000, REGION_SOUND1, 0 ) ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) /* raw pcm samples */ ROM_END ROM_START( ninjak2a ) ROM_REGION( 0x30000, REGION_CPU1, 0 ) ROM_LOAD( "nk2_01.bin", 0x00000, 0x8000, CRC(e6adca65) SHA1(33d483dde0853f37455cde32b461f4e919601b4b) ) ROM_LOAD( "nk2_02.bin", 0x10000, 0x8000, CRC(d9284bd1) SHA1(e790fb1a718a1f7997931f2f390fe053655f231d) ) ROM_LOAD( "nk2_03.rom", 0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) ) ROM_LOAD( "nk2_04.rom", 0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) ) ROM_LOAD( "nk2_05.bin", 0x28000, 0x8000, CRC(960725fb) SHA1(160c8bfaf089cbeeef2023f12379793079bff93b) ) ROM_REGION( 2*0x10000, REGION_CPU2, 0 ) /* 64k for code + 64k for decrypted opcodes */ ROM_LOAD( "nk2_06.bin", 0x10000, 0x8000, CRC(7bfe6c9e) SHA1(aef8cbeb0024939bf65f77113a5cf777f6613722) ) /* decrypted opcodes */ ROM_CONTINUE( 0x00000, 0x8000 ) /* decrypted data */ ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_11.rom", 0x00000, 0x4000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) ) /* background tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_10.rom", 0x08000, 0x4000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_08.rom", 0x00000, 0x4000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) ) /* sprites tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_07.rom", 0x08000, 0x4000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x08000, REGION_GFX3, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_12.rom", 0x00000, 0x02000, CRC(db5657a9) SHA1(abbb033edb9a5a0c66ee5981d1e4df1ab334a82d) ) /* foreground tiles */ ROM_CONTINUE( 0x04000, 0x02000) ROM_CONTINUE( 0x02000, 0x02000) ROM_CONTINUE( 0x06000, 0x02000) ROM_REGION( 0x10000, REGION_SOUND1, 0 ) ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) /* raw pcm samples */ ROM_END ROM_START( ninjak2b ) ROM_REGION( 0x30000, REGION_CPU1, 0 ) ROM_LOAD( "1.3s", 0x00000, 0x8000, CRC(cb4f4624) SHA1(4fc66641adc0a2c0eca332f27c5777df62fa507b) ) ROM_LOAD( "2.3q", 0x10000, 0x8000, CRC(0ad0c100) SHA1(c5bbc107ba07bd6950bb4d7377e827c084b8229b) ) ROM_LOAD( "nk2_03.rom", 0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) ) ROM_LOAD( "nk2_04.rom", 0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) ) ROM_LOAD( "nk2_05.rom", 0x28000, 0x8000, CRC(5dac9426) SHA1(0916cddbbe1e93c32b96fe28e145d34b2a892e80) ) ROM_REGION( 2*0x10000, REGION_CPU2, 0 ) /* 64k for code + 64k for decrypted opcodes */ ROM_LOAD( "nk2_06.bin", 0x10000, 0x8000, CRC(7bfe6c9e) SHA1(aef8cbeb0024939bf65f77113a5cf777f6613722) ) /* decrypted opcodes */ ROM_CONTINUE( 0x00000, 0x8000 ) /* decrypted data */ ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_11.rom", 0x00000, 0x4000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) ) /* background tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_10.rom", 0x08000, 0x4000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_08.rom", 0x00000, 0x4000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) ) /* sprites tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_07.rom", 0x08000, 0x4000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x08000, REGION_GFX3, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_12.rom", 0x00000, 0x02000, CRC(db5657a9) SHA1(abbb033edb9a5a0c66ee5981d1e4df1ab334a82d) ) /* foreground tiles */ ROM_CONTINUE( 0x04000, 0x02000) ROM_CONTINUE( 0x02000, 0x02000) ROM_CONTINUE( 0x06000, 0x02000) ROM_REGION( 0x10000, REGION_SOUND1, 0 ) ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) /* raw pcm samples */ ROM_END ROM_START( rdaction ) ROM_REGION( 0x30000, REGION_CPU1, 0 ) ROM_LOAD( "1.3u", 0x00000, 0x8000, CRC(5c475611) SHA1(2da88a95b5d68b259c8ae48af1438a82a1d601c1) ) ROM_LOAD( "2.3s", 0x10000, 0x8000, CRC(a1e23bd2) SHA1(c3b6574dc9fa66b4f41c37754a0d20a865f8bc28) ) ROM_LOAD( "nk2_03.rom", 0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) ) ROM_LOAD( "nk2_04.rom", 0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) ) ROM_LOAD( "nk2_05.bin", 0x28000, 0x8000, CRC(960725fb) SHA1(160c8bfaf089cbeeef2023f12379793079bff93b) ) ROM_REGION( 2*0x10000, REGION_CPU2, 0 ) /* 64k for code + 64k for decrypted opcodes */ ROM_LOAD( "nk2_06.bin", 0x10000, 0x8000, CRC(7bfe6c9e) SHA1(aef8cbeb0024939bf65f77113a5cf777f6613722) ) /* decrypted opcodes */ ROM_CONTINUE( 0x00000, 0x8000 ) /* decrypted data */ ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_11.rom", 0x00000, 0x4000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) ) /* background tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_10.rom", 0x08000, 0x4000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "nk2_08.rom", 0x00000, 0x4000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) ) /* sprites tiles */ ROM_CONTINUE( 0x10000, 0x4000) ROM_CONTINUE( 0x04000, 0x4000) ROM_CONTINUE( 0x14000, 0x4000) ROM_LOAD( "nk2_07.rom", 0x08000, 0x4000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) ) ROM_CONTINUE( 0x18000, 0x4000) ROM_CONTINUE( 0x0c000, 0x4000) ROM_CONTINUE( 0x1c000, 0x4000) ROM_REGION( 0x08000, REGION_GFX3, ROMREGION_DISPOSE ) ROM_LOAD( "12.5n", 0x00000, 0x02000, CRC(0936b365) SHA1(3705f42b76ab474357e77c1a9b8e3755c7ab2c0c) ) /* foreground tiles */ ROM_CONTINUE( 0x04000, 0x02000) ROM_CONTINUE( 0x02000, 0x02000) ROM_CONTINUE( 0x06000, 0x02000) ROM_REGION( 0x10000, REGION_SOUND1, 0 ) ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) /* raw pcm samples */ ROM_END DRIVER_INIT( ninjak2a ) { unsigned char *rom = memory_region(REGION_CPU2); int diff = memory_region_length(REGION_CPU2) / 2; memory_set_opcode_base(1,rom+diff); }
static void decode(int cpu) { unsigned char *rom = memory_region(REGION_CPU1+cpu); int diff = memory_region_length(REGION_CPU1+cpu) / 2; int A; memory_set_opcode_base(cpu,rom+diff); for (A = 0;A < diff;A++) { rom[A+diff] = decodebyte(rom[A],A); } }
/* (from other romset - I think these are correct, they match the Starcade video) */ ROM_REGION( 0x0060, REGION_PROMS, 0 ) ROM_LOAD( "dorodon.bp0", 0x0000, 0x0020, CRC(8fcf0bc8) SHA1(392d22731b3e4bc663d6e4385f6069ee2b4ee029) ) /* palette */ ROM_LOAD( "dorodon.bp1", 0x0020, 0x0020, CRC(3f209be4) SHA1(f924494eed357a15ffc11331c163af24585d4ab9) ) /* sprite color lookup table */ ROM_LOAD( "dorodon.bp2", 0x0040, 0x0020, CRC(27fa3a50) SHA1(7cf59b7a37c156640d6ea91554d1c4276c1780e0) ) /* timing?? */ ROM_END DRIVER_INIT( dorodon ) { /* Decode the opcodes */ offs_t i; UINT8 *rom = memory_region(REGION_CPU1); offs_t diff = memory_region_length(REGION_CPU1) / 2; UINT8 *table = memory_region(REGION_USER1); memory_set_opcode_base(0,rom+diff); for (i = 0;i < diff;i++) { rom[i + diff] = table[rom[i]]; } }
ROM_END #define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7)) #define WRITEDEST( n ) \ dest[idx]=n; \ dest[idx+0x10000]=(n)^0xff; \ idx++; DRIVER_INIT(tcl) { /* only the first part is decrypted (and verified)*/ unsigned char *dest = memory_region(REGION_CPU1); unsigned char *src = memory_region(REGION_USER1); int i,idx=0; for(i=0;i<64*1024;i+=4) { if(i&0x8000) { WRITEDEST(ROL(src[idx]^0x44,4)); // abcdefgh -> aFghaBcd WRITEDEST(ROL(src[idx]^0x44,7)); // abcdefgh -> haBcdeFg WRITEDEST(ROL(src[idx]^0x44,2)); // abcdefgh -> cdeFghaB WRITEDEST((src[idx]^0x44)^0xf0); // abcdefgh -> AbCEeFgh } else { WRITEDEST(ROL(src[idx]^0x11,4)); // abcdefgh -> efgHabcD WRITEDEST(ROL(src[idx]^0x11,7)); // abcdefgh -> HabcDefg WRITEDEST(ROL(src[idx]^0x11,2)); // abcdefgh -> cDefgHab WRITEDEST((src[idx]^0x11)^0xf0); // abcdefgh -> ABCdefgH } } memory_set_opcode_base(0,dest+0x10000); }