Previous 199869 Revisions Next

r22555 Friday 26th April, 2013 at 00:41:31 UTC by Carl
(mess) psxcd: mark transfer buffer empty when all data transfered (nw)
---
Fixes Tobal No.1
[src/mess/machine]psxcd.c

trunk/src/mess/machine/psxcd.c
r22554r22555
441441   if (!curpos.w)
442442      curpos.b[S] = 2;
443443
444   verboselog(machine(), 1, "psxcd: play %02x %02x %02x => %d\n", loc.b[M], loc.b[S], loc.b[F], msf_to_lba_ps(loc.w));
444   verboselog(machine(), 1, "psxcd: play %02x %02x %02x => %d\n", decimal_to_bcd(loc.b[M]), decimal_to_bcd(loc.b[S]), decimal_to_bcd(loc.b[F]), msf_to_lba_ps(loc.w));
445445
446446   stop_read();
447447   start_play();
r22554r22555
593593void psxcd_device::cdcmd_getlocp()
594594{
595595   CDPOS tloc, start;
596   UINT8 track = cdrom_get_track(m_cdrom_handle, msf_to_lba_ps(loc.w) + 150) + 1;
596   UINT8 track = cdrom_get_track(m_cdrom_handle, msf_to_lba_ps(loc.w)) + 1;
597597   start.w = (track == 1) ? 0x000200 : lba_to_msf_ps(cdrom_get_track_start(m_cdrom_handle, track - 1));
598598   tloc.w = sub_loc(loc, start);
599599
r22554r22555
872872
873873void psxcd_device::start_dma(UINT8 *mainram, UINT32 size)
874874{
875   UINT32 sector_size;
875876   verboselog(machine(), 1, "psxcd: start dma %d bytes at %d\n", size, m_transcurr);
876877
877878   if(!m_dmaload)
878879      return;
879880
880   if(size > (raw_sector_size - m_transcurr))
881      size = (raw_sector_size - m_transcurr);
881   switch(mode & mode_size_mask)
882   {
883      case 0x00:
884      default:
885         sector_size = 2048 + 24;
886         break;
887      case 0x10:
888         sector_size = 2328 + 12;
889         break;
890      case 0x20:
891         sector_size = 2340 + 12;
892         break;
893   }
882894
895   if(size > (sector_size - m_transcurr))
896      size = (sector_size - m_transcurr);
897
883898   memcpy(mainram, &m_transbuf[m_transcurr], size);
884899   m_transcurr += size;
885   if(raw_sector_size <= m_transcurr)
900
901   if(sector_size <= m_transcurr)
886902   {
887903      m_dmaload = false;
888904      m_regs.sr &= ~0x40;
r22554r22555
10821098
10831099void psxcd_device::start_play()
10841100{
1085   UINT8 track = cdrom_get_track(m_cdrom_handle, msf_to_lba_ps(curpos.w) + 150);
1101   UINT8 track = cdrom_get_track(m_cdrom_handle, msf_to_lba_ps(curpos.w));
10861102
10871103   if(cdrom_get_track_type(m_cdrom_handle, track) != CD_TRACK_AUDIO)
10881104      verboselog(machine(), 0, "psxcd: playing data track\n");

Previous 199869 Revisions Next


© 1997-2024 The MAME Team