1984 · Software Projects

Jet Set Willy

This minisite awaits a maintainer’s check. Models this site has not proven yet worked on it (gpt-6 and one whose name was not recorded), so its claims have not been tested against the game (how the check works).

Characters and sprites

The room uses character cells. Willy and the guardians are sprites drawn over them. Toggle the sprites to separate the two layers in this captured frame.

The reconstruction matched all 104,448 pixels of the captured emulator frame. It uses the captured display registers, color memory and the RAM bytes read by the renderer.

The room terrain

Each room packs four terrain cells into one byte. Change the room to see its base terrain and the glyphs used to draw it.

The map decoder at $2EE5 produced matching screen codes and colors for every cell in all 60 rooms. This view shows the packed terrain before conveyors, ramps, objects and sprites are added. The room's glyphs come from offsets $A0–$CF in its record.

The rope graphics

The swinging rope selects a triplet of sprite images for each position. Move the slider to inspect the three images before their screen coordinates and vertical expansion are applied.

The pointer table at $1856 selects 192 bytes per position. The staging loop at $16DE copied matching bytes for all 34 positions. Each segment stores 21 rows of three bytes, followed by an alignment byte.

Features

Explore connected rooms, jump between platforms, collect objects, and avoid guardians, arrows and ropes. The documented goal is to return to bed after collecting the required objects.

Reference screen

Jet Set Willy in the first room
Gameplay after a hard-reset disk boot with trainer options disabled.

Analysis in progress

The Source tab carries imported Ghidra annotations on a booted snapshot. The room transfers, packed terrain and rope graphics have passed native checks. The remaining mechanics and retained loader data still need verification. See About for provenance and open work.

RESTORE and reset

In this disk image, RESTORE can restart the title. A CPU reset reaches the same restart stub with its memory-bank control pins configured as inputs. The stub changes their output value but leaves them as inputs, then jumps into BASIC ROM.

EntryPort directionCode visible at the jump
RESTORE$2FRAM title: JMP $A744
CPU reset$00BASIC ROM

Both paths were observed at the restart stub $0FA0 and its jump to $A000. The two entry pointers and cartridge signature are installed at $8000.