metlclsh: Remove tag lookup for RAM bank and fix save state loading

This commit is contained in:
AJR 2020-12-20 17:50:50 -05:00
parent 5b92ad399c
commit 18e363ae60
3 changed files with 8 additions and 7 deletions

View File

@ -117,7 +117,7 @@ void metlclsh_state::metlclsh_slave_map(address_map &map)
map(0xc003, 0xc003).portr("DSW");
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(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(0xe401, 0xe401).w(FUNC(metlclsh_state::metlclsh_rambank_w));
map(0xe402, 0xe403).writeonly().share("scrollx");

View File

@ -18,6 +18,7 @@ public:
m_spriteram(*this, "spriteram"),
m_bgram(*this, "bgram"),
m_scrollx(*this, "scrollx"),
m_rambank(*this, "rambank"),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
m_gfxdecode(*this, "gfxdecode"),
@ -33,6 +34,7 @@ private:
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_bgram;
required_shared_ptr<uint8_t> m_scrollx;
required_memory_bank m_rambank;
std::unique_ptr<uint8_t[]> m_otherram;
/* video-related */

View File

@ -26,16 +26,11 @@
void metlclsh_state::metlclsh_rambank_w(uint8_t data)
{
m_rambank->set_entry(data & 1);
if (data & 1)
{
m_write_mask = 0;
membank("bank1")->set_base(m_bgram);
}
else
{
m_write_mask = 1 << (data >> 1);
membank("bank1")->set_base(m_otherram.get());
}
}
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_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);
}