A port of Jet Set Willy (ZX Spectrum, 1984) to the TIKI-100 computer, written in Z80 assembly and C.
NOTE: The game is not bug-free, but playable. You are welcome to contribute by fixing bugs or improving the game.
The easiest way to play is with the included emulator on Windows:
- Launch
tikiemul.exe— then load the dsk/work.dsk floppy disk image file - Select O TIKIJSW from the TIKI-menu to start the game or type tikijsw in the command line
The dsk/work.dsk image is a standard TIKI-100 400K floppy format and can
be used on a real machine:
- Gotek floppy emulator: Copy the
.dskfile to a USB stick and load it as a virtual floppy on the Gotek connected to the TIKI - Real 400K floppy: Boot the TIKI-100 from the Gotek, then use the built-in RÅKOPI program to copy the disk image to a physical 5.25" floppy disk
- You can also use a serial connection to the TIKI and use a transfer program (Kermit) on the TIKI, but this I have not tested
The TIKI-100 (also known as the Kontiki-100) was a Norwegian Z80-based microcomputer manufactured by Tiki Data in the mid-1980s. Designed primarily for the Norwegian education market, it was widely deployed in schools across Norway and became one of the most common classroom computers of its era.
| CPU | Zilog Z80A @ 4 MHz |
| RAM | 64 KB (banked, shared with VRAM) |
| Display | Multiple graphics modes; Mode 3 = 256×256 pixels, 16 colours |
| VRAM | 32 KB, bank-switched into the lower 32K of address space |
| Sound | AY-3-8912 PSG — 3 channels |
| Storage | Dual 400K 5.25" floppy drives |
| OS | TIKO — CP/M 2.2 compatible, with custom ROM |
Despite being a CP/M machine, it had surprisingly capable graphics and sound hardware for its time.
Jet Set Willy was originally written by Matthew Smith and published by Software Projects in 1984 for the ZX Spectrum 48K. It is the sequel to Manic Miner and one of the most iconic platform games of the 8-bit era. Willy must collect all the items scattered across 60+ rooms in his mansion before Maria will let him go to bed.
This port is based on the annotated disassembly by Richard Dymond, available at skoolkit.ca. The original Z80 assembly source is included as jsw.asm for reference. All room data, sprites, guardian logic, and game mechanics are preserved from the original.
Features:
- Full 60+ room mansion — all original rooms, guardians, and items
- In-game music — the classic tune played through the AY-3-8912 PSG
- Sound effects — jump, fall, item collect, and death sounds
- Colour mapping — ZX Spectrum attributes mapped to a 16-colour palette
- Hash-skip blit — only changed screen cells are written to VRAM each frame
- God mode — toggle invincibility for exploring
| Key | Action |
|---|---|
| A | Move left |
| D | Move right |
| Space | Jump |
| S | Toggle in-game music on/off |
| P | Pause / unpause |
| Q | Quit to CP/M |
| O | Toggle god mode (invincibility) |
| Enter | Start game (title screen) |
-
z88dk — the Z80 cross-compiler toolchain. Install to
C:\z88dk(or adjust paths inbuild.ps1). TheZCCCFGenvironment variable should point to<z88dk>\lib\config. -
PowerShell (included with Windows).
.\build.ps1This compiles all C and assembly sources and produces:
build/tikijsw.com— the CP/M executablebuild/tikijsw.dsk— a raw 400K disk image
Additional build options:
.\build.ps1 -Clean # Clean build outputs first
.\build.ps1 -Verbose # Show full compiler output-
Djupdal TIKI-100 emulator — place
tikiemul.exein the project root (included in the repo). The emulator configuration filetikiemul.iniis included. -
TIKI-100 system ROM —
tiki.rom(included in the repo). -
Base disk image —
dsk/workbase.dskcontains the TIKI-100 OS and menu system. The deploy script copies this and adds the game executable.
.\deploy.ps1This will:
- Build
tikijsw.com(if not already built) - Copy
dsk/workbase.dsktodsk/work.dsk - Write
TIKIJSW.COMinto the CP/M directory on the disk image - Launch the Djupdal emulator with
work.dskon drive A:
Deploy options:
.\deploy.ps1 -NoBuild # Skip build, deploy existing .com file
.\deploy.ps1 -NoLaunch # Deploy to disk image without starting emulatorjsw.asm Original ZX Spectrum disassembly (reference)
build.ps1 Build script
deploy.ps1 Deploy script (writes CP/M disk image + launches emulator)
tiki.rom TIKI-100 system ROM
tikiemul.ini Emulator configuration
src/
asm/
game.asm Core game engine (ported from jsw.asm)
blit.asm Screen buffer → VRAM blit with hash-skip dirty detection
screen.asm VRAM primitives (plot, hline, fill, vsync ISR)
sprites.asm Sprite rendering to screen buffer
keyboard.asm TIKI-100 keyboard matrix scanner
sound.asm AY-3-8912 PSG sound driver
data.asm Binary includes (room data, sprites, tunes)
c/
main.c Entry point (init → game → shutdown)
video.c Graphics mode, palette, vsync setup
input.c C wrapper for keyboard scan
defs.h Shared declarations
data/ Extracted game data (rooms, sprites, graphics)
build/ Build output (excluded from git)
dsk/ Disk images (base image + work image)
docs/ Technical notes
img/ Screenshots
TIKI JET SET WILLY ported by Arctic Retro (Tommy Ovesen) with the help of Anthropic Claude Opus 4.6.
Original game Jet Set Willy © 1984 Software Projects Ltd, written by Matthew Smith. Disassembly by Richard Dymond (skoolkit.ca).
Built with z88dk. Emulated with the Djupdal TIKI-100 emulator, Arctic retro version.


