summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.gitattributes5
-rw-r--r--docs/config.txt911
-rw-r--r--docs/license.txt32
-rw-r--r--docs/mame.txt81
-rw-r--r--docs/newvideo.txt146
-rw-r--r--docs/windows.txt362
6 files changed, 1537 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes
index 8e948c534a1..339e85090ae 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,6 @@
* text=auto !eol
+docs/config.txt svneol=native#text/plain
+docs/license.txt svneol=native#text/plain
+docs/mame.txt svneol=native#text/plain
+docs/newvideo.txt svneol=native#text/plain
+docs/windows.txt svneol=native#text/plain
diff --git a/docs/config.txt b/docs/config.txt
new file mode 100644
index 00000000000..cd29497cc89
--- /dev/null
+++ b/docs/config.txt
@@ -0,0 +1,911 @@
+This file describes general usage information about MAME. It is intended
+to cover aspects of using and configuring the program that are common
+across operating systems. For additional OS-specific options, please see
+the separate documentation for your particular version of MAME.
+
+
+
+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 commonly supported options are listed below. Options that
+are specific to one operating system or version of MAME will be listed
+in a separate document.
+
+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. When the on-screen display is
+ visible, you can use the following keys to control it:
+
+ Up - select previous parameter to modify
+ Down - select next parameter to modify
+ Enter - reset parameter value to its default
+
+ Left - decrease the value of the selected parameter
+ Control+Left - decrease the value by 10x
+ Shift+Left - decrease the value by 0.1x
+ Alt+Left - decrease the value by the smallest amount
+
+ Right - increase the value of the selected parameter
+ Control+Right - increase the value by 10x
+ Shift+Right - increase the value by 0.1x
+ Alt+Right - increase the value by the smallest amount
+
+P Pauses the game.
+
+Shift+P While paused, advances to next frame.
+
+F1 Toggle crosshairs for games that use them. Each subsequent
+ press will enable crosshairs for one more player.
+
+F2 Service Mode for games that support it.
+
+F3 Resets the game.
+
+Shift+F3 Performs a "hard reset", which tears everything down and re-
+ creates it from scratch. This is a more thorough and complete
+ reset than an F3.
+
+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
+ Page Up/Page Down - 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
+ Page Up/Page Down - 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
+ Control+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.
+
+Escape Exits emulator.
+
+
+
+
+Core commands
+-------------
+
+-help / -h / -?
+
+ 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 [<gamename|wildcard>]
+
+ 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
+ 7: means all files were identified except for 1 or more "non-ROM"
+ files
+ 8: means some files were identified
+ 9: means no files were identified
+
+
+
+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).
+
+
+
+Core search path options
+------------------------
+
+-rompath / -rp <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <path>
+
+ 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 <filename>
+
+ Specifies the name of the cheat database file. The default is
+ 'cheat.dat'.
+
+
+
+Core 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).
+
+
+
+Core performance 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 <level>
+
+ 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.
+
+-seconds_to_run / -str <seconds>
+
+ This option can be used for benchmarking and automated testing. It tells
+ MAME to stop execution after a fixed number of seconds. 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 -str option will write a screenshot called final.png
+ to the game's 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).
+
+-speed <factor>
+
+ Changes the way MAME throttles gameplay such that the game runs at some
+ multiplier of the original speed. A <factor> of 1.0 means to run the
+ game at its normal speed. A <factor> of 0.5 means run at half speed,
+ and a <factor> of 2.0 means run at 2x speed. Note that changing this
+ value affects sound playback as well, which will scale in pitch
+ accordingly. The internal resolution of the fraction is two decimal
+ places, so a value of 1.002 is the same as 1.0. The default is 1.0.
+
+-[no]refreshspeed / -[no]rs
+
+ Allows MAME to dynamically adjust the gameplay speed such that it does
+ not exceed the slowest refresh rate for any targeted monitors in your
+ system. Thus, if you have a 60Hz monitor and run a game that is
+ actually designed to run at 60.6Hz, MAME will dynamically change the
+ speed down to 99% in order to prevent sound hiccups or other
+ undesirable side effects of running at a slower refresh rate. The
+ default is OFF (-norefreshspeed).
+
+
+
+Core 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.
+
+
+
+Core 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).
+
+
+
+Core 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.
+
+-pause_brightness <value>
+
+ This controls the brightness level when MAME is paused. The default
+ value is 0.65.
+
+
+
+Core vector 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.
+
+
+
+Core sound options
+------------------
+
+-[no]sound
+
+ Enable or disable sound altogether. The default is ON (-sound).
+
+-samplerate <value> / -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.
+
+
+
+Core input 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 makes use of mouse controllers. When
+ this is enabled, you will likely be unable to use your mouse for other
+ purposes until you exit or pause the game. The default is OFF
+ (-nomouse).
+
+-[no]joystick / -[no]joy
+
+ Controls whether or not MAME makes use of 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 makes use of lightgun controllers.
+ Note that most lightguns map to the mouse, so using -lightgun and
+ -mouse together may produce strange results. The default is OFF
+ (-nolightgun).
+
+-[no]multikeyboard / -[no]multikey
+
+ Determines whether MAME differentiates between multiple keyboards.
+ Some systems may report more than one keyboard; by default, the data
+ from all of these keyboards is combined so that it looks like a single
+ keyboard. Turning this option on will enable MAME to report keypresses
+ on different keyboards independently. The default is OFF
+ (-nomultikeyboard).
+
+-[no]multimouse
+
+ Determines whether MAME differentiates between multiple mice. Some
+ systems may report more than one mouse device; by default, the data
+ from all of these mice is combined so that it looks like a single
+ mouse. Turning this option on will enable MAME to report mouse
+ movement and button presses on different mice independently. The
+ default is OFF (-nomultimouse).
+
+-[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 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)
+
+-[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).
+
+-joystick_map <map> / -joymap <map>
+
+ Controls how joystick values map to digital joystick controls. MAME
+ accepts all joystick input from the system as analog data. For true
+ analog joysticks, this needs to be mapped down to the usual 4-way or
+ 8-way digital joystick values. To do this, MAME divides the analog
+ range into a 9x9 grid. It then takes the joystick axis position (for
+ X and Y axes only), maps it to this grid, and then looks up a
+ translation from a joystick map. This parameter allows you to specify
+ the map. The default is 'auto', which means that a standard 8-way,
+ 4-way, or 4-way diagonal map is selected automatically based on the
+ input port configuration of the current game.
+
+ Maps are defined as a string of numbers and characters. Since the grid
+ is 9x9, there are a total of 81 characters necessary to define a
+ complete map. Below is an example map for an 8-way joystick:
+
+ 777888999 Note that the numeric digits correspond to the keys
+ 777888999 on a numeric keypad. So '7' maps to up+left, '4' maps
+ 777888999 to left, '5' maps to neutral, etc. In addition to the
+ 444555666 numeric values, you can specify the character 's',
+ 444555666 which means "sticky". In this case, the value of the
+ 444555666 map is the same as it was the last time a non-sticky
+ 111222333 value was read.
+ 111222333
+ 111222333
+
+ To specify the map for this parameter, you can specify a string of
+ rows separated by a '.' (which indicates the end of a row), like so:
+
+ 777888999.777888999.777888999.444555666.444555666.444555666.
+ 111222333.111222333.111222333
+
+ However, this can be reduced using several shorthands supported by the
+ <map> parameter. If information about a row is missing, then it is
+ assumed that any missing data in columns 5-9 are left/right symmetric
+ with data in columns 0-4; and any missing data in colums 0-4 is
+ assumed to be copies of the previous data. The same logic applies to
+ missing rows, except that up/down symmetry is assumed.
+
+ By using these shorthands, the 81 character map can be simply
+ specified by this 11 character string: 7778...4445
+
+ Looking at the first row, 7778 is only 4 characters long. The 5th
+ entry can't use symmetry, so it is assumed to be equal to the previous
+ character '8'. The 6th character is left/right symmetric with the 4th
+ character, giving an '8'. The 7th character is left/right symmetric
+ with the 3rd character, giving a '9' (which is '7' with left/right
+ flipped). Eventually this gives the full 777888999 string of the row.
+
+ The second and third rows are missing, so they are assumed to be
+ identical to the first row. The fourth row decodes similarly to the
+ first row, producing 444555666. The fifth row is missing so it is
+ assumed to be the same as the fourth.
+
+ The remaining three rows are also missing, so they are assumed to be
+ the up/down mirrors of the first three rows, giving three final rows
+ of 111222333.
+
+-joystick_deadzone <value> / -joy_deadzone <value> / -jdz <value>
+
+ If you play with an analog joystick, the center can drift a little.
+ joystick_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.
+
+-joystick_saturation <value> / joy_saturation <value> / -jsat <value>
+
+ If you play with an analog joystick, the ends can drift a little,
+ and may not match in the +/- directions. joystick_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.
+ The default is 0.85.
+
+
+
+Core input automatic enable options
+-----------------------------------
+
+-paddle_device <keyboard|mouse|joystick|lightgun|none> / -paddle
+-adstick_device <keyboard|mouse|joystick|lightgun|none> / -adstick
+-pedal_device <keyboard|mouse|joystick|lightgun|none> / -pedal
+-dial_device <keyboard|mouse|joystick|lightgun|none> / -dial
+-trackball_device <keyboard|mouse|joystick|lightgun|none> / -trackball
+-lightgun_device <keyboard|mouse|joystick|lightgun|none>
+-positional_device <keyboard|mouse|joystick|lightgun|none>
+
+ 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.
+
+
+
+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]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 ON (-debug).
+
+-debugscript <filename>
+
+ Specifies a file that contains a list of debugger commands to execute
+ immediately upon startup. The default is NULL (no commands).
+
+
+
+Core 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).
+
+-[no]skip_gameinfo
+
+ Forces MAME to skip displaying the game info screen. The default is
+ OFF (-noskip_gameinfo).
diff --git a/docs/license.txt b/docs/license.txt
new file mode 100644
index 00000000000..e7bd69d9069
--- /dev/null
+++ b/docs/license.txt
@@ -0,0 +1,32 @@
+Copyright (c) 1997-2007, Nicola Salmoria and the MAME team
+All rights reserved.
+
+Redistribution and use of this code or any derivative works are permitted
+provided that the following conditions are met:
+
+* Redistributions may not be sold, nor may they be used in a commercial
+product or activity.
+
+* Redistributions that are modified from the original source must include the
+complete source code, including the source code for all components used by a
+binary built from the modified sources. However, as a special exception, the
+source code distributed need not include anything that is normally distributed
+(in either source or binary form) with the major components (compiler, kernel,
+and so on) of the operating system on which the executable runs, unless that
+component itself accompanies the executable.
+
+* Redistributions must reproduce the above copyright notice, this list of
+conditions and the following disclaimer in the documentation and/or other
+materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/mame.txt b/docs/mame.txt
new file mode 100644
index 00000000000..6e575aab0db
--- /dev/null
+++ b/docs/mame.txt
@@ -0,0 +1,81 @@
+MAME(tm), the Multiple Arcade Machine Emulator
+Copyright (c) 1997-2007 by Nicola Salmoria and the MAME team
+MAME is a trademark owned by Nicola Salmoria
+
+
+----------
+I. Purpose
+----------
+MAME is strictly a non-profit project. Its main purpose is to be a
+reference to the inner workings of the emulated arcade machines. This is
+done both for educational purposes and for preservation purposes, in
+order to prevent many historical games from disappearing forever once the
+hardware they run on stops working. Of course, in order to preserve the
+games and demonstrate that the emulated behavior matches the original,
+you must also be able to actually play the games. This is considered a
+nice side effect, and is not MAME's primary focus.
+
+It is not our intention to infringe on any copyrights or patents on the
+original games. All of MAME's source code is either our own or freely
+available. To operate, the emulator requires images of the original ROMs,
+CDs, or hard disks from the arcade machines, which must be provided by
+the user. No portions of the original game code are included in the
+executable.
+
+
+--------
+II. Cost
+--------
+MAME is free. Its source code is free. Selling either is not allowed.
+
+
+----------------
+III. Image Files
+----------------
+ROM, CD, and hard disk images are all copyrighted material. They cannot
+be distributed without the explicit permission of the copyright owner.
+They are not "abandonware", nor have any of the games supported by MAME
+passed out of copyright.
+
+MAME is not intended to be used as a tool for mass copyright
+infringement. Therefore, it is strongly against the authors' wishes to
+sell, advertise, or link to resources that provide illegal copies of ROM,
+CD, or hard disk images.
+
+
+--------------------
+IV. Derivative Works
+--------------------
+Derivative works are allowed under the MAME license. However, you are
+discouraged from providing specific functionality that goes against the
+philosophy of the MAME team. Specifically:
+
+* Do not add games which are more recent than 3 years old, or which are
+still being sold new by the company that produced them. MAME is not
+intended to be a platform that competes with arcade games that are still
+being actively sold.
+
+* Do not provide a means of generating a list of games that specifically
+identifies those games for which the user does not have image files. This
+only encourages users to seek out sources for illegal ROM, CD, and hard
+disk images in order to "complete" their collection.
+
+* Do not remove the startup screen that contains information about why
+certain non-working games don't work. This only serves to generate a
+bunch of useless email traffic to the developers asking why the games
+don't work.
+
+Because the name MAME is trademarked, you must abide by the rules of the
+trademark usage if you wish to use "MAME" as part of the name your
+derivative work. In general, this means you must request permission,
+which requires that you follow the guidelines above.
+
+The version number of any derivative work should reflect the version
+number of the MAME release it was derived from.
+
+
+-------------------------------
+V. Official Contact Information
+-------------------------------
+For questions regarding the MAME license, trademark, or other usage, go
+to http://www.mamedev.org/
diff --git a/docs/newvideo.txt b/docs/newvideo.txt
new file mode 100644
index 00000000000..b5a8a573e6b
--- /dev/null
+++ b/docs/newvideo.txt
@@ -0,0 +1,146 @@
+This article originally appeared in a slightly different form at
+http://aarongiles.com. You should read this if you are used to how
+MAME's video system worked prior to 0.107 and you want to understand
+how you should configure MAME with the new rendering system in place.
+
+
+The New Video Landscape
+
+Since its inception 9 years ago, MAME’s video system has defaulted to
+a mode where it tries to change resolutions on you. And since the
+first port of the core to Windows 5 years ago, it has defaulted to
+using your graphics card to stretch the video to that resolution.
+
+I’m sure a lot of you out there have taken a lot of time to tweak the
+current set of video options to make them work the way you like. But
+every once in a while, you need to take a step back and re-evaluate
+the situation. The current video system has been in place for 5 years
+now without much substantial change. And with the recent rewrite,
+you’re almost certainly going to want to rethink the way you have
+things configured.
+
+At the highest level, there are really three different ways you can
+configure the new system. Placing yourself into one of these three
+categories will help you get the initial settings right. From there,
+you can tweak with the settings to figure out what works best.
+
+
+Category 1: Bells and whistles. People who fall into this category
+would include anyone with a modern system and a decent video card
+(decent in this context means at least 16MB of VRAM and built in the
+last 5 years or so — we’re not talking cutting edge here). Any decent
+video card will be able to render the simple MAME graphics at pretty
+much any resolution without breaking a sweat. Configure your desktop
+to the video mode you want (preferably something high like 1024×768
+or greater with a high refresh rate, unless you are running on a
+fixed-mode LCD, in which case just match what your LCD panel is),
+and tell MAME to leave the resolution alone. In this day and age,
+there is little reason to switch resolutions at all, unless you
+fall into Category 3, below. In this mode, you will have full access
+to artwork options, and you’ll get your artwork scaled to full
+resolution and with full alpha blending effects. Vector games will
+look crisp, you can use decent fonts, and you can see a whole lot
+more of the world when using the graphics/tilemap viewer. This mode
+uses Direct3D, so you should configure yourself like this:
+
+ -video d3d -noswitchres [-triplebuffer] [-nofilter]
+
+The -noswitchres option tells MAME to just run at the current
+resolution. Although you can let MAME pick a resolution for you, it
+doesn’t really make much sense in D3D mode, and in fact I may even
+remove that feature altogether. To avoid tearing artifacts, I
+recommend using the -triplebuffer option as well. Just make sure your
+monitor’s refresh rate is higher than the game you are running. If
+you dislike the blurry look of the graphics, you can specify the
+-nofilter option to disable bilinear filtering, though that will
+produce blocky artifacts. Alternatively, you can use the -prescale
+option which is described at the end of this article.
+
+
+Category 2: Like the old days. I really didn’t even want to support
+this mode at all, but certain vocal MAMEdevs would have skinned me
+alive otherwise. People who fall into this category include those who
+have weak systems that worked fine with previous versions of MAME,
+but who don’t run well with Direct3D rendering. (Note that just
+because Space Invaders runs unthrottled at 2000fps with DirectDraw
+and 1000fps with Direct3D doesn’t mean that Direct3D is going to be
+a serious issue when playing at a regular 60fps, so if you’re unsure,
+give the Direct3D route a try for a while.) In this mode, MAME will
+draw the game screen and artwork at the game’s resolution, just like
+it did in MAME 0.106 and earlier; however, some artwork options,
+such as -artcrop, won’t work as you might expect, and some alpha
+blending artwork modes (specifically overlays) will operate with a
+performance penality. MAME will then use your video card to stretch
+the video to the proper aspect ratio.
+
+ -video ddraw -hwstretch [-switchres] [-triplebuffer]
+
+The -switchres is optional here. If your video card is really ancient
+and struggles expanding the screen to fit your desktop resolution,
+you might want to turn it on. Again, to avoid tearing artifacts, I
+recommend using the -triplebuffer option as well, but make sure your
+monitor’s refresh rate is higher than the game you are running
+(-switchres will do that for you if you use it). If your video card
+produces blurry pixels which you don’t like, try the -prescale option
+described at the end of this article.
+
+
+Category 3: Anal video mode types. These are the guys who have
+generally built their own cabinets and set them up with a CRT display
+where they have several dozen carefully hand-tweaked video modes that
+approximate the original video modes the games ran at. They want MAME
+to pick that hand-tweaked mode and use it, drawing one pixel on the
+screen for each pixel in the original game. They don’t give a whit
+about artwork or anything other than the raw pixels going to the
+right place. Fortunately, you can still configure MAME for this case
+as well:
+
+ -video ddraw -nohwstretch -switchres [-triplebuffer]
+
+Obviously in this case, the -switchres is required. You also want to
+disable hardware stretching, otherwise you won’t get that “perfect”
+1:1 pixel mapping. Triple buffering may or may not help.
+
+
+So, I recommend starting with these initial options and then tweaking
+from there. One additional option you might want to try in
+combination with the above is the -prescale option. -prescale takes
+an integer parameter from 1 to 8, and specifies a magnification
+amount by which the screen pixels are expanded before they are drawn
+to the screen. Why is this useful? And how much of a performance
+impact does it have? Well, that depends on the mode you are running
+in.
+
+If you are running in Category 1 (-video d3d), then -prescale will
+use your video card to scale the game graphics up before rendering
+them to the screen. Depending on the video card, this is usually a
+small performance hit, but not too significant. The benefit is that
+each prescale factor reduces the blurriness of the pixels.
+-prescale 1 is the default, which does no scaling. -prescale 2 will
+double each pixel, -prescale 3 will triple each pixel, etc. For my
+money, -prescale 2 is sufficient, but people with super high
+resolution displays claim that larger -prescale factors work even
+better.
+
+If you are running in Category 2 (-video ddraw -hwstretch), then
+-prescale will cause MAME to compose the screen graphics at the
+specified scale factor. This is unfortunately done in software, but
+carries the benefit that artwork, fonts, and the graphics viewer can
+take advantage of the additional resolution to produce nicer results.
+The end effect is that you will get less blurry pixels, just like the
+Category 1 case, plus higher quality artwork, fonts, and more visible
+area in the graphics viewer.
+
+If you are running in Category 3 (-video ddraw -nohwstretch), then
+-prescale will cause MAME to pick a video mode that is the prescale
+factor times the raw screen resolution, and then MAME will, in
+software, compose the screen graphics at the specified scale factor.
+This has all the advantages of the Category 2 case, except that since
+there wasn’t any pixel blurring to begin with, there is no additional
+crispness that comes about as a result.
+
+Finally, you may be wondering about effects (and yes, scanlines are
+an “effect”). Effects are no longer hard-coded into the system.
+Rather, you can provide a PNG file in the artwork directory that will
+be loaded and overlaid on top of screen bitmaps. See the description
+of -effect in windows.txt for more details.
diff --git a/docs/windows.txt b/docs/windows.txt
new file mode 100644
index 00000000000..9b0097b1df8
--- /dev/null
+++ b/docs/windows.txt
@@ -0,0 +1,362 @@
+This file describes Windows-specific usage information about MAME. It is
+intended to cover aspects of using and configuring the program that are
+specific to running MAME from the command line on a Windows-based system.
+For common options that apply to all systems, please see config.txt.
+
+
+
+Default Keys
+------------
+
+In addition to the keys described in config.txt, the following additional
+keys are defined for Windows versions of MAME:
+
+
+Alt+Enter Toggles between full-screen and windowed mode.
+
+
+
+Windows debugging options
+-------------------------
+
+-[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).
+
+
+
+Windows performance options
+---------------------------
+
+-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.
+ The default is OFF (-nomultithreading).
+
+
+
+Windows 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.
+
+-[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).
+
+
+
+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.
+
+
+
+Windows sound options
+---------------------
+
+-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
+--------------------
+
+-[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).