@@ -287,7 +287,7 @@ void konamigq_state::scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, in
287
287
m_dma_offset = n_address;
288
288
m_dma_size = n_size * 4 ;
289
289
m_dma_is_write = false ;
290
- m_dma_timer->adjust (attotime::from_usec ( 10 ) );
290
+ m_dma_timer->adjust (attotime::zero );
291
291
}
292
292
293
293
void konamigq_state::scsi_dma_write ( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size )
@@ -296,12 +296,13 @@ void konamigq_state::scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, i
296
296
m_dma_offset = n_address;
297
297
m_dma_size = n_size * 4 ;
298
298
m_dma_is_write = true ;
299
- m_dma_timer->adjust (attotime::from_usec ( 10 ) );
299
+ m_dma_timer->adjust (attotime::zero );
300
300
}
301
301
302
302
TIMER_CALLBACK_MEMBER (konamigq_state::scsi_dma_transfer)
303
303
{
304
- if (m_dma_requested && m_dma_data_ptr != nullptr && m_dma_size > 0 )
304
+ // TODO: Figure out proper DMA timings
305
+ while (m_dma_requested && m_dma_data_ptr != nullptr && m_dma_size > 0 )
305
306
{
306
307
if (m_dma_is_write)
307
308
m_ncr53cf96->dma_w (util::little_endian_cast<const uint8_t >(m_dma_data_ptr)[m_dma_offset]);
@@ -311,15 +312,12 @@ TIMER_CALLBACK_MEMBER(konamigq_state::scsi_dma_transfer)
311
312
m_dma_offset++;
312
313
m_dma_size--;
313
314
}
314
-
315
- if (m_dma_requested && m_dma_size > 0 )
316
- m_dma_timer->adjust (attotime::from_usec (10 ));
317
315
}
318
316
319
317
void konamigq_state::scsi_drq (int state)
320
318
{
321
319
if (!m_dma_requested && state)
322
- m_dma_timer->adjust (attotime::from_usec ( 10 ) );
320
+ m_dma_timer->adjust (attotime::zero );
323
321
324
322
m_dma_requested = state;
325
323
}
0 commit comments