Uploaded January 2021 | Updated September 2026, 1 week ago
The first ever time data has been ran as code successfully in paper mario. This will require quite a lengthy explanation (and there's still lots unknown) so I'll be sure to write one out either tomorrow or the day after.
Quick rundown:
We get the game in a state that allows us to store effects while moving.Effects can be anything such as dust Mario kicks up when walking, dust from hammering, shooting star effects in the background of shooting star summit, etc. The game will starting writing effect matrices at 80175630. There is code at 80197000 and NOTHING checks to max sure that the matrix data at 80175630 doesn't overwrite what's at 80197000. The function at 80197000 can change easily depending on effects, but we need a specific function to load here that has no prologue (doesn't push to/pop from the stack). So we hammer to fill up the heap as the hammer allocates a large portion of memory to the heap. We fill up the heap until 1 more hammer would produce too much matrix data and crash. From here we spawn footprints in the snow since they take significantly less memory. With this, we are able to get the last 0x20 bytes of the footprint in the snow to overwrite the code at 80197000. The only issue is...what i run in the video is 8 NOP instructions. So this is "ACE" but nothing of significance has been done just yet.
The first ever time data has been ran as code successfully in paper mario. This will require quite a lengthy explanation (and there's still lots unknown) so I'll be sure to write one out either tomorrow or the day after.
Quick rundown:
We get the game in a state that allows us to store effects while moving.Effects can be anything such as dust Mario kicks up when walking, dust from hammering, shooting star effects in the background of shooting star summit, etc. The game will starting writing effect matrices at 80175630. There is code at 80197000 and NOTHING checks to max sure that the matrix data at 80175630 doesn't overwrite what's at 80197000. The function at 80197000 can change easily depending on effects, but we need a specific function to load here that has no prologue (doesn't push to/pop from the stack). So we hammer to fill up the heap as the hammer allocates a large portion of memory to the heap. We fill up the heap until 1 more hammer would produce too much matrix data and crash. From here we spawn footprints in the snow since they take significantly less memory. With this, we are able to get the last 0x20 bytes of the footprint in the snow to overwrite the code at 80197000. The only issue is...what i run in the video is 8 NOP instructions. So this is "ACE" but nothing of significance has been done just yet.


