Decompiled Games and the Dream of Modding
This weekend is most likely going to be spent with a playthrough of Donkey Kong 64 Randomizer on my TV. Some of the features of this modded version of the game does completely change the pacing of the entire thing. DK64 is famous for its just criminal amount of collectibles that you can only collect with a specific monkey. So a Tag Anywhere feature creates this whole new pace in the game since a level which usually took 3-4 hours to complete is now half that time. Not only does the pace change, but the game is made easier by being able to just easily see which Kong need which power-up for each of the stores you encounter.
DK64 is, in general, a cumbersome slogfest. The addition of certain features does some incredible things to this game and makes it kind of tolerable. I kid, of course, the game is still fun even in vanilla. But the modding of this game has totally changed the experience of playing. This is due to an active modding scene and a very high level of dedication towards a single thing.
All of this made me think about the joy of internet culture and decompiling games in comparison to all the fantasies we would have about our favorite games as kids. When I was a kid, no games were found on easily compressed .zip files on GitHub. But now with the resources and the common goal of decompiling well-known games like Mario 64, Super Metroid (technically a disassembly), and Banjo Kazooie you have all the freedom in the world to mod and creates hacks of these games.
For those unaware what decompiling and disassembly means, very basically it means that you take the 1’s and 0’s (the binary code that computers read) and turn it back into C (or some high level language). Some games are now totally decompile, which means that all the developers spaghetti-code is now freely available. Other games are modded through a hex-editor. We can represent the ways in which a computer reads in a couple of different ways for example binary. This is the phrase Hello World! in binary:
“01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001”
Even if this is totally unintelligible for a person, a computer prefers this way. What you see here is that each letter is represented by a string of 8 1’s and 0’s. Except that there are no spaces in binary code, they’re added here to gain a little clarity for the reader. But it is still quite cumbersome to work with this kind of notation. So what you could do is decide that certain that certain strings of 1’s and 0’s now symbolize a base-16 counting system. How we do that in hexadecimal is 00000000 represents NULL (or no data) and the maximum number 01111111 is represented 7F. Essentially, it is binary being represented as a more compact string of characters. The computer doesn’t read anything different than binary, but humans can more easily read and understand something like hexadecimal. This would be Hello World! in hexadecimal:
“48 65 6C 6C 6F 20 57 6F 72 6C 64 21”
Now that is a lot more managable to read. Now don’t get me wrong, it is still not anywhere close to being legible for regular people. But if you can memorize a table of 255 characters you can read much quicker. You don’t have to do that sort of thing just to text. A lot of things can be represented in a hexadecimal value in those old retro games. So with a hexeditor on a computer you could easily change the game in weird and unexpected ways.
What this inevitably has led to is that these games, and in particular Mario 64, are becoming live scenes for game development. Different premises are making their ways into a well-known games: Super Mario 64: Last Impact, Search for the 120 Stars (which paradoxically has 150 stars), B3313, Mario in the Multiverse, Gore, and Beyond the Cursed Mirror. All of these have at their own times been the objects of Youtube-content which have produced hundreds-of-thousands of views. These old games are at once prime opportunities at trying your hands at game development with a familiar IP, as well as being able to get your name out there through amazing hacks. I mean this is exactly what Kaze Emanuar has done all the time he has been on Youtube.
I would be remissed if I didn’t mention the players who thought that their games weren’t hard enough and decided to just go hogwild in hard mode hacks and Kaizo versions. Kaizo just means remodel or reconfiguration in Japanese. The Kaizo Marios are the most known, but are by far the only Kaizo. You have Pokémon Kaizos (Emerald Kaizo), Sonic Kaizo, and others still which tests the limits of each of the different groups of fans. And Kaizo isn’t the only way to make a game harder, in Pokémon there is a long tradition of Nuzlockes. In Nuzlocke runs you essentially have two rules:
- You are only allowed to get the first Pokémon in any route. If you faint it, its dead.
- If any of your Pokémon faints, it is permanently dead and must be released. If all of your Pokémon faints, you have failed the challenge.
As I am watching the DK64 Randomizer playthrough I am being reminded of how annoying this game was when it came out and how much closer the community who played these games are to the jank that the devs had left all those years ago. After the disastrous remake of the PS2 GTA games, it is clear to me that the companies behind these games have no interest in actually being faithful or create good versions of their previous output. Unfortunately, a lot of stupid consumers will continue to buy a shitty, downgraded version of a game because it is easily available for relatively cheap on a platforms online service. However, if you just go on a couple of forums or watch the community in action you find a whole host of good ideas and different versions freely available thorugh ROMs1. It shows how community interaction and common experiences can foster better UX for everyone. Another example of how if people come together with their experiences and a complaint, it is easily fixable with a little tinkering.
Thinking about my own experiences growing up playing games, there are tons of different things I would love to have added. Games like Pokémon Red and Blue are notorious grindfests. And we would tell eachother stories and rumors of things that could happen in DKC, Sonic, and Lola games. It is crazy that today’s kids could feasibly think of something cool to do and potentially add it to a retro game as soon as they become fluent in programming. A bunch of kids now are playing games they have mainly seen through speedruns and other Youtube-content. They had no idea about the insane blisters you could get from playing Mario Party as a kid. They mainly know these games through the continued presence of a community which keeps them alive in a sense. A lot of the old Amiga, Intellivision, and Atari 2600 games are essentially dead. Many of them are even unable to tracked in their physical formats. I had an Intellivision, and setting up an RF-connector to any modern television is a nightmare. For the realest experience of retro games you essentially need a separate television-set with both an RF-connector, a composite or SCART (if you are European).
Sorry for the grumblings. It is neither here nor there. The advent of this era of gaming (which has been going on for around 10-20 years now) has created a kind of interesting blend between designer and consumer. In the olden days, the designer was a someone who you didn’t see but only felt through the game2. The designer could design a puzzle where in the end you would want to choke them, but they were mostly invisible. The filesharing and customizable ROMs era has made it so that there is often an e-mail or a username attached to the file. The consumer is now able to make edits with a couple of tutorials or a quick stop by the Steam Workshop. While modding in modern games is different than in the old 8 or 16-bit games, the spirit of wanting to make something more efficient or create something fun for people still lives on!
I am not a decompiler myself, so if anyone who happens to do this kind of technical work is reading I apologize for the oversimplification of your trade. The prospect of going through hundreds of thousands of lines of spaghetti code to unravel and make sense of it sounds like a nightmare unbecoming of man. So kudos to any decompiler, hackers, and modders for doing the often thankless work of bringing so many people a lot of fun and hardship.
.dash
-----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTcOGAxP8k/AtPPD/mFtc4Wkq/a8gUCZ6d6QAAKCRCFtc4Wkq/a 8mq9APwKpH5zSuBSobx/DdKEJrpccaQxinx9eELqGCPjhZlSPwEAnYf5TGI5tyWc eqgMRp7NfA81CDTjhZMg/4Ka6wLTcAg= =v80c -----END PGP SIGNATURE-----Comments
Now whether or not this is totally legal is up for debate, but I would venture to guess it leans towards no. Since these games are essentially abandonware it is a little more ambiguous. But nobody tell Nintendo any of this and we’re all good.↩
They were named in the credits, but I don’t know any kid who cared about credits.↩