X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcd%2Fbuffering.c;h=205e7777dcdd95f5cc5d3e7d5a633e19d8e51108;hb=a5f80ce405bdb5377ed58a2525819ca1a8e11685;hp=8287618928ec1889c54e15bedc9904fcae6d5bdb;hpb=8022f53da61b8e70420a3bac97250119bbe26457;p=picodrive.git diff --git a/Pico/cd/buffering.c b/Pico/cd/buffering.c index 8287618..205e777 100644 --- a/Pico/cd/buffering.c +++ b/Pico/cd/buffering.c @@ -43,7 +43,7 @@ void PicoCDBufferFree(void) 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); } @@ -104,17 +104,20 @@ PICO_INTERNAL void PicoCDBufferRead(void *dest, int lba) { 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 {