Teleporter wrong warp: Difference between revisions
m (MMMMMMMMMMMMM moved page Teleporter Wrong Warp to Teleporter wrong warp: Sentence casify the wiki) |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{stub}} {{rewrite}} | {{stub}} {{rewrite}} | ||
The Teleporter Wrong Warp <!-- (Wrong, Wrong Warp), (Wet Dry Warp), (Invalid Pointer manipulation), (Crash Evasion Warp), (Stale Register Manipulation), (Null Ignore Manipulation), (Ignored Error Warp), (Useless Credit Warp)--> is a Virtual Console exclusive glitch caused by Mario teleporting while an area change occurs. When the area change occurs, the teleporter unloads and thus the game does not have a valid warp ID to send Mario to. On N64, this would crash due to an Address Error Exception. However, on Virtual Console releases of the game, these exceptions are ignored and the game will pull a stale value from the register and use it as the warp ID. The register that is pulled from consists of arguments to functions, denoted by a0, a1, a2 and a3. In order for a warp to occur without crashing, the values in these registers must not be invalid. In this case, the value in a0 will be used as the ID for the level to be warped to, the value in a1 is used as the level area to be warped to, and the value in a2 is used as the warp node ID. Due to compiler differences between release versions, a1 will always be 0 on the US and original JP versions of the game, while it can be 0 or 2 on the PAL and Shindou versions. Because level areas are indexed starting from 1 and not 0, if the a1 value is 0 the game will crash. If the a1 value is 2, the game will warp Mario to area 2. Because of this, a wrong warp can only occur without crashing on the PAL and Shindou releases of the game. The value needing to be 2 also prevents warping to any level with only one area, as area 2 is not valid in these levels. On the PAL and Shindou releases, the a2 register points to a table of values for the cosine function. The value in a2 can be manipulated. This allows the warp node ID to be controlled to some extent. This makes it possible to set the warp node ID to a value above 0xF8, which will begin the credits cutscene when Mario warps. However, there are currently two obstacles that prevent the credits from playing. The first is that current set-ups will cause Mario to be out-of-bounds when he does the wrong warp, causing him to die instantly and the credits to not play. The second obstacle is that if the cutscene is able to start, it will crash when Peach is supposed to be loaded due to her model not being present in any level except the castle grounds. Research is ongoing to determine if this obstacles can be overcome so that a true credits warp is possible. | The Teleporter Wrong Warp <!-- (Wrong, Wrong Warp), (Wet Dry Warp), (Invalid Pointer manipulation), (Crash Evasion Warp), (Stale Register Manipulation), (Null Ignore Manipulation), (Ignored Error Warp), (Useless Credit Warp)--> is a Virtual Console exclusive glitch caused by Mario teleporting while an area change occurs. When the area change occurs, the teleporter unloads and thus the game does not have a valid warp ID to send Mario to. On N64, this would crash due to an Address Error Exception. However, on Virtual Console releases of the game, these exceptions are ignored and the game will pull a stale value from the register and use it as the warp ID. The register that is pulled from consists of arguments to functions, denoted by a0, a1, a2 and a3. In order for a warp to occur without crashing, the values in these registers must not be invalid. In this case, the value in a0 will be used as the ID for the level to be warped to, the value in a1 is used as the level area to be warped to, and the value in a2 is used as the warp node ID. Due to compiler differences between release versions, a1 will always be 0 on the US and original JP versions of the game, while it can be 0 or 2 on the PAL and Shindou versions. Because level areas are indexed starting from 1 and not 0, if the a1 value is 0 the game will crash. If the a1 value is 2, the game will warp Mario to area 2. Because of this, a wrong warp can only occur without crashing on the PAL and Shindou releases of the game. The value needing to be 2 also prevents warping to any level with only one area, as area 2 is not valid in these levels. On the PAL and Shindou releases, the a2 register points to a table of values for the cosine function. The value in a2 can be [[Stale Register Manipulation| manipulated]]. This allows the warp node ID to be controlled to some extent. This makes it possible to set the warp node ID to a value above 0xF8, which will begin the credits cutscene when Mario warps. However, there are currently two obstacles that prevent the credits from playing. The first is that current set-ups will cause Mario to be out-of-bounds when he does the wrong warp, causing him to die instantly and the credits to not play. The second obstacle is that if the cutscene is able to start, it will crash when Peach is supposed to be loaded due to her model not being present in any level except the castle grounds. Research is ongoing to determine if this obstacles can be overcome so that a true credits warp is possible. | ||
==References== | ==References== | ||
[https://www.youtube.com/watch?v=YduutOI7uxY "Wrong Warp in SM64" by Nim] | [https://www.youtube.com/watch?v=YduutOI7uxY "Wrong Warp in SM64" by Nim] |
Latest revision as of 02:51, 26 May 2021
The Teleporter Wrong Warp is a Virtual Console exclusive glitch caused by Mario teleporting while an area change occurs. When the area change occurs, the teleporter unloads and thus the game does not have a valid warp ID to send Mario to. On N64, this would crash due to an Address Error Exception. However, on Virtual Console releases of the game, these exceptions are ignored and the game will pull a stale value from the register and use it as the warp ID. The register that is pulled from consists of arguments to functions, denoted by a0, a1, a2 and a3. In order for a warp to occur without crashing, the values in these registers must not be invalid. In this case, the value in a0 will be used as the ID for the level to be warped to, the value in a1 is used as the level area to be warped to, and the value in a2 is used as the warp node ID. Due to compiler differences between release versions, a1 will always be 0 on the US and original JP versions of the game, while it can be 0 or 2 on the PAL and Shindou versions. Because level areas are indexed starting from 1 and not 0, if the a1 value is 0 the game will crash. If the a1 value is 2, the game will warp Mario to area 2. Because of this, a wrong warp can only occur without crashing on the PAL and Shindou releases of the game. The value needing to be 2 also prevents warping to any level with only one area, as area 2 is not valid in these levels. On the PAL and Shindou releases, the a2 register points to a table of values for the cosine function. The value in a2 can be manipulated. This allows the warp node ID to be controlled to some extent. This makes it possible to set the warp node ID to a value above 0xF8, which will begin the credits cutscene when Mario warps. However, there are currently two obstacles that prevent the credits from playing. The first is that current set-ups will cause Mario to be out-of-bounds when he does the wrong warp, causing him to die instantly and the credits to not play. The second obstacle is that if the cutscene is able to start, it will crash when Peach is supposed to be loaded due to her model not being present in any level except the castle grounds. Research is ongoing to determine if this obstacles can be overcome so that a true credits warp is possible.