Dash
A fast-paced side-scrolling runner teaching PPU graphics, sprite management, and NMI-driven game loops.
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
Build the core game loop
Phase 2
Expand mechanics and variety
Unit 17
Coming SoonUnit 18
Coming SoonUnit 19
Coming SoonUnit 20
Coming SoonUnit 21
Coming SoonUnit 22
Coming SoonUnit 23
Coming SoonUnit 24
Coming SoonUnit 25
Coming SoonUnit 26
Coming SoonUnit 27
Coming SoonUnit 28
Coming SoonUnit 29
Coming SoonUnit 30
Coming SoonUnit 31
Coming SoonUnit 32
Coming SoonPhase 3
Content and level design
Unit 33
Coming SoonUnit 34
Coming SoonUnit 35
Coming SoonUnit 36
Coming SoonUnit 37
Coming SoonUnit 38
Coming SoonUnit 39
Coming SoonUnit 40
Coming SoonUnit 41
Coming SoonUnit 42
Coming SoonUnit 43
Coming SoonUnit 44
Coming SoonUnit 45
Coming SoonUnit 46
Coming SoonUnit 47
Coming SoonUnit 48
Coming SoonPhase 4
Visual polish and effects
Unit 49
Coming SoonUnit 50
Coming SoonUnit 51
Coming SoonUnit 52
Coming SoonUnit 53
Coming SoonUnit 54
Coming SoonUnit 55
Coming SoonUnit 56
Coming SoonUnit 57
Coming SoonUnit 58
Coming SoonUnit 59
Coming SoonUnit 60
Coming SoonUnit 61
Coming SoonUnit 62
Coming SoonUnit 63
Coming SoonUnit 64
Coming SoonPhase 5
Audio and music
Unit 65
Coming SoonUnit 66
Coming SoonUnit 67
Coming SoonUnit 68
Coming SoonUnit 69
Coming SoonUnit 70
Coming SoonUnit 71
Coming SoonUnit 72
Coming SoonUnit 73
Coming SoonUnit 74
Coming SoonUnit 75
Coming SoonUnit 76
Coming SoonUnit 77
Coming SoonUnit 78
Coming SoonUnit 79
Coming SoonUnit 80
Coming SoonPhase 6
Advanced features
Unit 81
Coming SoonUnit 82
Coming SoonUnit 83
Coming SoonUnit 84
Coming SoonUnit 85
Coming SoonUnit 86
Coming SoonUnit 87
Coming SoonUnit 88
Coming SoonUnit 89
Coming SoonUnit 90
Coming SoonUnit 91
Coming SoonUnit 92
Coming SoonUnit 93
Coming SoonUnit 94
Coming SoonUnit 95
Coming SoonUnit 96
Coming SoonPhase 7
Optimisation and testing
Unit 97
Coming SoonUnit 98
Coming SoonUnit 99
Coming SoonUnit 100
Coming SoonUnit 101
Coming SoonUnit 102
Coming SoonUnit 103
Coming SoonUnit 104
Coming SoonUnit 105
Coming SoonUnit 106
Coming SoonUnit 107
Coming SoonUnit 108
Coming SoonUnit 109
Coming SoonUnit 110
Coming SoonUnit 111
Coming SoonUnit 112
Coming SoonPhase 8
Final polish and distribution