UltraHLE in 1999, a thousand lines of Terraform in 2025, and a cartridge in a browser tab
In 1999 my Zelda cartridge ran on a friend's PC. In 2025 a model wrote a thousand lines of Terraform while I watched. This is how the two moments meet in a browser tab.
I was eleven in the winter of 1999, and Ocarina of Time had just arrived on my shelf. Twenty-six years later I watched a model write a thousand lines of Terraform on my screen. This essay is about both moments and where they meet.
A cartridge on a friend's PC#
A friend at school said his PC could run Nintendo 64 games. His uncle worked at Nintendo, he said. That is the oldest story in any schoolyard, so nobody believed him. Then I went over and saw Super Mario 64 on his monitor. Next he loaded Zelda, the game whose cartridge sat on my shelf at home, and it booted. The graphics glitched. I did not mind. Because nobody had believed him, it meant all the more when it turned out to be true.
How UltraHLE did it#
On January 27, 1999, two programmers who went by Epsilon and RealityMan released a 600 KB executable called UltraHLE. It ran Super Mario 64 at playable frame rates on a Pentium II. The Nintendo 64 was still a current console, and Ocarina of Time had been in shops for only nine weeks. The common view was that proper N64 emulation was a decade away.
Instead of decoding every MIPS R4300i instruction the N64's processor runs, UltraHLE intercepted the calls that games made into libultra, Nintendo's own SDK. When a game asked the N64's RSP to draw a textured triangle, UltraHLE skipped the RSP and drew the triangle with OpenGL on the PC's graphics card. The method was lossy and specific to each game, which is why it ran on a 1999 PC. Cycle-accurate N64 emulation would take another twenty years to look credible.
Nintendo's lawyers were onto the project within hours, and the download page was gone within days. The program survived anyway, mirrored on FTP servers and traded over IRC and Hotline. Version 1.0.0 ran Ocarina of Time with graphical errors on the title screen and in the opening areas, and later patches fixed the worst of them.
The emulators that followed#
Project64 followed in 1999 and Mupen64 in 2002, with a long line of accuracy-first emulators after them. The high-level idea has aged well: twenty-five years later, N64Recomp turns N64 ROMs into native x86 programs that run faster than the original hardware. Dates below are approximate where sources differ.
NESticle Bloodlust Software's DOS shareware, which played NES games in real time on a Pentium.
ZSNES A Super Nintendo emulator good enough for Chrono Trigger and Final Fantasy VI.
UltraHLE High-level emulation that brought Super Mario 64 to a Pentium II.
ePSXe The first PlayStation emulator to run a large part of the library at full speed.
Dolphin A GameCube emulator, open source from the first day, with Wii support from 2008.
bsnes byuu's SNES emulator, slower than ZSNES on purpose because it aimed to match the hardware.
PCSX2 Version 0.9.6 took PlayStation 2 emulation from the BIOS to Shadow of the Colossus.
JSNES Ben Firshman's JavaScript NES emulator, an early proof that a browser could play NES games.
higan byuu's multi-system emulator, which grew out of bsnes.
EmulatorJS A web frontend for libretro cores compiled to WebAssembly.
N64Recomp The recompiler behind Zelda 64: Recompiled, a native Windows program built from the original cartridge.
AKI Anvil The workbench for the six AKI wrestling cartridges: browse and search everything inside them, edit it, and copy a move or a wrestler into another game.
The second moment#
By January 2025 I had been using language models for a while, for first drafts and for the long, dull middle of a project. Then I asked a language model for infrastructure code, and a thousand lines of Terraform appeared on my screen while I watched. I had expected a snippet to fix up.
It felt like 1999 again: something everyone had called years away was running in front of me. I also knew what it meant for the eighty percent of a project where my hyperfocus usually runs out: the scaffolding, the first drafts, the middle. That part no longer has to be where my projects stop.
Where the two meet#
The console from the first moment was the Nintendo 64, and the second changed how the tools on this site are built. Both come together in the AKI Anvil. It opens the six AKI wrestling cartridges (World Tour, VPW64, Revenge, WrestleMania 2000, VPW2 and No Mercy) in a browser tab. It reads every file, searches the rosters, moves, animations, textures and music, poses any animation in 3D, copies a move or a wrestler into another AKI game, and writes a changed cartridge back out for a flash cart. It follows three rules that the kids of 1999 would have written for it:
- No install. It is a web page, and your bytes go into a tab.
- No binaries. Plain JavaScript, with no runtime to trust.
- No sign-in. The cartridge comes from your disk and stays in your browser. Nothing leaves your device.
The tool was built the way the second moment showed me: a model writes the long middle, and I measure the last five percent against the real thing. The pin counts, the roster ranking, the music and the move formats on this site are those measurements.
I have had that feeling twice: once at eleven, watching a cartridge boot where I thought it could not, and once twenty-six years later, watching a thousand lines appear that I had expected to type myself. The AKI Anvil is what came of having both at the same time.