In vu0 and vu1, in both macrocode and microcode, if you want to achieve something more precise, there's a problem with the hardware (or at least it's an obvious problem): if you multiply 1 by X, there's no guarantee that the result will be X, although X * 1 guarantees it.
In theory for the game programmer, it's just multiplying X * 1 instead of 1 * X, but for us we would have to emulate this technique, these links may be useful:
Detecting emu vu floats
PS2 Floating Point Rust
DobbieStation Issue 51
EEFloat
PCSX2 commit 0392a64e992ac3fa5445dbe484933616cb204674
Emulating ps2 floating point nums ieee-754 diffs part 1
It's debatable whether or not we need to be super precise with floating-point numbers, because perhaps some games will take advantage of this problem, or maybe the programmer who created it isn't even aware of it.
In vu0 and vu1, in both macrocode and microcode, if you want to achieve something more precise, there's a problem with the hardware (or at least it's an obvious problem): if you multiply 1 by X, there's no guarantee that the result will be X, although X * 1 guarantees it.
In theory for the game programmer, it's just multiplying X * 1 instead of 1 * X, but for us we would have to emulate this technique, these links may be useful:
Detecting emu vu floats
PS2 Floating Point Rust
DobbieStation Issue 51
EEFloat
PCSX2 commit 0392a64e992ac3fa5445dbe484933616cb204674
Emulating ps2 floating point nums ieee-754 diffs part 1
It's debatable whether or not we need to be super precise with floating-point numbers, because perhaps some games will take advantage of this problem, or maybe the programmer who created it isn't even aware of it.