git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38813 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
parent
36abf09180
commit
3007d8a75d
|
@ -8,7 +8,8 @@ December 4, 2009 Wei Mingzhi <weimingzhi@gmail.com>
|
|||
* plugins/dfinput/pad.h: Likewise.
|
||||
* po/zh_CN.po, po/zh_TW.po, po/pt_BR.po, po/pcsx.pot: Updated.
|
||||
* libpcsxcore/psxbios.c: Don't touch the stack pointer if pointed to the
|
||||
hardware area, which fixes FF7 chocobo racing problem.
|
||||
hardware area, which fixes FF7 chocobo racing problem. Don't always
|
||||
allocate stack spaces before softcall.
|
||||
|
||||
December 3, 2009 Wei Mingzhi <weimingzhi@gmail.com>
|
||||
|
||||
|
|
|
@ -263,13 +263,7 @@ static __inline void softCall(u32 pc) {
|
|||
pc0 = pc;
|
||||
ra = 0x80001000;
|
||||
|
||||
// Fixes crashing problems with at least Final Fantasy 7 and Xenogears.
|
||||
// This should be considered a temporary fix; after all, we do not
|
||||
// know how much space below sp is in use. It may be worth considering
|
||||
// creating a new stack for interrupt handlers.
|
||||
if ((sp >> 24) != 0x1f) sp -= 256;
|
||||
while (pc0 != 0x80001000) psxCpu->ExecuteBlock();
|
||||
if ((sp >> 24) != 0x1f) sp += 256;
|
||||
}
|
||||
|
||||
static __inline void softCall2(u32 pc) {
|
||||
|
@ -277,13 +271,7 @@ static __inline void softCall2(u32 pc) {
|
|||
pc0 = pc;
|
||||
ra = 0x80001000;
|
||||
|
||||
// Fixes crashing problems with at least Final Fantasy 7 and Xenogears.
|
||||
// This should be considered a temporary fix; after all, we do not
|
||||
// know how much space below sp is in use. It may be worth considering
|
||||
// creating a new stack for interrupt handlers.
|
||||
if ((sp >> 24) != 0x1f) sp -= 256;
|
||||
while (pc0 != 0x80001000) psxCpu->ExecuteBlock();
|
||||
if ((sp >> 24) != 0x1f) sp += 256;
|
||||
ra = sra;
|
||||
}
|
||||
|
||||
|
@ -2336,7 +2324,13 @@ void biosInterrupt() {
|
|||
for (i=0; i<3; i++) {
|
||||
if (psxHu32(0x1070) & (1 << (i+4))) {
|
||||
if (RcEV[i][1].status == EvStACTIVE) {
|
||||
// Fixes crashing problems with at least Final Fantasy 7 and Xenogears.
|
||||
// This should be considered a temporary fix; after all, we do not
|
||||
// know how much space below sp is in use. It may be worth considering
|
||||
// creating a new stack for interrupt handlers.
|
||||
if ((sp >> 24) != 0x1f) sp -= 256;
|
||||
softCall(RcEV[i][1].fhandler);
|
||||
if ((sp >> 24) != 0x1f) sp += 256;
|
||||
}
|
||||
psxHwWrite32(0x1f801070, ~(1 << (i+4)));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue