mirror of
https://github.com/holub/mame
synced 2025-04-21 16:01:56 +03:00
bus/nes: Fixed bugs in Game Star type "A" boards. (#8425)
- Corrects certain games not loading or loading with corrupt graphics in different multicarts.
This commit is contained in:
parent
1a01c98fa2
commit
2d412c74d2
@ -79799,7 +79799,7 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6gs1" supported="partial">
|
||||
<software name="mc_6gs1">
|
||||
<description>6 in 1 (GK-L01A)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Game Star</publisher>
|
||||
@ -79821,7 +79821,7 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_6gs2" supported="partial">
|
||||
<software name="mc_6gs2">
|
||||
<description>6 in 1 (SuperGK-L02A)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Game Star?</publisher>
|
||||
@ -80013,13 +80013,13 @@ be better to redump them properly. -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- This has at least seven 16K NROM games. Perhaps there's a menu in the last 16K bank or it's meant to be reset based? -->
|
||||
<software name="mc_68" supported="no">
|
||||
<description>68 in 1</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_gka" />
|
||||
<feature name="pcb" value="BMC-GKA" /> <!-- Mapper 57? -->
|
||||
<feature name="slot" value="bmc_gka" /> <!-- FIXME: wrong board! -->
|
||||
<dataarea name="chr" size="65536">
|
||||
<rom name="68-in-1 (1-f1 race meq & 68-maross dli).chr" size="65536" crc="26c744ee" sha1="01af2b2fe5ba33b2de26e6b4fea6f40eddeda3fc" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
|
@ -182,8 +182,8 @@ nes_bmc_gb63_device::nes_bmc_gb63_device(const machine_config &mconfig, const ch
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_gka_device::nes_bmc_gka_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_GKA, tag, owner, clock), m_latch1(0), m_latch2(0)
|
||||
nes_bmc_gka_device::nes_bmc_gka_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_GKA, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
@ -661,19 +661,16 @@ void nes_bmc_gb63_device::pcb_reset()
|
||||
void nes_bmc_gka_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_latch1));
|
||||
save_item(NAME(m_latch2));
|
||||
save_item(NAME(m_reg));
|
||||
}
|
||||
|
||||
void nes_bmc_gka_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(0);
|
||||
chr8(0, m_chr_source);
|
||||
chr8(0, CHRROM);
|
||||
|
||||
m_latch1 = 0;
|
||||
m_latch2 = 0;
|
||||
m_reg[0] = m_reg[1] = 0;
|
||||
}
|
||||
|
||||
void nes_bmc_gkb_device::device_start()
|
||||
@ -1772,33 +1769,31 @@ uint8_t nes_bmc_gb63_device::read_h(offs_t offset)
|
||||
|
||||
iNES: mapper 57
|
||||
|
||||
In MESS: Supported.
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_gka_device::write_h(offs_t offset, uint8_t data)
|
||||
u8 nes_bmc_gka_device::read_m(offs_t offset)
|
||||
{
|
||||
LOG_MMC(("bmc_gka read_m, offset: %04x\n", offset));
|
||||
return 0; // TODO: menus differ by jumper/DIP settings readable at 0x6000.
|
||||
}
|
||||
|
||||
void nes_bmc_gka_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_gka write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
if (offset & 0x0800)
|
||||
m_latch2 = data;
|
||||
else
|
||||
m_latch1 = data;
|
||||
m_reg[BIT(offset, 11)] = data;
|
||||
|
||||
if (m_latch2 & 0x80)
|
||||
prg32(2 | (m_latch2 >> 6));
|
||||
else
|
||||
{
|
||||
prg16_89ab((m_latch2 >> 5) & 0x03);
|
||||
prg16_cdef((m_latch2 >> 5) & 0x03);
|
||||
}
|
||||
u8 bank = m_reg[1] >> 5;
|
||||
u8 mode = BIT(m_reg[1], 4);
|
||||
prg16_89ab(bank & ~mode);
|
||||
prg16_cdef(bank | mode);
|
||||
|
||||
set_nt_mirroring((m_latch2 & 0x08) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
|
||||
chr8((m_latch1 & 0x03) | (m_latch2 & 0x07) | ((m_latch2 & 0x10) >> 1), CHRROM);
|
||||
chr8((m_reg[0] & 0x40) >> 3 | (m_reg[1] & 0x04) | (m_reg[BIT(m_reg[0], 7)] & 0x03), CHRROM);
|
||||
set_nt_mirroring(BIT(m_reg[1], 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
Board BMC-GKB
|
||||
|
@ -396,9 +396,10 @@ class nes_bmc_gka_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_gka_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
nes_bmc_gka_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 u8 read_m(offs_t offset) override;
|
||||
virtual void write_h(offs_t offset, u8 data) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
@ -407,7 +408,7 @@ protected:
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
uint8_t m_latch1, m_latch2;
|
||||
u8 m_reg[2];
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user