Arbitrary Code Execution in Animal Crossing
Arbitrary code execution, the holy grail of video game exploits… Is it possible in Animal Crossing? There may be more to it than you might think…
This video includes mistakes, misinformation, or oversights! See below for corrections.
Mistakes & Corrections
At 09:23, I mention you can go to any address with QDS/BBR tags, but realistically you are limited by the size of the structured ROM without the PAT tag.
At 18:52, I mention Link’s rock “despawning” with a camera exploit, but this is an oversimplification. The real way to get empty hands and abuse SRM has to do with setting up culling and loading triggers to unload the rock while it’s in your hands, rather than “despawning” it.
In general, multiple objects can be used to overwrite pointers in Ocarina of Time, but for the specific human-viable setup with the file select, LightNode SRM is used. This was glossed over in the video; more information can be found here.
It’s mentioned at 19:49 that the Japanese version of the game is required, but it is theoretically possible to use SRM to switch languages to the included Japanese within the US versions. This would allow for Japanese inputs on a US disc.
Video
Thumbnail
Teaser Image
Additional Resources
References
James Chambers’ NES injection discovery:
https://jamchamb.net/2018/07/11/animal-crossing-nes-emulator-hacks.html
Cuyler’s NES patch loader:
https://cuyler36.github.io/2018/07/14/creating-a-nes-patch-loader.html
Ocarina of Time’s true ACE setup by MrCheeze:
https://www.youtube.com/watch?v=qe7JSRwF86E