Previous 199869 Revisions Next

r20842 Friday 8th February, 2013 at 19:38:29 UTC by Wilbert Pol
3do.c: Reduce tagmap lookups (nw)
[src/mame/drivers]3do.c
[src/mame/includes]3do.h
[src/mame/machine]3do.c

trunk/src/mame/drivers/3do.c
r20841r20842
131131
132132void _3do_state::machine_start()
133133{
134   membank("bank2")->set_base(memregion("user1")->base());
134   m_bank2->set_base(memregion("user1")->base());
135135
136136   /* configure overlay */
137   membank("bank1")->configure_entry(0, m_dram);
138   membank("bank1")->configure_entry(1, memregion("user1")->base());
137   m_bank1->configure_entry(0, m_dram);
138   m_bank1->configure_entry(1, memregion("user1")->base());
139139
140140   m_3do_slow2_init();
141141   m_3do_madam_init();
r20841r20842
145145void _3do_state::machine_reset()
146146{
147147   /* start with overlay enabled */
148   membank("bank1")->set_entry(1);
148   m_bank1->set_entry(1);
149149
150150   m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */
151151}
trunk/src/mame/machine/3do.c
r20841r20842
197197READ32_MEMBER(_3do_state::_3do_slow2_r){
198198   UINT32 data = 0;
199199
200   logerror( "%08X: UNK_318 read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset );
200   logerror( "%08X: UNK_318 read offset = %08X\n", m_maincpu->pc(), offset );
201201
202202   switch( offset ) {
203203   case 0:     /* Boot ROM checks here and expects to read 1, 0, 1, 0 in the lowest bit */
r20841r20842
211211
212212WRITE32_MEMBER(_3do_state::_3do_slow2_w)
213213{
214   logerror( "%08X: UNK_318 write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset, data, mem_mask );
214   logerror( "%08X: UNK_318 write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset, data, mem_mask );
215215
216216   switch( offset )
217217   {
218218      case 0:     /* Boot ROM writes 03180000 here and then starts reading some things */
219219      {
220220         /* disable ROM overlay */
221         membank("bank1")->set_entry(0);
221         m_bank1->set_entry(0);
222222      }
223223      m_slow2.cg_input = m_slow2.cg_input << 1 | ( data & 0x00000001 );
224224      m_slow2.cg_w_count ++;
r20841r20842
236236   UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9;
237237   UINT32 *p = m_vram + addr;
238238
239   logerror( "%08X: SVF read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 );
239   logerror( "%08X: SVF read offset = %08X\n", m_maincpu->pc(), offset*4 );
240240
241241   switch( offset & ( 0xE000 / 4 ) )
242242   {
r20841r20842
261261   UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9;
262262   UINT32 *p = m_vram + addr;
263263
264   logerror( "%08X: SVF write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
264   logerror( "%08X: SVF write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
265265
266266   switch( offset & ( 0xe000 / 4 ) )
267267   {
r20841r20842
297297
298298
299299READ32_MEMBER(_3do_state::_3do_madam_r){
300   logerror( "%08X: MADAM read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 );
300   logerror( "%08X: MADAM read offset = %08X\n", m_maincpu->pc(), offset*4 );
301301
302302   switch( offset ) {
303303   case 0x0000/4:      /* 03300000 - Revision */
r20841r20842
448448   case 0x07f8/4:
449449      return m_madam.mult_status;
450450   default:
451      logerror( "%08X: unhandled MADAM read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 );
451      logerror( "%08X: unhandled MADAM read offset = %08X\n", m_maincpu->pc(), offset*4 );
452452      break;
453453   }
454454   return 0;
r20841r20842
459459   if(offset == 0)
460460   {
461461      if(data == 0x0a)
462         logerror( "%08X: MADAM write offset = %08X, data = %08X (\\n), mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
462         logerror( "%08X: MADAM write offset = %08X, data = %08X (\\n), mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
463463      else
464         logerror( "%08X: MADAM write offset = %08X, data = %08X (%c), mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, data, mem_mask );
464         logerror( "%08X: MADAM write offset = %08X, data = %08X (%c), mask = %08X\n", m_maincpu->pc(), offset*4, data, data, mem_mask );
465465   }
466466   else
467      logerror( "%08X: MADAM write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
467      logerror( "%08X: MADAM write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
468468
469469   switch( offset ) {
470470   case 0x0000/4:
r20841r20842
641641      break;
642642
643643   default:
644      logerror( "%08X: unhandled MADAM write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
644      logerror( "%08X: unhandled MADAM write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
645645      break;
646646   }
647647}
r20841r20842
655655   {
656656      if(offset != 0x200/4 && offset != 0x40/4 && offset != 0x44/4 && offset != 0x48/4 && offset != 0x4c/4 &&
657657         offset != 0x118/4 && offset != 0x11c/4)
658      logerror( "%08X: CLIO read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset * 4 );
658      logerror( "%08X: CLIO read offset = %08X\n", m_maincpu->pc(), offset * 4 );
659659   }
660660
661661   /* TODO: for debug, to be removed once that we write the CPU core */
r20841r20842
770770
771771   default:
772772   if (!space.debugger_access())
773      logerror( "%08X: unhandled CLIO read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset * 4 );
773      logerror( "%08X: unhandled CLIO read offset = %08X\n", m_maincpu->pc(), offset * 4 );
774774      break;
775775   }
776776   return 0;
r20841r20842
780780{
781781   if(offset != 0x200/4 && offset != 0x40/4 && offset != 0x44/4 && offset != 0x48/4 && offset != 0x4c/4 &&
782782      offset != 0x118/4 && offset != 0x11c/4)
783      logerror( "%08X: CLIO write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
783      logerror( "%08X: CLIO write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
784784
785785   /* TODO: for debug, to be removed once that we write the CPU core */
786786   if(offset >= 0x1800/4 && offset <= 0x1fff/4)
r20841r20842
10161016      break;
10171017
10181018   default:
1019      logerror( "%08X: unhandled CLIO write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask );
1019      logerror( "%08X: unhandled CLIO write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask );
10201020      break;
10211021   }
10221022}
trunk/src/mame/includes/3do.h
r20841r20842
135135{
136136public:
137137   _3do_state(const machine_config &mconfig, device_type type, const char *tag)
138      : driver_device(mconfig, type, tag) ,
139      m_maincpu(*this, "maincpu"),
140      m_dram(*this, "dram"),
141      m_vram(*this, "vram"){ }
138      : driver_device(mconfig, type, tag)
139      , m_maincpu(*this, "maincpu")
140      , m_dram(*this, "dram")
141      , m_vram(*this, "vram")
142      , m_bank1(*this, "bank1")
143      , m_bank2(*this, "bank2")
144   { }
142145
143146   required_device<cpu_device> m_maincpu;
144147   required_shared_ptr<UINT32> m_dram;
r20841r20842
168171
169172   TIMER_DEVICE_CALLBACK_MEMBER( timer_x16_cb );
170173
174protected:
175   required_memory_bank m_bank1;
176   required_memory_bank m_bank2;
177
171178private:
172179   void m_3do_slow2_init( void );
173180   void m_3do_madam_init( void );

Previous 199869 Revisions Next


© 1997-2024 The MAME Team