Submitting Benchmarks:

NOTE! New MAME builds report benchmarks in a percentage, and not frames per second. When submitting benchmarks, please work out the framerate and submit that instead. For instance, if you benchmark sf2 (60FPS according to MAWS) and it reports "205%", then your framerate is 60*2.05=123FPS.


The various command-line options for benchmarking MAME change over time as MAME evolves. Listed below are the commands I use to benchmark various families of MAME builds. Note the version number listed next to each, and use it as a guide to benchmark your particular build.

mame 0.117
mame -noautoframeskip -frameskip 0 -seconds_to_run 100 -nothrottle -nosleep -video ddraw -skip_gameinfo -effect none -nowaitvsync -noreadconfig ROMNAME

mame 0.90, 0.80, 0.70
mame -noautoframeskip -frameskip 0 -frames_to_run 6000 -nothrottle -nosleep -ddraw -skip_gameinfo -skip_disclaimer -effect none -nowaitvsync -noreadconfig ROMNAME

mame 0.60
mame -noautoframeskip -frameskip 0 -frames_to_run 6000 -nothrottle -nosleep -ddraw -effect none -nowaitvsync -noreadconfig ROMNAME

mame 0.53
mame -noautoframeskip -frameskip 0 -frames_to_run 6000 -nothrottle -ddraw -effect none -nowaitvsync -noreadconfig ROMNAME

What the options do:

-noautoframeskip: Tells mame not to try and adjust the frameskip automatically. Normally if a game is running slower than 100% speed, MAME will skip the rendering of frames to speed up the gameplay. We want MAME to render all frames for benchmarking.

-frameskip 0: Again, tell MAME not to skip any frames.

-seconds_to_run 100: Run the benchmark for 100 seconds (average of 60FPS per game means 6000 frames are rendered) and exit. This flag only works in newer builds of MAME.

-frames_ro_run 6000: Render 6000 frames (at an average of 60FPS, is 100 seconds of game time) and exit. This flag only works in older builds of MAME.

-nothrottle: Tell MAME to run as fast as possible, and not cap the framerate at 60FPS (or whatever the game default is). This allows us to get a benchmark reading.

-nosleep: Normally MAME will play nicely with the system and not try to tie up all CPU resources. This tells MAME not to do that, and take up all resources possible during the benchmark.

-video ddraw
-ddraw: Use DirectDraw instead of other video drawing subsystems. On very high-end systems with games that run extremely fast (say, Puckman on a Core2Duo 3GHz machine) you'll see wide variances between Direct3D, DirectDraw, etc. But the purpose of this site is more to determine "playable" vs "unplayable" games than it is to argue over D3D getting 4000FPS and DDraw getting 4200FPS in Puckman. DDraw was chosen because almost any Windows system with even the most basic AGP video card can support it.

-skip_gameinfo: Don't tell me information about the game.

-skip_disclaimer: Don't tell me I'm a filthy pirate.

-effect none: Don't use any blitting effects like scanlines, filtering, RGB overlays, etc. These all take up CPU time and affect the benchmark results.

-nowaitvsync: Don't wait for the screen's refresh before sending a frame. Doing this normally results in "image tearing" where you see half a frame from one draw process and half from another as it draws between your monitor's hardware redraw. But because we are benchmarking we want MAME to run as fast as possible and not wait for anything.

-noreadconfig: Ignore any local config files (mame.ini, etc) in case there are bonehead things in there that will affect the benchmark.

ROMNAME: The name of the ROM you are benchmarking, surprisingly.