Previous 199869 Revisions Next

r32694 Sunday 12th October, 2014 at 23:21:22 UTC by Ville Linde
model3: Added Real3D DMA timer. (nw)
[src/mame/drivers]model3.c
[src/mame/includes]model3.h

trunk/src/mame/drivers/model3.c
r32693r32694
2525    lemans24 - works
2626    vs29815 - massive memory trashing and page faults
2727
28    vs2 - waiting for decrementer (same code as eca)
29    harley -
30    skichamp - waiting for decrementer
28    vs2 - works
29    harley - works, massive slowdown ingame
30    skichamp - boots after skipping the drive board errors, massive slowdowns
3131    srally2/sraly2dx - works
3232    von2/von254g - works
3333    fvipers2 - waiting for decrementer (same code as eca)
34    vs298/vs299/vs2v991 - waiting for decrementer
34    vs298 - works, hangs with an onscreen error code
35   vs299/vs2v991 - works
3536   oceanhun - same as daytona2
3637   lamachin - works
3738
r32693r32694
4243    swtrilgy -
4344    swtrilga -
4445    magtruck - works
45    eca/ecax - waiting for decrementer   
46    eca/ecax - cabinet network error
4647
4748===================================================================================
4849
r32693r32694
10741075   switch(offset)
10751076   {
10761077      case 1:
1077         return (m_dma_irq << 24) | (m_dma_endian << 8);
1078         return (m_dma_irq << 24) | (m_dma_endian << 8) | m_dma_busy;
10781079      case 2:
10791080         if(ACCESSING_BITS_0_31) {
10801081            return m_dma_data;
r32693r32694
11391140               m_dma_status ^= 0xffffffff;
11401141               m_dma_data = m_dma_status;
11411142            }
1143            m_dma_busy = 0x80000000;
1144            m_real3d_dma_timer->adjust(attotime::from_nsec(20000));
11421145            return;
11431146         }
11441147         if(ACCESSING_BITS_0_31) {       /* ??? */
r32693r32694
12001203   }
12011204}
12021205
1206TIMER_CALLBACK_MEMBER(model3_state::real3d_dma_timer_callback)
1207{
1208   m_dma_busy = 0;
1209}
1210
12031211MACHINE_START_MEMBER(model3_state,model3_10)
12041212{
12051213   configure_fast_ram(machine());
12061214
12071215   m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
1216   m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
12081217}
12091218MACHINE_START_MEMBER(model3_state,model3_15)
12101219{
12111220   configure_fast_ram(machine());
12121221
12131222   m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
1223   m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
12141224}
12151225MACHINE_START_MEMBER(model3_state,model3_20)
12161226{
12171227   configure_fast_ram(machine());
12181228
12191229   m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
1230   m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
12201231}
12211232MACHINE_START_MEMBER(model3_state,model3_21)
12221233{
12231234   configure_fast_ram(machine());
12241235
12251236   m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
1237   m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
12261238}
12271239
12281240void model3_state::model3_init(int step)
r32693r32694
12321244   m_sound_irq_enable = 0;
12331245   m_sound_timer->adjust(attotime::never);
12341246
1247   m_dma_busy = 0;
1248   m_real3d_dma_timer->adjust(attotime::never);
1249
12351250   membank("bank1")->set_base(memregion( "user1" )->base() + 0x800000 ); /* banked CROM */
12361251
12371252   membank("bank4")->set_base(memregion("samples")->base() + 0x200000);
trunk/src/mame/includes/model3.h
r32693r32694
104104
105105   int m_sound_irq_enable;
106106   emu_timer *m_sound_timer;
107   emu_timer *m_real3d_dma_timer;
107108   UINT8 m_irq_enable;
108109   UINT8 m_irq_state;
109110   UINT8 m_scsi_irq_state;
r32693r32694
126127   UINT32 m_dma_dest;
127128   UINT32 m_dma_endian;
128129   UINT32 m_dma_irq;
130   UINT32 m_dma_busy;
129131   UINT64 m_controls_2;
130132   UINT64 m_controls_3;
131133   UINT8 m_serial_fifo1;
r32693r32694
269271   DECLARE_MACHINE_START(model3_21);
270272   DECLARE_MACHINE_RESET(model3_21);
271273   TIMER_CALLBACK_MEMBER(model3_sound_timer_tick);
274   TIMER_CALLBACK_MEMBER(real3d_dma_timer_callback);
272275   TIMER_DEVICE_CALLBACK_MEMBER(model3_interrupt);
273276   void model3_exit();
274277   DECLARE_WRITE8_MEMBER(scsp_irq);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team