diff --git a/src/mame/includes/playch10.h b/src/mame/includes/playch10.h index 1d4eea3446d..9d0f0b188cd 100644 --- a/src/mame/includes/playch10.h +++ b/src/mame/includes/playch10.h @@ -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 -----------*/ diff --git a/src/mame/machine/playch10.c b/src/mame/machine/playch10.c index 0c77b71576b..894ef3d5f16 100644 --- a/src/mame/machine/playch10.c +++ b/src/mame/machine/playch10.c @@ -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(); - - 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); diff --git a/src/mame/video/ppu2c0x.c b/src/mame/video/ppu2c0x.c index 18469676e70..749a44a77d3 100644 --- a/src/mame/video/ppu2c0x.c +++ b/src/mame/video/ppu2c0x.c @@ -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()) diff --git a/src/mame/video/ppu2c0x.h b/src/mame/video/ppu2c0x.h index 83769e64a3f..922926508f4 100644 --- a/src/mame/video/ppu2c0x.h +++ b/src/mame/video/ppu2c0x.h @@ -113,6 +113,7 @@ typedef device_delegate ppu2c0x_sc typedef device_delegate ppu2c0x_hblank_delegate; typedef device_delegate ppu2c0x_nmi_delegate; typedef device_delegate ppu2c0x_vidaccess_delegate; +typedef device_delegate 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 */ diff --git a/src/mess/includes/nes.h b/src/mess/includes/nes.h index 11e13d7f91a..3fc965110ff 100644 --- a/src/mess/includes/nes.h +++ b/src/mess/includes/nes.h @@ -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; diff --git a/src/mess/machine/nes_pcb.c b/src/mess/machine/nes_pcb.c index da4c620d67c..1b5b6b2dbc0 100644 --- a/src/mess/machine/nes_pcb.c +++ b/src/mess/machine/nes_pcb.c @@ -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(); 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;