BloodyRoar2Recomp

BloodyRoar2Recomp brings Bloody Roar II to PC.

README

Bloody Roar II Recompiled

Native PC port of Bloody Roar II for the Sony PlayStation (Windows + Linux). The game's original MIPS machine code is statically recompiled to C and built into a standalone executable — this is a real PC port, not an emulator.

Release Platform License Stars Built with

Players2 (versus)
RegionsOne universal executable carries Europe (SLES-01722) + USA (SCUS-94424), plus Japan/Asia (SLPS-01842) (experimental, not officially supported); it picks the region from the disc you mount
PublishersVirgin Interactive (EU) / Sony Computer Entertainment (US)
Year1998 (US) / 1999 (EU)
Genre3D fighting
Frameworkspsxrecomp + recomp-ui

How to play

  1. Grab a release — download the zip for your OS from Releases (Windows BloodyRoar2-v0.7.1.zip or the BloodyRoar2-linux-x64-0.7.1.zip variant).
  2. Unzip anywhere — each zip is self-contained (executable, OpenBIOS, launcher assets and mods included).
  3. Add your disc image — put your legally owned Bloody Roar II .bin/.cue (or .iso / .chd) image beside the folder. The launcher asks for it on first run and remembers it.
  4. Play: double-click the .exe on Windows, or ./BloodyRoar2_Recompiled (chmod +x first) on Linux. A retail SCPH-1001.BIN BIOS next to the executable is used if present; otherwise the bundled OpenBIOS is used.

No Python, compiler or setup step is needed to play — the recompiled game is already compiled inside the executable.

One executable, any supported region. The same binary runs the European, USA and Japan/Asia discs — it detects which one you mounted and runs that region's code. Japan/Asia is included for testing but is not officially supported yet (see Regions).


Regions

This port ships a single universal executable. The recompiled code for every region is linked into it under its own symbol namespace; at boot the runtime reads the mounted disc's SYSTEM.CNF boot EXE and runs that region's code. You do not pick a build — you pick your disc.

RegionSerialBoot EXEStatus
EuropeSLES-01722SLES_017.22Supported
USASCUS-94424SCUS_944.24Supported
Japan/AsiaSLPS-01842SLPS_018.42Experimental (bring-up)

An unsupported region's disc fails with an actionable identity error rather than falling through to another region's code.


Mods

Enable them on the launcher's Mods tab. All default to off, keeping the authentic experience — turn on only what you want.

ModWhat it doesDefault
br2.enhancement.widescreenReal widescreen (16:9 / 21:9 / Adaptive): widens the 3D fight camera to reveal more of the arena instead of stretching. 2D menus and FMVs stay faithful 4:3. Authored from scratch for Bloody Roar II.Off
br2.enhancement.performanceIntro FMV skip: ends the intro movies the game's own way the instant they are detected, so boot reaches the title/attract screen sooner. 2D copyright logos are unaffected.Off
br2.enhancement.unlock-allUnlock All Content: unlocks Gado, Shen Long, all custom options, movies and pictures without completing modes (guest-RAM flag rewrite, like the classic GameShark codes). Skipped in netplay sessions.Off
br2.enhancement.turboTurbo Mode: runs the game at an arcade-style turbo cadence (75/120 Hz or uncapped) by re-pacing the guest VBlank. Gameplay speed scales with the rate, like the classic arcade Turbo editions.Off
psx.enhancement.cd-speedCD Speed: shortens load times by speeding up the emulated CD drive — without speeding the game up, so timing-based play is not disturbed.Off
psx.enhancement.fast-loadingFast Loading: accelerates the wall-clock pacing of loads. Safe host-side accelerator; the game itself never desyncs.Off
psx.enhancement.pgxpPGXP Precision: sub-pixel vertex precision + perspective-correct texturing. Stops polygon wobble and floor/texture warping. Needs supersampling ≥ 2 to be visible.Off

The catalog is curated: the framework's Final Bout-specific psx.enhancement.custom-combat and the generic psx.enhancement.widescreen stub are excluded from this title.


Netplay (online versus)

Bloody Roar II supports 2-player online versus through the launcher's Netplay button, powered by the framework's rollback-capable recomp-net stack (delay-sync by default; rollback where the session allows). The public lobby runs at netplay.retcomm.net.

  • How to play online: both players run the same release (same region + OS), open the launcher, click Netplay → Create (host) or Join (enter the host's lobby), seat both players, and start. Or use LAN / Direct IP for a peer-to-peer session on the same network.
  • Same disc required: netplay is dump-strict — every peer must mount the same region's .cue/.bin image geometry. The online gate verifies the TOC fingerprint and track count before a session can start, and each region has its own fingerprint, so an EU host and a US guest are never matched. The lobby also advertises the mounted region in the game title.
  • Same version pin: peers must run the same release build so generated code and the netplay protocol stay compatible. Mixing regions (EU vs US) is not supported in one session.
  • Mods follow the host: the host's enabled mod plan is published on the lobby and every peer adopts that plan at launch — a peer's own offline mod selection is not merged in — so the match simulates identically. Guests that lack a host-selected package are warned before the session starts. The unlock-all mod is skipped in netplay sessions.

Widescreen (from scratch)

The widescreen mod widens the 3D fight camera (not a stretch) using the psxrecomp enhancement pattern: a GTE X-squash around OFX plus a final present stretch, applied inside the runtime's GTE library so every renderer sees it uniformly.

  • Fights render hundreds of RTPS/RTPT projections → the GTE-activity detector gates widening to 3D gameplay, and genuine 2D screens stay pillarboxed 4:3.
  • Bloody Roar II's own screen-extent cull signature (sltiu ...,0x200 paired with sltiu ...,0x1E0) is widened at codegen time, so the game's geometry culling stays aligned with the visible frame.
  • Verified safe to squash: the game reads projected SXY only inside the render funnels that are widened — no AI/UI readback to corrupt.

Read WIDESCREEN.md for the full technical write-up: the binary analysis, how the cull sites were found, and credits (NovaPowers framework + mstan methodology + DuckStation ground truth).


Releases

Every release ships the game as 2 self-contained, ready-to-play zips — one per OS, each carrying every supported region. No setup, compiler or Python is needed: the recompiled game code is already compiled inside the executable.

Just download the zip for your OS, unzip it anywhere, drop your legally owned disc image beside it and pick it in the launcher.

ZipOSRegionsExecutable
BloodyRoar2-v0.7.1.zipWindowsEU + USA (+ Japan exp.)BloodyRoar2_Recompiled.exe
BloodyRoar2-linux-x64-0.7.1.zipLinuxEU + USA (+ Japan exp.)BloodyRoar2_Recompiled

On Linux, chmod +x BloodyRoar2_Recompiled and run it — the zip drops the .exe extension.

No disc data, retail BIOS or pre-generated C is included — you supply your legally owned disc image (see Copyright).

v0.7.1 preparation

The release candidate updates the shared recomp-ui launcher and refreshes the Windows/Linux release build and package checks. psxrecomp remains pinned to the newest revision that retains this title's universal-region, curated-mod and netplay integrations; upstream master currently removes those title APIs. Both full-build workflows create testable, version-stamped artifacts before publishing.


For developers

Multi-region build

EU and USA are the shipped regions; Japan/Asia is opt-in. Each region generates its own generated/<serial>_*.c set under a distinct symbol prefix (br2eu_ / br2us_ / br2jp_), so all three link into one universal exe. Isolated per-region targets still exist for bring-up and diffing:

RegionSerialConfigSeedsBuild targetEXE
EuropeSLES-01722game.tomlseeds/ghidra_funcs.txtpsx-runtimeBloodyRoar2_Recompiled
USASCUS-94424game_us.tomlseeds/ghidra_funcs_us.txtpsx-runtime-usBloodyRoar2_Recompiled_USA
Japan/AsiaSLPS-01842game_japan.tomlseeds/ghidra_funcs_japan.txtpsx-runtime-japan (-DBR2_BUILD_JAPAN=ON)BloodyRoar2_Recompiled_Japan
Universalall threegame.toml (base)—psx-runtime-universal (-DBR2_BUILD_UNIVERSAL=ON)BloodyRoar2_Recompiled
Quick start (dev)
git submodule update --init --recursive
./psxrecomp/tools/ci/build_emitters.sh
# Generate each region you want to link (universal needs all three):
python3 psxrecomp/psxrecomp_cli.py generate --config game.toml        --project-root . --disc disc/<EU>.cue
python3 psxrecomp/psxrecomp_cli.py generate --config game_us.toml     --project-root . --disc disc/<USA>.cue
python3 psxrecomp/psxrecomp_cli.py generate --config game_japan.toml  --project-root . --disc disc/<JP>.cue
# Universal exe (needs EU + USA + Japan generated C present):
cmake -S . -B build-universal -G Ninja -DCMAKE_BUILD_TYPE=Release -DBR2_BUILD_UNIVERSAL=ON
cmake --build build-universal --target psx-runtime-universal

--verify-disc <image> runs the launcher's disc-verify pass headlessly and prints the verdict/serial/region, so the universal selection can be checked without a GUI.

Linux builds

The whole stack is multi-platform (SDL windowing/audio, OpenGL + Vulkan renderers, POSIX sockets). Two Linux CI workflows:

Building the game executable on Linux uses the same flow as the dev quick start; deps on Debian/Ubuntu:

sudo apt install build-essential cmake ninja-build pkg-config \
     libsdl2-dev libgl1-mesa-dev libvulkan-dev libxtst-dev glslc
cmake -S . -B build-linux -G Ninja -DCMAKE_BUILD_TYPE=Release -DBR2_BUILD_UNIVERSAL=ON
cmake --build build-linux --target psx-runtime-universal

CI never ships game C — the recompiled game code is generated locally by each player from their legally owned disc (the full-build workflow injects it from the private generated repo only at build time).

Folder structure
BloodyRoar2Recomp/
├── disc/                # NOT included. Your legal copy of the game (.bin/.cue) — see baserom.md
├── psxrecomp/           # Runtime + recompiler (submodule)
├── recomp-ui/           # Launcher UI (submodule)
├── mods/                # Curated mod catalog (manifests .psxmod)
├── src/mods/            # Per-title mod plugins (widescreen, FMV skip, unlock-all, turbo)
├── generated/           # NOT included. Recompiled C generated locally from your discs
├── seeds/               # First-pass seeds of the boot EXEs (EU + US + JP)
├── tools/               # Utilities (sync_symbols.py)
├── assets/              # App icon / PNG
└── scripts/             # Packager
Symbols

Progressive map: symbols.toml → python3 tools/sync_symbols.py → psx_symbols.h (PSX_FN_*). See psxrecomp/docs/SYMBOLS.md.

Framework pins

Submodule gitlinks (psxrecomp, recomp-ui, nested recomp-net) are authoritative. framework_pins.txt is an optional scaffold snapshot; release CI logs SHAs with record_pins.sh but builds whatever the gitlinks resolve to. Bump submodules deliberately — do not float on main/master in release CI. The recomp-ui gitlink is updated to b688ca79109bc3cc30a6f9de66d81ea70f0acf81; psxrecomp stays on compatible nova-mods commit 219a3627f817c5ad60b852d368c1bebc4f584b71.


Copyright / Legal

The game and its data are NOT distributed. You must supply the files from your legally obtained copy of Bloody Roar II (the .bin / .cue disc images). This project follows the "copyright-friendly" convention of the static-recompilation community (e.g. mstan's recomp projects): the code, launcher and tools are distributed; the game's copyrighted content is not.

  • See baserom.md for the exact file identity (size and checksums) of both regions and how to obtain the dumps.
  • The recompiled code (generated/) is generated locally from your discs and is never committed to the repository.
  • Disc images under disc/ are gitignored and must never be committed. Retail BIOS dumps are not redistributed; OpenBIOS is used for Generate unless you supply your own SCPH locally.

Unofficial, non-commercial, research and preservation project. Not affiliated with or endorsed by Hudson Soft, Sony Computer Entertainment, Virgin Interactive, or any rightsholder of Bloody Roar.

Released under the MIT License — see LICENSE.