Parallel Universe: Difference between revisions

no edit summary
No edit summary
No edit summary
 
Line 1: Line 1:
[[File:ParallelUniverseViews.jpg|thumb|A diagram of Parallel Universe movement in [[Hazy Maze Cave]], after [[Mario]] has returned to the main map.]]
[[File:ParallelUniverseViews.jpg|thumb|A diagram of Parallel Universe movement in [[Hazy Maze Cave]], after [[Mario]] has returned to the main map.]]
A '''Parallel Universe''', or '''PU''', is a region of space located far outside the intended map boundaries that reflects certain aspects, especially the floors and/or ceilings, of the main map. When the game looks for floors below (or ceilings above) a given object, it first "truncates" the object's position from a floating point value to a 16-bit integer value. The range of a floating point value is much larger than the range of a 16-bit integer value (which is -2<sup>15</sup> = -32,768 to 2<sup>15</sup> - 1 = 32,767). If a coordinate of the object's position falls outside this range, it "wraps around". For example, if one of these floating point values is 40,000, then 40,000 - 65,536 = -25,536 will be used when determining if the object is aligned with a floor or ceiling. This gives the illusion that the floors and ceilings of the main level map are "copied" repeatedly in a uniform 3D grid, at a spacing of 65,536 units.
A '''Parallel Universe''', or '''PU''', is a region of space located far outside the intended map boundaries that reflects certain aspects, especially the floors and/or ceilings, of the main map. When the game looks for floors below (or ceilings above) a given object, it first "truncates" the object's position from a floating point value to a 16-bit integer value. The range of a floating point value is much larger than the range of a 16-bit integer value (which is -2<sup>15</sup> = -32,768 to 2<sup>15</sup> - 1 = 32,767). If a coordinate of the object's position falls outside this range, it "wraps around". For example, if one of these floating point values is 40,000, then 40,000 - 65,536 = -25,536 will be used when determining if the object is aligned with a floor or ceiling. This gives the illusion that the floors and ceilings of the main level map are "copied" repeatedly in a uniform 3D grid, at a spacing of 65,536 units.
[[File:Visible PU.png|thumb|184x184px|Frame of Peter Fedak's video where he turns Parallel Universes visible using hacks; notice the lack of [[objects]]|left]]
[[File:Visible PU.png|thumb|184x184px|Frame of Peter Fedak's video where he turns Parallel Universes visible using hacks; notice the lack of [[objects]]|right]]
The truncation responsible for the existence of parallel universes is only performed when determining alignment with floors and ceilings. This means that walls and objects, both of which use floating point arithmetic to determine collision, do not "exist" in PUs, unless they are brought there.
The truncation responsible for the existence of parallel universes is only performed when determining alignment with floors and ceilings. This means that walls and objects, both of which use floating point arithmetic to determine collision, do not "exist" in PUs, unless they are brought there.


Due to the extremely high speed required to travel to PUs, they are not accessible from all courses. The courses where PUs can or cannot be accessed are summarized in the tables below. Work is ongoing to try to access PUs in courses such as [[Bowser in the Fire Sea]] (via [[Bully battery]]) and demo courses (via massive [[Spawning displacement]]).
Due to the extremely high speed required to travel to PUs, they are not accessible from all courses. The courses where PUs can or cannot be accessed are summarized in the tables below. Work is ongoing to try to access PUs in courses such as [[Bowser in the Fire Sea]] (via [[Bully battery]]) and demo courses (via massive [[Spawning displacement]]).


Methods to access a PU are:
Methods to access a PU are:
Line 18: Line 16:
**Pole Teleport
**Pole Teleport
**Platform Displacement
**Platform Displacement
**[[Spawning displacement|Spawning Displacement]] (not currently achieved)




Line 223: Line 220:
Although usually the term "PU" refers to a horizontal PU (i.e. one caused by truncation of the ''x'' and/or ''z'' coordinates of an object's position), vertical PUs (where the ''y'' coordinate is truncated) also exist. However, these behave completely differently to horizontal PUs. While truncated coordinates are used to ''find'' the floor below the object and the ceiling above the object, the original floating point values are used to determine what ''effect'' these surfaces have on the object.
Although usually the term "PU" refers to a horizontal PU (i.e. one caused by truncation of the ''x'' and/or ''z'' coordinates of an object's position), vertical PUs (where the ''y'' coordinate is truncated) also exist. However, these behave completely differently to horizontal PUs. While truncated coordinates are used to ''find'' the floor below the object and the ceiling above the object, the original floating point values are used to determine what ''effect'' these surfaces have on the object.


For example, when Mario is less than 160 units below the nearest ceiling, he is considered to be "above" the ceiling, his vertical speed is killed, and he bonks. If Mario moves to a positive (upward) vertical PU, the "nearest" ceiling will be determined based on truncated coordinates, and will therefore be in the main map. But when checking whether he is above this ceiling, floating point coordinates are used instead, and so Mario behaves as though he is stuck in a ceiling. This behavior results in positive vertical PUs appearing to be filled entirely with ceilings.
For example, when Mario is less than 160 units below the nearest ceiling, he is considered to be "above" the ceiling, his vertical speed is killed, and he bonks. If Mario moves to a positive (upward) vertical PU, the "nearest" ceiling will be determined based on truncated coordinates, and will therefore be in the main map. But when checking whether he is above this ceiling, floating point coordinates are used instead, and so Mario behaves as though he is stuck in a ceiling. This behavior results in positive vertical PUs appearing to be filled entirely with ceilings.<ref>[https://www.youtube.com/watch?v=av42uJ-04A4 "Walls, Floors, and Ceilings in PUs" by Maria Nicolae]</ref>


On the other hand, when Mario is below his "nearest" floor, he will snap up to it. This means that if Mario moves to a negative vertical PU, he will usually upwarp back to the main PU grid. This is called an '''overflow jump''', or '''OJ''' for short.
On the other hand, when Mario is below his "nearest" floor, he will snap up to it. This means that if Mario moves to a negative vertical PU, he will usually upwarp back to the main PU grid. This is called an '''overflow jump''', or '''OJ''' for short.