Errata: Making Games for the Atari 2600

Chapter 1, page 7: The “LDA Cycle” diagram should show LDA $34 instead of LDA $23. The Data Bus values should be $AD, $34, $12, and $7F.

Chapter 3, page 25: The DataArray variable starts at $83, not $82.

Chapter 4, page 28: The ZeroZP loop clears every zero-page value except for address $0. (One way to fix this is to add a STA $0 after the loop ends.)

Also, the VCS contains the 6507 CPU, not the 6509.

Chapters 6 and up: The VERTICAL_SYNC macro takes 4 scanlines to complete, not 3. Therefore most of the examples add up to 263 scanlines, not 262. Change TIMER_SETUP 30 to TIMER_SETUP 29 to fix them.

Chapter 6, page 40: The comment for the sta PF0 line should read “set the PF0 playfield pattern register”.

Chapter 8, page 52: lda ColorFrame,y should be lda ColorFrame0,y; also the comments on the Frame0 color table can be ignored.

Chapter 9, page 57: Says “We’ve timed everything so that the store will place exactly on cycle 23 when zero is passed” but the example shows A (the horizontal position) loaded with #70, not #0.

Chapter 9, page 58: The Atari 2600 game “Raiders of the Lost Ark” was designed by Howard Scott Warshaw, not Warren Robinett.

Chapter 12, page 69: The target timer value is computed by (N 76 - 13) / 64. There is also a special case for two timer events in a line (see xmacro.h)

Chapter 17: Forgot to describe NUSIZ register bits in detail:


Hex Value




1 pixel wide



2 pixels wide



4 pixels wide



8 pixels wide

Chapter 22-24: “A Big 48-Pixel Sprite”, “Tiny Fonts” and “6-Digit Score” examples. There is a sta HMCLR immediately following the sta HMOVE instruction. This causes problems on actual hardware, as the TIA requires you wait 24 cycles after a write to HMOVE before writing to HMCLR (or HMP0, HMP1, HMM0, HMM1, or HMBL.) This can be fixed by adding a SLEEP 24 between the two instructions.

Chapter 35: The bank switching examples should set the S (Stack) register to #$FF at startup. (The real NMOS 6502 sets the stack pointer to #$FD at power-up, but the emulator doesn’t emulate this undocumented behavior.) The example has also been rewritten with additional macros to make it a bit clearer, and the origin moved to $1000.

Appendix D: 6502 instruction Flags list is missing the BPL instruction.