mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
namcos11.cpp : Cleanup bankswitch handler, Reduce runtime tag lookups
This commit is contained in:
parent
fdf806a5ac
commit
b3cfa10cac
@ -313,10 +313,13 @@ class namcos11_state : public driver_device
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
namcos11_state(const machine_config &mconfig, device_type type, const char *tag)
|
namcos11_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag)
|
||||||
m_sharedram(*this,"sharedram"),
|
, m_sharedram(*this, "sharedram")
|
||||||
m_maincpu(*this,"maincpu"),
|
, m_maincpu(*this, "maincpu")
|
||||||
m_mcu(*this,"c76")
|
, m_mcu(*this, "c76")
|
||||||
|
, m_bankedroms(*this, "bankedroms")
|
||||||
|
, m_bank(*this, "bank%u", 1)
|
||||||
|
, m_lightgun_io(*this, {"GUN1X", "GUN1Y", "GUN2X", "GUN2Y"})
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,7 +364,10 @@ private:
|
|||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<cpu_device> m_mcu;
|
required_device<cpu_device> m_mcu;
|
||||||
|
|
||||||
memory_bank *m_bank[8];
|
optional_memory_region m_bankedroms;
|
||||||
|
optional_memory_bank_array<8> m_bank;
|
||||||
|
optional_ioport_array<4> m_lightgun_io;
|
||||||
|
|
||||||
uint32_t m_n_bankoffset;
|
uint32_t m_n_bankoffset;
|
||||||
uint8_t m_su_83;
|
uint8_t m_su_83;
|
||||||
|
|
||||||
@ -427,27 +433,27 @@ READ16_MEMBER(namcos11_state::lightgun_r)
|
|||||||
switch( offset )
|
switch( offset )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
data = ioport( "GUN1X" )->read();
|
data = m_lightgun_io[0]->read();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
data = ioport( "GUN1Y" )->read();
|
data = m_lightgun_io[1]->read();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
data = ioport( "GUN1Y" )->read() + 1;
|
data = m_lightgun_io[1]->read() + 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
data = ioport( "GUN2X" )->read();
|
data = m_lightgun_io[2]->read();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
data = ioport( "GUN2Y" )->read();
|
data = m_lightgun_io[3]->read();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
data = ioport( "GUN2Y" )->read() + 1;
|
data = m_lightgun_io[3]->read() + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
verboselog(2, "lightgun_r( %08x, %08x ) %08x\n", offset, mem_mask, data );
|
verboselog(2, "lightgun_r( %08x, %08x ) %08x\n", offset, mem_mask, data );
|
||||||
@ -565,17 +571,13 @@ void namcos11_state::driver_start()
|
|||||||
m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(FUNC(namcos11_state::c76_speedup_r),this), write16_delegate(FUNC(namcos11_state::c76_speedup_w),this));
|
m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(FUNC(namcos11_state::c76_speedup_r),this), write16_delegate(FUNC(namcos11_state::c76_speedup_w),this));
|
||||||
}
|
}
|
||||||
|
|
||||||
memory_region *bankedroms = memregion( "bankedroms" );
|
if( m_bankedroms != nullptr )
|
||||||
if( bankedroms != nullptr )
|
|
||||||
{
|
{
|
||||||
uint8_t *base = bankedroms->base();
|
uint8_t *base = m_bankedroms->base();
|
||||||
int entries = bankedroms->bytes() / ( 1024 * 1024 );
|
int entries = m_bankedroms->bytes() / ( 1024 * 1024 );
|
||||||
|
|
||||||
static const char * const bankname[] = { "bank1", "bank2", "bank3", "bank4", "bank5", "bank6", "bank7", "bank8" };
|
|
||||||
|
|
||||||
for( int bank = 0; bank < 8; bank++ )
|
for( int bank = 0; bank < 8; bank++ )
|
||||||
{
|
{
|
||||||
m_bank[ bank ] = membank( bankname[ bank ] );
|
|
||||||
if( m_bank[ bank ] != nullptr )
|
if( m_bank[ bank ] != nullptr )
|
||||||
{
|
{
|
||||||
m_bank[ bank ]->configure_entries( 0, entries, base, 1024 * 1024 );
|
m_bank[ bank ]->configure_entries( 0, entries, base, 1024 * 1024 );
|
||||||
|
Loading…
Reference in New Issue
Block a user