trunk/src/mame/drivers/model3.c
r32693 | r32694 | |
25 | 25 | lemans24 - works |
26 | 26 | vs29815 - massive memory trashing and page faults |
27 | 27 | |
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 |
31 | 31 | srally2/sraly2dx - works |
32 | 32 | von2/von254g - works |
33 | 33 | 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 |
35 | 36 | oceanhun - same as daytona2 |
36 | 37 | lamachin - works |
37 | 38 | |
r32693 | r32694 | |
42 | 43 | swtrilgy - |
43 | 44 | swtrilga - |
44 | 45 | magtruck - works |
45 | | eca/ecax - waiting for decrementer |
| 46 | eca/ecax - cabinet network error |
46 | 47 | |
47 | 48 | =================================================================================== |
48 | 49 | |
r32693 | r32694 | |
1074 | 1075 | switch(offset) |
1075 | 1076 | { |
1076 | 1077 | 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; |
1078 | 1079 | case 2: |
1079 | 1080 | if(ACCESSING_BITS_0_31) { |
1080 | 1081 | return m_dma_data; |
r32693 | r32694 | |
1139 | 1140 | m_dma_status ^= 0xffffffff; |
1140 | 1141 | m_dma_data = m_dma_status; |
1141 | 1142 | } |
| 1143 | m_dma_busy = 0x80000000; |
| 1144 | m_real3d_dma_timer->adjust(attotime::from_nsec(20000)); |
1142 | 1145 | return; |
1143 | 1146 | } |
1144 | 1147 | if(ACCESSING_BITS_0_31) { /* ??? */ |
r32693 | r32694 | |
1200 | 1203 | } |
1201 | 1204 | } |
1202 | 1205 | |
| 1206 | TIMER_CALLBACK_MEMBER(model3_state::real3d_dma_timer_callback) |
| 1207 | { |
| 1208 | m_dma_busy = 0; |
| 1209 | } |
| 1210 | |
1203 | 1211 | MACHINE_START_MEMBER(model3_state,model3_10) |
1204 | 1212 | { |
1205 | 1213 | configure_fast_ram(machine()); |
1206 | 1214 | |
1207 | 1215 | 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)); |
1208 | 1217 | } |
1209 | 1218 | MACHINE_START_MEMBER(model3_state,model3_15) |
1210 | 1219 | { |
1211 | 1220 | configure_fast_ram(machine()); |
1212 | 1221 | |
1213 | 1222 | 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)); |
1214 | 1224 | } |
1215 | 1225 | MACHINE_START_MEMBER(model3_state,model3_20) |
1216 | 1226 | { |
1217 | 1227 | configure_fast_ram(machine()); |
1218 | 1228 | |
1219 | 1229 | 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)); |
1220 | 1231 | } |
1221 | 1232 | MACHINE_START_MEMBER(model3_state,model3_21) |
1222 | 1233 | { |
1223 | 1234 | configure_fast_ram(machine()); |
1224 | 1235 | |
1225 | 1236 | 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)); |
1226 | 1238 | } |
1227 | 1239 | |
1228 | 1240 | void model3_state::model3_init(int step) |
r32693 | r32694 | |
1232 | 1244 | m_sound_irq_enable = 0; |
1233 | 1245 | m_sound_timer->adjust(attotime::never); |
1234 | 1246 | |
| 1247 | m_dma_busy = 0; |
| 1248 | m_real3d_dma_timer->adjust(attotime::never); |
| 1249 | |
1235 | 1250 | membank("bank1")->set_base(memregion( "user1" )->base() + 0x800000 ); /* banked CROM */ |
1236 | 1251 | |
1237 | 1252 | membank("bank4")->set_base(memregion("samples")->base() + 0x200000); |