English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 81 Lessons (16h 30m) | 4.02 GB
Learn the basics of Assembly 6502 and computer architecture programming games for the Atari VCS platform
What you’ll learn
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.
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!
Is this course for you?
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!
Table of Contents
1 Motivations & Learning Outcomes
2 How to Take this Course
3 Atari VCS Hardware & Specs
4 Digital Binary System
5 Counting in Base 10 and Base 2
6 Hexadecimal Representation
7 The 6502 Processor
8 Processor Carry and Overflow Flags
9 The Assembler
10 Popular 6502 Assembly Instructions
11 Picking a Code Editor
12 Our First Assembly Code
13 The DASM Assembler
14 The Stella Emulator
15 The Javatari Emulator
16 Installing DASM under Windows
17 Our First Assembly Bug
18 Addressing Modes
19 Instruction Set Exercises
20 Instruction Set Exercises (Solutions)
21 VCS Memory Map
22 Setting the Background Color
23 Stella Debugger Warning Messages
24 NTSC Frame Synchronization
25 Painting the CRT in a Controlled Way
26 TIA Screen Objects
27 Players, Missiles, and Balls
28 Playfield Graphics
29 Exercise Playfield Pattern
30 Player Bitmap and Scoreboard
31 Playfield Color
32 Defining RAM Variables
33 A Discussion on Registers and Variables
34 Vertical Positioning
35 Implementing Vertical Position
36 Horizontal Positioning
37 Smooth Horizontal Position
38 Implementing Horizontal Position
39 Exercise Limiting Horizontal Movement
40 Limiting Horizontal Movement
41 Horizontal Position & Time Keeping
42 Counting Clock Cycles
43 Joystick Input
44 Joystick Player Movement
45 Bitwise Operations
46 Subroutines
47 The Stack
48 Pointers
49 The Bomber Project
50 Creating Sprites with PlayerPal
51 Defining the Project Playfield Graphics
52 Defining the Project Player Graphics
53 Drawing Player Sprites
54 Temporarily Ignoring Clock Cycles
55 Player Horizontal Position Subroutine
56 Handling Joystick Movement
57 Changing Sprite Frame
58 Enemy Vertical Movement
59 Generating Random Values
60 Bitshift Operations
61 Random Enemy Position
62 Collision Registers
63 Checking Object Collision
64 Score Digits
65 Configuring Scoreboard Graphics
66 Performing Tasks Inside Vertical Blank
67 Implementing Asymmetrical Playfield
68 Scoreboard Background Color
69 Game Over Color Effect
70 Exercise Incrementing the Score
71 Implementing the Score Increment
72 Exercise Limiting Player Movement
73 Implementing Player Movement Limits
74 Using BCD Decimal Mode
75 Drawing Missiles
76 Missile Collision
77 Addressing Mode Mistakes
78 Sound Registers
79 Generating Sound
80 Scanline Analysis
81 Next Steps
Resolve the captcha to access the links!
