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); |