Address Error Exception: Difference between revisions

errors aren't values
mNo edit summary
(errors aren't values)
Tags: Mobile edit Mobile web edit
 
(7 intermediate revisions by 4 users not shown)
Line 20: Line 20:
| Going out of bounds in a room with a painting || style="background-color: #ff9696"| No || style="background-color: #ff9696"| No || `gPaintingMarioFloorType` is what is affected, and it's updated every frame the OoB check happens; at most, you could ''maybe'' delay entering a painting by 1 frame
| Going out of bounds in a room with a painting || style="background-color: #ff9696"| No || style="background-color: #ff9696"| No || `gPaintingMarioFloorType` is what is affected, and it's updated every frame the OoB check happens; at most, you could ''maybe'' delay entering a painting by 1 frame
|-
|-
| Being pushed off of a hang-able ceiling while in the idle hanging action || style="background-color: #ff9696"| No || style="background-color: #fffca8"| Doubtful || ''t9'' for start hang. Would potentially cause Mario to stay hanging for a single frame without a ceiling, No effect for idle loop hang t8, last use of t8 set is ''jr t8'' which is never the hang-able value 0x05)
| Being pushed off of a hang-able ceiling while in the idle hanging action || style="background-color: #ff9696"| No || style="background-color: #fffca8"| Doubtful || No effect for idle loop hang t8, last use of t8 set is ''jr t8'' which is never the hang-able value 0x05)
 
Relevant code (sp24 is gMarioState):
    //! Crash if Mario's referenced ceiling is NULL (same for other hanging actions)
    if (m->ceil->type != SURFACE_HANGABLE) {
    12a4: 8fa80018 lw t0,24(sp)
    12a8: 24010005 li at,5
    12ac: 8d090064 lw t1,100(t0)
    12b0: 85390000 lh t9,0(t1)
    12b4: 13210008 beq t9,at,12d8 <act_start_hanging+0xf0>
    12b8: 00000000 nop
Since the t9 load is skipped, the only effect could be to potentially cause Mario to stay hanging for a single frame without a ceiling. After that, `perform_hanging_step` will catch the fact that Mario's ceiling is NULL and stop the hang. Similar effects on PAL version.
|-
|-
| Sound glitch || style="background-color: #ffb65e"| N/A || style="background-color: #ffb65e"| N/A || The cause of sound glitch is unknown. Contrary to popular belief, it can sometimes occur on versions other than the original Japanese N64 release.
| Sound glitch || style="background-color: #ffb65e"| N/A || style="background-color: #ffb65e"| N/A || The cause of sound glitch is unknown. Contrary to popular belief, it can sometimes occur on versions other than the original Japanese N64 release.
|-
| Teleporting while passing over a loading zone ||style="background-color: #ffb65e"| Unknown ||style="background-color: #baffa8"| Yes || Since the area changed, there is now no teleporter with the same ID as the one Mario used to warp. Thus the game returns NULL when trying to find the teleporter to warp to, and crashes when trying to access information about its destination. Under certain conditions, this can cause a Wrong Warp on PAL or Shindou VC.
|-
| Warping out of a level while passing over a loading zone ||style="background-color: #ffb65e"| ||style="background-color: #ffb65e"| || Similar to above, but only hypothetical. Maybe possible in DDD using the Sub Gate warp and whirlpool cloning to reach the instant loading zone, but not yet achieved without hacks.
|}
|}
[[Category:Glitches]]
 
[[Category:Mechanics]]