Atari 2600 development - Snappy (batari basic)
Last updated on January 15, 2012, 17:04 by Sebastian Mihai
The Atari 2600 is the first video game console most people think of, when someone brings up classic video games. It was extremely influential, and lasted the longest out of all games systems to date. (causing Neo Geo AES to be second - darn!).

For this project, I've used batari Basic. It's a nice Basic compiler, which absolves the programmer from having to spend an absurd amount of time learning the assembly language for the 6507 processor, which is used by the 2600.

Writing a game in Basic took me back to my ZX Spectrum days, and it was great! The goal of the game is to get as many men across Snappy's pit as possible. Each game starts with ten men, and each of them gets parachuted at a random spot, so you have to time your jumps well. Only one button is used - fire. It will start a new game when on the menu screen, and it will cause a man to start running, trying to make it across the pit.

I liked Basic's "prototype" feel. It's really easy to try out new graphics, and tweak game code. I've written comments, but let's be honest here - it's Basic! The language itself was meant to be extremely readable, so the code should be quite easy to understand.

In terms of technical aspects, player 0 is your current man, player 1 is Snappy. The vine is part of the background. The vine sounds are always output via voice 0. All other sounds that may be heard at the same time as the never-halting vine are output via voice 1.

Snappy is getting hungry, so don't keep him waiting!


The game
rom - get this to play Snappy on an Atari 2600 emulator
source code - get this to compile Snappy yourself

Dev kit
dev kit - the batari Basic dev kit includes everything you need to program and test your roms. It comes with the source code for a few samples, and for Snappy. You can use these to experiment and learn. They are found in the source subdirectory. All makefiles assume this will be unzipped to C:\

Stella emulator - Stella is the best Atari 2600 emulator around, and it can run Snappy, as well as other Atari 2600 roms


Here is the cartridge version of Snappy!

And here is the cartridge running on real Atari 2600 hardware!
If you use the materials on this page, or any other page on this web site, you do so at your own risk. They are provided "as is". No warranty is provided or implied. I neither guarantee that the materials will work, nor that they will not be harmful in any way.

(2006) RGB Overdose - university programming contest entry

Gameboy development - Burly Bear vs. The Mean Foxes

(2004) Project One - first university game programming club project

Neo Geo development - Neo Thunder

Sega Genesis development - Gen Poker

Airplane Vegas slot machine

Animal Keeper - a JavaScript and HTML5 Canvas game

Gameboy Advance development - smgbalib library

Gameboy Advance development - Balanced Diet

Super Nintendo development - Bucket

Atari 2600 development - Snappy (batari basic)

Nintendo NES development - Invaders must die!

Atari Lynx development - Catkanoid

TurboGrafx-16/PC Engine development - Alddee

Colecovision development - Mowleco

Sega Master System development - Burgers of Hanoi

Gameboy Color development - Burly Bear vs. The Mean Foxes (GBC version)

Nintendo Virtual Boy development - Real Danger

Vectrex development - Scalar Ownage

ZX Spectrum development - simple input/graphics example

Atari 5200 development - Shooting Gallery

Neo Geo Pocket Color development - NGCollector

My homebrew cartridges

Coverage of my projects

BlackBerry PlayBook development - Sheepish Bearings (Native SDK, OpenGL)

Capacitor study circuit

Catch That LED! - an electronic game circuit

555 timer and 4017 decade counter - traffic lights circuit

A simple Atari 2600 joystick tester circuit

Seven segment display circuit with the 4511 decoder and the 4029 counter

Video compilation of my classic console homebrew games

Novice calligraphy - Gothic hand, with letter guide

Angry Video Game Nerd (AVGN) theme song on the Gameboy Advance

Fractals in JavaScript and HTML5 Canvas

Blue Elf 2 309-in-1 JAMMA PCB - troubleshoot controls not working

Gold of the Kingdoms - an XNA/C# homebrew game

aSMtris - Tetris in assembly language (x86, 16-bit)

Nintendo DS development - Geoincursion

Sony PSP development - Newton Voyage

Sony PlayStation development - The 11th Power

3DO development - Space Invaders Invaders

Sega 32x development - Eight Queens

WonderSwan Color development - Swan Driving

WonderSwan (Mono) development - Swan Driving BW

Pokemon Mini development - Mini Cookie

Commodore 64 development - Tube64

Nintendo 64 development - Don't Be Square

PocketStation development - Pocket Worm

Intellivision development - Hotel Bunny

Sega CD development - Blackjack CD

Atari Jaguar development - Jagmatch

Sega Saturn development - Saturnade

Sega Game Gear development - Burgers of Hanoi GG

Sega Dreamcast development - Overbearing Burgers

Nintendo Wii development - Groundhog Puzzle

Nintendo GameCube development - Mama Bear Puzzle

Sega Dreamcast VMU development - Raining Squares

Magnavox Odyssey2 development - Red Green

Atari 7800 development - Poetiru

Arcade ROM hacking - Knights of the Round translation

Snowdrop OS - my operating system from scratch, in assembly language

ZX Spectrum development - Husband Chores (in Z80 assembly language)

libzx - ZX Spectrum game programming library (Z80 assembly language)

Balanced Diet (GBA) limited edition

TOTP (time-based one-time password) authenticator in C# (.Net)