Hacker News new | ask | show | jobs
by BorisMelnik 4421 days ago
Love that people are still hacking NES. There are numerous other glitches in the original NES, such as being able to jump on the turtle in 3-2 (or 3-1 I forget) to get 99 lives (go over 100 and you die.

Also at this point, can't someone from Nintendo just open source the code for nostalgic purposes :)

3 comments

What you get from disassembling a NES ROM (or, really, software for any 8-bit computer) is not much different from what went in originally, except (maybe) there were some comments.

It's very unlikely that the original assembly source exists anymore, or even that it was kept much later than the game's release. It's not until very, very recently that game companies started to think that the original source and assets for a game would have enough value to be worth the cost of archiving. Even games from the PlayStation 2 era routinely have to be rewritten from scratch with new assets when re-released on later consoles.

In my experience, most of the game source code that survived from the early years of personal computing is for games written in BASIC, which would have been distributed as source. There's a few exceptions like for Jordan Mechner's games, but that just goes hand-in-hand with his famously detailed records of his development process.

While I agree that the original source code for the game is probably long gone, I think we can settle for having a disassembled version of it. As you pointed out, the game was most likely in handwritten assembly, so the assembly output probably isn't much different. The most useful part would have been the comments, which it turns out there were some very dedicated people that went through the entire disassembly and annotated the source code like this one by doppleganger http://www.romhacking.net/documents/344/ and this one where movax tried to make the assembly more natural http://www.romhacking.net/documents/635/

There are several really cool things you can find on here about older games including a detailed explaination of the minus one world http://www.romhacking.net/documents/343/ where doppelganger covers exactly why the game does what it does.

A small correction: You die if you go over 127 lives. This is due to the fact that the game uses 8 bit signed integers to store the number of lives. You don't die immediately either, but when you do die normally, you get a game over because the game detects that you have less than zero lives remaining.
thank you for this. I always thought it was 100. When I was 12 I never bothered to count the symbols "crown + moon = 88" for instance :)
acmlm is well noted for this, as well as speedrunning various games (mostly Dr. Mario and A Link to the Past). Google his name for more info or watch his stream (usually late at night US time) - www.twitch.tv/acmlm