So, I got my retro gaming setup at the office, and a friend suggested if I was porting Ananias to the Atari 2600. I promptly replied I had no time for such thing.
But then, the project picker spoke. And the project picker is wise and fair, and we must obey his bidding.
I started following the instructions here, but they are super old and mostly for windowzer, so I had to dig around a little bit. Here are some instructions which can be helpful if you want to start your career on Atari 2600 game development (who knows, may be Atari will hire you…)
Before proceeding I should mention that this is just one shortcut for real hardcore Atari 2600 development. It’s definitively not the most optimal way to create your games (in terms of resources handling and exploiting the limited power of the device), but it’s enough to give you a sample on what it entails (then you’ll jump ahead and become an elite ASM coder).
The assembler takes ASM source code and transforms it into BIN files which can be read by an emulator or loaded into a cartridge and a real Atari 2600.
For mac it’s available via homebrew so just…
brew install dasm
Get an emulator or something to test the games
You need to run the games, right? Stella works perfectly for starters if you can’t afford to get a Harmony cartridge or you don’t have an Atari 2600. Once your game is gold, you can have AtariAge create a custom cartridge for you.
Get a working build of Batari Basic for your modern OS.
That one was tricky to find, I got mine from here and it works perfect on macOS Sierra.
Run the install_ux.sh script, note that PATH modification may fail for some reason on macOS so you may need to fix it manually (since the script is meant for linux).
Verify your build pipeline
Use the batariBasic compiler with one of the included samples (say ../2600basic.sh zombie_chase.bas) it will generate .asm and .bin files
Open the .bin file on Stella
Mess around a bit
Take one of the .BAS examples and try to understand what the heck is going on. Move things around, recompile and check
batariBasic makes things much simpler than doing straight assembler, but that doesn’t mean it’s going to be a walk in the park. There’s some reference material online and even a very handy tutorial for the kernel included with bB which is what simplifies development so much. The other great challenge is working with the limitations of the 2600 which is actually what makes it fun:
[…] As if all this weren’t enough, the VCS could only display five interactive objects at any one time: two “player” sprites, two “missile” sprites, and one “ball.” This was more than enough for replicating Pong and Tank, the popular arcade games of 1977. It was useless for anything even slightly more complicated, such as Space Invaders.
Of course, software developers later found tricks to overcome these limitations allowing the machine to do things it was never meant to be able to do, but my goal will be to work within the original constraints without pushing it too much.