mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00
metlclsh: Remove tag lookup for RAM bank and fix save state loading
This commit is contained in:
parent
5b92ad399c
commit
18e363ae60
@ -117,7 +117,7 @@ void metlclsh_state::metlclsh_slave_map(address_map &map)
|
|||||||
map(0xc003, 0xc003).portr("DSW");
|
map(0xc003, 0xc003).portr("DSW");
|
||||||
map(0xc0c0, 0xc0c0).w(FUNC(metlclsh_state::metlclsh_cause_nmi2)); // cause nmi on cpu #1
|
map(0xc0c0, 0xc0c0).w(FUNC(metlclsh_state::metlclsh_cause_nmi2)); // cause nmi on cpu #1
|
||||||
map(0xc0c1, 0xc0c1).w(FUNC(metlclsh_state::metlclsh_ack_irq2)); // irq ack
|
map(0xc0c1, 0xc0c1).w(FUNC(metlclsh_state::metlclsh_ack_irq2)); // irq ack
|
||||||
map(0xd000, 0xd7ff).bankr("bank1").w(FUNC(metlclsh_state::metlclsh_bgram_w)).share("bgram"); // this is banked
|
map(0xd000, 0xd7ff).bankr("rambank").w(FUNC(metlclsh_state::metlclsh_bgram_w)).share("bgram"); // this is banked
|
||||||
map(0xe301, 0xe301).w(FUNC(metlclsh_state::metlclsh_flipscreen_w)); // 0/1
|
map(0xe301, 0xe301).w(FUNC(metlclsh_state::metlclsh_flipscreen_w)); // 0/1
|
||||||
map(0xe401, 0xe401).w(FUNC(metlclsh_state::metlclsh_rambank_w));
|
map(0xe401, 0xe401).w(FUNC(metlclsh_state::metlclsh_rambank_w));
|
||||||
map(0xe402, 0xe403).writeonly().share("scrollx");
|
map(0xe402, 0xe403).writeonly().share("scrollx");
|
||||||
|
@ -18,6 +18,7 @@ public:
|
|||||||
m_spriteram(*this, "spriteram"),
|
m_spriteram(*this, "spriteram"),
|
||||||
m_bgram(*this, "bgram"),
|
m_bgram(*this, "bgram"),
|
||||||
m_scrollx(*this, "scrollx"),
|
m_scrollx(*this, "scrollx"),
|
||||||
|
m_rambank(*this, "rambank"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_subcpu(*this, "sub"),
|
m_subcpu(*this, "sub"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
@ -33,6 +34,7 @@ private:
|
|||||||
required_shared_ptr<uint8_t> m_spriteram;
|
required_shared_ptr<uint8_t> m_spriteram;
|
||||||
required_shared_ptr<uint8_t> m_bgram;
|
required_shared_ptr<uint8_t> m_bgram;
|
||||||
required_shared_ptr<uint8_t> m_scrollx;
|
required_shared_ptr<uint8_t> m_scrollx;
|
||||||
|
required_memory_bank m_rambank;
|
||||||
std::unique_ptr<uint8_t[]> m_otherram;
|
std::unique_ptr<uint8_t[]> m_otherram;
|
||||||
|
|
||||||
/* video-related */
|
/* video-related */
|
||||||
|
@ -26,16 +26,11 @@
|
|||||||
|
|
||||||
void metlclsh_state::metlclsh_rambank_w(uint8_t data)
|
void metlclsh_state::metlclsh_rambank_w(uint8_t data)
|
||||||
{
|
{
|
||||||
|
m_rambank->set_entry(data & 1);
|
||||||
if (data & 1)
|
if (data & 1)
|
||||||
{
|
|
||||||
m_write_mask = 0;
|
m_write_mask = 0;
|
||||||
membank("bank1")->set_base(m_bgram);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
m_write_mask = 1 << (data >> 1);
|
m_write_mask = 1 << (data >> 1);
|
||||||
membank("bank1")->set_base(m_otherram.get());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void metlclsh_state::metlclsh_gfxbank_w(uint8_t data)
|
void metlclsh_state::metlclsh_gfxbank_w(uint8_t data)
|
||||||
@ -141,6 +136,10 @@ void metlclsh_state::video_start()
|
|||||||
m_bg_tilemap->set_transparent_pen(0);
|
m_bg_tilemap->set_transparent_pen(0);
|
||||||
m_fg_tilemap->set_transparent_pen(0);
|
m_fg_tilemap->set_transparent_pen(0);
|
||||||
|
|
||||||
|
m_rambank->configure_entry(0, m_otherram.get());
|
||||||
|
m_rambank->configure_entry(1, m_bgram.target());
|
||||||
|
m_rambank->set_entry(0);
|
||||||
|
|
||||||
save_pointer(NAME(m_otherram), 0x800);
|
save_pointer(NAME(m_otherram), 0x800);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user