mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
bus/nes: Added support for K-3071, S-009, and TH2348 boards. (#9498)
New working software list additions (nes.xml) ----------------------------------- Chāozhí Gāo K Jīnkǎ 110 in 1 [Consolethinks] 8 in 1 (0801) [Consolethinks] Golden 8 in 1 [Consolethinks]
This commit is contained in:
parent
976ec5da28
commit
2aa80b9d07
50
hash/nes.xml
50
hash/nes.xml
@ -80675,6 +80675,23 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_110gc">
|
||||
<description>Chāozhí Gāo K Jīnkǎ 110 in 1</description>
|
||||
<year>1992</year>
|
||||
<publisher><pirate></publisher>
|
||||
<info name="alt_title" value="超値高K金卡 110-in-1"/>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_k3071" />
|
||||
<feature name="pcb_model" value="K-3071" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1992 super high k gold card 110-in-1.prg" size="524288" crc="d7b968f1" sha1="aca6418a6fb2ddaeef876a77544a8286c8aceb4a" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="262144">
|
||||
<rom name="1992 super high k gold card 110-in-1.chr" size="262144" crc="72e35586" sha1="45413b247854bb03400ce54deb22088f0249ccc1" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_115">
|
||||
<description>115 in 1</description>
|
||||
<year>19??</year>
|
||||
@ -83974,6 +83991,23 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Menu requires Dendy timing. It bounces on both NTSC and PAL. -->
|
||||
<software name="mc_8x801">
|
||||
<description>8 in 1 (0801)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Subor</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_s009" />
|
||||
<feature name="pcb_model" value="S-009" />
|
||||
<dataarea name="prg" size="1048576">
|
||||
<rom name="1994 8-in-1 (xiaobawang 0801).prg" size="1048576" crc="081e8023" sha1="7f97dfe62fbf0315bb5f70569912d8546d5bdfca" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_8a20">
|
||||
<description>8 in 1 (A-020)</description>
|
||||
<year>19??</year>
|
||||
@ -84661,6 +84695,22 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_goln8">
|
||||
<description>Golden 8 in 1</description>
|
||||
<year>19??</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_th2348" />
|
||||
<feature name="pcb_model" value="TH2348" />
|
||||
<dataarea name="prg" size="1048576">
|
||||
<rom name="golden 8-in-1 (ntdec).prg" size="1048576" crc="c74e3a53" sha1="7fa38ab2f0960401b7a2751a00f6b45630e36105" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_gc6">
|
||||
<description>Golden Card 6 in 1</description>
|
||||
<year>19??</year>
|
||||
|
@ -8,9 +8,9 @@
|
||||
|
||||
Here we emulate several PCBs used in multigame pirate carts (not MMC-3 based)
|
||||
|
||||
TODO: Investigate further Gunsmoke on mc_8et40 and mc_2gn91. Both exhibit the
|
||||
same bug where enemies/barrels don't appear until they are halfway down the
|
||||
screen. They are both almost the same minor hack of the US release.
|
||||
TODO: Investigate further Gunsmoke on mc_8et40, mc_2gn91, mc_8x801. All have
|
||||
the same bug where enemies/barrels don't appear until they are halfway down
|
||||
the screeen. They all seem to be a minor hack of the US release.
|
||||
|
||||
***********************************************************************************************************/
|
||||
|
||||
@ -65,8 +65,11 @@ DEFINE_DEVICE_TYPE(NES_BMC_HP898F, nes_bmc_hp898f_device, "nes_bmc_hp898
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_K1029, nes_bmc_k1029_device, "nes_bmc_k1029", "NES Cart BMC K-1029 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_K3036, nes_bmc_k3036_device, "nes_bmc_k3036", "NES Cart BMC K-3036 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_K3046, nes_bmc_k3046_device, "nes_bmc_k3046", "NES Cart BMC K-3046 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_K3071, nes_bmc_k3071_device, "nes_bmc_k3071", "NES Cart BMC K-3071 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_S009, nes_bmc_s009_device, "nes_bmc_s009", "NES Cart BMC S-009 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_SA005A, nes_bmc_sa005a_device, "nes_bmc_sa005a", "NES Cart BMC SA005-A PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_TF2740, nes_bmc_tf2740_device, "nes_bmc_tf2740", "NES Cart BMC TF2740 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_TH2348, nes_bmc_th2348_device, "nes_bmc_th2348", "NES Cart BMC TH2348 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_TJ03, nes_bmc_tj03_device, "nes_bmc_tj03", "NES Cart BMC TJ-03 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_WS, nes_bmc_ws_device, "nes_bmc_ws", "NES Cart BMC WS PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_11160, nes_bmc_11160_device, "nes_bmc_1160", "NES Cart BMC-1160 PCB")
|
||||
@ -272,6 +275,16 @@ nes_bmc_k3046_device::nes_bmc_k3046_device(const machine_config &mconfig, const
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_k3071_device::nes_bmc_k3071_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_K3071, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_s009_device::nes_bmc_s009_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_S009, tag, owner, clock), m_reg(0)
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_sa005a_device::nes_bmc_sa005a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_SA005A, tag, owner, clock)
|
||||
{
|
||||
@ -282,6 +295,11 @@ nes_bmc_tf2740_device::nes_bmc_tf2740_device(const machine_config &mconfig, cons
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_th2348_device::nes_bmc_th2348_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_TH2348, tag, owner, clock), m_latch(0)
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_tj03_device::nes_bmc_tj03_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_TJ03, tag, owner, clock)
|
||||
{
|
||||
@ -834,6 +852,28 @@ void nes_bmc_k3046_device::pcb_reset()
|
||||
chr8(0, CHRRAM);
|
||||
}
|
||||
|
||||
void nes_bmc_k3071_device::pcb_reset()
|
||||
{
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(0);
|
||||
chr8(0, CHRROM);
|
||||
}
|
||||
|
||||
void nes_bmc_s009_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_reg));
|
||||
}
|
||||
|
||||
void nes_bmc_s009_device::pcb_reset()
|
||||
{
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(7);
|
||||
chr8(0, CHRRAM);
|
||||
|
||||
m_reg = 0;
|
||||
}
|
||||
|
||||
void nes_bmc_sa005a_device::pcb_reset()
|
||||
{
|
||||
prg16_89ab(0);
|
||||
@ -857,6 +897,21 @@ void nes_bmc_tf2740_device::pcb_reset()
|
||||
m_reg[0] = m_reg[1] = m_reg[2] = 0;
|
||||
}
|
||||
|
||||
void nes_bmc_th2348_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_latch));
|
||||
}
|
||||
|
||||
void nes_bmc_th2348_device::pcb_reset()
|
||||
{
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(7);
|
||||
chr8(0, CHRRAM);
|
||||
|
||||
m_latch = 0;
|
||||
}
|
||||
|
||||
void nes_bmc_ws_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
@ -2114,6 +2169,64 @@ void nes_bmc_k3046_device::write_h(offs_t offset, u8 data)
|
||||
prg16_cdef(data | 0x07);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-K-3071
|
||||
|
||||
Games: 110 in 1
|
||||
|
||||
NES 2.0: mapper 438
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_k3071_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_k3071 write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
u8 bank = BIT(offset, 1, 5);
|
||||
u8 mode = BIT(offset, 0);
|
||||
prg16_89ab(bank & ~mode);
|
||||
prg16_cdef(bank | mode);
|
||||
|
||||
chr8(BIT(data, 1, 5), CHRROM);
|
||||
set_nt_mirroring(BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-S-009
|
||||
|
||||
Games: 8 in 1
|
||||
|
||||
NES 2.0: mapper 434
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_s009_device::write_m(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_s009 write_m, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
m_reg = (data & 0x07) << 3;
|
||||
prg16_89ab(m_reg);
|
||||
prg16_cdef(m_reg | 0x07);
|
||||
|
||||
set_nt_mirroring(BIT(data, 5) ? PPU_MIRROR_VERT : PPU_MIRROR_HORZ);
|
||||
}
|
||||
|
||||
void nes_bmc_s009_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_s009 write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
// this pcb is subject to bus conflict
|
||||
data = account_bus_conflict(offset, data);
|
||||
|
||||
prg16_89ab(m_reg | (data & 0x07));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-SA005-A
|
||||
@ -2190,6 +2303,43 @@ u8 nes_bmc_tf2740_device::read_m(offs_t offset)
|
||||
return (get_open_bus() & ~0x03) | m_jumper; // TODO: add jumper settings, m_jumper is 0 for now
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-TH2348
|
||||
|
||||
Games: Golden 8 in 1
|
||||
|
||||
NES 2.0: mapper 437
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_th2348_device::write_l(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_th2348 write_l, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
offset += 0x100;
|
||||
if (offset >= 0x1000)
|
||||
{
|
||||
m_latch = (offset & 0x07) << 3;
|
||||
prg16_89ab(m_latch);
|
||||
prg16_cdef(m_latch | 0x07);
|
||||
|
||||
set_nt_mirroring(BIT(offset, 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
}
|
||||
}
|
||||
|
||||
void nes_bmc_th2348_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_th2348 write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
// this pcb is subject to bus conflict
|
||||
data = account_bus_conflict(offset, data);
|
||||
|
||||
prg16_89ab(m_latch | (data & 0x07));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-TJ-03
|
||||
|
@ -527,6 +527,42 @@ public:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_k3071_device
|
||||
|
||||
class nes_bmc_k3071_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_k3071_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;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_s009_device
|
||||
|
||||
class nes_bmc_s009_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_s009_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:
|
||||
u8 m_reg = 0;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_sa005a_device
|
||||
|
||||
class nes_bmc_sa005a_device : public nes_nrom_device
|
||||
@ -566,6 +602,28 @@ private:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_th2348_device
|
||||
|
||||
class nes_bmc_th2348_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_th2348_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
virtual void write_l(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:
|
||||
u8 m_latch = 0;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_tj03_device
|
||||
|
||||
class nes_bmc_tj03_device : public nes_nrom_device
|
||||
@ -1335,8 +1393,11 @@ DECLARE_DEVICE_TYPE(NES_BMC_HP898F, nes_bmc_hp898f_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_K1029, nes_bmc_k1029_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_K3036, nes_bmc_k3036_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_K3046, nes_bmc_k3046_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_K3071, nes_bmc_k3071_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_S009, nes_bmc_s009_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_SA005A, nes_bmc_sa005a_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_TF2740, nes_bmc_tf2740_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_TH2348, nes_bmc_th2348_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_TJ03, nes_bmc_tj03_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_WS, nes_bmc_ws_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_11160, nes_bmc_11160_device)
|
||||
|
@ -409,8 +409,11 @@ void nes_cart(device_slot_interface &device)
|
||||
device.option_add_internal("bmc_k3033", NES_BMC_K3033);
|
||||
device.option_add_internal("bmc_k3036", NES_BMC_K3036);
|
||||
device.option_add_internal("bmc_k3046", NES_BMC_K3046);
|
||||
device.option_add_internal("bmc_k3071", NES_BMC_K3071);
|
||||
device.option_add_internal("bmc_s009", NES_BMC_S009);
|
||||
device.option_add_internal("bmc_sa005a", NES_BMC_SA005A);
|
||||
device.option_add_internal("bmc_tf2740", NES_BMC_TF2740);
|
||||
device.option_add_internal("bmc_th2348", NES_BMC_TH2348);
|
||||
device.option_add_internal("bmc_tj03", NES_BMC_TJ03);
|
||||
device.option_add_internal("bmc_ws", NES_BMC_WS);
|
||||
device.option_add_internal("bmc_g146", NES_BMC_G146);
|
||||
|
@ -464,16 +464,26 @@ static const nes_mmc mmc_list[] =
|
||||
// 426 PnP
|
||||
// 427 PnP
|
||||
{ 428, BMC_TF2740 },
|
||||
// 429 Unused
|
||||
// 430 Unused
|
||||
// 429 Milowork FCFC1 flash cartridge
|
||||
// 430 MMC3-based 831031C/T-308 multicart
|
||||
{ 431, BMC_GN91B },
|
||||
// 432 Realtec 8090
|
||||
{ 433, BMC_NC20MB },
|
||||
// 434 S-009
|
||||
// 435...442 Unused
|
||||
{ 434, BMC_S009 },
|
||||
// 435 F-1002 multicart
|
||||
// 436 VT02 PnP
|
||||
{ 437, BMC_TH2348 },
|
||||
{ 438, BMC_K3071 },
|
||||
// 439 YS2309 multicart
|
||||
// 440 Dongda Sonic REC-9388 educational computer
|
||||
// 441 841026C and 850335C multicarts
|
||||
// 442 "Golden Key" educational computer
|
||||
// 443 NC3000M multicart
|
||||
// 444 NC7000M multicart
|
||||
// 445...511 Unused
|
||||
// 445 DG574B MMC3-compatible multicart
|
||||
// 446 Mindkids SMD172B_FPGA board
|
||||
// 447 VRC4-based KL-06 multicart
|
||||
// 448...511 Unused
|
||||
// 512 probably the correct MMC3 clone for chuugokt in nes.xml
|
||||
{ 513, SACHEN_SA9602B },
|
||||
// 514 seems to be for skaraok, currently set to UNKNOWN in nes.xml
|
||||
|
@ -289,8 +289,11 @@ static const nes_pcb pcb_list[] =
|
||||
{ "bmc_k3033", BMC_K3033 },
|
||||
{ "bmc_k3036", BMC_K3036 },
|
||||
{ "bmc_k3046", BMC_K3046 },
|
||||
{ "bmc_k3071", BMC_K3071 },
|
||||
{ "bmc_s009", BMC_S009 },
|
||||
{ "bmc_sa005a", BMC_SA005A },
|
||||
{ "bmc_tf2740", BMC_TF2740 },
|
||||
{ "bmc_th2348", BMC_TH2348 },
|
||||
{ "bmc_tj03", BMC_TJ03 },
|
||||
{ "bmc_ws", BMC_WS },
|
||||
{ "bmc_hik300", BMC_SUPERHIK_300IN1 },
|
||||
|
@ -101,13 +101,14 @@ enum
|
||||
BMC_830425C, BMC_830506C, BMC_830928C, BMC_850437C, BMC_891227, BMC_970630C,
|
||||
BMC_N32_4IN1, BMC_NC20MB, BMC_NT639, BMC_NTD_03, BMC_SRPG_5IN1,
|
||||
BMC_EL860947C, BMC_EL861121C, BMC_FAM250, BMC_FK23C, BMC_FK23CA,
|
||||
BMC_JY012005, BMC_JY820845C, BMC_PJOY84, BMC_TH22913, BMC_11160, BMC_G146,
|
||||
BMC_JY012005, BMC_JY820845C, BMC_PJOY84,
|
||||
BMC_S009, BMC_TH22913, BMC_TH2348, BMC_11160, BMC_G146,
|
||||
BMC_2751, BMC_8157, BMC_00202650,
|
||||
BMC_411120C, BMC_810305C, BMC_820720C, BMC_830118C,
|
||||
BMC_830832C, BMC_YY841101C, BMC_YY841155C,
|
||||
BMC_GOLD150, BMC_GOLD260,
|
||||
BMC_12IN1, BMC_4IN1RESET, BMC_42IN1RESET, BMC_LITTLECOM160,
|
||||
BMC_K1029, BMC_K3006, BMC_K3033, BMC_K3036, BMC_K3046, BMC_SA005A,
|
||||
BMC_K1029, BMC_K3006, BMC_K3033, BMC_K3036, BMC_K3046, BMC_K3071, BMC_SA005A,
|
||||
BMC_TF2740, BMC_TJ03, BMC_RESETSXROM, BMC_RESETTXROM, BMC_TECHLINE9IN1,
|
||||
// Unlicensed
|
||||
UNL_8237, UNL_8237A, UNL_CC21, UNL_AX40G, UNL_AX5705, UNL_KN42,
|
||||
|
Loading…
Reference in New Issue
Block a user