NOTE! New MAME builds report benchmarks in a percentage, and not frames per second. When submitting benchmarks, please work out the framerate
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 -noautoframeskip -frameskip 0 -seconds_to_run 100 -nothrottle -nosleep -video ddraw -skip_gameinfo -effect none -nowaitvsync -noreadconfig
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
mame -noautoframeskip -frameskip 0 -frames_to_run 6000 -nothrottle -nosleep -ddraw -effect none -nowaitvsync -noreadconfig ROMNAME
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
-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
-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.
-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
-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.