mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
bus/nes: Added support for A88S-1 board and related multicarts. (#8547)
New working software list additions (nes.xml) ----------------------------------- 1997 Super 7 in 1 (JY-201) [MLX] 1997 Super 6 in 1 (JY-202) [MLX] 1997 Super 7 in 1 (JY-203) [MLX] 1997 Super 7 in 1 (JY-204) [MLX] 1997 Super 7 in 1 (JY-205) [MLX] 1997 Super 7 in 1 (JY-206) [MLX] * C++ is not C, appease the compiler
This commit is contained in:
parent
c4beb69431
commit
224b59597d
7 changed files with 205 additions and 2 deletions
90
hash/nes.xml
90
hash/nes.xml
|
@ -52115,6 +52115,96 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7j201">
|
||||
<description>1997 Super 7 in 1 (JY-201)</description>
|
||||
<year>1997</year>
|
||||
<publisher>J.Y. Company</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="a88s1" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-201).prg" size="524288" crc="9cbd3e46" sha1="22fc415f12784577f001cc869099646fca44cb36" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-201).chr" size="524288" crc="2bd6a3b9" sha1="e05518cfc75c87a2ac1148c86459bcbfd9b8de0f" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6j202">
|
||||
<description>1997 Super 6 in 1 (JY-202)</description>
|
||||
<year>1997</year>
|
||||
<publisher>J.Y. Company</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="a88s1" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1997 super 6-in-1 (jy-202).prg" size="524288" crc="8e0fbb39" sha1="b39be158a396d5200593146348258835a603c647" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1997 super 6-in-1 (jy-202).chr" size="524288" crc="1d7fbd76" sha1="0507c7faf786760c9d23e69293f7a098dc429f67" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7j203">
|
||||
<description>1997 Super 7 in 1 (JY-203)</description>
|
||||
<year>1997</year>
|
||||
<publisher>J.Y. Company</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="a88s1" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-203).prg" size="524288" crc="e6f92fb4" sha1="7aaf73138354ee1ccc4820b4f7583fdeadcc85e3" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-203).chr" size="524288" crc="6a07ab58" sha1="7987431bf7f6cb2bf5d66243477ac719e1c2ea27" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7j204">
|
||||
<description>1997 Super 7 in 1 (JY-204)</description>
|
||||
<year>1997</year>
|
||||
<publisher>J.Y. Company</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="a88s1" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-204).prg" size="524288" crc="709fd021" sha1="75c7861c574187e866a41750fefc3207f4da3ab7" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-204).chr" size="524288" crc="b40d4712" sha1="6b2302f8f8e4798a242f7944976dacbb13bb00bb" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7j205">
|
||||
<description>1997 Super 7 in 1 (JY-205)</description>
|
||||
<year>1997</year>
|
||||
<publisher>J.Y. Company</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="a88s1" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-205).prg" size="524288" crc="469c347c" sha1="38743af3e494f33f0a974b8c8c8df901d93df226" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-205).chr" size="524288" crc="7adad667" sha1="c0d5719dd545af977cef7c425567207c2056954b" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7j206">
|
||||
<description>1997 Super 7 in 1 (JY-206)</description>
|
||||
<year>1997</year>
|
||||
<publisher>J.Y. Company</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="a88s1" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-206).prg" size="524288" crc="1ffec616" sha1="2e8c2d51fa28d460ce03620eac2b5de33bcb4215" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1997 super 7-in-1 (jy-206).chr" size="524288" crc="02f10803" sha1="d8bc4e1fbbd14fc2279036df87bad148d2c27204" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!-- Sachen / Thin Chen (and clones) -->
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ DEFINE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device, "nes_sa9602b",
|
|||
DEFINE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device, "nes_shero", "NES Cart Street Hero PCB")
|
||||
//DEFINE_DEVICE_TYPE(NES_A9746, nes_a9746_device, "nes_bmc_a9746", "NES Cart A-9746 PCB")
|
||||
|
||||
DEFINE_DEVICE_TYPE(NES_A88S1, nes_a88s1_device, "nes_a88s1", "NES Cart BMC A88S-1 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_FCGJ8IN1, nes_fcgj8in1_device, "nes_fcgj8in1", "NES Cart BMC FC Genjin 8 in 1 PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_FK23C, nes_fk23c_device, "nes_fk23c", "NES Cart FK23C PCB")
|
||||
DEFINE_DEVICE_TYPE(NES_FK23CA, nes_fk23ca_device, "nes_fk23ca", "NES Cart FK23CA PCB")
|
||||
|
@ -203,6 +204,11 @@ nes_sachen_shero_device::nes_sachen_shero_device(const machine_config &mconfig,
|
|||
//{
|
||||
//}
|
||||
|
||||
nes_a88s1_device::nes_a88s1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_txrom_device(mconfig, NES_A88S1, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
nes_fcgj8in1_device::nes_fcgj8in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_txrom_device(mconfig, NES_FCGJ8IN1, tag, owner, clock)
|
||||
{
|
||||
|
@ -494,6 +500,23 @@ void nes_sachen_shero_device::pcb_reset()
|
|||
mmc3_common_initialize(0xff, 0x1ff, 0);
|
||||
}
|
||||
|
||||
void nes_a88s1_device::device_start()
|
||||
{
|
||||
mmc3_start();
|
||||
save_item(NAME(m_reg));
|
||||
|
||||
// power-on values for registers; they don't seem to change with soft reset
|
||||
m_reg[0] = 0x80;
|
||||
m_reg[1] = 0x82;
|
||||
}
|
||||
|
||||
void nes_a88s1_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
mmc3_common_initialize(0x1f, 0xff, 0);
|
||||
update_banks();
|
||||
}
|
||||
|
||||
void nes_fcgj8in1_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
|
@ -2252,6 +2275,70 @@ void nes_bmc_mario7in1_device::write_m(offs_t offset, uint8_t data)
|
|||
m_prgram[offset] = data;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-A88S-1
|
||||
|
||||
Games: 1997 Super 7 in 1, 6 in 1 (JY-201 to JY-206)
|
||||
|
||||
MMC3 clone with banking for multigame menu.
|
||||
|
||||
NES 2.0: mapper 411
|
||||
|
||||
In MAME: Preliminary supported.
|
||||
|
||||
TODO: Investigate...
|
||||
- Hokuto no Ken has broken sound on each cart it's on.
|
||||
- Bird Fighter boss fights have corrupt graphics.
|
||||
- whether not being able to reset from within certain
|
||||
games is correct. Examples are Samurai (title scroll
|
||||
only) and Bomber Man (in game only) on JY-202, or
|
||||
SD Gunman in JY-204.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_a88s1_device::update_banks()
|
||||
{
|
||||
u8 outer = bitswap<2>(m_reg[1], 6, 3);
|
||||
u8 size_128k = !BIT(m_reg[1], 1);
|
||||
|
||||
if (BIT(m_reg[0], 6)) // NROM mode
|
||||
{
|
||||
u8 bank = outer << 3 | bitswap<3>(m_reg[0], 2, 3, 0);
|
||||
u8 mode = BIT(m_reg[0], 1);
|
||||
prg16_89ab(bank & ~mode);
|
||||
prg16_cdef(bank | mode);
|
||||
}
|
||||
else // MMC3 mode
|
||||
{
|
||||
m_prg_base = (outer & (0xfe | size_128k)) << 4;
|
||||
m_prg_mask = 0x1f >> size_128k;
|
||||
set_prg(m_prg_base, m_prg_mask);
|
||||
}
|
||||
|
||||
m_chr_base = (m_reg[0] & 0x10) << 4 | (BIT(m_reg[1], 2) & size_128k) << 7;
|
||||
m_chr_mask = 0xff >> size_128k;
|
||||
set_chr(m_chr_source, m_chr_base, m_chr_mask);
|
||||
}
|
||||
|
||||
void nes_a88s1_device::prg_cb(int start, int bank)
|
||||
{
|
||||
if (!BIT(m_reg[0], 6))
|
||||
nes_txrom_device::prg_cb(start, bank);
|
||||
}
|
||||
|
||||
void nes_a88s1_device::write_l(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("a88s1 write_l, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
offset += 0x100;
|
||||
if (offset >= 0x1000)
|
||||
{
|
||||
m_reg[offset & 1] = data;
|
||||
update_banks();
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-F-15
|
||||
|
|
|
@ -430,6 +430,29 @@ private:
|
|||
#endif
|
||||
|
||||
|
||||
// ======================> nes_a88s1_device
|
||||
|
||||
class nes_a88s1_device : public nes_txrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_a88s1_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 prg_cb(int start, int bank) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
void update_banks();
|
||||
u8 m_reg[2];
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_fcgj8in1_device
|
||||
|
||||
class nes_fcgj8in1_device : public nes_txrom_device
|
||||
|
@ -899,6 +922,7 @@ DECLARE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device)
|
|||
DECLARE_DEVICE_TYPE(NES_A9746, nes_a9746_device)
|
||||
#endif
|
||||
|
||||
DECLARE_DEVICE_TYPE(NES_A88S1, nes_a88s1_device)
|
||||
DECLARE_DEVICE_TYPE(NES_FCGJ8IN1, nes_fcgj8in1_device)
|
||||
DECLARE_DEVICE_TYPE(NES_FK23C, nes_fk23c_device)
|
||||
DECLARE_DEVICE_TYPE(NES_FK23CA, nes_fk23ca_device)
|
||||
|
|
|
@ -418,6 +418,7 @@ void nes_cart(device_slot_interface &device)
|
|||
device.option_add_internal("bmc_reset42", NES_BMC_42IN1RESET); // mapper 226? or 233?
|
||||
device.option_add_internal("bmc_lc160", NES_BMC_LC160);
|
||||
// misc multigame cart MMC3 clone boards
|
||||
device.option_add_internal("a88s1", NES_A88S1);
|
||||
device.option_add_internal("fcgj8in1", NES_FCGJ8IN1);
|
||||
device.option_add_internal("fk23c", NES_FK23C);
|
||||
device.option_add_internal("fk23ca", NES_FK23CA);
|
||||
|
|
|
@ -446,7 +446,7 @@ static const nes_mmc mmc_list[] =
|
|||
// 408 Konami PnP
|
||||
// 409 (Sealie) homebrew game A Winner is You, 64MB music cart, easy to support if dump is available
|
||||
// 410 Unused or JY?
|
||||
// 411 various JY multicarts
|
||||
{ 411, BMC_A88S1 },
|
||||
// 412 INTV 10-in-1 PnP 2nd edition
|
||||
// 413 homebrew game Super Russian Roulette
|
||||
// 414 9999999-in-1 multicart
|
||||
|
|
|
@ -296,6 +296,7 @@ static const nes_pcb pcb_list[] =
|
|||
{ "bmc_8157", BMC_8157 },
|
||||
{ "bmc_g146", BMC_G146 },
|
||||
{ "bmc_11160", BMC_11160 },
|
||||
{ "a88s1", BMC_A88S1 },
|
||||
{ "fcgj8in1", BMC_FCGENJIN_8IN1 },
|
||||
{ "fk23c", BMC_FK23C },
|
||||
{ "fk23ca", BMC_FK23CA },
|
||||
|
|
|
@ -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_F15, BMC_GN45,
|
||||
BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_A88S1, BMC_F15, BMC_GN45,
|
||||
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 a new issue