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:
Binary |
Hex Value |
Description |
|---|---|---|
00xxxx |
$00 |
1 pixel wide |
01xxxx |
$10 |
2 pixels wide |
10xxxx |
$20 |
4 pixels wide |
11xxxx |
$30 |
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.