mirror of
https://github.com/holub/mame
synced 2025-05-22 13:48:55 +03:00
Fixed sound banking for Shogun Warriors [David Haywood]
This commit is contained in:
parent
8dd1566a27
commit
2f40f896a4
@ -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 )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user