What you'll learn

atari 2600 game development

This course is a gentle introduction to the fundamentals of computer architecture and 6502 assembly language. We'll learn how to program games for the Atari 2600 console and understand what makes digital machines tick. The minimal hardware of the Atari 2600 is a perfect sandbox for us to learn more about low-level programming.

mos 6502 cpu

At the end of the course, you'll have a working knowledge of 6502 assembly language, a comprehensive understanding of the Atari 2600 hardware, and a complete homebrew game for the VCS that we'll code together from scratch.

The tools you'll need

We'll use a simple code editor, an assembler called DASM, and a VCS emulator called Stella. All these tools are multi-platform, so you'll be able to use either Windows, macOS, or Linux!

operating system

Is this course for you?

atari 2600 game development

This is a self-contained course with no formal prerequisites. However, you will probably get the most out of it if you already know the basics of coding (if-else, loops, functions).

If you like retro game development and want to learn more about computer architecture and low-level programming, then this course is definitely for you!

About the instructor

gustavo pezzi

Gustavo Pezzi is a university lecturer in London, UK. He has won multiple education awards as a teacher and is also the founder of pikuma.com.

Gustavo teaches fundamentals of computer science and mathematics; his academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.

teaching certification
higher education academy
pgclt teaching certification
bpp university award

Course content

18 hours total length 19 Chapters Last updated June 2022
  • Motivations & Learning Outcomes
  • How to Take This Course
  • Atari 2600 Hardware & Specs
  • Game Cartridges
  • Base 2 and Base 2
  • Binary Representation
  • Hexadecimal Representation
  • Quiz: Binary and Hexadecimal
  • The 6502 Processor
  • Processor Status Flags
  • Quiz: The 6502 Processor
  • The Assembler
  • Popular 6502 CPU Instructions
  • List of 6502 OpCodes
  • Installing the DASM Assembler
  • Installing the Stella Emulator
  • Picking a Code Editor
  • Our First 6502 Assembly Code
  • Our First 6502 Assembly Bug
  • Addressing Modes
  • Instruction Set
  • Exercises: 6502 Programming
  • Is the Atari 2600 a Computer?
  • The VCS Memory Map
  • Memory Map & Page Zero
  • Changing the Background Color
  • NTSC Frame Synchronization
  • Painting the CRT in a Controlled Way
  • Quiz: Painting the CRT
  • Screen Objects
  • Player, Missiles, and Balls
  • Playfield Graphics
  • Exercises: Drawing the Playfield
  • Player Bitmap and Scoreboard
  • Playfield Color
  • Defining RAM Variables
  • Byte, Word, and Data Segment
  • Registers and Variables
  • Quiz: Screen Objects
  • Vertical Positioning
  • Vertical Positioning Code
  • Quiz: Vertical Positioning
  • Representing Graphics Data in Games
  • Horizontal Positioning
  • Smooth Horizontal Positioning
  • Horizontal Positioning Code
  • Exercise: Clamping Horizontal Positioning
  • Horizontal Positioning & Time Keeping
  • Review of Horizontal Positioning
  • Counting CPU and TIA Clock Cycles
  • Undocumented OpCodes
  • Joystick Input
  • Joystick Player Movement
  • Bitwise Operations
  • Quiz: Joystick Input
  • Subroutines
  • Stack
  • Pointers
  • Project "Bomber"
  • Creating Sprites with PlayPal
  • Defining the Project Playfield Graphics
  • Drawing the Project Player Graphics
  • Subroutine for Horizontal Position
  • Handling Joystick Movement
  • Changing Sprite Frames
  • Enemy Vertical Movement
  • Quiz: Subroutines
  • Generating Random Values
  • Bitshift Operations
  • Random Enemy Position
  • Exercise: Random Values
  • TIA Collision Registers
  • Checking Object Collision
  • Score Digits
  • Configuring Scoreboard Graphics
  • Executing Tasks Inside Vertical Blank
  • Implementing Asymmetrical Playfield
  • Scoreboard Background Color
  • Game Over Color Effect
  • Exercise: Incrementing the Score
  • Exercise: Limiting Player Movement
  • Working with BCD Decimal Mode
  • Quiz: BCD and Bit Masking
  • Drawing Missiles
  • Checking Missile Collision
  • Fixing Addressing Mode Mistakes
  • TIA Audio Registers
  • Coding the Sound Generation
  • Scanline Analysis
  • Gopher 2600 Emulator and Debugger
  • Concluding out Project
  • Examples of Classic VCS Code
  • Moving Forward

How is this course different?

The 6502 processor is an extremely important part of computing history, powering many popular game consoles and microcomputers of the past, like the Atari VCS, the NES, the Commodore 64, the Apple II, and even the Tamagotchi.

atari vcs controller

Differently than other online resources about retro game programming, this course is not simply a loose list of assembly mnemonics that only experienced developers can digest. This course tries to be as beginner-friendly as possible, giving you the chance to learn assembly in a fun way.

Trying to understand how modern computers work under the hood can be overwhelming. That's why the small architecture of the Atari 2600 is our chance to take a step back and look at the fundamental building blocks of computing. So, if you want to really learn how digital machines work and finally lose your fear of the expression "assembly programming", then get ready and buckle up! We are about to go on a super cool nerd trip together.

What students are saying

5.00
5 star
100.0%
4 star
0.0%
3 star
0.0%
2 star
0.0%
1 star
0.0%
Lorraine Figueroa
Lorraine Figueroa
"Finally! Finally I am learning something I always wanted to do - program Atari 2600. This is a great course to learn how to program the Atari 2600. The steps are logical and I can pace myself. This course is well worth the price!!"
02 Oct 2022
Dimitrios Roussos
"I really enjoyed it! Too bad we didn't have such material back then at 90s. Of course, it's never too late, I really enjoyed it, fill some gaps. Once again, thank you very much professor."
27 Sep 2022
Samee Qazi
"Great review on Computer Architecture! Enjoying computer architecture like never before! Want to go back in time and score better grades! :-)"
12 Sep 2022
Alberto Calo
Alberto Calo
Mechanical Engineer
"Absolutely fantastic course with great content! By far one of the best and fun online courses I have ever enrolled till now! I have learnt a lot during this lovely journey and Gustavo has been a superb teacher! I can't recommend it enough!"
12 Jun 2022
Andres Mata
"Awesome course! This course really helped me to fill in the gaps. Gustavo is an excellent teacher and I enjoyed this journey to the intricacies of the VCS programming a lot."
15 Mar 2022

Other similar courses

C++ 2D Game Engine Development

30 hours
  • Learn to make a simple 2D game engine using modern C++, SDL, ECS, and Lua.
raycasting texture c

Raycasting Engine Programming with C

18 hours
  • Write a raycasting engine with textures and sprites using the C programming language.

Game Physics Engine Programming

35 hours
  • Learn how to create a 2D rigid-body game physics engine from scratch with C++.