diff --git a/src/mame/drivers/kaneko16.c b/src/mame/drivers/kaneko16.c index 5a92e70a039..ca400b5c836 100644 --- a/src/mame/drivers/kaneko16.c +++ b/src/mame/drivers/kaneko16.c @@ -59,12 +59,13 @@ To Do: [brapboys / shogwarr] -- Verify collision protection on real hardware +- Verify collision protection on real hardware (appears to be a function of the system/memory controller, NOT the MCU) + - currently B.Rap Boys has it's own special case, it should work with the same code as Blood Warriors / Shogun Warriors (and probably SuperNova) - Figure out how MCU resets writeback address (currently hacked) - Find relationship between Key tables and final datablock - Clean up debug code file writes etc. (when above are done only!) - Interrupt timing? (some sprites flicker) -- Sprite buffering (2 frames?, or related to above) +- Sprite buffering (1-2 frames?, or related to above) Dip locations verified from manual for: @@ -77,7 +78,8 @@ Dip locations verified from manual for: - gtmr2 - shogwarr - +[general] +- replace sample bank copying with new ADDRESS MAP system for OKI and do banking like CPUs ***************************************************************************/ @@ -3374,20 +3376,16 @@ ROM_START( shogwarr ) ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) ) // 40 pin mask rom (verified correct) ROM_REGION( 0x300000, "samples", 0 ) - /* OKI 1 */ ROM_LOAD( "fb001e.u43", 0x000000, 0x080000, CRC(f524aaa1) SHA1(006a886f9df2e57c51b61c6cea70a6574fc20304) ) ROM_LOAD( "fb000e.u42", 0x080000, 0x080000, CRC(969f1465) SHA1(4f56d1ad341b08f4db41b7ab2498740612ff7c3d) ) - - /* OKI 2 */ - ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) ) - ROM_LOAD( "fb-002.u45", 0x200000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) ) - + /* Sound data is copied here during driver init */ ROM_REGION( 0x400000*16, "oki1", 0 ) ROM_FILL( 0x00000, 0x400000*16, 0x00 ) - - ROM_REGION( 0x400000*16, "oki2", 0 ) - ROM_FILL( 0x00000, 0x400000*16, 0x00 ) + + ROM_REGION( 0x200000, "oki2", 0 ) + ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) ) + ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) ) ROM_END /*************************************************************************** @@ -3441,20 +3439,16 @@ ROM_START( shogwarre ) ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) ) // 40 pin mask rom (verified correct) ROM_REGION( 0x300000, "samples", 0 ) - /* OKI 1 */ ROM_LOAD( "fb001e.u43", 0x000000, 0x080000, CRC(f524aaa1) SHA1(006a886f9df2e57c51b61c6cea70a6574fc20304) ) ROM_LOAD( "fb000e.u42", 0x080000, 0x080000, CRC(969f1465) SHA1(4f56d1ad341b08f4db41b7ab2498740612ff7c3d) ) - - /* OKI 2 */ - ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) ) - ROM_LOAD( "fb-002.u45", 0x200000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) ) /* Sound data is copied here during driver init */ ROM_REGION( 0x400000*16, "oki1", 0 ) ROM_FILL( 0x00000, 0x400000*16, 0x00 ) - ROM_REGION( 0x400000*16, "oki2", 0 ) - ROM_FILL( 0x00000, 0x400000*16, 0x00 ) + ROM_REGION( 0x200000, "oki2", 0 ) + ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) ) + ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) ) ROM_END /*************************************************************************** @@ -3518,20 +3512,16 @@ ROM_START( fjbuster ) // Fujiyama Buster - Japan version of Shogun Warriors ROM_REGION( 0x300000, "samples", 0 ) - /* OKI 1 */ ROM_LOAD( "fb000j.u43", 0x000000, 0x080000, CRC(a7522555) SHA1(ea88d90dda20bc309f98a1924c41551e7708e6af) ) ROM_LOAD( "fb001j_u.101", 0x080000, 0x080000, CRC(07d4e8e2) SHA1(0de911f452ddeb54b0b435b9c1cf5d5881175d44) ) - - /* OKI 2 */ - ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) ) - ROM_LOAD( "fb-002.u45", 0x200000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) ) /* Sound data is copied here during driver init */ ROM_REGION( 0x400000*16, "oki1", 0 ) ROM_FILL( 0x00000, 0x400000*16, 0x00 ) - ROM_REGION( 0x400000*16, "oki2", 0 ) - ROM_FILL( 0x00000, 0x400000*16, 0x00 ) + ROM_REGION( 0x200000, "oki2", 0 ) + ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) ) + ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) ) ROM_END /*************************************************************************** @@ -3646,6 +3636,7 @@ Game can be ROM Swapped onto a Shogun Warriors board and works ***************************************************************************/ + ROM_START( brapboys ) /* Single PCB, fully populated, no rom sub board */ ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "rb-030.u61", 0x000000, 0x020000, CRC(ccbe9a53) SHA1(b96baf0ecbf6550bfaf8e512d9275c53a3928bee) ) @@ -3829,8 +3820,7 @@ DRIVER_INIT( calc3 ) DRIVER_INIT_CALL(kaneko16); // MCU is a 78K series III type CPU } - -static DRIVER_INIT( brapboys ) +static void expand_shogwarr_samples(running_machine* machine) { /* Expand the OKI sample data @@ -3838,19 +3828,11 @@ static DRIVER_INIT( brapboys ) OKI 1: Address space 0x00000-0x2ffff is fixed Address space 0x30000-0x3ffff is banked (13 banks) - - OKI 2: - Address space 0x00000-0x1ffff is fixed - Address space 0x20000-0x3ffff is banked (15 banks) - - The current sound device implementation can't handle - the banking dynamically so we have to expand all the bank - combinations here and use use okim6295_set_bank_base(). */ + int bank; UINT8 *src = memory_region(machine, "samples"); UINT8 *dst1 = memory_region(machine, "oki1"); - UINT8 *dst2 = memory_region(machine, "oki2"); /* OKI 1 */ for (bank = 0; bank < 13; ++bank) @@ -3863,6 +3845,21 @@ static DRIVER_INIT( brapboys ) memcpy(dst, src, 0x30000); memcpy(dst + 0x30000, srcn, 0x10000); } +} + +static void expand_brapboys_music(running_machine* machine) +{ + /* + Expand the OKI sample data + + OKI 2: + Address space 0x00000-0x1ffff is fixed + Address space 0x20000-0x3ffff is banked (15 banks) + */ + + int bank; + UINT8 *src = memory_region(machine, "samples"); + UINT8 *dst2 = memory_region(machine, "oki2"); /* OKI 2 */ for (bank = 0; bank < 15; ++bank) @@ -3878,6 +3875,21 @@ static DRIVER_INIT( brapboys ) DRIVER_INIT_CALL(calc3); } +static DRIVER_INIT( shogwarr ) +{ + expand_shogwarr_samples(machine); + DRIVER_INIT_CALL(calc3); +} + + +static DRIVER_INIT( brapboys ) +{ + expand_shogwarr_samples(machine); + // sample banking is different on brap boys for the music, why? GALs / PALs ? + expand_brapboys_music(machine); + DRIVER_INIT_CALL(calc3); +} + /*************************************************************************** @@ -3908,10 +3920,7 @@ GAME( 1995, gtmr2u, gtmr2, gtmr2, gtmr2, gtmr2, ROT0, "Kaneko", "Gre // some functionality of the protection chip still needs investigating on these, but they seem to be playable GAME( 1992, brapboys, 0, shogwarr, brapboys, brapboys, ROT0, "Kaneko", "B.Rap Boys (World)", 0 ) GAME( 1992, brapboysj,brapboys, shogwarr, brapboys, brapboys, ROT0, "Kaneko", "B.Rap Boys Special (Japan)", 0 ) - -/* Non-working games (mainly due to bad gfx roms) */ - -GAME( 1992, shogwarr, 0, shogwarr, shogwarr, brapboys, ROT0, "Kaneko", "Shogun Warriors (US)", GAME_IMPERFECT_SOUND ) -GAME( 1992, shogwarre,shogwarr, shogwarr, shogwarr, brapboys, ROT0, "Kaneko", "Shogun Warriors (World)", GAME_IMPERFECT_SOUND ) -GAME( 1992, fjbuster, shogwarr, shogwarr, shogwarr, brapboys, ROT0, "Kaneko", "Fujiyama Buster (Japan)", GAME_IMPERFECT_SOUND ) +GAME( 1992, shogwarr, 0, shogwarr, shogwarr, shogwarr, ROT0, "Kaneko", "Shogun Warriors (US)", 0 ) +GAME( 1992, shogwarre,shogwarr, shogwarr, shogwarr, shogwarr, ROT0, "Kaneko", "Shogun Warriors (World)", 0 ) +GAME( 1992, fjbuster, shogwarr, shogwarr, shogwarr, shogwarr, ROT0, "Kaneko", "Fujiyama Buster (Japan)", 0 )