NES Programming with 6502 Assembly
27h 55m 3s
English
Paid
November 8, 2024
This course is a full immersion into the world of the Nintendo Entertainment System. We will learn to program games for the NES using the Assembly 6502 language, exploring the fundamental elements of computer architecture. The unique design of the NES is the ideal environment for mastering key concepts of low-level programming.
By the end of the course, you will have practical knowledge of the 6502 assembler, a deep understanding of NES hardware, and a completed project of your own simple game that we will create together from scratch. We'll start with small examples and gradually combine everything into a final project that demonstrates how a simple game for the NES is structured.
Watch Online NES Programming with 6502 Assembly
Join premium to watch
Go to premium
# | Title | Duration |
---|---|---|
1 | Motivations & Learning Outcomes | 09:42 |
2 | How to Take this Course | 02:59 |
3 | Placing the NES in History | 09:55 |
4 | NES Hardware (Console) | 27:03 |
5 | Opening the NES Cabinet | 03:50 |
6 | NES Hardware (Cartridge) | 09:40 |
7 | Binary Numbers | 19:22 |
8 | Hexadecimal Numbers | 12:45 |
9 | 6502 CPU Pinout | 13:25 |
10 | 6502 CPU Registers | 10:10 |
11 | 6502 CPU Status Flags | 23:26 |
12 | The Assembler Flow | 12:06 |
13 | Popular 6502 Instructions | 17:54 |
14 | CA65 Assembler | 02:47 |
15 | Installing CA65 on macOS | 01:52 |
16 | Installing CA65 on Linux | 01:57 |
17 | Installing CA65 on Windows | 09:08 |
18 | iNES Header | 16:40 |
19 | Our First Assembly Code | 14:42 |
20 | Assembler & Linker | 06:01 |
21 | FCEUX Emulator | 07:51 |
22 | Our First Assembly Bug | 07:50 |
23 | Addressing Modes | 06:45 |
24 | 6502 Warmup Exercises | 08:22 |
25 | 6502 Warmup Exercises (Solution) | 15:23 |
26 | Makefiles | 03:25 |
27 | CPU Memory Map | 12:36 |
28 | Clearing RAM Addresses | 12:27 |
29 | NES Graphics & the PPU | 17:09 |
30 | Picture Frame & VBlank | 09:39 |
31 | PPU Memory Map | 20:28 |
32 | Background Color | 07:51 |
33 | NES Initialization Code | 17:30 |
34 | Include Files | 06:40 |
35 | Resetting PPU Address Latch | 02:32 |
36 | Sending Multiple Bytes to the PPU | 11:49 |
37 | Unnamed Labels & Subroutines | 06:47 |
38 | Editing CHR Tiles | 12:20 |
39 | Loading Nametable Tiles | 12:58 |
40 | Nametable Attributes | 09:13 |
41 | Loading Attribute Bytes | 10:45 |
42 | Creating Dynamic Macros | 08:27 |
43 | Declaring Variables | 07:18 |
44 | Measuring Game Seconds | 04:05 |
45 | Pointers | 08:49 |
46 | Loading a Full Nametable | 14:23 |
47 | Full Nametable Code | 07:35 |
48 | Exercise: Displaying Text | 05:04 |
49 | Displaying Text | 08:12 |
50 | Other Tile Editor Apps | 05:35 |
51 | NES Sprites | 15:20 |
52 | Hello Mario | 11:20 |
53 | OAM Decay | 02:14 |
54 | Hiding Sprites Off-Screen | 05:04 |
55 | Sprite Flickering | 03:25 |
56 | Include Nametable Files | 02:25 |
57 | Exercise: Hello Goomba | 01:22 |
58 | Hello Goomba | 04:02 |
59 | Bitwise Instructions | 11:07 |
60 | Controller Architecture | 13:48 |
61 | Controller Input Routine | 10:36 |
62 | Implementing Controller Input | 04:43 |
63 | Checking Button Presses | 13:57 |
64 | Moving Sprites with Button Presses | 03:57 |
65 | Button Constants | 05:54 |
66 | Integer & Fractional Position | 25:24 |
67 | Velocity & Acceleration | 17:09 |
68 | Signed Velocity | 06:56 |
69 | Intercalating Animation Frames | 11:11 |
70 | Multiple of Powers of Two | 02:27 |
71 | Mirroring & Scrolling | 13:29 |
72 | Horizontal Background Scrolling | 16:36 |
73 | Swapping Nametables | 14:40 |
74 | Bitshifting Operations | 11:50 |
75 | Load Background Dynamically | 05:11 |
76 | A Method for Dynamic Scrolling | 23:07 |
77 | Starting the AtlГўntico Code | 16:13 |
78 | Drawing Column of Tiles Off-Screen | 21:58 |
79 | Loading Initial Nametable Tiles | 11:37 |
80 | Loading Attributes Off-Screen | 26:46 |
81 | Scroll Split Screen | 07:14 |
82 | Sprite-0 Hit Implementation | 11:56 |
83 | Separating Game Logic & NMI | 12:15 |
84 | Running Game Logic Once Per Frame | 07:14 |
85 | Saving Registers in the Stack | 03:30 |
86 | Counting Game Loop Passes | 04:47 |
87 | Macro to Push & Pull Registers | 02:31 |
88 | A Discussion on Buffering | 08:22 |
89 | Array of Actors | 13:34 |
90 | Adding & Removing Actors | 09:15 |
91 | A Routine to Add Actors | 17:54 |
92 | Coding the Routine to Add Actors | 13:23 |
93 | Template to Loop Actors Array | 06:29 |
94 | Rendering Actors | 33:36 |
95 | Updating Actor Position | 12:28 |
96 | Limiting One Missile Per Button Press | 06:18 |
97 | Deleting Actors | 16:52 |
98 | Relative vs. Absolute Jumps | 05:26 |
99 | Spawning Submarines | 15:45 |
100 | Spawning Airplanes | 06:07 |
101 | Random Numbers using LFSR | 24:34 |
102 | 8-Bit LFSR Example | 09:21 |
103 | Random Airplane Position | 12:54 |
104 | Adjusting Airplane Position | 05:09 |
105 | Sprite Collision Check | 18:22 |
106 | Missile-Airplane Collision | 24:44 |
107 | Check Point Inside Bounding Box | 13:26 |
108 | BCD Representation | 17:48 |
109 | Routine to Increment Score | 10:29 |
110 | Buffering Background Tiles | 29:49 |
111 | Increment Score on Airplane Hit | 02:34 |
112 | Background Collision Check | 10:44 |
113 | CHR Bank Switching | 21:38 |
114 | Game States | 06:10 |
115 | Title Screen State | 10:13 |
116 | Title Screen Nametable | 18:21 |
117 | Title Screen Menu Items | 10:18 |
118 | Drawing Menu Item Arrow | 07:23 |
119 | Exercise: Menu Item Palette Selection | 03:58 |
120 | Menu Item Palette Selection | 05:15 |
121 | RLE Compression | 10:13 |
122 | A Python Script to Encode RLE | 14:56 |
123 | A Routine to Decode RLE Data | 10:06 |
124 | Title Screen RLE Decoding | 07:07 |
125 | APU | 14:32 |
126 | Introduction to FamiStudio | 39:48 |
127 | Square Channel Ports | 19:57 |
128 | Triangle, Noise, and DMC Ports | 13:13 |
129 | Musical Notes & Period | 17:21 |
130 | Using a Sound Engine | 16:03 |
131 | FamiStudio Sound Engine | 18:27 |
132 | Some Notes on Chords & Voicing | 03:50 |
133 | Playing FamiStudio Music Code | 14:07 |
134 | Playing Missile Sound Effect | 04:55 |
135 | Playing Explosion Sound Effect | 07:02 |
136 | Fixing Button Press/Release Bug | 06:53 |
137 | Fixing VRAM Buffering Address | 03:48 |
138 | Clipping Tiles Left & Right | 21:10 |
139 | Calculating Tile Screen (-1,0,+1) | 29:32 |
140 | Removing Actors Off Screen | 11:54 |
141 | Fixing Explosion SFX Bug | 06:42 |
142 | Developing NES Games with C | 04:53 |
143 | C NESLib Examples | 32:03 |
144 | Conclusion & Next Steps | 19:25 |
Read Book NES Programming with 6502 Assembly
# | Title |
---|---|
1 | 6502 Warmup Exercises |
2 | 6502 Warmup Exercises (Solution) |
Similar courses to NES Programming with 6502 Assembly
Ultimate C++ Part 2: Intermediatecodewithmosh (Mosh Hamedani)
Duration 3 hours 37 minutes 48 seconds
Course
Graph Theory Algorithms for Competitive Programmingudemy
Duration 20 hours 12 minutes 42 seconds
Course
Master the Lua Scripting LanguageGustavo Pezzi
Duration 13 hours 59 minutes 27 seconds
Course
Ultimate C++ Part 3: Advancedcodewithmosh (Mosh Hamedani)
Duration 3 hours 41 minutes 57 seconds
Course
Ultimate C++ Part 1: Fundamentalscodewithmosh (Mosh Hamedani)
Duration 3 hours 52 minutes 48 seconds
Course