mirror of
https://github.com/holub/mame
synced 2025-07-06 02:18:09 +03:00
bus/nes: Added support of a pair of 4-in-1 multicarts. (#8441)
New working software list additions (nes.xml) ----------------------------------- 4 in 1 (K-3131GS) [anonymous] 4 in 1 (K-3131SS) [anonymous]
This commit is contained in:
parent
ee07073837
commit
caf6dd6b24
36
hash/nes.xml
36
hash/nes.xml
@ -79233,6 +79233,42 @@ be better to redump them properly. -->
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
<software name="mc_4k1gs">
|
||||||
|
<description>4 in 1 (K-3131GS)</description>
|
||||||
|
<year>199?</year>
|
||||||
|
<publisher><pirate></publisher>
|
||||||
|
<part name="cart" interface="nes_cart">
|
||||||
|
<feature name="slot" value="bmc_gn45" />
|
||||||
|
<dataarea name="prg" size="524288">
|
||||||
|
<rom name="4-in-1 (k-3131gs, gn-45).prg" size="524288" crc="dc835c48" sha1="ef17c86e521110637b443437fca269f2e3f2385f" status="baddump" />
|
||||||
|
</dataarea>
|
||||||
|
<dataarea name="chr" size="524288">
|
||||||
|
<rom name="4-in-1 (k-3131gs, gn-45).chr" size="524288" crc="b551ccdb" sha1="fc17c81a23bd55b9195d8f166aad313f29067ed1" status="baddump" />
|
||||||
|
</dataarea>
|
||||||
|
<!-- 8k WRAM on cartridge -->
|
||||||
|
<dataarea name="wram" size="8192">
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
|
<software name="mc_4k1ss">
|
||||||
|
<description>4 in 1 (K-3131SS)</description>
|
||||||
|
<year>199?</year>
|
||||||
|
<publisher><pirate></publisher>
|
||||||
|
<part name="cart" interface="nes_cart">
|
||||||
|
<feature name="slot" value="bmc_gn45" />
|
||||||
|
<dataarea name="prg" size="524288">
|
||||||
|
<rom name="4-in-1 (k-3131ss, gn-45).prg" size="524288" crc="466bdb58" sha1="354116730efa2131172ccca3793a065abee6026e" status="baddump" />
|
||||||
|
</dataarea>
|
||||||
|
<dataarea name="chr" size="524288">
|
||||||
|
<rom name="4-in-1 (k-3131ss, gn-45).chr" size="524288" crc="08d7aa1b" sha1="f78aa3ff4345a31ece3b26cacdb86d437c5c0e17" status="baddump" />
|
||||||
|
</dataarea>
|
||||||
|
<!-- 8k WRAM on cartridge -->
|
||||||
|
<dataarea name="wram" size="8192">
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
<software name="mc_4kt34" supported="no">
|
<software name="mc_4kt34" supported="no">
|
||||||
<description>4 in 1 (KT-3445AB)</description>
|
<description>4 in 1 (KT-3445AB)</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
|
@ -61,6 +61,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_HIK8, nes_bmc_hik8_device, "nes_bmc_hik8",
|
|||||||
DEFINE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device, "nes_bmc_hik4", "NES Cart BMC HIK 4 in 1 PCB")
|
DEFINE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device, "nes_bmc_hik4", "NES Cart BMC HIK 4 in 1 PCB")
|
||||||
DEFINE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device, "nes_bmc_mario7in1", "NES Cart BMC Mario 7 in 1 PCB")
|
DEFINE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device, "nes_bmc_mario7in1", "NES Cart BMC Mario 7 in 1 PCB")
|
||||||
DEFINE_DEVICE_TYPE(NES_BMC_F15, nes_bmc_f15_device, "nes_bmc_f15", "NES Cart BMC F-15 PCB")
|
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_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_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_K3006, nes_bmc_k3006_device, "nes_bmc_k3006", "NES Cart BMC K-3006 PCB")
|
||||||
@ -236,6 +237,11 @@ nes_bmc_f15_device::nes_bmc_f15_device(const machine_config &mconfig, const char
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nes_bmc_gn45_device::nes_bmc_gn45_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||||
|
: nes_txrom_device(mconfig, NES_BMC_GN45, tag, owner, clock), m_lock(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
nes_bmc_gold7in1_device::nes_bmc_gold7in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
nes_bmc_gold7in1_device::nes_bmc_gold7in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: nes_txrom_device(mconfig, NES_BMC_GOLD7IN1, tag, owner, clock), m_reg_written(0)
|
: nes_txrom_device(mconfig, NES_BMC_GOLD7IN1, tag, owner, clock), m_reg_written(0)
|
||||||
{
|
{
|
||||||
@ -590,6 +596,20 @@ void nes_bmc_f15_device::pcb_reset()
|
|||||||
prg16_cdef(0);
|
prg16_cdef(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nes_bmc_gn45_device::device_start()
|
||||||
|
{
|
||||||
|
mmc3_start();
|
||||||
|
save_item(NAME(m_lock));
|
||||||
|
}
|
||||||
|
|
||||||
|
void nes_bmc_gn45_device::pcb_reset()
|
||||||
|
{
|
||||||
|
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||||
|
|
||||||
|
m_lock = false;
|
||||||
|
mmc3_common_initialize(0x0f, 0x7f, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void nes_bmc_gold7in1_device::device_start()
|
void nes_bmc_gold7in1_device::device_start()
|
||||||
{
|
{
|
||||||
mmc3_start();
|
mmc3_start();
|
||||||
@ -2348,6 +2368,37 @@ void nes_fcgj8in1_device::write_m(offs_t offset, u8 data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------------
|
||||||
|
|
||||||
|
BMC-GN-45
|
||||||
|
|
||||||
|
Games: 4 in 1 (K-3131GS and K-3131SS)
|
||||||
|
|
||||||
|
MMC3 clone with banking for multigame menu.
|
||||||
|
|
||||||
|
NES 2.0: mapper 366
|
||||||
|
|
||||||
|
In MAME: Supported.
|
||||||
|
|
||||||
|
-------------------------------------------------*/
|
||||||
|
|
||||||
|
void nes_bmc_gn45_device::write_m(offs_t offset, u8 data)
|
||||||
|
{
|
||||||
|
LOG_MMC(("bmc_gn45 write_m, offset: %04x, data: %02x\n", offset, data));
|
||||||
|
|
||||||
|
nes_txrom_device::write_m(offset, data); // write to overlapping WRAM
|
||||||
|
|
||||||
|
if (!m_lock)
|
||||||
|
{
|
||||||
|
m_prg_base = offset & 0x70;
|
||||||
|
set_prg(m_prg_base, m_prg_mask);
|
||||||
|
m_chr_base = m_prg_base << 3;
|
||||||
|
set_chr(m_chr_source, m_chr_base, m_chr_mask);
|
||||||
|
|
||||||
|
m_lock = BIT(offset, 7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
|
|
||||||
BMC-GOLD-7IN1
|
BMC-GOLD-7IN1
|
||||||
|
@ -627,6 +627,27 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// ======================> nes_bmc_gn45_device
|
||||||
|
|
||||||
|
class nes_bmc_gn45_device : public nes_txrom_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
nes_bmc_gn45_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||||
|
|
||||||
|
virtual void write_m(offs_t offset, u8 data) override;
|
||||||
|
|
||||||
|
virtual void pcb_reset() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_lock;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// ======================> nes_bmc_gold7in1_device
|
// ======================> nes_bmc_gold7in1_device
|
||||||
|
|
||||||
class nes_bmc_gold7in1_device : public nes_txrom_device
|
class nes_bmc_gold7in1_device : public nes_txrom_device
|
||||||
@ -822,6 +843,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_HIK8, nes_bmc_hik8_device)
|
|||||||
DECLARE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device)
|
DECLARE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device)
|
||||||
DECLARE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device)
|
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_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_GOLD7IN1, nes_bmc_gold7in1_device)
|
||||||
DECLARE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_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_K3006, nes_bmc_k3006_device)
|
||||||
|
@ -429,6 +429,7 @@ void nes_cart(device_slot_interface &device)
|
|||||||
device.option_add_internal("bmc_hik4in1", NES_BMC_HIK4);
|
device.option_add_internal("bmc_hik4in1", NES_BMC_HIK4);
|
||||||
device.option_add_internal("bmc_mario7in1", NES_BMC_MARIO7IN1);
|
device.option_add_internal("bmc_mario7in1", NES_BMC_MARIO7IN1);
|
||||||
device.option_add_internal("bmc_f15", NES_BMC_F15);
|
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_gold7in1", NES_BMC_GOLD7IN1);
|
||||||
device.option_add_internal("bmc_gc6in1", NES_BMC_GC6IN1);
|
device.option_add_internal("bmc_gc6in1", NES_BMC_GC6IN1);
|
||||||
device.option_add_internal("bmc_411120c", NES_BMC_411120C);
|
device.option_add_internal("bmc_411120c", NES_BMC_411120C);
|
||||||
|
@ -401,7 +401,7 @@ static const nes_mmc mmc_list[] =
|
|||||||
// 363 variant of mapper 358?
|
// 363 variant of mapper 358?
|
||||||
// 364 JY-007, is this ttoons6 in nes.xml?
|
// 364 JY-007, is this ttoons6 in nes.xml?
|
||||||
// 365 is this asderp95 in nes.xml?
|
// 365 is this asderp95 in nes.xml?
|
||||||
// 366 K-3131GS and K-3131SS 4-in-1 carts
|
{ 366, BMC_GN45 },
|
||||||
// 367 7-in-1 cart that is a close variant of mapper 205
|
// 367 7-in-1 cart that is a close variant of mapper 205
|
||||||
{ 368, BTL_YUNG08 }, // SMB2 FDS conversion
|
{ 368, BTL_YUNG08 }, // SMB2 FDS conversion
|
||||||
// 369 Super Mario Bros Party multicart
|
// 369 Super Mario Bros Party multicart
|
||||||
|
@ -306,6 +306,7 @@ static const nes_pcb pcb_list[] =
|
|||||||
{ "bmc_hik4in1", BMC_SUPERHIK_4IN1 },
|
{ "bmc_hik4in1", BMC_SUPERHIK_4IN1 },
|
||||||
{ "bmc_mario7in1", BMC_MARIOPARTY_7IN1 },
|
{ "bmc_mario7in1", BMC_MARIOPARTY_7IN1 },
|
||||||
{ "bmc_f15", BMC_F15 },
|
{ "bmc_f15", BMC_F15 },
|
||||||
|
{ "bmc_gn45", BMC_GN45 },
|
||||||
{ "bmc_gold7in1", BMC_GOLD_7IN1 },
|
{ "bmc_gold7in1", BMC_GOLD_7IN1 },
|
||||||
{ "bmc_gc6in1", BMC_GOLDENCARD_6IN1 },
|
{ "bmc_gc6in1", BMC_GOLDENCARD_6IN1 },
|
||||||
{ "bmc_411120c", BMC_411120C },
|
{ "bmc_411120c", BMC_411120C },
|
||||||
|
@ -86,7 +86,7 @@ enum
|
|||||||
TXC_22211, TXC_DUMARACING, TXC_MJBLOCK,
|
TXC_22211, TXC_DUMARACING, TXC_MJBLOCK,
|
||||||
TXC_COMMANDOS, TXC_TW, TXC_STRIKEW,
|
TXC_COMMANDOS, TXC_TW, TXC_STRIKEW,
|
||||||
// Multigame Carts
|
// Multigame Carts
|
||||||
BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_F15,
|
BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_F15, BMC_GN45,
|
||||||
BMC_HIK8IN1, BMC_NOVEL1, BMC_NOVEL2, BMC_S24IN1SC03, BMC_T262,
|
BMC_HIK8IN1, BMC_NOVEL1, BMC_NOVEL2, BMC_S24IN1SC03, BMC_T262,
|
||||||
BMC_WS, BMC_SUPERBIG_7IN1, BMC_SUPERHIK_4IN1, BMC_BALLGAMES_11IN1,
|
BMC_WS, BMC_SUPERBIG_7IN1, BMC_SUPERHIK_4IN1, BMC_BALLGAMES_11IN1,
|
||||||
BMC_MARIOPARTY_7IN1, BMC_GOLD_7IN1, BMC_SUPER_700IN1, BMC_FAMILY_4646,
|
BMC_MARIOPARTY_7IN1, BMC_GOLD_7IN1, BMC_SUPER_700IN1, BMC_FAMILY_4646,
|
||||||
|
Loading…
Reference in New Issue
Block a user