bus/nes: Added support for KC885 and JY-302 boards. (#9191)

New working software list additions (nes.xml)
-----------------------------------
Heros 8 in 1 (JY-207) [MLX]
Super 8 in 1 (JY-301) [MLX]
King 8 in 1 (JY-302) [MLX]
Super 19 in 1 (VIP19) [NewRisingSun]
This commit is contained in:
0kmg 2022-01-21 16:33:00 -09:00 committed by GitHub
parent f8605ad8ee
commit 3a1eea0cb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 220 additions and 5 deletions

View File

@ -52727,6 +52727,21 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part>
</software>
<software name="mc_8j207">
<description>Heros 8 in 1 (JY-207)</description>
<year>19??</year>
<publisher>J.Y. Company</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_hik8in1" />
<dataarea name="prg" size="1048576">
<rom name="heros 8-in-1 (jy-207).prg" size="1048576" crc="8ad3f063" sha1="3fc05f0999df1ea2b6dcb50d79fb52403346b802" status="baddump" />
</dataarea>
<dataarea name="chr" size="1048576">
<rom name="heros 8-in-1 (jy-207).chr" size="1048576" crc="60577fb5" sha1="7d679df5f18d84d456e8ecbe6bd5256ef5a6abce" status="baddump" />
</dataarea>
</part>
</software>
<software name="mc_7j208">
<description>Rockman 7 in 1 (JY-208)</description>
<year>199?</year>
@ -52746,6 +52761,39 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part>
</software>
<software name="mc_8j301">
<description>Super 8 in 1 (JY-301)</description>
<year>19??</year>
<publisher>J.Y. Company</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_hik8in1" />
<dataarea name="prg" size="1048576">
<rom name="super 8-in-1 (jy-301).prg" size="1048576" crc="573f2af9" sha1="94801052a82772e98baffa12cd5a44449c172e8e" status="baddump" />
</dataarea>
<dataarea name="chr" size="1048576">
<rom name="super 8-in-1 (jy-301).chr" size="1048576" crc="7b4ea60f" sha1="f26adbcdeecafa9be1ea1da6bfde87beaa3d4e56" status="baddump" />
</dataarea>
</part>
</software>
<software name="mc_8j302">
<description>King 8 in 1 (JY-302)</description>
<year>19??</year>
<publisher>J.Y. Company</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_jy302" />
<dataarea name="prg" size="1048576">
<rom name="king 8-in-1 (jy-302).prg" size="1048576" crc="0b030660" sha1="07cb6b564cf8776c5eba0efcb8c786d0ec0acd6a" status="baddump" />
</dataarea>
<dataarea name="chr" size="1048576">
<rom name="king 8-in-1 (jy-302).chr" size="1048576" crc="67bffbc6" sha1="1cf285030a26c7856121b989de207cad8d02227c" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<!-- Sachen / Thin Chen (and clones) -->
@ -80316,6 +80364,22 @@ be better to redump them properly. -->
</part>
</software>
<software name="mc_19vip">
<description>Super 19 in 1 (VIP19)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_kc885" />
<feature name="pcb_model" value="KC885" />
<dataarea name="prg" size="1048576">
<rom name="super 19-in-1 (vip19).prg" size="1048576" crc="c4ebed19" sha1="059f3be8f10660008000e5eee7061498808afb7a" status="baddump" />
</dataarea>
<dataarea name="chr" size="1048576">
<rom name="super 19-in-1 (vip19).chr" size="1048576" crc="86ab5220" sha1="b7a594429dd5fb851ad3c883cf2e901476fcdc27" status="baddump" />
</dataarea>
</part>
</software>
<software name="mc_190">
<description>Golden 190 in 1</description>
<year>19??</year>

View File

@ -68,6 +68,8 @@ DEFINE_DEVICE_TYPE(NES_BMC_15IN1, nes_bmc_15in1_device, "nes_bmc_15in1",
DEFINE_DEVICE_TYPE(NES_BMC_SBIG7, nes_bmc_sbig7_device, "nes_bmc_sbig7", "NES Cart BMC Super BIG 7 in 1 PCB")
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_JY208, nes_bmc_jy208_device, "nes_bmc_jy208", "NES Cart BMC JY-208 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_JY302, nes_bmc_jy302_device, "nes_bmc_jy302", "NES Cart BMC JY-302 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_KC885, nes_bmc_kc885_device, "nes_bmc_kc885", "NES Cart BMC KC885 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_SFC12, nes_bmc_sfc12_device, "nes_bmc_sfc12", "NES Cart BMC SFC-12 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")
@ -111,6 +113,19 @@ INPUT_PORTS_START( bmc_f600 )
PORT_CONFSETTING( 0x80, "Mario Party II (6 in 1)" )
INPUT_PORTS_END
INPUT_PORTS_START( bmc_kc885 )
PORT_START("JUMPER")
PORT_CONFNAME( 0x07, 0x07, "Menu Type" )
PORT_CONFSETTING( 0x00, "6000 in 1" )
PORT_CONFSETTING( 0x01, "400 in 1" )
PORT_CONFSETTING( 0x02, "800 in 1" )
PORT_CONFSETTING( 0x03, "5000 in 1" )
PORT_CONFSETTING( 0x04, "190 in 1" )
PORT_CONFSETTING( 0x05, "1000 in 1" )
PORT_CONFSETTING( 0x06, "2000 in 1" )
PORT_CONFSETTING( 0x07, "19 in 1" )
INPUT_PORTS_END
//-------------------------------------------------
// input_ports - device-specific input ports
@ -131,6 +146,11 @@ ioport_constructor nes_bmc_f600_device::device_input_ports() const
return INPUT_PORTS_NAME( bmc_f600 );
}
ioport_constructor nes_bmc_kc885_device::device_input_ports() const
{
return INPUT_PORTS_NAME( bmc_kc885 );
}
//**************************************************************************
@ -360,6 +380,17 @@ nes_bmc_jy208_device::nes_bmc_jy208_device(const machine_config &mconfig, const
{
}
nes_bmc_jy302_device::nes_bmc_jy302_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_bmc_hik8_device(mconfig, NES_BMC_JY302, tag, owner, clock)
{
}
nes_bmc_kc885_device::nes_bmc_kc885_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_bmc_hik8_device(mconfig, NES_BMC_KC885, tag, owner, clock)
, m_jumper(*this, "JUMPER")
{
}
nes_bmc_sfc12_device::nes_bmc_sfc12_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_bmc_hik8_device(mconfig, NES_BMC_SFC12, tag, owner, clock)
{
@ -828,6 +859,13 @@ void nes_bmc_hik8_device::pcb_reset()
mmc3_common_initialize(0x3f, 0xff, 0);
}
void nes_bmc_kc885_device::pcb_reset()
{
nes_bmc_hik8_device::pcb_reset();
m_prg_mask = 0x1f;
set_prg(m_prg_base, m_prg_mask);
}
void nes_bmc_hik4_device::device_start()
{
mmc3_start();
@ -2648,6 +2686,79 @@ void nes_bmc_jy208_device::write_m(offs_t offset, u8 data)
m_mirroring = PPU_MIRROR_NONE; // allow MMC3 mirror switching
}
/*-------------------------------------------------
BMC-JY-302
Games: Super 8 in 1
Variant of the HIK8IN1 boards that adds 8K of VRAM
which seems the same as the SFC-12 board below,
other than the line which selects VRAM/VROM.
NES 2.0: mapper 410
In MAME: Supported.
-------------------------------------------------*/
void nes_bmc_jy302_device::set_chr(u8 chr, int chr_base, int chr_mask)
{
if (BIT(m_reg[2], 6))
chr8(0, CHRRAM);
else
nes_txrom_device::set_chr(chr, chr_base, chr_mask);
}
/*-------------------------------------------------
BMC-KC885
Games: Super 8 in 1 VIP19
Variant of the HIK8IN1 boards that has different
upper address lines for PRG banking. Exactly how
these lines are selected is determined by three
jumper/solder pads.
NES 2.0: mapper 401
In MAME: Supported.
-------------------------------------------------*/
u8 nes_bmc_kc885_device::read_h(offs_t offset)
{
// LOG_MMC(("bmc_kc885 read_h, offset: %04x\n", offset));
if (BIT(m_reg[1], 7) & BIT(m_jumper->read(), 2))
return get_open_bus();
else
return hi_access_rom(offset);
}
void nes_bmc_kc885_device::write_m(offs_t offset, u8 data)
{
LOG_MMC(("bmc_kc885 write_m, offset: %04x, data: %02x\n", offset, data));
if (!BIT(m_reg[3], 6)) // outer register lock bit
{
if (m_count == 1)
data = (data & ~0x60) | bitswap<2>(data, 5, 6) << 5;
m_reg[m_count] = data;
m_count = (m_count + 1) & 0x03;
u8 mask = 0x80 | (m_jumper->read() & 0x03) << 5;
m_prg_base = (m_reg[2] & mask) | (m_reg[1] & ~mask);
m_prg_mask = ~m_reg[3] & 0x1f;
set_prg(m_prg_base, m_prg_mask);
m_chr_base = (m_reg[2] & 0xf0) << 4 | m_reg[0];
m_chr_mask = 0xff >> (~m_reg[2] & 0x0f);
set_chr(m_chr_source, m_chr_base, m_chr_mask);
}
}
/*-------------------------------------------------
BMC-SFC-12

View File

@ -741,8 +741,6 @@ protected:
virtual void device_start() override;
u8 m_reg[4];
private:
u8 m_count;
};
@ -762,6 +760,41 @@ protected:
};
// ======================> nes_bmc_jy302_device
class nes_bmc_jy302_device : public nes_bmc_hik8_device
{
public:
// construction/destruction
nes_bmc_jy302_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
virtual void set_chr(u8 chr, int chr_base, int chr_mask) override;
};
// ======================> nes_bmc_kc885_device
class nes_bmc_kc885_device : public nes_bmc_hik8_device
{
public:
// construction/destruction
nes_bmc_kc885_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual u8 read_h(offs_t offset) override;
virtual void write_m(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
protected:
// device-level overrides
virtual ioport_constructor device_input_ports() const override;
private:
required_ioport m_jumper;
};
// ======================> nes_bmc_sfc12_device
class nes_bmc_sfc12_device : public nes_bmc_hik8_device
@ -1212,6 +1245,8 @@ DECLARE_DEVICE_TYPE(NES_BMC_15IN1, nes_bmc_15in1_device)
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_JY208, nes_bmc_jy208_device)
DECLARE_DEVICE_TYPE(NES_BMC_JY302, nes_bmc_jy302_device)
DECLARE_DEVICE_TYPE(NES_BMC_KC885, nes_bmc_kc885_device)
DECLARE_DEVICE_TYPE(NES_BMC_SFC12, nes_bmc_sfc12_device)
DECLARE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device)
DECLARE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device)

View File

@ -458,6 +458,8 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("bmc_sbig7in1", NES_BMC_SBIG7);
device.option_add_internal("bmc_hik8in1", NES_BMC_HIK8);
device.option_add_internal("bmc_jy208", NES_BMC_JY208);
device.option_add_internal("bmc_jy302", NES_BMC_JY302);
device.option_add_internal("bmc_kc885", NES_BMC_KC885);
device.option_add_internal("bmc_sfc12", NES_BMC_SFC12);
device.option_add_internal("bmc_hik4in1", NES_BMC_HIK4);
device.option_add_internal("bmc_mario7in1", NES_BMC_MARIO7IN1);

View File

@ -436,7 +436,7 @@ static const nes_mmc mmc_list[] =
// 398 JY-048 multicart, not in nes.xml?
{ 399, BATMAP_000 }, // homebrew game Star Versus
// 400 retroUSB (Sealie?) 8-bit XMAS 2017
// 401 Super 19-in-1 VIP 19, not in nes.xml?
{ 401, BMC_KC885 },
// 402 22-in-1 Olympic Games, not in nes.xml?
// 403 Tetris Family 19-in-1 that only works on Famiclones with 6502's BCD mode
{ 404, BMC_JY012005 },
@ -445,7 +445,7 @@ static const nes_mmc mmc_list[] =
// 407 VT03 PnP
// 408 Konami PnP
{ 409, SEALIE_DPCMCART }, // A Winner is You homebrew music cart
// 410 Unused or JY?
{ 410, BMC_JY302 },
{ 411, BMC_A88S1 },
// 412 INTV 10-in-1 PnP 2nd edition
{ 413, BATMAP_SRRX }, // homebrew game Super Russian Roulette

View File

@ -330,6 +330,8 @@ static const nes_pcb pcb_list[] =
{ "bmc_sbig7in1", BMC_SUPERBIG_7IN1 },
{ "bmc_hik8in1", BMC_HIK8IN1 },
{ "bmc_jy208", BMC_JY208 },
{ "bmc_jy302", BMC_JY302 },
{ "bmc_kc885", BMC_KC885 },
{ "bmc_sfc12", BMC_SFC12 },
{ "bmc_hik4in1", BMC_SUPERHIK_4IN1 },
{ "bmc_mario7in1", BMC_MARIOPARTY_7IN1 },

View File

@ -86,7 +86,7 @@ enum
TXC_MJBLOCK, TXC_STRIKEW, TXC_TW,
// Multigame Carts
BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_A88S1, BMC_F15, BMC_F600, BMC_L6IN1,
BMC_GN45, BMC_HIK8IN1, BMC_SFC12, BMC_JY208,
BMC_GN45, BMC_HIK8IN1, BMC_SFC12, BMC_JY208, BMC_JY302, BMC_KC885,
BMC_S24IN1SC03, BMC_T262, BMC_TELETUBBIES,
BMC_WS, BMC_SUPERBIG_7IN1, BMC_SUPERHIK_4IN1, BMC_BALLGAMES_11IN1,
BMC_MARIOPARTY_7IN1, BMC_GOLD_7IN1, BMC_SUPER_700IN1, BMC_FAMILY_4646,

View File

@ -90,6 +90,7 @@ void nes_state::machine_start()
BMC_8157,
BMC_970630C,
BMC_GOLD150,
BMC_KC885,
BMC_TELETUBBIES,
BMC_VT5201,
BTL_PALTHENA,