mirror of
https://github.com/holub/mame
synced 2025-07-03 09:06:08 +03:00
vii: use banking (nw)
This commit is contained in:
parent
95e29c600e
commit
e11707a3fe
@ -101,6 +101,7 @@ public:
|
|||||||
m_p_rowscroll(*this, "p_rowscroll"),
|
m_p_rowscroll(*this, "p_rowscroll"),
|
||||||
m_p_palette(*this, "p_palette"),
|
m_p_palette(*this, "p_palette"),
|
||||||
m_p_spriteram(*this, "p_spriteram"),
|
m_p_spriteram(*this, "p_spriteram"),
|
||||||
|
m_bank(*this, "cart"),
|
||||||
m_bios_rom(*this, "bios"),
|
m_bios_rom(*this, "bios"),
|
||||||
m_io_p1(*this, "P1")
|
m_io_p1(*this, "P1")
|
||||||
{ }
|
{ }
|
||||||
@ -118,8 +119,7 @@ public:
|
|||||||
required_shared_ptr<UINT16> m_p_rowscroll;
|
required_shared_ptr<UINT16> m_p_rowscroll;
|
||||||
required_shared_ptr<UINT16> m_p_palette;
|
required_shared_ptr<UINT16> m_p_palette;
|
||||||
required_shared_ptr<UINT16> m_p_spriteram;
|
required_shared_ptr<UINT16> m_p_spriteram;
|
||||||
|
required_memory_bank m_bank;
|
||||||
std::vector<UINT16> m_p_cart;
|
|
||||||
|
|
||||||
UINT32 m_current_bank;
|
UINT32 m_current_bank;
|
||||||
|
|
||||||
@ -585,10 +585,7 @@ void vii_state::switch_bank(UINT32 bank)
|
|||||||
if (bank != m_current_bank)
|
if (bank != m_current_bank)
|
||||||
{
|
{
|
||||||
m_current_bank = bank;
|
m_current_bank = bank;
|
||||||
if (m_cart_rom)
|
m_bank->set_entry(bank);
|
||||||
memcpy(&m_p_cart[0], m_cart_rom->base() + 0x400000 * bank * 2, 0x400000 * 2);
|
|
||||||
else
|
|
||||||
memcpy(&m_p_cart[0], m_bios_rom->base() + 0x400000 * bank * 2, 0x400000 * 2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -892,11 +889,6 @@ WRITE16_MEMBER( vii_state::spriteram_w )
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
READ16_MEMBER( vii_state::rom_r )
|
|
||||||
{
|
|
||||||
return m_p_cart[offset + 0x4000];
|
|
||||||
}
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( vii_mem, AS_PROGRAM, 16, vii_state )
|
static ADDRESS_MAP_START( vii_mem, AS_PROGRAM, 16, vii_state )
|
||||||
AM_RANGE( 0x000000, 0x0027ff ) AM_RAM AM_SHARE("p_ram")
|
AM_RANGE( 0x000000, 0x0027ff ) AM_RAM AM_SHARE("p_ram")
|
||||||
AM_RANGE( 0x002800, 0x0028ff ) AM_READWRITE(video_r, video_w)
|
AM_RANGE( 0x002800, 0x0028ff ) AM_READWRITE(video_r, video_w)
|
||||||
@ -905,7 +897,7 @@ static ADDRESS_MAP_START( vii_mem, AS_PROGRAM, 16, vii_state )
|
|||||||
AM_RANGE( 0x002c00, 0x002fff ) AM_RAM AM_SHARE("p_spriteram")
|
AM_RANGE( 0x002c00, 0x002fff ) AM_RAM AM_SHARE("p_spriteram")
|
||||||
AM_RANGE( 0x003000, 0x0037ff ) AM_READWRITE(audio_r, audio_w)
|
AM_RANGE( 0x003000, 0x0037ff ) AM_READWRITE(audio_r, audio_w)
|
||||||
AM_RANGE( 0x003d00, 0x003eff ) AM_READWRITE(io_r, io_w)
|
AM_RANGE( 0x003d00, 0x003eff ) AM_READWRITE(io_r, io_w)
|
||||||
AM_RANGE( 0x004000, 0x3fffff ) AM_READ(rom_r)
|
AM_RANGE( 0x000000, 0x3fffff ) AM_ROMBANK("cart")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( vii )
|
static INPUT_PORTS_START( vii )
|
||||||
@ -1020,18 +1012,23 @@ void vii_state::machine_start()
|
|||||||
m_controller_input[6] = 0xff;
|
m_controller_input[6] = 0xff;
|
||||||
m_controller_input[7] = 0;
|
m_controller_input[7] = 0;
|
||||||
|
|
||||||
m_p_cart.resize(0x400000);
|
|
||||||
|
|
||||||
if (m_cart && m_cart->exists())
|
if (m_cart && m_cart->exists())
|
||||||
{
|
{
|
||||||
std::string region_tag;
|
std::string region_tag;
|
||||||
m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
|
m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
|
||||||
memcpy(&m_p_cart[0], m_cart_rom->base(), 0x400000 * 2);
|
m_bank->configure_entries(0, ceilf((float)m_cart_rom->bytes()/0x800000), m_cart_rom->base(), 0x800000 );
|
||||||
|
m_bank->set_entry(0);
|
||||||
}
|
}
|
||||||
else if (m_spg243_mode == SPG243_VII) // Vii bios is banked
|
else if (m_spg243_mode == SPG243_VII) // Vii bios is banked
|
||||||
memcpy(&m_p_cart[0], m_bios_rom->base(), 0x400000 * 2);
|
{
|
||||||
|
m_bank->configure_entries(0, ceilf((float)m_bios_rom->bytes()/0x800000), m_bios_rom->base(), 0x800000 );
|
||||||
|
m_bank->set_entry(0);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
memcpy(&m_p_cart[0], memregion("maincpu")->base(), 0x400000 * 2);
|
{
|
||||||
|
m_bank->configure_entries(0, ceilf((float)memregion("maincpu")->bytes()/0x800000), memregion("maincpu")->base(), 0x800000 );
|
||||||
|
m_bank->set_entry(0);
|
||||||
|
}
|
||||||
|
|
||||||
m_video_regs[0x36] = 0xffff;
|
m_video_regs[0x36] = 0xffff;
|
||||||
m_video_regs[0x37] = 0xffff;
|
m_video_regs[0x37] = 0xffff;
|
||||||
|
Loading…
Reference in New Issue
Block a user