JN Engine · Contribute
A clean-room reimplementation of the engine behind Jimmy Neutron: Boy Genius, rebuilt against a Direct3D 7 command stream captured off period hardware. There is real, scoped work available at every level — including work that needs no code and no setup at all.
🎮 Play and report bugs
Spot something wrong in the browser demo, click it, describe it. The game records which asset it is and where.
nothing to install · 5 minutes
🛠 Build and fix
Clone, build, pick a task off the open list. Each one names the files and how to verify it.
git · python3 · a C compiler
🤖 Point an agent at it
A bounded, commit-pinned MCP surface for Claude or ChatGPT. Claim a task, read source, open a PR.
a Claude or ChatGPT account
The one rule worth reading first
Every claim carries its evidence. “We don’t know” is a valid, respected answer — there is a queue for it. A wrong confident answer costs this project far more than an honest blank, and we have the scars to prove it: see the audit report.
01 No setup required
Both playable demos have a built-in reporting mode. Spot a misplaced, misoriented, glitched or broken-looking model? Click it in-game and file a report — the game records exactly which asset it is, where it sits in the level, and where you were standing. No guessing about which “weird brown thing” you meant.
🎮 Boy Genius 🚀 vs. Jimmy Negatronlabshak · placement or 3JIM [JIM1] · entity).| Code | Meaning |
|---|---|
| PLC | wrong position |
| ORI | wrong orientation / rotation |
| SCL | wrong size |
| ANI | animation wrong or missing |
| TEX | texture wrong or missing |
| MIS | model missing entirely |
| GFX | other visual glitch |
| OTH | anything else |
📤 Send it in
Paste the exported clipboard contents into a Discord DM to scotty, or the engine-troubleshooting channel. The paste contains everything needed to find and fix each issue — asset names, coordinates, camera position, your notes — so it goes straight into the fix queue.
This is genuinely the highest-value thing a newcomer can do. Two of the project’s worst rendering bugs — a rotation sign error and a back-face culling default — were caught by someone playing and noticing that a sign read backwards.
Want to see where your report ends up? The QA ticket resolution log shows how community tickets get diagnosed and fixed — before/after shots and the evidence trail for each root cause.
02 Code
Unzip it and run:
bash update.sh --clone jn-engine
cd jn-engine
./scripts/bootstrap.sh # SDL2, GL, zlib, xvfb
make && make check
Or skip the bundle entirely and clone straight from GitHub — the bundle is just a convenient offline copy of the docs plus a bootstrap script.
Re-run ./scripts/update.sh from inside the checkout any time. It pulls, then
re-verifies everything downstream: assets present, your game-file copies still matching their
checksums, and the spec gate. It refuses to touch a dirty tree, and on a feature branch it
tells you what’s upstream rather than merging behind your back.
The repository already contains the level data and every derived catalog — 8,116 asset files. You do not need the game to build, run, or work on most tasks.
The three files we can’t give you
Neutron.exe, NeutronSW.exe and OMT2.dll are THQ /
Nickelodeon property. We don’t ship, mirror or pass them around — please don’t either. They’re
needed only for binary-backed tooling: PE headers, disassembling a registrar, confirming a
vtable address.
If you own a copy, the extractor pulls them from your own disc and checksum-verifies them:
python3 tools/extract_game_exes.py --source <install dir | disc | .iso>
It takes an installed game directory (no dependencies), a mounted disc, or a .iso —
it walks ISO 9660 itself to pull the installer archive out without mounting anything. On Windows,
drag a folder or .iso onto tools\extract-game-files.cmd. Full detail in
docs/GAME_FILES.md.
Two things worth knowing about before you start. The parsers in
tools/contrib_awefan/ are the authoritative reading of the OMT formats — improve
them upstream rather than reimplementing. And there’s a headless extraction library and CLI for
the game’s asset formats at the
OMT asset toolkit (access-gated to current
collaborators — ask in the Discord).
docs/audit/TASKS.md in your checkout, or read it in the bundle. Every task names
the files, how to verify, and what “done” means. A few to start with:
| Task | What | Needs |
|---|---|---|
| A-01 | Remove a retracted statistic that’s still live in two entry-point docs | nothing |
| A-02 | Qualify an invariant that only holds on one parsing path | nothing |
| B-01 | Fix the FourCC resolver — closes 17 spec defects at the source | python |
| B-02 | Re-run validation on 29 specs that skipped a cross-check that was available | python |
| B-03 | Confirm 7 remaining FourCCs against the binary | your own disc |
Four gates, and they’re the part of this project that demonstrably works. Nothing here is bureaucracy — each one exists because something got through without it.
linked only when a
headless oracle proves the ported behaviour matches the recovered decompiled body. No green
oracle, no linked. linked-blocked is a first-class, respectable
outcome. A review pass once mutation-tested every certified oracle and all eight went red
under a native-side perturbation — that’s why they’re worth trusting.tools/audit/spec_check.py compares all 208 class specs against three independent
generated sources and fails on any disagreement not in the recorded baseline. Fixing a spec
means deleting its baseline entry — that’s how a fix gets locked in.Two rules paid for in blood
Decompiler output is a hypothesis; the raw disassembly is the evidence. A committed evidence document once assigned the wrong expressions to three outputs and silently dropped a term, because the decompiler missed a stack argument. Anyone implementing from it in good faith would have shipped a subtly wrong transform.
A number in prose must match what the code prints. A fabricated 94%
statistic reached both entry-point documents and is still live on master.
If you quote a figure, quote the command that produced it.
03 Agents
A bounded MCP surface exposing a reviewed, commit-pinned snapshot — search and fetch source, look up recovered symbols, claim a task, open a pull request. No shell, no git, no host access.
Nine tools: search, fetch, list_tasks,
project_context, claim_task, release_task,
lookup_symbol, check_status, open_pr. Search IDs include
the active commit and expire on snapshot refresh, so a client can’t silently mix content from
two revisions.
Setup, the tool surface, the write guards, and what the service records: the MCP guide →
If you use an agent, you still own the output
Agent-written work goes through exactly the same gates, and “the model said so” is not evidence. Tag claims the same way you would by hand, and if the agent can’t cite a file and line for something, treat that as a finding rather than a fact.
04 Landing it
master. Run make check before you push — that’s the
same gate CI runs.docs/audit/spec_check_baseline.json in the same PR.Questions, claims on tasks, and bug-report pastes all go to the Discord. If you’re not in it, ask scotty.
05 Credit
awefan4524 is the project’s main contributor and triager, and maintains the Hot Wheels: Mechanix and Operation Krabby Patty efforts. The 3DSP parsers covering v0–v5 with endianness auto-detect and extra-pass-set support, the bidirectional Canvas RLE, and the independent decoder that settled the 32-bit canvas byte order and the 8-bit palette layout are theirs — that last one caught this project having both wrong. Those parsers are vendored here with credit, and improvements that generalise should go upstream to their repos, not just here.
Everyone who has ever pasted a bug report from the QA mode is in the fix queue’s history. The rotation-sign bug and the culling default both came from someone noticing a sign read backwards.