Super Game III: added handling for two consecutive writes for MMC1 making Snow Bros playable [Mariusz Wojcieszek, Fabio Pruli]

This commit is contained in:
mariuszw1 2010-06-23 17:12:19 +00:00
parent dfe3ee87db
commit 47f9b653bb

View File

@ -631,12 +631,28 @@ static int mmc1_rom_mask;
static UINT8* multigam_mmc1_prg_base; static UINT8* multigam_mmc1_prg_base;
static int multigam_mmc1_prg_size; static int multigam_mmc1_prg_size;
static int multigam_mmc1_chr_bank_base; static int multigam_mmc1_chr_bank_base;
static int multigam_mmc1_reg_write_enable;
static TIMER_CALLBACK( mmc1_resync_callback )
{
multigam_mmc1_reg_write_enable = 1;
}
static WRITE8_HANDLER( mmc1_rom_switch_w ) static WRITE8_HANDLER( mmc1_rom_switch_w )
{ {
/* basically, a MMC1 mapper from the nes */ /* basically, a MMC1 mapper from the nes */
static int size16k, switchlow, vrom4k; static int size16k, switchlow, vrom4k;
if ( multigam_mmc1_reg_write_enable == 0 )
{
return;
}
else
{
multigam_mmc1_reg_write_enable = 0;
timer_call_after_resynch(space->machine, NULL, 0, mmc1_resync_callback);
}
int reg = (offset >> 13); int reg = (offset >> 13);
/* reset mapper */ /* reset mapper */
@ -758,6 +774,7 @@ static void multigam_init_mmc1(running_machine *machine, UINT8 *prg_base, int pr
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w ); memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
multigam_mmc1_reg_write_enable = 1;
mmc1_rom_mask = (prg_size / 0x4000) - 1; mmc1_rom_mask = (prg_size / 0x4000) - 1;
multigam_mmc1_prg_base = prg_base; multigam_mmc1_prg_base = prg_base;
multigam_mmc1_prg_size = prg_size; multigam_mmc1_prg_size = prg_size;