mirror of
https://github.com/holub/mame
synced 2025-05-23 14:19:01 +03:00
Fix for suprmrio regression in 0.135u2. goonies seems due to some other issue (I'll investigate this later)
I also made MMC3 emulation the same as MESS, but this is not enough to fix bug 03579 (vsskykid).
This commit is contained in:
parent
cbfecc9d6b
commit
a55a6af5d8
@ -209,6 +209,7 @@ static ADDRESS_MAP_START( vsnes_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w)
|
||||
AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) AM_DEVWRITE("nes1", psg_4017_w) /* IN1 - input port 2 / PSG second control register */
|
||||
AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w)
|
||||
AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1")
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -222,6 +223,7 @@ static ADDRESS_MAP_START( vsnes_cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_1_r, vsnes_in0_1_w)
|
||||
AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_1_r) AM_DEVWRITE("nes2", psg_4017_w) /* IN1 - input port 2 / PSG second control register */
|
||||
AM_RANGE(0x4020, 0x4020) AM_WRITE(vsnes_coin_counter_1_w)
|
||||
AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra2")
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -464,7 +464,7 @@ static WRITE8_HANDLER( vsnormal_vrom_banking )
|
||||
DRIVER_INIT( vsnormal )
|
||||
{
|
||||
/* vrom switching is enabled with bit 2 of $4016 */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vsnormal_vrom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vsnormal_vrom_banking);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( ppuRC2C05_protection )
|
||||
@ -494,7 +494,7 @@ DRIVER_INIT( suprmrio )
|
||||
DRIVER_INIT_CALL(vsnormal);
|
||||
|
||||
/* extra ram at $6000 is enabled with bit 1 of $4016 */
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, NULL );
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "extra1");
|
||||
|
||||
/* now override the vidaccess callback */
|
||||
/* we need to remap color tables */
|
||||
@ -559,7 +559,7 @@ static WRITE8_HANDLER( gun_in0_w )
|
||||
DRIVER_INIT( duckhunt )
|
||||
{
|
||||
/* vrom switching is enabled with bit 2 of $4016 */
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -606,7 +606,7 @@ DRIVER_INIT( goonies )
|
||||
memcpy(&prg[0x08000], &prg[0x18000], 0x8000);
|
||||
|
||||
/* banking is done with writes to the $8000-$ffff area */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -623,7 +623,7 @@ DRIVER_INIT( vsgradus )
|
||||
memcpy(&prg[0x08000], &prg[0x18000], 0x8000);
|
||||
|
||||
/* banking is done with writes to the $8000-$ffff area */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -649,7 +649,7 @@ DRIVER_INIT( hogalley )
|
||||
{
|
||||
|
||||
/* vrom switching is enabled with bit 2 of $4016 */
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -693,11 +693,11 @@ DRIVER_INIT( vsgshoe )
|
||||
memcpy (&prg[0x08000], &prg[0x12000], 0x2000);
|
||||
|
||||
/* Protection */
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, vsgshoe_security_r );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, vsgshoe_security_r);
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection);
|
||||
|
||||
/* vrom switching is enabled with bit 2 of $4016 */
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, vsgshoe_gun_in0_w );
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, vsgshoe_gun_in0_w);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -833,7 +833,7 @@ DRIVER_INIT( drmario )
|
||||
memcpy(&prg[0x0c000], &prg[0x1c000], 0x4000);
|
||||
|
||||
/* MMC1 mapper at writes to $8000-$ffff */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, drmario_rom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, drmario_rom_banking);
|
||||
|
||||
drmario_shiftreg = 0;
|
||||
drmario_shiftcount = 0;
|
||||
@ -926,7 +926,7 @@ DRIVER_INIT( cstlevna )
|
||||
memcpy(&prg[0x08000], &prg[0x28000], 0x8000);
|
||||
|
||||
/* banking is done with writes to the $8000-$ffff area */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -956,11 +956,11 @@ DRIVER_INIT( topgun )
|
||||
memcpy(&prg[0x08000], &prg[0x28000], 0x8000);
|
||||
|
||||
/* banking is done with writes to the $8000-$ffff area */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking);
|
||||
|
||||
/* tap on the PPU, due to some tricky protection */
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, topgun_security_r );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, topgun_security_r);
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -972,39 +972,35 @@ DRIVER_INIT( topgun )
|
||||
|
||||
/**********************************************************************************/
|
||||
|
||||
static int MMC3_cmd, MMC3_prg0, MMC3_prg1;
|
||||
static int MMC3_chr[6];
|
||||
static int MMC3_prg_chunks, MMC3_prg_mask;
|
||||
static int MMC3_cmd;
|
||||
static int MMC3_prg_bank[4];
|
||||
static int MMC3_chr_bank[6];
|
||||
static int MMC3_prg_mask;
|
||||
static int IRQ_enable, IRQ_count, IRQ_count_latch;
|
||||
|
||||
static void mapper4_set_prg (const address_space *space)
|
||||
static void mapper4_set_prg( running_machine *machine )
|
||||
{
|
||||
UINT8 *prg = memory_region(space->machine, "maincpu");
|
||||
MMC3_prg0 &= MMC3_prg_mask;
|
||||
MMC3_prg1 &= MMC3_prg_mask;
|
||||
UINT8 *prg = memory_region(machine, "maincpu");
|
||||
UINT8 prg_flip = (MMC3_cmd & 0x40) ? 2 : 0;
|
||||
|
||||
if (MMC3_cmd & 0x40)
|
||||
{
|
||||
memcpy(&prg[0x8000], &prg[(MMC3_prg_chunks - 1) * 0x4000 + 0x10000], 0x2000);
|
||||
memcpy(&prg[0xc000], &prg[0x2000 * (MMC3_prg0) + 0x10000], 0x2000);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(&prg[0x8000], &prg[0x2000 * (MMC3_prg0) + 0x10000], 0x2000);
|
||||
memcpy(&prg[0xc000], &prg[(MMC3_prg_chunks - 1) * 0x4000 + 0x10000], 0x2000);
|
||||
}
|
||||
memcpy(&prg[0xa000], &prg[0x2000 * (MMC3_prg1) + 0x10000], 0x2000);
|
||||
memcpy(&prg[0x8000], &prg[0x2000 * (MMC3_prg_bank[0 ^ prg_flip] & MMC3_prg_mask) + 0x10000], 0x2000);
|
||||
memcpy(&prg[0xa000], &prg[0x2000 * (MMC3_prg_bank[1] & MMC3_prg_mask) + 0x10000], 0x2000);
|
||||
memcpy(&prg[0xc000], &prg[0x2000 * (MMC3_prg_bank[2 ^ prg_flip] & MMC3_prg_mask) + 0x10000], 0x2000);
|
||||
memcpy(&prg[0xe000], &prg[0x2000 * (MMC3_prg_bank[3] & MMC3_prg_mask) + 0x10000], 0x2000);
|
||||
}
|
||||
|
||||
static void mapper4_set_chr (const address_space *space)
|
||||
static void mapper4_set_chr( running_machine *machine )
|
||||
{
|
||||
UINT8 chr_page = (MMC3_cmd & 0x80) >> 5;
|
||||
v_set_videorom_bank(space->machine, chr_page ^ 0, 2, MMC3_chr[0], 1);
|
||||
v_set_videorom_bank(space->machine, chr_page ^ 2, 2, MMC3_chr[1], 1);
|
||||
v_set_videorom_bank(space->machine, chr_page ^ 4, 1, MMC3_chr[2], 1);
|
||||
v_set_videorom_bank(space->machine, chr_page ^ 5, 1, MMC3_chr[3], 1);
|
||||
v_set_videorom_bank(space->machine, chr_page ^ 6, 1, MMC3_chr[4], 1);
|
||||
v_set_videorom_bank(space->machine, chr_page ^ 7, 1, MMC3_chr[5], 1);
|
||||
|
||||
v_set_videorom_bank(machine, chr_page ^ 0, 1, MMC3_chr_bank[0] & ~0x01, 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 1, 1, MMC3_chr_bank[0] | 0x01, 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 2, 1, MMC3_chr_bank[1] & ~0x01, 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 3, 1, MMC3_chr_bank[1] | 0x01, 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 4, 1, MMC3_chr_bank[2], 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 5, 1, MMC3_chr_bank[3], 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 6, 1, MMC3_chr_bank[4], 1);
|
||||
v_set_videorom_bank(machine, chr_page ^ 7, 1, MMC3_chr_bank[5], 1);
|
||||
}
|
||||
|
||||
#define BOTTOM_VISIBLE_SCANLINE 239 /* The bottommost visible scanline */
|
||||
@ -1012,16 +1008,19 @@ static void mapper4_set_chr (const address_space *space)
|
||||
|
||||
static void mapper4_irq( const device_config *device, int scanline, int vblank, int blanked )
|
||||
{
|
||||
if ((scanline < BOTTOM_VISIBLE_SCANLINE) || (scanline == NUM_SCANLINE - 1))
|
||||
if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
|
||||
{
|
||||
if ((IRQ_enable) && !blanked)
|
||||
int priorCount = IRQ_count;
|
||||
if ((IRQ_count == 0))
|
||||
{
|
||||
if (IRQ_count == 0)
|
||||
{
|
||||
IRQ_count = IRQ_count_latch;
|
||||
cputag_set_input_line(device->machine, "maincpu", 0, HOLD_LINE);
|
||||
}
|
||||
IRQ_count --;
|
||||
IRQ_count = IRQ_count_latch;
|
||||
}
|
||||
else
|
||||
IRQ_count--;
|
||||
|
||||
if (IRQ_enable && !blanked && (IRQ_count == 0) && priorCount)
|
||||
{
|
||||
cputag_set_input_line(device->machine, "maincpu", 0, HOLD_LINE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1029,53 +1028,40 @@ static void mapper4_irq( const device_config *device, int scanline, int vblank,
|
||||
static WRITE8_HANDLER( mapper4_w )
|
||||
{
|
||||
const device_config *ppu1 = devtag_get_device(space->machine, "ppu1");
|
||||
UINT8 MMC3_helper, cmd;
|
||||
|
||||
switch (offset & 0x7001)
|
||||
switch (offset & 0x6001)
|
||||
{
|
||||
case 0x0000: /* $8000 */
|
||||
MMC3_helper = MMC3_cmd ^ data;
|
||||
MMC3_cmd = data;
|
||||
|
||||
/* Toggle between switching $8000 and $c000 */
|
||||
if (last_bank != (data & 0xc0))
|
||||
{
|
||||
/* Reset the banks */
|
||||
mapper4_set_prg(space);
|
||||
mapper4_set_chr(space);
|
||||
/* Has PRG Mode changed? */
|
||||
if (MMC3_helper & 0x40)
|
||||
mapper4_set_prg(space->machine);
|
||||
|
||||
}
|
||||
last_bank = data & 0xc0;
|
||||
/* Has CHR Mode changed? */
|
||||
if (MMC3_helper & 0x80)
|
||||
mapper4_set_chr(space->machine);
|
||||
break;
|
||||
|
||||
case 0x0001: /* $8001 */
|
||||
{
|
||||
UINT8 cmd = MMC3_cmd & 0x07;
|
||||
cmd = MMC3_cmd & 0x07;
|
||||
switch (cmd)
|
||||
{
|
||||
case 0: case 1:
|
||||
data &= 0xfe;
|
||||
MMC3_chr[cmd] = data;
|
||||
mapper4_set_chr(space);
|
||||
|
||||
break;
|
||||
|
||||
case 0: case 1: // these do not need to be separated: we take care of them in set_chr!
|
||||
case 2: case 3: case 4: case 5:
|
||||
MMC3_chr[cmd] = data;
|
||||
mapper4_set_chr(space);
|
||||
|
||||
MMC3_chr_bank[cmd] = data;
|
||||
mapper4_set_chr(space->machine);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
MMC3_prg0 = data;
|
||||
mapper4_set_prg(space);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
MMC3_prg1 = data;
|
||||
mapper4_set_prg(space);
|
||||
MMC3_prg_bank[cmd - 6] = data;
|
||||
mapper4_set_prg(space->machine);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x2000: /* $a000 */
|
||||
if (data & 0x40)
|
||||
v_set_mirroring(1, PPU_MIRROR_HIGH);
|
||||
@ -1091,8 +1077,7 @@ static WRITE8_HANDLER( mapper4_w )
|
||||
case 0x2001: /* $a001 - extra RAM enable/disable */
|
||||
/* ignored - we always enable it */
|
||||
|
||||
break;
|
||||
|
||||
break;
|
||||
case 0x4000: /* $c000 - IRQ scanline counter */
|
||||
IRQ_count = data;
|
||||
|
||||
@ -1129,11 +1114,11 @@ DRIVER_INIT( MMC3 )
|
||||
{
|
||||
UINT8 *prg = memory_region(machine, "maincpu");
|
||||
IRQ_enable = IRQ_count = IRQ_count_latch = 0;
|
||||
MMC3_prg0 = 0xfe;
|
||||
MMC3_prg1 = 0xff;
|
||||
MMC3_cmd = 0;
|
||||
int MMC3_prg_chunks = (memory_region_length(machine, "maincpu") - 0x10000) / 0x4000;
|
||||
|
||||
MMC3_prg_chunks = (memory_region_length(machine, "maincpu") - 0x10000) / 0x4000;
|
||||
MMC3_prg_bank[0] = MMC3_prg_bank[2] = 0xfe;
|
||||
MMC3_prg_bank[1] = MMC3_prg_bank[3] = 0xff;
|
||||
MMC3_cmd = 0;
|
||||
|
||||
MMC3_prg_mask = ((MMC3_prg_chunks << 1) - 1);
|
||||
|
||||
@ -1143,10 +1128,10 @@ DRIVER_INIT( MMC3 )
|
||||
memcpy(&prg[0xe000], &prg[(MMC3_prg_chunks - 1) * 0x4000 + 0x12000], 0x2000);
|
||||
|
||||
/* MMC3 mapper at writes to $8000-$ffff */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper4_w );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper4_w);
|
||||
|
||||
/* extra ram at $6000-$7fff */
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, NULL );
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "extra1");
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -1237,10 +1222,10 @@ DRIVER_INIT( supxevs )
|
||||
DRIVER_INIT_CALL(MMC3);
|
||||
|
||||
/* Vs. Super Xevious Protection */
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x54ff, 0x54ff, 0, 0, supxevs_read_prot_1_r );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5678, 0x5678, 0, 0, supxevs_read_prot_2_r );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x578f, 0x578f, 0, 0, supxevs_read_prot_3_r );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5567, 0x5567, 0, 0, supxevs_read_prot_4_r );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x54ff, 0x54ff, 0, 0, supxevs_read_prot_1_r);
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5678, 0x5678, 0, 0, supxevs_read_prot_2_r);
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x578f, 0x578f, 0, 0, supxevs_read_prot_3_r);
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5567, 0x5567, 0, 0, supxevs_read_prot_4_r);
|
||||
|
||||
remapped_colortable = rp2c04001_colortable;
|
||||
}
|
||||
@ -1272,7 +1257,7 @@ DRIVER_INIT( tkoboxng )
|
||||
DRIVER_INIT_CALL(MMC3);
|
||||
|
||||
/* security device at $5e00-$5e01 */
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5e00, 0x5e01, 0, 0, tko_security_r );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5e00, 0x5e01, 0, 0, tko_security_r);
|
||||
|
||||
/* now override the vidaccess callback */
|
||||
/* we need to remap color tables */
|
||||
@ -1286,7 +1271,7 @@ DRIVER_INIT( vsfdf )
|
||||
{
|
||||
DRIVER_INIT_CALL(MMC3);
|
||||
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w);
|
||||
|
||||
vsnes_gun_controller = 1;
|
||||
vsnes_do_vrom_bank = 0;
|
||||
@ -1339,7 +1324,7 @@ DRIVER_INIT( platoon )
|
||||
memcpy(&prg[0x08000], &prg[0x10000], 0x4000);
|
||||
memcpy(&prg[0x0c000], &prg[0x2c000], 0x4000);
|
||||
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper68_rom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper68_rom_banking);
|
||||
|
||||
init_vsnes(machine);
|
||||
|
||||
@ -1366,10 +1351,10 @@ static READ8_HANDLER( set_bnglngby_irq_r )
|
||||
|
||||
DRIVER_INIT( bnglngby )
|
||||
{
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0231, 0x0231, 0, 0, set_bnglngby_irq_r, set_bnglngby_irq_w );
|
||||
memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0231, 0x0231, 0, 0, set_bnglngby_irq_r, set_bnglngby_irq_w);
|
||||
|
||||
/* extra ram */
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, NULL );
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "extra1");
|
||||
|
||||
ret = 0;
|
||||
|
||||
@ -1398,8 +1383,8 @@ DRIVER_INIT( jajamaru )
|
||||
// Maybe it should be a DOP (double NOP)
|
||||
|
||||
/* Protection */
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, jajamaru_security_r );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, jajamaru_security_r);
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -1420,8 +1405,8 @@ static READ8_HANDLER( mightybj_security_r )
|
||||
DRIVER_INIT( mightybj )
|
||||
{
|
||||
/* Protection */
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, mightybj_security_r );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
|
||||
memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, mightybj_security_r);
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection);
|
||||
|
||||
/* common init */
|
||||
init_vsnes(machine);
|
||||
@ -1452,12 +1437,12 @@ DRIVER_INIT( vstennis )
|
||||
UINT8 *prg = memory_region(machine, "maincpu");
|
||||
|
||||
/* vrom switching is enabled with bit 2 of $4016 */
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking );
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking);
|
||||
memory_install_write8_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking);
|
||||
|
||||
/* shared ram at $6000 */
|
||||
memory_install_ram(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, &prg[0x6000] );
|
||||
memory_install_ram(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, &prg[0x6000] );
|
||||
memory_install_ram(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, &prg[0x6000]);
|
||||
memory_install_ram(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, &prg[0x6000]);
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
@ -1521,7 +1506,7 @@ DRIVER_INIT( btlecity )
|
||||
DRIVER_INIT( vstetris )
|
||||
{
|
||||
/* extra ram at $6000 is enabled with bit 1 of $4016 */
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, NULL );
|
||||
memory_install_readwrite_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "extra1");
|
||||
|
||||
init_vsnes(machine);
|
||||
DRIVER_INIT_CALL(vsnormal);
|
||||
|
Loading…
Reference in New Issue
Block a user