Coming Soon
Dash is currently in development. Check back soon!
What You'll Build
Side-scrolling runner. The world rushes past. Obstacles appear. React or crash. Every frame counts.
Guide your character through an ever-accelerating world of obstacles. Jump, slide, and dodge your way to survival. The NES PPU renders the scrolling world while your code keeps the player alive.
Why This Game?
Dash is your first NES game — and it teaches everything you need to know about the hardware. The PPU draws the background. Sprites draw the player and obstacles. The NMI interrupt drives the game loop. Controller input keeps you in control.
- Set up the PPU and understand tile graphics
- Manage hardware sprites for the player and obstacles
- Build an NMI-driven game loop that runs at 60fps
- Read controller input for responsive controls
- Implement collision detection between sprites and background
- Create a scrolling world that gets faster over time
By the end, you'll understand how the NES draws every frame.
Skills You'll Master
- PPU graphics — tiles, palettes, nametables
- Sprite management — OAM, positioning, animation
- NMI handling — vblank-driven game loop
- Controller input — reading the joypad
- Scrolling — hardware scroll registers
- Collision detection — sprite vs background
Prerequisites
This is Game 1. No prerequisites — just enthusiasm and a willingness to learn 6502 assembly.
You'll need an assembler (ca65), a linker (ld65), and an emulator (Mesen or FCEUX).
Time Investment
128 units at 60-90 minutes each. Roughly 128-192 hours total, spread across 8 phases.
Unit roadmap
Phase 1 Phase 1
Build the core game loop
Units 1–16 Complete
Phase 2 Phase 2
Expand mechanics and variety
Units 17–32 Soon
17 Unit 17 Soon
18 Unit 18 Soon
19 Unit 19 Soon
20 Unit 20 Soon
21 Unit 21 Soon
22 Unit 22 Soon
23 Unit 23 Soon
24 Unit 24 Soon
25 Unit 25 Soon
26 Unit 26 Soon
27 Unit 27 Soon
28 Unit 28 Soon
29 Unit 29 Soon
30 Unit 30 Soon
31 Unit 31 Soon
32 Unit 32 Soon
Phase 3 Phase 3
Content and level design
Units 33–48 Soon
33 Unit 33 Soon
34 Unit 34 Soon
35 Unit 35 Soon
36 Unit 36 Soon
37 Unit 37 Soon
38 Unit 38 Soon
39 Unit 39 Soon
40 Unit 40 Soon
41 Unit 41 Soon
42 Unit 42 Soon
43 Unit 43 Soon
44 Unit 44 Soon
45 Unit 45 Soon
46 Unit 46 Soon
47 Unit 47 Soon
48 Unit 48 Soon
Phase 4 Phase 4
Visual polish and effects
Units 49–64 Soon
49 Unit 49 Soon
50 Unit 50 Soon
51 Unit 51 Soon
52 Unit 52 Soon
53 Unit 53 Soon
54 Unit 54 Soon
55 Unit 55 Soon
56 Unit 56 Soon
57 Unit 57 Soon
58 Unit 58 Soon
59 Unit 59 Soon
60 Unit 60 Soon
61 Unit 61 Soon
62 Unit 62 Soon
63 Unit 63 Soon
64 Unit 64 Soon
Phase 5 Phase 5
Audio and music
Units 65–80 Soon
65 Unit 65 Soon
66 Unit 66 Soon
67 Unit 67 Soon
68 Unit 68 Soon
69 Unit 69 Soon
70 Unit 70 Soon
71 Unit 71 Soon
72 Unit 72 Soon
73 Unit 73 Soon
74 Unit 74 Soon
75 Unit 75 Soon
76 Unit 76 Soon
77 Unit 77 Soon
78 Unit 78 Soon
79 Unit 79 Soon
80 Unit 80 Soon
Phase 6 Phase 6
Advanced features
Units 81–96 Soon
81 Unit 81 Soon
82 Unit 82 Soon
83 Unit 83 Soon
84 Unit 84 Soon
85 Unit 85 Soon
86 Unit 86 Soon
87 Unit 87 Soon
88 Unit 88 Soon
89 Unit 89 Soon
90 Unit 90 Soon
91 Unit 91 Soon
92 Unit 92 Soon
93 Unit 93 Soon
94 Unit 94 Soon
95 Unit 95 Soon
96 Unit 96 Soon
Phase 7 Phase 7
Optimisation and testing
Units 97–112 Soon
97 Unit 97 Soon
98 Unit 98 Soon
99 Unit 99 Soon
100 Unit 100 Soon
101 Unit 101 Soon
102 Unit 102 Soon
103 Unit 103 Soon
104 Unit 104 Soon
105 Unit 105 Soon
106 Unit 106 Soon
107 Unit 107 Soon
108 Unit 108 Soon
109 Unit 109 Soon
110 Unit 110 Soon
111 Unit 111 Soon
112 Unit 112 Soon
Phase 8 Phase 8
Final polish and distribution
Units 113–128 Soon
113 Unit 113 Soon
114 Unit 114 Soon
115 Unit 115 Soon
116 Unit 116 Soon
117 Unit 117 Soon
118 Unit 118 Soon
119 Unit 119 Soon
120 Unit 120 Soon
121 Unit 121 Soon
122 Unit 122 Soon
123 Unit 123 Soon
124 Unit 124 Soon
125 Unit 125 Soon
126 Unit 126 Soon
127 Unit 127 Soon
128 Unit 128 Soon