shithub: psxe

Download patch

ref: 10cfc02dedf38b391f5a79f3201d4ea9f7b6cde2
parent: 1c4ab8e5e3d2f7cefb7b097dbe4d6914a02afd07
author: allkern <lisandroaalarcon@gmail.com>
date: Sun Sep 17 07:43:03 EDT 2023

Fix CDDA hack

Don't skip pregap when loading CUE

--- a/psx/dev/cdrom.c
+++ b/psx/dev/cdrom.c
@@ -183,8 +183,6 @@
             
             msf_from_bcd(&msf);
 
-            msf.s -= 24;
-
             // Seek to that address and read sector
             psx_disc_seek(cdrom->disc, msf);
             psx_disc_read_sector(cdrom->disc, cdrom->cdda_buf);
--- a/psx/disc/cue.c
+++ b/psx/disc/cue.c
@@ -360,17 +360,17 @@
         fseek(track_file, 0, SEEK_END);
 
         // Account for index 1 offset
-        track->size = ftell(track_file) - data_offset;
+        track->size = ftell(track_file);
 
         cue->buf_size += track->size;
 
         // Calculate track MS(F)
-        msf_from_address(&track->disc_offset, offset);
+        msf_from_address(&track->disc_offset, offset + data_offset);
         msf_add_s(&track->disc_offset, 2);
 
         cue->buf = cue_alloc_block(cue->buf, &offset, track->size);
 
-        fseek(track_file, data_offset, SEEK_SET);
+        fseek(track_file, 0, SEEK_SET);
         fread(cue->buf + (offset - track->size), 1, track->size, track_file);
 
         fclose(track_file);
--