An independent hard-science-fiction game about operating a spacecraft that is actually a machine.

The ship's power, cooling, air, and propulsion are simulated systems that genuinely work and genuinely fail — and the computer that runs it is a real emulated 16-bit processor you program in its own Forth operating system, live on the CRT. Descended from Notch's 0x10c / DCPU-16, not a recreation.

Windows · a self-contained download · free · the AeturnisOS & A16 manual is included.

The story

In the early 2000s humanity discovered the Field — an impossible technology, understood only well enough to use. A few years later came worse news: an extinction event Earth could not survive.

There was room to save only a fraction — a few hundred million, chosen largely by lottery. The evacuation fleet scattered on deliberately different courses, each ship a civilization seed carrying the means to begin again, its passengers asleep in Field suspension.

Then Field transit went catastrophically wrong. An interval passed that no one can measure — the surviving records disagree, and the true figure is not something the living can know. They call it The Dream. The sleepers woke far downstream of their own history, into an old, cooling cosmos where the last long-lived stars are burning down.

Only a handful of Earth's ships are known to have reached this region. Local civilization has stood here for some twelve centuries. Thousands of the Earth-born are still under — Dreamers; those who wake are the Awakened; those born since, Naturals. Earth is at once unimaginably ancient and living memory.

You are newly Awakened. The ship is yours to understand.

Project status

A16 CPUFROZEN
AeturnisOSOPERATIONAL
ABUS device busOPERATIONAL
Ship systemsPROVEN
Procedural audioOPERATIONAL
BCH prototypeFROZEN · PLAYABLE
EarendelIN DEVELOPMENT

Current phase

EARENDEL
Flight · EVA · Docking · The Universe

BCH proved the ship is a machine. Earendel makes it fly.

Devlog

15

BCH is frozen — and it's yours to play

The prototype set out to answer one question: can 0•X make a ship feel like a real, understandable machine, with a genuinely programmable computer at its heart? It can — so we're drawing a line. BCH ("Beyond Current Horizon") is now frozen: the computing stack, the ship simulation, and the diagnostic loop are proven and sealed behind a tag, and the build is out the door.

It's a free download. You power on a cold ship, boot its computer, and work it — read the gauges, type Forth at the terminal, trip a failure, and fix it two ways. A full AeturnisOS / A16 manual is bundled. There's no flight or story yet; this build exists to prove the machinery, and it does.

▸ Play the prototype — free

Next, the work gets a name of its own: Earendel — which gives this machinery mass, motion, and a universe. BCH proved the ship is a machine; Earendel makes it fly.

14

Make it break — then fix it, two ways

The prototype now does the thing it was built to prove: a complete diagnostic loop. A small test harness injects a real component fault — a failed coolant pump, a lost dock umbilical, a thruster stuck firing, a slow cabin leak — and then gets out of the way. Nothing downstream is scripted: a failed pump means no coolant flow, so the loop heats up, so the gauge needle climbs and the controller raises an alarm — exactly as it would for a genuine failure. The scenario is artificial; the failure is not.

You diagnose it however you like — read the analog gauges, or ask the computer at three depths: a one-word whole-ship dashboard, a per-subsystem detail, or your own monitoring loop written in Forth. Then you fix it — and here's the point: every fault is solvable two genuinely different ways. One from the terminal (type an operator command: shed load, bring the standby pump online, isolate the thruster, reconnect shore power) and one physical — flip a breaker or a switch on the engineering board, or dog a hatch. The command and the switch drive the same control underneath, so neither is the "intended" answer.

The engineering board: breakers and systems switches

The engineering board — breakers plus a backup-pump and thruster-isolate switch. Each physical control does the same thing as a word you can type at the terminal.

Some fixes are containment, not repair. A cabin leak can't be patched from the cockpit — but you can seal the cockpit off: dog the hatch, and the cabin gauge keeps falling while the cockpit gauge holds. And when you want to run it again, a dock-side console resets the ship — one grade restores it to nominal and keeps your work; another power-cycles the whole computer and recovers it even if the terminal has crashed.

Open a leak, then dog the hatch: the cabin gauge keeps venting into the red while the sealed cockpit holds — containment, made visible.

13

The ship, in three dimensions

The ship used to be one placeholder room. Now it's a real four-compartment utility craft — cockpit, habitat, engineering, airlock — that you fly through, assembled from a modular kit and built from the same validated blueprint the physics simulation runs. There's one source of truth: change a compartment in the data and both the simulation and the 3D ship change with it.

Two things make the engineering loop physical. Analog gauges read the simulation's actual physics directly — so a faulted sensor and the needle can disagree: the computer reports a lie while the dial stays honest. And external cameras (bow, aft, and a hull-mounted docking cam aimed at the berth ring) feed a bank of cockpit monitors, deliberately low-fidelity — late-90s security-camera monochrome. And it all floats against a sparse, dim starfield — deep space, not a bright planetarium.

Fly the four-compartment SV-1: live gauges that can out-truth the computer, CCTV viewscreens, and a terminal running AeturnisOS.

And the terminal isn't set dressing — it's a real computer. Below, a whole maze game is written in Forth at the ship's console: defined word by word, compiled, then played with the keyboard — running live on the Aeturnis A16.

A maze game coded in Forth at the terminal, then played — walls, coins, score, all running on the A16.

12Our own CPU: the Aeturnis A16

The ship now runs on a processor we designed. The prototype's DCPU-16 was the starting point; the Aeturnis A16 is a clean break — status flags and conditional branches instead of skip-if, two hardware stacks, auto-increment addressing, and first-class interrupts and faults. We wrote its emulator and taught our assembler to speak it, froze the instruction set as a spec, then did the real test: port the whole OS to it.

The port is what proves a CPU. AeturnisOS came out smaller and cleaner exactly where the design promised: the Forth inner loop halved, the register juggling vanished, and two things became real that the old chip couldn't do — the keyboard is interrupt-driven (the CPU sleeps until you press a key instead of spinning), and the machine monitor gained real breakpoints (a BRK traps into the debugger; a divide-by-zero now lands there too instead of corrupting). Same Forth, same display — new silicon underneath.

The A16 boots AeturnisOS on the CRT; walk up and define a word: : SQUARE DUP * ; then 5 SQUARE . → 25.

11Our own computer: AeturnisOS boots

The monitor no longer runs the prototype's software — it runs AeturnisOS, written from scratch. We built a DCPU-16 assembler, then an OS on top of it: a diegetic power-on self test, a machine monitor for poking memory, and a real Forth — the command line is the language. You can define words and run them: : SQUARE DUP * ; then 5 SQUARE . prints 25. The machine extends itself.

The screen is ours too: a new 8×12 text display controller (ATDC/1) with an original, hand-drawn font — legible enough to read code on. With that, the last piece of the prototype's software leaves the ship, and Phase 0 is complete: the whole computing stack — assembler, OS, Forth, display, font — is independently authored.

Walk up to the terminal; AeturnisOS has booted; type a Forth definition and run it.

10Milestone 2: the look — before & after

Milestone 2 is done: the room now reads as a lit spacecraft interior. The monitor runs a CRT shader (soft phosphor pixels, glow, anti-aliased scanlines), the room is lit by authentic 2002/ISS-era fluorescents (cool-white with a faint green), glossy surfaces pick up environment reflections, lights cast soft shadows, and a glass front glares on the CRT at grazing angles. It holds a vsync-capped 60 fps.

Below is the exact same camera move as the Milestone 1 clip — same path, same keystrokes — so the only thing that changed is the look.

Same shot, before (M1) and after (M2): fluorescent tint, scanlines, glass glare, soft shadow.

09Milestone 1: you're in the room

Interactive parity is done. You spawn in the cargo bay, walk with WASD and look with the mouse (Pilot mode), and press Tab to sit at the terminal (Terminal mode) and type into the DCPU. Floating at the centre is the prototype's spinning test cube — no meaning, just Notch's renderer test prop, reproduced faithfully (and a handy lighting target for what's next). It's not pretty yet; that's Milestone 2.

Milestone 1 in motion — walk in, cube tumbling, then type at the terminal.

08You can type into it now (M1.1)

Wired keystrokes into the DCPU's keyboard ring buffer (0x9000), so the Ready. prompt is live — type, Enter, Backspace. The DCPU side was proven by tests immediately; the screen just wouldn't update, which turned out to be a Bevy gotcha: the live texture re-uploads but the material's bind group was stale, freezing the display on the first frame. Touching the material each frame fixed it.

HELLO WORLD typed at the DCPU BASIC prompt

First words on Aeturnis hardware.

07Scale is a pillar now — measured before greenlit

Hard sci-fi needs believable proportions, so scale is an enforced invariant: 1 unit = 1 m, and canonical assets must pass a hard gate against a ship-ergonomics canon (deck ≥ 2.1 m, hatches ≥ 0.8 × 2.0 m with a knee-knocker sill, …) before they build. The prototype stays faithfully loose on its own layer. Every QA render now drops a 1.80 m human in for context.

A 1.8m human reference in the canonical crew cabin

A 1.80 m figure in quarters_a (2.4 m deck) — scale you can read at a glance.

06Making the banner ours

The DCPU's Copyright 1985 Mojang is a fictional in-joke (ancient retro tech), so the boot banner should stay fictional — just not Mojang's. Wrote a project-owned boot ROM (roms/src/os.asm) with our own in-universe maker and a retro copyright (2002, the lore's sleep-cell year +14). Notch's original ROM stays as the CPU test fixture.

The rebranded boot banner on the monitor

Aeturnis Development Labs LLC · (C) 2002.

05The screen is on the monitor

Wired up a Bevy app that boots the DCPU and renders its live screen RAM through the pipeline's font + palette onto a 3D monitor in the cargo-bay room. Running on the GPU (RTX 2070 / Vulkan). Everything finally meets in one picture.

DCPU monitor in the 3D room

DCPU BASIC 1.0 glowing on a CRT in the cargo bay.

04Rooms from an algorithm, not a mesh

Built the asset pipeline: declarative specs → headless Blender → glTF. The room generator is a straight port of Notch's renderRoom() — a box with 0.2-thick walls and a doorway. The font and 16-colour palette are extracted from the recovered 2012 source, so the look is byte-faithful.

Headless render of the cargo bay room

cargo_bay.glb, generated and rendered headless.

The recovered 4x8 font, round-tripped

The authentic 4×8 font, round-tripped from font.png to font.rom.

03A faithful DCPU-16, and it boots his OS

Ported the prototype's DCPU-16 to Rust (#![no_std], faithful v1.1). The headline test boots Notch's own os.asm — assembled by his original assembler — and asserts the banner lands in screen RAM. It immediately caught a real bug: an off-by-one in conditional skip. Nothing validates an emulator like running real software.

02The prototype turned up

Recovered Notch's original 2012 Java/LWJGL prototype, decompiled it, and mapped it out: the v1.1 DCPU, the memory-mapped screen at 0x8000, the real font, the genColor palette — and an earlier auto-generated 6502 emulator he built first. Primary-source gold.

01Research & the name

Compiled a cited spec/reference for the whole game and settled an early identity — 0x101a, a +14-year reframe of 0x10c (exponent tracking the year, 2012→2026). Since renamed 0•X; the length of the sleep is now canonically unmeasured — "The Dream."