Benchmarks for MAME on Raspberry Pi

There are a lot of accusations about MAME being slow, about how it is a documentation project, not an exercise in performance tuning. Most people seem to think that a 20 year old version of MAME is the best you can hope for out of a Raspberry Pi. I’m here to say that’s not the case.  If you set your expectations at a reasonable level, you tweak your settings in a sensible way, and you overclock wherever you can, you will probably be pleasantly surprised.

I’ve run benchmarks on a set of 150 games in MAME. I tried to pick a fair sampling of the classics and the more modern games, I even included a couple of obviously impossible ones. I do seem to have ended up with far too many CPS2 games though!

The benchmarks have been run on the Raspberry Pi Model B, The Raspberry Pi 2 and the Raspberry Pi 3. I ran them Overclocked. I used the same SD card, with the same system set-up and same software installed. Just popping it out and putting into the next Pi in turn.

I ran an extra set of Benchmarks on the Pi3 using the switches -str 90 -nothrottle to get a set of real world speed figures.

Here is the final Benchmark table:-

MAME Benchmarks

RomGameRealPi3Pi2PiB+
19431943: The Battle of Midway (Euro)157%467%274%139%
19441944: The Loop Master (USA 000620)119%249%142%
aburner2After Burner II84%135%75%31%
alconAlcon (US)99%172%106%40%
aliensAliens (World set 1)122%262%146%60%
aliensynAlien Syndrome (set 4, System 16B, unprotected)111%220%130%60%
androdunAndro Dunos (NGM-049 ~ NGH-049)101%168%95%41%
aodkAggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008 ~ ADH-008)101%164%92%37%
aof3Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden98%162%92%21%
agalletAir Gallet (Europe)76%104%56%18%
ar_xeonXenon (Arcadia, V 2.3)49%63%37%18%
arknoid2Arkanoid - Revenge of DOH (World)93%155%95%37%
assaultAssault (Rev B)94%150%84%33%
asteroidAsteroids (rev 4)202%412%155%58%
astormAlien Storm (World, 2 Players) (FD1094 317-0154)60%82%47%20%
avspAlien vs. Predator (Euro 940520)123%273%149%
baddudesBad Dudes vs. Dragonninja (US)79%119%67%35%
bchopperBattle Chopper128%269%148%58%
berzerkBerzerk (set 1)165%467%256%143%
bioniccBionic Commando (Euro)149%436%244%89%
blktigerBlack Tiger133%345%198%99%
bombjackBomb Jack (set 1)161%526%326%166%
bublboblBubble Bobble (Japan, Ver 0.1)134%341%200%87%
bzoneBattle Zone (rev 2)176%264%152%77%
chasehqChase H.Q. (World)81%128%73%36%
columnsColumns (World)91%143%80%41%
commandoCommando (World)164%564%341%178%
contcircContinental Circus (World)94%164%91%43%
dariusDarius (World, rev 2)110%176%96%30%
dariusgDarius Gaiden - Silver Hawk (Ver 2.5O 1994/09/19)61%80%48%
ddonpachDoDonPachi (International, Master Ver. 97/02/05)119%222%125%60%
ddragon2Double Dragon II - The Revenge (World)97%168%86%27%
ddsomDungeons & Dragons: Shadow over Mystara (Euro 960619)115%242%135%
defenderDefender (Red label)175%632%337%105%
dkongDonkey Kong (US set 1)148%424%207%65%
donpachiDonPachi (US)114%207%118%54%
driftoutDrift Out (Europe)129%257%147%72%
f15seF-15 Strike Eagle (rev. 2.2 02/25/91)32%38%20%9%
fatfury2Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (NGM-047 ~ NGH-047)97%158%92%38%
ffightFinal Fight (World, set 1)134%326%184%77%
froggerFrogger130%334%195%87%
fsharkFlying Shark (World)134%250%138%51%
galagaGalaga (Namco rev. B)172%703%413%175%
galaxianGalaxian (Namco set 1)132%375%209%93%
garouGarou - Mark of the Wolves (NGM-2530)89%136%79%
gaunt2Gauntlet II84%138%70%29%
gforce2Galaxy Force 263%89%48%24%
ghoulsGhouls'n Ghosts (World)136%358%200%99%
gngGhosts'n Goblins (World? set 1)146%434%245%120%
gorfGorf125%271%146%81%
gt98Golden Tee '98 (v1.10)70%104%56%24%
gyrussGyruss97%172%99%45%
harddrivHard Drivin' (cockpit, rev 7)53%70%40%13%
hiticeHit the Ice (US)122%272%147%63%
hydraHydra103%191%103%44%
hypersptHyper Sports148%452%253%92%
invadersSpace Invaders / Space Invaders M182%849%486%244%
junglekJungle King (Japan)129%320%190%89%
klaxKlax (set 1)168%796%436%170%
kodThe King of Dragons (World 910805)126%291%167%78%
kof98The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420)94%151%89%
kungfumKung-Fu Master (World)34%40%23%8%
magdrop3Magical Drop III95%153%87%38%
marbleMarble Madness (set 1)87%144%74%33%
marioMario Bros. (US, Revision F)125%298%137%41%
megaman2Mega Man 2: The Power Fighters (USA 960708)119%258%142%
mercsMercs (World 900302)136%344%195%103%
mf_bdashBoulder Dash (Max-A-Flex)90%154%79%27%
mkMortal Kombat (rev 5.0 T-Unit 03/19/93)92%149%73%22%
mk3Mortal Kombat 3 (rev 2.1)75%110%61%31%
mk4Mortal Kombat 4 (version 3.0)27%31%18%6%
mp_soni2Sonic The Hedgehog 2 (Mega Play)56%72%40%15%
mpatrolMoon Patrol175%707%385%142%
mplanetsMad Planets164%519%290%133%
mrdrillrMr. Driller (US, DRI3/VER.A2)25%28%16%7%
mshMarvel Super Heroes (Euro 951024)117%254%144%
mslugMetal Slug - Super Vehicle-00198%161%91%37%
mslug5Metal Slug 5 (NGM-2680)98%166%94%
nbajamNBA Jam (rev 3.01 04/07/93)85%136%70%22%
ninjawThe Ninja Warriors (World)92%135%77%37%
openice2 On 2 Open Ice Challenge (rev 1.21)69%99%55%30%
opwolfOperation Wolf (World, set 1)117%261%134%43%
outrunOut Run (sitdown/upright, Rev B)70%105%60%20%
p47P-47 - The Phantom Fighter (World)114%234%126%43%
pacmaniaPac-Mania71%103%55%15%
pacmanPac-Man (Midway)197%1808%998%425%
parodiusParodius DA! (World, set 1)126%324%176%77%
pbobblePuzzle Bobble (Japan, B-System)114%238%126%53%
pbobble4Puzzle Bobble 4 (Ver 2.04O 1997/12/19)65%87%51%
pc_smbSuper Mario Bros. (PlayChoice-10)151%332%182%82%
pdriftPower Drift (World, Rev A)67%98%54%25%
pengoPengo (set 1 rev c)202%1938%1,116%392%
pitfightPit Fighter (rev 9)71%104%35%13%
plottingPlotting (World set 1)159%579%351%144%
poleposPole Position (World)112%241%119%34%
pongPong (Rev E) external [TTL]31%35%20%8%
punchoutPunch-Out!! (Rev B)150%317%183%101%
puyoPuyo Puyo (World)81%120%67%34%
pzloop2Puzz Loop 2 (Euro 010302)118%258%148%
qbertQ*bert (US set 1)164%540%301%127%
raidenRaiden (set 1)111%209%117%57%
raiden2Raiden II (US, set 1)71%100%57%26%
raidendxRaiden DX (UK)73%103%61%30%
rbislandRainbow Islands (new version)129%316%167%54%
ridgeracRidge Racer (Rev. RR3, World)20%22%13%4%
roadblstRoad Blasters (upright, rev 4)70%105%53%20%
robocopRobocop (World revision 4)84%134%78%42%
robotronRobotron: 2084 (Solid Blue label)178%686%363%120%
rthunderRolling Thunder (rev 3)118%259%142%51%
rtypeR-Type (World)130%285%159%64%
rtype2R-Type II130%293%164%63%
rtypeleoR-Type Leo (World)91%154%88%44%
rungunRun and Gun (ver EAA 1993 10.8)96%172%96%45%
samsho3Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087)102%169%93%30%
sdfightSD Fighters (Korea)111%221%115%50%
sf2ceStreet Fighter II': Champion Edition (World 920513)119%261%150%70%
sfaStreet Fighter Alpha: Warriors' Dreams (Euro 950727)117%252%140%
sfexStreet Fighter EX (Euro 961219)41%51%30%13%
shangonSuper Hang-On (sitdown/upright) (unprotected)75%116%68%24%
smashtvSmash T.V. (rev 8.00)99%171%87%26%
soulclbrSoul Calibur (World, SOC14/VER.C)24%28%16%8%
splatterSplatter House (World, new version (SH3))72%106%57%14%
spnchoutSuper Punch-Out!! (Rev B)149%314%182%105%
ssideki3Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - Eikou e no Michi101%172%96%44%
ssprintSuper Sprint (rev 4)67%99%51%24%
starwarsStar Wars (set 1)68%81%45%22%
striderStrider (USA, B-Board 89624B-2)130%327%183%82%
stunrunS.T.U.N. Runner (rev 6)73%112%61%23%
suprmrioVs. Super Mario Bros. (set SM4-4 E)132%328%164%75%
sws92Super World Stadium '92 (Japan)85%140%81%37%
tbowlTecmo Bowl (World)120%210%124%62%
tekkenTekken (World, TE4/VER.C)35%42%25%12%
tetrisTetris (set 4, Japan, System 16A) (FD1094 317-0093)150%468%280%118%
thndrbldThunder Blade (upright) (FD1094 317-0056)82%133%74%31%
timepltTime Pilot148%430%240%97%
tmntTeenage Mutant Ninja Turtles (World 4 Players)129%324%184%68%
trackfldTrack & Field147%451%194%76%
unsquadU.N. Squadron (USA)136%368%203%95%
varthVarth: Operation Thunderstorm (World 920714)129%298%168%79%
vfVirtua Fighter54%69%41%
vrVirtua Racing54%69%40%
vsavVampire Savior: The Lord of Vampire (Euro 970519)113%245%135%
wcbowlWorld Class Bowling (v1.66)61%82%45%19%
weclemanWEC Le Mans 24 (v2.00, set 1)110%202%115%44%
willowWillow (World)131%350%194%88%
xenophobXenophobe190%349%195%73%
xmcotaX-Men: Children of the Atom (Euro 950331)115%250%139%
xmultiplX Multiply (World, M81)119%251%138%47%
xmvsfX-Men Vs. Street Fighter (Euro 961004)112%244%138%
zaxxonZaxxon (set 1)187%1101%637%283%

Getting the most out of the Raspberry Pi

I made some small changes to /boot/config.txt and to mame.ini to try and get the most out of the hardware.

Obviously set up MAME’s mame.ini so that your roms/samples etc. are all located correctly; then these are the settings I changed from the default.

#
# CORE ARTWORK OPTIONS
#
artwork_crop  0
use_backdrops 0
use_overlays  0
use_bezels    0
use_cpanels   0
use_marquees  0
#
# CORE SOUND OPTIONS
#
samplerate    22000
#
# OSD ACCELERATED VIDEO OPTIONS
#
filter        0

This just turns off artwork, lowers the sound sample rate and makes sure we aren’t applying any filters.

Then I edited the /boot/config.txt file and made these changes.

hdmi_group=2
hdmi_mode=4

This just sets the screen resolution to 640×480. The smaller the screen resolution, the less the GPU has to update, the faster it all goes.

I also built SDL2-2.0.4 from source to get GPU hardware support, at the moment Raspbian comes with 2.0.2 which only uses software. See my tutorial on compiling MAME for details on doing that.

None of this helps at all with the benchmarks but does help when you try to run the games for real.

These are the overclock settings I used. The Pi’s were all fitted with heatsinks; the Pi3 is also in an open case with built in fan. I used a high quality 2.5A power supply for all the tests.

Raspberry Pi B+Raspberry Pi 2Raspberry Pi 3
raspi-config preset "High"
arm_freq=950
sdram_freq=450
core_freq=250
over_voltage=6

gpu_mem=128
raspi-config preset "High"
arm_freq=1000
sdram_freq=500
core_freq=500
over_voltage=2

gpu_mem=320

arm_freq=1400
sdram_freq=500
core_freq=500
over_voltage=6

gpu_mem=320

To run the benchmarks I wrote a little shell script, It looks like this

#!/bin/bash
BR='\033[0;33m'
NC='\033[0m' # No Color
while read -r romlist || [[ -n "$romlist" ]]; do
declare -a array=( $romlist )
rom="${array[0]}"
echo -e "${BR}Starting: $rom ${NC} at $(date)"
./mame -listfull $rom >> "$2"
./mame -str 90 -nothrottle $rom >> "$2"
./mame -bench 90 $rom >> "$2"
done < "$1"

This will open a text file passed from the command line and use the first word of each line as the name of a game to run benchmarks on. Then I wrote a list of games and saved it to a file and ran the benchmarks using the command bash bench.sh romlist.txt pi3oc.txt. Then it was just some text editing and a little massaging in a spreadsheet to get a single table from the five output files.