Wii VC Round-to-Zero: Difference between revisions

no edit summary
mNo edit summary
No edit summary
Line 2: Line 2:
[[File:WiiVC BitFS 146hr.png|thumb|300px|right|After 146.5 hours (6 days 2.5 hrs)]]  
[[File:WiiVC BitFS 146hr.png|thumb|300px|right|After 146.5 hours (6 days 2.5 hrs)]]  
[[File:Original-bitfs-raising.jpg|thumb|The original BitFS platform raising discovery by Andru! on May 10th 2018.]]
[[File:Original-bitfs-raising.jpg|thumb|The original BitFS platform raising discovery by Andru! on May 10th 2018.]]
'''Wii VC Round-to-Zero''' refers to an emulation inaccuracy in the [[Virtual Console|Wii Virtual Console]] (Wii VC). When converting a double precision floating point number (a "double") to a single precision floating point number (a "float"), the N64 typically uses the round-to-nearest rounding mode. This means that if the double is not exactly equal to a float, it will round up or down to the float that is closest in value to the original number. While this behavior is accurately emulated by most emulators and the Wii U VC, the Wii VC instead uses the round-to-zero mode. This mode will always round the double up if it is negative, and round it down if it is positive.
'''Wii VC Round-to-Zero''' refers to an emulation inaccuracy in the [[Virtual Console|Wii Virtual Console]] (Wii VC) version of SM64. When converting a double precision floating point number (a "double") to a single precision floating point number (a "float"), the N64 typically uses the round-to-nearest rounding mode. This means that if the double is not exactly equal to a float, it will round up or down to the float that is closest in value to the original number. While this behavior is accurately emulated by most emulators and the Wii U VC, the SM64 Wii VC instead uses the round-to-zero mode. This mode will always round the double up if it is negative, and round it down if it is positive.


While the programmers did not intentionally use doubles very often, favoring single precision floats instead, they occasionally used them accidentally.
While the programmers did not intentionally use doubles very often, favoring single precision floats instead, they occasionally used them accidentally.
Line 24: Line 24:


The glitch was discovered by '''[https://www.youtube.com/channel/UCz8K5WhRhrjFRNGvkWupUlQ xAndru!]''' when he left his Wii powered on overnight while in Bowser in the Fire Sea and noticed that the oscillating platforms had risen above their original positions.<ref>[https://www.youtube.com/watch?v=MFxJuq3FRgI "Bowser in the Fire Sea in 0x A Presses? (New Glitch Explanation)" by bad_boot]</ref>
The glitch was discovered by '''[https://www.youtube.com/channel/UCz8K5WhRhrjFRNGvkWupUlQ xAndru!]''' when he left his Wii powered on overnight while in Bowser in the Fire Sea and noticed that the oscillating platforms had risen above their original positions.<ref>[https://www.youtube.com/watch?v=MFxJuq3FRgI "Bowser in the Fire Sea in 0x A Presses? (New Glitch Explanation)" by bad_boot]</ref>
The bug does not occur in any later Wii VC releases, nor in the Wii U VC or in any mainstream N64 emulators. At the time of its discovery, the bug did not occur on the Dolphin emulator, but has since been corrected.<ref>[https://dolphin-emu.org/blog/2018/07/06/dolphin-progress-report-june-2018 "Dolphin Progress Report: June 2018"]</ref>
No objects other than the sinking platforms are known to have similarly exploitable behavior, though the rounding bug does cause many discrepancies between the original and Wii VC versions of the game, including slightly different surface normals.


==Applications==
==Applications==
After several failed attempts by various players, the A press save in Bowser in the Fire Sea was console verified RTA on 20 Jun 2018 by ethanwhitesm64.<ref>[https://youtu.be/B1m-5LWOxW0 "BitFS 0x A Presses" by Ethan White]</ref> Six days later, pannenkoek2012 TASed the red coin star in zero A presses using a modified N64 emulator that replicated the rounding error.<ref>[https://youtu.be/Aa_CciaM4aM "Bowser in the Fire Sea with Red Coins 0x A Presses (Wii VC Only)" by UncommentatedPannen]</ref>
After several failed attempts by various players, the A press save in Bowser in the Fire Sea was console verified RTA on 20 Jun 2018 by ethanwhitesm64.<ref>[https://youtu.be/B1m-5LWOxW0 "BitFS 0x A Presses" by Ethan White]</ref> Six days later, pannenkoek2012 TASed the red coin star in zero A presses using a modified N64 emulator that replicated the rounding error.<ref>[https://youtu.be/Aa_CciaM4aM "Bowser in the Fire Sea with Red Coins 0x A Presses (Wii VC Only)" by UncommentatedPannen]</ref>
No other console or emulator is known to reproduce this rounding inaccuracy, including the Wii U VC. At the time of its discovery, the bug did not occur on the Dolphin emulator, but has since been corrected.<ref>[https://dolphin-emu.org/blog/2018/07/06/dolphin-progress-report-june-2018 "Dolphin Progress Report: June 2018"]</ref>
No other objects are known to have similarly exploitable behavior, though the rounding bug does cause many discrepancies between the original and Wii VC versions of the game, including slightly different surface normals.


==References==
==References==