(MESS) speeding up slot implementation of the SVP add-on chip. nw.

This commit is contained in:
Fabio Priuli 2013-03-22 11:03:16 +00:00
parent 98ac2b1071
commit a219ff2db0
4 changed files with 21 additions and 4 deletions

View File

@ -335,6 +335,10 @@ bool base_md_cart_slot_device::call_load()
if (res == IMAGE_INIT_PASS)
{
//speed-up rom access from SVP add-on, if present
if (m_type == SEGA_SVP)
m_cart->set_bank_to_rom("cart_svp", 0x800/2);
// STEP 3: install memory handlers for this type of cart
setup_custom_mappers();

View File

@ -109,6 +109,7 @@ public:
virtual UINT16* get_nvram_base() { return m_nvram; };
virtual UINT32 get_rom_size() { return m_rom_size; };
virtual UINT32 get_nvram_size() { return m_nvram_size; };
virtual void set_bank_to_rom(const char *banktag, UINT32 offset) {};
void rom_map_setup(UINT32 size);
UINT32 get_padded_size(UINT32 size);

View File

@ -314,10 +314,10 @@ INPUT_PORTS_END
//-------------------------------------------------
ADDRESS_MAP_START( md_svp_ssp_map, AS_PROGRAM, 16, md_rom_svp_device )
AM_RANGE(0x0000, 0x03ff) AM_READ(rom_read1)
AM_RANGE(0x0400, 0xffff) AM_READ(rom_read2)
// AM_RANGE(0x0000, 0x03ff) AM_ROMBANK("bank3")
// AM_RANGE(0x0400, 0xffff) AM_ROMBANK("bank4")
// AM_RANGE(0x0000, 0x03ff) AM_READ(rom_read1)
// AM_RANGE(0x0400, 0xffff) AM_READ(rom_read2)
AM_RANGE(0x0000, 0x03ff) AM_ROMBANK("iram_svp")
AM_RANGE(0x0400, 0xffff) AM_ROMBANK("cart_svp")
ADDRESS_MAP_END
//-------------------------------------------------
@ -361,6 +361,13 @@ ioport_constructor md_rom_svp_device::device_input_ports() const
}
void md_rom_svp_device::set_bank_to_rom(const char *banktag, UINT32 offset)
{
if (membank(banktag))
membank(banktag)->set_base(m_rom + offset);
}
void md_rom_svp_device::device_start()
{
memset(m_pmac_read, 0, ARRAY_LENGTH(m_pmac_read));
@ -373,8 +380,12 @@ void md_rom_svp_device::device_start()
m_xst2 = 0;
/* SVP stuff */
// DRAM
m_dram = auto_alloc_array(machine(), UINT8, 0x20000);
// IRAM
m_iram = auto_alloc_array(machine(), UINT8, 0x800);
this->membank("iram_svp")->set_base(m_iram);
// the other bank, "cart_svp", is setup at call_load
}
READ16_MEMBER(md_rom_svp_device::read)

View File

@ -24,6 +24,7 @@ public:
virtual void device_config_complete() { m_shortname = "md_rom_svp"; }
virtual machine_config_constructor device_mconfig_additions() const;
virtual ioport_constructor device_input_ports() const;
virtual void set_bank_to_rom(const char *banktag, UINT32 offset);
required_device<device_t> m_svp;
required_ioport m_test_ipt;