03993: All sets in crshrace.c: Reload of state cause loss of audio [Phil Bennett]

This commit is contained in:
Phil Bennett 2010-08-15 19:38:05 +00:00
parent dd09a3a9dd
commit 13b03f7bb2
2 changed files with 19 additions and 3 deletions

View File

@ -155,13 +155,21 @@ static READ16_HANDLER( extrarom2_r )
return rom[offset] | (rom[offset + 1] << 8);
}
static WRITE8_HANDLER( crshrace_sh_bankswitch_w )
static void set_sound_bank(running_machine *machine)
{
UINT8 *rom = memory_region(space->machine, "audiocpu") + 0x10000;
crshrace_state *state = machine->driver_data<crshrace_state>();
UINT8 *rom = memory_region(machine, "audiocpu") + 0x10000;
memory_set_bankptr(space->machine, "bank1",rom + (data & 0x03) * 0x8000);
memory_set_bankptr(machine, "bank1", rom + state->sound_bank * 0x8000);
}
static WRITE8_HANDLER( crshrace_sh_bankswitch_w )
{
crshrace_state *state = space->machine->driver_data<crshrace_state>();
state->sound_bank = data & 0x03;
set_sound_bank(space->machine);
}
static WRITE16_HANDLER( sound_command_w )
{
@ -445,6 +453,11 @@ static const k053936_interface crshrace_k053936_intf =
};
static STATE_POSTLOAD( crshrace_postload )
{
set_sound_bank(machine);
}
static MACHINE_START( crshrace )
{
crshrace_state *state = machine->driver_data<crshrace_state>();
@ -456,6 +469,8 @@ static MACHINE_START( crshrace )
state_save_register_global(machine, state->gfxctrl);
state_save_register_global(machine, state->flipscreen);
state_save_register_global(machine, state->pending_command);
state_save_register_global(machine, state->sound_bank);
state_save_register_postload(machine, crshrace_postload, NULL);
}
static MACHINE_RESET( crshrace )

View File

@ -20,6 +20,7 @@ public:
/* misc */
int pending_command;
int sound_bank;
/* devices */
running_device *audiocpu;