Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Seeing as today's machines have insane computing power and near endless memory, it's tough for a hobbyist programmer to actually hit the limits of his machine without doing something totally boneheaded. This raises a question: Is there a machine (be it a computer or a console) from the past that would be a good learning platform for someone that has never touched low-level code? I'm very much looking at this from the perspective of someone that wants to understand exactly how to get the best out of the specific set of hardware a machine has.

I'd imagine that the internet probably has manuals for most well known older machines, and it shouldn't be too hard to find an emulator of some sort either. I'm just at a little bit of a loss when it comes to actually choosing a good platform to go for. Any ideas?

Obviously if someone has ideas that don't fit the exact parameters of the question, I'm open for that as well.

share|improve this question
1  
My first suggestion would be Atari, NES, or Gameboy, depending on how limited you want to get. –  thedaian Aug 16 '11 at 20:41
    
Is this related to game development or programming in general? –  Richard Marskell - Drackir Aug 17 '11 at 14:23

3 Answers 3

You don't really need to go back that far to find limited devices. As we are on gamedev here, I'd suggest looking at the Nintendo DS with its 67 MHz processor and 4 MB RAM (see here for some specs).

While development for the DS is limited to licensed developers, there is a pretty active homebrew scene and there are several emulators. You can also run your programs on the actual device using special gamecards. A really detailed reference can be found here. The software you need for development is known as devkitARM and can be found here. There is lots of good information on DS development around the internet.

However, I can't say anything about the legality of homebrew DS development.

share|improve this answer

Returning to a legacy machine which you have no emotional tie to seems pretty masochistic. If I were doing it I would choose the first computer I had, Apple ][c...

J2ME Java for mobile phones might be another suitable choice : Eclipse is free and test devices (for example S40, S60 Symbian phones ) easily available for cheap. Even modern smartphones are very limited, though they are reaching something in the direction of PlayStation 1 or better as we speak. An example 256 Mb RAM can be tanked fairly quickly if you load up everything in a medium-sized game.

share|improve this answer
    
Yeah, it's probably not the sanest thing to do, but it's something that piqued my interest. I thought about phones, and honestly thought that they were much more powerful than they really are. I tried some of my XNA games on the Windows Phone 7 emulator, and it did struggle a little bit. Might be one way to go, thanks for the advice. –  drowsy Aug 17 '11 at 9:00
    
A problem with mobile phone platforms is that you often can't get enough control over the system to benchmark accurately or push resources to their limits. Like the iPhone, which is always swapping tasks in and out of the background and telling fibs about its free memory remaining or demanding memory back -- that makes it hard to practice measuring the perf cost of individual functions, or working in constant memory. –  Crashworks Aug 18 '11 at 3:26

I say go for modern X86, just because the processor is fast doesn't mean you can't benchmark and optimize. And really, it is not just more useful to know a modern architecture, the new processors also have a quite different performance profile.

In the old days a processor would primarily be limited by it's ability to perform calculations, today it is much more important how fast it can access data and resolve branch instructions, because getting plenty high performance in raw calculations is no feat.

At best learning an old architecture would be a waste of time, at worst you teach yourself the wrong stuff and end up writing slower code for modern computers.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.