VIRTUAL RED SHIFT private beta
Virtual Red Shift · how it's made
This port was built with an AI coding assistant. That invites an assumption: that someone typed a prompt and the game appeared. This page is the record of what happened instead, read from the git history and the session logs by a script that runs every time the site is rebuilt.
VVVVVV is Terry Cavanagh's game. In 2020 he published its source code "for others to learn from, to inspire new work". This port exists because of that: it reads the game's logic from that source -- his game, as carried to C++ by Simon Roth and to SDL2 by Ethan Lee -- and takes his level data -- the room layouts, where every entity stands, the text of every scene. The rooms you play are his rooms.
What it does not take: the art, the music and the sound, which are not part of the published source and stay his and Magnus Pålsson's. Every graphic is redrawn for a 384 by 224 screen in four shades of red; the port plays sixteen original chiptune tracks. The Virtual Boy adds one thing the original never had: depth.
VVVVVV is still for sale at thelettervsixtim.es, with the art and the soundtrack this port does not have.
The original runs its logic at 29.41 frames per second; the Virtual Boy runs at 50, so speeds, accelerations and delays are converted from the original values in 8.8 fixed point. 28 purpose-built checks compare the port with the published source; on 2026-09-26, 26 passed and 2 failed (an epilogue token still drawn with a placeholder, and one final-level announcement). What the passing checks establish:
What these checks do not do: they read data and code, not the game running. That part is the tester's, below, and the console's.
Measured on 2026-09-26, by the rules written in the measuring script.
These sessions ran next to other projects, so the logs are mixed. Nothing is guessed: a command counts for the port only when it ran in the port's folder or named its files, and a prompt only when the work it started did. Session time is the sum of the gaps shorter than ten minutes between those events, watched or not; the hours more than an hour after a person's last message are the loop working alone.
Every program the assistant ran for the port, by what it was. These are floors: a run that names no project is not counted.
| Programs run | Count | What they are |
|---|---|---|
| Verification | 4,596 | audits, lint, guards, self-tests |
| Auto-player | 520 | the game played minimised, no keyboard |
| Keyboard sessions | 361 | the game played by scripted keys |
| Builds | 818 | compiling the ROM |
| Asset generation | 1,109 | rooms, scenes, tiles, music emitted from data |
| Flashing | 30 | sending a ROM to the cartridge |
| Version control | 10,436 |
For every build, about 7 programs checked the game: audits, auto-player runs and keyboard sessions together. In git, more commits touch the checks (417) than the game itself (369).
The assistant worked from six written briefs, one per role, 3,972 lines in all. Their content stays private.
| Role | Lines |
|---|---|
| Architect | 1,408 |
| Coder | 890 |
| Tester | 399 |
| Loop | 1,047 |
| Build | 85 |
| Flash | 143 |
The game is played by an automatic player: an emulator started minimised, with no keyboard and no window focus, told which room to start in and how many frames to play, writing what happened to its save memory. Several run side by side, faster than real time.
These are floors: the long runs of the nights went to the background, and a run does not always name its length. Every room of the game prints a four-character code, so a run -- or a tester -- can report exactly where something broke.
The plan lives in one file, rewritten rather than appended: the history shows it replaced 163 times. The verdict lives in another, rewritten 37 times, and 32 of those verdicts passed a build. The flashing script reads the verdict and refuses any ROM whose fingerprint it does not carry: of its 30 runs, 23 wrote a ROM to the cartridge.
It is tempting to say this would have taken years by hand. Nobody built this port without the assistant, so there is no way to know, and a multiplier invented for a page like this would be exactly the kind of number it argues against. The level design, the characters, the story and the rules are Terry Cavanagh's; the port's job was to carry them to a different machine without losing them.
No emulator reproduces how a Virtual Boy feels: the red, the depth, whether a spike stays readable against a bright wall. So the ROM was written 23 times to a real cartridge, for a person to play on the console. Two depth ideas were dropped after that kind of test.
To start your own: VUEngine, Mednafen, the Planet Virtual Boy development forum, a flash cartridge. Questions about this port: the forum thread.