Have any classic NES games been open?

I just played RBI baseball in a browser window.

This in itself amazes me just amazingly. When I was young, NES was a magic box that could provide hours of fun for young children around the world.

Now, decades later, I am 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 the code from some of these games will be fixed in Smithsonian.

My programming question:

Are there any classic NES games (like RBI Baseball) that are open source, and if so, where can I find the code to learn?

Otherwise, are there any NES games for which source code is available for study?

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

For example:

  • Did they use object oriented programming?
  • Did they use design patterns to keep the code operational?
+42
open source
Feb 11 '10 at 2:23
source share
7 answers

No. At least I know (and I searched).

NES appeared immediately after the crash of video games in 1983, the main reason the market crashed was the flow of bad games, because customers didn’t buy a single game because there was no way to find out which game was good.

So, Nintendo, when introducing NES (and all other consoles since then, for example, SEGA's Master System), decided that only approved games would ever be released, and doing something open source would ever break the contract with big fines, the reason is that without releasing a public API, this would make home-grown harder to flood the market.

Today Nintendo is much easier to resolve games, see a stream of crap games on Wii, but still the console does not allow using their "true" API to avoid flooding, even when someone used the GPL (ScummVM) engine on Wii, causing problems, since the release of the game source for the Nintendo system is a violation of the contract, and the GPL requires the source to be released, in this particular case, the games were pulled out.

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

Perhaps you can find home games or remodeled games. But I think that this is not what you asked.

You can also sometimes find the source of remakes and ports, but they do not use the console API.

+24
Feb 11 '10 at 2:30
source share

You may have found this since then, but Metroid (the original, for NES / Famicom) has been parsed, and the code (in beautiful ASM) has been posted on Romhacking.net.

Direct link.

+12
Aug 31 '10 at 5:39
source share

If you are interested in NES programming, you should check out Episode 91 - Tengen Reunion Retronauts Roundtable . (Note that this is episode 91 of the initial launch of the podcast, newer episodes can be found @ http://www.retronauts.com/ )

Basically, this is a bunch of former NES programmers who remembered the development of games in the system (and other retro-systems). From time to time, they plunge into technical things, which are all very exciting.

+12
Jul 16 '11 at 23:12
source share

I have never worked in the video game industry, but I read a lot about it, and from time to time I talk to friends who do, so I will try to explain more or less what the difference is between a game and another application regarding programming methodologies.

The first thing to understand is a one-time product. This is not like a spreadsheet or word processor, where you can release new versions that enhance and expand the previous code base.

Secondly, you need to release the game as soon as possible. Usually, the more time you spend in a game, the worse it will be compared to other games of that time. This mainly applies to computer games, where the hardware is developing much faster than in the console world, but is still used to a large extent (games continue to improve even when using the same equipment as the best tools and algorithms).

Thirdly, usually games should push hardware to the limit. Therefore, screw all the elegant templates that will make your code more beautiful and convenient if they make it work more slowly.

So, what would I expect by analyzing the old source code of the NES game, this is just spaghetti code, most of which are written in an assembly with a lot of low-level hackers closely related to the architecture of the machine.

I hope my answer will be useful to you.

+7
Feb 16 '10 at 17:31
source share

I would recommend looking at nesdev.com if you are interested in developing NES games. They have detailed documentation.

+3
Aug 11 2018-12-12T00:
source share

You will most likely not find a source for the original games, but there are many homegrown and relatively mature instrumental chains. Like your favorite answer, Google is your friend. But to get you started, here is a relatively decent tutorial:

http://www.bestdamnpodcastever.com/millerblog/?p=72 via "The Wayback Machine"

+2
Feb 11 '10 at 4:12
source share

NES games were only developed (as far as I know) in assembler, and I think that the source code is lost for a long time after these years. In any case, with the source code of the assembler is not so far from the machine code, so it cannot be too revealing, as it will be C or Java code.
About object orientation and desgin patterns, again, it was assembler and the 80s, don't expect this.

+2
Apr 21 '10 at 12:15
source share



All Articles