17 November 2019

MAME in Retroarch 1.8.1 - Mac and iOS (WIP)

Work-In-Progress: collection of my experience in using Retroarch on Macs and on my iPad for quite some time, i.e. approx. 2 years; during that time it made tremendous improvements and added a lot of interesting cores

Disclaimer first: Retroarch (at least on Macs and iOS devices) is very fluid and sometimes experimental. Crashes occur. For a stable MAME experience, I still recommend official MAME as the main focus of this Blog.

Valid reasons for trying out MAME in Retroarch:
  • Retroarch GUI (RGUI): if you get used to this joypad-centric kind of configuration, it is very useful; during a running game, you switch to RGUI, change config and see results (this is a very disputed topic, and Retroarch opponents will call RGUI as the main problem, but for me, after quite some time, it is a very good way to test stuff) 
  • Abundance of configuration options: again, many hat this, but these various config options show how much innovation happens in Retroarch; and they are worth testing
  • Joypad support: great to fine tune - you will spend a lot of time here!
  • Shader options: you can configure a lot of shader options if you are really into it
  • Latency options: are quite interesting for the very competitive gamer
  • Cross-core UI: if you run other cores, e.g. for consoles, you gain experience and can use this for MAME as well
  • No bezel artwork: if you do not care about MAME artwork
  • Because it's fun testing: just for learning Retroarch, I just enjoy experimenting with all these possible configuration possibilities
Mac vs Retroarch iOS


Right now the iOS version of Retroarch is gearing up very fast. Version 1.8.1 is another big step forwards, and Retroarch displays icons in Playlists, which is stunning.

The MacOS Retroarch is currently somewhat caught in the middle: The Metal version works stable enough on Macs, but may cores (other than MAME cores) do not work with Metal. Without any scientific approach, the BGFX/Metal shaders in MAME standalone seem to work rock solidly.

Preferred Retroarch core: Final Burn Neo (both MacOS and iOS)

Currently my preferred core is clearly Final Burn Neo, as it is more aligned with Retroarch than regular MAME. It seems hat nightly builds of the Final Burn Neo Core are largely in line with MAME current (to the extent hat the core supports MAME roms).

Advantages of Final Burn Neo core over MAME (current) core:
  • better Retroarch integration, a lot of interesting core options that work, high score support
  • interesting Latency options for an even snappier gaming experience
While the MAME (current) core supports current romsets, it tends to crash a lot on my Mac. Also I did not manage to have high score support running in Retroarch here.


Disadvantages of Final Burn Neo core over MAME standalone:
  • obviously Final Burn Neo does not run all MAME games (e.g. from own testing cosmica, cosmicg, exerion, wbml) because it does not support these rather rare machines
  • high score support is of old style and requires a dedicated hiscore.dat, MAME standalone has the much more modern highscore support via the lua script; thus not all games support high scores
  • unfortunately this highscore support is also incompatible with the Runahead feature of Retroarch; this means for me that I need to stay with the other Latency options (which also work) if you need high score support - and seriously: MAME without high score support quite sucks
  • the MAME artwork structure is much more advanced and scales automatically to your screen resolution; Retroarch overlays are not designed for MAME artwork, and the new Retroarch option to include MAME artwork does not work for me right now

Retroarch/MAME in iOS - collection of my experience:
  • The major hassle is (and will be) how to put Retroarch onto iOS. In my experience, the only safe way is to re-sign an existing Retroarch.ipa with your own credentials and then install it via XCode on your iOS device. All other ways are problematic, and you engage into the game hacker vs. Apple. Please ask Google for help, I will not dig into that topic here.
  • After successful Retroarch installation, use iFun Box (on your Mac) for transferring roms to your iPad - do not rely on iTunes transfers because it does not create a structure; instead, create your own rom directory in iFun Box so that you can use different sub-directories for different cores; do not forget to backup the entire Retroarch directory from time to time back to your Mac (also via iFun Box), should you need to move to a different Retroarch version or if something severely went wrong so that you need to start from scratch.
  • Performance is very decent: my older iPad Air 2 works with all old-school games I use to play; my brand new iPad Air 3 just rocks
  • Expect a lot of Retroarch configuration, do that early before gaming, and expect mistakes. My personal laundry list for Retroarch configuration:
    • Do Joypad first - must work flawlessly: If you own a PS4 or XBox controller, Retroarch is heaven on iOS. The combination of iOS and a decent Bluetooth controller is simply the most casual way to play MAME games right now. Some crucial joypad configurations are:
      • my PS4 joypad works out of the box with the basic Retroarch buttons, but check them and change of they do not suit you as soon as possible
      • link the left analogue to the digital arrows
      • define a joypad hotkey for getting back to the Retroarch menu - I prefer the L1 - R1 combination. As soon as this works, you can disable the touch overlay that is activated in iOS by default
      • rewind: one of the greatest fun things in Retroarch is to rewind the game some seconds after a fatal mistake; L2, works perfectly for this on my PS4 controller
    • Update all Retroarch databases via the Online Updater. This is crucial for any further installation. As iOS Cores need to be signed in order to work, the Online Updater is useless when it comes to Cores - only those Cores of the .ipa file are there and will not update.
    • De-activate save config at exit: Retroarch has an abundance of configuration options, and you will test a lot. This is why I recommend to save new configurations only intentionally/manually, but not automatically at exit.
    • Try to configure as much as possible globally/for all cores, then per core, and only then by game - your mental health will thank you. Distinguish between:
      • shader configuration: under shader/save -> global shader preset
      • remap onfiguration: core/game remapping of the general joypad map, after you have loaded a core, head for Controls and save your remap for a core or a game
      • other configuration: all other core-specific or game-specific configuration, after having loaded a core, head for Overrides; remember: nothing about shaders or controls is saved here!
  • Accept to restart from scatch from time to time if things went utterly wrong. It is part of a decent Retroarch experience, and you will get better after several attempts ;-).
(...)

So again the warning: Runahead and Highscores - you cannot have both of them!



2 comments:

  1. Many thanks for this, and very good to hear! Kurozumi seems to be a monster shader (just like all Royale shaders), so I am not so much into this.

    Due to my own (error prone) testing, I believe that currently the bezels seem to add the highest amount of lag...

    Much appreciated, many thanks!

    ReplyDelete
  2. Yeah it is here:

    https://mameonmacs.blogspot.com/2017/02/porting-retropie-artwork-to-official.html?

    Tons of work, never finished, but you may figure out how this works!

    ReplyDelete

Any comments are welcome!