I was trying to fix this bug (character getting stuck at that point) correctly, but no go. It seems to be a problem with FPU's MUL instruction - it returns an incorrect result in some cases. The PS2's FPU MUL uses a (possibly modified) booth algorithm with wallace trees. Obviously, it discards some bits during some stages, causing inexact results. I've been able to replicate it a bit but not enough to get ToD past the point.
It can be hackfixed by substracting one from the mantissa (if it's not 0) after multiplication. Obviously this will break other things, possibly even within ToD.
It can be hackfixed by substracting one from the mantissa (if it's not 0) after multiplication. Obviously this will break other things, possibly even within ToD.