summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author 0kmg <9137159+0kmg@users.noreply.github.com>2021-09-04 05:22:51 -0800
committer GitHub <noreply@github.com>2021-09-04 09:22:51 -0400
commitbedd9f6ab0981391658c680a15cbfd5b2a50381e (patch)
tree32eb315e47ad581ad7b03247c40154e1d7d7ad4e
parentcbc2489dfc3a3f6b99f2537dcd2a2708b2dc2ba5 (diff)
bus/nes: Moved gc6in1 games over to 8237 board and removed old code. (#8527)
-rw-r--r--hash/nes.xml13
-rw-r--r--src/devices/bus/nes/mmc3_clones.cpp150
-rw-r--r--src/devices/bus/nes/mmc3_clones.h25
-rw-r--r--src/devices/bus/nes/nes_carts.cpp1
-rw-r--r--src/devices/bus/nes/nes_pcb.hxx1
-rw-r--r--src/devices/bus/nes/nes_slot.h2
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
</software>
<!-- This seems to be a slightly modified extract from Golden Card 6 in 1. -->
- <software name="ejim2d" cloneof="ejim2" supported="partial">
+ <software name="ejim2d" cloneof="ejim2">
<description>Earthworm Jim 2 (Asia, Hacked?)</description>
<year>19??</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_gc6in1" />
+ <feature name="slot" value="8237" />
<dataarea name="chr" size="262144">
<rom name="earth worm jim 2 (unl)[no memu by maxzhou88].chr" size="262144" crc="66c57a10" sha1="0f6a5f2c75037a2213629ea45d79dcd0acacf48f" offset="00000" status="baddump" />
</dataarea>
@@ -62921,8 +62921,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<year>19??</year>
<publisher>SuperGame</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_gc6in1" />
- <feature name="pcb" value="BMC-GOLDENCARD-6IN1" />
+ <feature name="slot" value="8237" />
<dataarea name="chr" size="262144">
<rom name="earthworm jim 2 (unl) (supergame).chr" size="262144" crc="66c57a10" sha1="0f6a5f2c75037a2213629ea45d79dcd0acacf48f" offset="00000" status="baddump" />
</dataarea>
@@ -76686,8 +76685,7 @@ be better to redump them properly. -->
<year>19??</year>
<publisher>Super Games</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_gc6in1" />
- <feature name="pcb" value="BMC-GOLDENCARD-6IN1" />
+ <feature name="slot" value="8237" />
<dataarea name="chr" size="262144">
<rom name="mortal kombat 3 (unl) (supergame).chr" size="262144" crc="a9dfc575" sha1="d6f89cd05070dff0ed6efbe824798a760a87fa15" offset="00000" status="baddump" />
</dataarea>
@@ -81347,8 +81345,7 @@ be better to redump them properly. -->
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_gc6in1" />
- <feature name="pcb" value="BMC-GOLDENCARD-6IN1" />
+ <feature name="slot" value="8237" />
<dataarea name="chr" size="1048576">
<rom name="golden card 6 in 1 (unl).chr" size="1048576" crc="8ddf8be7" sha1="24614a448d7da088844239ea57b68283694cc984" offset="00000" status="baddump" />
</dataarea>
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;
@@ -2409,131 +2384,6 @@ void nes_bmc_gold7in1_device::write_m(offs_t offset, uint8_t 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
Games: 21 in 1
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,