Konami · 1982 · a fan port for old and new machines

Time Pilot

The arcade classic about a lone fighter lost in time, rebuilt for the Commander X16, Apple II, Apple IIgs, Macintosh and Archimedes — and running here, in your browser, from real source code rather than a video stream.

Time Pilot splash screen: a fighter jet crossing a field of clouds
Time Pilot, five eras at a time

Play now

Six ports, one game

Every machine gets the same card. The native WebAssembly build and the X16 player run on this page; the Apple II machines open in their own emulators in a new tab; the Macintosh and Archimedes cards open embedded machines that boot the game for you.

Native · WebAssembly

TimePilot-16bit-C

The original 16-bit C port compiled to WebAssembly with Emscripten. The game runs at its own 60 Hz, draws through a custom tigr canvas backend, and plays through WebAudio. No emulator in the middle.

Keyboard · gamepad · fullscreen

Play the native port
Emulated · Commander X16

TimePilot-CX16

The real llvm-mos CX16 PRG, loaded from HostFS into the official X16Community WebAssembly emulator r49. VERA sprites, 512 KB of banked RAM, and the original KERNAL boot.

Keyboard · gamepad · 640×480 VERA screen · no audio in this wasm build

Boot the X16
Apple II + VERA

TimePilot-IIvera

An Apple IIe/II+ build driving the VERA video and audio board. Loaded into a2vera from the latest GitHub release asset.

TimePilot-IIvera.hdv

Open a2vera ↗
Apple IIgs

TimePilot-IIgs

The IIgs port, built for the Apple IIgs's 2.8 MHz 65816 and its bitmap graphics. Opens the a2gsemu Apple IIgs emulator with the hosted TimePilot game URL loaded.

core=gs2 · 2 MB RAM

Open a2gsemu ↗
Macintosh 68k

TimePilot-Mac68k

The 68K Macintosh build, running on an emulated Macintosh under System 7.5. This page embeds Infinite Mac with the TimePilot disk image mounted as a second drive, so there is nothing to install.

System 7.5 · 640×480 · 8 MB RAM · Infinite Mac

Open the Macintosh
Acorn Archimedes

TimePilot-Archie

The native Archimedes build, running on an emulated A3020 under RISC OS 3.11. Archimedes Live unpacks the HostFS archive and autoboots !TimePilot from the URL — no local emulator and no manual file drop.

RISC OS 3.11 · A3020 · 4 MB RAM · Archimedes Live

Open the Archimedes

Under the hood

What is running

Native WebAssembly port

TimePilot-16bit-C is compiled by Emscripten against a small headless tigr platform layer. The game's synchronous main loop is paced with Asyncify at logical frame boundaries, and the OpenAL/ALUT calls are mapped to WebAudio. The whole game and its sprites, fonts and audio banks are preloaded into MEMFS, so the page runs from static files — no server-side game logic.

Commander X16

TimePilot-CX16 is cross-compiled with llvm-mos to a PRG with a SYS start address, then loaded into the official X16Community WebAssembly emulator (r49). The player fetches the PRG, sprite VRAM, font VRAM and 43 audio banks into the emulator's HostFS drive and starts it with -prg time_pilot.prg -run. The emulator binary is downloaded and checksum-verified at build time; it is not vendored here.

Apple II, Macintosh and Archimedes links

The Apple II + VERA build is hosted as a GitHub release asset and loaded straight into a2vera. The IIgs card opens a2gsemu's Apple IIgs core with the TimePilot game URL passed to the emulator. Both are external links, not iframes, so the emulators' own keyboard and audio handling stays intact.

The Macintosh card opens a page with Infinite Mac embedded. Infinite Mac boots System 7.5 and fetches mac/Time.Pilot-m68k.dsk as a second disk; the disk and the emulator are both external to the WASM/X16 players.

The Archimedes card embeds Archimedes Live. Its hash carries the disc URL for archie/TimePilot-RISCOS-HostFS.zip and an autoboot command, so the archive is unpacked onto HostFS and the game starts without a local file picker.

Build and deploy

GitHub Actions rebuilds both local players from source on every push to master, assembles this static site, and deploys it to GitHub Pages. The Emscripten SDK, llvm-mos SDK and x16-emulator archive are fetched by the build scripts into caches outside the repository, so the checkout stays small and reproducible.

Source

The whole thing is in the repository