--- PcsxSrc-1.5-orig/PsxBios.c 2006-01-04 16:26:52.000000000 -0500 +++ PcsxSrc-1.5-orig/PsxBios.c 2006-01-04 16:53:21.000000000 -0500 @@ -2253,7 +2253,10 @@ if (ptr) psxRu32ref(base) = SWAPu32((u32)ptr - (u32)psxM); \ else psxRu32ref(base) = 0; \ } else { \ - if (psxRu32(base)) (u8*)ptr = (u8*)(psxM + psxRu32(base)); \ + if (psxRu32(base)) { \ + u8* ptr8 = (u8*)ptr; \ + ptr8 = (u8*)(psxM + psxRu32(base)); \ + } \ else ptr = NULL; \ } \ base+=4; --- PcsxSrc-1.5-orig/PsxInterpreter.c 2006-01-04 16:26:52.000000000 -0500 +++ PcsxSrc-1.5-orig/PsxInterpreter.c 2006-01-04 16:59:42.000000000 -0500 @@ -403,8 +403,8 @@ *********************************************************/ void psxDIV() { if (_i32(_rRt_) != 0) { - _i32(_rLo_) = _i32(_rRs_) / _i32(_rRt_); - _i32(_rHi_) = _i32(_rRs_) % _i32(_rRt_); + _rLo_ = _i32(_rRs_) / _i32(_rRt_); + _rHi_ = _i32(_rRs_) % _i32(_rRt_); } } @@ -448,7 +448,7 @@ * Format: OP rd, rt, sa * *********************************************************/ void psxSLL() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) << _Sa_; } // Rd = Rt << sa -void psxSRA() { if (!_Rd_) return; _i32(_rRd_) = _i32(_rRt_) >> _Sa_; } // Rd = Rt >> sa (arithmetic) +void psxSRA() { if (!_Rd_) return; _rRd_ = _i32(_i32(_rRt_) >> _Sa_); } // Rd = Rt >> sa (arithmetic) void psxSRL() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) >> _Sa_; } // Rd = Rt >> sa (logical) /********************************************************* @@ -456,7 +456,7 @@ * Format: OP rd, rt, rs * *********************************************************/ void psxSLLV() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) << _u32(_rRs_); } // Rd = Rt << rs -void psxSRAV() { if (!_Rd_) return; _i32(_rRd_) = _i32(_rRt_) >> _u32(_rRs_); } // Rd = Rt >> rs (arithmetic) +void psxSRAV() { if (!_Rd_) return; _rRd_ = _i32(_i32(_rRt_) >> _u32(_rRs_)); } // Rd = Rt >> rs (arithmetic) void psxSRLV() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) >> _u32(_rRs_); } // Rd = Rt >> rs (logical) /********************************************************* @@ -534,7 +534,7 @@ void psxLB() { if (_Rt_) { - _i32(_rRt_) = (char)psxMemRead8(_oB_); + _rRt_ = _i32 ((char)psxMemRead8(_oB_)); } else { psxMemRead8(_oB_); } @@ -550,7 +550,7 @@ void psxLH() { if (_Rt_) { - _i32(_rRt_) = (short)psxMemRead16(_oB_); + _rRt_ = _i32((short)psxMemRead16(_oB_)); } else { psxMemRead16(_oB_); } @@ -665,8 +665,8 @@ * Moves between GPR and COPx * * Format: OP rt, fs * *********************************************************/ -void psxMFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; } -void psxCFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; } +void psxMFC0() { if (!_Rt_) return; _rRt_ = _i32((int)_rFs_); } +void psxCFC0() { if (!_Rt_) return; _rRt_ = _i32((int)_rFs_); } void psxTestSWInts() { // the next code is untested, if u know please