Skip to content

ovesennet/TikiJetSetWilly

Repository files navigation

TIKI JET SET WILLY

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.

Title Screen The Bathroom First Landing


Quick Start

The easiest way to play is with the included emulator on Windows:

  1. Launch tikiemul.exe — then load the dsk/work.dsk floppy disk image file
  2. Select O TIKIJSW from the TIKI-menu to start the game or type tikijsw in the command line

Running on real hardware

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 .dsk file 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

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.

Specifications

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.


The Game

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

Controls

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)

Building

Prerequisites

  1. z88dk — the Z80 cross-compiler toolchain. Install to C:\z88dk (or adjust paths in build.ps1). The ZCCCFG environment variable should point to <z88dk>\lib\config.

  2. PowerShell (included with Windows).

Build

.\build.ps1

This compiles all C and assembly sources and produces:

  • build/tikijsw.com — the CP/M executable
  • build/tikijsw.dsk — a raw 400K disk image

Additional build options:

.\build.ps1 -Clean       # Clean build outputs first
.\build.ps1 -Verbose     # Show full compiler output

Deploying

Prerequisites

  1. Djupdal TIKI-100 emulator — place tikiemul.exe in the project root (included in the repo). The emulator configuration file tikiemul.ini is included.

  2. TIKI-100 system ROMtiki.rom (included in the repo).

  3. Base disk imagedsk/workbase.dsk contains the TIKI-100 OS and menu system. The deploy script copies this and adds the game executable.

Deploy and run

.\deploy.ps1

This will:

  1. Build tikijsw.com (if not already built)
  2. Copy dsk/workbase.dsk to dsk/work.dsk
  3. Write TIKIJSW.COM into the CP/M directory on the disk image
  4. Launch the Djupdal emulator with work.dsk on drive A:

Deploy options:

.\deploy.ps1 -NoBuild    # Skip build, deploy existing .com file
.\deploy.ps1 -NoLaunch   # Deploy to disk image without starting emulator

Project Structure

jsw.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

Credits

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.

About

A 80's game Jet Set Willy clone for the Tiki-100 computer.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors