Open-source project
yoshisuga/MAME4iOS avatar
yoshisuga/MAME4iOS

MAME4iOS: a MAME port for iPhone, iPad, Apple TV and Catalyst Macs

Multiple Arcade Machine Emulator for iOS, iPadOS, tvOS, macOS (Catalyst)

775 stars130 forksCNOASSERTION

At a glance

What is it?
MAME4iOS is a port of the MAME arcade emulator to iOS, iPadOS, tvOS and macOS, with a native frontend, Metal rendering and MFI controller support. It ships as two apps because the 0.139 and 2.x romsets are incompatible, and building it from source is an Xcode exercise rather than an install.
Who is it for?
MAME4iOS is worth adopting if you want a full arcade library on an iPhone, an iPad or an Apple TV and you are willing to sideload the app, and it is the reference implementation to read if you are porting MAME to a modern Metal based platform. It is the wrong tool for a device without a recent iOS or tvOS, for anyone who needs the newest arcade romsets, since the supported sets are 0.238 and 0.139u1, and for users who will not supply their own rom files.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 78 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A MAME port aimed at modern Apple hardware

MAME4iOS is a port of MAME, the Multi Arcade Machine Emulator, to iOS, iPadOS, tvOS and macOS through Catalyst. The README states the intent plainly: the project is designed to run on modern iOS and macOS platforms, including support for the latest Apple technology enhancements such as Metal graphics and the M1 processor. The original author is David Valdeita, and the README credits Les Bird with updating it to compile and run on the latest Xcode, plus support for MFI controllers, and ToddLa with the native iOS, iPadOS and tvOS frontend and the native Metal rendering engine. More than 2000 games are supported according to the README. The practical audience is people who want an arcade library on a device that fits in a pocket, and developers who want a working example of a large emulator ported to a Metal based platform.

Two apps, because 0.139 and 2.x romsets do not mix

The most consequential design decision in the project is not a feature but a split. The README states that the currently supported romsets are 0.238 from November 2021 and 0.139u1 from September 2010, and that there are separate apps for the latest MAME and the classic 0.139u1 versions, done because the supported romsets differ greatly between the two MAME versions. If you have ever tried to run an older romset on a current MAME build, you know that romsets are not a portable format. The README offers a practical workaround for running both at once: store the newer sets in 7z format and the 0.139 ones in zip format, so the two families can coexist in the same roms directory. Expect the same version of MAME that the app was built against, and expect a separate download for the classic build.

Building from source means editing an xcconfig, not installing a package

There is no install step, so the real first use is an Xcode build. The README gives the runtime requirements as iOS 13.4 or higher, tvOS 13.4 or higher, or Mac 10.15.5 Catalina or higher, and the build machine requirement as Mac 10.13.6 with Xcode 11.4 or above. You open the MAME4iOS.xcodeproj project and set the organization and team identifier in MAME4iOS.xcconfig, where two keys carry placeholder values:

bash
    ORG_IDENTIFIER   = com.example    // CHANGE this to your Organization Identifier.
    DEVELOPMENT_TEAM = ABC8675309     // CHANGE this to your Team ID. (or select in Xcode project editor)

ORG_IDENTIFIER is a reverse DNS string that uniquely identifies your organization, and the Development Team can also be picked per target in the Xcode project editor. Entitlements are optional and only matter if you have a developer account, because they are required for tvOS TopShelf and for iCloud import, export and sync. You also select which MAME binary to link against, either 139u1 or the latest 2xx version, and then choose a build target, MAME4iOS Release for iPhone, iPad and macOS, or MAME tvOS Release for Apple TV. Sideloading does not require a paid Apple Developer Program membership, since you can add your Apple ID in Xcode preferences, select a Personal Team, create an iOS Development Profile and run it on your device. The README warns that the first build may take a long time.

Prebuilt MAME libraries by default, a fork build when you need them

By default MAME4iOS uses pre-compiled libraries for the latest MAME. The README explains that if you need a Simulator build, or simply want to build MAME yourself, there is a longer path, and it starts from a fork rather than the upstream source. The sequence the README gives runs through a make script in the forked MAME, then points the project at your clone:

bash
- run `./make-ios.sh [ios | tvos | ios-simulator | tvos-simulator | macOS]` in the forked `MAME`
- go watch [this](https://www.imdb.com/title/tt3748528/) then [this](https://en.wikipedia.org/wiki/Star_Wars_Trilogy) while you wait for `MAME` to build.
- now switch directories to your `MAME4iOS` project
- run  `./get-libmame.sh ios <path to your MAME clone>`

After that you edit xcode/MAME4iOS/MAME4iOS.xcconfig to select the libmame library and build in Xcode. The repository ships the shell scripts behind this: make-ios.sh, make-tvos.sh, make-mac.sh and get-libmame.sh, alongside a makefile, a prec-build directory and the xcode directory. The pause the README jokes about is real, since compiling MAME is a long job, and the fork is the MAME tree the Apple platform support was built on.

DRC games, 139 roms and a menu that does not fit the app

The README keeps a short list of known problems, and they are specific enough to plan around. Most 0.139 roms do not work on 2xx, which the README calls normal in the MAME world. If you run a Computer machine with a USB keyboard, the ui_mode_key is command and delete. The MAME configure menu has Add To Favorites and Select New Machine entries that do not interact with the MAME4iOS user interface. The sharpest edge is DRC: games that use it, NFL Blitz being the example, will not work correctly and may crash or hang when Use DRC is enabled, which the README attributes to arm64 support in MAME. That is a hardware and platform specific failure, and on Apple Silicon it is not a configuration flag you can work around. Anyone evaluating the project for a specific arcade title should check this list first, because a crash on one popular title is enough to shape the whole experience.

A custom licence, 2022 releases, and commits that continued afterwards

The licence is the one GitHub cannot classify, with the terms in the LICENSE file, and the project is not archived, so there is no upstream statement that the code is frozen. The release history is the opposite picture. The listed releases are 2022.5 from 2022-12-12, 2022.4 from 2022-10-02 and 2022.3 from 2022-09-17, while the last push to the repository was on 2026-08-07. In other words, the tagged builds that people install are from late 2022, and the source tree has continued to receive commits since. The tree also carries the pieces a user of a fork needs, with README_FORK.md and README_SKIN.md for fork authors and skinners, a WHATSNEW.md that the README points to for changes, a TODO.md, a docs directory, a howtobuild.txt and the iOS-res directory holding resources. The licence question matters for anyone redistributing a build, and the README does not summarise the terms, so the LICENSE file is the only place to read them.

Editorial conclusion

MAME4iOS is worth adopting if you want a full arcade library on an iPhone, an iPad or an Apple TV and you are willing to sideload the app, and it is the reference implementation to read if you are porting MAME to a modern Metal based platform. It is the wrong tool for a device without a recent iOS or tvOS, for anyone who needs the newest arcade romsets, since the supported sets are 0.238 and 0.139u1, and for users who will not supply their own rom files. Before you build it, open MAME4iOS.xcconfig and set ORG_IDENTIFIER and DEVELOPMENT_TEAM to your own values, decide whether you need the entitlements for tvOS TopShelf and iCloud, and read the DRC limitation in the README, because games that use it can hang on arm64.

Frequently asked questions

What platforms does MAME4iOS run on?

The README describes it as a port of MAME for iOS, iPadOS, tvOS and macOS through Catalyst. The stated runtime requirements are iOS 13.4 or higher, tvOS 13.4 or higher, or Mac 10.15.5 Catalina or higher, and building it requires Mac 10.13.6 with Xcode 11.4 or above.

How do I add ROMs to MAME4iOS on an iPhone?

The README describes three routes on iOS: download the rom with Safari and choose Save to Files to put it in the roms directory under On My iPhone then MAME4iOS, use the Start Server option to reach the app from your computer over the built-in web server, or use Import ROMs to pick local files or files in iCloud. On tvOS only Start Server and Import from iCloud are available.

Why does MAME4iOS come in two versions?

There are separate apps for the latest MAME and for the classic 0.139u1 release, because the supported romsets differ greatly between the two MAME versions. The README also explains that storing the newer sets in 7z format and the 0.139 sets in zip format lets both families live in the same roms directory.

Which games are known not to work?

The README says most 0.139 roms do not work on 2xx, and that games using DRC, such as NFL Blitz, will not work correctly and may crash or hang when Use DRC is enabled, which it attributes to arm64 support in MAME. It also notes that the MAME configure menu entries for Add To Favorites and Select New Machine do not interact with the MAME4iOS user interface.

Do I need a paid Apple Developer account to use MAME4iOS?

No. The README states that even without a paid Apple Developer Program membership you can sideload the app using a Mac with Xcode, by adding your Apple ID in Xcode preferences, selecting a Personal Team, creating an iOS Development Profile and running the project on your device.

Official sources

  1. Issues
  2. README
  3. Releases
  4. yoshisuga/MAME4iOS on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/yoshisuga-mame4ios.svg)](https://hysenlabs.com/projects/yoshisuga-mame4ios)

Was this useful?