This guide covers non-arcade software emulation in libretro MAME and MESS cores. In this context, "software" and "software lists" describe non-arcade machines emulated by MAME or MESS. Software lists live in the hash database and tell MAME or MESS how to start a game.

Why this setup is more complex than arcade emulation

Software list emulation requires a different planning approach than arcade machine emulation, and the documentation notes that it is more complicated to set up.

Understand the core variants

The libretro core ecosystem includes multi-software emulators that support software emulation. Three families exist: MAME, MESS, and UME. Each family is available in multiple versions so users can match a core to their preference.

Arcade (MAME) is currently the only MAME core for most host systems that supports emulation of both software and arcade systems. It is updated regularly and most of the time is in line with the official MAME project release.

Arcade (MAME 2016) is an archived snapshot of MAME from the 0.174 release. It is currently no longer built for RetroArch.

There is currently no dedicated MESS core in RetroArch except for Android ARM64. It is also still provided in RetroPie as the MESS2016_libretro core.

UME cores are no longer in RetroArch. Multi (UME 2015) was a snapshot of the Universal Machine Emulator.

Use the correct ROM set version for your emulator

As in MAME arcade emulation, each core requires its own distinct version of software list ROM sets. The table below lists the required ROM version per emulator.

Two ways to launch software list machines

  • Method 1 — MAME frontend direct launch: uses the inbuilt MAME logic and hash files to launch your games.
  • Method 2 — RetroArch frontend friendly via libretro CMD file launch: uses an extra libretro feature to pass command line functions to the core.

Method 1: MAME frontend direct launch

Step 1: Obtain hash files that match your core version

To use MAME's internal software list functions, you need the right supporting files from the mainline MAME standalone emulator: the hash files. For the MAME (current) core, download the newest version of the Windows MAME emulator. For earlier versions, get the exact version you require, because the version of the hash files must match the libretro core version.

Step 2: Place hash files in the RetroArch system folder

Extract the MAME download and take the "hash" folder, then move it into the RetroArch folder structure. If your device has limited storage, copy only the hash files for the system you want to emulate. The folder structure is the same for every machine, but the naming depends on the machine you are trying to emulate. For the Atari 7800 example, the hash file is a7800.xml.

TEXT
"YourPath"/RetroArch/system/mame
"YourPath"/RetroArch/system/mame/hash
"YourPath"/RetroArch/system/mame/hash/a7800.xml

Step 3: Build the games folder structure

Create folders in a games directory of your choice. The last folder must be named as MAME requires; for the Atari 7800 example this is "a7800". Put the required .zip games and .zip BIOS files there, such as a7800.zip at the parent level and asteroid.zip inside the a7800 folder.

TEXT
"YourPath"/Games/Atari 7800/a7800
"YourPath"/Games/Atari 7800/a7800.zip
"YourPath"/Games/Atari 7800/a7800/asteroid.zip

Step 4: Load the game

In RetroArch, choose "Load Content" and browse to the game's .zip file — in the example, asteroid.zip — then launch it with the MAME current core.

Method 2: RetroArch frontend friendly via libretro .cmd file launch

This method follows the same folder structure as above, but allows custom naming outside of the hash file included with MAME. It uses custom additions to the libretro MAME cores, specifically text files (.cmd) that replicate sending command line actions as you can with mainline MAME.

Create a .cmd file

Following the Atari 7800 example, create a dedicated asteroid.cmd file containing the line below.

TEXT
a7800 -cart asteroid -rp "[YourPath]/mame/roms/a7800"

In RetroArch, choose "Load Content" and browse to asteroid.cmd; it should launch with the MAME current core.

Reference table · Scroll horizontally to see all columns.

EmulatorRequired ROM versionNotes
MAME (latest version)MAME (latest version)or same version if not in sync with MAME upstream
MAME 2016MAME 0.174RetroArch core no longer provided
MESS 2015MAME 0.160RetroArch core no longer provided
UME 2015MAME 0.160RetroArch core no longer provided
AI-generated editorial illustration: RetroArch Software List Emulation: A Start-to-Finish Setup GuideView full image
AI illustration — not a game screenshot
AI-generated editorial illustration; not a game screenshot.
AI-generated illustration
Evidence and publication details

Sources & references

Published .

RetroArch: softwarelist getting started — official gaming software documentation https://raw.githubusercontent.com/libretro/docs/master/docs/guides/softwarelist-getting-started.mdRetrieved Oct 8, 2026

Something doesn’t match your setup?

Suggest a correction