notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
psxmem: Reads of PIO Expansion area read all-ones.
[pcsx_rearmed.git]
/
libpcsxcore
/
psxinterpreter.c
diff --git
a/libpcsxcore/psxinterpreter.c
b/libpcsxcore/psxinterpreter.c
index
66730d9
..
cf3de79
100644
(file)
--- a/
libpcsxcore/psxinterpreter.c
+++ b/
libpcsxcore/psxinterpreter.c
@@
-727,9
+727,9
@@
void psxLWR() {
*/
}
*/
}
-void psxSB() { psxMemWrite8 (_oB_, _
u8 (_rRt_)
); }
-void psxSH() { psxMemWrite16(_oB_, _
u16(_rRt_)
); }
-void psxSW() { psxMemWrite32(_oB_, _
u32(_rRt_)
); }
+void psxSB() { psxMemWrite8 (_oB_, _
rRt_ & 0xff
); }
+void psxSH() { psxMemWrite16(_oB_, _
rRt_ & 0xffff
); }
+void psxSW() { psxMemWrite32(_oB_, _
rRt_
); }
u32 SWL_MASK[4] = { 0xffffff00, 0xffff0000, 0xff000000, 0 };
u32 SWL_SHIFT[4] = { 24, 16, 8, 0 };
u32 SWL_MASK[4] = { 0xffffff00, 0xffff0000, 0xff000000, 0 };
u32 SWL_SHIFT[4] = { 24, 16, 8, 0 };
@@
-780,10
+780,9
@@
void psxMFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; }
void psxCFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; }
void psxTestSWInts() {
void psxCFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; }
void psxTestSWInts() {
- // the next code is untested, if u know please
- // tell me if it works ok or not (linuzappz)
if (psxRegs.CP0.n.Cause & psxRegs.CP0.n.Status & 0x0300 &&
if (psxRegs.CP0.n.Cause & psxRegs.CP0.n.Status & 0x0300 &&
- psxRegs.CP0.n.Status & 0x1) {
+ psxRegs.CP0.n.Status & 0x1) {
+ psxRegs.CP0.n.Cause &= ~0x7c;
psxException(psxRegs.CP0.n.Cause, branch);
}
}
psxException(psxRegs.CP0.n.Cause, branch);
}
}
@@
-797,7
+796,8
@@
void MTC0(int reg, u32 val) {
break;
case 13: // Cause
break;
case 13: // Cause
- psxRegs.CP0.n.Cause = val & ~(0xfc00);
+ psxRegs.CP0.n.Cause &= ~0x0300;
+ psxRegs.CP0.n.Cause |= val & 0x0300;
psxTestSWInts();
break;
psxTestSWInts();
break;