summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/mmc3_clones.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/mmc3_clones.cpp')
-rw-r--r--src/devices/bus/nes/mmc3_clones.cpp37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp
index 8aac9112b91..42ff5edd7c9 100644
--- a/src/devices/bus/nes/mmc3_clones.cpp
+++ b/src/devices/bus/nes/mmc3_clones.cpp
@@ -278,8 +278,8 @@ nes_bmc_8in1_device::nes_bmc_8in1_device(const machine_config &mconfig, const ch
{
}
-nes_bmc_15in1_device::nes_bmc_15in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_15IN1, tag, owner, clock)
+nes_bmc_15in1_device::nes_bmc_15in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : nes_txrom_device(mconfig, NES_BMC_15IN1, tag, owner, clock), m_jumper(0)
{
}
@@ -673,10 +673,7 @@ void nes_bmc_8in1_device::pcb_reset()
void nes_bmc_15in1_device::pcb_reset()
{
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
-
mmc3_common_initialize(0x1f, 0xff, 0);
- m_prg_base = 0x10; // this board has a diff prg_base
- set_prg(m_prg_base, m_prg_mask);
}
void nes_bmc_sbig7_device::pcb_reset()
@@ -2326,30 +2323,32 @@ void nes_bmc_8in1_device::write_h(offs_t offset, u8 data)
/*-------------------------------------------------
- BMC-15IN1
+ BMC-15IN1 (PCB JC-016-2?)
- Unknown Bootleg Multigame Board
Games: 3 in 1, 15 in 1
- iNES: mapper 205, MMC3 clone
+ MMC3 clone with banking for multigame menu.
+
+ iNES: mapper 205
- In MESS: Supported.
+ In MAME: Supported.
-------------------------------------------------*/
-void nes_bmc_15in1_device::write_m(offs_t offset, uint8_t data)
+void nes_bmc_15in1_device::write_m(offs_t offset, u8 data)
{
LOG_MMC(("bmc_15in1 write_m, offset: %04x, data: %02x\n", offset, data));
- if (offset & 0x0800)
- {
- m_prg_base = (data & 0x03) << 4;
- m_prg_mask = (data & 0x02) ? 0x0f : 0x1f;
- m_chr_base = (data & 0x03) << 7;
- m_chr_mask = (data & 0x02) ? 0x7f : 0xff;
- set_prg(m_prg_base, m_prg_mask);
- set_chr(m_chr_source, m_chr_base, m_chr_mask);
- }
+ if (data & 1)
+ data |= m_jumper; // TODO: add jumper settings, m_jumper is 0 for now
+
+ m_prg_base = (data & 0x03) << 4;
+ m_prg_mask = 0x1f >> BIT(data, 1);
+ set_prg(m_prg_base, m_prg_mask);
+
+ m_chr_base = m_prg_base << 3;
+ m_chr_mask = 0xff >> BIT(data, 1);
+ set_chr(m_chr_source, m_chr_base, m_chr_mask);
}
/*-------------------------------------------------