EvilEngine/PowerUp Event Exploit

The events GivePowerUp (in Battle for Bikini Bottom and onwards) and UpgradePowerUp (in The SpongeBob SquarePants Movie onwards) can be used to increment arbitrary bytes in memory by adjusting the first argument supplied to the event, as first demonstrated by Seil in January 2023.

Normally, the argument supplied to these events is within a small range, and is intended to give the player specific powerups based on the argument. However, it was shown that the argument supplied to these events is used as an index in a byte array, but the index is not restricted, meaning that the Link creator can modify arbitrary bytes within the GameCube's memory, essentially allowing mod creators to utilise Action Replay codes, without requiring the mod player to enter it manually.

For example, in The SpongeBob SquarePants Movie NTSC GameCube version, sending the GivePowerUp event with an argument of  will cause memory address   to be incremented from   to , enabling the game's debug fly mode.

Base Memory Addresses
TODO: Add addresses for subsequent games (Incredibles, ROTU, Rat Proto) assuming the exploit still works.

Limitations
While the exploit is powerful, it does have some limitations.
 * Currently, the UpgradePowerUp is only known to increment a byte, and cannot decrement it—therefore, if a byte needs to be decremented, it will have to be incremented until it overflows, and then incremented back up to the desired value. This means changing a single byte can require up to 255 links, which is the maximum allowed on an object, so some memory modifications will need the links to be separated over multiple objects.