{"slug": "ogre-battle-64-recompiled-project-at-99-05", "title": "Ogre Battle 64 Recompiled Project at 99.05%", "summary": "The Ogre Battle 64 Recompiled project has fully recompiled the game's main code segment of 807 functions to C, reaching 99.05% completion, with the runtime app for rendering, input, and audio named as the next milestone. The static recompilation of Ogre Battle 64: Person of Lordly Caliber (USA, Rev A) to a native PC executable uses the N64Recomp toolchain and was mostly performed by the DeepSeek v4/v4.1 Flash model, according to the project repository. The repository contains no copyrighted game data, requiring players to supply their own USA Rev A ROM dump (40 MB) on the start screen, and a fresh clone cannot build the app until make regenerate has run once.", "body_md": "Static recompilation of the N64 game *Ogre Battle 64: Person of Lordly Caliber*\n(USA, Rev A) to a native PC executable, using the [N64Recomp](https://github.com/N64Recomp/N64Recomp) toolchain.\n\n**This repository contains no copyrighted game data.** You must supply your own\nROM dump (see below).\n\nThis work in this project was mostly performed by the DeepSeek v4/v4.1 Flash model.\n\nThe main code segment (807 functions) has been fully recompiled to C. The runtime\napp (rendering, input, audio) is the next milestone. See [PLAN.md](https://github.com/lfarroco/ogre-battle-64-recomp/blob/main/PLAN.md) for the\nfull plan, current status, and technical findings.\n\n```\nassets/                your ROM (gitignored; big-endian .z64 expected)\nasm/                   splat-generated disassembly\ndebug/                 headless-browser probes for the wasm build (see debug/README.md)\nconfig.yaml            splat config (segments, vram mapping)\nconfig.toml            N64Recomp config\nMakefile               assemble + link + recompile\nn64recomp-ob64.patch   our N64Recomp modifications (apply to upstream clone)\nrt64-plume-sdl.patch   our RT64 plume patch — SDL >= 2.0.22 guard (apply to the\n                       tools/RT64 submodule on systems with older SDL2, e.g. Ubuntu 22.04)\nPLAN.md                the project plan\n```\n\nSee **Reproduce** in [PLAN.md](https://github.com/lfarroco/ogre-battle-64-recomp/blob/main/PLAN.md). Summary:\n\n```\n# tools (macOS)\nbrew install mips-linux-gnu-binutils cmake\npython3 -m venv tools/venv && tools/venv/bin/pip install 'splat64[mips]'\ngit clone --recurse-submodules https://github.com/N64Recomp/N64Recomp.git tools/N64Recomp\ngit -C tools/N64Recomp apply ../../n64recomp-ob64.patch\ncmake -S tools/N64Recomp -B tools/N64Recomp/build -DCMAKE_BUILD_TYPE=Release\ncmake --build tools/N64Recomp/build --target N64RecompCLI -j4\n\n# ROM: put your .z64 dump in assets/, then regenerate the recompiled code\n# (see docs/guides/app-build.md -> \"Regenerating the recompiled code\")\nmake regenerate\n```\n\nThe ROM must be the USA Rev A dump (40 MB, `.n64` 16-bit byte-swapped or already\nconverted `.z64`). `tools/convert_rom.py` converts `.n64` → `.z64`.\n\n**A fresh clone cannot build the app until `make regenerate` has run once**: the\nrecompiled C (`RecompiledFuncs/`, `Bank*Funcs/`, `RspFuncs/`,\n`app/src/bank_funcs.inc`) is generated from your own ROM and is deliberately not\ncommitted. `make regenerate` runs splat, the MIPS link, the 34 bank units, the\nmain recompilation and the RSP microcode in the one order that works.\n\n```\ncmake -S app -B build-app -DCMAKE_BUILD_TYPE=Release\ncmake --build build-app -j\n./build-app/ogrebattle64\n```\n\nOn launch the app shows a black start screen — `OGRE BATTLE 64: RECOMP` /\n`CLICK TO LOAD YOUR ROM (OR DROP IT IN THIS WINDOW)`. Click it to pick your ROM,\ndrag the ROM onto the window, or just put the ROM next to the executable. The\nROM is validated by hash and stored, so later launches go straight into the\ngame. The battery save lands in `saves/` **beside the executable**.\n\n``` php\nmake dist        # -> dist/ogre-battle-64-recomp/   (one self-contained executable)\nmake dist-zip    # -> dist/ogre-battle-64-recomp-<platform>.zip\n```\n\nThe package is a single file: SDL2 is linked statically (`make dist` fetches and\nbuilds a pinned real SDL2 once, because Homebrew's `sdl2` is the SDL3-based\ncompat shim and has no static library). No game data is included, so the player\nsupplies their own ROM on the start screen. See `docs/guides/app-build.md` →\n\"Distribution\".\n\nThe renderer (`tools/RT64`) is a git submodule pinned to an upstream commit and\nneeds its own one-time patch on systems with SDL < 2.0.22 (e.g. Ubuntu 22.04\nships SDL 2.0.20, but `SDL_GetWindowSizeInPixels` requires 2.0.22+):\n\n```\ngit submodule update --init --recursive\ngit -C tools/RT64/src/contrib/plume apply ../../../../rt64-plume-sdl.patch\n```\n\nRe-apply after any `git submodule update` inside `tools/RT64`, which resets the\nsubmodule and discards the patch.\n\nOgre Battle 64 © Quest / Nintendo. This project is for preservation and interoperability research. Never distribute the ROM or its extracted assets.", "url": "https://wpnews.pro/news/ogre-battle-64-recompiled-project-at-99-05", "canonical_source": "https://github.com/lfarroco/ogre-battle-64-recomp", "published_at": "2026-09-20 20:59:02+00:00", "updated_at": "2026-09-20 21:23:04.000678+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools"], "entities": ["Ogre Battle 64: Person of Lordly Caliber", "N64Recomp", "DeepSeek v4/v4.1 Flash", "Quest", "Nintendo", "RT64", "SDL2", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/ogre-battle-64-recompiled-project-at-99-05", "markdown": "https://wpnews.pro/news/ogre-battle-64-recompiled-project-at-99-05.md", "text": "https://wpnews.pro/news/ogre-battle-64-recompiled-project-at-99-05.txt", "jsonld": "https://wpnews.pro/news/ogre-battle-64-recompiled-project-at-99-05.jsonld"}}