mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
3do.c: Reduce tagmap lookups (nw)
This commit is contained in:
parent
2c45ab5199
commit
cb294f862b
@ -131,11 +131,11 @@ INPUT_PORTS_END
|
||||
|
||||
void _3do_state::machine_start()
|
||||
{
|
||||
membank("bank2")->set_base(memregion("user1")->base());
|
||||
m_bank2->set_base(memregion("user1")->base());
|
||||
|
||||
/* configure overlay */
|
||||
membank("bank1")->configure_entry(0, m_dram);
|
||||
membank("bank1")->configure_entry(1, memregion("user1")->base());
|
||||
m_bank1->configure_entry(0, m_dram);
|
||||
m_bank1->configure_entry(1, memregion("user1")->base());
|
||||
|
||||
m_3do_slow2_init();
|
||||
m_3do_madam_init();
|
||||
@ -145,7 +145,7 @@ void _3do_state::machine_start()
|
||||
void _3do_state::machine_reset()
|
||||
{
|
||||
/* start with overlay enabled */
|
||||
membank("bank1")->set_entry(1);
|
||||
m_bank1->set_entry(1);
|
||||
|
||||
m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */
|
||||
}
|
||||
|
@ -135,10 +135,13 @@ class _3do_state : public driver_device
|
||||
{
|
||||
public:
|
||||
_3do_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag) ,
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_dram(*this, "dram"),
|
||||
m_vram(*this, "vram"){ }
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_dram(*this, "dram")
|
||||
, m_vram(*this, "vram")
|
||||
, m_bank1(*this, "bank1")
|
||||
, m_bank2(*this, "bank2")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_shared_ptr<UINT32> m_dram;
|
||||
@ -168,6 +171,10 @@ public:
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( timer_x16_cb );
|
||||
|
||||
protected:
|
||||
required_memory_bank m_bank1;
|
||||
required_memory_bank m_bank2;
|
||||
|
||||
private:
|
||||
void m_3do_slow2_init( void );
|
||||
void m_3do_madam_init( void );
|
||||
|
@ -197,7 +197,7 @@ WRITE8_MEMBER(_3do_state::_3do_nvarea_w) { m_nvram[offset] = data; }
|
||||
READ32_MEMBER(_3do_state::_3do_slow2_r){
|
||||
UINT32 data = 0;
|
||||
|
||||
logerror( "%08X: UNK_318 read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset );
|
||||
logerror( "%08X: UNK_318 read offset = %08X\n", m_maincpu->pc(), offset );
|
||||
|
||||
switch( offset ) {
|
||||
case 0: /* Boot ROM checks here and expects to read 1, 0, 1, 0 in the lowest bit */
|
||||
@ -211,14 +211,14 @@ READ32_MEMBER(_3do_state::_3do_slow2_r){
|
||||
|
||||
WRITE32_MEMBER(_3do_state::_3do_slow2_w)
|
||||
{
|
||||
logerror( "%08X: UNK_318 write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset, data, mem_mask );
|
||||
logerror( "%08X: UNK_318 write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset, data, mem_mask );
|
||||
|
||||
switch( offset )
|
||||
{
|
||||
case 0: /* Boot ROM writes 03180000 here and then starts reading some things */
|
||||
{
|
||||
/* disable ROM overlay */
|
||||
membank("bank1")->set_entry(0);
|
||||
m_bank1->set_entry(0);
|
||||
}
|
||||
m_slow2.cg_input = m_slow2.cg_input << 1 | ( data & 0x00000001 );
|
||||
m_slow2.cg_w_count ++;
|
||||
@ -236,7 +236,7 @@ READ32_MEMBER(_3do_state::_3do_svf_r)
|
||||
UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9;
|
||||
UINT32 *p = m_vram + addr;
|
||||
|
||||
logerror( "%08X: SVF read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 );
|
||||
logerror( "%08X: SVF read offset = %08X\n", m_maincpu->pc(), offset*4 );
|
||||
|
||||
switch( offset & ( 0xE000 / 4 ) )
|
||||
{
|
||||
@ -261,7 +261,7 @@ WRITE32_MEMBER(_3do_state::_3do_svf_w)
|
||||
UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9;
|
||||
UINT32 *p = m_vram + addr;
|
||||
|
||||
logerror( "%08X: SVF write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
|
||||
logerror( "%08X: SVF write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
|
||||
|
||||
switch( offset & ( 0xe000 / 4 ) )
|
||||
{
|
||||
@ -297,7 +297,7 @@ WRITE32_MEMBER(_3do_state::_3do_svf_w)
|
||||
|
||||
|
||||
READ32_MEMBER(_3do_state::_3do_madam_r){
|
||||
logerror( "%08X: MADAM read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 );
|
||||
logerror( "%08X: MADAM read offset = %08X\n", m_maincpu->pc(), offset*4 );
|
||||
|
||||
switch( offset ) {
|
||||
case 0x0000/4: /* 03300000 - Revision */
|
||||
@ -448,7 +448,7 @@ READ32_MEMBER(_3do_state::_3do_madam_r){
|
||||
case 0x07f8/4:
|
||||
return m_madam.mult_status;
|
||||
default:
|
||||
logerror( "%08X: unhandled MADAM read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 );
|
||||
logerror( "%08X: unhandled MADAM read offset = %08X\n", m_maincpu->pc(), offset*4 );
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@ -459,12 +459,12 @@ WRITE32_MEMBER(_3do_state::_3do_madam_w){
|
||||
if(offset == 0)
|
||||
{
|
||||
if(data == 0x0a)
|
||||
logerror( "%08X: MADAM write offset = %08X, data = %08X (\\n), mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
|
||||
logerror( "%08X: MADAM write offset = %08X, data = %08X (\\n), mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
|
||||
else
|
||||
logerror( "%08X: MADAM write offset = %08X, data = %08X (%c), mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, data, mem_mask );
|
||||
logerror( "%08X: MADAM write offset = %08X, data = %08X (%c), mask = %08X\n", m_maincpu->pc(), offset*4, data, data, mem_mask );
|
||||
}
|
||||
else
|
||||
logerror( "%08X: MADAM write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
|
||||
logerror( "%08X: MADAM write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
|
||||
|
||||
switch( offset ) {
|
||||
case 0x0000/4:
|
||||
@ -641,7 +641,7 @@ WRITE32_MEMBER(_3do_state::_3do_madam_w){
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror( "%08X: unhandled MADAM write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
|
||||
logerror( "%08X: unhandled MADAM write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -655,7 +655,7 @@ READ32_MEMBER(_3do_state::_3do_clio_r)
|
||||
{
|
||||
if(offset != 0x200/4 && offset != 0x40/4 && offset != 0x44/4 && offset != 0x48/4 && offset != 0x4c/4 &&
|
||||
offset != 0x118/4 && offset != 0x11c/4)
|
||||
logerror( "%08X: CLIO read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset * 4 );
|
||||
logerror( "%08X: CLIO read offset = %08X\n", m_maincpu->pc(), offset * 4 );
|
||||
}
|
||||
|
||||
/* TODO: for debug, to be removed once that we write the CPU core */
|
||||
@ -770,7 +770,7 @@ READ32_MEMBER(_3do_state::_3do_clio_r)
|
||||
|
||||
default:
|
||||
if (!space.debugger_access())
|
||||
logerror( "%08X: unhandled CLIO read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset * 4 );
|
||||
logerror( "%08X: unhandled CLIO read offset = %08X\n", m_maincpu->pc(), offset * 4 );
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@ -780,7 +780,7 @@ WRITE32_MEMBER(_3do_state::_3do_clio_w)
|
||||
{
|
||||
if(offset != 0x200/4 && offset != 0x40/4 && offset != 0x44/4 && offset != 0x48/4 && offset != 0x4c/4 &&
|
||||
offset != 0x118/4 && offset != 0x11c/4)
|
||||
logerror( "%08X: CLIO write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
|
||||
logerror( "%08X: CLIO write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
|
||||
|
||||
/* TODO: for debug, to be removed once that we write the CPU core */
|
||||
if(offset >= 0x1800/4 && offset <= 0x1fff/4)
|
||||
@ -1016,7 +1016,7 @@ WRITE32_MEMBER(_3do_state::_3do_clio_w)
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror( "%08X: unhandled CLIO write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
|
||||
logerror( "%08X: unhandled CLIO write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user