Emulation on iPhone

iPhone Running PPSSPP with Razer Kishi V2

Last year I wrote an about retro gaming on iOS. I’ve had a lot of fun playing games on the platform, especially through emulation. Much of what I wrote last year is still applicable today, but I thought I’d revisit the topic with a focus on the state of emulation on iOS and all of the software and accessories you’ll need to get started.

Controllers

You can get by with some games using the touch screen controls — turn-based RPGs like Pokémon come to mind — but if you’re interested in playing anything else, you’ll want to get some kind of controller. Apple has done a great job of adding support for controllers in iOS, you can use Sony’s DualSense Controller, for example — Apple even sells it on their site. I’m a huge fan of 8BitDo controllers and would highly recommend their Pro 2 controller.

These traditional controllers are all well and good if you’re going to be connecting your iPhone to a television to play games. Although, I wouldn’t recommend it unless you have an iPhone with a USB-C port. Lightning devices have notoriously bad latency in their HDMI output.

If you want to play on the iPhone’s display, though, you’ll want a controller that attaches to the device itself. This gives you a gaming experience that’s more in-line with a dedicated gaming handheld.

There are plenty of options on the market, but I think there are three clear front-runners in the space.

GameSir G8 Galileo — This controller is USB-C only, so if you’re using an iPhone with a Lightning port, it’s not going to be an option for you. I’ve also not used this one myself, however, everything I’ve seen and read has been overwhelmingly positive. Russ from Retro Game Corps mentioned in his review that, going forward, whenever anyone asks for a recommendation in this category, the GameSir G8 Galileo will be his first pick.

Razer Kishi V2 — This is available for Lightning and USB-C devices, it has the least flex of any of the controllers I’ve used — it fits on my iPhone 15 Pro like a glove and the expanding portion in the middle doesn’t bow inward toward the back of the device. It’s very close to being my favorite of the controllers I’ve tried. But I hate that the controller’s start/select/share/menu buttons aren’t symmetrical. It’s also a huge bummer that the USB-C version isn’t fully supported on iOS. The Razer Nexus app doesn’t recognize the controller and you can’t use its additional buttons on the platform at all. Hopefully a future software update will change that, but I’m not holding my breath.

Backbone One — Also available for Lightning and USB-C devices, but all of its functionality is supported on both Android and iOS. There is a bit of flex in the controller during use and the expanding portion bows in toward the back of your device, but it feels really good in the hand. I love how all of the buttons feel on the Backbone, they have a much softer press than the Razer Kishi V2 and all of the additional buttons are symmetrical. The Backbone app requires a subscription, which I’m not fond of, but it’s not something you have to use. And compared to the Razer Kishi V2 that doesn’t even work with the app on the iPhone 15, it’s a clear win for the Backbone. It’s also worth noting that there is a PlayStation edition of the controller and an official carrying case available to match both versions.

AltStore

Apple, being the restrictive little platform vendor that they are, doesn’t allow emulators on the App Store. In order to install them on your device, you’ll have to utilize sideloading. AltStore is the best method for installing and managing sideloaded applications on iOS.

You’ll want to follow the official guide for the latest installation process, but essentially, you install AltServer on your computer, use it to install AltStore on your iOS device, and you’re ready to start loading emulators on your iPhone.

You will need to login using your Apple ID throughout the process. This is used to sign the applications so they can run on your device. If you have a free Apple ID, you’ll be limited to just three signed apps at a time and they will only be useable for a week before you’ll need to re-sign them.

If you have a paid Apple Developer account, though, the limit on the number of apps is lifted and the apps will last a full year before they have to be re-signed. You can definitely get by with a free account — I’d recommend your three apps be AltStore, RetroArch, and either Limon or PPSPP — but if you want a larger assortment of systems available at all times, it may be worth considering a paid developer account.

If you choose to stick with a free Apple Developer account, you’ll be happy to know that AltStore itself is completely free to use. You can choose to subscribe to the project’s Patreon for access to beta versions of the app, but it’s not necessary unless you want to be on the bleeding edge.

Currently, the biggest feature available exclusively in the beta is the ability to add third-party sources. It’s a neat feature, for sure, but I haven’t found many sources that feel essential. Almost all of them are poorly maintained with outdated versions of apps. Because of this, I’m not sure if the Patreon is worth subscribing to just for access to the beta.

Recommended Emulators

There are a fair number of emulators available for iOS. Not nearly as many as Android or other platforms, though. Primarily because of Apple’s limitations on the App Store. But just about all of the systems you could ever want are covered.

RetroArch, Crash Team Racing for PlayStation, PPSSPP, and New Super Mario Bros. 2 for Nintendo 3DS

The following are a list of the emulators that I’m currently using and the ones that I would recommend others use as well. They’ll get you home consoles through the fifth generation and every handheld console up to and including the PlayStation Portable and Nintendo 3DS.

RetroArch — The Swiss Army knife of emulators, which will handle the bulk of the systems available. It’s a little finicky to setup — I tend to refer to Retro Game Corps’s excellent starter guide. But once it’s configured to your liking, it offers an excellent experience for PlayStation, Nintendo 64, Nintendo DS, Super Nintendo, Sega Genesis, Nintendo Entertainment System, and more.

PPSSPP — This is the best option for emulating PlayStation Portable games on iOS. RetroArch has a core that supports PSP games — based on PPSSPP — but the performance just isn’t up to par with the standalone release.

Limon — It’s still in the early days for this Nintendo 3DS emulator — there isn’t currently a way to exit a game, for example, you have to force quit the app instead. There’s definitely limited compatibility with games, but I’ve been using it to run New Super Mario Bros. 2 and it’s been great.

Other Emulators

This is by no means an exhaustive list of the remaining emulators on iOS, but they’re the ones that I’ve tried myself. I don’t recommend the first three primarily because they require the use of just-in-time compilation (JIT). This is a method for executing code that allows for more performance, but it isn’t available by default on iOS.

In order to use JIT, you have to enable it with a tool on another device — AltServer has this built in. Since the release of iOS 17, though, I haven’t been able to get JIT working at all. So unless you have better luck than I or you have an iOS device that you haven’t updated to iOS 17 yet, you’ll likely have to wait for a more robust method for enabling JIT.

DolphiniOS — An excellent release of Dolphin specifically for iOS that supports GameCube and Wii emulation. When I was able to get JIT working on my iPhone 13 Pro, it was a fantastic experience. I played many hours of Mario Kart Wii and Tony Hawk’s Underground on it. I only ran into a single game that didn’t run well — Tony Hawk’s American Wasteland — but I could probably get it to a reasonable frame rate with a bit of tweaking. If the JIT situation changes in iOS 17, DolphiniOS will be the first thing I install.

Flycast — A Dreamcast emulator available for iOS. I never ran into any compatibility issues with the games I’ve played on it. It’s a shame that there isn’t an option to run it without JIT enabled. There are plenty of low powered Android handhelds that are capable of emulating Dreamcast at the top end and the iPhone 15 Pro is significantly more powerful than those devices. I don’t know, maybe the current iPhone wouldn’t be capable of emulating Dreamcast games without JIT, but it wouldn’t surprise me if the iPhone released in a few years was able to. And in the meantime, there could be some RPGs or what have you that would be playable at lower frame rates.

Play! — A PlayStation 2 emulator with pretty pitiful compatibility. I haven’t had much luck with games I’ve tried in this emulator. The only one that seemed to run flawlessly was Spider-Man: Friend or Foe, which isn’t a particularly good game, but you could also just run the PSP version in PPSSPP instead.

The remaining emulators all work well, but have overlap with the systems supported by RetroArch:

Provenance — An all-in-one emulator akin to RetroArch. I prefer RetroArch’s interface over Provenance, though, especially if you have a large library of ROMs.

Delta — It emulates Nintendo systems and has excellent skins for touch screen controls, but RetroArch is able to emulate everything Delta supports.

MAME4iOS — An arcade emulator that I’ve spent very little time with. I’m generally not too interested in emulating arcade games, though, and the few I have enjoyed run just fine in RetroArch.

Emulation Frontend

This is the only piece of the puzzle that there isn’t a solution for on iOS. On Android you have apps like Daijisho and on PC you have apps like Launchbox. I’m not aware of anything like this on iOS at all.

The best I’ve been able to come up with is a shortcut that uses the Choose From Menu action to list each of the emulators I have installed and then opens the one I select using the Open App action.

You could just save that shortcut to your Home Screen and tap on it whenever you’d like to play a game, but if you chose a controller that has a companion app that can be launched using a button on the controller, there is an option for a more seamless experience.

If you’re using the Backbone controller, for example, you could setup an automation in the Shortcuts app that automatically runs the shortcut whenever the Backbone app is launched. Now when you want to play a game, you can attach the controller to your device, press the Backbone button, and select one of your emulators from the shortcut’s menu.

If you’ve come up with a better solution for this, though, I would absolutely love to hear about it. Feel free to reach out to me with the details.

Linked List Entries

Browse the Linked List.

Assistive Access

Assistive Access in iOS 17

I only just discovered this new feature in iOS 17. Assistive Access gives you a simplified, focused interface with access to only the apps and features you choose to enable. It was designed for people with cognitive disabilities, but there are plenty of other uses.

I’m thinking it could be an excellent way to setup an iPhone for a child. You could configure it so they only have access to Messages and the ability to make calls, for example. With no way to use other applications without first entering an Assistive Access-specific passcode.

Last night I set it up on my iPhone to only have access to Camera, Day One, Home, Photos, Things, and Messages — only listing my wife as a contact I’m able to send messages to. The idea being that I could enter Assistive Access when I wanted to spend less time on my device and be more present with the family. I’d still have access to the most crucial features, like taking photos and videos, but everything else would be hidden.

I do have a few gripes with the feature for my use case, though.

Some applications are built with Assistive Access in mind. Those applications offer an entirely different user interface than what you get from the app in the traditional iOS Home Screen experience. I wish that there was an option to just use the non-Assistive Access version of each app.

Of the apps I’m using, Camera, Photos, and Messages all use an alternative interface in Assistive Access. They’re mostly fine, but I really wish I could disable it in the Camera app. You don’t have the option to zoom, you can’t switch lenses, you can’t take photos in portrait mode, etc. — there’s a whole host of features that I wish I had access to that aren’t available. I’ve considered installing Halide or another third-party camera app for the additional features, but I generally find them difficult to use when compared to Apple’s Camera app.

The other complaint I have with Assistive Access is the giant “Back” button displayed along the bottom when you’re inside of an application. I’m sure it’s great for some users of the feature, but I would like to see an option to display something a bit more elegant — maybe show an old school iPhone home button instead?

Lastly, it doesn’t seem that there is a way to use Bluetooth or AirPlay speakers at all while in Assistive Access. It may sound like that would defeat the purpose, but I often have music playing on a Bluetooth speaker when the family is on the back deck or I play music over AirPlay to the HomePod in the kitchen. It would be rad if you could choose within Assistive Access’ settings whether that is available or not.

Ive seen others using a dumb or light phone for this type of use case. But whenever I’ve looked into that as an option the limitations were a bit more than I would prefer. There was always something that I need that these devices just couldn’t do or it would be too cumbersome to setup and use.

Using Assistive Access on the iPhone I already have seems like the perfect solution. I don’t have to buy an additional device and I have much more control over what I do and don’t have access to.

My First Macintosh


— January 24, 2024

Home Screens to Begin 2024


— January 1, 2024

Lock Screen Widget Limitations


— November 27, 2023

Defaults


— November 8, 2023

Caleb Andrew Rockwell


— November 4, 2023

Four


— October 17, 2023

Browse the Feature Archive.