MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / cd_qcode

Function cd_qcode

src/akiko.cpp:707–756  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

705/* read qcode */
706static int last_play_pos;
707static int cd_qcode (uae_u8 *d)
708{
709 uae_u8 *buf, *s, as;
710
711 if (d)
712 memset (d, 0, 11);
713 last_play_pos = 0;
714 buf = qcode_buf;
715 as = buf[1];
716 buf[2] = 0x80;
717 if (!qcode_valid)
718 return 0;
719 if (cdrom_audiostatus != AUDIO_STATUS_IN_PROGRESS && cdrom_audiostatus != AUDIO_STATUS_PAUSED)
720 return 0;
721 s = buf + 4;
722 last_play_pos = msf2lsn (fromlongbcd (s + 7));
723 if (!d)
724 return 0;
725 buf[2] = 0;
726 /* ??? */
727 d[0] = 0;
728 /* CtlAdr */
729 d[1] = s[0];
730 /* Track */
731 d[2] = s[1];
732 /* Index */
733 d[3] = s[2];
734 /* TrackPos */
735 d[4] = s[3];
736 d[5] = s[4];
737 d[6] = s[5];
738 /* DiskPos */
739 d[7] = 0;
740 d[8] = s[7];
741 d[9] = s[8];
742 d[10] = s[9];
743 if (as == AUDIO_STATUS_IN_PROGRESS) {
744 /* Make sure end of disc position is not missed.
745 */
746 if (last_play_pos >= cdrom_toc_cd_buffer.lastaddress || cdrom_toc_cd_buffer.lastaddress - last_play_pos < 10) {
747 int msf = lsn2msf (cdrom_toc_cd_buffer.lastaddress);
748 d[8] = tobcd ((uae_u8)(msf >> 16));
749 d[9] = tobcd ((uae_u8)(msf >> 8));
750 d[10] = tobcd ((uae_u8)(msf >> 0));
751 }
752 }
753// write_log (_T("%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X\n"),
754// d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10], d[11]);
755 return 0;
756}
757
758/* read toc */
759static int get_cdrom_toc (void)

Callers 2

cdrom_command_subqFunction · 0.85
save_akikoFunction · 0.85

Calls 4

msf2lsnFunction · 0.85
fromlongbcdFunction · 0.85
lsn2msfFunction · 0.85
tobcdFunction · 0.70

Tested by

no test coverage detected