
Using the program
-----------------

The usual way to run MAME is by telling it to run a particular game:

	mame <gamename> [options]

For example:

	mame robby -nosound

...will run Robby Roto without sound. There are many, many options 
available. All currently supported options are listed below.

An alternative way to run MAME is to give it a command:

	mame <command> [parameters]

For example:

	mame -listsource gridlee
	
...will print the name of the source file where the gridlee driver lives to
the screen. There are just a handful of these commands in MAME. They are
all listed below, just before the options list.



Default Keys
------------

All the keys below are fully configurable in the user interface. This list
shows the standard keyboard configuration.

Tab       Toggles the configuration menu
    
~         Toggles the On Screen Display. Use the up and down arrow keys to
          select which parameter to modify (global volume, mixing level, 
          gamma correction etc.) Use the left and right to arrow keys to 
          change modify the value. Some parameters adjust with finer or
          coarser control if you hold down the CTRL or SHIFT keys while
          pressing the left/right arrows. Use the ENTER key to reset a value
          to its default.

P         Pauses the game

SHIFT+P   While paused, advances to next frame

F1        Toggle crosshairs for games that use them

F2        Service Mode

F3        Resets the game

F4        Shows the game palette, decoded GFX, and any tilemaps. Use the
          ENTER key to switch between the three modes (palette, graphics,
          and tilemaps). Press F4 again to turn off the display. The key
          controls in each mode vary slightly:

             * Palette/colortable mode:
                [ ] - switch between palette and colortable modes
                up/down - scroll up/down one line at a time
                pgup/pgdn - scroll up/down one page at a time
                home/end - move to top/bottom of list
                -/+ - increase/decrease the number of colors per row
                ENTER - switch to graphics viewer

             * Graphics mode:
                [ ] - switch between different graphics sets
                up/down - scroll up/down one line at a time
                pgup/pgdn - scroll up/down one page at a time
                home/end - move to top/bottom of list
                left/right - change color displayed
                R - rotate tiles 90 degrees clockwise
                -/+ - increase/decrease the number of tiles per row
                ENTER - switch to tilemap viewer

             * Tilemap mode:
                [ ] - switch between different tilemaps
                up/down/left/right - scroll 8 pixels at a time
                SHIFT+up/down/left/right - scroll 1 pixel at a time
                CTRL+up/down/left/right - scroll 64 pixels at a time
                R - rotate tilemap view 90 degrees clockwise
                -/+ - increase/decrease the zoom factor
                ENTER - switch to palette/colortable mode

          Note: Not all games have decoded graphics and/or tilemaps.

F6        Toggle cheat mode (if started with "-cheat")

F7        Load a save state. You will be requested to press a key to
          determine which save state you wish to load. Note that the save
          state feature is not supported for a large number of drivers. If
          support is not enabled for a given driver, you will receive a 
          warning when attempting to save or load.

SHIFT+F7  Create a save state. Requires an additional keypress to identify
          the state, similar to the load option above.

F8        Decrease frame skip on the fly

F9        Increase frame skip on the fly

F10       Toggle speed throttling

F11       Toggles speed display

SHIFT+F11 Toggles profiler display (debug builds only)

F12       Saves a screen snapshot.

INSERT    Fast forward. While held, runs the game with throttling disabled
          and with the maximum frameskip.

ESC       Exits emulator




Core commands
-------------

-help / -?

	Displays current MAME version and copyright notice.

-validate / -valid

	Performs internal validation on every driver in the system. Run this
	before submitting changes to ensure that you haven't violated any of
	the core system rules.



Configuration commands
----------------------

-createconfig / -cc

	Creates the default MAME.INI file. All the configuration options
	(not commands) described below can be permanently changed by editing 
	this configuration file.

-showconfig / -sc

	Displays the current configuration settings. If you route this to a
	file, you can use it as an INI file. For example, the command:

		mame -showconfig >mame.ini

	is equivalent to -createconfig.

-showusage / -su

	Displays a summary of all the command line options. For options that
	are not mentioned here, the short summary given by "mame -showusage" is
	usually sufficient.



Frontend commands
-----------------

Note: By default, all the '-list' commands below write info to the screen. 
If you wish to write the info to a textfile instead, add this to the end of
your command:

  > filename

...where 'filename' is the textfile's path and name (e.g., c:\mame\list.txt).

-listxml / -lx [<gamename|wildcard>]

	List comprehensive details for all of the supported games. The output
	is quite long, so it is usually better to redirect this into a file. 
	The output is in XML format. By default all games are listed; however, 
	you can limit this list by specifying a driver name or wildcard after 
	the -listxml command.

-listfull / -ll [<gamename|wildcard>]

	Displays a list of game driver names and descriptions. By default all
	games are listed; however, you can limit this list by specifying a 
	driver name or wildcard after the -listfull command.

-listsource / -ls [<gamename|wildcard>]

	Displays a list of drivers and the names of the source files their game
	drivers live in. Useful for finding which driver a game runs on in 
	order to fix bugs. By default all games are listed; however, you can 
	limit this list by specifying a driver name or wildcard after the 
	-listsource command.

-listclones / -lc [<gamename|wildcard>]

	Displays a list of clones. By default all clones are listed; however, 
	you can limit this list by specifying a driver name or wildcard after 
	the -listsource command.

-listcrc

	Displays a full list of CRCs of all ROM images referenced by all
	drivers within MAME.

-listroms <gamename>

	Displays a list of ROM images referenced by the specified game.

-listsamples <gamename>

	Displays a list of samples referenced by the specified game.

-verifyroms [<gamename|wildcard>]

	Checks for invalid or missing ROM images. By default all drivers that
	have valid ZIP files or directories in the rompath are verified; 
	however, you can limit this list by specifying a driver name or 
	wildcard after the -verifyroms command.

-verifysamples

	Checks for invalid or missing samples. By default all drivers that
	have valid ZIP files or directories in the samplepath are verified; 
	however, you can limit this list by specifying a driver name or 
	wildcard after the -verifyroms command.

-romident

	Attempts to identify ROM files, if they are known to MAME, in the
	specified .zip file or directory. This command can be used to try and 
	identify ROM sets taken from unknown boards. On exit, the errorlevel 
	is returned as one of the following:
	
		0: means all files were identified
		1: means all files were identified except for 1 or more "non-ROM"
			files
		2: means some files were identified
		3: means no files were identified

-isknown

	Very terse romident. The errorlevel is set the same as for -romident.



Configuration options
---------------------

-[no]readconfig / -[no]rc

	Enables or disables the reading of the config files. When enabled
	(which is the default), MAME reads the following config files in order:

		- mame.ini
		- <mymame>.ini (i.e. if MAME was renamed mame060.exe, MAME
				parses mame060.ini here)
		- mamed.ini  (if this is a debug build, i.e. mamed.exe)
		- vector.ini (for vector games only)
		- <driver>.ini (based on the source filename of the driver)
		- <parent>.ini (for clones only, may be called recursively)
		- <gamename>.ini

	The settings in the later ini's override those in the earlier ini's.
	So, for example, if you wanted to disable overlay effects in the
	vector games, you can create a vector.ini with the "effect none" line
	in it, and it will override whatever effect value you have in your
	mame.ini. The default is ON (-readconfig).

-[no]skip_gameinfo

	Forces MAME to skip displaying the game info screen. The default is OFF
	(-noskip_gameinfo).



Core search path options
------------------------

IMPORTANT: Please use the path, directory and file options ONLY in mame.ini.
Otherwise, the outcome may be unpredictable and not consistent across 
releases.

-rompath / -rp

	Specifies a list of paths within which to find ROM or hard disk images.
	Multiple paths can be specified by separating them with semicolons.
	The default is 'roms' (that is, a directory "roms" in the same directory
	as the MAME executable).

-samplepath / -sp

	Specifies a list of paths within which to find sample files. Multiple 
	paths can be specified by separating them with semicolons. The default 
	is 'samples' (that is, a directory "samples" in the same directory as
	the MAME executable).

-artpath / -artwork_directory

	Specifies a list of paths within which to find artwork files. Multiple 
	paths can be specified by separating them with semicolons. The default 
	is 'artwork' (that is, a directory "artwork" in the same directory as
	the MAME executable).

-ctrlrpath / -ctrlr_directory

	Specifies a list of paths within which to find controller-specific
	configuration files. Multiple paths can be specified by separating 
	them with semicolons. The default is 'ctrlr' (that is, a directory 
	"ctrlr" in the same directory as the MAME executable).

-inipath

	Specifies a list of paths within which to find .INI files. Multiple 
	paths can be specified by separating them with semicolons. The default 
	is '.;ini' (that is, search in the current directory first, and then
	in the directory "ini" in the same directory as the MAME executable).

-fontpath

	Specifies a list of paths within which to find .BDF font files. Multiple 
	paths can be specified by separating them with semicolons. The default 
	is '.' (that is, search in the same directory as the MAME executable).



Core Output Directory Options
-----------------------------

-cfg_directory

	Specifies a single directory where configuration files are stored.
	Configuration files store user configurable settings that are read at
	startup and written when MAME exits. The default is 'cfg' (that is,
	a directory "cfg" in the same directory as the MAME executable). If this
	directory does not exist, it will be automatically created.

-nvram_directory

	Specifies a single directory where NVRAM files are stored. NVRAM files
	store the contents of EEPROM and non-volatile RAM (NVRAM) for games
	which used this type of hardware. This data is read at startup and 
	written when MAME exits. The default is 'nvram' (that is, a directory 
	"nvram" in the same directory as the MAME executable). If this directory 
	does not exist, it will be automatically created.

-memcard_directory

	Specifies a single directory where memory card files are stored. Memory
	card files store the contents of removable memory cards for games which 
	used this type of hardware. This data is read and written under control
	of the user via the "Memory Card" menu in the user interface. The 
	default is 'memcard' (that is, a directory "memcard" in the same 
	directory as the MAME executable). If this directory does not exist, 
	it will be automatically created.

-input_directory

	Specifies a single directory where input recording files are stored.
	Input recordings are created via the -record option and played back via
	the -playback option. The default is 'inp' (that is, a directory 
	"inp" in the same directory as the MAME executable). If this directory 
	does not exist, it will be automatically created.

-state_directory

	Specifies a single directory where save state files are stored. Save
	state files are read and written either upon user request, or when using
	the -autosave option. The default is 'sta' (that is, a directory "sta" 
	in the same directory as the MAME executable). If this directory does 
	not exist, it will be automatically created.

-snapshot_directory

	Specifies a single directory where screen snapshots are stored, when
	requested by the user. The default is 'snap' (that is, a directory 
	"snap" in the same directory as the MAME executable). If this directory 
	does not exist, it will be automatically created.

-diff_directory

	Specifies a single directory where hard drive differencing files are 
	stored. Hard drive differencing files store any data that is written
	back to a hard disk image, in order to preserve the original image. The
	differencing files are created at startup when a game with a hard disk
	image. The default is 'diff' (that is, a directory "diff" in the same 
	directory as the MAME executable). If this directory does not exist, 
	it will be automatically created.

-comment_directory

	Specifies a single directory where debugger comment files are stored. 
	Debugger comment files are written by the debugger when comments are
	added to the disassembly for a game. The default is 'comments' (that is, 
	a directory "comments" in the same directory as the MAME executable). 
	If this directory does not exist, it will be automatically created.



Core Filename Options
---------------------

-cheat_file

	Specifies the name of the cheat database file. The default is 
	'cheat.dat'.



Misc options
------------

-bios <biosname>

	Specifies the specific BIOS to use with the current game, for game
	systems that make use of a BIOS. The -listxml output will list all of
	the possible BIOS names for a game. The default is 'default'.

-[no]cheat / -[no]c

	Enables the reading of the cheat database, if present, and the Cheat
	menu in the user interface. The	default is OFF (-nocheat).



State/playback options
----------------------

-state <slot>

	Immediately after starting the specified game, will cause the save 
	state in the specified <slot> to be loaded.

-[no]autosave

	When enabled, automatically creates a save state file when exiting MAME
	and automatically attempts to reload it when later starting MAME with
	the same game. This only works for games that have explicitly enabled
	save state support in their driver. The default is OFF (-noautosave).

-playback / -pb <filename>

	Specifies a file from which to play back a series of game inputs. This
	feature does not work reliably for all games, but can be used to watch
	a previously recorded game session from start to finish. In order to
	make things consistent, you should only record and playback with all
	configuration (.cfg), NVRAM (.nv), and memory card files deleted. The
	default is NULL (no playback).

-record / -rec <filename>

	Specifies a file to record all input from a game session. This can be
	used to record a game session for later playback. This feature does not 
	work reliably for all games, but can be used to watch a previously 
	recorded game session from start to finish. In order to make things 
	consistent, you should only record and playback with all configuration 
	(.cfg), NVRAM (.nv), and memory card files deleted. The default is NULL
	(no recording).

-mngwrite <filename>

	Writes each video frame to the given <filename> in MNG format, producing 
	an animation of the	game session. Note that -mngwrite only writes video
	frames; it does not save any audio data. Use -wavwrite for that, and
	reassemble the audio/video using offline tools. The default is NULL (no
	recording).

-wavwrite <filename>

	Writes the final mixer output to the given <filename> in WAV format, 
	producing an audio recording of the	game session. The default is NULL
	(no recording).



Debugging options
-----------------

-[no]log

	Creates a file called error.log which contains all of the internal
	log messages generated by the MAME core and game drivers. The default 
	is OFF (-nolog).

-[no]oslog

	Outputs the error.log data to the Windows debugger. This can be used at
	the same time as -log to output the log data to both targets as well.
	Default is OFF (-nooslog).

-[no]verbose / -[no]v

	Displays internal diagnostic information. This information is very 
	useful for debugging problems with your configuration. IMPORTANT: when
	reporting bugs, please run with mame -verbose and include the resulting
	information. The default is off (-noverbose)

-[no]debug

	Activates the integrated debugger. This is available only if the program
	is compiled with MAME_DEBUG defined. By default, the debugger is
	entered by pressing the tilde (~) key during emulation. It is also
	entered immediately at startup. The default is OFF (-nodebug).

-debugscript <filename>

	Specifies a file that contains a list of debugger commands to execute
	immediately upon startup. The default is NULL (no commands).



Perormance options
------------------

-[no]autoframeskip / -[no]afs

	Automatically determines the frameskip level while you're playing the
	game, adjusting it constantly in a frantic attempt to keep the game
	running at full speed. Turning this on overrides the value you have set
	for -frameskip below. The default is OFF (-noautoframeskip).

-frameskip / -fs

	Specifies the frameskip value. This is the number of frames out of
	every 12 to drop when running. For example, if you say -frameskip 2,
	then MAME will display 10 out of every 12 frames. By skipping those
	frames, you may be able to get full speed in a game that requires more
	horsepower than your computer has. The default value is -frameskip 0,
	which skips no frames.

-frames_to_run / -ftr

	This option can be used for benchmarking and automated testing. It tells 
	MAME to stop execution after a fixed number of frames. By combining 
	this with a fixed set of other command line options, you can set up a 
	consistent environment for benchmarking MAME performance. In addition, 
	upon exit, the -ftr option will write a screenshot called 
	_<gamename>.png to the snapshot directory.

-[no]throttle

	Configures the default thottling setting. When throttling is on, MAME
	attempts to keep the game running at the game's intended speed. When
	throttling is off, MAME runs the game as fast as it can. Note that the
	fastest speed is more often than not limited by your graphics card,
	especially for older games. The default is ON (-throttle).

-[no]sleep

	Allows MAME to give time back to the system when running with -throttle.
	This allows other programs to have some CPU time, assuming that the
	game isn't taxing 100% of your CPU resources. This option can 
	potentially cause hiccups in performance if other demanding programs
	are running. The default is ON (-sleep).

-[no]rdtsc

	Specifies that MAME should use RDTSC for timing. RDTSC is very fast but
	unfortunately rather inaccurate on many modern CPUs that dynamically
	change clock speeds to conserve power. By default, MAME uses the
	Windows function QueryPerformanceCounter for timing. The default is
	OFF (-nordtsc).

-priority <priority>

	Sets the thread priority for the MAME threads. By default the priority
	is left alone to guarantee proper cooperation with other applications. 
	The valid range is -15 to 1, with 1 being the highest priority. The 
	default is 0 (NORMAL priority).

-[no]multithreading / -[no]mt

	Enables multithreading within MAME. At the moment, this causes the window
	and all DirectDraw/Direct3D code to execute on a second thread, which
	can improve performance on hyperthreaded and multicore systems. Consider
	this switch experimental for the moment. The default is OFF 
	(-nomultithreading).



Video options
-------------

-video <gdi|ddraw|d3d|none>

	Specifies which video subsystem to use for drawing. By specifying 'gdi'
	here, you tell MAME to render video using standard Windows graphics
	drawing calls. This is the slowest but most compatible option. 
	Specifying 'ddraw' instructs MAME to use DirectDraw for rendering. This
	causes MAME to render everything at a lower resolution and then upscale
	the results at the end. This produces high performance, especially on
	older or low-power video cards, but has a noticeably lower output
	quality. Specifying 'd3d' tells MAME to use Direct3D for rendering. This
	produces the highest quality output and enables all rendering options.
	It is recommended if you have a recent (2002+) video card. The final
	option 'none' displays no windows and does no drawing. This is primarily
	present for doing CPU benchmarks without the overhead of the video
	system. The default is d3d.
	
-numscreens <count>

	Tells MAME how many output windows to create. For most games, a single
	output window is all you need, but some games originally used multiple
	screens. Each screen (up to 4) has its own independent settings for
	physical monitor, aspect ratio, resolution, and view, which can be
	set using the options below. The default is 1.
	
-[no]window

	Run MAME in either a window or full screen. The default is OFF
	(-nowindow).

-[no]maximize / -[no]max

	Controls initial window size in windowed mode. If it is set on, the
	window will initially be set to the maximum supported size when you
	start MAME. If it is turned off, the window will start out at the
	smallest supported size. This option only has an effect when the 
	-window option is used. The default is ON (-maximize).

-[no]keepaspect / -[no]ka

	Enables aspect ratio enforcement. When this option is on, the game's
	proper aspect ratio (generally 4:3 or 3:4) is enforced, so you get the
	game looking like it should. When running in a window with this option
	on, you can only resize the window to the proper aspect ratio, unless
	you are holding down the CONTROL key. By turning the option off, the
	aspect ratio is allowed to float. In full screen mode, this means that
	all games will stretch to the full screen size (even vertical games).
	In window mode, it means that you can freely resize the window without
	any constraints. The default is ON (-keepaspect).

-prescale <amount>

	Controls the size of the screen images when they are passed off to the
	graphics system for scaling. At the minimum setting of 1, the screen
	is rendered at its original resolution before being scaled. At higher
	settings, the screen is expanded by a factor of <amount> before being
	scaled. With -video ddraw or -video d3d, this produces a less blurry
	image at the expense of some speed. In -video ddraw mode, this also
	increases the effective resolution of non-screen elements such as 
	artwork and fonts. The default is 1.

-effect <filename>

	Specifies a single PNG file that is used as an overlay over any game
	screens in the video display. This PNG file is assumed to live in the
	root of one of the artpath directories. The pattern in the PNG file is 
	repeated both horizontally and vertically to cover the entire game 
	screen areas (but not any external artwork), and is rendered at
	the target resolution of the game image. For -video gdi and -video d3d
	modes, this means that one pixel in the PNG will map to one pixel on
	your output display. For -video ddraw, this means that one pixel in the
	PNG will map to one pixel in the prescaled game screen. If you wish to
	use an effect that requires mapping n PNG pixels to each game screen
	pixel with -video ddraw, you need to specify a -prescale factor of n as
	well. The RGB values of each pixel in the PNG are multiplied against the
	RGB values of the target screen. The default is 'none', meaning no 
	effect.

-pause_brightness

	This controls the brightness level when MAME is paused. The default
	value is 0.65.

-[no]waitvsync

	Waits for the refresh period on your computer's monitor to finish
	before starting to draw video to your screen. If this option is off,
	MAME will just draw to the screen at any old time, even in the middle
	of a refresh cycle. This can cause "tearing" artifacts, where the top
	portion of the screen is out of sync with the bottom portion. Tearing
	is not noticeable on all games, and some people hate it more than
	others. However, if you turn this option on, you will waste more of
	your CPU cycles waiting for the proper time to draw, so you will see a
	performance hit. You should only need to turn this on in windowed mode.
	In full screen mode, it is only needed if -triplebuffer does not
	remove the tearing, in which case you should use -notriplebuffer 
	-waitvsync. Note that this option does not work with -video gdi mode.
	The default is OFF (-nowaitvsync).

-[no]syncrefresh

	Enables speed throttling only to the refresh of your monitor. This
	means that the game's actual refresh rate is ignored; however, the
	sound code still attempts to keep up with the game's original refresh
	rate, so you may encounter sound problems. This option is intended 
	mainly for those who have tweaked their video card's settings to
	provide carefully matched refresh rate options. Note that this option 
	does not work with -video gdi mode.The default is OFF (-nosyncrefresh).



Video rotation options
----------------------

-[no]rotate

	Rotate the game to match its normal state (horizontal/vertical). This
	ensures that both vertically and horizontally oriented games show up
	correctly without the need to rotate your monitor. If you want to keep 
	the game displaying 'raw' on the screen the way it would have in the 
	arcade, turn this option OFF. The default is ON (-rotate).

-[no]ror
-[no]rol

	Rotate the game screen to the right (clockwise) or left (counter-
	clockwise) relative to either its normal state (if -rotate is specified)
	or its native state (if -norotate is specified). The default for both of
	these options is OFF (-noror -norol).

-[no]flipx
-[no]flipy

	Flip (mirror) the game screen either horizontally (-flipx) or 
	vertically (-flipy). The flips are applied after the -rotate and 
	-ror/-rol options are applied. The default for both of these options 
	is OFF (-noflipx -noflipy).

-[no]autoror
-[no]autorol

	These options are designed for use with pivoting screens that only
	pivot in a single direction. If your screen only pivots clockwise,
	use -autorol to ensure that the game will fill the screen either
	horizontally or vertically in one of the directions you can handle.
	If your screen only pivots counter-clockwise, use -autoror.



DirectDraw-specific options
---------------------------

-[no]hwstretch / -[no]hws

	When enabled, MAME uses the hardware stretching abilities of your
	video card to scale the game image and associated artwork to the 
	target resolution. Depending on the quality of your graphic card and 
	its drivers, this may be a fractional, antialiased scaling (nice) or 
	an integer, blocky scaling (not so nice), in which case you might want
	to disable this option. In addition, if you have configured specific
	arcade-like video modes for MAME and don't want MAME to perform any
	non-integral scaling of the image, you should also disable this option.
	The default is ON (-hwstretch).



Direct3D-specific options
-------------------------

-d3dversion <version>

	MAME supports both Direct3D 9 and Direct3D 8 for maximum compatibility.
	By default, it will automatically detect which one it can use and use
	that version exclusively. You can override MAME's selection with this
	option. It is primarily intended as a means for the MAME developers to
	test compatibility with older hardware; for the most part, there is no
	reason to alter this setting. The default is 9.

-[no]filter / -[no]d3dfilter / -[no]flt

	Enable bilinear filtering on the game screen graphics. When disabled,
	point filtering is applied, which is crisper but leads to scaling
	artifacts. If you don't like the filtered look, you are probably better
	off increasing the -prescale value rather than turning off filtering
	altogether. The default is ON (-filter).



Per-window options
------------------

-screen <display>
-screen0 <display>
-screen1 <display>
-screen2 <display>
-screen3 <display>

	Specifies which physical monitor on your system you wish to have each
	window use by default. In order to use multiple windows, you must have
	increased the value of the -numscreens option. The name of each display
	in your system can be determined by running MAME with the -verbose
	option. The display names are typically in the format of: \\.\DISPLAYn,
	where 'n' is a number from 1 to the number of connected monitors.
	The default value for these options is 'auto', which means that the
	first window is placed on the first display, the second window on the
	second display, etc.
	
	The -screen0, -screen1, -screen2, -screen3 parameters apply to the
	specific window. The -screen parameter applies to all windows. The
	window-specific options override values from the all window option.

-aspect <width:height> / -screen_aspect <num:den>
-aspect0 <width:height>
-aspect1 <width:height>
-aspect2 <width:height>
-aspect3 <width:height>

	Specifies the physical aspect ratio of the physical monitor for each
	window. In order to use multiple windows, you must have increased the 
	value of the -numscreens option. The physical aspect ratio can be
	determined by measuring the width and height of the visible screen 
	image and specifying them separated by a colon. The default value for
	these options is 'auto', which means that MAME assumes the aspect ratio
	is proportional to the number of pixels in the desktop video mode for
	each monitor.
	
	The -aspect0, -aspect1, -aspect2, -aspect3 parameters apply to the
	specific window. The -aspect parameter applies to all windows. The
	window-specific options override values from the all window option.
	
-resolution <widthxheight[@refresh]> / -r <widthxheight[@refresh]>
-resolution0 <widthxheight[@refresh]> / -r0 <widthxheight[@refresh]>
-resolution1 <widthxheight[@refresh]> / -r1 <widthxheight[@refresh]>
-resolution2 <widthxheight[@refresh]> / -r2 <widthxheight[@refresh]>
-resolution3 <widthxheight[@refresh]> / -r3 <widthxheight[@refresh]>

	Specifies an exact resolution to run in. In full screen mode, MAME will
	try to use the specific resolution you request. The width and
	height are required; the refresh rate is optional. If omitted or
	set to 0, MAME will determine the mode auomatically. For example,
	-resolution 640x480 will force 640x480 resolution, but MAME is free to
	choose the refresh rate. Similarly, -resolution 0x0@60 will force a
	60Hz refresh rate, but allows MAME to choose the resolution. The string
	"auto" is also supported, and is equivalent to 0x0@0. In window mode,
	this resolution is used as a maximum size for the window. This option
	requires the -switchres option as well in order to actually enable
	resolution switching with -video ddraw or -video d3d. The default
	value for these options is 'auto'.
	
	The -resolution0, -resolution1, -resolution2, -resolution3 parameters 
	apply to the specific window. The -resolution parameter applies to all
	windows. The window-specific options override values from the all 
	window option.

-view <viewname>
-view0 <viewname>	
-view1 <viewname>
-view2 <viewname>
-view3 <viewname>

	Specifies the initial view setting for each window. The <viewname> does
	not need to be a perfect match; rather, it will select the first view
	whose name matches all the characters specified by <viewname>. For
	example, -view native will match the "Native (15:14)" view even though
	it is not a perfect match. The value 'auto' is also supported, and
	requests that MAME perform a default selection. The default value for
	these options is 'auto'.
	
	The -view0, -view1, -view2, -view3 parameters apply to the
	specific window. The -view parameter applies to all windows. The
	window-specific options override values from the all window option.



Full screen options
-------------------

-[no]triplebuffer / -[no]tb

	Enables or disables "triple buffering". Normally, MAME just draws
	directly to the screen, without any fancy buffering. But with this
	option enabled, MAME creates three buffers to draw to, and cycles
	between them in order. It attempts to keep things flowing such that one
	buffer is currently displayed, the second buffer is waiting to be
	displayed, and the third buffer is being drawn to. -triplebuffer will 
	override -waitvsync, if the buffer is sucessfully created. This option
	does not work with -video gdi. The default is OFF (-notriplebuffer).

-[no]switchres

	Enables resolution switching. This option is required for the
	-resolution* options to switch resolutions in full screen mode. On
	modern video cards, there is little reason to switch resolutions unless
	you are trying to achieve the "exact" pixel resolutions of the original
	games, which requires significant tweaking. This option is also useful 
	on LCD displays, since they run with a fixed resolution and switching
	resolutions on them is just silly. This option does not work with
	-video gdi. The default is OFF (-noswitchres).

-full_screen_brightness / -fsb <value>

	Controls the brightness, or black level, of the entire display. The
	standard value is 1.0. Selecting lower values (down to 0.1) will produce
	a darkened display, while selecting higher values (up to 2.0) will
	give a brighter display. Note that not all video cards have hardware to
	support this option. This option does not work with -video gdi. The
	default is 1.0.

-full_screen_contrast / -fsc <value>

	Controls the contrast, or white level, of the entire display. The
	standard value is 1.0. Selecting lower values (down to 0.1) will produce
	a dimmer display, while selecting higher values (up to 2.0) will
	give a more saturated display. Note that not all video cards have 
	hardware to support this option. This option does not work with 
	-video gdi. The	default is 1.0.

-full_screen_gamma / -fsg <value>

	Controls the gamma, which produces a potentially nonlinear black to
	white ramp, for the entire display. The standard value is 1.0, which 
	gives a linear ramp from black to white. Selecting lower values (down 
	to 0.1) will increase the nonlinearity toward black, while selecting 
	higher values (up to 3.0) will push the nonlinearity toward white. Note 
	that not all video cards have hardware to support this option. This 
	option does not work with -video gdi. The default is 1.0.



Game screen options
-------------------

-brightness <value>

	Controls the default brightness, or black level, of the game screens. 
	This option does not affect the artwork or other parts of the display.
	Using the MAME UI, you can individually set the brightness for each game
	screen; this option controls the initial value for all visible game
	screens. The standard value is 1.0. Selecting lower values (down to 0.1)
	will produce a darkened display, while selecting higher values (up to 
	2.0) will give a brighter display. The default is 1.0.

-contrast <value>

	Controls the contrast, or white level, of the game screens. This option 
	does not affect the artwork or other parts of the display. Using the 
	MAME UI, you can individually set the contrast for each game screen; 
	this option controls the initial value for all visible game screens. The
	standard value is 1.0. Selecting lower values (down to 0.1) will produce
	a dimmer display, while selecting higher values (up to 2.0) will
	give a more saturated display. The default is 1.0.

-gamma <value>

	Controls the gamma, which produces a potentially nonlinear black to
	white ramp, for the game screens. This option does not affect the 
	artwork or other parts of the display. Using the MAME UI, you can 
	individually set the gamma for each game screen; this option controls 
	the initial value for all visible game screens. The standard value is 
	1.0, which gives a linear ramp from black to white. Selecting lower 
	values (down to 0.1) will increase the nonlinearity toward black, 
	while selecting higher values (up to 3.0) will push the nonlinearity 
	toward white. The default is 1.0.



Vector rendering options
------------------------

-[no]antialias / -[no]aa

	Enables antialiased line rendering for vector games. The default is ON
	(-antialias).

-beam <width>

	Sets the width of the vectors. This is a scaling factor against the
	standard vector width. A value of 1.0 will keep the default vector line
	width. Smaller values will reduce the width, and larger values will
	increase the width. The default is 1.0.

-flicker <value>

	Simulates a vector "flicker" effect, similar to a vector monitor that
	needs adjustment. This option requires a float argument in the range of 
	0.00 - 100.00 (0=none, 100=maximum). The default is 0.



Artwork options
---------------

-[no]artwork_crop / -[no]artcrop

	Enable cropping of artwork to the game screen area only. This works
	best with -video gdi or -video d3d, and means that vertically oriented
	games running full screen can display their artwork to the left and 
	right sides of the screen. This does not work with -video ddraw because
	of the way the game screens are rendered and scaled after the fact. This
	option can also be controlled via the Video Options menu in the user
	interface. The default is OFF (-noartwork_crop).

-[no]use_backdrops / -[no]backdrop

	Enables/disables the display of backdrops. The default is ON
	(-use_backdrops).

-[no]use_overlays / -[no]overlay

	Enables/disables the display of overlays. The default is ON
	(-use_overlays).

-[no]use_bezels / -[no]bezel

	Enables/disables the display of bezels. The default is ON
	(-use_bezels).



Sound options
-------------

-[no]sound

	Enable or disable sound altogether. The default is ON (-sound).

-samplerate / -sr <value>

	Sets the audio sample rate. Smaller values (e.g. 11025) cause lower
	audio quality but faster emulation speed. Higher values (e.g. 48000)
	cause higher audio quality but slower emulation speed. The default is
	48000.

-[no]samples

	Use samples if available. The default is ON (-samples).

-volume / -vol <value>

	Sets the startup volume. It can later be changed with the user interface
	(see Keys section). The volume is an attenuation in dB: e.g., 
	"-volume -12" will start with -12dB attenuation. The default is 0.

-audio_latency <value>

	This controls the amount of latency built into the audio streaming. By
	default MAME tries to keep the DirectSound audio buffer between 1/5 and
	2/5 full. On some systems, this is pushing it too close to the edge,
	and you get poor sound sometimes. The latency parameter controls the
	lower threshold. The default is 1 (meaning lower=1/5 and upper=2/5).
	Set it to 2 (-audio_latency 2) to keep the sound buffer between 2/5 and
	3/5 full. If you crank it up to 4, you can definitely notice the lag.



Input device options
--------------------

-ctrlr <controller>

	Enables support for special controllers. Configuration files are
	loaded from the ctrlrpath. They are in the same format as the .cfg
	files that are saved, but only control configuration data is read
	from the file. The default is NULL (no controller file).

-[no]mouse

	Controls whether or not MAME looks for a mouse controller to use. Note
	that in many cases, lightguns are treated as mice by the operating
	system, so you may need to enable this to enable lightgun support. When
	this is enabled, you will not be able to use your mouse in Windows
	while playing a game. If you want to get control of your computer back,
	you will need to either pause the game or quit. The default is OFF
	(-nomouse).

-[no]joystick / -[no]joy

	Controls whether or not MAME looks for joystick/gamepad controllers.
	When this is enabled, MAME will ask DirectInput about which controllers
	are connected. The default is OFF (-nojoystick).

-[no]lightgun / -[no]gun

	Controls whether or not MAME treats mouse inputs as lightgun inputs.
	Note that most lightguns map to the mouse, so using -lightgun and
	-mouse together may produce strange results. The default is OFF
	(-nolightgun).

-[no]dual_lightgun / -[no]dual

	Controls whether or not MAME attempts to track two lightguns connected
	at the same time. This option requires -lightgun. This option is a hack
	for supporting older dual lightgun setups. If you have multiple 
	lightguns connected, you will probably just need to enable -mouse and
	configure each lightgun independently. The default is OFF
	(-nodual_lightgun).

-[no]offscreen_reload / -[no]reload

	Controls whether or not MAME treats a second button input from a
	lightgun as a reload signal. In this case, MAME will report the gun's
	position as (0,MAX) with the trigger held, which is equivalent to an
	offscreen reload. This is only needed for games that required you to 
	shoot offscreen to reload, and then only if your gun does not support 
	off screen reloads. The default is OFF (-nooffscreen_reload).

-[no]steadykey / -[no]steady

	Some games require two or more buttons to be pressed at exactly the
	same time to make special moves. Due to limitations in the PC keyboard
	hardware, it can be difficult or even impossible to accomplish that
	using the standard keyboard handling. This option selects a different
	handling that makes it easier to register simultaneous button presses,
	but has the disadvantage of making controls less responsive. The
	default is OFF (-nosteadykey)

-joy_deadzone / -jdz

	If you play with an analog joystick, the center can drift a little.
	joy_deadzone tells how far along an axis you must move before the
	axis starts to change. This option expects a float in the range of
	0.0 to 1.0. Where 0 is the center of the joystick and 1 is the outer
	limit. The default is 0.3.

	This is handled through DirectX and will override your driver settings.
	So if your joystick driver has it's own deadzone settings you may
	want to use -joy_deadzone 0 to disable the feature.

-joy_saturation / -jsat

	If you play with an analog joystick, the ends can drift a little,
	and may not match in the +/- directions. joy_saturation tells how far
	along an axis movement change will be accepted before it reaches the
	maximum range. This option expects a float in the range of 0.0 to 1.0.
	Where 0 is the center of the joystick and 1 is the outer limit.
	joy_saturation will be ignored if less then joy_deadzone.
	The default is 0.85.

	This is handled through DirectX and will override your driver settings.
	So if your joystick driver has it's own saturation settings you may
	want to use -joy_saturation 1 to disable the feature.

-digital <all|none|j<N>[a<M>[a<K>...]][,j<X>[a<Y>...]][,...]>

	Controls which joystick axes are considered digital. If MAME knows that
	a given joystick axis is digital, it can make much better decisions about
	how to treat that axis. If you are using a digital gamepad with MAME, 
	you will want to use this option. There are a number of ways to do this:

	-digital all means that all axes of all connected joysticks will be 
		treated as digital.

	-digital none means that all axes of all connected joysticks will be 
		treated as analog (this is the default behavior).
    
	-digital j2 will treat all axes of joystick #2 as digital; axes on all 
		other joysticks will be treated as analog.

	-digital j1a0a1 will treat axis 0 and 1 on joystick #1 as digital; all 
		other axes will be treated as analog.

	-digital j1a0a1,j2a5 will treat axis 0 and 1 on joystick #1 as digital, 
		as well as axis 5 on joystick #2; all other axes will be treated 
		as analog.

	Make use of the information provided by -verbose to determine which 
	joysticks and axes you should be configuring this way. The default is
	'none'.



Automatic device selection options
----------------------------------

-paddle_device <keyboard|mouse|joystick|lightgun> / -paddle
-adstick_device <keyboard|mouse|joystick|lightgun> / -adstick
-pedal_device <keyboard|mouse|joystick|lightgun> / -pedal
-dial_device <keyboard|mouse|joystick|lightgun> / -dial
-trackball_device <keyboard|mouse|joystick|lightgun> / -trackball
-lightgun_device <keyboard|mouse|joystick|lightgun>
-positional_device <keyboard|mouse|joystick|lightgun>

	Each of these options controls autoenabling the mouse, joystick, or
	lightgun depending on the presence of a particular class of analog
	control for a particular game. For example, if you specify the option
	-paddle mouse, then any game that has a paddle control will automatically
	enable mouse controls just as if you had explicitly specified -mouse.
	Note that these controls override the values of -[no]mouse,
	-[no]joystick, etc.
