void nes_g101_device::write_h(offs_t offset, uint8_t data) { LOG_MMC(("g101 write_h, offset: %04x, data: %02x\n", offset, data)); switch (offset & 0x7000) { case 0x0000: if (m_latch) { prg8_89(0xfe); prg8_cd(data & 0x1f); } else { prg8_89(data & 0x1f); prg8_cd(0xfe); } break; case 0x1000: m_latch = BIT(data, 1); if (m_pcb_ctrl_mirror) set_nt_mirroring(BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); break; case 0x2000: prg8_ab(data & 0x1f); break; case 0x3000: chr1_x(offset & 0x07, data & 0x7f, CHRROM); break; } }
void nes_h3001_device::write_h(offs_t offset, uint8_t data) { LOG_MMC(("h3001 write_h, offset %04x, data: %02x\n", offset, data)); switch (offset & 0x7fff) { case 0x0000: prg8_89(data); break; case 0x1001: set_nt_mirroring(BIT(data, 7) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); break; case 0x1003: m_irq_enable = data & 0x80; set_irq_line(CLEAR_LINE); break; case 0x1004: m_irq_count = m_irq_count_latch; set_irq_line(CLEAR_LINE); break; case 0x1005: m_irq_count_latch = (m_irq_count_latch & 0x00ff) | (data << 8); break; case 0x1006: m_irq_count_latch = (m_irq_count_latch & 0xff00) | data; break; case 0x2000: prg8_ab(data); break; case 0x3000: case 0x3001: case 0x3002: case 0x3003: case 0x3004: case 0x3005: case 0x3006: case 0x3007: chr1_x(offset & 0x07, data, CHRROM); break; case 0x4000: prg8_cd(data); break; default: break; } }
void nes_hengg_shjy3_device::update_banks() { prg8_89(m_mmc_prg_bank[0]); prg8_ab(m_mmc_prg_bank[1]); for (int i = 0; i < 8; i++) { UINT8 chr_bank = m_mmc_vrom_bank[i] | (m_mmc_extra_bank[i] << 4); if (m_mmc_vrom_bank[i] == 0xc8) { m_chr_mode = 0; continue; } else if (m_mmc_vrom_bank[i] == 0x88) { m_chr_mode = 1; continue; } if ((m_mmc_vrom_bank[i] == 4 || m_mmc_vrom_bank[i] == 5) && !m_chr_mode) chr1_x(i, chr_bank & 1, CHRRAM); else chr1_x(i, chr_bank, CHRROM); } }
void nes_tengen032_device::chr_cb(int start, int bank, int source) { chr1_x(start, bank, source); }
void nes_waixing_g_device::chr_cb(int start, int bank, int source) { int chr_src = (bank < 0x08) ? CHRRAM : CHRROM; chr1_x(start, bank, chr_src); }
void nes_waixing_f_device::chr_cb(int start, int bank, int source) { chr1_x(start, bank, CHRRAM); }
void nes_waixing_c_device::chr_cb(int start, int bank, int source) { int chr_src = ((bank == 0x08) || (bank == 0x09) || (bank == 0x0a) || (bank == 0x0b)) ? CHRRAM : CHRROM; chr1_x(start, bank, chr_src); }
void nes_waixing_b_device::chr_cb(int start, int bank, int source) { int chr_src = BIT(bank, 7) ? CHRRAM : CHRROM; chr1_x(start, bank, chr_src); }
/* Ji Jia Zhan Shi only works with this */ void nes_waixing_a1_device::chr_cb(int start, int bank, int source) { int chr_src = ((bank == 8) || (bank == 9)) ? CHRRAM : CHRROM; chr1_x(start, bank, chr_src); }
// base MMC3 simply calls chr1_x void nes_txrom_device::chr_cb( int start, int bank, int source ) { chr1_x(start, bank, source); }