MAME4iOS
Multiple Arcade Machine Emulator for iOS, iPadOS, tvOS, macOS (Catalyst)
Install / Use
/learn @yoshisuga/MAME4iOSREADME
MAME4iOS
Original Author: David Valdeita (Seleuco)
This is a port of MAME for iOS, iPadOS, tvOS and macOS. MAME4iOS is designed to run for modern iOS and macOS platforms, including support for the latest Apple technology platform enhancments such as Metal graphics and the M1 processor.
Download IPAs for iOS and tvOS here
Screenshots

Summary
MAME stands for Multi Arcade Machine Emulator, and lets you play arcade games from the past 30+ years on a device that fits in your pocket! My teenage self from decades ago would be replaying that "mind blown GIF" over and over again, but that GIF did not exist back then.
More than 2000 games are supported, and the currently supported romsets are 0.238 (November 2021) and 0.139u1 (September 2010). Note that there are separate apps for the latest MAME and the classic 0.139u1 versions. This is done because the supported romsets differ greatly between the the MAME versions.
It has been updated to compile and runs on the latest Xcode by Les Bird, and he has graciously added support for MFI Controllers.
Since then, a large number of features have been added:
- 64-bit binary to run on modern and future iOS and macOS devices, including Macs using the M1 series of processors
- Supports modern device screen sizes for iPhone and iPad
- tvOS support (new in 2019!)
- Multiple MFI controllers (up to 4 with dual analog support - @DarrenBranford)
- Supports using the touch screen as a lightgun
- Turbo mode toggle for buttons
- Touch analog for games like Arkanoid
- An in-app web server to transfer files from your computer (new in 2019!)
- A native iOS/iPadOS/tvOS frontend (by @ToddLa, new in 2020!)
- A native Metal rendering engine (by @ToddLa, new in 2020!)
- Transfer ROMs, Artwork, and ROMSETs via AirDrop or iOS File Sharing (new in 2020!)
- Builds in the latest Xcode
Building / Installation / Sideloading
Xcode
Requirements: iOS 13.4 or higher, tvOS 13.4 or higher, or Mac 10.15.5 (Catalina) or higher to run.
Requirements: Mac 10.13.6 with Xcode 11.4 or above to bulid.
Even if you are not in the paid Apple Developer Program, you can sideload the app using a Mac with Xcode.
-
Open the Xcode project in
MAME4iOS.xcodeproj -
Set the Organization and Team Identifer in
MAME4iOS.xcconfigORG_IDENTIFIER = com.example // CHANGE this to your Organization Identifier. DEVELOPMENT_TEAM = ABC8675309 // CHANGE this to your Team ID. (or select in Xcode project editor)- The
ORG_IDENTIFIERis a reverse DNS string that uniquely identifies your organization. - You can also set the Development Team via the drop down in the Xcode project editor, for each Target.
- You can find your TeamID here.
- The
-
Enable entitlements in
MAME4iOS.xcconfig(optional, only if you have a developer account)- entitlements are required for tvOS TopShelf and iCloud Import/Export/Sync.
-
Select the MAME binary to link to, in
MAME4iOS.xcconfig- 139u1 or latest
MAME 2xxversion.
- 139u1 or latest
-
Choose the appropriate build target in Xcode:
MAME4iOS Release(iPhone/iPad/macOS)MAME tvOS Release(AppleTV)
-
Build:
- If you are a developer: Build and
▶︎Run on your device. Done.- NOTE first time build may take a long time.
- If you are not a developer…
Xcode→Preferencesadd your Apple ID, select your Personal Team, and create an iOS Development Profile.- Select the project name on the left pane and make sure your personal team is selected
- Hit the
▶︎Run button to install on your device. Done.
- If you are a developer: Build and
How to build latest version of MAME (optional)
By default MAME4iOS will use pre-combiled libraries for the latest MAME, if you need a Simulator build, or just want to build MAME, you need to...
- clone this fork of
MAME - run
./make-ios.sh [ios | tvos | ios-simulator | tvos-simulator | macOS]in the forkedMAME - go watch this then this while you wait for
MAMEto build. - now switch directories to your
MAME4iOSproject - run
./get-libmame.sh ios <path to your MAME clone> - edit
xcode/MAME4iOS/MAME4iOS.xcconfigto select thelibmamelibrary. - build and run in Xcode.
Issues running latest MAME
- most
MAME139 ROMs dont work on 2xx, but that is just normal life inMAMEworld, see this. - if you run a
Computermachine, and you use a USB keyboard, ⌘+DELETE is is the ui_mode_key. MAMEConfigure menu has aAdd To FavoritesandSelect New Machinethat dont interact with theMAME4iOSUx.- Games that use DRC (like NFL Blitz....) will not work correctly and may crash hang, if
Use DRCis enabled, This is an issue with the arm64 support inMAME.
Mixing 139 and 2xx ROMs
Some romsets are not compatible between MAME 139 and newer versions, the best way to use both romsets at the same time is to make sure the newer ones are stored in the 7z format and the 139 ones in the zip format. This way both files can co-exist.
tvOS
MAME for tvOS support was added in early 2019, and it currently can run games has full native UI support and MFI controller support with most notably:
- MFI controllers, Xbox One, PS4 DualShock, and Siri Remote support.
Using MAME
When you start MAME4iOS, you are now presented with an updated and native iOS/tvOS MAME UI
MAME UI Controls
- Onscreen D-Pad or MFI Controller D-Pad: Move through the menu
- A Button: Start Game
In-Game
- Coin:
SELECT/COINfor Player 1 - Start:
STARTfor Player 1 - Menu: Open the MAME4iOS menu
- Exit: Exit the game
Adding ROMs to MAME4iOS
iOS
For iOS users, you can download ROMs using Safari and save them to the roms directory by choosing the "Save to Files" (go to "On My iPhone" -> MAME4iOS) option after downloading a ROM.
You can also use the "Start Server" option in the menu to start the webserver, and enter the address shown on the web browser on your computer.
You can also use the "Import ROMs" option to open up the native iOS file browser and load files that are saved locally or that exist on iCloud.
You can use "Import from iCloud" to download ROMs previously uploaded to iCloud.
tvOS
on tvOS the only options are to copy ROMs via "Start Server" or downloading via "Import from iCloud".
Adding Softare to MAME4iOS
MAME4iOS supports two types of Software
-
Software List (aka MESS) based software, installed via ZIP files into
roms -
Single file based image (cart, flop, dsk, ...), installed into
software
ROMless Machines
MAME4iOS includes a set of Machines/Systems that dont need any ROMs installed to run, and can be used "out of the box".
ROMless Arcade Machines
Name |Description
------------|-----------------------
pongf |Pong (Rev E) [TTL]
pongd |Pong Doubles [TTL]
rebound |Rebound (Rev B) [TTL]
breakout |Breakout [TTL]
ROMless Console Machines
The following is a list of some of the Consoles and file types supported by MAME4iOS "out of the box"
Name |Description |Media File Types --------|-----------------------------------------------------------|---------------- a2600 |Atari 2600 (NTSC) |a26, bin a2600p |Atari 2600 (PAL) |a26, bin gen_nomd|Genesis Nomad (USA Genesis handheld) |md, smd, bin, gen genesis |Genesis (USA, NTSC) |cmd, smd, bin, gen megadrij|Mega Drive (Japan, NTSC) |md, smd, bin, gen megadriv|Mega Drive (Europe, PAL) |md, smd, bin, gen megajet |Mega Jet (Japan Mega Drive handheld) |md, smd, bin, gen nes |Nintendo Entertainment System / Famicom (NTSC) |unif, nes, unf nespal |Nintendo Entertainment System (PAL) |unif, nes, unf 1292apvs|1292 Advanced Programmable Video System |rom, tvc, bin, pgm 1392apvs|1392 Advanced Programmable Video System |rom, tvc, bin, pgm pico |Pico (Europe, PAL) |md, bin picoj |Pico (Japan, NTSC) |md, bin picou |Pico (USA, NTSC) |md, bin vboy |Virtual Boy |vb, bin sgx |SuperGrafx |cue, gdi, toc, chd, bin, cdr, nrg, pce, iso pce |PC Engine |cue, gdi, toc, chd, bin, cdr, nrg, pce, iso tg16 |TurboGrafx 16 |cue, gdi, toc, chd, bin, cdr, nrg, pce, iso
Console Machines and Computers (that require BIOS)
The following is a list of some of the Consoles, Computers, and file types supported by MAME4iOS, but BIOS files must be installed first.
Name |Description |Media File Types --------|-----------------------------------------------------------|---------------- a5200 |Atari 5200 |rom, a52, bin, car a800 |Atari 800 (NTSC) |rom, xfd, atr, ds
