Parallel Universe: Difference between revisions

Jump to navigation Jump to search
No edit summary
No edit summary
Line 232: Line 232:
Parallel universes have found uses in both speed TASes and the [[A Button Challenge]] since they allow greater control of movement through a level. PU routing is comparable to movement through a five-dimensional space, as Mario can be modeled as traveling along five axes: three "relative" axes describing his position within the map, and two integers to specify which PU he is currently in. These PU axis integers are Mario's coordinates on the PU grid. Mario can adjust his [[speed]] and [[angle]] to move relatively around the stage regardless of how many PUs he moves in the ''x'' or ''z'' dimensions.
Parallel universes have found uses in both speed TASes and the [[A Button Challenge]] since they allow greater control of movement through a level. PU routing is comparable to movement through a five-dimensional space, as Mario can be modeled as traveling along five axes: three "relative" axes describing his position within the map, and two integers to specify which PU he is currently in. These PU axis integers are Mario's coordinates on the PU grid. Mario can adjust his [[speed]] and [[angle]] to move relatively around the stage regardless of how many PUs he moves in the ''x'' or ''z'' dimensions.


Mario's movement is split up into four [[Movement Steps|quarter steps]], and if any of these quarter steps attempts to place Mario out of bounds, his movement is canceled. Therefore in order to move to a PU, Mario's speed must be a multiple of four times the distance between PUs. If Mario takes all four quarter steps, then he will move four PUs in a single frame. This distance is called the '''Quadruple Parallel Universe''', or '''QPU''', distance.
Mario's movement is split up into four [[Movement Steps|quarter steps]], and if any of these quarter steps attempts to place Mario out of bounds, his movement is canceled. Therefore in order to move to a PU, Mario's speed must be a multiple of four times the distance between PUs. If Mario takes all four quarter steps, then he will move four PUs in a single frame. {{Anchor|QPU}}This distance is called the '''Quadruple Parallel Universe''', or '''QPU''', distance.


If one of Mario's quarter steps (other than the first one) ends out of bounds, the game will cut his movement short. In this case, Mario does not travel the full QPU distance, and instead ends at whichever PU he made it to before his intended quarter step became out of bounds. He is then "QPU misaligned."
If one of Mario's quarter steps (other than the first one) ends out of bounds, the game will cut his movement short. In this case, Mario does not travel the full QPU distance, and instead ends at whichever PU he made it to before his intended quarter step became out of bounds. He is then "QPU misaligned."


As traveling to PUs involves moving very far from the origin, floating point imprecision can begin to have a significant effect on Mario's position, angle, and collision. When Mario's position becomes large enough, this imprecision will result in the coordinates in PUs becoming so coarse that Mario cannot cross from one coordinate to the next and, eventually, will result in certain PUs being completely unaccessible.  
As traveling to PUs involves moving very far from the origin, floating point imprecision can begin to have a significant effect on Mario's position, angle, and collision. When Mario's position becomes large enough, this imprecision will result in the coordinates in PUs becoming so coarse that Mario cannot cross from one coordinate to the next and, eventually, will result in certain PUs being completely unaccessible.
 
==Floating point truncation crash==
==Floating point truncation crash==
While in theory the grid of PUs extends indefinitely, the behavior of the truncation operation becomes "undefined" when the floating point value is outside the range -2<sup>31</sup> to 2<sup>31</sup> - 1. The Nintendo 64 and [[iQue]] Player<ref>[https://youtu.be/_dAGdYd9KUY "Do Parallel Universes Crash on iQue?" by CadBrad]</ref> versions of the game crash when such a truncation is attempted. The Wii and Wii U virtual console versions of the game do not crash, though it is not currently known whether they wrap around the 32-bit integer range, or cap to the endpoints of the range. Most emulators do not properly emulate the crash, except for a specific version of Mupen64, modded to crash correctly.
While in theory the grid of PUs extends indefinitely, the behavior of the truncation operation becomes "undefined" when the floating point value is outside the range -2<sup>31</sup> to 2<sup>31</sup> - 1. The Nintendo 64 and [[iQue]] Player<ref>[https://youtu.be/_dAGdYd9KUY "Do Parallel Universes Crash on iQue?" by CadBrad]</ref> versions of the game crash when such a truncation is attempted. The Wii and Wii U virtual console versions of the game do not crash, though it is not currently known whether they wrap around the 32-bit integer range, or cap to the endpoints of the range. Most emulators do not properly emulate the crash, except for a specific version of Mupen64, modded to crash correctly.