mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
bus/nes: Added support for mc_150um multi-game cartridge. (#8406)
Software list items promoted to working (nes.xml) --------------------------------------- 150 in 1 Unchained Melody (Fight 150 Ver. Love)
This commit is contained in:
parent
5f1b75a3a5
commit
0c13c54fbc
@ -78028,9 +78028,9 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_150um" supported="no">
|
||||
<software name="mc_150um">
|
||||
<description>150 in 1 Unchained Melody (Fight 150 Ver. Love)</description>
|
||||
<year>19??</year>
|
||||
<year>199?</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_f15" />
|
||||
|
@ -59,6 +59,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_SBIG7, nes_bmc_sbig7_device, "nes_bmc_sbig7",
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_HIK8, nes_bmc_hik8_device, "nes_bmc_hik8", "NES Cart BMC HIK 8 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_F15, nes_bmc_f15_device, "nes_bmc_f15", "NES Cart BMC F-15 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")
|
||||
@ -224,6 +225,11 @@ nes_bmc_mario7in1_device::nes_bmc_mario7in1_device(const machine_config &mconfig
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_f15_device::nes_bmc_f15_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_txrom_device(mconfig, NES_BMC_F15, tag, owner, 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)
|
||||
{
|
||||
@ -563,6 +569,14 @@ void nes_bmc_mario7in1_device::pcb_reset()
|
||||
mmc3_common_initialize(0x1f, 0xff, 0);
|
||||
}
|
||||
|
||||
void nes_bmc_f15_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
mmc3_common_initialize(0x1f, 0xff, 0);
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(0);
|
||||
}
|
||||
|
||||
void nes_bmc_gold7in1_device::device_start()
|
||||
{
|
||||
mmc3_start();
|
||||
@ -2229,6 +2243,39 @@ void nes_bmc_mario7in1_device::write_m(offs_t offset, uint8_t data)
|
||||
m_prgram[offset] = data;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-F-15
|
||||
|
||||
Unknown Multigame Bootleg Board
|
||||
Games: 150 in 1 Unchained Melody
|
||||
|
||||
MMC3 clone with banking for multigame menu.
|
||||
|
||||
NES 2.0: mapper 259
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_f15_device::write_m(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_f15 write_m, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
if (BIT(m_wram_protect, 7))
|
||||
{
|
||||
u8 bank = data & 0x0f;
|
||||
u8 mode = BIT(data, 3);
|
||||
prg16_89ab(bank & ~mode);
|
||||
prg16_cdef(bank | mode);
|
||||
}
|
||||
}
|
||||
|
||||
void nes_bmc_f15_device::prg_cb(int start, int bank)
|
||||
{
|
||||
// Ignore MMC3 PRG bank switching. Master Fighter II (game #150) uses the bank switching above.
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-FCGENJIN-8IN1
|
||||
|
@ -598,6 +598,21 @@ private:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_f15_device
|
||||
|
||||
class nes_bmc_f15_device : public nes_txrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_f15_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 prg_cb(int start, int bank) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_gold7in1_device
|
||||
|
||||
class nes_bmc_gold7in1_device : public nes_txrom_device
|
||||
@ -792,6 +807,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_SBIG7, nes_bmc_sbig7_device)
|
||||
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_MARIO7IN1, nes_bmc_mario7in1_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_F15, nes_bmc_f15_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)
|
||||
|
@ -420,6 +420,7 @@ void nes_cart(device_slot_interface &device)
|
||||
device.option_add_internal("bmc_hik8in1", NES_BMC_HIK8);
|
||||
device.option_add_internal("bmc_hik4in1", NES_BMC_HIK4);
|
||||
device.option_add_internal("bmc_mario7in1", NES_BMC_MARIO7IN1);
|
||||
device.option_add_internal("bmc_f15", NES_BMC_F15);
|
||||
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);
|
||||
@ -436,7 +437,6 @@ void nes_cart(device_slot_interface &device)
|
||||
device.option_add_internal("onebus", NES_NROM); // UNSUPPORTED
|
||||
device.option_add_internal("pec586", NES_NROM); // UNSUPPORTED
|
||||
device.option_add_internal("coolboy", NES_NROM); // UNSUPPORTED
|
||||
device.option_add_internal("bmc_f15", NES_NROM); // UNSUPPORTED
|
||||
device.option_add_internal("bmc_hp898f", NES_NROM); // UNSUPPORTED
|
||||
device.option_add_internal("bmc_8in1", NES_NROM); // UNSUPPORTED
|
||||
device.option_add_internal("unl_158b", NES_NROM); // UNSUPPORTED
|
||||
|
@ -294,7 +294,7 @@ static const nes_mmc mmc_list[] =
|
||||
// 256 OneBus Famiclones
|
||||
// 257 UNIF MAPR PEC-586?
|
||||
// 258 UNIF MAPR 158B?
|
||||
// 259 UNIF MAPR F-15?
|
||||
{ 259, BMC_F15 },
|
||||
// 260 HP10xx/HP20xx multicarts?
|
||||
{ 261, BMC_810544C },
|
||||
{ 262, SACHEN_SHERO },
|
||||
|
@ -297,6 +297,7 @@ static const nes_pcb pcb_list[] =
|
||||
{ "bmc_hik8in1", BMC_HIK8IN1 },
|
||||
{ "bmc_hik4in1", BMC_SUPERHIK_4IN1 },
|
||||
{ "bmc_mario7in1", BMC_MARIOPARTY_7IN1 },
|
||||
{ "bmc_f15", BMC_F15 },
|
||||
{ "bmc_gold7in1", BMC_GOLD_7IN1 },
|
||||
{ "bmc_gc6in1", BMC_GOLDENCARD_6IN1 },
|
||||
{ "bmc_411120c", BMC_411120C },
|
||||
@ -353,7 +354,6 @@ static const nes_pcb pcb_list[] =
|
||||
{ "btl_900218", UNSUPPORTED_BOARD }, // pirate The Lord of King, to be emulated soon
|
||||
{ "a9746", UNSUPPORTED_BOARD },
|
||||
{ "pec586", UNSUPPORTED_BOARD },
|
||||
{ "bmc_f15", UNSUPPORTED_BOARD }, // 150-in-1 Unchained Melody
|
||||
{ "bmc_hp898f", UNSUPPORTED_BOARD }, // Primasoft 9999999-in-1
|
||||
{ "bmc_8in1", UNSUPPORTED_BOARD }, // Super 8-in-1 (Incl. Rockin' Kats)
|
||||
{ "unl_158b", UNSUPPORTED_BOARD }, // Blood of Jurassic
|
||||
|
@ -86,7 +86,7 @@ enum
|
||||
TXC_22211, TXC_DUMARACING, TXC_MJBLOCK,
|
||||
TXC_COMMANDOS, TXC_TW, TXC_STRIKEW,
|
||||
// Multigame Carts
|
||||
BMC_64IN1NR, BMC_190IN1, BMC_A65AS,
|
||||
BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_F15,
|
||||
BMC_HIK8IN1, BMC_NOVEL1, BMC_NOVEL2, BMC_S24IN1SC03, BMC_T262,
|
||||
BMC_WS, BMC_SUPERBIG_7IN1, BMC_SUPERHIK_4IN1, BMC_BALLGAMES_11IN1,
|
||||
BMC_MARIOPARTY_7IN1, BMC_GOLD_7IN1, BMC_SUPER_700IN1, BMC_FAMILY_4646,
|
||||
|
Loading…
Reference in New Issue
Block a user