/MAME4iOS

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

Primary LanguageCOtherNOASSERTION

MAME4iOS

Original Author: David Valdeita (Seleuco)

This is a port of MAME 0.139u1 for iOS 12+, iPadOS 12+, tvOS 12+ and on both macOS Catalina & Big Sur using Mac Catalyst.

Download IPAs for iOS and tvOS here

Chat on Discord!

See what's new

Screenshots

iPhone Screenshot AppleTV Screenshot macOS Screenshot

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 romset version is MAME 0.139u1 (September 2010).

It has been updated to compile and runs on Xcode 11+/iOS/tvOS 12+ by Les Bird, and he has graciously added support for MFI Controllers.

This repo adds additional support for:

  • 64-bit binary to run on modern and future iOS devices
  • Supports modern device screen sizes, including iPhone X/XR/XS/XS Max and iPad Pro
  • A native iOS/iPadOS/tvOS frontend (by @ToddLa, new in 2020!)
  • A native Metal rendering engine (by @ToddLa, new in 2020!)
  • tvOS support (new in 2019!)
  • An in-app web server to transfer files from your computer (new in 2019!)
  • Transfer ROMs, Artwork, and ROMSETs via AirDrop or iOS File Sharing (new in 2020!)
  • 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
  • Builds in Xcode 11.4/12.x and runs on latest iOS 12/13/14 versions

Building / Installation / Sideloading

Xcode

Requirements: iOS 12.4 or higher, tvOS 12.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.

  1. Open the Xcode project in MAME4iOS.xcodeproj

  2. Set the Organization and Team Identifer in MAME4iOS.xcconfig

    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)
    
    • The ORG_IDENTIFIER is 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.
  3. Enable entitlements in MAME4iOS.xcconfig (optional, only if you have a developer account)

    • entitlements are required for tvOS TopShelf and iCloud Import/Export/Sync.
  4. Select the MAME binary to link to, in MAME4iOS.xcconfig

    • 139u1 or latest MAME 2xx version.
  5. Choose the appropriate build target in Xcode:

    • MAME4iOS Release (iPhone/iPad)
    • MAME tvOS Release (AppleTV)
    • MAME4mac Release (Mac Catalyst)
  6. Build:

    1. If you are a developer: Build and ▶︎ Run on your device. Done.
      • NOTE first time build may take a long time.
    2. If you are not a developer…
      1. XcodePreferences add your Apple ID, select your Personal Team, and create an iOS Development Profile.
      2. Select the project name on the left pane and make sure your personal team is selected
      3. Hit the ▶︎ Run button to install on your device. Done.

How to build MAME4iOS with the latest version of MAME

By default MAME4iOS will use a 139u1 version of MAME.

  • if you want to use the latest pre-build libmame (recomended)

    • edit xcode/MAME4iOS/MAME4iOS.xcconfig to select the libmame library.
    • build and run in Xcode.
    • NOTE there are only pre-built libraries for a device, not for the Simulator.
  • if you want to build MAME

    • clone this fork of MAME
    • switch to the ios-osd branch.
    • run ./make-ios.sh (or ./make-ios.sh tvos) in the forked MAME
    • go watch this then this while you wait for MAME to build.
    • now switch directories to your MAME4iOS project
    • run ./get-libmame.sh ios <path to your MAME clone>
    • edit xcode/MAME4iOS/MAME4iOS.xcconfig to select the libmame library.
    • build and run in Xcode.

Issues running current MAME

  • most MAME 139 ROMs dont work on 2xx, but that is just normal life in MAME world, see this.
  • tracking down a sound issue and other random stuff.
  • if you run a Computer machine, you need a USB keyboard, and \ (backslash) is the ui_mode_key.
  • the hiscore and cheat system has not been updated.
  • MAME Configure menu has a Add To Favorites and Select New Machine that dont interact with the MAME4iOS Ux.

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/COIN for Player 1
  • Start: START for Player 1
  • Menu: Open the MAME4iOS menu
  • Exit: Exit the game

Adding ROMs to MAME

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 (from the options button or pressing Y + Menu in-game) to start the webserver, and enter the address shown on the web browser on your computer.

Yoiu 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.

tvOS

You can upload ROMs to MAME on your AppleTV using a computer. After MAME starts, you'll be shown a welcome screen with the address of the AppleTV that you can enter in your web browser. Add MAME ROMs to the roms directory using the provided web uploader.

Game Controller Support

Pair your MFi, Xbox, or Dual Shock controller with your iOS device, and it should 'just work'. Up to 4 controllers are supported.

Hotkey combinations (while in-game)

The following hotkey combinations are supported:

MENU Open MAME4iOS MENU
MENU+L1 Player Coin
MENU+R1 Player Start
MENU+L2 Player 2 Coin
MENU+R2 Player 2 Start
MENU+A Speed 2x
MENU+B Pause MAME
MENU+X Exit Game
MENU+Y Open MAME menu
MENU+DOWN Save State ①
MENU+UP Load State ①
MENU+LEFT Save State ②
MENU+RIGHT Load State ②

Dual analog support

The right stick on the extended controller profile is fully supported, with support for 4 players (thank you @DarrenBranford!)

Trigger buttons

The trigger buttons are mapped to analog controls and should be useful in assigning for pedal controls, for example.

Siri Remote

MAME4iOS is now usable on a AppleTV using only the stock Siri Remote. You can only play games that use only the A and B buttons.

to start playing a game, hit MENU and select "Coin + Start" from the list.

TRACKPAD MOVE   - emulate a dpad or joystick
TRAKPAD CLICK   - A button
PLAY            - B button
MENU            - bring up the MAME4iOS menu

Touch Screen Lightgun Support (new in 2018, iOS only)

You can now use the touch screen for lightgun games like Operation Wolf and Lethal Enforcers. Holding down your finger simulates holding down the trigger, which is mapped to the "X" button. Tap with 2 fingers for the secondary fire, or the "B" button.

In full screen landscape mode, you can hide the onscreen controls using the "D-Pad" button at the top of the screen. When using a game controller, the top button of the screen opens the menu to load/save state or access settings.

Touch Lightgun setup is in Settings -> Input -> Touch Lightgun, where you can disable it altogether, or use tapping the bottom of the screen to simulate shooting offscreen (for game that make you reload like Lethal Enforcers).

Shortcuts while in Touch Screen Lightgun mode

  • Touch with 2 fingers: secondary fire ("B" button)
  • Touch with 3 fingers: press start button
  • Touch with 4 fingers: insert coin

Turbo Mode Toggle for Buttons (new in 2018)

Under Settings -> Game Input, there's a section called "Turbo Mode Toggle", that lets you turn on turbo firing for individual buttons. Holding down the button causes the button to fire in turbo mode.

Touch Analog Mode (new in 2019, iOS only)

Also in Settings -> Game Input, you'll find a section called "Touch Analog" and "Touch Directional Input". "Touch Analog" lets you use your touchscreen as an analog device for games using input controls such as trackballs and knobs. These include games like Arkanoid or Crystal Castles. You can adjust the sensitivity of the analog controls, and also choose to hide the d-pad/analog stick in this mode.

"Touch Directional Input" is rather experimental and is for vertical shooters so you can move around using your finger. It still needs some work so just a word of caution :)

License

MAME4iOS is distributed under the terms of the GNU General Public License, 2 (GPL-2.0).