cd_buffer = NULL;
}
if (reads)
- printf("CD buffer hits: %i/%i (%i%%)\n", hits, reads, hits * 100 / reads);
+ elprintf(EL_STATUS, "CD buffer hits: %i/%i (%i%%)\n", hits, reads, hits * 100 / reads);
}
-/* this is a try to fight slow SD access of GP2X */
+void PicoCDBufferFlush(void)
+{
+ prev_lba = 0x80000000;
+}
+
+
+/* this is was a try to fight slow SD access of GP2X */
PICO_INTERNAL void PicoCDBufferRead(void *dest, int lba)
{
int is_bin, offs, read_len, moved = 0;
{
int i = 0;
#if REDUCE_IO_CALLS
- int bufs = (read_len*2048+304) / (2048+304);
+ int bufs = (read_len*2048) / (2048+304);
pm_read(cd_buffer, bufs*(2048+304), Pico_mcd->TOC.Tracks[0].F);
for (i = 1; i < bufs; i++)
// should really use memmove here, but my memcpy32 implementation is also suitable here
memcpy32((int *)(cd_buffer + i*2048), (int *)(cd_buffer + i*(2048+304)), 2048/4);
#endif
- for (; i < read_len; i++)
+ for (; i < read_len - 1; i++)
{
pm_read(cd_buffer + i*2048, 2048 + 304, Pico_mcd->TOC.Tracks[0].F);
// pm_seek(Pico_mcd->TOC.Tracks[0].F, 304, SEEK_CUR); // seeking is slower, in PSP case even more
}
+ // further data might be moved, do not overwrite
+ pm_read(cd_buffer + i*2048, 2048, Pico_mcd->TOC.Tracks[0].F);
+ pm_seek(Pico_mcd->TOC.Tracks[0].F, 304, SEEK_CUR);
}
else
{