Repository navigation
Releases: theweathervane/sfa3max-decomp
Release list
Street Fighter Alpha 3 MAX: Decomp v0.34.2
No game is included. You build it from your own copy of the game: the US PSP disc, Street Fighter Alpha 3 MAX (
ULUS-10062), as an ISO. Until the decomp is complete, the parts not yet decompiled are translated from your disc when you build, so a ready-made program cannot be offered.
Download the zip for your system below (sfa3max-decomp-0.34.2-windows-x64.zip, -linux-x64.zip or -macos-arm64.zip) and unzip it. Then open sfa3max-launcher in the unzipped folder, choose your ISO with Browse... (or put it in imports/psp/) and press Run. The launcher is prebuilt; it builds the game on your machine from your disc, with its progress in the console underneath.
| System | Once, before the first Run | Notes |
|---|---|---|
| Windows (x64) | nothing: Python and the build tools are downloaded into .tools\ the first time |
The launcher isn't signed: if Windows SmartScreen stops it, choose More info > Run anyway. |
| Linux (x64) | sudo apt install cmake ninja-build clang python3 plus SDL's libraries (list) |
Built on Ubuntu 24.04. On an older system, build the launcher yourself with ./launcher.sh. |
| macOS (Apple Silicon) | xcode-select --install, then brew install cmake ninja python |
The macOS zip is added when its build finishes (GitHub's Mac builders can be slow to start); until then, take Source code (zip) and run ./launcher.sh. The launcher isn't signed by Apple, so macOS blocks it the first time: open it once, then System Settings > Privacy & Security > Open Anyway. Or skip the download's launcher: ./launcher.sh builds one on your Mac, which macOS doesn't block. |
The first build extracts and checks your disc and compiles everything (a few minutes). After that, Run starts the game straight away (it rebuilds only what changed), or play with build/sfa3max --work work (build\sfa3max.exe on Windows). Prefer the command line? build.cmd --run / ./build.sh --run do the same. Source code (zip) is the same source without the launcher. Details: Building.
What's new in every version so far
38 versions, newest first.
0.34.2
- Stable releases don't wait for macOS either. A release is tagged and published once Windows and
Linux pass. The macOS zip is added to it when its build passes (release-macos), and a release can
go out without one. The release notes tell Mac users to take the source and run./launcher.sh
until it's there. This is for GitHub's macOS runners not starting (CONCERNS C13).
0.34.1
- The nightly no longer waits for macOS. On the first real run, GitHub's macOS runners didn't start
(CONCERNS C13), and that held up the whole nightly. macOS now builds in a job of its own. The Nightly
is published once Windows and Linux pass, and the macOS zip is added when its build passes, if that
Nightly is still the same commit's. Stable releases still need all three. - The build steps moved into
.github/workflows/build.yml, a reusable workflowci.ymlcalls per
system. - Runs on
mainno longer queue behind each other, so one stuck on macOS can't hold up the next.
0.34.0
Stable and nightly builds.
- Nightly pre-release: the workflow also runs every night (02:17 UTC) when
mainhas changed, or
by hand with nightly ticked. It runs the same builds as a release, then replaces the single
Nightly pre-release, which is never marked latest and is on a lightweightnightlytag that only
it moves. Its notes warn that it isn't an official release, then list what has changed since the
last one. Stable releases are unchanged: chosen, with annotatedvtags. - Nightly versions:
<VERSION>-nightly.<YYYYMMDD>+<commit>in the launcher, the game's log, the
bug report and the zips' names (with.for+). EX. SETTING shows it without the commit part,
which its font can't draw. The download carries the stampedVERSION, so a nightly built by a
player says it's one. A new first job,plan, decides what each run is, and a scheduled nightly
with nothing new builds nothing. - The game's log now starts with its version.
.recomp.json: macOS added to the targets; links to the releases and to the issue forms; notes on
the launcher and on stable and nightly builds.- docs: BUILDING.md (nightly), REPORTING_ISSUES.md (stable and nightly), DECISIONS D14 (the nightly
exception), CONCERNS C12.
The rest of the Survival / Free Battle select's cursor states (20 functions, battle_select.c).
- The difficulty (GAME + 190, 0-7; Free Battle only, on the starter's side), the speed (GAME
- 124, BATTLE + 22 from 0x08A2B3E0), the stage (GAME + 193: RANDOM or one of 38, chosen once for
both; BATTLE + 24) and the end (0x088A47A0: GAME + 10, BATTLE + 0 / + 100 the stage, RANDOM
drawn, the choice counted), with states 4 / 5 and their step dispatch.
- 124, BATTLE + 22 from 0x08A2B3E0), the stage (GAME + 193: RANDOM or one of 38, chosen once for
- The line 0x088A160C draws is the stage, not the difficulty: renamed.
- New parity scenario
free_battle_rows: Free Battle with the grid cursor moved and Down, Down, Up
on every row before choosing it.
0.33.0
The rest of the Survival / Free Battle select's cursor states (20 functions, battle_select.c).
- The difficulty (GAME + 190, 0-7; Free Battle only, on the starter's side), the speed (GAME
- 124, BATTLE + 22 from 0x08A2B3E0), the stage (GAME + 193: RANDOM or one of 38, chosen once for
both; BATTLE + 24) and the end (0x088A47A0: GAME + 10, BATTLE + 0 / + 100 the stage, RANDOM
drawn, the choice counted), with states 4 / 5 and their step dispatch.
- 124, BATTLE + 22 from 0x08A2B3E0), the stage (GAME + 193: RANDOM or one of 38, chosen once for
- The line 0x088A160C draws is the stage, not the difficulty: renamed.
- New parity scenario
free_battle_rows: Free Battle with the grid cursor moved and Down, Down, Up
on every row before choosing it.
0.32.2
The release process, to the maintainer's rules (DECISIONS.md D14).
- Releases are chosen, not automatic: merging a
VERSIONbump no longer releases. Run the CI
workflow onmainwith release ticked; the same run builds and tests the commit on all three
systems, and only if every build passes does it continue. - Annotated tags, made by the pipeline:
v<MAJOR.MINOR.PATCH>, bygithub-actions[bot], only on
that tested commit ofmain. The version must be newer than the last release and have a changelog
section; releasing the same version twice fails. - Notes gather everything since the last release:
tools/release_notes.py VERSION --since LAST,
newest first; the first release carries the whole changelog.--checkvalidates the version. - CONCERNS.md C1 resolved; docs/BUILDING.md, CONTRIBUTING.md and ROADMAP.md updated.
0.32.1
- Fixed: the boot's "Auto-loading SYSTEM DATA..." message flashed on screen for about 9 frames
again. The screen that shows it isn't called every frame during the load, and the hold that keeps
it off screen ran out in the gap (since 0.24.0). The hold now lasts while the screen is on a message
step (src/extensions/bootmsg.c; MISTAKES.md M7). - Release notes: on macOS 15 and later an unsigned launcher is allowed from System Settings > Privacy
& Security > Open Anyway (right-click > Open no longer does it), or built locally with
./launcher.sh.
0.32.0
The launcher's second round, from the maintainer's first go with it on Windows.
- Image: a heading of its own, like Build and Game. The ISO is checked when chosen, by its
program's checksum (asextract_assets.pydoes), then the whole image in the background. A flag
the height of the text box (all three the same size, with a white outline) says which disc it is: US (ULUS-10062), Japanese (ULJM-05082) or
European (ULES-00235, whose checksums are now recorded), or a red mark for anything else. Only the
US disc builds, so with any other Run and Build are off and the line underneath says why. With the
field empty it checks the ISObuild.pywould pick fromimports/psp/. - Light and dark: the launcher follows the system's light or dark setting, and changes with it.
- Full screen: the game now opens full screen by default (the desktop's own resolution).
--windowedopens a window; F11 / Alt+Enter still switch. The launcher has a Full screen checkbox
(on), and the log says which it was. - Stop is for builds only: once the game is running it is off (close the game with Esc).
- See option details under Game > Options: every game option with a line on what it does and a
copy icon (also used for the console's copy button). - Report a problem: a grey pixel-bug button, top right, opens GitHub's bug form filled in with the
version, the system, the disc's serial, the launcher's settings and the end of the console. About
has the version, the project's page and the issue forms. The console has a Log folder button
(openswork/). - Progress bars while the disc is extracted, in the roadmap's style
([████████░░░░░░░░░░░░] 41% 128 / 313 archives): checking the image, copying its files,
unpacking the archives. They are redrawn in place in a terminal or the launcher, and one line per
tenth elsewhere.psp_imports.pyno longer prints its whole list during extraction (--listfor
that). - Releases carry the launcher prebuilt: one zip per system (Windows x64, Linux x64, macOS Apple
Silicon) with the source andsfa3max-launcherat the top, plus an emptyimports/psp/for the ISO.
Unzip, open the launcher, choose the ISO, Run. CI builds and packs it on each system
(tools/package_launcher.py) and the release job attaches the three.launcher.cmd/launcher.sh
open a prebuilt launcher when there is one. The release notes now start with the zip. - Reporting issues: new docs/REPORTING_ISSUES.md (what to include, how to get a log and attach it,
the log level...
Nightly: v0.34.3-nightly.20261104+2877c19 (not an official release)
Nightly build: not an official release. Built automatically from
mainas it was on 2026-11-04 (commit2877c19), after passing the same builds as a release. It is for trying what's new; it may be broken, and it isn't supported. For the supported version, use the latest release. This pre-release is replaced by the next nightly.Bug reports from it are welcome: the launcher's bug button fills in its version,
v0.34.3-nightly.20261104+2877c19, so we know which build it was.
No game is included. You build it from your own copy of the game: the US PSP disc, Street Fighter Alpha 3 MAX (
ULUS-10062), as an ISO. Until the decomp is complete, the parts not yet decompiled are translated from your disc when you build, so a ready-made program cannot be offered.
Download the zip for your system below (sfa3max-decomp-0.34.3-nightly.20261104.2877c19-windows-x64.zip, -linux-x64.zip or -macos-arm64.zip) and unzip it. Then open sfa3max-launcher in the unzipped folder, choose your ISO with Browse... (or put it in imports/psp/) and press Run. The launcher is prebuilt; it builds the game on your machine from your disc, with its progress in the console underneath.
| System | Once, before the first Run | Notes |
|---|---|---|
| Windows (x64) | nothing: Python and the build tools are downloaded into .tools\ the first time |
The launcher isn't signed: if Windows SmartScreen stops it, choose More info > Run anyway. |
| Linux (x64) | sudo apt install cmake ninja-build clang python3 plus SDL's libraries (list) |
Built on Ubuntu 24.04. On an older system, build the launcher yourself with ./launcher.sh. |
| macOS (Apple Silicon) | xcode-select --install, then brew install cmake ninja python |
The macOS zip is added when its build finishes (GitHub's Mac builders can be slow to start); until then, take Source code (zip) and run ./launcher.sh. The launcher isn't signed by Apple, so macOS blocks it the first time: open it once, then System Settings > Privacy & Security > Open Anyway. Or skip the download's launcher: ./launcher.sh builds one on your Mac, which macOS doesn't block. |
The first build extracts and checks your disc and compiles everything (a few minutes). After that, Run starts the game straight away (it rebuilds only what changed), or play with build/sfa3max --work work (build\sfa3max.exe on Windows). Prefer the command line? build.cmd --run / ./build.sh --run do the same. Source code (zip) is the same source without the launcher. Details: Building.
Changes since the last release, v0.34.2
0.34.3
- The version is written with a lower-case
veverywhere, as the tags are (v0.34.2): in the
launcher's corner, the game's log, bug reports, the Nightly's title and notes, and the issue forms.
EX. SETTING keeps capitals (V0.34.3), because its font has no lower case. hle_font.c: the font metrics' negative values are multiplied by 64 instead of shifted left (the
same values; shifting a negative number is undefined in C, and the compiler warned about it three
times on GitHub's Linux build). The "validity error" lines in that build log come from SDL's own
Wayland files and are harmless.