C-64 6502 Assembler Demo-Coding Roadmap
Interactive version – tick sections when complete and keep notes. Data is stored locally in your browser.
Stage 0 – Fast warm-up
Goal: Assemble a 3-line “Hello world” that writes to $0400 and $D020 with Kick Assembler.
Workflow: kickass source.asm → VICE launches → Alt-M for monitor → reload.
Stage 1 – 6502 fundamentals on C-64
- Master all addressing modes, the flag register, stack tricks (
PHA/PLA,JSR/RTS, IRQ entry/exit).
Practice: IRQ routine that changes the border colour every 50 frames. - Learn cycle-counting basics.
Practice: time a loop with the CIA timer. - Read short code on Codebase64 to see real-world patterns.
Your notes
Stage 2 – C-64 hardware deep dive
- VIC-II raster interrupts – stable raster,
$D012/$D011timing. - Memory banking – map KERNAL/CHAR ROM out/in with
LDA #$35/STA $01. - Sprites & multiplexing – expand from 8 hardware sprites to 24+.
Mini-project: multi-colour sprite scroller.
Your notes
Stage 3 – Classic demo effects
| Effect family | Key concepts |
|---|---|
| Scrollers | Double-buffered screen RAM, badline avoidance |
| DYPP / sine-wave text | Pre-calculated sine tables in zero-page, page-crossing tricks |
| Plasma & colour-cycling | Per-scanline colour updates, unrolled loops |
| SID music | Export tune from GoatTracker; call play routine from IRQ |
Deliverable: 1-file intro (< 16 kB) with logo + scroller + music.
Your notes
Stage 4 – Production workflow & polish
- Kick Assembler scripting – macros for sprite tables & sine generators.
- Graphics tools – CharPad, SpritePad, BMP2SPR, PNG2KOALA.
- IRQ loader – integrate Krill’s loader so music keeps playing while loading.
- Packers & crunchers – Exomizer, Pucrunch; learn decrunch effects.
Milestone: multi-part demo (loader + 2–3 parts chained with fades).
Your notes
Stage 5 – Optimisation & size-coding (ongoing)
- Replace
JMPwith self-modifying code; inline critical loops. - Use illegal opcodes where safe (
LAX,SAX). - Cycle-perfect jitter fixes (stable IRQs, badline alignment).
- Pack variables into unused bits of zero-page, colour RAM, sprite pointers.
Your notes
Stage 6 – Join the scene & keep levelling up
- Hang out on CSDb, #c-64 (Libera IRC), Fizza’s Discord, P/\/\B Telegram.
- Enter small compos (Lovebyte, Zoo, Gubbdata) before tackling X-2026.
- Read diskmags (Vandalism News, iNDY) for design ideas and gossip.
- Publish source on GitHub for feedback.
Your notes