Atari 2600 Programming with 6502 Assembly
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
All Course Lessons (81)
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 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 subscriptionBooks
Read Book Atari 2600 Programming with 6502 Assembly
| # | Title |
|---|---|
| 1 | 6502 Instruction Set Exercises |
| 2 | Scanline Analysis |
Comments
0 commentsWant to join the conversation?
Sign in to commentSimilar courses
Build an AI Career Coach using an Open Source LLM
Computer Networking
How to Open Source: The missing open source handbook for new contributors
Become a Probability & Statistics Master