# RecompOne trial — Ace Combat 2 Static recompilation of **Ace Combat 2 (USA)** on [RecompOne](./RecompOne): PS1 MIPS → C#, with a host runtime for CD-ROM, IRQ/DMA, GPU HLE, and BIOS pad. ## Live title menu Recompiled **SLUS_004.04 → stage-2 loader → real game @0x80018000** reaches the stock title screen and main menu (`START GAME` / `LOAD` / `OPTION`).

Ace Combat 2 title menu running on RecompOne

Ace Combat 2 title still — click for MP4
▶ MP4 (title + main menu, ~30s)

Captured 2026-07-24 from the recomp host under Xvnc (`DISPLAY=:99`, podman/Rocky 9). ## Pipeline ``` bootstrap (CD288 0→14) → Exec stage-2 @0x80160000 → Exec real game @0x80018000 (pc0=0x8001BF2C) → CD resource load + VSync/GPU OT → title + main menu ``` | Area | Status | |------|--------| | Full boot + chain-load | Done | | Title / main menu render | Done (see clip above) | | BIOS InitPAD2 + host menu inject | Done (guest RAM sees buttons) | | Confirm START GAME → mission | In progress | | Audio | Not wired in container | ## Quick start ```bash # Virtual display (headless) source tools/run_xvnc.sh export DISPLAY=:99 LIBGL_ALWAYS_SOFTWARE=1 # One-shot: recomp bootstrap + host under podman export AC2_CD288_MAX_FRAMES=100000 ./tools/run_ace_combat_2.sh ``` Longer real-game window / menu inject timing: ```bash export AC2_FOLLOW_EXEC=1 AC2_FULL_INIT=1 AC2_GUEST_TICK=1 export AC2_CD288_MAX_FRAMES=100000 export AC2_MENU_WAIT_PRESENTS=500 # presents after real entry before Cross tools/run_host_podman.sh "samples/ace-combat-2/Ace Combat 2 (USA).cue" ``` ## Layout | Path | Role | |------|------| | `RecompOne/` | Recompiler + runtime (submodule) | | `RecompOne.HostTemplate/` | AC2 host harness (`AceCombat2Play`) | | `samples/ace-combat-2*` | Disc config + recomp seeds (dumps not committed) | | `docs/` | Research / plan / impl notes | | `media/` | README showcase clips | | `tools/run_ace_combat_2.sh` | One-command run | Process log index: [`docs/README.md`](docs/README.md). ## Notes - Disc images and raw dumps are gitignored; you must supply a legal dump to run. - `videos/` holds local full-length captures and is not committed. - This workspace is a bring-up trial; upstream project docs live under `RecompOne/README.md`.