mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
Merge pull request #8561 from 0kmg/nes-mapper265
bus/nes: Improved emulation for T-262 board and related multicarts.
This commit is contained in:
commit
5925830d6a
3 changed files with 64 additions and 30 deletions
36
hash/nes.xml
36
hash/nes.xml
|
@ -78150,6 +78150,21 @@ be better to redump them properly. -->
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_11a42">
|
||||
<description>11 in 1 (A-042)</description>
|
||||
<year>19??</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="t262" />
|
||||
<dataarea name="prg" size="1048576">
|
||||
<rom name="11-in-1 (a-042).prg" size="1048576" crc="77e9ee96" sha1="e4b61c2da62d2854e3ab3ac4e27edc4af68e646c" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_11bal">
|
||||
<description>11 in 1 Ball Series</description>
|
||||
<year>19??</year>
|
||||
|
@ -79268,6 +79283,7 @@ be better to redump them properly. -->
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Jackal and Rush'n Attack are swapped in menu. Is this a cartridge bug or due to bad dump? -->
|
||||
<software name="mc_4d10">
|
||||
<description>4 in 1 (D-010)</description>
|
||||
<year>19??</year>
|
||||
|
@ -80306,6 +80322,21 @@ be better to redump them properly. -->
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6a17">
|
||||
<description>1994 Super HiK 6 in 1 (A-017)</description>
|
||||
<year>1994</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="t262" />
|
||||
<dataarea name="prg" size="655360">
|
||||
<rom name="1994 super hik 6-in-1 (a-017).prg" size="655360" crc="d7c794d9" sha1="1ec64b3162a75a12f33a3e2b88c345e18121290b" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6a30">
|
||||
<description>Super HiK 6 in 1 (A-030)</description>
|
||||
<year>199?</year>
|
||||
|
@ -80321,7 +80352,7 @@ be better to redump them properly. -->
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6et40" supported="partial">
|
||||
<software name="mc_6et40">
|
||||
<description>6 in 1 (ET40, 840726c, 43-203)</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
|
@ -80869,8 +80900,7 @@ be better to redump them properly. -->
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Issues with Side Pocket gfx -->
|
||||
<software name="mc_8et40" supported="partial">
|
||||
<software name="mc_8et40">
|
||||
<description>8 in 1 (ET40, 821242c)</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
|
|
|
@ -150,8 +150,8 @@ nes_a65as_device::nes_a65as_device(const machine_config &mconfig, const char *ta
|
|||
{
|
||||
}
|
||||
|
||||
nes_t262_device::nes_t262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_nrom_device(mconfig, NES_T262, tag, owner, clock), m_latch1(0), m_latch2(0)
|
||||
nes_t262_device::nes_t262_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_T262, tag, owner, clock), m_latch(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -547,19 +547,16 @@ void nes_a65as_device::pcb_reset()
|
|||
void nes_t262_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_latch1));
|
||||
save_item(NAME(m_latch2));
|
||||
save_item(NAME(m_latch));
|
||||
}
|
||||
|
||||
void nes_t262_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(7);
|
||||
chr8(0, m_chr_source);
|
||||
chr8(0, CHRRAM);
|
||||
|
||||
m_latch1 = 0;
|
||||
m_latch2 = 0;
|
||||
m_latch = 0;
|
||||
}
|
||||
|
||||
void nes_novel1_device::device_start()
|
||||
|
@ -1446,34 +1443,42 @@ void nes_a65as_device::write_h(offs_t offset, uint8_t data)
|
|||
|
||||
Board BMC-T-262
|
||||
|
||||
Games: 4-in-1 (D-010), 8-in-1 (A-020)
|
||||
Games: 4-in-1 (D-010), 8-in-1 (A-020), and others
|
||||
|
||||
In MESS: Supported
|
||||
NES 2.0: mapper 265
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
TODO: Gunsmoke on 8-in-1 (ET40) has invisible sprites
|
||||
that suddenly appear closer to the bottom of the screen.
|
||||
Mirroring is correct, so is this a bug on the cartridge?
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_t262_device::write_h(offs_t offset, uint8_t data)
|
||||
void nes_t262_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
uint8_t mmc_helper;
|
||||
LOG_MMC(("t262 write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
if (m_latch2 || offset == 0)
|
||||
if (!BIT(m_latch, 13))
|
||||
{
|
||||
m_latch1 = (m_latch1 & 0x38) | (data & 0x07);
|
||||
prg16_89ab(m_latch1);
|
||||
m_latch = offset;
|
||||
set_nt_mirroring(BIT(m_latch, 1) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
}
|
||||
else
|
||||
|
||||
u8 bank = (m_latch & 0x300) >> 3 | (m_latch & 0x60) >> 2 | (data & 0x07); // NesDev shows the high bit here, but is it correct? So far no cart is large enough to use this.
|
||||
u8 mode = BIT(m_latch, 0);
|
||||
if (BIT(m_latch, 7)) // NROM mode
|
||||
{
|
||||
m_latch2 = 1;
|
||||
set_nt_mirroring(BIT(data, 1) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
mmc_helper = ((offset >> 3) & 0x20) | ((offset >> 2) & 0x18);
|
||||
m_latch1 = mmc_helper | (m_latch1 & 0x07);
|
||||
prg16_89ab(m_latch1);
|
||||
prg16_cdef(mmc_helper | 0x07);
|
||||
prg16_89ab(bank & ~mode);
|
||||
prg16_cdef(bank | mode);
|
||||
}
|
||||
else // UNROM mode
|
||||
{
|
||||
prg16_89ab(bank);
|
||||
prg16_cdef(bank | 0x07);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-NOVELDIAMOND and BMC-999999in1
|
||||
|
@ -1507,7 +1512,6 @@ void nes_novel2_device::write_h(offs_t offset, uint8_t data)
|
|||
chr8(offset >> 3, CHRROM);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
Board UNL-STUDYNGAME
|
||||
|
|
|
@ -161,9 +161,9 @@ class nes_t262_device : public nes_nrom_device
|
|||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_t262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
nes_t262_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
virtual void write_h(offs_t offset, uint8_t data) override;
|
||||
virtual void write_h(offs_t offset, u8 data) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
|
@ -172,7 +172,7 @@ protected:
|
|||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
uint8_t m_latch1, m_latch2;
|
||||
u16 m_latch;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue