The other day I asked myself "why spend time working with old outdated hardware and software for these old systems?" I mean in terms of performance I high end gaming PC is where you want to spend your time right? You want to work with the latest and greatest stuff right? Heck, even a standard console such as the XBOX ONE for PlayStation 4 could blow any system from the 80's out of the water. So again why work on this old ancient and limited stuff?
Well, today I might just have the answer. I just remembered that I have a friend who is rebuilding a 1950 Chevy classic and I could ask those same questions to him. Why are you working on a car that old? Don't you want to work on the newest cars? You spent $10,000 restoring that thing, what a waste? But for him, its worth it. It's his own hobby and its what he likes to do and hes not alone. There are lots of people who are into restoring and fixing up old classic cars from all time periods.
So the thing is, just because something is old doesn't mean its obsolete. I know a lot of people who work on retro games simply because they have a love and passion purely for the system and that nostalgic time period. It's almost like time traveling back in time when working with this stuff. A simpler time in life.
Since I grew up in the 80's and 90's with an NES and SNES as my main systems sometimes when I see newer games out on the market I seem to not even classify them as games, but more like interactive movies. It's like, if I don't see big blocky pixel art I tend to not think of them as games simply because a game to me when I grew up was defined by what the NES and SNES could do graphic wise. Of course the newer 3D games are still games, but they look completely different than retro games back in the 80's.
So now I know why people still work with this old stuff, its simply just a matter of preference. Just because a new game has so many million colors and so many million polygons doesn't necessarily make it a better game than a retro one. Each game is really judged on its overall presentation to the person playing it. Sure, you can have fun on new game, but you can still have fun on an old game too. Each generation of video game consoles has its own special place among players and it is simply just question of "What do you want to play?".
Another reason is that it's a different experience to program for an old console than it is to program for a newer, more PC-like console.
For the NES, you have to learn 6502 assembly, work around having 5 specialized sound channels, palette limitations, size limitations, detail-per-tile limitations, CPU speed limitations, having to work with raw memory on a byte-by-byte basis, doing most everything via register writes, all of which are a different experience from having access to high-level math routines and blitting 2d graphics to a frame buffer. At the same time, you gain an understanding of the low-level code that sits underneath the high-level code you compile when you do something in C/C++, Java, Lua, whatever. Even something as dumb-sounding as coding Tetris in QBASIC for a PAINFULLY SLOW 80s era IBM portable computer and trying to optimize it to run faster and faster is a fun puzzle-like challenge that, again, provides an experience you just don't get anywhere else. (Ultra specific example because I've done that exact thing before
)
Why people choose the NES and Atari 2600 specifically? The huge community surrounding them and the wealth of reverse engineering and documentation that makes homebrewing possible in the first place. Not to mention, we all grew up with at least one of these consoles.
So it's part nostalgia and part challenge, and it gives us all a taste of what it's like to program for "the real deal" rather than making something on PC that just
looks like it.
Because developing a homebrew project takes so long, developping it on a hardware that is already obsolete fixes the problem that the hardware on which you spent time developping could become obsolete.
If I developed my game on the "in" console when I started the project, it would have been the Playstation 2. Now, this console is considered "retro" as it is more than 1 generations ago.
The second, and primary, reason, is that it's easier for a single man to use all the hardware's feature. I would never be able to design Playstation 2 graphics that are on part with PS2 games, for instance.
Yet another reason is that I think studying older computers helps you understanding newer computers as well. Having to use assembly is a tremendous way to learn about computers. And I want to think that a programmer that is used to make games and programs to old systems, will be more effective and economic with memory usage and make less bloated software on newer hardware as well.
It's not simply that I prefer older games over new ones, it's just that I've always played and collected them since they were new and never really stopped. Studying the NES, which was my first gaming system, only makes perfect sense.
I just wish other homebrew scenes like the one for SNES was as big as the one for NES.
People have asked me the very same question. I would say it is based on passion for a system that many of us grew up with.
(slightly off topic perhaps):
I grew up with NES only, and as the economy didn't allow for a big library of games, the most time spent was with Super Mario Bros. Playing that game over and over.. and over again. I had a subscription to a swedish magazine known as "Nintendomagasinet". In one of the issues, there was a "Tips & Trix" (where people share cheats and passwords and whatnot) showing how to do the classic world "-1" trick.
And surely, it worked just fine. Most people probably thought it was a novelty thing, but that really sparked the intrest in me. "How? Why?"
Today, we have internet, and I could g00gle to find some [less technical] explanation on this, even a video of it! But back then it was a mystery.
A friend of mine said "you know, there is this thing called Game Genie - you stick it on your cartridge and you can get to that world by entering a code"
That perplexed me a lot, since it not only gave the option to use the codes in the manual that came with the Genie, but also allowed for custom codes to do things to the game that the makers of Game Genie probably didn't intend you to do. Soon you discover relations with codes having the same prefix and/or suffix.
Ofcourse it was a pretty random process, but soon I figured out that some combinations of codes made different things happen. So I wrote them all down on tons of sheets of paper (now lost) and combined codes to preform things like "Start button gives you fireflower" and similar.
[fast forward 15 years or so]
Oh cool, so now you can play NES games on your PC too? AND IT SUPPORTS GAME GENIE CODES! Awesome! But wait a minute. My codes get some kind of weird description like B4AE:20. What does that mean? Oh, so there is a debugging function.. lets look that location up (...)
What is all this stuff? How does it work?
So there is how I got into this world myself.
mikaelmoizt wrote:
I would say it is based on passion for a system that many of us grew up with.
I guess this is the case for many people, but I'm definitely an exception to that rule. I had a 2600, a Genesis and a Master System (yes, in that order) as a kid, and very rarely played NES games at friends' homes, and didn't really care for any game in particular.
I always wanted to make games, and when I found out my 386 had a program I could use for that purpose (QBasic) I immediately embraced it. The simple environment provided by QBasic resulted in games that had a lot to do with old console games, and when emulation became popular I got to know a lot of 8-bit games.
Back then we used Nesticle for playing NES games, and its debugging features immediately caught my interest. I was amazed at how the palettes, tiles, name tables and sprites were combined to create the visuals, and I gradually switched from QB to the NES.
I guess that what fascinates me about retro development is how you can do so much with such limited resources. The 16-bit platforms are already a bit too advanced for me that I don't see the same charm of the 8-bit ones in them. Too much memory, too many colors.
I'd like to think that my desire to have a Master System after I already had a Genesis was a sign that I was already interest in different console architectures and what they could do even if they weren't the most recent.
I agree with Bregalad. On a newer platform, the expected production values are higher. One person can't reasonably produce an engine, game, graphics, and audio comparable with well-known commercial games.
I also agree with mikaelmoizt. I started NESdev when I discovered I couldn't tile-hack Contra because it decompresses tiles to CHR RAM. I found it approachable because I had previously programmed in 6502 assembly language on an Apple II. After 2001 when the GBA came out, NESdev got put on hold for a few years. The GBA's display model is similar to the NES's (tiles and sprites), and GBA flash carts were available before the PowerPak.
I program games for the NES because I always loved that console and that I always wanted to make my own game for it. I started with ROMhacks, until I became good enough that I could successfully hack music in NES games. After that, I decided to do the Nerdy Nights, and that's how I became an NES programmer. My motivation always was/is to make games for one of my favorite game consoles of all time.