github ARMSX2/ARMSX3 ios-0.0.1
ARMSX3 for iOS 0.0.1, the first public beta

pre-releaseone hour ago

ARMSX3 for iOS is a PlayStation 3 emulator for iPhone and iPad. It runs the same RPCS3-based core as the ARMSX3 Android app, with an app built for iOS around it, and draws through Vulkan on MoltenVK. This is the first build I'm sharing with everyone. Treat it as a beta: some games already play well, many don't yet, and you will run into crashes I haven't seen. When you do, a report helps a lot, and the end of this post explains how to send one.

Contents

  • What you need
  • Installing
  • Setting up JIT
  • Your games
  • Installing games, updates and licences
  • Playing
  • Controls
  • Settings
  • Backgrounds and sounds
  • Online and trophies
  • Saves and backups
  • Good to know
  • Reporting problems
  • Thanks

What you need

  • An iPhone or iPad with an A14 chip or newer, on iOS 17.4 or later. The more memory your device has, the more games run. On a device with 4 GB, iOS may close a large game, and the app compiles more slowly there to use less memory.
  • A way to sideload apps, such as SideStore or AltStore. ARMSX3 isn't on the App Store. With a free Apple ID you refresh the app every 7 days, like any sideloaded app.
  • A way to give ARMSX3 the Increased Memory Limit entitlement, such as SideInstaller or iRAM+. Sideloading tools don't add it by default, and ARMSX3 closes at launch without it. The next section explains how.
  • JIT. Games can't run without it. The app helps you turn it on, as described below.
  • The PS3 system software, PS3UPDAT.PUP from PlayStation's website.
  • Your own games, as disc folders, ISO files or PKG files. None come with the app.

Installing

Download ARMSX3-0.0.1.ipa below.

ARMSX3 needs the Increased Memory Limit entitlement. It reserves a large block of memory to hold the PS3's, and iOS only allows that with the entitlement, so without it the app closes as soon as it opens. When a sideloading tool signs the app with your Apple ID, it doesn't add this entitlement on its own. These two tools can:

  • SideInstaller
  • iRAM+

If ARMSX3 opens at all, the entitlement is in place. Settings › JIT and Device also shows it under Increased Memory Limit.

The first time you open the app, a short setup takes you through six pages: a welcome, what your device supports, JIT, the system software, your game folder and a controller. You can skip any page and come back later with Run Setup Again in Settings › JIT and Device.

If you used one of the earlier test builds, this version has a new bundle ID, so iOS sees it as a different app. Before you switch, open the old app, go to Settings › Backup & Restore, tap Back Up Now and copy the zip out of the old app's Backups folder in Files. After installing 0.0.1, use Restore from Backup on the same screen. Games and the system software aren't in the backup, so add them again, and set up JIT again for the new app.

Setting up JIT

Without JIT the app shows only its JIT screen, because games can't start at all. You pick a method in Settings › JIT and Device › Method, and a change applies the next time the app opens.

Built-in is the default. The app turns JIT on by itself each time it opens. It needs three things:

  1. A pairing file for your device and imported with Import Pairing File. It stays on your device and is never put in a backup or a report.
  2. LocalDevVPN, switched on.
  3. The developer disk image, which Mount Disk Image downloads once (about 16 MB).

Then close ARMSX3 from the app switcher and open it again.

With StikDebug, the app asks StikDebug to turn JIT on, so StikDebug has to be installed. If a game needs more JIT memory later, the app offers to open StikDebug again without restarting the game.

With Wait for Debugger, the app waits for a debugger you attach yourself, from StikDebug or a Mac.

Inside LiveContainer the built-in method isn't offered. Use StikDebug there, with "Use LiveContainer's Bundle ID" turned on.

Your games

The Games tab is your library. Add a folder with the + button and the app finds the disc folders, ISO files and installed games in it. Games stay where they are; nothing is copied. Folders in iCloud Drive may need downloading first.

Each game shows its cover, how long you've played it, and whether it's a disc, ISO or installed game. You can search by title or serial, sort by name or by what you played last, and star favourites so they come first.

Long-press a game, or press Square on a controller, for its menu:

  • Play, and add to or remove from favourites
  • Game Settings, Touch Layout and Patches for that game
  • Check for Update
  • Save Data, and Trophies for games that aren't ISOs
  • Cover from Photos, Cover from Files, or Download Cover, which fetches one by serial
  • Copy Launch Link, a link like armsx3://boot/BLES01717 that starts the game from Shortcuts, Frontends or Safari
  • Add licence… for a game that needs a .rap file
  • Clear Game Cache, which removes the game's compiled caches if they go bad. Saves are kept
  • Uninstall, for installed games

Installing games, updates and licences

The Install tab takes the system software (PS3UPDAT.PUP), games and DLC as .pkg files, including split packages, and licences as .rap or .edat files. You can pick several at once. Files are recognised by their contents, so their names don't matter. ISO files and disc folders come in through a game folder instead. After a .pkg installs, the app offers to delete it to free space.

Switch the tab to Updates to fetch official game updates straight from Sony's servers. You can update one game or all of them, pick an older version to roll back, or remove an update. Downloads keep going in the background and pick up again after a relaunch, and they only use mobile data if you allow it.

Uninstall removes a game with its updates and DLC. Licences and trophies stay. If you choose to delete the saves too, they're backed up first to Files › ARMSX3 › Save Backups.

Playing

During a game, the ☰ button or the Select + Start hotkey opens the quick menu. From there you can:

  • save and load states
  • change the volume, the resolution scale (25 to 800%) and the frame limit, and show a performance overlay
  • open all settings for this game
  • take a screenshot or record gameplay, both kept in Files › ARMSX3, with an option to save them to Photos
  • set up controllers, edit the touch layout or load figures on a portal
  • see your RPCN friends, change discs when a game asks for one, or report a problem

Save states have a quick slot, ten numbered slots with thumbnails and names, and an automatic one. When you exit after playing for a couple of minutes, your place is saved, and the next boot asks whether to resume or start fresh. The state files use the same layout as the Android app's.

The game pauses by itself when you leave the app and when a controller disconnects.

Controls

The on-screen pad appears when no controller is connected. Its layouts are in Settings › Controllers › Touch Pad. The editor lets you drag, resize, hide and split every control, set its size, opacity and touch area, and keep separate layouts for portrait and landscape. A layout can apply to all games or one game, and layouts can be exported and imported as .armsx3pad files. Two skins come built in, and you can import your own.

Any controller iOS supports works, for up to four players. Each player gets button remapping for all games or one game, stick deadzone and sensitivity, inverted axes, motion controls and rumble with adjustable strength. Player 1 can use the phone's motion and vibration while playing on the touch pad.

For a game that needs something else, the Controllers sheet in the in-game menu can turn a player into one of 15 devices, including Guitar Hero and Rock Band guitars and drums, a dance mat, the DJ Hero turntable, Buzz buzzers, GunCon 3, Top Shot and the uDraw tablet. Light guns and uDraw aim where you touch the picture, or with the right stick or a mouse. The portal holds Skylanders, Disney Infinity, Lego Dimensions and Kamen Rider figures. Games that use a microphone or the PlayStation Eye use the device's microphone and camera.

A hardware keyboard works as the PS3's USB keyboard or as a player's pad, and a mouse works as the PS3 mouse, with pointer lock on iPad.

Controller hotkeys cover 13 actions. Three come set: Select + Start for the quick menu, Start + R2 to quick save and Start + L2 to quick load. The whole app, menus and settings included, can be used with a controller.

Settings

Settings are grouped into Renderer, Shaders, CPU/SPU, Audio, Performance, Fixes, Network and more, with a search field that looks through names and help text. Any setting can be changed for all games or for one: Game Settings in the long-press menu has a This game / All games switch, and so does the in-game menu. Changed settings are marked, and you can export or reset one game's settings.

Presets save a set of settings so you can apply them to any game, and they import RPCS3 and ARMSX3 .yml files. The Fixes pane uses RPCS3's per-game database, checked once a week.

Patches for 54 game releases come built in and switched on, the same set the Android app ships. Per game, you can turn patches on or off, download the latest from RPCS3, or import your own patch file.

The Shaders pane downloads librashader shader packs when you ask for them: the RetroArch Slang shaders and Retro Crisis GDV-NTSC, for a CRT look and other filters.

Backgrounds and sounds

The library can sit on one of 12 moving backgrounds, with 40 colour palettes that also set the app's accent colour. You can use your own picture or video instead, with separate ones for portrait and landscape, or the background of a PS3 theme (.p3t), slideshows and animated themes included. Only a theme's background is used; its icons and sounds aren't.

Menu and trophy sounds play from files you import in Settings › System Sounds. The app has no sounds of its own.

Online and trophies

You can sign in to RPCN, the community replacement for PSN, in Settings › RPCN, or create a free account there. You can add and manage friends, accept game invites and set an avatar. iOS asks for local network access the first time you sign in.

Each game's trophies are in its long-press menu, with hidden ones shown if you want.

Saves and backups

Save Data in a game's long-press menu lets you import a save from a folder or a zip, export one as a zip, or delete one. Anything replaced or deleted is backed up first. Saves that a PS3 encrypted for its own console can't be imported.

Settings › Backup & Restore writes one zip to Files › ARMSX3 › Backups with your saves, settings, controller profiles, skins, presets and, if you want, save states. It doesn't include games, the system software, touch layouts, custom covers, imported themes, backgrounds and sounds, shader packs, portal figures, your RPCN login or your pairing file. A restore needs the app to restart.

Good to know

The first boot of a game is slow, because it builds its PPU, SPU and shader caches. For a big game that can take several minutes. Later boots load those caches and start much faster.

The app is in English and uses a dark look. It works on iPhone in portrait and landscape and on iPad in every orientation, resizable windows included. Macs aren't supported.

Everything the app writes, from screenshots and recordings to reports and backups, is in the Files app under ARMSX3.

Reporting problems

Reports are what will make the next builds better, so please send them. After a crash, the app offers to write one the next time it opens. You can also write one at any time from the quick menu or from Settings › Diagnostics › Report a Problem: pick the session it's about, say what happened and where, and attach an iOS crash file if you have one.

The report is a zip in Files › ARMSX3 › Reports, with the emulator's logs and your settings for that session. Nothing leaves your device unless you share it. Folder paths and your RPCN username are removed, and your pairing file is never included.

Then open a bug report on this repository and put "iOS" in the title. Attach the zip, and include:

  • the game's title and serial, for example BLES01717
  • your device model and iOS version
  • the JIT method you use
  • what you were doing when it went wrong, and whether it happens only on a game's first boot

Please keep iOS reports here. The issue form links to RPCS3's Discord and forums, but they don't support this app.

Thanks

This builds on the work of the RPCS3 team, the ARMSX3 and ARMSX2 developers, and the StikDebug project, whose code the built-in JIT enabler uses. Thanks to Tarble FR (@TarbleFR), whose RPCS3 work in RewindBox, a fork of NeoStation, and detailed technical notes pointed me to several fixes in this build. And a big thank you to the testers who ran the early builds, put up with the crashes and kept sending logs. Most of what works today was found through your reports.

ARMSX3 for iOS is GPL-2.0-only, like the rest of ARMSX3.

Don't miss a new ARMSX3 release

NewReleases is sending notifications on new releases.