Inside the Homebrew Atari 2600 Scene
angryflute writes "'Have you played Atari today?' was an ad jingle for the Atari 2600 VCS game console during its reign in the early years of the video game industry, from the late 1970s to early 1980s. That question that could apply even now, according to an O'Reilly Network article, thanks to the passion of programmers who've continued to make new Atari 2600 games for the past few years."
i would make it a requirement to code an enjoyable 2600 rom :p :D.
The ammount of work that goes into creating an entertaining title while only working with 4k of rom space and 128 bytes of memory is staggering. Mind you, most of my emails are larger than 4k....
I dunno, maybe im just being sappy, but it really brings a smile to my face to see coders throwing themselves into what i can only characterize as a digital bootcamp, simply for the love of the game.
Long live passionate programmers
What's with people ripping off the first paragraph and submitting it as their text? Do they just assume we're not going to read the article, and are therefore being clever, or are they just lazy? That whole submission, with the exception of six words, is ripped from the top paragraph of the article.
A lot of "bloat" comes from increasing levels of abstraction away from the hardware, and numerous levels of interfaces between different system layers to allow for more modular code, more reusable code, and generally, safer code. Coding an application for a modern machine with all its fancy hardware would be pretty tricky without these interfaces already written for people. Sure, somebody has got to write the low-level interaction gubbins in the first place, but once it's done, it's done. If software houses wrote for the hardware to reduce bloat, we'd never see any games or software. Praise the bloat. The bloat be praised.
[That's not to say that an understanding of what the machine is actually doing with the code wouldn't help people when designing software systems, I agree that it would certainly be beneficial. It's just not necessarily where all the bloat comes from. The lack of understanding is probably more and more relevant as more and more layers of abstraction are added. And there's always room for one more layer of abstraction!]
Obviously... it has no framebuffer, that's incredible. It couldn't have a framebuffer even if it wanted to, unless you only wanted 16x8 resolution.
And I thought C64 coding was hardcore... 128 bytes of total RAM? Just writing a character generator would be challenging, let alone a game!
Well, since it's so limited, you only need to write 4K of code to make a game. This very limitation makes 2600 game development a more reasonable hobby than development on anything more modern... For one, there's lot less code to write so you do not have to spend much time on a complete game. Second, since it's a challenge to make everything fit, even the boring parts of the game become challenging as you simply have to optimize them for size. Thus, you get a limited amount of highly challenging thinking, and yet the end result can be a truly amazing game by the standards of the platform.
That's what the ROM is for.
You can bank-switch roms to get more than 4kb too.
I thought the 2600 had a line buffer. Basically a 40 or 80 bit shift register into which the pixels are written and then they are written to the video screen. This is my recollection from a presentation that the creator of the 2600 (the same guy who did the Amiga I think) had on the hardware internals.
I actually made (and published through AtariAge) my own Atari homebrew, JoustPong -- Pong with a Flap Button. I kept a developer's journal of the experiece.
I also made a newbie's tutorial, linked to at the end of the O'Reilly article: 2600 101. And currently I'm (slowly) working on 2600 cookbook...O'Reilly fans should find the format very familiar.
Overall, that's a great techie introduction to the hobby.
SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
What is all the portability for? In the end 99,9% of the products end up running on Wintel. I think that it would still be nice to have software developped in Assembly language, and it would even be profitable, but this goes against current market practices, that require cheap programmers (even if they are not too skilled), and short development periods.
Optimize last?? Hello?? Have you taken any programming courses?
How real, optimized engines are written (i.e. Quake, Doom, Unreal) is by:
- writing it first in a 'high' level language (probably C, which isn't high any more, but you get the picture)
- making sure it works
- finding out what parts are slow
- optimizing these in assembly, and making sure they get the same results as the slower, easier to debug version.
Writing the whole thing in assembly would just be ludicrous. Did you ever use the first version of wordperfect for windows?? Written in assembly, and boy was it buggy. And not noticeably faster than anything else.
If you optimize first you will never get anywhere meaningful.
If you want to play 2 player lemmings, get an amiga, it's the only way to play
This is a joke. I am joking. Joke joke joke.