In 1993 Baghdad, where electricity ran a few hours a day, an engineering student in his twenties wrote a game on an Amiga 500: 512KB of RAM, no hard drive, connected to a TV. He had no dev environment and no internet—only a worn-out Amiga hardware reference. The game asked nothing of the OS: the joystick was read directly from hardware ports, the fire button was a pin on the CIA chip. The floppy drive burned out three times in the 50°C summer. That is how Rabah Shihab finished Babylonian Twins in pure 68000 assembly—by his account, the first commercial-quality game made in Iraq. Art was by Murtadha Salman, music by Mahir AlSalman.
The game was finished, but the world wouldn't publish it. Commodore collapsed, sanctions scared off publishers. The finished game sat on a shelf for fifteen years.
First port: by hand
In 2008, an Amiga forum tracked down the author through old YouTube videos and obtained the disks. In 2010, the original team ported it to iPhone: a new engine written from scratch, about 34,000 lines of C++, "months of nights and weekends." Apple and Google both featured it; downloads exceeded 2 million.
Keep that as the baseline. Sixteen years later, the same person ported the same game again—this time with Claude Fable 5 running in Claude Code, with a terminal and a filesystem: able to edit files, run the assembler, build, launch, and read back results. The author's division of labor: "I didn't do the port. I made requests, played the results each night, said what felt off, and made the few decisions only someone who was there in 1993 could make." His 13-year-old son was the playtester.
Second port: AI
On the night of July 1, 2026, the work started from the 2010 C++ version into Godot 4. Timeline from the blog: 22:23 empty project; 22:44 both twin brothers controllable—21 minutes. 23:19, all 38 entity types in place. 00:35, menus, map, and saves all working; 02:15, exports for three platforms done.
July 5 was the real moonshot: turning the 1993 assembly source into the genuine article running at 50Hz in Godot. Input: 72,758 lines of 68000 assembly across 26 files—about 2,800 lines per file, zero comments, no documentation. Landmines along the way: a 2008 transfer had truncated all long filenames, so every include pointed at nonexistent names; one of five level source files was cut off mid-data-table, with no backup.
The AI's approach is worth the whole industry copying: don't port yet—first make the 1993 source assemble again. At 14:34 it imported; at 14:49 vasm on an Apple Silicon Mac reproduced a binary byte-identical to the factory disk—fifteen minutes. At 15:42 the rebuilt image booted and played in the FS-UAE emulator. About 108 bytes wouldn't align; the model's explanation (the shipped file was a post-run memory snapshot) is, by the author's own admission, the only claim in the entire post he never personally verified.
Then it reverse-engineered every format from the code that reads those bytes: level maps, 16-bit tile attributes, object tables, runtime doors, copper sky, planar sprites. All five level maps were correct on the first attempt. Assets were decoded into plain PNG, WAV, and JSON; behavior was rewritten in the engine's own language. Players don't use Godot's physics—an ordinary Node2D with a 150-line collision routine, line-by-line from 1993, including the author's hand-tuned correction constants. Verification was brutal: pixel-by-pixel comparison against 2020 emulator screenshots—five full-level frames, zero pixel differences. The first level alone is 600 tiles wide, 9,600 pixels.
Humans fixed the feel, the machine found the bugs
The blog is equally honest: the core port was one night; the game feel took three days—jump arcs and trampoline timing fixed in batches July 2–4. Author's words: "It didn't use image comparison. It took screenshots, I looked. It also can't check whether the game feels right."
The most elegant result: the AI scraped Google Play reviews, read them all, and listed the ones describing genuine defects. One 1-star review said "the door in level 1 doesn't open, and when it does, it doesn't end"—investigation showed only 2 of 18 levels had exit hints; the other 16 were missing. The bug survived fifteen years, two remakes, and a batch of testers. Author's words: "a stranger's review managed it." The fix shipped in 2.0.3 on both stores.
What it proves, and what it doesn't
Proven: an agent with a terminal, a real toolchain, and byte-level and pixel-level ground truth can complete verifiable heritage engineering. Its reliability comes from acceptance criteria, not mysticism.
What it doesn't prove is just as clear. This is a single-person sample holding the world's richest priors—the prompter was the original author, with the 2010 C++ engine as a reference, 2020 screenshots, and 33 years of memory. Cost data was not published; neither was the repo. On HN, some people are doing their own LLM ports (ZX81 memory dumps, MSX cartridges, "a 16KB ROM hit in one shot in an hour"); others sneer: "an AI port isn't a port." The rebuttal: "Riding in a car doesn't count as traveling; real traveling is on horseback."
And a quiet footnote: the first draft of this very blog post about the AI port was also written by AI, then edited line by line by the author for a week. Moderator dang left a line in the thread—errors are fast becoming a mark of authenticity.
Thirty-three years later, the original disk is free on itch.io; the Godot version hits Steam this fall—the 1993 game hidden as a second launch option inside the 2026 game, one at 50Hz, one at 60Hz, two clocks each keeping their own time. The shoebox went back.
---
Source: babyloniantwins.com blog, "Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly" (Rabah Shihab, 2026-09-01); HN 49550375 (377 points) and all author comments; TouchArcade, 2010-01-16; Indie Retro News. All timestamps and line counts are quoted verbatim from the blog.