In the launch post, I briefly went over the making of Zevious Seven. In this follow-up, we'll take a slightly deeper look at how I put together a ZX81 shoot-'em-up, focusing on the acrobatics required to handle graphics, shadow files, and display file manipulation on a machine never built for action.
From "Box a Drop"to Writing a ZX81 Xevious-Like
- Compact Level Storage: A Optimised layout to compress vertical maps.
- Graphics: Efficient handling of tile sets.
- Speedy Display Updates: Rendering routines fast enough to handle ZX81 slowness. Like damn speedy.
Compact Level Storage: A level in a byte (a bit more that really)
- The ZX81's screen dimensions.
- Run-Length Encoding (RLE).
The Maths of the 4-Character Tile
Bit: 7 6 5 4 3 2 1 0 +-----+-----+-----+-----+-----+-----+-----+-----+ | V | V | V | V | V | V | V | V | +-----+-----+-----+-----+-----+-----+-----+-----+ \___________ 5 Bits __________/\____ 3 Bits ____/ | | High: 0–31 Tile Low: 0–7 RepeatGraphics: Tile Sets and Such
The Background: Writing to the Shadow File
As the background tiles are 3 characters high, a new row of terrain data only needs to be processed once every 3 vertical scrolls, meaning we only read a single line from the map data.
Instead of writing directly to the active display, the game updates a shadow file area (33x23) reserved entirely for background data. The rest of the time, the engine simply shifts the existing buffer down within this shadow file, serving as a clean terrain master template. Each scroll cycle, we copy the bottom 19 rows from this shadow area to one of two D-FILEs.
The Sprites: Height Alignment and Visual Character
Speedy Display Updates: Double-Buffering the D-FILE
Instead, a double-buffering strategy utilises two distinct D-FILEs. While one is actively viewed, the rendering loop composites the scrolling landscape from the map shadow file discussed earlier and the active 3x3 sprites into a hidden D-FILE. Once assembled, the engine swaps the active D-FILE pointer, timing the flip with the system variable FRAMES to instantly shift the background to the live display.
Launch a Copy of Zevious
ZX81 Versions
- A Digital copy is available at Itch.io
- Cassette Version will soon be available from Cronosoft - watch this space

