did latch delegate for ppu also (nw)

This commit is contained in:
Miodrag Milanovic 2013-03-29 07:53:11 +00:00
parent 5e39fecad5
commit 266a4643f5
6 changed files with 290 additions and 296 deletions

View File

@ -123,6 +123,7 @@ public:
void set_videoram_bank( int first, int count, int bank, int size );
void gboard_scanline_cb( int scanline, int vblank, int blanked );
void ppu_irq(int *ppu_regs);
void mapper9_latch(offs_t offset);
};
/*----------- defined in video/playch10.c -----------*/

View File

@ -685,29 +685,27 @@ DRIVER_INIT_MEMBER(playch10_state,pcdboard_2)
/* E Board games (Mike Tyson's Punchout) - BROKEN - FIX ME */
/* callback for the ppu_latch */
static void mapper9_latch( device_t *ppu, offs_t offset )
void playch10_state::mapper9_latch(offs_t offset )
{
playch10_state *state = ppu->machine().driver_data<playch10_state>();
if((offset & 0x1ff0) == 0x0fd0 && state->m_MMC2_bank_latch[0] != 0xfd)
if((offset & 0x1ff0) == 0x0fd0 && m_MMC2_bank_latch[0] != 0xfd)
{
state->m_MMC2_bank_latch[0] = 0xfd;
state->pc10_set_videorom_bank(0, 4, state->m_MMC2_bank[0], 4);
m_MMC2_bank_latch[0] = 0xfd;
pc10_set_videorom_bank(0, 4, m_MMC2_bank[0], 4);
}
else if((offset & 0x1ff0) == 0x0fe0 && state->m_MMC2_bank_latch[0] != 0xfe)
else if((offset & 0x1ff0) == 0x0fe0 && m_MMC2_bank_latch[0] != 0xfe)
{
state->m_MMC2_bank_latch[0] = 0xfe;
state->pc10_set_videorom_bank(0, 4, state->m_MMC2_bank[1], 4);
m_MMC2_bank_latch[0] = 0xfe;
pc10_set_videorom_bank(0, 4, m_MMC2_bank[1], 4);
}
else if((offset & 0x1ff0) == 0x1fd0 && state->m_MMC2_bank_latch[1] != 0xfd)
else if((offset & 0x1ff0) == 0x1fd0 && m_MMC2_bank_latch[1] != 0xfd)
{
state->m_MMC2_bank_latch[1] = 0xfd;
state->pc10_set_videorom_bank(4, 4, state->m_MMC2_bank[2], 4);
m_MMC2_bank_latch[1] = 0xfd;
pc10_set_videorom_bank(4, 4, m_MMC2_bank[2], 4);
}
else if((offset & 0x1ff0) == 0x1fe0 && state->m_MMC2_bank_latch[1] != 0xfe)
else if((offset & 0x1ff0) == 0x1fe0 && m_MMC2_bank_latch[1] != 0xfe)
{
state->m_MMC2_bank_latch[1] = 0xfe;
state->pc10_set_videorom_bank(4, 4, state->m_MMC2_bank[3], 4);
m_MMC2_bank_latch[1] = 0xfe;
pc10_set_videorom_bank(4, 4, m_MMC2_bank[3], 4);
}
}
@ -771,7 +769,7 @@ DRIVER_INIT_MEMBER(playch10_state,pceboard)
machine().device("cart")->memory().space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::eboard_rom_switch_w),this));
/* ppu_latch callback */
ppu->set_latch(mapper9_latch);
ppu->set_latch(ppu2c0x_latch_delegate(FUNC(playch10_state::mapper9_latch),this));
/* nvram at $6000-$6fff */
machine().device("cart")->memory().space(AS_PROGRAM).install_ram(0x6000, 0x6fff);

View File

@ -115,7 +115,7 @@ void ppu2c0x_device::device_config_complete()
assert(config);
/* reset the callbacks */
m_latch = NULL;
m_latch = ppu2c0x_latch_delegate();
m_scanline_callback_proc = ppu2c0x_scanline_delegate();
m_hblank_callback_proc = ppu2c0x_hblank_delegate();
m_vidaccess_callback_proc = ppu2c0x_vidaccess_delegate();
@ -455,12 +455,6 @@ static const gfx_layout ppu_charlayout =
*
*************************************/
void ppu2c0x_device::set_latch( void (*latch)(device_t *device, offs_t offset) )
{
if (latch)
m_latch = latch;
}
//-------------------------------------------------
// device_timer - handle timer events
//-------------------------------------------------
@ -630,8 +624,8 @@ void ppu2c0x_device::draw_background( UINT8 *line_priority )
page2 = readbyte(index1);
// 27/12/2002
if (m_latch)
(*m_latch)(this, (m_tile_page << 10) | (page2 << 4));
if (!m_latch.isnull())
m_latch((m_tile_page << 10) | (page2 << 4));
if (start_x < VISIBLE_SCREEN_WIDTH)
{
@ -760,8 +754,8 @@ void ppu2c0x_device::draw_sprites( UINT8 *line_priority )
}
}
if (m_latch)
(*m_latch)(this, (m_sprite_page << 10) | ((tile & 0xff) << 4));
if (!m_latch.isnull())
m_latch((m_sprite_page << 10) | ((tile & 0xff) << 4));
/* compute the character's line to draw */
sprite_line = m_scanline - sprite_ypos;
@ -1092,8 +1086,8 @@ READ8_MEMBER( ppu2c0x_device::read )
break;
case PPU_DATA: /* 7 */
if (m_latch)
(*m_latch)(this, m_videomem_addr & 0x3fff);
if (!m_latch.isnull())
m_latch( m_videomem_addr & 0x3fff);
if (m_videomem_addr >= 0x3f00)
{
@ -1241,8 +1235,8 @@ WRITE8_MEMBER( ppu2c0x_device::write )
{
int tempAddr = m_videomem_addr & 0x3fff;
if (m_latch)
(*m_latch)(this, tempAddr);
if (!m_latch.isnull())
m_latch(tempAddr);
/* if there's a callback, call it now */
if (!m_vidaccess_callback_proc.isnull())

View File

@ -113,6 +113,7 @@ typedef device_delegate<void (int scanline, int vblank, int blanked)> ppu2c0x_sc
typedef device_delegate<void (int scanline, int vblank, int blanked)> ppu2c0x_hblank_delegate;
typedef device_delegate<void (int *ppu_regs)> ppu2c0x_nmi_delegate;
typedef device_delegate<int (int address, int data)> ppu2c0x_vidaccess_delegate;
typedef device_delegate<void (offs_t offset)> ppu2c0x_latch_delegate;
// ======================> ppu2c0x_interface
@ -174,7 +175,7 @@ public:
void set_scanlines_per_frame( int scanlines ) { m_scanlines_per_frame = scanlines; };
//27/12/2002 (HACK!)
void set_latch( void (*ppu_latch_t)( device_t *device, offs_t offset ) );
void set_latch( ppu2c0x_latch_delegate cb ) { m_latch = cb; m_latch.bind_relative_to(*owner()); };
// void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
@ -206,7 +207,7 @@ public:
int m_scan_scale; /* scan scale */
int m_scanlines_per_frame; /* number of scanlines per frame */
int m_security_value; /* 2C05 protection */
void (*m_latch)( device_t *device, offs_t offset );
ppu2c0x_latch_delegate m_latch;
// timers
emu_timer *m_hblank_timer; /* hblank period at end of each scanline */

View File

@ -171,6 +171,7 @@ public:
int nes_ppu_vidaccess(int address, int data);
void fds_irq(int scanline, int vblank, int blanked);
void ppu_nmi(int *ppu_regs);
void mmc2_latch(offs_t offset);
private:
/* devices */
// cpu_device *m_maincpu;

View File

@ -1127,32 +1127,31 @@ WRITE8_MEMBER(nes_carts_state::sxrom_w)
*************************************************************/
static void mmc2_latch( device_t *device, offs_t offset )
void nes_state::mmc2_latch(offs_t offset )
{
nes_state *state = device->machine().driver_data<nes_state>();
if ((offset & 0x3ff0) == 0x0fd0)
{
LOG_MMC(("mmc2 vrom latch switch (bank 0 low): %02x\n", state->m_mmc_reg[0]));
state->m_mmc_latch1 = 0xfd;
state->chr4_0(state->m_mmc_reg[0], CHRROM);
LOG_MMC(("mmc2 vrom latch switch (bank 0 low): %02x\n", m_mmc_reg[0]));
m_mmc_latch1 = 0xfd;
chr4_0(m_mmc_reg[0], CHRROM);
}
else if ((offset & 0x3ff0) == 0x0fe0)
{
LOG_MMC(("mmc2 vrom latch switch (bank 0 high): %02x\n", state->m_mmc_reg[1]));
state->m_mmc_latch1 = 0xfe;
state->chr4_0(state->m_mmc_reg[1], CHRROM);
LOG_MMC(("mmc2 vrom latch switch (bank 0 high): %02x\n", m_mmc_reg[1]));
m_mmc_latch1 = 0xfe;
chr4_0(m_mmc_reg[1], CHRROM);
}
else if ((offset & 0x3ff0) == 0x1fd0)
{
LOG_MMC(("mmc2 vrom latch switch (bank 1 low): %02x\n", state->m_mmc_reg[2]));
state->m_mmc_latch2 = 0xfd;
state->chr4_4(state->m_mmc_reg[2], CHRROM);
LOG_MMC(("mmc2 vrom latch switch (bank 1 low): %02x\n", m_mmc_reg[2]));
m_mmc_latch2 = 0xfd;
chr4_4(m_mmc_reg[2], CHRROM);
}
else if ((offset & 0x3ff0) == 0x1fe0)
{
LOG_MMC(("mmc2 vrom latch switch (bank 0 high): %02x\n", state->m_mmc_reg[3]));
state->m_mmc_latch2 = 0xfe;
state->chr4_4(state->m_mmc_reg[3], CHRROM);
LOG_MMC(("mmc2 vrom latch switch (bank 0 high): %02x\n", m_mmc_reg[3]));
m_mmc_latch2 = 0xfe;
chr4_4(m_mmc_reg[3], CHRROM);
}
}
@ -11710,11 +11709,6 @@ READ8_MEMBER(nes_carts_state::fujiya_m_r)
}
#endif
typedef void (*nes_ppu_latch)(device_t *device, offs_t offset);
struct nes_memory_accessor
{
write8_delegate write;
@ -11727,7 +11721,7 @@ struct nes_pcb_intf
nes_memory_accessor mmc_l; /* $4100-$5fff read/write routines */
nes_memory_accessor mmc_m; /* $6000-$7fff read/write routines */
nes_memory_accessor mmc_h; /* $8000-$ffff read/write routines */
nes_ppu_latch mmc_ppu_latch;
ppu2c0x_latch_delegate mmc_ppu_latch;
ppu2c0x_scanline_delegate mmc_scanline;
ppu2c0x_hblank_delegate mmc_hblank;
};
@ -11754,6 +11748,11 @@ struct nes_pcb_intf
#define NES_HBLANK(a) \
ppu2c0x_hblank_delegate(FUNC(a),(nes_state *)0)
#define NES_LATCH_NULL \
ppu2c0x_latch_delegate()
#define NES_LATCH(a) \
ppu2c0x_latch_delegate(FUNC(a),(nes_state *)0)
WRITE8_MEMBER(nes_carts_state::dummy_l_w)
@ -11791,255 +11790,255 @@ READ8_MEMBER(nes_carts_state::dummy_r)
static const nes_pcb_intf nes_intf_list[] =
{
{ STD_NROM, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HVC_FAMBASIC, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ GG_NROM, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_UXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::uxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_UN1ROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::un1rom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_CPROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cprom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_CNROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cnrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BANDAI_PT554, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bandai_pt554_m_w), NES_WRITEONLY(nes_carts_state::cnrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_AXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::axrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_PXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::pxrom_w), mmc2_latch, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_FXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fxrom_w), mmc2_latch, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_BXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_GXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::gxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_MXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::gxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_NXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntbrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUNSOFT_DCS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntbrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_JXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::jxrom_irq) },
{ STD_SXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_SOROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_SXROM_A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_SOROM_A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_TXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TVROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TKROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_HKROM, NES_NOACCESS, NES_READWRITE(nes_carts_state::hkrom_m_w, nes_carts_state::hkrom_m_r), NES_WRITEONLY(nes_carts_state::hkrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TQROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tqrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TXSROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txsrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_DXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_DRROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_34X3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dxrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_3425, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot3425_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_3446, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot3446_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_3453, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot3453_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_EXROM, NES_READWRITE(nes_carts_state::exrom_l_w, nes_carts_state::exrom_l_r), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc5_irq) },
{ NES_QJ, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::qj_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ PAL_ZZ, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::zz_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UXROM_CC, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::uxrom_cc_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_NROM, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HVC_FAMBASIC, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ GG_NROM, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_UXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::uxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_UN1ROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::un1rom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_CPROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cprom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_CNROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cnrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BANDAI_PT554, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bandai_pt554_m_w), NES_WRITEONLY(nes_carts_state::cnrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_AXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::axrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_PXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::pxrom_w), NES_LATCH(nes_state::mmc2_latch), NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_FXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fxrom_w), NES_LATCH(nes_state::mmc2_latch), NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_BXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_GXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::gxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_MXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::gxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_NXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntbrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUNSOFT_DCS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntbrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_JXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::jxrom_irq) },
{ STD_SXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_SOROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_SXROM_A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_SOROM_A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_TXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TVROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TKROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_HKROM, NES_NOACCESS, NES_READWRITE(nes_carts_state::hkrom_m_w, nes_carts_state::hkrom_m_r), NES_WRITEONLY(nes_carts_state::hkrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TQROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tqrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_TXSROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txsrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ STD_DXROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_DRROM, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_34X3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dxrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_3425, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot3425_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_3446, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot3446_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NAMCOT_3453, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot3453_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ STD_EXROM, NES_READWRITE(nes_carts_state::exrom_l_w, nes_carts_state::exrom_l_r), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc5_irq) },
{ NES_QJ, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::qj_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ PAL_ZZ, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::zz_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UXROM_CC, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::uxrom_cc_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
//
{ DIS_74X139X74, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x139x74_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X377, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x377_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X161X161X32, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x161x161x32_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X161X138, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x161x138_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BANDAI_LZ93, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_LZ93EX, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_FCG, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_DATACH, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_JUMP2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fjump2_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_KARAOKE, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bandai_ks_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BANDAI_OEKAKIDS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bandai_ok_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_G101, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::g101_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_LROG017, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lrog017_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_H3001, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::h3001_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::h3001_irq) },
{ IREM_TAM_S1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tam_s1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_HOLYDIV, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::irem_hd_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_SS88006, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ss88006_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ss88006_irq) },
{ JALECO_JF11, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf11_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF13, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf13_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF16, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf16_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF17, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf17_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF19, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf19_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KONAMI_VRC1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KONAMI_VRC2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc2_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KONAMI_VRC3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc3_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ KONAMI_VRC4, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc4_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ KONAMI_VRC6, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc6_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ KONAMI_VRC7, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc7_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ NAMCOT_163, NES_READWRITE(nes_carts_state::namcot163_l_w, nes_carts_state::namcot163_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot163_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::namcot_irq) },
{ SUNSOFT_1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sunsoft1_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUNSOFT_2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sunsoft2_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUNSOFT_3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sunsoft3_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sunsoft3_irq) },
{ TAITO_TC0190FMC, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tc0190fmc_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TAITO_TC0190FMCP, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tc0190fmc_p16_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ TAITO_X1_005, NES_NOACCESS, NES_READWRITE(nes_carts_state::x1005_m_w, nes_carts_state::x1005_m_r), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TAITO_X1_005_A, NES_NOACCESS, NES_READWRITE(nes_carts_state::x1005a_m_w, nes_carts_state::x1005_m_r), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TAITO_X1_017, NES_NOACCESS, NES_READWRITE(nes_carts_state::x1017_m_w, nes_carts_state::x1017_m_r), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X139X74, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x139x74_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X377, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x377_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X161X161X32, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x161x161x32_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ DIS_74X161X138, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::dis_74x161x138_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BANDAI_LZ93, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_LZ93EX, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_FCG, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_DATACH, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lz93d50_m_w), NES_WRITEONLY(nes_carts_state::lz93d50_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_JUMP2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fjump2_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::bandai_lz_irq) },
{ BANDAI_KARAOKE, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bandai_ks_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BANDAI_OEKAKIDS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bandai_ok_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_G101, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::g101_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_LROG017, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::lrog017_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_H3001, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::h3001_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::h3001_irq) },
{ IREM_TAM_S1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tam_s1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ IREM_HOLYDIV, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::irem_hd_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_SS88006, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ss88006_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ss88006_irq) },
{ JALECO_JF11, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf11_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF13, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf13_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF16, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf16_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF17, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf17_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ JALECO_JF19, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::jf19_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KONAMI_VRC1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KONAMI_VRC2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc2_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KONAMI_VRC3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc3_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ KONAMI_VRC4, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc4_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ KONAMI_VRC6, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc6_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ KONAMI_VRC7, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::konami_vrc7_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ NAMCOT_163, NES_READWRITE(nes_carts_state::namcot163_l_w, nes_carts_state::namcot163_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::namcot163_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::namcot_irq) },
{ SUNSOFT_1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sunsoft1_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUNSOFT_2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sunsoft2_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUNSOFT_3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sunsoft3_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sunsoft3_irq) },
{ TAITO_TC0190FMC, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tc0190fmc_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TAITO_TC0190FMCP, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tc0190fmc_p16_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ TAITO_X1_005, NES_NOACCESS, NES_READWRITE(nes_carts_state::x1005_m_w, nes_carts_state::x1005_m_r), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TAITO_X1_005_A, NES_NOACCESS, NES_READWRITE(nes_carts_state::x1005a_m_w, nes_carts_state::x1005_m_r), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TAITO_X1_017, NES_NOACCESS, NES_READWRITE(nes_carts_state::x1017_m_w, nes_carts_state::x1017_m_r), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
//
{ AGCI_50282, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::agci_50282_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ ACTENT_ACT52, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ae_act52_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ AVE_NINA01, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::nina01_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ AVE_NINA06, NES_WRITEONLY(nes_carts_state::nina06_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CNE_DECATHLON, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cne_decathl_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CNE_FSB, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cne_fsb_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CNE_SHLZ, NES_WRITEONLY(nes_carts_state::cne_shlz_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CALTRON_6IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::caltron6in1_m_w), NES_WRITEONLY(nes_carts_state::caltron6in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_BF9093, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bf9093_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_BF9097, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bf9093_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_BF9096, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bf9096_w), NES_WRITEONLY(nes_carts_state::bf9096_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_GOLDENFIVE, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::golden5_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CONY_BOARD, NES_READWRITE(nes_carts_state::cony_l_w, nes_carts_state::cony_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cony_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sunsoft3_irq) },
{ YOKO_BOARD, NES_READWRITE(nes_carts_state::yoko_l_w, nes_carts_state::yoko_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::yoko_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sunsoft3_irq) },
{ DREAMTECH_BOARD, NES_WRITEONLY(nes_carts_state::dreamtech_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ FUTUREMEDIA_BOARD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::futuremedia_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::futuremedia_irq) },
{ FUKUTAKE_BOARD, NES_READWRITE(nes_carts_state::fukutake_l_w, nes_carts_state::fukutake_l_r), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ GOUDER_37017, NES_READWRITE(nes_carts_state::gouder_sf4_l_w, nes_carts_state::gouder_sf4_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ HENGEDIANZI_BOARD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::henggedianzi_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HENGEDIANZI_XJZB, NES_WRITEONLY(nes_carts_state::heng_xjzb_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::heng_xjzb_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HES6IN1_BOARD, NES_WRITEONLY(nes_carts_state::hes6in1_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HES_BOARD, NES_WRITEONLY(nes_carts_state::hes_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HOSENKAN_BOARD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::hosenkan_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ KAISER_KS7058, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks7058_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KAISER_KS7022, NES_NOACCESS, NES_NOACCESS, NES_READWRITE(nes_carts_state::ks7022_w, nes_carts_state::ks7022_r), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KAISER_KS7032, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks7032_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ks7032_irq) },
{ KAISER_KS202, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks202_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ks7032_irq) },
{ KAISER_KS7017, NES_WRITEONLY(nes_carts_state::ks7017_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc_fds_irq) },
{ KAY_PANDAPRINCE, NES_READWRITE(nes_carts_state::kay_pp_l_w, nes_carts_state::kay_pp_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::kay_pp_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ KASING_BOARD, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::kasing_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ SACHEN_74LS374, NES_READWRITE(nes_carts_state::sachen_74x374_l_w, nes_carts_state::sachen_74x374_l_r), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_74LS374_A, NES_WRITEONLY(nes_carts_state::sachen_74x374a_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259A, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259B, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259C, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259D, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA009, NES_WRITEONLY(nes_carts_state::sa009_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA0036, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sa0036_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA0037, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sa0037_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA72007, NES_WRITEONLY(nes_carts_state::sa72007_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA72008, NES_WRITEONLY(nes_carts_state::sa72008_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_TCA01, NES_READONLY(nes_carts_state::tca01_l_r), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_TCU01, NES_WRITEONLY(nes_carts_state::tcu01_l_w), NES_WRITEONLY(nes_carts_state::tcu01_m_w), NES_WRITEONLY(nes_carts_state::tcu01_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_TCU02, NES_READWRITE(nes_carts_state::tcu02_l_w, nes_carts_state::tcu02_l_r), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUBOR_TYPE0, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::subor0_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUBOR_TYPE1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::subor1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ MAGICSERIES_MD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::magics_md_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NANJING_BOARD, NES_READWRITE(nes_carts_state::nanjing_l_w, nes_carts_state::nanjing_l_r), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::nanjing_irq) },
{ NITRA_TDA, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::nitra_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ NTDEC_ASDER, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntdec_asder_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NTDEC_FIGHTINGHERO, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntdec_fh_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ OPENCORP_DAOU306, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::daou306_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ RCM_GS2015, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::gs2015_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ RCM_TETRISFAMILY, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::rcm_tf_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ REXSOFT_DBZ5, NES_READWRITE(nes_carts_state::rex_dbz_l_w, nes_carts_state::rex_dbz_l_r), NES_READONLY(nes_carts_state::rex_dbz_l_r), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ REXSOFT_SL1632, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::rex_sl1632_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ RUMBLESTATION_BOARD, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::rumblestation_m_w), NES_WRITEONLY(nes_carts_state::rumblestation_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SOMERI_SL12, NES_WRITEONLY(nes_carts_state::someri_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::someri_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ SUPERGAME_BOOGERMAN, NES_WRITEONLY(nes_carts_state::sgame_boog_l_w), NES_WRITEONLY(nes_carts_state::sgame_boog_m_w), NES_WRITEONLY(nes_carts_state::sgame_boog_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ SUPERGAME_LIONKING, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sgame_lion_m_w), NES_WRITEONLY(nes_carts_state::sgame_lion_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ TENGEN_800008, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tengen_800008_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TENGEN_800032, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tengen_800032_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::tengen_800032_irq) },
{ TENGEN_800037, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tengen_800037_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::tengen_800032_irq) },
{ TXC_22211A, NES_READWRITE(nes_carts_state::txc_22211_l_w, nes_carts_state::txc_22211_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_22211_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_22211B, NES_READWRITE(nes_carts_state::txc_22211_l_w, nes_carts_state::txc_22211_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_22211b_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_22211C, NES_READWRITE(nes_carts_state::txc_22211_l_w, nes_carts_state::txc_22211c_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_22211_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_TW, NES_WRITEONLY(nes_carts_state::txc_tw_l_w), NES_WRITEONLY(nes_carts_state::txc_tw_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ TXC_STRIKEWOLF, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_strikewolf_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_MXMDHTWO, NES_READONLY(nes_carts_state::txc_mxmdhtwo_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_mxmdhtwo_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_TYPE_A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_A_1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_B, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_C, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_D, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_E, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_F, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_f_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_G, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_g_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_H, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_h_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_I, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) }, // this is MMC3 + possibly additional WRAM added in 0x5000-0x5fff
{ WAIXING_TYPE_J, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) }, // this is MMC3 + possibly additional WRAM added in 0x5000-0x5fff
{ WAIXING_SGZ, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_sgz_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ WAIXING_SGZLZ, NES_WRITEONLY(nes_carts_state::waixing_sgzlz_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_FFV, NES_WRITEONLY(nes_carts_state::waixing_ffv_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_ZS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_zs_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_DQ8, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_dq8_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_SECURITY, NES_WRITEONLY(nes_carts_state::waixing_sec_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_SH2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) }, // this is MMC3 + possibly additional WRAM added in 0x5000-0x5fff
{ WAIXING_PS2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_ps2_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_8237, NES_WRITEONLY(nes_carts_state::unl_8237_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_8237_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_AX5705, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_ax5705_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_CC21, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_cc21_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_KOF97, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_kof97_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_KS7057, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks7057_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_T230, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_t230_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ UNL_KOF96, NES_READWRITE(nes_carts_state::kof96_l_w, nes_carts_state::kof96_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::kof96_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_MK2, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::mk2_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_N625092, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::n625092_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_SC127, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sc127_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sc127_irq) },
{ UNL_SMB2J, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::smb2j_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_SUPERFIGHTER3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_sf3_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_XZY, NES_WRITEONLY(nes_carts_state::unl_xzy_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_RACERMATE, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_racmate_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_STUDYNGAME, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sng32_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_603_5052, NES_READWRITE(nes_carts_state::unl_6035052_extra_w, nes_carts_state::unl_6035052_extra_r), NES_READWRITE(nes_carts_state::unl_6035052_extra_w, nes_carts_state::unl_6035052_extra_r), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_EDU2K, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::edu2k_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_SHJY3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::shjy3_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::shjy3_irq) },
{ UNL_H2288, NES_READWRITE(nes_carts_state::h2288_l_w, nes_carts_state::h2288_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::h2288_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_FS304, NES_WRITEONLY(nes_carts_state::unl_fs304_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ AGCI_50282, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::agci_50282_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ ACTENT_ACT52, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ae_act52_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ AVE_NINA01, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::nina01_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ AVE_NINA06, NES_WRITEONLY(nes_carts_state::nina06_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CNE_DECATHLON, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cne_decathl_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CNE_FSB, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cne_fsb_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CNE_SHLZ, NES_WRITEONLY(nes_carts_state::cne_shlz_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CALTRON_6IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::caltron6in1_m_w), NES_WRITEONLY(nes_carts_state::caltron6in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_BF9093, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bf9093_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_BF9097, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bf9093_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_BF9096, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bf9096_w), NES_WRITEONLY(nes_carts_state::bf9096_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CAMERICA_GOLDENFIVE, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::golden5_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ CONY_BOARD, NES_READWRITE(nes_carts_state::cony_l_w, nes_carts_state::cony_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::cony_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sunsoft3_irq) },
{ YOKO_BOARD, NES_READWRITE(nes_carts_state::yoko_l_w, nes_carts_state::yoko_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::yoko_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sunsoft3_irq) },
{ DREAMTECH_BOARD, NES_WRITEONLY(nes_carts_state::dreamtech_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ FUTUREMEDIA_BOARD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::futuremedia_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::futuremedia_irq) },
{ FUKUTAKE_BOARD, NES_READWRITE(nes_carts_state::fukutake_l_w, nes_carts_state::fukutake_l_r), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ GOUDER_37017, NES_READWRITE(nes_carts_state::gouder_sf4_l_w, nes_carts_state::gouder_sf4_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ HENGEDIANZI_BOARD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::henggedianzi_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HENGEDIANZI_XJZB, NES_WRITEONLY(nes_carts_state::heng_xjzb_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::heng_xjzb_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HES6IN1_BOARD, NES_WRITEONLY(nes_carts_state::hes6in1_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HES_BOARD, NES_WRITEONLY(nes_carts_state::hes_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ HOSENKAN_BOARD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::hosenkan_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ KAISER_KS7058, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks7058_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KAISER_KS7022, NES_NOACCESS, NES_NOACCESS, NES_READWRITE(nes_carts_state::ks7022_w, nes_carts_state::ks7022_r), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ KAISER_KS7032, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks7032_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ks7032_irq) },
{ KAISER_KS202, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks202_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ks7032_irq) },
{ KAISER_KS7017, NES_WRITEONLY(nes_carts_state::ks7017_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc_fds_irq) },
{ KAY_PANDAPRINCE, NES_READWRITE(nes_carts_state::kay_pp_l_w, nes_carts_state::kay_pp_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::kay_pp_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ KASING_BOARD, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::kasing_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ SACHEN_74LS374, NES_READWRITE(nes_carts_state::sachen_74x374_l_w, nes_carts_state::sachen_74x374_l_r), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_74LS374_A, NES_WRITEONLY(nes_carts_state::sachen_74x374a_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259A, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259B, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259C, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_8259D, NES_WRITEONLY(nes_carts_state::s8259_l_w), NES_WRITEONLY(nes_carts_state::s8259_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA009, NES_WRITEONLY(nes_carts_state::sa009_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA0036, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sa0036_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA0037, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sa0037_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA72007, NES_WRITEONLY(nes_carts_state::sa72007_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_SA72008, NES_WRITEONLY(nes_carts_state::sa72008_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_TCA01, NES_READONLY(nes_carts_state::tca01_l_r), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_TCU01, NES_WRITEONLY(nes_carts_state::tcu01_l_w), NES_WRITEONLY(nes_carts_state::tcu01_m_w), NES_WRITEONLY(nes_carts_state::tcu01_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SACHEN_TCU02, NES_READWRITE(nes_carts_state::tcu02_l_w, nes_carts_state::tcu02_l_r), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUBOR_TYPE0, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::subor0_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SUBOR_TYPE1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::subor1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ MAGICSERIES_MD, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::magics_md_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NANJING_BOARD, NES_READWRITE(nes_carts_state::nanjing_l_w, nes_carts_state::nanjing_l_r), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::nanjing_irq) },
{ NITRA_TDA, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::nitra_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ NTDEC_ASDER, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntdec_asder_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ NTDEC_FIGHTINGHERO, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ntdec_fh_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ OPENCORP_DAOU306, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::daou306_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ RCM_GS2015, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::gs2015_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ RCM_TETRISFAMILY, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::rcm_tf_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ REXSOFT_DBZ5, NES_READWRITE(nes_carts_state::rex_dbz_l_w, nes_carts_state::rex_dbz_l_r), NES_READONLY(nes_carts_state::rex_dbz_l_r), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ REXSOFT_SL1632, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::rex_sl1632_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ RUMBLESTATION_BOARD, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::rumblestation_m_w), NES_WRITEONLY(nes_carts_state::rumblestation_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ SOMERI_SL12, NES_WRITEONLY(nes_carts_state::someri_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::someri_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ SUPERGAME_BOOGERMAN, NES_WRITEONLY(nes_carts_state::sgame_boog_l_w), NES_WRITEONLY(nes_carts_state::sgame_boog_m_w), NES_WRITEONLY(nes_carts_state::sgame_boog_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ SUPERGAME_LIONKING, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sgame_lion_m_w), NES_WRITEONLY(nes_carts_state::sgame_lion_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ TENGEN_800008, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tengen_800008_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TENGEN_800032, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tengen_800032_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::tengen_800032_irq) },
{ TENGEN_800037, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::tengen_800037_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::tengen_800032_irq) },
{ TXC_22211A, NES_READWRITE(nes_carts_state::txc_22211_l_w, nes_carts_state::txc_22211_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_22211_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_22211B, NES_READWRITE(nes_carts_state::txc_22211_l_w, nes_carts_state::txc_22211_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_22211b_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_22211C, NES_READWRITE(nes_carts_state::txc_22211_l_w, nes_carts_state::txc_22211c_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_22211_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_TW, NES_WRITEONLY(nes_carts_state::txc_tw_l_w), NES_WRITEONLY(nes_carts_state::txc_tw_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ TXC_STRIKEWOLF, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_strikewolf_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ TXC_MXMDHTWO, NES_READONLY(nes_carts_state::txc_mxmdhtwo_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txc_mxmdhtwo_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_TYPE_A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_A_1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_B, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_C, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_D, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_E, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_F, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_f_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_G, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_g_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_H, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_h_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_TYPE_I, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) }, // this is MMC3 + possibly additional WRAM added in 0x5000-0x5fff
{ WAIXING_TYPE_J, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) }, // this is MMC3 + possibly additional WRAM added in 0x5000-0x5fff
{ WAIXING_SGZ, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_sgz_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ WAIXING_SGZLZ, NES_WRITEONLY(nes_carts_state::waixing_sgzlz_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_FFV, NES_WRITEONLY(nes_carts_state::waixing_ffv_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_ZS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_zs_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_DQ8, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_dq8_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ WAIXING_SECURITY, NES_WRITEONLY(nes_carts_state::waixing_sec_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WAIXING_SH2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) }, // this is MMC3 + possibly additional WRAM added in 0x5000-0x5fff
{ WAIXING_PS2, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::waixing_ps2_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_8237, NES_WRITEONLY(nes_carts_state::unl_8237_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_8237_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_AX5705, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_ax5705_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_CC21, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_cc21_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_KOF97, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_kof97_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_KS7057, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::ks7057_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_T230, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_t230_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::konami_irq) },
{ UNL_KOF96, NES_READWRITE(nes_carts_state::kof96_l_w, nes_carts_state::kof96_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::kof96_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_MK2, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::mk2_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_N625092, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::n625092_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_SC127, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sc127_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::sc127_irq) },
{ UNL_SMB2J, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::smb2j_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_SUPERFIGHTER3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_sf3_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_XZY, NES_WRITEONLY(nes_carts_state::unl_xzy_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_RACERMATE, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::unl_racmate_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_STUDYNGAME, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::sng32_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_603_5052, NES_READWRITE(nes_carts_state::unl_6035052_extra_w, nes_carts_state::unl_6035052_extra_r), NES_READWRITE(nes_carts_state::unl_6035052_extra_w, nes_carts_state::unl_6035052_extra_r), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_EDU2K, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::edu2k_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNL_SHJY3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::shjy3_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::shjy3_irq) },
{ UNL_H2288, NES_READWRITE(nes_carts_state::h2288_l_w, nes_carts_state::h2288_l_r), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::h2288_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ UNL_FS304, NES_WRITEONLY(nes_carts_state::unl_fs304_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
//
{ BTL_AISENSHINICOL, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_mariobaby_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_DRAGONNINJA, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_dn_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::btl_dn_irq) },
{ BTL_MARIOBABY, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_mariobaby_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_SMB2A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_smb2a_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::btl_smb2a_irq) },
{ BTL_SMB2B, NES_WRITEONLY(nes_carts_state::smb2jb_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::smb2jb_irq) },
{ BTL_SMB3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_smb3_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::btl_smb3_irq) },
{ BTL_SUPERBROS11, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_smb11_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BTL_TOBIDASE, NES_WRITEONLY(nes_carts_state::btl_tobi_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_PIKACHUY2K, NES_NOACCESS, NES_READWRITE(nes_carts_state::btl_pika_y2k_m_w, nes_carts_state::btl_pika_y2k_m_r), NES_WRITEONLY(nes_carts_state::btl_pika_y2k_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WHIRLWIND_2706, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::whirl2706_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_AISENSHINICOL, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_mariobaby_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_DRAGONNINJA, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_dn_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::btl_dn_irq) },
{ BTL_MARIOBABY, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_mariobaby_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_SMB2A, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_smb2a_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::btl_smb2a_irq) },
{ BTL_SMB2B, NES_WRITEONLY(nes_carts_state::smb2jb_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::smb2jb_irq) },
{ BTL_SMB3, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_smb3_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::btl_smb3_irq) },
{ BTL_SUPERBROS11, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::btl_smb11_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BTL_TOBIDASE, NES_WRITEONLY(nes_carts_state::btl_tobi_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BTL_PIKACHUY2K, NES_NOACCESS, NES_READWRITE(nes_carts_state::btl_pika_y2k_m_w, nes_carts_state::btl_pika_y2k_m_r), NES_WRITEONLY(nes_carts_state::btl_pika_y2k_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ WHIRLWIND_2706, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::whirl2706_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
//
{ BMC_190IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_190in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_A65AS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_a65as_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GS2004, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gs2004_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GS2013, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gs2013_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_NOVELDIAMOND, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::novel1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_9999999IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::novel2_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_T262, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_t262_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_WS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_ws_m_w), NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GKA, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gka_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GKB, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gkb_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPER_700IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_super700in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_36IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_36in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_21IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_21in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_150IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_150in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_35IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_35in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_64IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_64in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPERHIK_300IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_hik300_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPERGUN_20IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::supergun20in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_72IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_72in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_76IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_76in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPER_42IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_76in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_1200IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_1200in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_31IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_31in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_22GAMES, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_22g_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_20IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_20in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_110IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_110in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_64IN1NR, NES_WRITEONLY(nes_carts_state::bmc_64in1nr_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_64in1nr_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_S24IN1SC03, NES_WRITEONLY(nes_carts_state::bmc_s24in1sc03_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_HIK8IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_hik8_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_SUPERHIK_4IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_hik4in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_SUPERBIG_7IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_sbig7_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_MARIOPARTY_7IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_mario7in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_GOLD_7IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gold7in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_FAMILY_4646B, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_family4646_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_15IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_15in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_BALLGAMES_11IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_ball11_m_w), NES_WRITEONLY(nes_carts_state::bmc_ball11_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GOLDENCARD_6IN1, NES_WRITEONLY(nes_carts_state::bmc_gc6in1_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gc6in1_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_VT5201, NES_NOACCESS, NES_NOACCESS, NES_READWRITE(nes_carts_state::bmc_vt5201_w, nes_carts_state::bmc_vt5201_r), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_BENSHENG_BS5, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_bs5_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_810544, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_810544_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_NTD_03, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_ntd03_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_G63IN1, NES_NOACCESS, NES_NOACCESS, NES_READWRITE(nes_carts_state::bmc_gb63_w, nes_carts_state::bmc_gb63_r), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_FK23C, NES_WRITEONLY(nes_carts_state::fk23c_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fk23c_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_FK23CA, NES_WRITEONLY(nes_carts_state::fk23c_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fk23c_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_PJOY84, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::pjoy84_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_190IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_190in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_A65AS, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_a65as_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GS2004, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gs2004_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GS2013, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gs2013_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_NOVELDIAMOND, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::novel1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_9999999IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::novel2_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_T262, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_t262_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_WS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_ws_m_w), NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GKA, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gka_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GKB, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gkb_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPER_700IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_super700in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_36IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_36in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_21IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_21in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_150IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_150in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_35IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_35in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_64IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_64in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPERHIK_300IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_hik300_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPERGUN_20IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::supergun20in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_72IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_72in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_76IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_76in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_SUPER_42IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_76in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_1200IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_1200in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_31IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_31in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_22GAMES, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_22g_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_20IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_20in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_110IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_110in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_64IN1NR, NES_WRITEONLY(nes_carts_state::bmc_64in1nr_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_64in1nr_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_S24IN1SC03, NES_WRITEONLY(nes_carts_state::bmc_s24in1sc03_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_HIK8IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_hik8_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_SUPERHIK_4IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_hik4in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_SUPERBIG_7IN1, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_sbig7_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_MARIOPARTY_7IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_mario7in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_GOLD_7IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gold7in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_FAMILY_4646B, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_family4646_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_15IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_15in1_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_BALLGAMES_11IN1, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_ball11_m_w), NES_WRITEONLY(nes_carts_state::bmc_ball11_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_GOLDENCARD_6IN1, NES_WRITEONLY(nes_carts_state::bmc_gc6in1_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_gc6in1_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_VT5201, NES_NOACCESS, NES_NOACCESS, NES_READWRITE(nes_carts_state::bmc_vt5201_w, nes_carts_state::bmc_vt5201_r), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_BENSHENG_BS5, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_bs5_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_810544, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_810544_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_NTD_03, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::bmc_ntd03_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_G63IN1, NES_NOACCESS, NES_NOACCESS, NES_READWRITE(nes_carts_state::bmc_gb63_w, nes_carts_state::bmc_gb63_r), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ BMC_FK23C, NES_WRITEONLY(nes_carts_state::fk23c_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fk23c_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_FK23CA, NES_WRITEONLY(nes_carts_state::fk23c_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::fk23c_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
{ BMC_PJOY84, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::pjoy84_m_w), NES_WRITEONLY(nes_carts_state::txrom_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::mmc3_irq) },
//
{ FFE_MAPPER6, NES_WRITEONLY(nes_carts_state::mapper6_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::mapper6_w), NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ffe_irq) },
{ FFE_MAPPER8, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::mapper8_w), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ FFE_MAPPER17, NES_WRITEONLY(nes_carts_state::mapper17_l_w), NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ffe_irq) },
{ FFE_MAPPER6, NES_WRITEONLY(nes_carts_state::mapper6_l_w), NES_NOACCESS, NES_WRITEONLY(nes_carts_state::mapper6_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ffe_irq) },
{ FFE_MAPPER8, NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(nes_carts_state::mapper8_w), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ FFE_MAPPER17, NES_WRITEONLY(nes_carts_state::mapper17_l_w), NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK(nes_state::ffe_irq) },
// for debug and development
{ UNKNOWN_BOARD, NES_READWRITE(nes_carts_state::dummy_l_w, nes_carts_state::dummy_l_r), NES_READWRITE(nes_carts_state::dummy_m_w, nes_carts_state::dummy_m_r), NES_READWRITE(nes_carts_state::dummy_w, nes_carts_state::dummy_r), NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNKNOWN_BOARD, NES_READWRITE(nes_carts_state::dummy_l_w, nes_carts_state::dummy_l_r), NES_READWRITE(nes_carts_state::dummy_m_w, nes_carts_state::dummy_m_r), NES_READWRITE(nes_carts_state::dummy_w, nes_carts_state::dummy_r), NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
//
{ UNSUPPORTED_BOARD, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
{ UNSUPPORTED_BOARD, NES_NOACCESS, NES_NOACCESS, NES_NOACCESS, NES_LATCH_NULL, NES_SCANLINE_NULL, NES_HBLANK_NULL },
//
};
@ -12086,7 +12085,7 @@ void nes_state::pcb_handlers_setup()
m_mmc_read_low = read8_delegate();
m_mmc_read_mid = read8_delegate(); // in progress
m_mmc_read = read8_delegate(); // in progress
m_ppu->set_latch(NULL);
m_ppu->set_latch(ppu2c0x_latch_delegate());
}
m_mmc3_prg_cb = mmc3_base_prg_cb;