mirror of
https://github.com/holub/mame
synced 2025-04-21 16:01:56 +03:00
bus/nes: Improved 830118C multicarts, all menu items now load. (#8682)
New working software list additions (nes.xml) ----------------------------------- 1994 New Series Red Pig 7 in 1 (EW-002) [anonymous] 1994 Super HiK 7 in 1 (M-026) [anonymous] 1994 Super HiK 7 in 1 (M-027) [anonymous] Software list items promoted to working (nes.xml) --------------------------------------- 7 in 1 (M-022)
This commit is contained in:
parent
72d35e07c8
commit
3988b5c368
51
hash/nes.xml
51
hash/nes.xml
@ -81386,6 +81386,22 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7ew2">
|
||||
<description>1994 New Series Red Pig 7 in 1 (EW-002)</description>
|
||||
<year>1994</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_830118c" />
|
||||
<feature name="pcb" value="BMC-830118C" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1994 new series red pig 7-in-1 (ew-002).prg" size="524288" crc="31620c48" sha1="92b4fa687e69dcc2cd75e458ec38c5ed6ff623cf" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1994 new series red pig 7-in-1 (ew-002).chr" size="524288" crc="b6d9b8e7" sha1="28bde7b0ef3d7aeb8cb6f02dbdab89a7b8554a51" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7k603">
|
||||
<description>7 in 1 (K7603)</description>
|
||||
<year>19??</year>
|
||||
@ -81402,7 +81418,8 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7m22" supported="no">
|
||||
<!-- Guevara crashes after beating the first boss. Bad dump or bug on cartridge? -->
|
||||
<software name="mc_7m22">
|
||||
<description>7 in 1 (M-022)</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
@ -81418,6 +81435,38 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7m26">
|
||||
<description>1994 Super HiK 7 in 1 (M-026)</description>
|
||||
<year>1994</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_830118c" />
|
||||
<feature name="pcb" value="BMC-830118C" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1994 super hik 7-in-1 (m-026).prg" size="524288" crc="53588417" sha1="bb8354c11e7d3110bd95d1e149bb11c0f35ed455" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1994 super hik 7-in-1 (m-026).chr" size="524288" crc="186291b1" sha1="26b70492774419f51d55c2d23cf9f84bc0fbf7b5" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7m27">
|
||||
<description>1994 Super HiK 7 in 1 (M-027)</description>
|
||||
<year>1994</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_830118c" />
|
||||
<feature name="pcb" value="BMC-830118C" />
|
||||
<dataarea name="prg" size="524288">
|
||||
<rom name="1994 super hik 7-in-1 (m-027).prg" size="524288" crc="8c1523d8" sha1="884b3b675612136fcc5e0fcff0274812d2015566" status="baddump" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="524288">
|
||||
<rom name="1994 super hik 7-in-1 (m-027).chr" size="524288" crc="70f633d3" sha1="8ce05af67cd35062b2039c16f90b4f1e3cef8716" status="baddump" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_7" supported="no">
|
||||
<description>7 in 1</description>
|
||||
<year>19??</year>
|
||||
|
@ -384,8 +384,8 @@ nes_bmc_820720c_device::nes_bmc_820720c_device(const machine_config &mconfig, co
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_830118c_device::nes_bmc_830118c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_txrom_device(mconfig, NES_BMC_830118C, tag, owner, clock), m_reg(0)
|
||||
nes_bmc_830118c_device::nes_bmc_830118c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_txrom_device(mconfig, NES_BMC_830118C, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
@ -911,18 +911,10 @@ void nes_bmc_820720c_device::pcb_reset()
|
||||
mmc3_common_initialize(0x0f, 0xff, 0);
|
||||
}
|
||||
|
||||
void nes_bmc_830118c_device::device_start()
|
||||
{
|
||||
mmc3_start();
|
||||
save_item(NAME(m_reg));
|
||||
}
|
||||
|
||||
void nes_bmc_830118c_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
|
||||
m_reg = 0;
|
||||
mmc3_common_initialize(0x7f, 0x7f, 0);
|
||||
mmc3_common_initialize(0x0f, 0x7f, 0);
|
||||
}
|
||||
|
||||
void nes_bmc_830832c_device::pcb_reset()
|
||||
@ -3212,46 +3204,44 @@ void nes_bmc_820720c_device::write_h(offs_t offset, u8 data)
|
||||
|
||||
BMC-830118C
|
||||
|
||||
Games: 7 in 1 (EW-002, M-022, M-026, M-027)
|
||||
|
||||
MMC3 clone
|
||||
MMC3 clone with banking for multigame menu.
|
||||
|
||||
NES 2.0: mapper 348
|
||||
|
||||
In MESS: Very Preliminary Support
|
||||
In MAME: Preliminary supported.
|
||||
|
||||
TODO: Only M-022 seems to reliably soft reset to the
|
||||
menu for all games. The other three carts are hit or
|
||||
miss. MMC3 games in particular are not likely to
|
||||
reset to the menu. Investigate further...
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_830118c_device::prg_cb(int start, int bank)
|
||||
{
|
||||
if ((m_reg & 0x0c) != 0x0c)
|
||||
prg8_x(start, (bank & 0x0f) | ((m_reg & 0x0c) << 2));
|
||||
else
|
||||
if (m_prg_base == 0x30)
|
||||
{
|
||||
if (start == 0)
|
||||
if (start <= 1)
|
||||
{
|
||||
prg8_89((bank & 0x0f) | ((m_reg & 0x0c) << 2));
|
||||
prg8_ab((bank & 0x0f) | 0x20);
|
||||
}
|
||||
else if (start == 2)
|
||||
{
|
||||
prg8_cd((bank & 0x0f) | ((m_reg & 0x0c) << 2));
|
||||
prg8_ef((bank & 0x0f) | 0x20);
|
||||
prg8_x(start, bank & ~2);
|
||||
prg8_x(start + 2, bank | 2);
|
||||
}
|
||||
}
|
||||
else
|
||||
nes_txrom_device::prg_cb(start, bank);
|
||||
}
|
||||
|
||||
void nes_bmc_830118c_device::chr_cb(int start, int bank, int source)
|
||||
{
|
||||
chr1_x(start, (bank & 0x7f) | ((m_reg & 0x0c) << 5), source);
|
||||
}
|
||||
|
||||
void nes_bmc_830118c_device::write_m(offs_t offset, uint8_t data)
|
||||
void nes_bmc_830118c_device::write_m(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_830118c write_m, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
if (offset >= 0x800 && offset < 0x900)
|
||||
if ((m_wram_protect & 0xc0) == 0x80)
|
||||
{
|
||||
m_reg = data;
|
||||
m_prg_base = (data & 0x0c) << 2;
|
||||
set_prg(m_prg_base, m_prg_mask);
|
||||
m_chr_base = m_prg_base << 3;
|
||||
set_chr(m_chr_source, m_chr_base, m_chr_mask);
|
||||
}
|
||||
}
|
||||
|
@ -954,20 +954,12 @@ class nes_bmc_830118c_device : public nes_txrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_830118c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
nes_bmc_830118c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
virtual void write_m(offs_t offset, uint8_t data) override;
|
||||
virtual void write_m(offs_t offset, u8 data) override;
|
||||
virtual void prg_cb(int start, int bank) override;
|
||||
virtual void chr_cb(int start, int bank, int source) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
uint8_t m_reg;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user