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,936: | Line 1,936: | ||
| 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) | ||
|- | |- | ||
| VU0 recompiled microprogram hash collisions || To know that emulator don't need to recompile VU0 block, during recompilation every block is hashed. When matching hash is found, emulator use associated block instead of recompiling code again. This hash is calculated from first 4 opcodes of VU0 code in block, which is way too little to ensure unique hash for similar blocks on the same address. When collision happen emulator run totally different code than the one that should be recompiled. || Dawn of Mana, MGS3, | | VU0 recompiled microprogram hash collisions || To know that emulator don't need to recompile VU0 block, during recompilation every block is hashed. When matching hash is found, emulator use associated block instead of recompiling code again. This hash is calculated from first 4 opcodes of VU0 code in block, which is way too little to ensure unique hash for similar blocks on the same address. When collision happen emulator run totally different code than the one that should be recompiled. || Dawn of Mana, MGS3, Scooby Doo games, R Racing Revolution, any games using cmd 0x12 subcmd 1. | ||
|- | |- | ||
| 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.. |