Skip to content
Spectrum · Assembly · Game 01Z80● 20 of 20 units live

Gloaming

Dusk in a small square. Light every lamp before the dark catches you. The first complete game you finish in assembly — and at the end, your build matches the shipped game byte for byte.

What you’ll build

Dusk is falling on a small walled town square, and the lamps are out. You’re the lamplighter: cross the square, light all eight before the night objects — and the night will object, in the form of a cold draught that hunts you through the streets and ghosts through stone. Light every lamp and the night is held. Let it catch you three times and night falls.

A single screen, one hero, drawn in the Spectrum’s attribute colour — in the lineage of the 1983 single-screen classics (Jetpac, Pssst, Cookie): small, finished, complete. It’s the first game you finish in assembly, built directly on the foundations from Meet the Machine.

How it’s taught

Twenty units in five phases: the stage (a textured square and a heartbeat), movement done honestly (keys, pacing, a sprite that leaves the world intact), the game (lamps, light, a score, a mood, a win), jeopardy (the draught, and losing), and the finish (sound, a title, and a game that loops).

Two things make the module unusual. First, you frequently build the wrong version on purpose — the sprite that smears, the erase that vandalises the floor, the light that won’t stay, the respawn the enemy camps — because each honest failure teaches what the fix alone never could. Second, every unit’s final build is checked against the real game: the code you write converges, checkpoint by checkpoint, on the shipped Gloaming — and the last unit’s build matches it byte for byte. You aren’t building a teaching copy. You’re building the game.

Why it’s small on purpose

Gloaming earns its place by being complete, not ambitious. Cell-by-cell movement, a one-bit beeper, coloured-cell scores — each is the honest “before” of a technique a later game upgrades (smooth pixel movement, masking, a sound driver, a font). Nothing heavier is allowed in, so that at the end you can stand back and say the sentence this module exists for: I finished a game, in assembly, and I know why every byte of it is there.

Where it sits

After Meet the Machine, and your game doesn’t end when the module does. The file it converges on was cut from a larger prototype, and The Long Night — pools of dark, a reaching tendril, a five-watch night with a dawn at the end — continues this exact game from this exact code. Beyond that, the engine and the world both carry on: Shadowkeep explores a darkened keep on the engine you built here, and the lamps come back. Twenty units, all live — from the first attribute write to the closed loop of a title that remembers your best night. Your first release, not your last.

Unit roadmap

Phase 1

A square at dusk

The stage — attributes, the textured canvas, a glyph, the heartbeat

Units 1–4Complete
Phase 2

Movement done honestly

Keys, cell-step movement, the repeat gate, save/restore, walls, edges

Units 5–10Complete
Phase 3

A game

Lamps, lighting, the tally, the warming square, the win

Units 11–15Complete
Phase 4

Jeopardy

The draught that hunts you; lives, and the fall of night

Units 16–17Complete
Phase 5

Make it feel finished

A small sound, the title, and a game that loops

Units 18–20Complete