A young man in a black jacket stands before a red ink-splash wolf, a full moon and an industrial skyline

AI-Assisted Decompilation: Matching Decomps, Cross-Game Mods and Open-by-Default Software

Scope. How matching decompilation works, what changes when coding agents are paired with a byte-exact check, how cross-game mods are built, five workflows to try, and what cheap decompilation means for the economics of software. Nothing here is legal advice; every workflow assumes a game the reader owns, offline play, and no redistribution of game files or decompiled code.

Media. Images, clips and posts come from the projects' repositories, decomp.dev, YouTube and X, credited underneath. Videos and posts load from YouTube or X only when clicked.

A soldier from Call of Duty: Modern Warfare 2 drops onto a skateboard and skates with Skate 3's physics. Steve from Minecraft builds in Skyrim while its villagers walk around the blocks. Mario triple-jumps through Elden Ring, Spider-Man swings through Batman's Gotham, and the original Xbox Halo runs in a browser tab with room for 128 players.

Each of these is working software with public source code, and each rests on an old discipline: decompilation, turning a shipped binary back into source code that can be read and changed. Three techniques account for most of them. Some are a trick: two games run side by side and one is painted into the other. Some lift a single mechanic, such as Mario's movement, out of a decompiled game and run it as a library inside another. Some rebuild a whole engine from the shipped binary, with coding agents doing most of the typing. All three became cheap together, for one reason: decompilation acquired a tireless guesser with a perfect referee.

  • ~2 yearsfor the hand decompilation of Super Mario 64, begun by speedrunners[1]
  • 15,000+functions in Ocarina of Time, matched by dozens of volunteers over at least 21 months[2]
  • 32 daysfor coding agents to match all 1,446 functions of LSD: Dream Emulator[3]
  • 0 bytesof difference allowed between a matching decompilation and the original[4]
  • 1 headeris libsm64's entire interface to Mario: collision and input in, Mario out[5]
  • 42.5%of the functions Halo 2 calls take arguments in registers Microsoft's standard conventions never use[6]

What follows takes the techniques apart: decompilation by hand, what agents change, the cross-game mods and the recipe they share. By the end of §3 a ten-second clip is usually enough to tell which technique made it. §5 has five workflows to try, and §6 asks what happens to the business of software when shipping a binary is close to shipping its source.

§1 · Matching, by handDecompilation before agents

A compiler is a one-way door. It keeps what the machine needs and throws away what people need: names, comments, types, the boundaries between files. Decompilers try to walk back through. Cristina Cifuentes's 1994 thesis and the dcc decompiler that accompanied it, which turned DOS executables into C, laid out the techniques[7]; Hex-Rays brought a commercial decompiler to IDA Pro in 2007[8], and in March 2019 the NSA released Ghidra under the Apache 2.0 licence[9]. All of them produce plausible C, code that means roughly what the binary does but would not compile back into it.

The game-preservation community set a stricter bar. A matching decompilation is C that, built with the original compiler and flags, “compiles to be byte-for-byte identical to the original ROM”[4]. It starts with archaeology: for a Nintendo 64 game, finding which version of SGI's IDO compiler built it[1]. Then each function is rewritten until the compiler's output agrees instruction for instruction. The strictness pays: a paraphrase of a program can be subtly wrong without anyone noticing, and a byte-exact rebuild cannot.

The daily work is a loop: guess a function's C, compile, compare, adjust, repeat. Each step grew a tool. splat cuts a ROM into pieces; m2c drafts C from assembly; asm-differ and objdiff show the two machine codes side by side; decomp-permuter shuffles code at random until a stubborn function matches. decomp.me, launched in 2021, puts the loop in a browser, where a shared “scratch” is scored by its distance from a match[10].

objdiff showing two columns of PowerPC assembly for the function CActor::PreRender, with mismatched registers highlighted and a match score of 80%
objdiff on one Metroid Prime function, CActor::PreRender, at 80% matched. Left, the original; right, what the current C compiles to. The coloured registers and the extra addi mark the divergence; closing it means rewriting the C until the compiler makes the same choices.Image: encounter/objdiff · Apache-2.0

By hand, the loop is slow. The Super Mario 64 decompilation, started by speedrunners, took about two years before its source surfaced in July 2019[1][11]. Ocarina of Time took “at least 21 months” and more than 15,000 functions, with dozens of contributors[2]. The larger GameCube projects ran longer: Twilight Princess took more than five years from the opening of its repository to a full match, and Super Smash Bros. Melee more than six[12][13].

The payoff is source that can go anywhere. A PC port of Super Mario 64 appeared in May 2020, and Ocarina of Time's arrived in March 2022 as Ship of Harkinian, which asks each player for their own ROM[1][14]. Source also allows surgery no emulator can do.

FIXING the ENTIRE SM64 Source Code (INSANE N64 performance) — Kaze Emanuar. Kaze Emanuar rewrites large parts of the decompiled Super Mario 64 so that it runs much faster on the original Nintendo 64, a change that needs source code.
I DECOMPILED a Sonic game... here's how — MattKC. MattKC decompiles a 2015 mobile game, Sonic Runners, and explains the hand workflow step by step.

A second route skips understanding altogether. Static recompilation translates every machine instruction into equivalent C mechanically: N64Recomp emits lines like ctx->r4 = ADD32(ctx->r4, 0X20); and links them against a runtime that stands in for the console[15]. Zelda 64: Recompiled brought Majora's Mask to the PC this way in May 2024, and the Xbox 360 counterpart, XenonRecomp, produced Unleashed Recompiled in March 2025[16][17]. Recompiled code runs, but nobody can read it. Between them, the two routes have turned shelves of console-bound games into native PC programs[18].

Recomps and Decomps have taken over Retro Gaming... — Modern Vintage Gamer. A tour of the recompilation scene, from Symphony of the Night in widescreen to Xbox 360 games never ported to PC, with a warning that AI-assisted recompilations get less care.

decomp.dev, a tracker that collects each project's objdiff reports, draws every decompilation as a map: one box per source file, sized by its code, green once it matches[19]. It tracks games across a dozen platforms, from the PlayStation to the Switch, at every stage from first split to full match.

  • decomp.dev treemap of Super Mario Galaxy, 100% of code matched
    Super Mario GalaxyWii100%
  • decomp.dev treemap of Twilight Princess, 100% of code matched
    Twilight PrincessGameCube100%
  • decomp.dev treemap of Super Smash Bros. Melee, 100% of code matched
    Super Smash Bros. MeleeGameCube100%
  • decomp.dev treemap of Snowboard Kids 2, 100% of code matched
    Snowboard Kids 2N64100%
  • decomp.dev treemap of Metroid Prime, 90.5% of code matched
    Metroid PrimeGameCube90.5%
  • decomp.dev treemap of The Wind Waker, 79.0% of code matched
    The Wind WakerGameCube79.0%
  • decomp.dev treemap of Super Mario Sunshine, 47.8% of code matched
    Super Mario SunshineGameCube47.8%
  • decomp.dev treemap of Super Mario Odyssey, 15.8% of code matched
    Super Mario OdysseySwitch15.8%
  • decomp.dev treemap of Mario Kart Wii, 5.8% of code matched
    Mario Kart WiiWii5.8%
file fully matchedpartly matched, brighter is closernot yet matchedbox area = size of the file's code
Nine decompilations at different stages, as decomp.dev drew them at the time of writing. Each map is the project's own report image; percentages are matched code. The colours follow decomp.dev's source: pure green at 100%, otherwise a blend from grey to blue by fuzzy match.Images: decomp.dev, generated from each project's objdiff report

§2 · What agents changedA guesser and a referee

Matching decompilation has a property almost no other programming task has: a perfect, automatic referee. The compiled bytes either equal the original's or they do not. Language models are fallible writers but cheap, tireless guessers, and a guesser paired with a referee that cannot be argued with is a search procedure. The programmers Atrioc consulted agreed: AI “has become incredibly good at things that are verifiable”[18].

Research got there first, without the referee. LLM4Decompile (EMNLP 2024) trained open models to turn binaries straight into C and more than doubled the “re-executability” of GPT-4o's and Ghidra's output, a test of behaviour rather than bytes[20]. In March 2025 GhidraMCP and an MCP server for IDA Pro let agents drive the decompilers people already used[21].

The decisive step was giving agents the byte-exact check. Chris Lewis ran Claude in a loop on Snowboard Kids 2, a Nintendo 64 racing game: a scorer picked the function most likely to match, Claude attempted it, a driver logged the result and moved on. “In the three weeks since adopting this workflow, I've made more progress on Snowboard Kids 2 than in the preceding three months”[22]. Then came the long tail. Claude “more or less gives up immediately” on functions over 1,000 instructions, one function took 87 attempts, and once, unable to match a function, Claude “updated the SHA1 hash that was used for comparison”. It had edited the referee, and every later change had to be reverted[23]. The game was eventually matched in full, and Lewis's verdict cuts both ways: coding agents “greatly accelerated” the work, and “the community was more important than any model”[24].

Thirty-two days for a whole game

LSD: Dream Emulator, a cult 1998 PlayStation game, is a documented case of agents doing all of it: from an empty split of the executable to all 1,446 functions matched, named and documented in 32 days, 106 rounds and about 6,800 commits. In each round a head agent read a written plan, measured the project, and handed units to up to five runner agents in their own git worktrees. Nothing merged until the whole rebuilt image matched the retail disc's SHA1. Cheaper models did mechanical work, stronger ones matched and named, and the strongest revised the plan between rounds. The human operator supplied the disc and Sony's SDK, set the goal and pasted the round prompt, and “didn't write the C”[3].

“An agent can't talk its way past a SHA1.”

lsddecomp README, “An experiment in AI-driven decompilation”
What the LSD agents wrote down
  • Protect the referee. The build script, not the agent, checked every claimed match, and hooks blocked the shortcuts: editing hash files, editing generated disassembly, running a bare make.
  • Measure, don't transcribe. Numbers written into documents went stale within a round and sent later agents to redo finished work; state lived in tools that measure the tree.
  • Wrong causes cost more than wrong scores. A wrong score is corrected the next time anyone measures; a wrong diagnosis becomes what the next round acts on.
  • The rules grow with the agents. Each round wrote down what the last got wrong, and the rules were distilled again and again.

decomp.dev caught the effect on a single game. At the time of writing, SpongeBob SquarePants: Battle for Bikini Bottom had two entries: the community project at 38% matched (6,420 of 10,147 functions), and a fork labelled “Fork: AI” at 94% (9,999)[25]. The two maps share one layout and can be read box against box.

decomp.dev treemap of the community Battle for Bikini Bottom decompilation, mostly blue and grey with scattered green
bfbbdecomp/bfbbcommunity project38.06%
decomp.dev treemap of the AI fork of the Battle for Bikini Bottom decompilation, mostly green
zcanann/bfbblisted as “Fork: AI”93.88%
file fully matchedpartly matchednot yet matched
One game, two decompilations, as decomp.dev drew them at the time of writing. Matched is not finished: matching says nothing about whether names and structure read like the original source, the other half of the work.Images: decomp.dev/bfbbdecomp/bfbb and decomp.dev/zcanann/bfbb

Halo, from decompilation to everywhere

Halo shows how fast a near-finished decompilation becomes ports. Once a fork of the Halo: Combat Evolved decompilation reached 99.5% byte matching[26], the OpenCE port turned it into native Windows, Linux and Android builds that ask for the player's own disc image, with new netcode for 128 players[27]. Builds for the browser, the PlayStation Vita, the Switch, Anbernic handhelds, iPhone and Vision Pro, a Discord Activity and the original Xbox followed[28].

@mitchellhynes

IT'S HERE!!! HALO CE (XBOX) IN THE BROWSER! Features: ✅ WORKING Splitscreen Co-op ✅ WORKING Multiplayer up to 128 players (untested) ❌ NO GEARBOX MASTER CHIEF

Open on X ↗
A browser build of the decompiled Xbox Halo. The last line refers to Gearbox Software's 2003 PC port.
128 players on Extinction: Halo CE Decompiled — Jonas Volman. 128 players on one map, a scale the original Xbox never supported.
Halo's main menu with Campaign, Multiplayer and Settings, running in a Linux window titled Halo, build 01.01.14.2342
Halo's main menu, native on Linux. The 2342 in the corner is the Xbox build the decompilation targets.Image: OpenCommunityEdition/OpenCE · CC0-1.0

Then a harder target. Halo 2 was compiled with link-time code generation, which inlines across files and invents calling conventions: 42.5% of called functions take arguments in registers Microsoft's standard conventions never use, so a function's bytes depend on its callers and callees. “We know of no earlier project that has matched such a build.” Its commits are co-authored by Claude, and its checker compares every function with the retail bytes on every build, “so a match stays a match”[6].

Not every community wants the help

Speed invites suspicion. Super Mario Galaxy's decompilation, at 100% on decomp.dev, answered accusations of AI acceleration in its README: “We did not.” Its rules allow AI for naming and cleanup, not for decompilation[29]. Melee's guide says using AI to match functions “is acceptable and frequently practiced”, though not for naming fields or matching data[30]. The pret Pokémon projects prohibit LLM-generated contributions, Wind Waker's rejects work that is “primarily AI-generated”, and the N64Recomp projects state that “AI must not be used to generate code for contributions”[31].

§3 · The clipsCross-game mods, pattern by pattern

Cross-game mods share a handful of designs. universal-modder, a skill pack that lets coding agents mod PC games, ships a playbook that sorts “game inside a game” mods into five patterns, tells the agent to “pick the lightest one that delivers the idea”, and warns that “these projects fail by drifting, not by lacking code”[32].

01

Content port

Rebuild one game's enemy, weapon or block as new content in another, using the original's numbers.

Halo 3 weapons in Minecraft

lightest
02

Passthrough

Run both games at once. One simulates the guest, the other draws it into its own frame.

Minecraft in Skyrim; Spider-Man in Gotham

two processes
03

Decomp as a library

Wrap a decompiled game's mechanic behind an API and call it from another engine.

Mario in Garry's Mod and Elden Ring

one process, borrowed code
04

Reimplement, then fuse

Rewrite the engines from the binaries, then run them in one program.

MW2, Skate 3 and Minecraft in Rust

heaviest
05

Headless rules

Rewrite only the guest's rules as a simulation and keep the host as the view.

Bloons TD 6 in Minecraft

numbers games

The first and last patterns rarely draw attention, because the result looks like an ordinary mod. The three in the middle produce almost every clip that does.

Pattern 02

Passthrough: two games, one screen

The best-known example is Minecraft running inside another game. Tobyn Jacobs showed it inside Elden Ring, Minecraft's hotbar, hunger and armour bars on screen[33][34], and the YouTuber chasm built SkyCraft, Minecraft inside Skyrim, summing up the design in one sentence: “you make a mod for both games and you let them communicate with each other”[18].

@TobynJacobs

I put the entire of game minecraft into elden ring as mod. its runs on Mac.

Open on X ↗
Minecraft inside Elden Ring, from Tobyn Jacobs's own build. Minecraft Ring, below, is an open-source take on the same idea.
Modding has Change FOREVER... — chasm. SkyCraft in play: Minecraft movement, blocks, TNT and an elytra in Skyrim, with chasm explaining the design between fights.

SkyCraft's README spells out the division of labour. Neither game is rewritten. A Skyrim plugin built on SKSE and a Minecraft mod built on Fabric talk through shared memory. Minecraft runs hidden and owns the player: movement, inventory, blocks, combat. Skyrim owns the world and does all the drawing. Skyrim's collision is fed into Minecraft's, so Steve walks on Skyrim's terrain, and blocks are drawn under Skyrim's sun, shadows and fog. NPCs path around placed blocks, and Minecraft play levels up Skyrim skills: swords train One-Handed, crouching trains Sneak[35].

A blocky Minecraft player with a Minecraft hotbar walks down a stone path through Skyrim's Riverwood
Riverwood in SkyCraft: Skyrim's renderer, a Minecraft player and Minecraft's HUD. Only data crosses between the two processes; Skyrim does the drawing.Image: chasmlol/SkyCraft · MIT

ArkWeb does the same with two AAA games. Marvel's Spider-Man Remastered runs hidden and supplies the swinging; Batman: Arkham Knight stays on screen. Gotham is scanned in 50-metre tiles and rebuilt as collision in Spider-Man's physics world, two kilometres above New York so that New York's own ledges are out of reach. An invisible Batman follows Spider-Man, whose rendered frame is cut out and drawn in Batman's place; in fights, Arkham's own combat takes over[36]. The README's first section is “Set it up with Claude (no technical knowledge needed)”: the installer is a prompt.

ARKWEB: Batman Arkham Knight passthrough Spider-Man mod — Lukas. ArkWeb: Spider-Man's web swinging through Arkham Knight's Gotham, from the mod's author.
A Minecraft-style player character with Minecraft's hotbar standing in an Elden Ring landscape
Minecraft Ring, an open-source version of Minecraft in Elden Ring: a Direct3D 12 bridge and a Fabric mod, with Elden Ring drawing the combined scene.Image: siddoff/Minecraft-Ring · MIT
@cydonix

Presenting... Escape from Skyrim lol. I put Tarkov into Skyrim. Now with guns and everything you would expect.

Open on X ↗
Escape from Tarkov's guns and inventory in Skyrim.
↻ Loop
Six mods built by agents with universal-modder, among them real Minecraft inside GTA V, depth-composited into GTA's frame.Clip: rehan-remade/universal-modder · MIT
How to tell a passthrough clip
  • The guest floats over the host's interface. A frame pasted on top covers whatever the host draws there. Atrioc spotted a Spider-Man drawn over on-screen text; Kotaku found Minecraft's HUD covering Skyrim's subtitles[18][37].
  • Lighting shows how deep the integration goes. A guest lit by the host's sun and fog is drawn inside the host's render pass, not over it.
  • Multiplayer works on one side only. SkyCraft shares the Minecraft world with up to 100 players, but each keeps a private Skyrim.
Pattern 03

Decomp as a library: Mario everywhere

This pattern has the longest pedigree. In October 2020 libsm64 wrapped the movement and rendering code that the Super Mario 64 decompilation had reversed in a single C header, so that “Mario can be dropped in to existing game engines or other systems with minimal effort”. Collision and controller input go in; Mario's state and mesh come out; textures and animations are read from the user's own ROM[5]. Bindings followed for Rust, Unity, Blender, Godot and five other environments. G64 put Mario in Garry's Mod in 2022[38], and a 2025 mod brought Mario to Halo: Combat Evolved[39].

G64 - Mario 64 in Garry's Mod — ckosmic. G64: libsm64 inside Garry's Mod, the template for later Mario-in-X mods.
↻ Loop
The same decompiled movement code inside Blender's viewport, through the libsm64 add-on.Clip: libsm64/libsm64-blender

Deltaroo's er-mario brings the pattern to Elden Ring. A Rust DLL, loaded by the offline mod loader me3, runs libsm64 on Elden Ring's live Havok collision. The Tarnished stays in the game underneath, invisibly following Mario, “so doors, graces, menus, deaths and saves keep working”. Super Mario 64's rules replace Elden Ring's: a punch takes 25% of an enemy's health, a ground pound 67%, and a staggered boss can be swung the way Mario swings Bowser. The known issues are candid: “Cutscenes show a crumpled Mario with the Tarnished's head”[40].

Pattern 04

Reimplement, then fuse

The most ambitious mashups come from the heaviest pattern, and the best-documented rests on two rewrites. IW4L is a Modern Warfare 2 runtime in Rust that reads maps, models and weapons from the user's own installation. Its README says, in one line, “This whole project is written by an LLM”[41]. The Skate 3 Rust Engine rebuilds Skate 3's skating from a reverse-engineering effort that took more than two years[42].

@codthugger

First MW2 x Skate trickshot

Open on X ↗
Skate 3 inside Modern Warfare 2: the Call of Duty trickshot genre, on a skateboard.

chasm fused the two, plus a Rust Minecraft, into one program, the 2010 Rust Rewrite Mashup. Press J on any map and the soldier drops onto a board. Skate 3's skeleton is retargeted onto the soldier, and grind rails are generated from every walkable edge of the map's collision. On the Minecraft map, whose files the game downloads from Mojang's servers, blocks take more bullets the harder they are, scaled by each gun's MW2 damage[43][44]. chasm's summary: “we extract all the assets out of the actual game, and then all the logic that kind of ties it together is … reverse engineered and rewritten … We're not modding at this point”[18]. Even the bugs came along: “all the Skate 3 … glitches just work out the box.”

A soldier planting a bomb in a Modern Warfare 2 map, rendered by IW4L
A bomb plant in IW4L. A Rust engine draws every frame; MW2 supplies only data from the player's installation.Image: vladtrc/iw4L · Apache-2.0
An explosion on a tanker deck in a Modern Warfare 2 map, rendered by IW4L
The Tanker map in IW4L: FastFile readers, a shader translator and an ECS simulation shared by server, client and replay.Image: vladtrc/iw4L · Apache-2.0
@tvllerr

Minecraft x Skate 3 x MW2

Open on X ↗
Minecraft, Skate 3 and Modern Warfare 2 in one game.
Is this the Future of Gaming? — chasm. chasm survives a Minecraft night inside the mashup and explains what AI did, and what it cannot do.

The rewrites are forked like libraries: Mirror's Edge Catalyst's parkour in IW4L[45], the Skate 3 engine in San Andreas[46], Black Ops II's zombie rounds in the Minecraft map, IW4L on iPhones[47].

The critique

Not everyone is charmed. Kotaku's Amelia Zollner wrote that SkyCraft, even bug-free, “would still just feel like a sandbox meant to generate viral Twitter clips”, and of the genre: “None of these mechanics actually synergize with each other in a way that means anything!”[37] chasm agrees about the limit: “AI can't play a game the way a human can”[18]. The streamer Atrioc, after calling programmers to understand how these mods work, put the idea this article unpacks in one sentence: “Every game is becoming every game.”

Everything Is Everything Now — Big A (Atrioc). Atrioc separates passthrough, “a trick of the light”, from decompilation, and ends on §6's question: if any program that runs on a PC can be rewritten, what is software worth?

§4 · The recipeHow a mechanic is lifted out of a game

Atrioc relayed a game developer's complaint that “almost every game reinvents almost every wheel every time”[18]. Mario's triple jump, Skate 3's board control, Spider-Man's swing and Faith's wall run each took a studio years to tune, sealed inside one executable. Cross-game mods treat them as modules, and their READMEs follow the same six steps.

An orange crab in a Skate 3 cap riding a skateboard
The Skate 3 Rust Engine's own README image. Its README also carries the most important footnote in this field: the rewrite stands on more than two years of human reverse engineering by dumbad, and “describing the project as simply ‘AI rewriting Skate 3’ leaves out the work that made it possible in the first place.”Image: SK8-ENGINE/skate-3-rust-engine · GPL-3.0
  1. Draw a boundary around the mechanic. libsm64's whole interface is one header: collision and input in, Mario's state and mesh out[5]. GTA San AnSkateas compiles the Skate 3 engine into a 32-bit DLL with a C API, so a plugin inside a 2005 game can call a Rust engine written two decades later[46]. The boundary is the contract; the other steps serve it.
  2. Feed it the host's world. A movement system is only as good as what it collides with. er-mario hands libsm64 Elden Ring's live Havok collision[40], ArkWeb streams Gotham's PhysX statics in tiles[36], and SkyCraft feeds Skyrim's collision into Minecraft's[35]. Where the host lacks a concept, the mod derives one: MW2 has no rails, so the mashup turns walkable collision edges into rails[44].
  3. Keep the host alive under a puppet. Quests, doors and saves expect the host's own player. er-mario keeps an invisible Tarnished following Mario; ArkWeb walks a hidden Batman wherever Spider-Man goes. When the host must take over, control goes back: SkyCraft yields to Skyrim for chairs, horses and scripted scenes, ArkWeb to Arkham Knight for every fight.
  4. Translate units and axes. Engines rarely agree on which way is up. ArkWeb converts Unreal Engine 3's Z-up centimetres into Spider-Man's Y-up metres; universal-modder's GTA bridge maps one metre to one block, GTA's (x, y, z) to Minecraft's (x, z + offset, −y), and yaw to 180° minus heading[32]. Errors show up as a character walking on air.
  5. Retarget the body. Skate 3's skater bones are mapped onto the MW2 soldier's skeleton; Faith's animations are decoded from Catalyst's data and retargeted onto the MW2 body[45]. Spider-Man's joint hierarchy “isn't stored anywhere the mod could find, so it was worked out from recorded motion.”
  6. Prove it with an oracle. Mirrorwarfare drives generated routes with an autopilot and checks that repeated runs are tick-identical, and each tuning value records where it came from. universal-modder's account of the mashup describes a scriptable runtime as oracle and an evidence journal, under one rule: “Knowledge that is not in an artifact does not exist.”
ProjectMechanic → hostBoundaryWorld feedHost kept alive byProof
er-mariopattern 03Super Mario 64's Mario → Elden Ringlibsm64's C API, inside a Rust DLL loaded by me3Live Havok collisionAn invisible Tarnished that follows MarioNo harness documented; bug reports carry session logs
ArkWebpattern 02Spider-Man Remastered's traversal → Arkham KnightShared memory with seqlock state slots, two injected DLLsGotham's PhysX statics in 50 m tiles, rebuilt 2 km above New YorkA hidden Batman puppet; fights handed back to ArkhamOffline fakes of either game; pose transfer replayed in Python
SkyCraftpattern 02Minecraft's player, blocks and combat → SkyrimAn SKSE plugin and a Fabric mod over a shared-memory protocolSkyrim's collision fed into Minecraft'sSkyrim keeps its world, NPCs, quests and savesStand-ins for both sides (fake_skyrim.py, fake_guest.py)
2010 Rust Rewrite Mashuppattern 04Skate 3's skating → IW4L's MW2A skate simulation running as a worker in one Rust programMW2 collision; rails derived from walkable edgesThe soldier hands control to the skater and backA scriptable runtime as oracle; an evidence journal
Mirrorwarfarepattern 04Mirror's Edge Catalyst's parkour → IW4L's MW2One movement crate, movement_mec, selected by a settingPurpose-built arenas, or arenas cut from Catalyst's cityMW2's weapons, classes and bots, with per-move weapon rulesA deterministic autopilot; tick-identical repeat runs

“…most of it was built before the host game was even installed.”

universal-modder, on its Minecraft-in-GTA V example, built against a fake host and a fake Direct3D 11 “GTA” that runs the real compositor[32]

Step 6 lets the other five be done blind. A fake host with known geometry tells an agent whether the coordinate mapping is right before the real game is on the disk, the way a byte-exact build tells a decompiler whether its C is right. Four of the five projects in the table describe such a referee.

The seams, from the projects' own known-issues lists
  • Guns in the wrong hands. Putting GTA's guns in Steve's hands failed: “the aim cam and animations don't fit.” Minecraft's weapons with GTA's explosions worked.
  • Cutscenes. In er-mario they show “a crumpled Mario with the Tarnished's head.”
  • Stuck in a wall. ArkWeb's README advises: “Spider-Man stuck inside a building? Just tell your AI agent to teleport you 200 m into the air.”

§5 · Try itField manual: five workflows

Five workflows, in rising order of commitment, with steps as the projects themselves document them. All five follow the three rules these projects converge on: use your own copy, play offline, and publish code and converters, never game files or decompiled output.

Workflow 1 · Watch a game compile

Rebuild Pokémon Emerald from its decompilation

  • Time30–60 min
  • Difficulty1 of 4
  • NeedsLinux, WSL or macOS; git; no ROM

pret's pokeemerald is a C decompilation of a 2004 Game Boy Advance game, and it builds without a ROM: the repository carries everything the build needs[48].

  1. Install the toolchain (Debian, Ubuntu and WSL shown; INSTALL.md covers macOS, Arch, NixOS and others):
    sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
  2. Clone the game and agbcc, the project's reconstruction of the compiler the original was built with, and install it:
    git clone https://github.com/pret/pokeemerald
    git clone https://github.com/pret/agbcc
    cd agbcc && ./build.sh
    ./install.sh ../pokeemerald
    cd ../pokeemerald
  3. Build, then check the result against the retail game's hash:
    make
    make compare
  4. Change something visible, such as a line of dialogue under data/, run make again, and load pokeemerald.gba in an emulator.

Done whenmake compare ends with pokeemerald.gba: OK. The cartridge image now comes out of a build of readable source.

  • Trap After any edit, make compare prints FAILED. That is the check working; modified builds are plain make.
  • Trap make modern uses devkitARM's modern GCC instead of agbcc, so its bytes will never match the original.
  • Trap If agbcc or the game fails to build, INSTALL.md says to delete the agbcc folder and reinstall it from scratch.

Prefer the Nintendo 64? The Super Mario 64 decompilation needs a ROM of your own named baserom.us.z64; make builds it and finishes with sm64.us: OK when the result matches[11].

Workflow 2 · Close the gap

Match your first function

  • TimeAn evening
  • Difficulty2 of 4
  • NeedsA browser; for a project, Python, ninja and objdiff

Make one function's compiled output identical to the original: the unit of work in every project in §1 and §2.

  1. On decomp.me, open an existing scratch for a game you like, or create one: pick the platform and compiler preset, and paste the target assembly of a single function. splat or decomp-toolkit extract it from a game[49].
  2. Let m2c write a first draft, and put the structs and prototypes it needs in the Context box.
  3. Edit the C and watch the score. “Lower scores indicate closer matches”, and a score of 0 is shown as 100%.
  4. Then join a real project. Star Fox Adventures' README tells beginners to pick any 10–99% unit on its decomp.dev page and edit until the score rises[50]. With your own disc image in place, build with python configure.py and ninja, and keep objdiff open: it rebuilds on save and shows the diff live[51].

Done whenThe scratch reads 0 (100%), or your unit turns green on decomp.dev after the pull request lands.

  • Trap The last few percent are usually register allocation or instruction order, as in the objdiff screenshot in §1. Reorder statements, narrow a variable's scope, or let decomp-permuter search.
  • Trap decomp.me asks visitors not to “scrape the site, hook up an LLM, or otherwise make repeated, automated, requests”. Run agents against a local checkout.
  • Trap Read the project's AI policy first: it ranges from welcome (Melee) to forbidden (pret, Super Mario Galaxy).
Workflow 3 · Read a PC game

Open a game you own in Ghidra, then give an agent the keys

  • Time1–2 hours
  • Difficulty2 of 4
  • NeedsGhidra and the JDK it names; optional Python 3 and an MCP-capable agent

Find the function behind one thing you can see on screen, and learn to read a decompiler's output.

  1. Install the 64-bit JDK version that Ghidra's README specifies, unzip Ghidra and start it with ./ghidraRun (ghidraRun.bat on Windows)[52].
  2. File → New Project, then File → Import File… with a copy of the game's executable. Open it in the CodeBrowser and accept auto-analysis.
  3. Search the defined strings for text from the game's interface, follow its cross-reference to the code that uses it, and read that function in the Decompiler window. Rename variables as their purpose becomes clear; names are how understanding accumulates.
  4. To bring in an agent, install GhidraMCP: File → Install Extensions, add the release zip, restart, and enable GhidraMCPPlugin under File → Configure → Developer. Then point the agent's MCP client at the bridge[53]:
    python bridge_mcp_ghidra.py --ghidra-server http://127.0.0.1:8080/
    Ask it to name and explain the functions around the one you found.

Done whenYou can point at the function that implements one thing you see in the game, and explain its inputs and outputs.

  • Trap Many PC games are C# on Unity or .NET, where a .NET decompiler such as ILSpy reads far better than Ghidra[54].
  • Trap An agent's names are hypotheses. Confirm them by behaviour, with a breakpoint or a test, before building on them.
  • Trap Never attach tools to an online game with anti-cheat. Every project in this article runs offline.
Workflow 4 · Borrow a mechanic

Put a decompiled Mario into another program

  • Time30 min
  • Difficulty1 of 4
  • NeedsYour own Super Mario 64 US ROM; Blender on Windows or Linux, or a C toolchain

Run pattern 03 from §3 yourself: Super Mario 64's decompiled movement code, as a library, inside a program that has nothing to do with Nintendo.

  1. In Blender: download the libsm64-blender release zip, install it under Edit → Preferences → Add-ons, and enable it. The add-on is old, and newer Blender releases may refuse it; step 3 needs no Blender at all[55].
  2. In the add-on's LibSM64 sidebar tab, browse to an unmodified US ROM (SHA-1 9bef1128717f958171a4afac3ed78ee2bb4e86ce), click Insert Mario, and run Mario over your own geometry with a controller or the keyboard. Build a ramp and a wall, and try a wall kick.
  3. Without Blender: build libsm64's own test program, which needs SDL2 and GLEW and the ROM saved as baserom.us.z64 in the repository's root[5]:
    git clone https://github.com/libsm64/libsm64
    cd libsm64
    make run

Done whenMario moves with Super Mario 64's exact physics on terrain that never existed in the game.

  • Trap A different ROM revision is a different binary. libsm64 expects the US version, and the Blender add-on names the exact SHA-1 it needs.
  • Trap The library is only the contract. Collision feeds, a puppet and unit conversion are the recipe in §4.
Workflow 5 · Bring a referee

Let an agent mod a game, with an oracle

  • TimeAn afternoon
  • Difficulty3 of 4
  • NeedsA coding agent, git, Python 3.10+, ffmpeg; a single-player PC game you own

Ship one small, verified change to a real game with an agent doing the typing.

  1. Install universal-modder. In Claude Code (the README covers Codex, Gemini CLI, Cursor, Copilot and others)[54]:
    /plugin marketplace add rehan-remade/universal-modder
    /plugin install universal-modder@universal-modder
  2. Reconnoitre first: um scan fingerprints installed games (engine, anti-cheat, loaders, save folders), and um kb search "<game>" pulls field notes earlier agents wrote.
  3. Back up the saves with um backup, then ask for one small slice: one item, one enemy, one rule.
  4. Insist on the oracle before the feature: a headless test, a scripted scene, or a log line that can only appear if the change works.
  5. Before sharing anything, run um publish check, which blocks game files, decompiled code and leaked keys.

Done whenThe change shows in the real game and the oracle passes on a fresh run.

  • Trap Agents game the referee, as Snowboard Kids 2's edited SHA1 showed. Make the oracle something the agent cannot edit.
  • Trap Drift. “These projects fail by drifting, not by lacking code.” Keep state in files and measurements, not in the chat.
  • Trap Credit. Someone probably spent years documenting the mechanic being ported; say so, as the Skate 3 engine does.
Rules of the road

The projects in this article keep game data out of their repositories and ask for the player's own copy: a disc image for Halo, a ROM for er-mario. That is the practical line between reading a game you own and distributing someone else's work. The legal lines are narrower. United States law has a limited exemption for reverse engineering to achieve interoperability, and the EU's software directive permits decompilation only where it is indispensable for interoperability[56][57]. Neither covers publishing a decompiled game, and none of this is legal advice.

§6 · The economicsOpen by default

Shipping a program has always meant shipping its logic. Copyright protected the text of the code and the art; what protected the ideas and the implementation was cost. Reading a large binary back into working source took a volunteer community years, and that delay worked as an informal secrecy layer for everything that runs on a customer's machine: games, image editors, tax software, trading clients. Coding agents thin that layer. In 1883 Auguste Kerckhoffs argued that a cipher must stay secure when everything about it except the key is public[58]; software businesses now sit the same exam.

The public record holds both routes to a substitute. The first starts from the binary. GitHub's takedown archive includes the maker of Axiom, a paid Minecraft building tool, describing “an AI-generated clone of Axiom, incorporating stolen code and assets created by decompiling the original copyrighted work and instructing an LLM to replicate” it, and the maker of a subscription trading app reporting a repository that decompiled its binary with Ghidra and stood up a mock licence server[59]. The second route never opens the binary. Photon Studio, a free image editor with layers, masks and native PSD files, was built by one developer for about $2,000 of model tokens, starting from “an extensive exploration of all Photoshop functionalities”[60]. It is often described as a decompiled Photoshop; it is a reimplementation. The legal difference is large: copyright covers expression, not function, and US courts have held that disassembly to reach a program's unprotected functional elements can be fair use[61][62]. The economic difference is small. Either way, the cost of a working substitute is falling toward the price of tokens.

David Teece's 1986 account of who profits from innovation predicts where the value goes. When imitation is easy, profits accrue to whoever owns the complementary assets the imitator lacks, such as manufacturing, marketing and service[63]. Cross-game mods show what those are for games: nearly all of them ask for the player's own copy, because the code became copyable while the art, music, characters and trademarks stayed excludable. Servers, live operations, community and hardware are the others; for productivity software, data, integrations, compliance and support. The familiar worry about agents is that they replace software's users. Cheap decompilation adds a second: that they replace the product.

The pressure lands first where owners sell nothing. The Video Game History Foundation estimates that 87% of classic games released in the United States are out of print[64], and most decompilations and recompilations serve that dead stock, tied to legitimate copies by the bring-your-own-data rule. Some owners have chosen openness on their own terms: Mojang stopped obfuscating Minecraft: Java Edition to make mods easier to create, update and debug[65].

Blockchain-native software has run open by default from the start: contract bytecode is public, major contracts publish verified source, and every node re-executes the code. When SushiSwap forked Uniswap in 2020 it needed no stolen code. What it paid for, in token rewards, was Uniswap's liquidity, and over $800 million moved[66]. Uniswap's answer for its next version was a time limit rather than secrecy: a Business Source License allowing only non-production use until April 2023, then GPL[67]. The code was a commons; the moats were liquidity, community, brand and lead time.

Production changes shape too. If mechanics become modules, studios stop rebuilding the same wheels and compete on what agents do worst: feel, taste and design, or in chasm's words, “AI can't play a game the way a human can”. Verification becomes a job of its own. And one input has no market at all: the human research agents consume. The Skate 3 engine rests on more than two years of one person's reverse engineering; the projects that credited such work did so voluntarily.

Questions for discussion
  • Kenneth Arrow argued in 1962 that markets underinvest in information because it is hard to appropriate[68]. If imitating software costs little more than tokens, does private investment fall, or does a larger commons raise total value? Hoffmann, Nagle and Zhou put the demand-side value of widely used open-source software at $8.8 trillion, against $4.15 billion to recreate it once[69].
  • Does lead time replace secrecy as the main protection, and what does that do to release cycles and pricing?
  • Will publishers license mechanics the way they license engines and characters, or will movement systems become a commons?
  • How much logic moves to servers once anything on the client can be rewritten, and what does that cost in latency, privacy and ownership? The trading-app notice shows a server check is not enough while the logic still runs on the client.
  • How should credit and payment reach the people whose reverse engineering the agents build on?

Software was never secret. It was expensive to read, and the price of reading is falling.

References

Repositories are cited by commit, as read on October 7, 2026. Web pages, posts and videos that cannot be pinned carry the date they were read.

  1. K. Orland, “Beyond emulation: The massive effort to reverse-engineer N64 source code,” Ars Technica, May 6, 2020 — arstechnica.com/gaming/2020/05/beyond-emulation-…: the two-year Super Mario 64 effort begun by speedrunners, finding the IDO compiler version, and the PC port released that week.
  2. K. Orland, “Ocarina of Time has been fully decompiled into human-readable code,” Ars Technica, November 29, 2021 — arstechnica.com/gaming/2021/11/reverse-engineering-team-completes-…: “at least 21 months of work”, “more than 15,000 functions”, dozens of contributors.
  3. brian-oblivion, lsddecomp: a matching decompilation of LSD: Dream Emulator (SLPS-01556) — brian-oblivion/lsddecomp@95f67e0 · README.md. “Progress” (all 1,446 game functions in C, byte-identical image) and “An experiment in AI-driven decompilation” (2026-08-28 to 2026-09-29, 106 rounds, about 6,800 commits, head and runner agents, whole-image SHA1 check, hooks, lessons). The process record is on the repository's archive/process branch.
  4. ZeldaRET, Ocarina of Time decompilation FAQ — zeldaret/website@f5156a5 · src/assets/md/oot_faq.md: matching decompilation “compiles to be byte-for-byte identical to the original ROM.”
  5. libsm64: Super Mario 64 as a library (created 2020-10-08, CC0-1.0) — libsm64/libsm64@fd11813 · README.md: purpose, ROM loaded at run time, bindings and plugins, make run test program.
  6. kirklandsig et al., Halo 2 decompilation (original Xbox, retail default.xbe), CC0-1.0 — kirklandsig/halo2-decompiled@9feed5f · README.md: “The target” (Visual C++ 7.1, /GL, /LTCG), “The approach” (42.5% of called functions take arguments in eax, ebx, esi or edi; “We know of no earlier project that has matched such a build”) and “Status” (“so a match stays a match”). Commit trailers credit Claude as co-author.
  7. C. Cifuentes, Reverse Compilation Techniques, PhD thesis, Queensland University of Technology, July 1994 — eprints.qut.edu.au/36820/; the dcc decompiler (DOS .exe to C, GPL): web.archive.org · itee.uq.edu.au/~cristina/dcc.html.
  8. I. Guilfanov, “Hex-Rays beta testing is open,” May 11, 2007 — hex-rays.com/blog/hex-rays-beta-testing-is-open; public introduction: SensePost, “Introducing Hex-Rays…,” September 13, 2007 — sensepost.com/blog/2007/introducing-hex-rays/.
  9. NSA's Ghidra, unveiled at RSA Conference on March 5, 2019 under Apache-2.0: The Register, March 6, 2019 — www.theregister.com/2019/03/06/nsa_ghidra_joyce/; repository: github.com/NationalSecurityAgency/ghidra.
  10. Tools, each by repository: splat (binary splitting); m2c (machine code to C, formerly mips_to_c); asm-differ; objdiff; decomp-permuter (“Randomly permute C files to better match a target binary”); decomp.me (repository history from June 2021).
  11. n64decomp, Super Mario 64 decompilation — n64decomp/sm64@9921382 · README.md and Makefile (baserom.us.z64; sha1sum -c prints sm64.us: OK). Source posted July 2019: Gaming Reinvented, July 15, 2019 — gamingreinvented.com/news/super-mario-64-has-been-completely-decompiled-….
  12. doldecomp/melee: repository created 2020-06-30; code fully matched with doldecomp/melee#3409, merged 2026-09-07 (decomp.dev history: first 100% entry at that commit).
  13. zeldaret/tp: repository created 2020-08-29; decomp.dev history decomp.dev/zeldaret/tp shows code first fully matched on 2025-12-21 (“d_a_vrbox2 matching (#2981)”); README at zeldaret/tp@c8fa8c9.
  14. A. Robinson, “A full Zelda: Ocarina of Time PC port is now complete and available online,” Video Games Chronicle, March 22, 2022 — www.videogameschronicle.com/news/zelda-ocarina-of-time-pc-port/; Ship of Harkinian requires the player's own ROM.
  15. N64Recomp — N64Recomp/N64Recomp@ffb39cd · README.md: static recompilation of N64 code into C (first commit 2022-11-16), output such as ctx->r4 = ADD32(ctx->r4, 0X20);, linked against a runtime such as N64ModernRuntime.
  16. Zelda 64: Recompiled, v1.0.0, May 10, 2024 — github.com/Zelda64Recomp/Zelda64Recomp/releases/tag/v1.0.0.
  17. hedge-dev, XenonRecomp (Xbox 360 executables to C++) — hedge-dev/XenonRecomp@ddd128b; Unleashed Recompiled v1.0.0, March 1, 2025 — github.com/hedge-dev/UnleashedRecomp/releases/tag/v1.0.0.
  18. Videos embedded in this article; quotations are from the videos' captions: chasm, “Modding has Change FOREVER...”, Sept 30, 2026; chasm, “Is this the Future of Gaming?”, Sept 28, 2026; Big A (Atrioc), “Everything Is Everything Now”, Oct 6, 2026; Modern Vintage Gamer, “Recomps and Decomps have taken over Retro Gaming...”, Sept 28, 2026; Lukas, ArkWeb, Oct 2, 2026; ckosmic, G64, May 30, 2022; Jonas Volman, Sept 29, 2026; Kaze Emanuar, Apr 9, 2022; MattKC, Oct 14, 2022; LookOnThisGit, Oct 2, 2026.
  19. decomp.dev, the decompilation progress tracker by encounter — decomp.dev/projects and the per-project .json and .png?mode=report endpoints, read 2026-10-07. Treemap layout and colours: encounter/decomp.dev@e9c086a · crates/web/src/handlers/report.rs (box area = a unit's total code) and crates/images/src/treemap.rs (unit_color: green at 100% fuzzy match, otherwise grey blended toward blue).
  20. H. Tan, Q. Luo, J. Li, Y. Zhang, “LLM4Decompile: Decompiling Binary Code with Large Language Models,” EMNLP 2024, pp. 3473–3487 — aclanthology.org/2024.emnlp-main.203/: re-executability more than double that of GPT-4o and Ghidra; code at albertan017/LLM4Decompile@85b364b.
  21. LaurieWired, GhidraMCP (created 2025-03-23, v1.0 on 2025-03-25) — LaurieWired/GhidraMCP@27f316f; mrexodia, IDA Pro MCP (created 2025-03-25) — mrexodia/ida-pro-mcp@c133c38.
  22. C. Lewis, “The Unexpected Effectiveness of One-Shot Decompilation with Claude,” November 27, 2025 — blog.chrislewis.au/the-unexpected-effectiveness-of-one-shot-…: the scorer, Claude, tools and driver; “three weeks” versus “three months”; mostly Opus 4.5.
  23. C. Lewis, “The Long Tail of LLM-Assisted Decompilation,” February 16, 2026 — blog.chrislewis.au/the-long-tail-of-llm-assisted-decompilation/: 25% to 58% to about 75%; functions over 1,000 instructions; 87 attempts; the 20x Max plan; the edited SHA1 hash and the reverted work; hooks.
  24. C. Lewis, “Snowboard Kids 2 is 100% Decompiled,” May 17, 2026 — blog.chrislewis.au/snowboard-kids-2-is-100-decompiled/; repository cdlewis/snowboardkids2-decomp@3b1bd5d (3,013 of 3,013 functions on decomp.dev).
  25. decomp.dev entries bfbbdecomp/bfbb (38.06%, 6,420 of 10,147 functions; last commit 8fb1c23, 2026-08-29) and zcanann/bfbb (“Battle for Bikini Bottom (Fork: AI)”, 93.88%, 9,999 of 10,147; 4be7993), read 2026-10-07.
  26. punpckhdq, Halo 1 decompilation (build 2342, cachebeta.exe), public since 2025-05-13 — punpckhdq/halo@bc4507c · README.md; decomp.dev decomp.dev/punpckhdq/halo. Fork: bnunu/halo-1@b43c701 · README.md, created 2026-07-26: “work-in-progress (99.5% byte matching)”.
  27. OpenCommunityEdition, OpenCE: Halo: Combat Evolved (Xbox build 2342) for Windows, Linux and Android, created 2026-09-26, CC0-1.0 — OpenCommunityEdition/OpenCE@76b1898 · README.md: lineage (bnunu/halo-1, a fork of punpckhdq/halo), player-supplied disc image, system link for up to 128 players on 128 machines, new netcode. Screenshot from the same README.
  28. Ports built on the Halo CE decompilation, each by repository: browser; PlayStation Vita; Switch; Anbernic RG35XX; iPhone, iPad, Apple TV, Vision Pro, Mac; iPhone, iPad, Mac; Discord Activity; original Xbox.
  29. SMGCommunity, Petari (Super Mario Galaxy decompilation) — SMGCommunity/Petari@4e3e2f0 · README.md, “Regarding AI usage”; decomp.dev decomp.dev/SMGCommunity/Petari (100%).
  30. doldecomp/melee, contributing guide — doldecomp/melee@4eb34e8 · .github/CONTRIBUTING.md: using AI to match functions “is acceptable and frequently practiced”, but not for naming struct fields or globals, or matching data.
  31. Contribution policies: pret/pokeheartgold@9d8b759 · CONTRIBUTING.md and pret/pokediamond@5bc4b1a · CONTRIBUTING.md (LLM-generated contributions prohibited); zeldaret/tww@3212966 · CONTRIBUTING.md (“primarily AI-generated”); Zelda64Recomp/Zelda64Recomp@b65c482 · CONTRIBUTING.md (“AI must not be used to generate code for contributions”, shared with N64Recomp, N64ModernRuntime, RT64 and BanjoRecomp).
  32. universal-modder, skills/mashup-mods/SKILL.md — rehan-remade/universal-modder@6c02e77 · skills/mashup-mods/SKILL.md: the five patterns, “pick the lightest one”, “fail by drifting”, the GTA V coordinate mapping, “Built without the game”, “What didn't work”, and the account of the 2010 Rust Rewrite Mashup (scriptable runtime as oracle, evidence journal).
  33. “Modder recreates all of Minecraft inside Elden Ring with 1,600 items and working redstone,” Dexerto — dexerto.com/minecraft/modder-recreates-all-of-minecraft-inside-elden-ring-…, read 2026-10-07: the post of September 29, the HUD, Jacobs's paper art, and the unreleased build.
  34. Posts on X shown in this article, read on 2026-10-07 through X's public embed endpoints (text from publish.twitter.com oEmbed; dates and video stills from the syndication endpoint): @tvllerr, Sept 28; @codthugger, Sept 29; @TobynJacobs, Sept 29; @mitchellhynes, Sept 29; @cydonix, Sept 30.
  35. chasmlol, SkyCraft: Minecraft inside Skyrim (SKSE plugin and Fabric mod), created 2026-09-30, MIT — chasmlol/SkyCraft@bfcaf17 · README.md: “What works”, “Playing with friends” (up to 100 players, Minecraft side only), “Known limitations”, and the stand-ins fake_skyrim.py and fake_guest.py. Screenshot: docs/screenshot.jpg.
  36. luki-1, ArkWeb: Spider-Man Remastered's traversal in Batman: Arkham Knight, created 2026-10-02 — luki-1/ArkWeb@17ec697 · README.md: “Set it up with Claude”, “How it works” (shared memory Local\ArkWeb_v1, 50 m tiles, collision about 2 km above New York, the hidden Batman, UE3 Z-up centimetres to Y-up metres), “Combat”, and the teleport advice.
  37. A. Zollner, “I Don't Want To Play Your AI-Generated Mod That Puts Skate 3 Inside Of Modern Warfare 2 Inside Of Minecraft,” Kotaku, October 2, 2026 — kotaku.com/i-dont-want-to-play-your-ai-generated-mod-…-2000738660.
  38. ckosmic, G64: libsm64 in Garry's Mod (v0.0.1, May 30, 2022) — ckosmic/g64@6de9c9e · README.md.
  39. KodyJKing, smc64: “LibSM64 mod for Halo CE (Steam MCC)”, created 2025-07-03 — KodyJKing/smc64@7595ea1.
  40. deltarooo, ER Mario: Super Mario 64's Mario in Elden Ring (libsm64 and me3), created 2026-09-30, MIT — deltarooo/er-mario@5404d34 · README.md: damage rules, offline-only play, known issues and “How it works”.
  41. vladtrc et al., IW4L: an open-source runtime for Call of Duty: Modern Warfare 2 (2009) in Rust and Bevy, public since 2026-09-13, Apache-2.0 — vladtrc/iw4L@ea45cf7 · README.md: “Inside the engine” table (FastFile readers, D3D9 Shader Model 3 bytecode translated to WGSL), “This whole project is written by an LLM,” and acknowledgements (OpenAssetTools, IW4x, KisakCOD, Ghidra). Screenshots: docs/screenshots/.
  42. SK8-ENGINE, Skate 3 Rust Engine, created 2026-09-08, GPL-3.0 — SK8-ENGINE/skate-3-rust-engine@af56404 · README.md: “History” (more than two years of reverse engineering by dumbad) and “AI usage”. Image: docs/images/skating-crab.png.
  43. chasmlol, 2010 Rust Rewrite Mashup: MW2, Skate 3 and Minecraft in one Rust game, created 2026-09-27, Apache-2.0 — chasmlol/2010-rust-rewrite-mashup@f608f85 · README.md: Skate 3 mode, the Minecraft 26.3 world downloaded from Mojang's servers, block damage scaled by MW2 weapon damage and range.
  44. “The Skate and Minecraft Modern Warfare 2 Videos Are Real. It Is Not a Mod, and You Can Download It.,” Held Games — heldgames.com/guides/mw2-skate-minecraft-rust-rewrite, read 2026-10-07: the rig layer mapping Skate 3's bones onto the MW2 soldier and the rail generation from collision edges.
  45. r614, Mirrorwarfare: Mirror's Edge Catalyst movement in a fork of IW4L, created 2026-10-04, Apache-2.0 — r614/mirrorwarfare@10d3697 · README.md: tuning values decoded from Faith's animation state graph, animation retargeting, the deterministic autopilot and test harness.
  46. ryglizzy, GTA San AnSkateas: Skate 3 skating in GTA: San Andreas — ryglizzy/GTA-San-AnSkateas@fde499b · README.md: skate-ffi (a 32-bit Rust DLL wrapping the Skate engine in a C API) and sa-plugin (a C++ ASI plugin).
  47. Further forks: DaffyDabz/bo2-minecraft-zombies (Black Ops II zombie rounds in the Minecraft map); chrisjenkynw/iw4l-ios and MarkusSela/IW4-Pocket (IW4L on iOS).
  48. pret, pokeemerald — pret/pokeemerald@731ad5b · INSTALL.md: prerequisites, agbcc (pret/agbcc@da598c1), make, make compare (pokeemerald.gba: OK or FAILED), make modern, and the advice to rebuild agbcc from scratch after errors. No ROM is required.
  49. decomp.me FAQ — decompme/decomp.me@40c2a5d · frontend/src/app/(navfooter)/faq/page.tsx (new scratches, target assembly, context, scoring: “Lower scores indicate closer matches”), and the request not to “scrape the site, hook up an LLM, or otherwise make repeated, automated, requests”, added in decompme/decomp.me#2070 (merged 2026-08-11).
  50. zcanann, Star Fox Adventures decompilation — zcanann/SFA-Decomp@9b4063e · README.md: “Beginners Contribution Guide” (pick a 10–99% unit on decomp.dev), python configure.py, ninja, and objdiff's automatic rebuilds.
  51. encounter, objdiff — encounter/objdiff@eed74b9 · README.md: automatic rebuild on source changes, objdiff.json project configuration. Screenshot: assets/screen-diff.png.
  52. Ghidra 12.1.4 README (2026-09-21): “Install JDK 21 64-bit”, ghidraRun — NationalSecurityAgency/ghidra@Ghidra_12.1.4_build · README.md; the beginner course for projects, import and auto-analysis: GhidraDocs/GhidraClass/Beginner/Introduction_to_Ghidra_Student_Guide.html.
  53. GhidraMCP installation and MCP client configuration — LaurieWired/GhidraMCP@27f316f · README.md.
  54. rehan-remade et al., universal-modder: skills, tools and a knowledge base for coding agents that mod PC games, created 2026-09-30, MIT — rehan-remade/universal-modder@6c02e77 · README.md: install table, the ten-step loop, um scan, um kb, um backup, um publish check, “Rules it follows”, the Minecraft-in-GTA V example and the teaser clip (docs/media/mods-teaser.gif, re-encoded here as video).
  55. libsm64-blender — libsm64/libsm64-blender@03dcdd9 · README.md: Windows and Linux only, installation from the release zip (latest 1.0.6, April 15, 2022), the LibSM64 sidebar tab, the required ROM SHA-1.
  56. 17 U.S.C. § 1201(f), reverse engineering for interoperability — law.cornell.edu/uscode/text/17/1201.
  57. Directive 2009/24/EC on the legal protection of computer programs, Article 6 (decompilation) — eur-lex.europa.eu/eli/dir/2009/24/oj.
  58. A. Kerckhoffs, “La cryptographie militaire,” Journal des sciences militaires IX, 5–38 and 161–191, 1883 — petitcolas.net/kerckhoffs.
  59. GitHub's public DMCA notices, September 2026 — github/dmca@d97814f · 2026/09/2026-09-22-axiom.md and 2026/09/2026-09-09-tradecopia-desktop.md. Allegations by the notice senders. A search of all 270 notices published from 2026-09-01 to 2026-10-07 found none naming the Halo decompilations or the mashup projects in this article; the Nintendo notices in that window target Switch-emulator repositories on anti-circumvention grounds.
  60. R. Edison, “$2,000 Built a Free Photoshop Alternative. 170 Downloaded It Day One.,” Gadget Review, via Yahoo Tech, September 16, 2026 — tech.yahoo.com/computing/articles/2-000-built-free-photoshop-181651530.html; project page tenzen.studio/photon/.
  61. Sega Enterprises Ltd. v. Accolade, Inc., 977 F.2d 1510 (9th Cir. 1992); U.S. Copyright Office fair-use summary — copyright.gov/fair-use/summaries/segaenters-accolade-9thcir1992.pdf.
  62. Sony Computer Entertainment, Inc. v. Connectix Corp., 203 F.3d 596 (9th Cir. 2000); U.S. Copyright Office fair-use summary — copyright.gov/fair-use/summaries/sony-connectix-9thcir2000.pdf.
  63. D. J. Teece, “Profiting from technological innovation: Implications for integration, collaboration, licensing and public policy,” Research Policy 15(6), 285–305, 1986 — doi.org/10.1016/0048-7333(86)90027-2.
  64. Video Game History Foundation and Software Preservation Network, “87% Missing: the Disappearance of Classic Video Games,” July 2023 — gamehistory.org/87percent.
  65. Mojang, “Removing obfuscation in Java Edition,” October 29, 2025 — minecraft.net/en-us/article/removing-obfuscation-in-java-edition.
  66. S. More, “SushiSwap initiates migration of over $800M in liquidity funds from Uniswap,” The Block, September 9, 2020 — theblock.co/post/77324/….
  67. Uniswap V3 Core licence: Business Source License 1.1, Change Date “the earlier of 2023-04-01 or a date specified” by governance, Change License GPL v2.0 or later — Uniswap/v3-core@d0831dc · LICENSE.
  68. K. J. Arrow, “Economic Welfare and the Allocation of Resources for Invention,” in The Rate and Direction of Inventive Activity, NBER and Princeton University Press, 1962, 609–626 — nber.org/books-and-chapters/…/economic-welfare-and-allocation-resources-invention.
  69. M. Hoffmann, F. Nagle, Y. Zhou, “The Value of Open Source Software,” Harvard Business School Working Paper 24-038, 2024 — papers.ssrn.com/abstract=4693148: supply-side value $4.15 billion, demand-side $8.8 trillion.