SpongeBob SquarePants: The Movie suffers from all of the same issues as
Battle for Bikini Bottom. These patches are not based on any existing
cheats or codes.
This adds about a frame of latency, and since most games don't change
VI registers during scanout, we can get away with outputting the XFB at
the start of scanout. WWE Crush Hour is the (only currently known)
exception, which has flickering problems when doing it this way.
This adds a path to perform the output at the end of scanout, and gates
it behind an option which defaults to using the latency-reducing
pre-scanout path.
Only the NTSC version of Gladius got a patch with smurf3tte's reverse
engineering work. Since most of the work was done, I ported over the
fix to the PAL, French, and German releases. Leoetlino helped figure
out a consistent way to find the correct address.
This enables Vertex Rounding Hack and has a game patch for two bugs
resulting from game choices. The game draws an efb copy at
coordinate 0.00195313 to 1.00195 repeating which only works due to how the
numbers work out at low resolution.
The Vertex Rounding Hack is a null operation on 1x IR, so there should
be no concern enabling it by default since higher resolutions are
completely broken without it.
PR https://github.com/dolphin-emu/dolphin/pull/9700 removed spaces from within control names, which some user complained about, and their point of view is kind of understandable:
https://bugs.dolphin-emu.org/issues/12605
with this change, only spaces outside (between) control names are trimmed, which are the ones we wanted to trim in the first place.
This will still retain the major advantages from 9700.
Basically, "`Button 1` + `Button 2`" was showing as "`Button1`+`Button2`", while it will now show as "`Button 1`+`Button 2`".
Originally, 1479 (for example) would disassemble as `lsr $ACC0, #-7`. At some point (likely the conversion to fmt), this regressed to `lsr $ACC0, #4294967289`. Now, it disassembles as `lsr $ACC0, #7`.
The CPU-side AX library enables it by default and uses hardcoded parameters.
CMD_COMPRESSOR_TABLE_ADDR (0x0A) was incorrect. It's always a nop on the
GameCube and was probably confused with the Wii version.
It was believed that this only mattered when the rounding mode was
set to round to infinity, which games generally don't do, but it
can also affect the sign of the output when the inputs are all zero.