Software engineers Ethan Rose and Mark Street discuss N64 game decompilation, surprising game code discoveries, and tool development in the decompilation scene. They talk about open-source tooling like Splat and Decomp.me, and share insights into the world of decompiling classic video games like Super Mario 64 and The Legend of Zelda.
Read more
AI Summary
AI Chapters
Episode notes
auto_awesome
Podcast summary created with Snipd AI
Quick takeaways
Decompiling classic video games reveals hidden secrets and coding intricacies.
Exploring historical significance through decompilation showcases developers' challenges and coding styles.
Addressing undefined behavior in game code requires careful annotation and mitigation strategies.
Deep dives
Decompilation Process Overview
Decompilation involves translating a program's bytecode back into a higher-level programming language like C. The podcast discusses decompiling classic video games, focusing on Nintendo 64 projects like Super Mario 64 and Zelda. Software engineers Ethan Rose and Mark Street share their experiences in the decompilation scene and highlight open-source tooling like Splat and Decomp.me.
Motivations Behind Decompilation
Engineers engage in decompilation to uncover hidden game secrets and understand coding intricacies. Projects like Paper Mario reveal old debug code and engaging anti-tamper measures. Decomp stemming from nostalgia and passion enable developers to delve deep into the code's historical significance and appreciate the challenges developers faced in the past.
Code Complexity and Game Development
Decompiling game code reveals a mix of chaotic and well-structured programming. Developers often recognize trends and distinct styles in the code, ranging from garbage code to intricate systems. Projects like Paper Mario showcase unconventional script languages and elaborate approaches to game mechanics which add to the challenge and excitement of decompilation efforts.
Challenges with Undefined Behavior in Code
Developers discussed challenges faced with undefined behavior in code, citing examples like uninitialized variables causing game-breaking bugs or crashes due to luck in function calls. To mitigate such issues, they implement if-def flags in the code to address undefined behavior, highlighting cases from Paper Mario where bugs were annotated and fixed to prevent memory issues and game-breaking glitches.
Advancements in Decompilation Tools and Community Collaboration
The conversation shifted towards the tools and practices in the decompilation community, emphasizing tools like MIPS to C decompiler, ASM differ, and projects like N64 Splat for separating game code and assets. The collaboration and contributions from the community were highlighted, with mentions of Discord channels for development discussions and the contribution of various developers to tool enhancements. The discussion touched on upcoming improvements in decompilation processes, including potential AI integration and database for code snippets matching to aid in de-duplication and code analysis.
Decompilation is the process of translating a compiled program’s bytecode back into a higher-level programming language, like C. There’s a vibrant and growing scene of engineers working to decompile classic video games, and some of the most prominent projects have focused on the Nintendo 64. Recent successes include Super Mario 64, The Legend of Zelda: Ocarina of Time, and Paper Mario.
Ethan Roseman and Mark Street are both software engineers with experience in the decompilation scene. In addition to their work on specific games, they’re active in creating open-source tooling for the decompilation community, including Splat which is a binary splitting tool, and Decomp.me which is a collaborative decompilation and reverse engineering site.
Ethan and Mark join the podcast to talk about N64 game decompilation, surprising discoveries in the game code, tool development, and much more. Be sure to check out the Decomp.me Discord to learn more.
Joe Nash is a developer, educator, and award-winning community builder, who has worked at companies including GitHub, Twilio, Unity, and PayPal. Joe got his start in software development by creating mods and running servers for Garry’s Mod, and game development remains his favorite way to experience and explore new technologies and concepts.