mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
bus/nes: Added support for 17-in-1 and 6-in-1 multicarts.
New working software list additions (nes.xml) ----------------------------------- 17 in 1 (60311C) [anonymous] Super HiK 6 in 1 (A-030) [anonymous]
This commit is contained in:
parent
4131373f0a
commit
d991edb73b
30
hash/nes.xml
30
hash/nes.xml
@ -78099,6 +78099,21 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_17" supported="partial">
|
||||
<description>17 in 1 (60311C)</description>
|
||||
<year>199?</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_60311c" />
|
||||
<dataarea name="prg" size="2097152">
|
||||
<rom name="17-in-1 (60311c).prg" size="2097152" crc="2374b9ba" sha1="a145cc0d8b5db4a7bdca68c787d959cc32dd1373" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_18kd">
|
||||
<description>18 in 1 (KD-1512)</description>
|
||||
<year>19??</year>
|
||||
@ -79764,6 +79779,21 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6a30">
|
||||
<description>Super HiK 6 in 1 (A-030)</description>
|
||||
<year>199?</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_830425c" />
|
||||
<dataarea name="prg" size="1048576">
|
||||
<rom name="super hik 6-in-1 a-030.prg" size="1048576" crc="ee62ac32" sha1="6f7dbfdbdc1633e45c84d2e1b7f833d2ef7741c3" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6et40" supported="partial">
|
||||
<description>6 in 1 (ET40, 840726c, 43-203)</description>
|
||||
<year>19??</year>
|
||||
|
@ -42,8 +42,10 @@ DEFINE_DEVICE_TYPE(NES_NOVEL2, nes_novel2_device, "nes_novel2",
|
||||
DEFINE_DEVICE_TYPE(NES_STUDYNGAME, nes_studyngame_device, "nes_studyngame", "NES Cart Study n Game PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_SUPERGUN20IN1, nes_sgun20in1_device, "nes_sgun20in1", "NES Cart Supergun 20 in 1 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_VT5201, nes_vt5201_device, "nes_vt5201", "NES Cart VT5201 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_60311C, nes_bmc_60311c_device, "nes_bmc_60311c", "NES Cart BMC 60311C PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_80013B, nes_bmc_80013b_device, "nes_bmc_80013b", "NES Cart BMC 80013-B PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_810544C, nes_bmc_810544c_device, "nes_bmc_810544c", "NES Cart BMC 810544-C-A1 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_830425C, nes_bmc_830425c_device, "nes_bmc_830425c", "NES Cart BMC 830425C-4391T PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device, "nes_ntd03", "NES Cart NTD-03 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device, "nes_bmc_ctc09", "NES Cart BMC CTC-09 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device, "nes_bmc_gb63", "NES Cart BMC Ghostbusters 63 in 1 PCB")
|
||||
@ -200,6 +202,11 @@ nes_bmc_810544c_device::nes_bmc_810544c_device(const machine_config &mconfig, co
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_830425c_device::nes_bmc_830425c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_830425C, tag, owner, clock), m_latch(0)
|
||||
{
|
||||
}
|
||||
|
||||
nes_ntd03_device::nes_ntd03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_nrom_device(mconfig, NES_NTD03, tag, owner, clock)
|
||||
{
|
||||
@ -402,6 +409,11 @@ nes_vram_protect_device::nes_vram_protect_device(const machine_config &mconfig,
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_60311c_device::nes_bmc_60311c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_vram_protect_device(mconfig, NES_BMC_60311C, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_th22913_device::nes_bmc_th22913_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_vram_protect_device(mconfig, NES_BMC_TH22913, tag, owner, clock)
|
||||
{
|
||||
@ -640,6 +652,22 @@ void nes_bmc_810544c_device::pcb_reset()
|
||||
chr8(0, CHRROM);
|
||||
}
|
||||
|
||||
void nes_bmc_830425c_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_latch));
|
||||
}
|
||||
|
||||
void nes_bmc_830425c_device::pcb_reset()
|
||||
{
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(0x0f);
|
||||
chr8(0, CHRRAM);
|
||||
set_nt_mirroring(PPU_MIRROR_VERT);
|
||||
|
||||
m_latch = 0;
|
||||
}
|
||||
|
||||
void nes_ntd03_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
@ -1118,6 +1146,20 @@ void nes_vram_protect_device::pcb_reset()
|
||||
m_vram_protect = false;
|
||||
}
|
||||
|
||||
void nes_bmc_60311c_device::device_start()
|
||||
{
|
||||
nes_vram_protect_device::device_start();
|
||||
save_item(NAME(m_reg));
|
||||
}
|
||||
|
||||
void nes_bmc_60311c_device::pcb_reset()
|
||||
{
|
||||
nes_vram_protect_device::pcb_reset();
|
||||
|
||||
m_reg[0] = m_reg[1] = m_reg[2] = 0;
|
||||
update_banks();
|
||||
}
|
||||
|
||||
void nes_bmc_th22913_device::pcb_reset()
|
||||
{
|
||||
nes_vram_protect_device::pcb_reset();
|
||||
@ -1655,6 +1697,32 @@ void nes_bmc_810544c_device::write_h(offs_t offset, u8 data)
|
||||
chr8(offset & 0x0f, CHRROM);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-820425C-4391T
|
||||
|
||||
Games: Super HiK 6-in-1 (A-030)
|
||||
|
||||
NES 2.0: mapper 320
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_830425c_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_830425c write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
if ((offset & 0x7fe0) == 0x70e0)
|
||||
m_latch = offset & 0x1f;
|
||||
|
||||
u8 outer = (m_latch & 0x0f) << 3;
|
||||
u8 mode = !BIT(m_latch, 4) << 3 | 0x07;
|
||||
prg16_89ab(outer | (data & mode));
|
||||
prg16_cdef(outer | mode);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-NTD-03
|
||||
@ -2926,6 +2994,53 @@ void nes_bmc_lc160_device::write_h(offs_t offset, u8 data)
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-60311C
|
||||
|
||||
Games: 17 in 1
|
||||
|
||||
NES 2.0: mapper 289
|
||||
|
||||
In MAME: Preliminary supported.
|
||||
|
||||
TODO: All the Capcom games and Konami's Hyper Soccer
|
||||
sound horrible here. BTANB? Also Journey to the West
|
||||
doesn't work as an individual rom (jwest) or here.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_60311c_device::update_banks()
|
||||
{
|
||||
if (BIT(m_reg[0], 1)) // UNROM mode
|
||||
{
|
||||
prg16_89ab((m_reg[1] & ~0x07) | (BIT(m_reg[0], 0) ? 0x07 : m_reg[2]));
|
||||
prg16_cdef(m_reg[1] | 0x07);
|
||||
}
|
||||
else // NROM mode
|
||||
{
|
||||
prg16_89ab(m_reg[1] & ~BIT(m_reg[0], 0));
|
||||
prg16_cdef(m_reg[1] | BIT(m_reg[0], 0));
|
||||
}
|
||||
|
||||
m_vram_protect = BIT(m_reg[0], 2);
|
||||
set_nt_mirroring(BIT(m_reg[0], 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
}
|
||||
|
||||
void nes_bmc_60311c_device::write_m(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_60311c write_m, offset: %04x, data: %02x\n", offset, data));
|
||||
m_reg[offset & 1] = data & 0x7f;
|
||||
update_banks();
|
||||
}
|
||||
|
||||
void nes_bmc_60311c_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_60311c write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
m_reg[2] = data & 0x07;
|
||||
update_banks();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-TH2291-3, BMC-CH-011
|
||||
|
@ -343,6 +343,27 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_830425c_device
|
||||
|
||||
class nes_bmc_830425c_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_830425c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
virtual void write_h(offs_t offset, u8 data) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
u8 m_latch;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_ntd03_device
|
||||
|
||||
class nes_ntd03_device : public nes_nrom_device
|
||||
@ -1078,6 +1099,29 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_60311c_device
|
||||
|
||||
class nes_bmc_60311c_device : public nes_vram_protect_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_60311c_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 write_h(offs_t offset, u8 data) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
void update_banks();
|
||||
u8 m_reg[3];
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_th22913_device
|
||||
|
||||
class nes_bmc_th22913_device : public nes_vram_protect_device
|
||||
@ -1107,8 +1151,10 @@ DECLARE_DEVICE_TYPE(NES_NOVEL2, nes_novel2_device)
|
||||
DECLARE_DEVICE_TYPE(NES_STUDYNGAME, nes_studyngame_device)
|
||||
DECLARE_DEVICE_TYPE(NES_SUPERGUN20IN1, nes_sgun20in1_device)
|
||||
DECLARE_DEVICE_TYPE(NES_VT5201, nes_vt5201_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_60311C, nes_bmc_60311c_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_80013B, nes_bmc_80013b_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_810544C, nes_bmc_810544c_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_830425C, nes_bmc_830425c_device)
|
||||
DECLARE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device)
|
||||
|
@ -368,8 +368,10 @@ void nes_cart(device_slot_interface &device)
|
||||
device.option_add_internal("sgun20in1", NES_SUPERGUN20IN1);
|
||||
device.option_add_internal("bmc_vt5201", NES_VT5201); // mapper 59?
|
||||
device.option_add_internal("bmc_d1038", NES_VT5201); // mapper 59?
|
||||
device.option_add_internal("bmc_60311c", NES_BMC_60311C);
|
||||
device.option_add_internal("bmc_80013b", NES_BMC_80013B);
|
||||
device.option_add_internal("bmc_810544c", NES_BMC_810544C);
|
||||
device.option_add_internal("bmc_830425c", NES_BMC_830425C);
|
||||
device.option_add_internal("ntd03", NES_NTD03);
|
||||
device.option_add_internal("bmc_ctc09", NES_BMC_CTC09);
|
||||
device.option_add_internal("bmc_gb63", NES_BMC_GB63);
|
||||
|
@ -324,7 +324,7 @@ static const nes_mmc mmc_list[] =
|
||||
{ 286, BMC_BENSHIENG },
|
||||
{ 287, BMC_411120C },
|
||||
// 288 GKCX1 21 in 1 multicarts, not in nes.xml?
|
||||
// { 289, BMC_60311C }, not in nes.xml?
|
||||
{ 289, BMC_60311C },
|
||||
{ 290, BMC_NTD_03 },
|
||||
// 291 Kasheng 2-in-1 multicarts not yet in nes.xml?
|
||||
// { 292, UNL_DRAGONFIGHTER }, in nes.xml, not emulated yet
|
||||
@ -355,7 +355,7 @@ static const nes_mmc mmc_list[] =
|
||||
// 317 Unused
|
||||
// 318 Unused
|
||||
// 319 HP-898F (has different bank order than UNIF!) and KD-7/9-E boards
|
||||
// 320 BMC-830425C-4391T, not in nes.xml?
|
||||
{ 320, BMC_830425C },
|
||||
// 321 duplicate of 287?
|
||||
// 322 BMC-K-3033 35-in-1, related to mc_35?
|
||||
// 323 Farid SLROM homebrew 8-in-1
|
||||
|
@ -253,8 +253,10 @@ static const nes_pcb pcb_list[] =
|
||||
{ "sgun20in1", BMC_SUPERGUN_20IN1 },
|
||||
{ "bmc_vt5201", BMC_VT5201 }, // mapper 59?
|
||||
{ "bmc_d1038", BMC_VT5201 }, // mapper 59?
|
||||
{ "bmc_60311c", BMC_60311C },
|
||||
{ "bmc_80013b", BMC_80013B },
|
||||
{ "bmc_810544c", BMC_810544C },
|
||||
{ "bmc_830425c", BMC_830425C },
|
||||
{ "ntd03", BMC_NTD_03 },
|
||||
{ "bmc_ctc09", BMC_CTC09 },
|
||||
{ "bmc_gb63", BMC_G63IN1 },
|
||||
|
@ -15,7 +15,7 @@
|
||||
// uncomment this for *very* verbose logging of most cart accesses
|
||||
//#define NES_PCB_DEBUG
|
||||
|
||||
/* Boards */
|
||||
// Boards
|
||||
enum
|
||||
{
|
||||
STD_NROM = 0,
|
||||
@ -30,38 +30,38 @@ enum
|
||||
STD_SXROM_A, STD_SOROM, STD_SOROM_A,
|
||||
STD_DISKSYS,
|
||||
STD_NROM368,//homebrew extension of NROM!
|
||||
/* Discrete components boards (by various manufacturer) */
|
||||
// Discrete components boards (by various manufacturer)
|
||||
DIS_74X161X138, DIS_74X139X74,
|
||||
DIS_74X377, DIS_74X161X161X32,
|
||||
/* Active Enterprises */
|
||||
// Active Enterprises
|
||||
ACTENT_ACT52,
|
||||
/* AGCI */
|
||||
// AGCI
|
||||
AGCI_50282,
|
||||
/* AVE */
|
||||
// AVE
|
||||
AVE_NINA01, AVE_NINA06, AVE_MAXI15,
|
||||
/* Bandai */
|
||||
// Bandai
|
||||
BANDAI_FJUMP2, BANDAI_PT554,
|
||||
BANDAI_DATACH, BANDAI_KARAOKE, BANDAI_OEKAKIDS,
|
||||
BANDAI_FCG, BANDAI_LZ93, BANDAI_LZ93EX1, BANDAI_LZ93EX2,
|
||||
// Caltron
|
||||
CALTRON_6IN1, CALTRON_9IN1,
|
||||
/* Camerica */
|
||||
// Camerica
|
||||
CAMERICA_BF9093, CAMERICA_BF9096, CAMERICA_ALADDIN,
|
||||
CAMERICA_GOLDENFIVE, GG_NROM,
|
||||
/* Dreamtech */
|
||||
// Dreamtech
|
||||
DREAMTECH_BOARD,
|
||||
/* Irem */
|
||||
// Irem
|
||||
IREM_G101, IREM_H3001, IREM_LROG017,
|
||||
IREM_TAM_S1, IREM_HOLYDIVR,
|
||||
/* Jaleco */
|
||||
// Jaleco
|
||||
JALECO_SS88006, JALECO_JF11, JALECO_JF13,
|
||||
JALECO_JF16, JALECO_JF17, JALECO_JF17_ADPCM,
|
||||
JALECO_JF19, JALECO_JF19_ADPCM, JALECO_JF23,
|
||||
JALECO_JF24, JALECO_JF29, JALECO_JF33,
|
||||
/* Konami */
|
||||
// Konami
|
||||
KONAMI_VRC1, KONAMI_VRC2, KONAMI_VRC3,
|
||||
KONAMI_VRC4, KONAMI_VRC6, KONAMI_VRC7,
|
||||
/* Namcot */
|
||||
// Namcot
|
||||
NAMCOT_163, NAMCOT_175, NAMCOT_340,
|
||||
NAMCOT_3425, NAMCOT_34X3, NAMCOT_3446,
|
||||
// NTDEC
|
||||
@ -95,7 +95,8 @@ enum
|
||||
BMC_GOLDENCARD_6IN1, BMC_72IN1, BMC_SUPER_42IN1, BMC_76IN1,
|
||||
BMC_31IN1, BMC_22GAMES, BMC_20IN1, BMC_110IN1,
|
||||
BMC_70IN1, BMC_800IN1, BMC_1200IN1,
|
||||
BMC_GKA, BMC_GKB, BMC_VT5201, BMC_BENSHIENG, BMC_80013B, BMC_810544C,
|
||||
BMC_GKA, BMC_GKB, BMC_VT5201, BMC_BENSHIENG,
|
||||
BMC_60311C, BMC_80013B, BMC_810544C, BMC_830425C,
|
||||
BMC_NTD_03, BMC_G63IN1, BMC_FCGENJIN_8IN1, BMC_FK23C, BMC_FK23CA,
|
||||
BMC_PJOY84, BMC_TH22913, BMC_11160, BMC_G146,
|
||||
BMC_2751, BMC_8157, BMC_830118C, BMC_841101C,
|
||||
|
Loading…
Reference in New Issue
Block a user