mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
Fix second adpcm player in games using SEIBU_ADPCM [R. Belmont]
This commit is contained in:
parent
bbc5d4056c
commit
9ddde458fa
@ -129,6 +129,16 @@ void seibu_sound_decrypt(running_machine &machine,const char *cpu,int length)
|
||||
Handlers for early Seibu/Tad games with dual channel ADPCM
|
||||
*/
|
||||
|
||||
const seibu_adpcm_interface seibu_adpcm1_intf =
|
||||
{
|
||||
"adpcm1"
|
||||
};
|
||||
|
||||
const seibu_adpcm_interface seibu_adpcm2_intf =
|
||||
{
|
||||
"adpcm2"
|
||||
};
|
||||
|
||||
typedef struct _seibu_adpcm_state seibu_adpcm_state;
|
||||
struct _seibu_adpcm_state
|
||||
{
|
||||
@ -173,10 +183,13 @@ static DEVICE_START( seibu_adpcm )
|
||||
{
|
||||
running_machine &machine = device->machine();
|
||||
seibu_adpcm_state *state = (seibu_adpcm_state *)downcast<legacy_device_base *>(device)->token();
|
||||
const seibu_adpcm_interface *intf;
|
||||
|
||||
intf = (const seibu_adpcm_interface *)device->static_config();
|
||||
|
||||
state->m_playing = 0;
|
||||
state->m_stream = device->machine().sound().stream_alloc(*device, 0, 1, device->clock(), state, seibu_adpcm_callback);
|
||||
state->m_base = machine.region("adpcm")->base();
|
||||
state->m_base = machine.region(intf->rom_region)->base();
|
||||
|
||||
// because legacy device tokens are just allocated as a blob, the constructor for adpcm_state
|
||||
// is not called, so use placement new to force it to set up; when this is converted to a
|
||||
|
@ -69,6 +69,15 @@ extern const ym3812_interface seibu_ym3812_interface;
|
||||
extern const ym2151_interface seibu_ym2151_interface;
|
||||
extern const ym2203_interface seibu_ym2203_interface;
|
||||
|
||||
typedef struct _seibu_adpcm_interface seibu_adpcm_interface;
|
||||
struct _seibu_adpcm_interface
|
||||
{
|
||||
const char *rom_region;
|
||||
};
|
||||
|
||||
extern const seibu_adpcm_interface seibu_adpcm1_intf;
|
||||
extern const seibu_adpcm_interface seibu_adpcm2_intf;
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
#define SEIBU_COIN_INPUTS \
|
||||
@ -174,9 +183,11 @@ extern const ym2203_interface seibu_ym2203_interface;
|
||||
|
||||
#define SEIBU_SOUND_SYSTEM_ADPCM_INTERFACE \
|
||||
MCFG_SOUND_ADD("adpcm1", SEIBU_ADPCM, 8000) \
|
||||
MCFG_SOUND_CONFIG(seibu_adpcm1_intf) \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) \
|
||||
\
|
||||
MCFG_SOUND_ADD("adpcm2", SEIBU_ADPCM, 8000) \
|
||||
MCFG_SOUND_CONFIG(seibu_adpcm2_intf) \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) \
|
||||
|
||||
|
||||
|
@ -518,9 +518,11 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
|
||||
|
||||
MCFG_SOUND_ADD("adpcm1", SEIBU_ADPCM, 8000) /* it should use the msm5205 */
|
||||
MCFG_SOUND_CONFIG(seibu_adpcm1_intf)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.40)
|
||||
|
||||
MCFG_SOUND_ADD("adpcm2", SEIBU_ADPCM, 8000) /* it should use the msm5205 */
|
||||
MCFG_SOUND_CONFIG(seibu_adpcm2_intf)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.40)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -617,9 +619,11 @@ ROM_START( cabal )
|
||||
ROM_LOAD16_BYTE( "sp_rom7.bin", 0x60000, 0x10000, CRC(55c44764) SHA1(7fad1f2084664b5b4d1384c8081371b0c79c4f5e) )
|
||||
ROM_LOAD16_BYTE( "sp_rom8.bin", 0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* Samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
|
||||
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
|
||||
ROM_LOAD( "1-1u", 0x10000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
|
||||
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( cabala )
|
||||
@ -644,9 +648,11 @@ ROM_START( cabala )
|
||||
ROM_REGION( 0x80000, "gfx3", 0 )
|
||||
ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* Samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
|
||||
ROM_LOAD( "epr-a-2.1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
|
||||
ROM_LOAD( "epr-a-1.1u", 0x10000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
|
||||
ROM_LOAD( "epr-a-1.1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( cabalus )
|
||||
@ -669,9 +675,11 @@ ROM_START( cabalus )
|
||||
ROM_REGION( 0x80000, "gfx3", 0 )
|
||||
ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* Samples? */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples? */
|
||||
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
|
||||
ROM_LOAD( "1-1u", 0x10000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
|
||||
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
|
||||
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
|
||||
@ -698,9 +706,11 @@ ROM_START( cabalus2 )
|
||||
ROM_REGION( 0x80000, "gfx3", 0 )
|
||||
ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* Samples? */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
|
||||
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
|
||||
ROM_LOAD( "1-1u", 0x10000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
|
||||
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
|
||||
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
|
||||
@ -828,9 +838,11 @@ ROM_START( cabalbl2 )
|
||||
ROM_LOAD16_BYTE( "c21.bin", 0x60000, 0x10000, CRC(55c44764) SHA1(7fad1f2084664b5b4d1384c8081371b0c79c4f5e) )
|
||||
ROM_LOAD16_BYTE( "c25.bin", 0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* Samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
|
||||
ROM_LOAD( "c2.bin", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
|
||||
ROM_LOAD( "c1.bin", 0x10000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
|
||||
ROM_LOAD( "c1.bin", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -854,13 +866,15 @@ static void seibu_sound_bootleg(running_machine &machine,const char *cpu,int len
|
||||
static DRIVER_INIT( cabal )
|
||||
{
|
||||
seibu_sound_decrypt(machine,"audiocpu",0x2000);
|
||||
seibu_adpcm_decrypt(machine,"adpcm");
|
||||
seibu_adpcm_decrypt(machine,"adpcm1");
|
||||
seibu_adpcm_decrypt(machine,"adpcm2");
|
||||
}
|
||||
|
||||
static DRIVER_INIT( cabalbl2 )
|
||||
{
|
||||
seibu_sound_bootleg(machine,"audiocpu",0x2000);
|
||||
seibu_adpcm_decrypt(machine,"adpcm");
|
||||
seibu_adpcm_decrypt(machine,"adpcm1");
|
||||
seibu_adpcm_decrypt(machine,"adpcm2");
|
||||
}
|
||||
|
||||
|
||||
|
@ -308,9 +308,11 @@ ROM_START( deadang )
|
||||
ROM_LOAD16_BYTE( "12.6j", 0x00000, 0x8000, CRC(2674d23f) SHA1(0533d80a23d917e20a703aeb833dcaccfa3a1967) )
|
||||
ROM_LOAD16_BYTE( "11.6k", 0x00001, 0x8000, CRC(3dd4d81d) SHA1(94f0a13a8d3812f6879819ca186abf3a8665f7cb) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 )
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 )
|
||||
ROM_LOAD( "15.b11", 0x000000, 0x10000, CRC(fabd74f2) SHA1(ac70e952a8b38287613b384cdc7ca00a7f155a13) )
|
||||
ROM_LOAD( "16.11a", 0x010000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 )
|
||||
ROM_LOAD( "16.11a", 0x000000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( leadang )
|
||||
@ -353,9 +355,11 @@ ROM_START( leadang )
|
||||
ROM_LOAD16_BYTE( "12.6j", 0x00000, 0x8000, CRC(2674d23f) SHA1(0533d80a23d917e20a703aeb833dcaccfa3a1967) )
|
||||
ROM_LOAD16_BYTE( "11.6k", 0x00001, 0x8000, CRC(3dd4d81d) SHA1(94f0a13a8d3812f6879819ca186abf3a8665f7cb) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 )
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 )
|
||||
ROM_LOAD( "15.b11", 0x000000, 0x10000, CRC(fabd74f2) SHA1(ac70e952a8b38287613b384cdc7ca00a7f155a13) )
|
||||
ROM_LOAD( "16.11a", 0x010000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 )
|
||||
ROM_LOAD( "16.11a", 0x000000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ghunter )
|
||||
@ -398,9 +402,11 @@ ROM_START( ghunter )
|
||||
ROM_LOAD16_BYTE( "12.6j", 0x00000, 0x8000, CRC(2674d23f) SHA1(0533d80a23d917e20a703aeb833dcaccfa3a1967) )
|
||||
ROM_LOAD16_BYTE( "11.6k", 0x00001, 0x8000, CRC(3dd4d81d) SHA1(94f0a13a8d3812f6879819ca186abf3a8665f7cb) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 )
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 )
|
||||
ROM_LOAD( "15.b11", 0x000000, 0x10000, CRC(fabd74f2) SHA1(ac70e952a8b38287613b384cdc7ca00a7f155a13) )
|
||||
ROM_LOAD( "16.11a", 0x010000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 )
|
||||
ROM_LOAD( "16.11a", 0x000000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
|
||||
ROM_END
|
||||
|
||||
/* Driver Initialization */
|
||||
@ -408,13 +414,15 @@ ROM_END
|
||||
static DRIVER_INIT( deadang )
|
||||
{
|
||||
seibu_sound_decrypt(machine, "audiocpu", 0x2000);
|
||||
seibu_adpcm_decrypt(machine, "adpcm");
|
||||
seibu_adpcm_decrypt(machine, "adpcm1");
|
||||
seibu_adpcm_decrypt(machine, "adpcm2");
|
||||
}
|
||||
|
||||
static DRIVER_INIT( ghunter )
|
||||
{
|
||||
seibu_sound_decrypt(machine, "audiocpu", 0x2000);
|
||||
seibu_adpcm_decrypt(machine, "adpcm");
|
||||
seibu_adpcm_decrypt(machine, "adpcm1");
|
||||
seibu_adpcm_decrypt(machine, "adpcm2");
|
||||
|
||||
machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x80000, 0x80001, FUNC(ghunter_trackball_low_r));
|
||||
machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0xb0000, 0xb0001, FUNC(ghunter_trackball_high_r));
|
||||
|
Loading…
Reference in New Issue
Block a user