aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2012-07-18 23:54:02 +0300
committernotaz2012-07-19 00:20:13 +0300
commit2daaaae3b2bb131d88ad750d8a74c146f04da62a (patch)
tree67252822809ac7913d74eb59083f976f217c24e3 /libpcsxcore
parent50b13be9826da8433b39bd7d02cce2422f91cf0c (diff)
downloadpcsx_rearmed-2daaaae3b2bb131d88ad750d8a74c146f04da62a.tar.gz
pcsx_rearmed-2daaaae3b2bb131d88ad750d8a74c146f04da62a.tar.bz2
pcsx_rearmed-2daaaae3b2bb131d88ad750d8a74c146f04da62a.zip
cdrom: reset cmd buffer when cmd is accepted
wrong but hopefully not as much as it was
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdrom.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index 8785598..297c8ae 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -1264,6 +1264,9 @@ void cdrInterrupt() {
Check_Shell( Irq );
+ cdr.ParamP = 0;
+ cdr.ParamC = 0;
+
if (cdr.Stat != NoIntr && cdr.Reg2 != 0x18) {
psxHu32ref(0x1070) |= SWAP32((u32)0x4);
}
@@ -1451,12 +1454,6 @@ void cdrWrite0(unsigned char rt) {
CDR_LOG("cdrWrite0() Log: CD0 write: %x\n", rt);
#endif
cdr.Ctrl = (rt & 3) | (cdr.Ctrl & ~3);
-
- if (rt == 0) {
- cdr.ParamP = 0;
- cdr.ParamC = 0;
- cdr.ResultReady = 0;
- }
}
unsigned char cdrRead1(void) {
@@ -1508,6 +1505,8 @@ void cdrWrite1(unsigned char rt) {
if (cdr.Ctrl & 0x3) return;
+ cdr.ResultReady = 0;
+
switch (cdr.Cmd) {
case CdlSync:
cdr.Ctrl |= 0x80;
@@ -1809,6 +1808,8 @@ void cdrWrite1(unsigned char rt) {
break;
default:
+ cdr.ParamP = 0;
+ cdr.ParamC = 0;
#ifdef CDR_LOG
CDR_LOG("cdrWrite1() Log: Unknown command: %x\n", cdr.Cmd);
#endif