aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-07-01 02:33:20 +0300
committernotaz2011-07-13 00:28:48 +0300
commitc7071c43bac47c363e2752365ce32580a8c46b95 (patch)
tree2b8e59db7a526ab063c7164676f2cff01aabb8a8 /libpcsxcore
parent5238f6f8fcf43fb8506467b358ee976a8c5fdf6b (diff)
downloadpcsx_rearmed-c7071c43bac47c363e2752365ce32580a8c46b95.tar.gz
pcsx_rearmed-c7071c43bac47c363e2752365ce32580a8c46b95.tar.bz2
pcsx_rearmed-c7071c43bac47c363e2752365ce32580a8c46b95.zip
cdrom: merge shalma's suggestions
http://www.gp32x.com/board/index.php?/topic/57973-pcsx-rearmed/page__view__findpost__p__952591
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdrom.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index 1569839..cc377b9 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -1937,6 +1937,7 @@ void cdrWrite3(unsigned char rt) {
void psxDma3(u32 madr, u32 bcr, u32 chcr) {
u32 cdsize;
+ int size;
u8 *ptr;
#ifdef CDR_LOG
@@ -1981,15 +1982,12 @@ void psxDma3(u32 madr, u32 bcr, u32 chcr) {
- CdlPlay
- Spams DMA3 and gets buffer overrun
*/
-
- if( (cdr.pTransfer-cdr.Transfer) + cdsize > 2352 )
- {
- // avoid crash - probably should wrap here
- //memcpy(ptr, cdr.pTransfer, cdsize);
- }
- else
+ size = CD_FRAMESIZE_RAW - (cdr.pTransfer - cdr.Transfer);
+ if (size > cdsize)
+ size = cdsize;
+ if (size > 0)
{
- memcpy(ptr, cdr.pTransfer, cdsize);
+ memcpy(ptr, cdr.pTransfer, size);
}
psxCpu->Clear(madr, cdsize / 4);