diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c index f3308bdd34c..e435b68e7b8 100644 --- a/src/mame/drivers/crshrace.c +++ b/src/mame/drivers/crshrace.c @@ -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(); + 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(); + + 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(); @@ -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 ) diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h index a650cb5794f..e025a9fd938 100644 --- a/src/mame/includes/crshrace.h +++ b/src/mame/includes/crshrace.h @@ -20,6 +20,7 @@ public: /* misc */ int pending_command; + int sound_bank; /* devices */ running_device *audiocpu;