2026-04-06 20:41:10 +02:00
2026-04-07 17:39:09 +02:00
2024-06-03 00:35:56 -03:00
2026-04-07 23:21:51 +02:00
2024-11-16 15:48:54 -03:00
2024-09-20 08:49:00 -03:00

ARMSX

ARMSX is a fork of psxe, rebuilt around a native FSUI donor shell and SDL2-hosted frontends for desktop, Android, iOS, UWP, web, and PSVita.

What It Supports

ARMSX currently has the following emulator pieces wired up:

  • CPU, DMA, GPU, SPU, MDEC, GTE, and timers
  • CD-ROM loading
  • memory cards
  • BIOS selection and PS-X EXE boot
  • screenshot capture
  • logging controls
  • VSync control
  • fast forward
  • protocol/file launch through armsx:///... on supported hosts
  • the FSUI settings shell

Disc image support is:

  • BIN/CUE
  • single-track BIN
  • ISO

Not implemented yet:

  • save states
  • netplay
  • texture packs
  • a separate hardware renderer backend
  • CHD support, which is still stubbed in-tree

Supported Targets

  • Desktop: macOS, Linux, Windows
  • Mobile and alternate hosts: Android, iOS, UWP, WebAssembly, PSVita
  • CI also builds Linux x64, x32, arm64, arm32 and Windows x64/x32 packages

Desktop and Android are the main day-to-day targets. The other ports are present and buildable, but they are more platform-specific and may lag behind the desktop path.

CI Runners

The Gitea workflow matches whatever label your act runner advertises. If that label is a docker-mode label like ubuntu-latest:docker://..., Gitea will keep creating per-job bridge networks and can eventually hit Docker address pool exhaustion.

To run the jobs directly on the runner container or host, change the runner labels to host mode, for example ubuntu-latest:host or linux_amd64:host, then restart act_runner. If the runner is started from a Docker image, remove the /var/run/docker.sock mount when you want host mode.

Running

On desktop, launch the emulator directly:

./bin/armsx --bios=/path/to/bios.bin --cdrom=/path/to/game.cue

You can also launch a file with the protocol handler on supported hosts:

armsx:///absolute/path/to/game.cue

The app opens an FSUI shell where you can choose BIOS files, start discs, change settings, take screenshots, and toggle fast forward or VSync.

Settings are stored under SDL's pref path, usually SDL_GetPrefPath("nanodata", "armsx"), in settings.toml.

Building

Linux Desktop

Install SDL2 development packages, then run:

./build.sh

macOS

Install SDL2 and dylibbundler:

brew install sdl2 dylibbundler

Then build a bundle:

./build.sh macosapp

Windows

Install a MinGW toolchain and SDL2, then run:

./build-deps.ps1
./build-win64.ps1
./build-win32.ps1

Android

Set ANDROID_NDK_ROOT to an NDK 27+ install and build:

./build.sh android

iOS

Use the bundled SDL2 xcframework and run:

./build.sh ios

UWP

Build the native runtime or solution from Windows:

./build-uwp-native.sh x64 Debug
./build-uwp-native.sh x86 Release
./build-uwp-all.ps1

WebAssembly

Requires Emscripten:

./build.sh wasm

PSVita

Requires VITASDK:

./build.sh psvita

Configuration

settings.toml is generated on first run. CLI flags always override file settings for the current session. Some internal fields still use historical psxe_* names for compatibility.

Acknowledgements

ARMSX uses:

  • argparse.c
  • log.c
  • tomlc99
  • SDL2
  • FSUI donor / ImGui
S
Description
No description provided
Readme
93 MiB
Languages
C 88.2%
C++ 4.7%
C# 4.7%
Shell 0.6%
Objective-C 0.4%
Other 1.4%