Question

Have any classic NES games been open-sourced?

I just played a game of RBI Baseball in a browser window.

That in and of itself strikes me as simply amazing. When I was young, the NES was a magical box, capable of providing hours of enjoyment to young kids throughout the world.

Now, decades later, I'm a programmer. And I can appreciate the programming that went into games that were developed with more primitive hardware just a couple of decades ago. In fact someday, I fully expect that code from some of these games will be enshrined in the Smithsonian.

My Programming Question:

Have any classic NES games (like RBI Baseball) been open-sourced, and if so, where can I find code to study?

Failing that, are there any NES games for which source code is available to study?

I think it would be worthwhile to learn from their example.

For instance:

  • Did they use object-oriented programming?
  • Did they use design-patterns to keep the code maintainable?
 45  32098  45
1 Jan 1970

Solution

 28

No. At least none that I know of (and I've been searching).

NES appeared right after the 1983 video-game crash, the main reason why the market crashed was the flood of bad games, triggering the customers to not buy a single game, because there was no way to know what game was good.

So Nintendo when introducing NES (and all other consoles from the time, like Master System from SEGA), decided that only approved games would ever get released, AND making anything open source ever being a breach of contract with heavy fines, the reason for that is that by not releasing a public API, it would make "homebrews" harder to flood the market.

Today Nintendo is much more easy on the part of allowing the games, see the flood of crappy games on the Wii, but still no console allow you to use their "true" API, to avoid the flooding, there are even a issue when someone used a GPL engine (ScummVM) on Wii, causing trouble, because releasing the source of a game for a Nintendo system is a breach of contract, and GPL demands the source to be released, in that particular case the games were pulled of the shelves.

And no, XNA and PS3 Linux are not really console APIs, both impose severe limitations on what you can do with the console.

Maybe you can find homebrew, or reverse engineered games. But I guess that this is not what you asked.

Also the source of remakes and ports sometimes can be found, but these don't use the console API.

2010-02-11

Solution

 13

Maybe you have since found this, but Metroid (the original, for NES/Famicom) has been disassembled and the code (in beautiful ASM) posted on Romhacking.net.

Direct link.

2010-08-31