Editing PS2 Emulation
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1,920: | Line 1,920: | ||
| Unmapped write only EE memory (confirmed only for SIF) || Reads/Writes to 0x2000000+ shouldn't throw bus error on dma transfers. Write should be performed as successful, memory should stay unchanged. Reads should return 0. || Games developed by In Utero, while creating initial save file, send DMA where address is EE stack pointer. At the time of transfer start $sp is too high, and requested transfer size make MADR overflow above 0x2000000 at some point. This is game bug, and happen also on real hardware. Fixed by config. | | Unmapped write only EE memory (confirmed only for SIF) || Reads/Writes to 0x2000000+ shouldn't throw bus error on dma transfers. Write should be performed as successful, memory should stay unchanged. Reads should return 0. || Games developed by In Utero, while creating initial save file, send DMA where address is EE stack pointer. At the time of transfer start $sp is too high, and requested transfer size make MADR overflow above 0x2000000 at some point. This is game bug, and happen also on real hardware. Fixed by config. | ||
|- | |- | ||
| VIF bugs || There is no correct timing, and queuing for some VIF commands like MSCAL | | VIF bugs || There is no correct timing, and queuing for some VIF commands like MSCAL. || Snowblind Engine games. Probably more. | ||
|- | |- | ||
| XGKick is instant || Some games expect to XGKick happen few cycles in future, on PS3 is done instant. Fixed by config 0x07 which delay XGKick by selected value || WRC series, Wakeboarding Unleashed, TriAce games, World of Outlaws - Sprint Cars, Ty - The Tazmanian Tiger, dot Hack - G.U. series, and more | | XGKick is instant || Some games expect to XGKick happen few cycles in future, on PS3 is done instant. Fixed by config 0x07 which delay XGKick by selected value || WRC series, Wakeboarding Unleashed, TriAce games, World of Outlaws - Sprint Cars, Ty - The Tazmanian Tiger, dot Hack - G.U. series, and more | ||
Line 1,935: | Line 1,935: | ||
|- | |- | ||
| Not updated status flag when VDIV/VSQRT/VRSQRT is done on COP2 || Potential bad flag state can cause a lot of issues that are not related on first sight || Yanya Caballista (already patched by custom config) | | Not updated status flag when VDIV/VSQRT/VRSQRT is done on COP2 || Potential bad flag state can cause a lot of issues that are not related on first sight || Yanya Caballista (already patched by custom config) | ||
|- | |- | ||
| In corner cases emu select wrong block flags pipeline state (both VU0/EEonBE and VU1/VRC affected). || This can cause various issues, mostly SPS, missing graphic, specific slowdowns, etc. Issue seems to occur when branch/jump delay slot have opcode important for flags calculation. Theory is that cached microprogram don't include modified flags state from delay slot instruction. So when already recompiled program is fetched from pool, it will miss one cycle in fmac flags pipeline. This can be crucial in games that rely on it. || Tales of Legendia and Klonoa 2 set sticky flag bits to 0 and branch with sub.xyzw in delay slot (expecting that sub change status flag), Tamsoft engine games set sticky bits to 0 in branch delay slot, this was most ridiculous bug, because problematic branch was pointing to next opcode after delay slot, removing branch was enough. True Crime: NY is only known game where VU0 is affected by this bug. more.. | | In corner cases emu select wrong block flags pipeline state (both VU0/EEonBE and VU1/VRC affected). || This can cause various issues, mostly SPS, missing graphic, specific slowdowns, etc. Issue seems to occur when branch/jump delay slot have opcode important for flags calculation. Theory is that cached microprogram don't include modified flags state from delay slot instruction. So when already recompiled program is fetched from pool, it will miss one cycle in fmac flags pipeline. This can be crucial in games that rely on it. || Tales of Legendia and Klonoa 2 set sticky flag bits to 0 and branch with sub.xyzw in delay slot (expecting that sub change status flag), Tamsoft engine games set sticky bits to 0 in branch delay slot, this was most ridiculous bug, because problematic branch was pointing to next opcode after delay slot, removing branch was enough. True Crime: NY is only known game where VU0 is affected by this bug. more.. | ||
Line 1,952: | Line 1,950: | ||
| Break opcode unsupported (NET) || On netemu r5900 BREAK opcode with reason code 0 causes instant lv1 panic at recompilation stage. Any non 0 reason code generates PowerPC primary opcode 6 with 16 bits of reason code from r5900 BREAK. Which in simple words make 32 bit opcode 0x1800XXXX. According to available documentation this will just cause PPC Program exception, finally triggering lv1 panic. Not to mention that 16 bits is not enough to hold r5900 20 bit BREAK reason code... || Can affect every single game, but it's known to be hit in Sims 2: Castaway. | | Break opcode unsupported (NET) || On netemu r5900 BREAK opcode with reason code 0 causes instant lv1 panic at recompilation stage. Any non 0 reason code generates PowerPC primary opcode 6 with 16 bits of reason code from r5900 BREAK. Which in simple words make 32 bit opcode 0x1800XXXX. According to available documentation this will just cause PPC Program exception, finally triggering lv1 panic. Not to mention that 16 bits is not enough to hold r5900 20 bit BREAK reason code... || Can affect every single game, but it's known to be hit in Sims 2: Castaway. | ||
|- | |- | ||
| Break opcode partially unsupported (GX | | Break opcode partially unsupported (GX) || On gxemu r5900 BREAK opcode with reason code 0 is handled correctly, recompiler emit jump to kernel exception handler, do events check, etc. Any non 0 reason code generates PowerPC primary opcode 6 with 16 bits of reason code from r5900 BREAK. Which in simple words make 32 bit opcode 0x1800XXXX. According to available documentation this will just cause PPC Program exception, finally triggering lv1 panic. Not to mention that 16 bits is not enough to hold r5900 20 bit BREAK reason code... || Can affect every single game. | ||
|} | |} | ||
===Software emulation bugs=== | ===Software emulation bugs=== |