gauntlet: modernize slapstic hookup

This commit is contained in:
Olivier Galibert 2020-12-10 11:50:10 +01:00
parent 5c8c69fbc2
commit 2b3824d7ff
2 changed files with 22 additions and 3 deletions

View File

@ -259,7 +259,7 @@ void gauntlet_state::main_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x037fff).mirror(0x280000).rom();
map(0x038000, 0x03ffff).mirror(0x280000).rom(); // slapstic maps here
map(0x038000, 0x03ffff).mirror(0x280000).bankr(m_slapstic_bank); // slapstic maps here
map(0x040000, 0x07ffff).mirror(0x280000).rom();
// MBUS
@ -1651,10 +1651,24 @@ void gauntlet_state::swap_memory(void *ptr1, void *ptr2, int bytes)
}
}
void gauntlet_state::slapstic_tweak(offs_t offset, u16 &, u16)
{
m_slapstic->slapstic_tweak(m_maincpu->space(AS_PROGRAM), (offset >> 1) & 0x3fff);
m_slapstic_bank->set_entry(m_slapstic->slapstic_bank());
}
void gauntlet_state::machine_reset()
{
m_slapstic_bank->set_entry(m_slapstic->slapstic_bank());
}
void gauntlet_state::common_init(int vindctr2)
{
uint8_t *rom = memregion("maincpu")->base();
m_slapstic->legacy_configure(*m_maincpu, 0x038000, 0, memregion("maincpu")->base() + 0x38000);
u8 *rom = memregion("maincpu")->base();
m_slapstic_bank->configure_entries(0, 4, rom + 0x38000, 0x2000);
m_maincpu->space(AS_PROGRAM).install_readwrite_tap(0x38000, 0x3ffff, 0x280000, "slapstic",
[this](offs_t offset, u16 &data, u16 mem_mask) { slapstic_tweak(offset, data, mem_mask); },
[this](offs_t offset, u16 &data, u16 mem_mask) { slapstic_tweak(offset, data, mem_mask); });
// swap the top and bottom halves of the main CPU ROM images
swap_memory(rom + 0x000000, rom + 0x008000, 0x8000);

View File

@ -35,6 +35,7 @@ public:
m_tms5220(*this, "tms"),
m_soundctl(*this, "soundctl"),
m_slapstic(*this, "slapstic"),
m_slapstic_bank(*this, "slapstic_bank"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_playfield_tilemap(*this, "playfield"),
@ -53,6 +54,7 @@ public:
protected:
virtual void video_start() override;
virtual void machine_reset() override;
private:
void video_int_ack_w(uint16_t data = 0);
@ -86,6 +88,7 @@ private:
required_device<tms5220_device> m_tms5220;
required_device<ls259_device> m_soundctl;
required_device<atari_slapstic_device> m_slapstic;
required_memory_bank m_slapstic_bank;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
@ -101,6 +104,8 @@ private:
uint8_t m_playfield_color_bank;
static const atari_motion_objects_config s_mob_config;
void slapstic_tweak(offs_t offset, u16 &, u16);
};
#endif // MAME_INCLUDES_GAUNTLET_H