Skip to main content

Atari 2600 Programming with 6502 Assembly

16h 30m 54s
English
Paid

Course description

This course is a gentle introduction to the fundamentals of computer architecture and the 6502 assembly language. We will learn to create games for the Atari 2600 gaming console and understand how digital machines work from the inside. The minimal hardware setup of the Atari 2600 is an ideal sandbox for mastering low-level programming.

By the end of the course, you will gain practical skills in 6502 assembly programming, a deep understanding of the Atari 2600 architecture, and a completed personal game for the VCS, which we will develop together from scratch.

Required Tools

We will use a simple text editor, the DASM assembler, and the Stella emulator. All these tools are cross-platform, allowing you to work on Windows, macOS, or Linux.

Who this course is for

This is a fully self-contained course with no formal prerequisites. However, you will find it easier and more engaging if you are already familiar with basic programming concepts (conditions, loops, functions).

If you enjoy developing retro games and want to understand computer architecture and low-level code, this course is definitely for you!

Watch Online

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

Comments

0 comments

Want to join the conversation?

Sign in to comment

Similar courses

Lightspeed Deployments

Lightspeed Deployments

Sources: newline (ex fullstack.io)
This workshop is a continuation of the courses "Overnight Fullstack Applications" and "How To Connect, Code & Debug Supabase With Bolt." In the recording of...
16 minutes 45 seconds
Fundamentals to Linear Algebra

Fundamentals to Linear Algebra

Sources: LunarTech
Unleash the power of linear algebra for conquering the world of data science, machine learning, and artificial intelligence. This intensive course will...
20 hours 53 minutes 19 seconds
3D Computer Graphics Programming

3D Computer Graphics Programming

Sources: Gustavo Pezzi
This course is a complete immersion into the fundamentals of computer graphics! You'll learn how a software 3D engine works under the hood, and use the C programming language to...
37 hours 55 minutes 2 seconds
The Complete Apache Kafka Practical Guide

The Complete Apache Kafka Practical Guide

Sources: udemy
This is the most complete practical Apache Kafka guide that includes tons of practical activities. Most important is that you'l learn how Apache Kafka works and
8 hours 38 minutes 15 seconds
Team Dynamics and Soft Skills for Developers | Don’t Imitate

Team Dynamics and Soft Skills for Developers | Don’t Imitate

Sources: Anthony Alicea
Whether you've learned software development at a school, bootcamp, online, or are entirely self-taught, there is one key aspect to being a developer that you we
5 hours 8 minutes 46 seconds