Skip to content
Game 14 32 Units

Blockstorm

A vertical UDG shooter — custom characters make BASIC look like a real arcade game.

What You Will Build

A vertical shooter where alien blocks descend from the sky in waves. You fire upward. They explode. More come. Faster. In tighter formations. Every sprite on screen — the player ship, four enemy types, bullets, explosions and power-ups — is a custom 8x8 character defined with USR and BIN. The game looks like a real Spectrum arcade conversion, not a text-mode demo.

Blockstorm gameplay

Why This Game?

Every game so far has used the built-in character set. Letters, numbers, symbols — whatever the Spectrum provides. Blockstorm replaces those characters with your own designs. User-defined graphics (UDGs) let you draw any 8x8 shape and display it with PRINT AT, exactly like a normal character. A spaceship. An alien. An explosion. Each one is eight bytes of binary data that you design on graph paper and POKE into memory.

This is also the game where BASIC breaks. The first few waves are smooth. By wave 6, the screen is full of moving objects and the frame rate visibly drops. By wave 10, the interpreter is gasping. This is not a bug — it is the lesson. You have pushed BASIC to its absolute limit. You understand viscerally why assembly exists.

What You Will Learn

Phase 1: Ship, Bullets and First Contact (Units 1-16)

  • User-defined graphics — USR, POKE and BIN to create custom 8x8 characters
  • UDG design workflow — graph paper to binary to DATA statements
  • Batch UDG definition — loading multiple character designs in a setup loop
  • Erase-redraw movement — clearing old positions and drawing new ones each frame
  • Single-bullet constraint — managing one active projectile at a time
  • Position-based collision — comparing character coordinates to detect hits
  • Two-frame explosion animation — timed UDG replacement for visual feedback
  • Enemy arrays — tracking position, type and health for multiple enemies
  • Formation movement — shared offset with direction reversal at screen edges
  • Performance-aware sound — short BEEPs that do not freeze the game loop

Phase 2: The Full Assault (Units 17-32)

  • Enemy behaviours — scouts that dive, tanks that absorb hits, bombers that drop projectiles
  • Bullet pools — arrays tracking multiple active projectiles for enemies
  • DATA-driven wave design — level layouts stored as DATA, loaded with READ and RESTORE
  • Power-up systems — double shot and shield with HUD indicators
  • Animation via frame cycling — alternating UDG characters to bring enemies to life
  • Performance measurement — using PEEK 23672 to time the game loop
  • Optimisation techniques — short variable names, GO SUB placement, selective redraw
  • The performance ceiling — understanding why BASIC slows down and what assembly solves

Unit Roadmap

32 of 32 units available