Français : README.fr.md (the working language of the project; all documentation is in French)
No game data is provided. You need your own copy of Street Fighter Alpha Anthology (PS2, USA,
SLUS-21317). Not in this release: Upper MAX (the four SFA3 MAX characters) and the Arcade-mode graft onto Hyper.
- Download the cores from the releases page:
hsfa-v0.1.6-cores-<platform>.zipfor Android (arm64), ROCKNIX (aarch64: RGB10X, R36S…), Windows (x64), Linux (x86_64) or Recalbox 10 (Raspberry Pi; tested on a Pi 3B). Each archive holds the 4:3 core (fbneo_hsfa) and the 16:9 core (fbneo_hsfaws), with their licence. - Build the games from your ISO (Python 3.8+, about 6 minutes). Easiest: download
hsfa-v0.1.6-construction.zipfrom the release (or this repository), then runconstruire.sh(Linux, macOS, WSL) or double-clickconstruire.bat(Windows, experimental: untested so far) and give it your ISO. It sets up Python, builds the Ogg encoder ifgccis there, and builds the three games intosortie/archives/. By hand:You getpip install -r requirements.txt python3 scripts/construction/hsfa_build.py --anthology "Street Fighter Alpha Anthology (USA).iso" --sortie hsfa_outhsfa_out/archives/sfa3hsfa.zip(SFA3),sfa3uhsfa.zip(Upper) andsfa3hhsfa.zip(Hyper).- The ISO must be the USA one (
SLUS-21317), as a.isoimage (2,048 bytes per sector); the "All Unlocked" variant is accepted too. Convert a.chdfirst (chdman extractdvd). - Music is packed as Ogg Vorbis: this needs
gccandg++. The encoder (tools/flux/oggenc) is compiled once from the official libvorbis sources:python3 tools/flux/oggenc/construit_oggenc.py --sources DIR --telecharge, thenHSFA_OGGENC_SOURCES=DIR. It gives the same bytes on every system. Withoutgcc/g++, add--flux-format adx(bigger Hyper zip). --arcade sfa3.zip(optional) takes the SFA3 graphics ROM from your own arcade set instead of rebuilding it from the ISO; the zips are then identical to the project's reference build. Details: docs/guide/construction-iso.md (in French).
- The ISO must be the USA one (
- Install and play: copy the core into RetroArch's
coresfolder and the three zips into your ROM folder (keep their names), then load a zip with "FinalBurn Neo HSFA" (4:3) or "FinalBurn Neo HSFA Widescreen" (16:9). Guides (in French): Android, ROCKNIX / RGB10X, Recalbox, Windows; on Linux, copy the.sofiles into~/.config/retroarch/cores/.
Feedback: bugs and questions in the Issues (English or French), including Recalbox (tested on a Raspberry Pi 3B; launching from Recalbox's game list does not work yet, load the core from RetroArch's menu).
Prefer the PS2 game itself? Two ISO patchers (all unlocked, native 16:9) are described below.
Credits: everyone whose work HSFA builds on, in CREDITS.md.
Street Fighter Alpha Anthology (PS2, SLUS-21317, CRC 72CE7A78) does not emulate the arcade boards. Its games
are a static recompilation of the original 68000 code to MIPS R5900: the 68K registers live in the PS2 scratchpad.
HSFA goes the other way. It recognises the recompiler's idioms and re-emits the original 68000, assembles a CPS2
program ROM and runs it on an emulated CPS2. Three games are covered:
| PS2 module | Game | Driver |
|---|---|---|
ro3 |
Street Fighter Alpha 3 | sfa3hsfa |
ro5 |
SFA3 Upper (the console version's extended roster) | sfa3uhsfa |
ro9 |
Hyper Street Fighter Alpha (ZERO / ZERO 2 / ALPHA / ZERO 3 versions of each character) | sfa3hhsfa |
They run in two environments:
- a MAME fork: development bench, game
sfa3hx; - a FBNeo libretro core "HSFA" for RetroArch: Android (arm64), Linux (x86_64), Windows (x64), ROCKNIX (RGB10X,
aarch64) and Recalbox 10 (Raspberry Pi: armhf and aarch64), in 4:3 and 16:9 (12 cores per release). The cores also
hold two newer drivers:
sfa3umhsfa(Upper MAX, buildable from your discs since 2026-11-07, see below) andsfa3hahsfa(Hyper + Arcade, test builds only).
No game data here. This repository only contains tools, patches and documentation. Everything that comes from the game (programs, graphics, sound) is rebuilt from your own ISO of the Anthology.
Picking the project up (human or agent): read AGENTS.md (in French): rules, method, findings and open work, updated with every discovery.
Working
| Status | Details | |
|---|---|---|
SFA3 (ro3) |
complete: attract mode; Arcade mode to the credits, 32/32 endings match the arcade (v0.1.6: the Shadaloo dolls the PS2 port redrew in four endings are back, with the v0.1.6 cores); VERSUS, SURVIVAL, DRAMATIC, TRAINING; controls 42/42 identical to the arcade; arcade turbo rate (133.3%); sound validated | journal §110-§113, non-regression |
Upper (ro5) |
playable end to end, 40/40 endings; hybrid sound ROM (SFA3 music + Upper voices); the music that exists only as streams on the disc is packed in the zip as Ogg Vorbis | §122-§128, FLUX |
Hyper (ro9) |
VERSUS without exceptions (151-match tour); supers of the ZERO / ZERO 2 / ALPHA versions no longer crash; super gauge and TRAINING fixed; ZERO / ZERO 2 / ALPHA music in the zip (Ogg Vorbis); per-version SFA1 / SFA2 voices replayed on a 2nd QSound when the replay table is present (see below) | §145-§173, FBNEO-HYPER, REJEU-FBNEO |
| Menus | OPTION and EXIT return to the mode menu; the PS2 option-screen settings (difficulty, damage, timer, speed, rounds) are core options | §147-§148, OPTIONS |
| FBNeo HSFA core | Android, Linux, ROCKNIX, Windows, Recalbox 10 (Raspberry Pi, tested on a Pi 3B); "Blood" option (red, uncensored, by default); "Skip idle loops" option (on by default: 33-41 % less work per frame, same result); true 16:9 (v0.1.5: 512 x 224, exact aspect, stage-locked view at the arena ends, HUD centred); 4:3 and 16:9 (with "Screen format (fill height)" for 4:3 to 16:10 screens); PSP-style transparent shadows; taunt on Select in fights; Upper's hidden characters (v0.1.2: hold Start + a button on Akuma / Balrog for Shin Akuma / EX Balrog, Coin for the roulette); tested by the user on RG477M and RGB10X | patches, Android, ROCKNIX |
| Build from the ISO | hsfa_build.py builds the three games from your ISO alone; program ROMs identical (md5) to the official v154 archives (SFA3 e0f1cfdc, Upper 0b8ecca2, Hyper b8e699cf with the replay table); zips identical from one build to the next |
guide, BUILD |
Known limits of v0.1.x
- Hyper's per-version voices need the QSound replay table of SFA1 / SFA2 (
--rejeu-table, see the build guide). Without it,hsfa_build.pykeeps Hyper's SFA3 voices for every version (programdda35430instead ofb8e699cf) and the zip has no replay. Planned for v0.2: the build will regenerate the table from your own ISO. - Chun-Li's Kikosho and Kikoken: the big arcs of the Kikosho and the Kikoken wave are still invisible (the effect lives the right time since translator v151; the drawing is being investigated).
- With the ISO alone (no arcade ROM), the ground shadows of Hyper and Hyper + Arcade are solid instead of dithered (the dithered tiles are in the rebuilt ROM; the ISO-only tile tables point elsewhere; fix in progress).
- Savestates: loading a state (and RetroArch's run-ahead / rewind) does not resume the exact same sound and first frame,
already true of upstream FBNeo's QSound; a core fix (patch
0029) is being tested. - The Linux x86_64 core of v0.1.7 / v0.1.8 needs glibc 2.43 (refused by Batocera 43 and most current distributions); a rebuild against glibc 2.27, identical in output, is being tested.
- One Hyper music stream (Y27) stays in ADX inside the zip (its Ogg version fails our quality check; inaudible).
- The 16:9 PS2 patcher is validated on Upper and Hyper only; a few non-fight screens are offset.
- The ROCKNIX and Android cores were checked on PC (ARM emulation) and by the user on two handhelds, not on every device.
In progress (not in this release)
- Route B, "Hyper + Arcade": Upper's Arcade mode grafted onto Hyper ("augmented ro9", driver
sfa3hahsfa), with Upper as the oracle; test builds so far. Experimental build from the ISO (state ro9a35b):hsfa_build.py --jeux hyperarcade; with the arcade ROM and the replay table, the zip is ro9a35b byte for byte excepthsfa_info.txt(guide §6). Next: SFA1 / SFA2 stages extracted from the ISO with their animations, then the four MAX characters (architecture). - Upper MAX: Eagle, Maki, Yun and Ingrid (SFA3 MAX, PSP) in Upper, driver
sfa3umhsfa. Experimental build from your two discs (PS2 Anthology + European PSP ISO of SFA3 MAX, ULES-00235), nothing else to install (HSFA's own 68000 assembler):hsfa_build.py --jeux uppermax --psp-iso <PSP ISO>; without the PSP ISO, plain Upper is built (guide §5, CONV-MAX, INTEGRATION-MAX-UPPER). - Data relayout: phases 1-2 done and tagged but not enabled (small gain on the host; paused until the MAX characters go into the graft) (architecture).
- Redrawn widescreen stages (exact PSD export, re-import, injection in the fork and the core): on hold; the 16:9 view locks onto the arcade art instead (DECORS-WS, INJECTION-FORK).
- Requirements: Python 3.8 or newer, then
pip install -r requirements.txt(numpy, capstone, pillow); your ISO of Street Fighter Alpha Anthology (USA). For the bench (optional): MAME 0.285 and the fork. - Paths (optional; only for other tool locations or the MAME bench):
cp config.example.env config.env, edit, thensource config.env. - Build the games from the ISO:
Options and expected fingerprints: docs/guide/construction-iso.md.
python3 scripts/construction/hsfa_build.py --anthology "Street Fighter Alpha Anthology (USA).iso" \ --sortie hsfa_sortie --jeux sfa3,upper,hyper - Install the cores: download them from the releases or build them from
patches/fbneo/, then follow the Android, ROCKNIX / RGB10X, Recalbox or Windows guide.
Full walkthrough (MAME bench, diagnosis, non-regression): docs/guide/demarrage.md.
README.md, README.fr.md, CHANGELOG.md, CREDITS.md, NOTICE.md, LICENSE
AGENTS.md, CLAUDE.md picking the project up (rules, method, findings; in French)
construire.sh/.bat one-click build from the ISO
config.example.env local paths (HSFA_WORKSPACE, HSFA_EXTRACT...); requirements.txt
docs/
guide/ getting started, build from the ISO, Android / ROCKNIX / Recalbox install, deliveries
architecture/ translator, CPS2 memory, MAME bench, FBNeo core, data relayout, route B
reference/ symbols, formats, module map, addresses
methodes/ oracle and non-regression, translator pitfalls
journal/ HANDOFF.md (journal §1-§201) and its index
rapports/ detailed study reports
src/hsfa/ MIPS -> 68000 translator and build chain (mame/: bench Lua scripts)
scripts/ construction/ (from the ISO), validation/ (non-regression), qualite/, localiser.py
tools/ tools by topic (stages, Hyper sound, graft, relayout, streams, ROCKNIX...)
patches/ mame-fork/ (sfa3hx game), fbneo/ (HSFA core), traducteur/ (graft translator diff)
re/ knowledge index: addresses, fields, memory allocations (tools in re/outils/)
max/, tools/max/ SFA3 MAX (PSP) session work
legacy/ PNACH era (PCSX2): patches, old tools, old documents
Documentation index: docs/README.md. The "§N" references point to the journal; thematic index: INDEX-HANDOFF.
Two patchers for the ISO itself (tools/ps2-patchs/, notes in French), with no game
data: they write a patched copy of your USA ISO; the source is never modified.
- All unlocked:
python3 tools/ps2-patchs/unlock_patcher.py SOURCE.iso [DEST.iso]; Upper and Hyper available without a memory card (Select on the version screen). - Native 16:9 widescreen (more stage, no stretching; includes the unlock):
python3 tools/ps2-patchs/sfa_anthology_ws_patcher.py SOURCE.iso [DEST.iso], then set PCSX2 or the TV to 16:9. - Limits: 16:9 is validated on Upper and Hyper, not stage by stage on the other games of the disc; a few non-fight
screens are offset. It changes the PCSX2 CRC (
72CE7A78→72CE7A38):.pnachfiles written for72CE7A78no longer apply to the 16:9 ISO. Details: tools/ps2-patchs.
The project started with PCSX2 patches for the PS2 version: Arcade mode for Hyper, native widescreen, all unlocked,
cross-stage experiments. That work is kept, frozen, in legacy/.
Independent study and preservation project, for interoperability. Street Fighter, Street Fighter Alpha and related marks are trademarks of Capcom. This project is not affiliated with or endorsed by Capcom. No copyrighted content is included or distributed: no ROM, ISO, BIOS, graphics or sound. The tools read the data from the copy of the game you legally own, and the files they produce stay with you.
Each component keeps its own licence. Full texts and notices: NOTICE.md.
| Component | Licence |
|---|---|
| HSFA's own code and documentation (translator, build scripts, tools, docs) | MIT |
FBNeo HSFA cores (patches/fbneo/, release binaries) |
FinalBurn Neo licence, verbatim: no sale, no donations; the source of every change is in patches/fbneo/ |
stb_vorbis 1.22 (patch 0004) |
public domain or MIT (Sean Barrett) |
2nd QSound HLE hsfa_qsound.h (from qs_c, DL-1425, patch 0001) |
BSD-3-Clause (superctr, Valley Bell) |
MAME fork of the bench (patches/mame-fork/) |
MAME licence: GPL-2.0-or-later for MAME as a whole |