Skip to content

Releases: theweathervane/sfa3max-decomp

Street Fighter Alpha 3 MAX: Decomp v0.34.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 18:28
71c8cff

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 workflow ci.yml calls per
    system.
  • Runs on main no 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 main has 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 lightweight nightly tag 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 annotated v tags.
  • 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 stamped VERSION, 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.
  • 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.
  • 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 VERSION bump no longer releases. Run the CI
    workflow on main with 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>, by github-actions[bot], only on
    that tested commit of main. 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. --check validates 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 (as extract_assets.py does), 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 ISO build.py would pick from imports/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).
    --windowed opens 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
    (opens work/).
  • 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.py no longer prints its whole list during extraction (--list for
    that).
  • Releases carry the launcher prebuilt: one zip per system (Windows x64, Linux x64, macOS Apple
    Silicon) with the source and sfa3max-launcher at the top, plus an empty imports/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...
Read more

Nightly: v0.34.3-nightly.20261104+2877c19 (not an official release)

Choose a tag to compare

@github-actions github-actions released this 04 Nov 03:06
2877c19

Nightly build: not an official release. Built automatically from main as it was on 2026-11-04 (commit 2877c19), 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 v everywhere, 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.