Editing Talk: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,406: | Line 1,406: | ||
This helps little bit with understanding some hooks (0x01 commands). Reason is probably optimization, and cached regs are written only when they need to. At least that how it looks like from analyzing recompiled code. | This helps little bit with understanding some hooks (0x01 commands). Reason is probably optimization, and cached regs are written only when they need to. At least that how it looks like from analyzing recompiled code. | ||
r13 = unknown (cycles?), always preserved. // When recompiled code run, value is frequently compared to value from negmem F000 and event test is triggered depending on compare result. | |||
r14 = .MIPS_PC_REG | |||
r14 = | |||
r15 = r5900 pc >> 6, used for cache checks. r15 is also used as temp register when fallback to interpreter, etc. | r15 = r5900 pc >> 6, used for cache checks. r15 is also used as temp register when fallback to interpreter, etc. | ||
r16 = | r16 = r5900_v0_reg_lower64_cached | ||
r17 = | r17 = r5900_v1_reg_lower64_cached | ||
r18 = | r18 = r5900_a0_reg_lower64_cached | ||
r19 = | r19 = r5900_a1_reg_lower64_cached | ||
r20 = | r20 = r5900_a2_reg_lower64_cached | ||
r21 = | r21 = r5900_a3_reg_lower64_cached | ||
r31 = | r31 = r5900_ra_reg_lower64_cached | ||
Additionally, Onimusha hooks expect r25 to be r5900 s0, and r28 to be r5900 s3. But i didn't found other parts of recompiler that expect the same. So, for now only values above are confirmed. | Additionally, Onimusha hooks expect r25 to be r5900 s0, and r28 to be r5900 s3. But i didn't found other parts of recompiler that expect the same. So, for now only values above are confirmed. | ||
Line 1,438: | Line 1,437: | ||
v30 = f24, f25, f26, f27 | v30 = f24, f25, f26, f27 | ||
v31 = f28, f29, f30, f31 | v31 = f28, f29, f30, f31 | ||
Register that handle ACC is taken from different pool (same pool as all vfXX regs when in COP2 mode) with param 32 as reg nr (not real reg, probably part of one of vXX regs). | Register that handle ACC is taken from different pool (same pool as all vfXX regs when in COP2 mode) with param 32 as reg nr (not real reg, probably part of one of vXX regs). | ||
Most likely those regs are flushed to memory when COP2 opcode is running, for sure they are flushed when VU0 microprogram is running. | Most likely those regs are flushed to memory when COP2 opcode is running, for sure they are flushed when VU0 microprogram is running. |