Skip to main content

Atari 2600 Programming with 6502 Assembly

16h 30m 54s
English
Paid

Discover the art of programming with a gentle introduction to the fundamentals of computer architecture and the 6502 assembly language. In this course, you will learn to create games for the iconic Atari 2600 gaming console, delving deep into the workings of digital machines. The minimal hardware setup of the Atari 2600 serves as an ideal sandbox for mastering low-level programming.

By the end of this course, you will gain practical skills in 6502 assembly programming, a profound understanding of the Atari 2600 architecture, and the satisfaction of having developed a personal game for the VCS from scratch.

Course Requirements

Throughout this course, we will utilize a simple text editor, the DASM assembler, and the Stella emulator. These tools are cross-platform, ensuring compatibility with Windows, macOS, and Linux, so you can work in your preferred environment.

Target Audience

This fully self-contained course has no formal prerequisites. However, you will find the journey more engaging if you have some familiarity with basic programming concepts such as conditions, loops, and functions.

If you have a passion for developing retro games and a desire to unravel the intricacies of computer architecture and low-level code, this course is tailored for you!

About the Author: Gustavo Pezzi

Gustavo Pezzi thumbnail
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.

Watch Online 81 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 81 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Motivations & Learning Outcomes
All Course Lessons (81)
#Lesson TitleDurationAccess
1
Motivations & Learning Outcomes Demo
13:10
2
How to Take this Course
02:59
3
Atari VCS Hardware & Specs
28:11
4
Digital Binary System
06:17
5
Counting in Base 10 and Base 2
13:48
6
Hexadecimal Representation
10:09
7
The 6502 Processor
15:54
8
Processor Carry and Overflow Flags
17:06
9
The Assembler
15:17
10
Popular 6502 Assembly Instructions
13:39
11
Picking a Code Editor
02:35
12
Our First Assembly Code
25:12
13
The DASM Assembler
09:39
14
The Stella Emulator
16:04
15
The Javatari Emulator
05:38
16
Installing DASM under Windows
07:13
17
Our First Assembly Bug
08:21
18
Addressing Modes
06:39
19
6502 Instruction Set Exercises
12:11
20
6502 Instruction Set Exercises (Solutions)
36:49
21
VCS Memory Map
07:36
22
Setting the Background Color
16:21
23
Stella Debugger Warning Messages
06:36
24
NTSC Frame Synchronization
20:33
25
Painting the CRT in a Controlled Way
18:17
26
TIA Screen Objects
13:50
27
Players, Missiles, and Balls
06:42
28
Playfield Graphics
18:13
29
Exercise: Playfield Pattern
01:13
30
Player Bitmap and Scoreboard
14:47
31
Playfield Color
05:36
32
Defining RAM Variables
05:06
33
A Discussion on Registers and Variables
08:00
34
Vertical Positioning
11:55
35
Implementing Vertical Position
07:15
36
Horizontal Positioning
17:16
37
Smooth Horizontal Position
18:44
38
Implementing Horizontal Position
19:22
39
Exercise: Limiting Horizontal Movement
03:51
40
Limiting Horizontal Movement
10:17
41
Horizontal Position & Time Keeping
11:50
42
Counting Clock Cycles
07:37
43
Joystick Input
09:28
44
Joystick Player Movement
11:14
45
Bitwise Operations
09:43
46
Subroutines
09:37
47
The Stack
09:24
48
Pointers
05:47
49
The "Bomber" Project
02:01
50
Creating Sprites with PlayerPal
01:55
51
Defining the Project Playfield Graphics
29:58
52
Defining the Project Player Graphics
17:09
53
Drawing Player Sprites
20:32
54
Temporarily Ignoring Clock Cycles
06:20
55
Player Horizontal Position Subroutine
08:56
56
Handling Joystick Movement
08:48
57
Changing Sprite Frame
09:15
58
Enemy Vertical Movement
08:37
59
Generating Random Values
24:10
60
Bitshift Operations
08:23
61
Random Enemy Position
05:50
62
Collision Registers
08:48
63
Checking Object Collision
16:13
64
Score Digits
39:39
65
Configuring Scoreboard Graphics
12:52
66
Performing Tasks Inside Vertical Blank
19:40
67
Implementing Asymmetrical Playfield
09:12
68
Scoreboard Background Color
09:17
69
Game Over Color Effect
13:13
70
Exercise: Incrementing the Score
02:08
71
Implementing the Score Increment
04:51
72
Exercise: Limiting Player Movement
02:07
73
Implementing Player Movement Limits
08:04
74
Using BCD Decimal Mode
07:46
75
Drawing Missiles
27:50
76
Missile Collision
13:10
77
Addressing Mode Mistakes
14:10
78
Sound Registers
11:58
79
Generating Sound
29:58
80
Scanline Analysis
06:02
81
Next Steps
09:01
Unlock unlimited learning

Get instant access to all 80 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Books

Read Book Atari 2600 Programming with 6502 Assembly

#Title
16502 Instruction Set Exercises
2Scanline Analysis