mirror of
https://github.com/holub/mame
synced 2025-06-05 12:26:35 +03:00
bus/nes: Moved gc6in1 games over to 8237 board and removed old code. (#8527)
This commit is contained in:
parent
cbc2489dfc
commit
bedd9f6ab0
13
hash/nes.xml
13
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><unknown></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><pirate></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>
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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 },
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user