From bedd9f6ab0981391658c680a15cbfd5b2a50381e Mon Sep 17 00:00:00 2001 From: 0kmg <9137159+0kmg@users.noreply.github.com> Date: Sat, 4 Sep 2021 05:22:51 -0800 Subject: bus/nes: Moved gc6in1 games over to 8237 board and removed old code. (#8527) --- hash/nes.xml | 13 ++-- src/devices/bus/nes/mmc3_clones.cpp | 150 ------------------------------------ src/devices/bus/nes/mmc3_clones.h | 25 ------ src/devices/bus/nes/nes_carts.cpp | 1 - src/devices/bus/nes/nes_pcb.hxx | 1 - src/devices/bus/nes/nes_slot.h | 2 +- 6 files changed, 6 insertions(+), 186 deletions(-) diff --git a/hash/nes.xml b/hash/nes.xml index 723fe81e893..261bba1bd72 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -62885,12 +62885,12 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx - + Earthworm Jim 2 (Asia, Hacked?) 19?? <unknown> - + @@ -62921,8 +62921,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx 19?? SuperGame - - + @@ -76686,8 +76685,7 @@ be better to redump them properly. --> 19?? Super Games - - + @@ -81347,8 +81345,7 @@ be better to redump them properly. --> 19?? <pirate> - - + diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp index 7bf1a4ebaf4..d05ab7154f0 100644 --- a/src/devices/bus/nes/mmc3_clones.cpp +++ b/src/devices/bus/nes/mmc3_clones.cpp @@ -69,7 +69,6 @@ DEFINE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device, "nes_bmc_mario7i DEFINE_DEVICE_TYPE(NES_BMC_F15, nes_bmc_f15_device, "nes_bmc_f15", "NES Cart BMC F-15 PCB") DEFINE_DEVICE_TYPE(NES_BMC_GN45, nes_bmc_gn45_device, "nes_bmc_gn45", "NES Cart BMC GN-45 PCB") DEFINE_DEVICE_TYPE(NES_BMC_GOLD7IN1, nes_bmc_gold7in1_device, "nes_bmc_gold7in1", "NES Cart BMC Golden 7 in 1 PCB") -DEFINE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device, "nes_bmc_gc6in1", "NES Cart BMC Golden Card 6 in 1 PCB") DEFINE_DEVICE_TYPE(NES_BMC_K3006, nes_bmc_k3006_device, "nes_bmc_k3006", "NES Cart BMC K-3006 PCB") DEFINE_DEVICE_TYPE(NES_BMC_411120C, nes_bmc_411120c_device, "nes_bmc_411120c", "NES Cart BMC 411120C PCB") DEFINE_DEVICE_TYPE(NES_BMC_830118C, nes_bmc_830118c_device, "nes_bmc_830118c", "NES Cart BMC 830118C PCB") @@ -304,11 +303,6 @@ nes_bmc_gold7in1_device::nes_bmc_gold7in1_device(const machine_config &mconfig, { } -nes_bmc_gc6in1_device::nes_bmc_gc6in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nes_txrom_device(mconfig, NES_BMC_GC6IN1, tag, owner, clock) -{ -} - nes_bmc_k3006_device::nes_bmc_k3006_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : nes_txrom_device(mconfig, NES_BMC_K3006, tag, owner, clock) { @@ -688,25 +682,6 @@ void nes_bmc_gold7in1_device::pcb_reset() mmc3_common_initialize(0x1f, 0xff, 0); } -void nes_bmc_gc6in1_device::device_start() -{ - mmc3_start(); - save_item(NAME(m_reg)); -} - -void nes_bmc_gc6in1_device::pcb_reset() -{ - m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - - m_reg[0] = 0x00; - m_reg[1] = 0xff; - m_reg[2] = 0x03; - m_reg[3] = 0; - mmc3_common_initialize(0xff, 0xff, 0); - set_prg(m_prg_base, m_prg_mask); - set_chr(m_chr_source, m_chr_base, m_chr_mask); -} - void nes_bmc_k3006_device::pcb_reset() { m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; @@ -2407,131 +2382,6 @@ void nes_bmc_gold7in1_device::write_m(offs_t offset, uint8_t data) m_prgram[offset] = data; } -/*------------------------------------------------- - - BMC-GOLDENCARD-6IN1 - - Known Boards: Unknown Bootleg Multigame Board - Games: Golden Card 6 in 1 - - MMC3 clone - - iNES: mapper 217 - - In MESS: Supported. - - -------------------------------------------------*/ - -void nes_bmc_gc6in1_device::prg_cb(int start, int bank) -{ - if (m_reg[1] & 0x08) - bank &= 0x1f; - else - { - bank &= 0x0f; - bank |= m_reg[1] & 0x10; - } - - prg8_x(start, bank | ((m_reg[1] & 0x03) << 5)); -} - -void nes_bmc_gc6in1_device::chr_cb(int start, int bank, int source) -{ - if (!(m_reg[1] & 0x08)) - bank = ((m_reg[1] & 0x10) << 3) | (bank & 0x7f); - - - bank |= ((m_reg[1] << 6) & 0x100); - chr1_x(start, ((m_reg[1] & 0x03) << 8) | bank, source); -} - -void nes_bmc_gc6in1_device::write_l(offs_t offset, uint8_t data) -{ - uint8_t bank; - LOG_MMC(("bmc_gc6in1 write_l, offset: %04x, data: %02x\n", offset, data)); - offset += 0x100; - - if (offset == 0x1000) - { - m_reg[0] = data; - if (data & 0x80) - { - bank = (data & 0x0f) | ((m_reg[1] & 0x03) << 4); - prg16_89ab(bank); - prg16_cdef(bank); - } - else - set_prg(m_prg_base, m_prg_mask); - } - else if (offset == 0x1001) - { - m_reg[1] = data; - set_prg(m_prg_base, m_prg_mask); - } - else if (offset == 0x1007) - { - m_reg[2] = data; - } -} - -void nes_bmc_gc6in1_device::write_h(offs_t offset, uint8_t data) -{ - uint8_t cmd; - static const uint8_t conv_table[8] = {0, 6, 3, 7, 5, 2, 4, 1}; - LOG_MMC(("bmc_gc6in1 write_h, offset: %04x, data: %02x\n", offset, data)); - - if (!m_reg[2]) - { - // in this case we act like MMC3, only with alt prg/chr handlers - txrom_write(offset, data); - } - else - { - switch (offset & 0x6001) - { - case 0x0000: - txrom_write(0x4000, data); - break; - - case 0x0001: - data = (data & 0xc0) | conv_table[data & 0x07]; - m_reg[3] = 1; - txrom_write(0x0000, data); - break; - - case 0x2000: - cmd = m_latch & 0x07; - if (m_reg[3]) - { - m_reg[3] = 0; - switch (cmd) - { - case 0: case 1: // these do not need to be separated: we take care of them in set_chr! - case 2: case 3: case 4: case 5: - m_mmc_vrom_bank[cmd] = data; - set_chr(m_chr_source, m_chr_base, m_chr_mask); - break; - case 6: - case 7: - m_mmc_prg_bank[cmd - 6] = data; - set_prg(m_prg_base, m_prg_mask); - break; - } - } - break; - - - case 0x2001: - set_nt_mirroring(BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); - break; - - default: - txrom_write(offset, data); - break; - } - } -} - /*------------------------------------------------- BMC-K-3006 diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h index 551d5552ebb..034c93a1985 100644 --- a/src/devices/bus/nes/mmc3_clones.h +++ b/src/devices/bus/nes/mmc3_clones.h @@ -745,30 +745,6 @@ private: }; -// ======================> nes_bmc_gc6in1_device - -class nes_bmc_gc6in1_device : public nes_txrom_device -{ -public: - // construction/destruction - nes_bmc_gc6in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual void write_l(offs_t offset, uint8_t data) override; - virtual void write_h(offs_t offset, uint8_t data) override; - virtual void prg_cb(int start, int bank) override; - virtual void chr_cb(int start, int bank, int source) override; - - virtual void pcb_reset() override; - -protected: - // device-level overrides - virtual void device_start() override; - -private: - uint8_t m_reg[4]; -}; - - // ======================> nes_bmc_k3006_device class nes_bmc_k3006_device : public nes_txrom_device @@ -941,7 +917,6 @@ DECLARE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device) DECLARE_DEVICE_TYPE(NES_BMC_F15, nes_bmc_f15_device) DECLARE_DEVICE_TYPE(NES_BMC_GN45, nes_bmc_gn45_device) DECLARE_DEVICE_TYPE(NES_BMC_GOLD7IN1, nes_bmc_gold7in1_device) -DECLARE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device) DECLARE_DEVICE_TYPE(NES_BMC_K3006, nes_bmc_k3006_device) DECLARE_DEVICE_TYPE(NES_BMC_411120C, nes_bmc_411120c_device) DECLARE_DEVICE_TYPE(NES_BMC_830118C, nes_bmc_830118c_device) diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index 329f9691e29..93945a65522 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -436,7 +436,6 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("bmc_f15", NES_BMC_F15); device.option_add_internal("bmc_gn45", NES_BMC_GN45); device.option_add_internal("bmc_gold7in1", NES_BMC_GOLD7IN1); - device.option_add_internal("bmc_gc6in1", NES_BMC_GC6IN1); device.option_add_internal("bmc_411120c", NES_BMC_411120C); device.option_add_internal("bmc_830118c", NES_BMC_830118C); device.option_add_internal("bmc_830832c", NES_BMC_830832C); diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index 7750f1d6391..2524a9bfed5 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -314,7 +314,6 @@ static const nes_pcb pcb_list[] = { "bmc_f15", BMC_F15 }, { "bmc_gn45", BMC_GN45 }, { "bmc_gold7in1", BMC_GOLD_7IN1 }, - { "bmc_gc6in1", BMC_GOLDENCARD_6IN1 }, { "bmc_411120c", BMC_411120C }, { "bmc_830118c", BMC_830118C }, { "bmc_830832c", BMC_830832C }, diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index e51cdc5db08..da2ef65009c 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -92,7 +92,7 @@ enum BMC_MARIOPARTY_7IN1, BMC_GOLD_7IN1, BMC_SUPER_700IN1, BMC_FAMILY_4646, BMC_36IN1, BMC_21IN1, BMC_150IN1, BMC_35IN1, BMC_64IN1, BMC_8IN1, BMC_15IN1, BMC_SUPERHIK_300IN1, BMC_SUPERGUN_20IN1, - BMC_GOLDENCARD_6IN1, BMC_72IN1, BMC_SUPER_42IN1, BMC_76IN1, + BMC_72IN1, BMC_SUPER_42IN1, BMC_76IN1, BMC_31IN1, BMC_22GAMES, BMC_20IN1, BMC_70IN1, BMC_500IN1, BMC_800IN1, BMC_1200IN1, BMC_GKA, BMC_GKB, BMC_GKCXIN1, BMC_VT5201, BMC_BENSHIENG, -- cgit v1.2.3