MAME(6)
MAME(6) ๐ the MAME manual page (aka the Multi-purpose emulation framework)
okay bestie, sit DOWN, because this is the manual for MAME โ and yes, it's giving encyclopedia but make it cute. This is part 1 of 5, so hydrate and stay with me. โจ
๐ธ NAME ๐ธ
MAME โ the Multi-purpose emulation framework. that's it, that's the whole name, and it ate. ๐
โจ SYNOPSIS โจ
mame [options] gamename
like. that's the shape of it. options, then the game. iconic structure. ๐
๐ฆ DESCRIPTION ๐ฆ
So MAME got started in 1997 by Nicola Salmoria, and the original plan was lowkey modest โ it was meant to be a bunch of separate emulators, one for each individual game. cute, right? but then they got smooshed together into a single multi-game emulator and the glow-up was unreal. ๐
In the years after that, MAME just kept growing and growing and growing until it became the actual size it is today, with more than 100 contributors to the project. over a hundred people. contributing. to one emulator. main character energy fr fr. ๐
๐ OPTIONS ๐
๐ฎ Core commands
-help,-?โ shows you the current MAME version plus the copyright notice. your lil "hi who am i" check-in. ๐-validate,-validโ runs internal validation on every single driver in the system. run this before you submit changes, bestie, because it's the vibe check that catches you violating any of the core system rules. no cap, do it first. ๐ฅ
โ๏ธ Configuration commands
-createconfig,-ccโ creates the defaultmame.inifile in the current directory. and here's the tea: all the configuration options (not commands!) described below can be permanently changed by editing this configuration file. so like, this is the one that makes the rest stick. ๐-showconfig,-scโ displays the current configuration settings. a lil mirror moment. ๐ช-showusage,-suโ displays a summary of all the command line options. for options that are not mentioned here, the short summary given by-showusageis usually sufficient. ๐ซถ
๐น๏ธ Frontend commands
okay so first, the housekeeping: all the list commands below write info to the screen. if you want that info in a textfile instead, use redirection. example time, because examples slay:
mame -listxml > ~/mamelist.xml
that writes the full list of supported games to the file mamelist.xml in your home directory. you're welcome. โจ
-listxml,-lx[gamename|wildcard] โ lists comprehensive details for all of the supported games. the output is quite long (she's wordy, we love her), so it's usually better to redirect this into a file. 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-listxmlcommand. ๐-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-listfullcommand. ๐ซ-listsource,-ls[gamename|wildcard] โ displays a list of drivers and the names of the source files their game drivers live in. super useful for finding which driver a game runs on so you can go fix bugs. by default all games are listed; however, you can limit this list by specifying a driver name or wildcard after the-listsourcecommand. ๐-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-listclonescommand. ๐ฏ-listbrothers,-lb[gamename|wildcard] โ displays a list of "brothers" or other drivers from the same sourcefile. by default all games are listed; however, you can limit this list by specifying a driver name or wildcard after the-listbrotherscommand. sibling behavior fr. ๐ซ-listcrcโ displays a full list of CRCs of all ROM images referenced by all drivers within MAME code. all of them. every last one. ๐-listroms,-lrgamename โ displays a list of ROM images referenced by the specified game. ๐-listsamplesgamename โ 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 rom path are verified; however, you can limit this list by specifying a driver name or wildcard after the-verifyromscommand. ๐ฅ-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-verifyromscommand. (yes, the original says-verifyromsthere. i'm just the messenger, bestie. ๐)-romidentโ attempts to identify ROM files, if they are known to MAME, in the specified.zipfile 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โ all files were identified7โ all files were identified except for some "non-ROM" files8โ some files were identified9โ no files were identified
mystery board? solved. periodt. ๐
-listdevices,-ldโ output the list of devices referenced by a given game or set of games. ๐ธ-listslots,-lslotโ output the list of available slots and slot devices for the system. ๐งฉ-listmedia,-lmโ output the list of available media for the system. ๐ผ-listsoftware,-lsoftโ output the list of known software for the system. ๐พ-verifysoftware,-vsoft[gamename|wildcard] โ checks for invalid or missing ROM images in your software lists. 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 specific driver name or wildcard. ๐ฆ-getsoftlist,-glistโ retrieve software list by name. short, sweet, does exactly what it says. โจ-verifysoftlist,-vlist[softwarelistname] โ checks a specified software list for missing ROM images if files exist for issued softwarelistname. 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 specific softwarelistname (without.XML). ๐-listmidi,-mlistโ create a list of list available MIDI I/O devices for use with emulation. (double "list" is canon, don't @ me.) ๐น-listnetwork,-nlistโ list available network adapters. ๐
๐ ๏ธ 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โ the main configuration filename.iniโ where name is your executable name, i.e.mameunless you changed it (e.g. if you renamed mame tomame0137, the parsed file will bemame0137.ini)debug.ini, if the debugger is enabledvector.ini, for vector games only[driver].iniโ based on the source filename of the game driver[parent].iniโ for clones only, may be called recursively[gamename].iniโ note this sometimes resolves to the same of the source driver
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]writeconfig,-[no]wcโ write configuration to[driver].inion exit. default is OFF (-nowriteconfig). ๐ซถ
๐บ๏ธ Search path options
โ ๏ธ be careful to use the path, directory and file options in mame.ini ONLY. otherwise, the outcome may be unpredictable and not consistent across releases. like, genuinely, don't freestyle this one bestie. ๐ญ
-rompath,-rp,-biospath,-bppathname โ 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). ๐-hashpathpathname โ specifies a list of paths within which to search for software hash files. multiple paths can be specified by separating them with semicolons. the default is'hash'(that is, a directory'hash'in the same directory as the MAME executable). ๐ธ-samplepath,-sppathname โ 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_directorypathname โ 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_directorypathname โ 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). ๐ฎ-inipathpathname โ specifies a list of paths within which to find.INIfiles. multiple paths can be specified by separating them with semicolons. the default is'/etc/mame/'. ๐-fontpathpathname โ specifies a list of paths within which to find.BDFfont 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). ๐ค-cheatpathpathname โ specifies a list of paths within which to find cheat files. multiple paths can be specified by separating them with semicolons. the default is'cheat'(that is, a directory'cheat'in the same directory as the MAME executable). ๐-crosshairpathpathname โ specifies a list of paths within which to find crosshair files. multiple paths can be specified by separating them with semicolons. the default is'crosshair'(that is, a directory"crosshair"in the same directory as the MAME executable). if the Crosshair is set to default in the menu, MAME will look forgamenamespecified crosshairpath, where#is the player number. failing that, MAME will use built-in default crosshairs. ๐ฏ-pluginspathpathname โ specifies a single path within which to find plugins. the default is'plugins'(that is, a directory'plugins'in the same directory as the MAME executable). ๐-languagepathpathname โ specifies a single path within which to find language files. the default is'language'(that is, a directory'language'in the same directory as the MAME executable). ๐
okay that's part 1 and we are so not done, there's more coming. don't go anywhere. ๐
โจ Output Directory Options โจ
Okay bestie, these options are literally just where do you want MAME to put your stuff? ๐ You give it a single directory for each thing, and if that directory doesn't exist, MAME will be like "say less" and create it for you. No cap. ๐ซถ
-cfg_directory pathnameโ tells MAME where to stash your config files. These are the user settings that get read when MAME starts up and written when it exits. The default iscfg(that's a directory calledcfgright next to the MAME executable). If it's not there, MAME makes it. โจ-nvram_directory pathnameโ where NVRAM files live. These hold the contents of EEPROM and non-volatile RAM (NVRAM) for games that used that kind of hardware. Data is read at startup and written when MAME exits. Default isnvram(a directorynvramin the same place as the MAME executable). Auto-created if missing. ๐พ-input_directory pathnameโ where input recording files go. You make these with the-recordoption and play them back with-playback. Default isinp(a directoryinpnext to the MAME executable). Auto-created if it doesn't exist. ๐ฎ-state_directory pathnameโ where save state files are stored. These get read and written when you ask for it, or when you're using the-autosaveoption. Default issta(a directorystanext to the MAME executable). Auto-created if missing. ๐พ-snapshot_directory pathnameโ where screen snapshots go when you request them. Default issnap(a directorysnapnext to the MAME executable). Auto-created if it's not there. ๐ธ-diff_directory pathnameโ where hard drive differencing files are stored. These files hold any data that gets written back to a hard disk image, so the original image stays pristine. The differencing files are created at startup when a game with a hard disk image. Default isdiff(a directorydiffnext to the MAME executable). Auto-created if missing. ๐ฝ-comment_directory pathnameโ where debugger comment files live. The debugger writes these when you add comments to the disassembly for a game. Default iscomments(a directorycommentsnext to the MAME executable). Auto-created if it doesn't exist. ๐
โฏ๏ธ State/playback options โฏ๏ธ
These are all about saving, loading, recording, and playing back your game sessions. It's giving time travel, bestie. ๐ฐ๏ธ
-state slotโ right after you start the specified game, MAME will load the save state from the slot you picked. Instant nostalgia. ๐ฎ-[no]autosaveโ when enabled, MAME automatically creates a save state file when you exit, and automatically tries to reload it when you start MAME with the same game later. This only works for games that have explicitly enabled save state support in their driver. Default is OFF (-noautosave). ๐ด-playback,-pb filenameโ specifies a file to play back a series of game inputs from. This feature does not work reliably for all games, but you can use it to watch a previously recorded game session from start to finish.
Bestie, listen: to make things consistent, you should only record and playback with all configuration (.cfg), NVRAM (.nv), and memory card files deleted. ๐๏ธ
Default is NULL (no playback). โฏ๏ธ
-[no]exit_after_playbackโ if playback is enabled (see-playback), the program exits when it reaches the end of the file. Otherwise the machine keeps running. Default is OFF (-noexit_after_playback). ๐ช-record,-rec filenameโ specifies a file to record all input from a game session. You can use this to record a session for later playback. Same tea as playback: this feature does not work reliably for all games, but you can use it to watch a previously recorded game session from start to finish.
Again, to keep things consistent, you should only record and playback with all configuration (.cfg), NVRAM (.nv), and memory card files deleted. ๐๏ธ
Default is NULL (no recording). โบ๏ธ
-[no]record_timecodeโ whether to create a timecode file. It contains a line with elapsed times on each press of the timecode shortcut key (default isF12). This option works only when recording mode is enabled (-recordoption). The file is saved in theinpfolder. Default is OFF (-norecord_timecode). โฑ๏ธ-mngwrite filenameโ writes each video frame to the given filename in MNG format, producing an animation of the game session. Note that-mngwriteonly writes video frames; it does not save any audio data. Use-wavwritefor that, and reassemble the audio/video using offline tools. Default is NULL (no recording). ๐๏ธ-aviwrite filenameโ streams video and sound data to the given filename in AVI format, producing an animation of the game session complete with sound. 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. Default is NULL (no recording). ๐-snapname stringโ describes how MAME should name files for snapshots.stringis a template used to generate a filename. Three simple substitutions are provided: the/character represents the path separator on any target platform (even Windows); the literal%grepresents the driver name of the current game; and the literal%irepresents an incrementing index. If%iis omitted, then each snapshot taken will overwrite the previous one; otherwise, MAME will find the next empty value for%iand use that for a filename. Default is%g/%i, which creates a separate folder for each game, and names the snapshots under it starting with0000and increasing from there. Example: if you usemame robby -snapname foo/%g%isnapshots will be saved assnaps/foo/robby0000.png,snaps/foo/robby0001.pngand so on. ๐ธ-snapsize widthxheightโ hard-codes the size for snapshots and movie recording. By default, MAME creates snapshots at the game's current resolution in raw pixels, and creates movies at the game's starting resolution in raw pixels. If you specify this option, MAME will create both snapshots and movies at the size you give, and will bilinear filter the result. Note that this size does not automatically rotate if the game is vertically oriented. Default isauto. ๐-snapview internal|auto|viewnameโ specifies the view to use when rendering snapshots and movies. By default, both use a specialinternalview, which renders a separate snapshot per screen or renders movies only of the first screen. By specifying this option, you can override this default behavior and select a single view that will apply to all snapshots and movies. Note thatviewnamedoes not need to be a perfect match; rather, it will select the first view whose name matches all the characters specified byviewname. For example,-snapview nativewill match the"Native (15:14)"view even though it is not a perfect match.viewnamecan also beauto, which selects the first view with all screens present. Default value isinternal. ๐-[no]snapbilinearโ specify whether snapshot/movie should have bilinear filtering applied. Default is ON (-snapbilinear). โจ-statename stringโ describes how MAME should store save state files, relative to thestate_directorypath.stringis a template used to generate a relative path. Two simple substitutions are provided: the/character represents the path separator on any target platform (even Windows); the literal%grepresents the driver name of the current game. Default is%g, which creates a separate folder for each game. Example: if you usemame robby -statename foo/%gsave states will be stored insidesta/foo/robby/. ๐พ-[no]burninโ tracks brightness of the screen during play and at the end of emulation generates a PNG that can be used to simulate burn-in effects on other games. The resulting PNG is created such that the least-used areas of the screen are fully white (since burned-in areas are darker, all other areas of the screen must be lightened a touch). The intention is that this PNG can be loaded via an artwork file with a low alpha (e.g.,0.1-0.2seems to work well) and blended over the entire screen. The PNG files are saved in thesnapdirectory under thegamename\burnin-<screen.name>.png. Default is OFF (-noburnin). ๐ฅ
๐ฅ Performance options ๐ฅ
These are for when your computer is acting up and you need that smooth gameplay, bestie. It's giving let me cook. ๐ฉโ๐ณ
-[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-frameskipbelow. Default is OFF (-noautoframeskip). ๐โโ๏ธ-frameskip,-fs valueโ specifies the frameskip value (autoframeskipmust be disabled). 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. Default value is0, which skips no frames. ๐-seconds_to_run,-str valueโ okay so this one is for benchmarking and automated testing โจ it tells MAME to just stop after a fixed number of seconds, periodt. Pair it with a fixed set of other command line options and boom โ you've got a consistent lil environment for benchmarking MAME performance ๐ซถ and bestie, bonus: on exit,-strwrites a screenshot calledfinal.pngstraight into the game's snapshot directory ๐ธ-[no]throttleโ sets the default throttling setting. Throttling ON means MAME tries to keep the game running at the game's intended speed ๐ข throttling OFF means MAME runs it as fast as it possibly can ๐๏ธ and ngl, the fastest speed is more often than not limited by your graphics card, especially for the older games. Default is ON (-throttle).-[no]sleepโ lets MAME give some time back to the system while running with-throttle๐ค so other programs can get a lil CPU time, assuming the game isn't taxing 100% of your CPU resources. Lowkey it can cause hiccups in performance if other demanding programs are running though ๐ญ Default is ON (-sleep).-speed valueโ controls the speed of gameplay relative to realtime; smaller numbers = slower ๐ Default is1.00.-[no]refreshspeed,-[no]rsโ automatically adjusts the-speedparameter to keep the effective refresh rate below that of the lowest screen refresh rate โจ Default is OFF (-norefreshspeed).-numprocessors,-np valueโ set the number of processors; this overrides the number the system reports ๐-bench valueโ benchmark for the given number of emulated seconds; implies-video none -sound none -nothrottle๐ฅ-[no]sdlvideofpsโ show SDL video performance. Default is OFF (-nosdlvideofps).
โจ Rotation options โจ
-[no]rotateโ rotates the game to match its normal state (horizontal/vertical) ๐ this makes sure both vertically and horizontally oriented games show up correctly without you needing to rotate your actual monitor. If you want to keep the game displaying 'raw' on the screen the way it would have in the arcade, turn this OFF. 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-rotateis specified) or its native state (if-norotateis specified) ๐ Default for both is OFF (-noror -norol).-[no]autoror|-[no]autorolโ these are designed for pivoting screens that only pivot in a single direction ๐ if your screen only pivots clockwise, use-autorolso the game fills the screen either horizontally or vertically in one of the directions you can handle. If your screen only pivots counter-clockwise, use-autoror. Default for both is OFF (-noautoror -noautorol).-[no]flipx-[no]flipyโ flip (mirror) the game screen either horizontally (-flipx) or vertically (-flipy) ๐ the flips get applied after the-rotateand-ror/-roloptions are applied. Default for both is OFF (-noflipx -noflipy).
๐ Artwork options ๐
-[no]artwork_crop,-[no]artcropโ enable cropping of artwork to the game screen area only โ๏ธ this one can also be controlled via the Video Options menu in the user interface. Default is OFF (-noartwork_crop).-fallback_artwork artworknameโ specifies fallback artwork if no external artwork or internal driver layout is defined ๐ผ๏ธ if external artwork for the system is present, or a layout is included in the driver for the system, then that takes precedence.-override_artwork artworknameโ specifies override artwork for external artwork and internal driver layout ๐-artwork_font,-artfont fontnameโ specifies the name of a font file to use for artwork text elements. The specifics are the same as the-uifontoption ๐๏ธ
๐ฆ 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. Standard value is1.0. Lower values (down to0.1) give you a darkened display, higher values (up to2.0) give you a brighter one. Default is1.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. Standard value is1.0. Lower values (down to0.1) give a dimmer display, higher values (up to2.0) give a more saturated one. Default is1.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. Standard value is1.0, which gives a linear ramp from black to white. Lower values (down to0.1) increase the nonlinearity toward black, higher values (up to3.0) push the nonlinearity toward white. Default is1.0.-pause_brightness valueโ controls the brightness level when MAME is paused โธ๏ธ Default value is0.65.-effect [none|filename[.png]]โ name of a PNG file to use for visual effects, or'none'. Default is'none'๐ซ
๐ฅ Vector rendering options ๐ฅ
-beam_width_min value-beam_width_max valueโ sets the minimum and maximum width of the vectors ๐ this is a scaling factor against the standard vector width, interpolated between minimum and maximum according to the beam's intensity. A value of1.0keeps the default vector line width. Smaller values reduce the width, larger values increase it. Default is1.0.-beam_intensity_weight valueโ applies an exponential weight to the minimum and maximum beam width โก for positive values the interpolated scaling factor affects lines with higher intensity more than lines with lower intensity. Default is0.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 of0.00-100.00(0=none,100=maximum). Default is0.
๐ Video options ๐
-video [soft|opengl|bgfx|none]โ specifies which video subsystem to use for drawing:softโ uses software rendering, which is slower but more compatible ๐ขopenglโ uses OpenGL and your graphics accelerator to speed up many aspects of drawing MAME, including compositing artwork, overlays, and bezels, as well as stretching the image to fit your screen ๐๏ธbgfxโ uses the bgfx renderer which supports portable shaders and multiple graphics APIs including OpenGL, OpenGL ES and DirectX โจnoneโ does no drawing and is intended for CPU benchmarking ๐
Default is 'soft' on Linux or 'opengl' on macOS.
-numscreens [1-4]โ number of screens to create; usually you want just one ๐ Default is'1'.-[no]window,-[no]wโ run MAME in either full screen or a window ๐ช this is a fully-featured window mode where the window resizes as necessary to track what the game does, and you can resize it yourself with your OS's standard window controls. Default is OFF (-nowindow).-[no]maximize,-[no]maxโ controls initial window size in windowed mode ๐ฒ if it's set on, the window is initially set to the maximum supported size when you start MAME. If it's turned off, the window starts out at the smallest supported size. This only has an effect when the-windowoption is used. Default is ON (-maximize).-[no]keepaspect,-[no]kaโ forces the correct aspect ratio ๐ meaning when you resize the window in windowed mode, the actual game image resizes in discrete steps to maintain the proper shape of the game graphics. Turn it off and you can resize the window to literally anything and get funny squishing and stretching ๐ same applies for full-screen. Default is ON (-keepaspect).-[no]unevenstretch,-[no]uesโ allow non-integer stretch factors โจ video purists should stay far, far away from this option, while everyone else will be happy to know that it lets you fill the screen properly in full-screen mode. Default is ON (-unevenstretch).-[no]unevenstretchx,-[no]uesxโ acts as-[no]unevenstretchon a horizontal basis only ๐ซถ-[no]intoverscan,-[no]iosโ allow overscan on integer scaled targets.-intscalex,-sxโ set horizontal integer scale factor.-intscaley,-syโ set vertical integer scale factor.-[no]centerhโ center horizontally within the view area. Default is ON (-centerh).-[no]centervโ center vertically within the view area. Default is ON (-centerv).-[no]waitvsync,-[no]vsโ enable waiting for the start of VBLANK before flipping screens; reduces tearing effects ๐ฅ๏ธ Default is OFF (-nowaitvsync).-[no]syncrefresh,-[no]srfโ enable using the start of VBLANK for throttling instead of the game time โฑ๏ธ Default is OFF (-nosyncrefresh).
๐ง Software video rendering subsystem options ๐ง
NOTE: All the options in this group are available only with the software video rendering subsystem, i.e. -video soft. ๐
-prescale [value]โ scale screen rendering by this amount in software ๐ Default is1.-scalemode,-sm [none|async|yv12|yuy2|yv12x2|yuy2x2]โ the hardware scaling mode, bestie. pick your fighter:noneโ software rendering, baby.asyncโ async overlay.yv12โ yv12 overlay.yuy2โ yuy2 overlay.yv12x2โ yv12 overlay using x2 prescaling.yuy2x2โ yuy2 overlay using x2 prescaling.- Default is
NONE.
โจ OpenGL video rendering subsystem options โจ
NOTE: every single option in this lil group only shows up when you're running the OpenGL video rendering subsystem, aka -video opengl. no opengl, no vibes. ๐
-[no]filter,-[no]glfilter,-[no]fltโ turns on bilinear filtering for the screen output. Default is ON (-filter).-prescale [value]โ scales the screen rendering by this amount, in software. Default is1.-[no]gl_forcepow2textureโ forces power of two textures. Default is OFF (-nogl_forcepow2texture).-[no]gl_notexturerectโ don't use OpenGLGL_ARB_texture_rectangle. turn this off if corruption shows up in OpenGL mode, but know that it costs you some performance. Default is ON (-gl_notexturerect).-[no]gl_vboโ enables OpenGL VBO, if it's available, for a performance glow-up. turn it off if corruption shows up. Default is ON (-gl_vbo).-[no]gl_pboโ enables OpenGL PBO, if it's available, for a performance glow-up. turn it off if corruption shows up. Default is ON (-gl_pbo).-[no]gl_glslโ enables OpenGL GLSL, if it's available, for a performance glow-up. Default is OFF (-nogl_glsl).-gl_glsl_filter valueโ enables OpenGL GLSL filtering instead of FF filtering.0=plain,1=bilinear. Default is1: bilinear.-glsl_shader_mame[0-9]โ your preferred custom OpenGL GLSL shader set mame bitmap (from0to9).-glsl_shader_screen[0-9]โ your preferred custom OpenGL GLSL shader screen bitmap (from0to9).-screenโ explicit name for all screens;'auto'here will try to make a best guess.-aspect,-screen_aspectโ aspect ratio for all screens;'auto'here will try to make a best guess.-resolution,-rโ preferred resolution for all screens; format iswidthxheight[@refreshrate]or'auto'.-viewโ preferred view for all screens.-screen[0-3]โ explicit name of the first|second|third|fourth screen;'auto'here will try to make a best guess.-aspect[0-3]โ aspect ratio of the first|second|third|fourth screen;'auto'here will try to make a best guess.-resolution[0-3],-r[0-3]โ preferred resolution for the first|second|third|fourth screen; format iswidthxheight[@refreshrate]or'auto'.-view[0-3]โ preferred view for the first|second|third|fourth screen.
๐ BGFX post-processing options ๐
NOTE: all the options in this group are only available when BGFX video post-processing is enabled, aka-video bgfx. for the full tea on BGFX, go visit the official MAME documentation page athttp://docs.mamedev.org/advanced/bgfx.html. ๐ฆ
-bgfx_path pathnameโ this is where your BGFX shader files live. the default is'bgfx'(meaning a directory called"bgfx"sitting in the same directory as the MAME executable).-bgfx_backend auto|openglโ picks a rendering backend for BGFX to use. default is'auto', which lets MAME choose the best selection for you. main character energy, honestly.-bgfx_debugโ enables BGFX debugging features. most users will not need this. ๐-bgfx_screen_chains default|unfiltered|hlsl[,...]โ this dictates how to handle BGFX rendering on a per-display basis. for each display, pick one of these:defaultโ default bilinear filterered outputunfilteredโ nearest neighbor unfiltered outputhlslโ HLSL display simulation through shaders
separate directives for each window with a comma (,) and for each physical screen with a colon (:). for example, for an emulated game with 3 displays emulated on 3 windows on your monitor, -bgfx_screen_chains default,unfiltered,default says: apply the default filter on what's being rendered on the first and third window, and leave the content of the second window unfiltered. โจ
-bgfx_shadow_mask filenameโ this specifies the shadow mask effect PNG file. default is'slot-mask.png'.-bgfx_avi_name filenameโ this specifies a filename for BGFX output logging.
๐ฅ๏ธ Full screen options ๐ฅ๏ธ
-[no]switchresโ only matters in full screen mode, periodt. it chooses whether MAME can try to change the screen resolution (color depth is normally left alone) while in full-screen mode. if it's off, you always get your desktop resolution in full-screen mode (which can genuinely be useful for LCDs). Default is OFF (-noswitchres).-[no]useallheadsโ splits the full screen image across monitors. Default is OFF (-nouseallheads).
๐ Sound options ๐
-sound [sdl|portaudio|coreaudio|wasapi|xaudio2|none]โ specifies which sound subsystem handles your audio output:sdlโ uses the Simple DirectMedia Layer audio output system (not available on Windows by default).portaudioโ uses the PortAudio library, which supports low-latency output and multiple audio APIs.coreaudioโ uses the CoreAudio API (supports AudioUnit effects, only available on macOS).wasapiโ uses the Windows Audio Session API (WASAPI) (only available on Windows).xaudio2โ uses the XAudio2 API (does not support sound input, only available on Windows).noneโ produces no audio output. silence. ๐
Default is 'wasapi' on Windows, 'coreaudio' on macOS, or 'sdl' on other platforms.
-samplerate,-srf 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 is48000.-[no]samplesโ use samples if available. the default is ON (-samples).-volume,-vol valueโ sets the startup volume. you can change it later with the user interface (see the Keys section). the volume is in dB: e.g."-volume -12"will start with-12dBattenuation. the default is0.-audio_latency,-alat valueโ this controls how much latency is built into the audio streaming. smaller values give you less audio delay while demanding better system performance. higher values increase audio delay but may help avoid buffer under-runs and audio interruptions. the default is0and will pick a sane duration.
๐ฎ Input options ๐ฎ
-[no]coin_lockout,-[no]coinlockโ enables simulation of the"coin lockout"feature that's implemented on a bunch of game PCBs. whether the coin lockout outputs were actually wired to the coin mechanisms was up to the operator, iykyk. if this feature is enabled, then attempts to enter a coin while the lockout is active will fail and will display a popup message in the user interface. if this feature is disabled, the coin lockout signal gets ignored. the default is ON (-coin_lockout).-ctrlr controllerโ enables support for special controllers. configuration files are loaded from thectrlrpath. they're in the same format as the.cfgfiles that get saved, but only control configuration data is read from the file. the default isNULL(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 get lightgun support going. when this is enabled, you will not be able to use your mouse while playing a game. if you want control of your computer back, you'll 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. the default is ON (-joystick).-[no]lightgun,-[no]gunโ controls whether or not MAME makes use of lightgun controllers. note that most lightguns map to the mouse, so using-lightgunand-mousetogether 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 it looks like a single keyboard. turning this option on enables 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 it looks like a single mouse. turning this option on enables 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 pressed at exactly the same time to pull off special moves. due to limitations in the PC keyboard hardware, that can be difficult or even impossible with the standard keyboard handling. this option selects a different handling that makes simultaneous button presses easier to register, but it has the downside of making controls less responsive. the default is OFF (-nosteadykey).-[no]ui_activeโ enables the MAME user interface on top of the emulated keyboard (if present). the user interface may be toggled during execution by pressing the key defined with-ui_modekey. default is OFF (-noui_active).-[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 doesn't support off screen reloads. the default is OFF (-nooffscreen_reload).-joystick_map,-joymap mapโ controls how joystick values map to digital joystick controls. see/usr/share/doc/mame/config.txtfor full details on the map format. ๐-joystick_deadzone,-joy_deadzone,-jdzvalue โ bestie, analog sticks drift at the center, it's a whole thing ๐ญ this tells MAME how far you gotta move along an axis before the axis even starts to change. Wants a float from0.0to1.0, where0is the joystick center and1is the outer limit. Default is0.3.-joystick_saturation,-joy_saturation,-jsatvalue โ same energy but for the ends of the stick: they can drift too, and the +/- directions might not even match up. This one says how far along an axis a movement change gets accepted before it hits maximum range. Float from0.0to1.0,0= center,1= outer limit. Default is0.85.-[no]natural,-[no]natโ lets you say whether or not to use a natural keyboard ๐ this starts your game or system in a 'native' mode depending on your region, so non-"QWERTY" keyboards get compatibility love. Default is OFF (-nonatural).-[no]joystick_contradictory,-[no]joy_contradictoryโ enable contradictory direction digital joystick input at the same time ๐ default is OFF (-nojoystick_contradictory).-coin_impulsetime โ sets the coin impulse time ๐ช a negative time disables the impulse; set time to0to obey the driver, or give a positive value to set the impulse time.-uimodekey,-umkvalue โ picks the key that toggles between full and partial UI mode ๐-uifontproviderauto|sdl|noneโ provider for the UI font โจ-outputconsole|network|noneโ provider for output ๐ค-keyboardproviderauto|sdl|noneโ provider for keyboard input โจ๏ธ-mouseproviderauto|sdl|noneโ provider for mouse input ๐ฑ๏ธ-lightgunproviderauto|noneโ provider for lightgun input ๐ซ-joystickproviderauto|sdl|noneโ provider for joystick input ๐น๏ธ-[no]keymapโ enable keymap for non-QWERTY keyboards ๐ used together with-keymap_file. Default is OFF (-nokeymap).-keymap_filekeymap_file โ the full path to the keymap file you wanna use. A few keymap files are hanging out in/usr/share/games/mess/keymaps๐-joy_idx[0-8]joystick โ assign a joystick to a specific index in MAME ๐ฎ even if the kernel lists the joysticks in a different order on the next boot, MAME still sees the joystick as like "Joystick 2". Usemame -vto see which joysticks are recognized. Default is'auto'.-[no]sixaxisโ special handling for PS3 Sixaxis controllers ๐ฎโจ default is OFF (-nosixaxis).-mouse_index[1-8]โ map a mouse to a specific index in MAME ๐ญ-keyb_idx[0-8]keyboard โ assign a keyboard to a specific index in MAME โจ๏ธ๐-videodriver,-vdauto|x11|directfbโ which SDL video driver to use;'auto'picks the SDL default ๐ฅ๏ธ-renderdriver,-rdauto|software|opengl|directfbโ which SDL render driver to use;'auto'picks the SDL default ๐-audiodriver,-adauto|alsa|artsโ which SDL audio driver to use;'auto'picks the SDL default ๐-gl_libauto|alsa|artsโ an alternativelibGL.soto use;'auto'picks the SDL default ๐ซ
๐ฎ Input automatic enable options ๐ฎ
-paddle_device,-paddle[none|keyboard|mouse|lightgun|joystick]-adstick_device,-adstick[none|keyboard|mouse|lightgun|joystick]-pedal_device,-pedal[none|keyboard|mouse|lightgun|joystick]-dial_device,-dial[none|keyboard|mouse|lightgun|joystick]-trackball_device,-trackball[none|keyboard|mouse|lightgun|joystick]-lightgun_device[none|keyboard|mouse|lightgun|joystick]-positional_device[none|keyboard|mouse|lightgun|joystick]-mouse_device[none|keyboard|mouse|lightgun|joystick]
Okay so each of these controls automatically enabling the mouse or joystick depending on whether a particular class of analog control is present for a particular game ๐ like, say you pass -paddle mouse โ then any game with a paddle control auto-enables mouse controls, exactly as if you'd typed -mouse yourself. Heads up bestie: these controls override the values of -[no]mouse, -[no]joystick, etc. So they're running the show ๐
๐ Debugging options ๐
-[no]logโ creates a file callederror.logwith all the internal log messages from the MAME core and game drivers ๐ default is OFF (-nolog).-[no]verbose,-[no]vโ shows internal diagnostic info, which is so useful for debugging your config. IMPORTANT: when reporting bugs, please run withmame -verboseand include the resulting information ๐ default is OFF (-noverbose).-[no]update_in_pauseโ updates the screen bitmap while the game is paused. Great for debugging in some scenarios (and lowkey in the way in others ๐ญ). Default is OFF (-noupdate_in_pause).-[no]debug,-[no]dโ activates the integrated debugger ๐ by default you enter it by pressing the tilde (~) key during emulation, and it's also entered immediately at startup. Default is OFF (-nodebug).-debugscriptfilename โ a file containing a list of debugger commands to execute immediately upon startup. Default isNULL(no commands).-debuggerdebugger_name โ name of the debugger to use. Default isAUTO.-debugger_font,-dfontfont_name โ the font to use for debugging. Default isAUTO.-debugger_font_size,-dfontsizesize โ the font size to use for debugging.-[no]oslogโ outputs theerror.logdata to the system debugger ๐ก you can use this at the same time as-logto send the log data to both targets. Default is OFF (-nooslog).
๐ Communication options ๐
-comm_localhostโ local address to bind to.-comm_localportโ local port to bind to.-comm_remotehostโ remote address to connect to.-comm_remoteportโ remote port to connect to.
โจ Misc options โจ
-[no]drcโ enable the DRC cpu core if it's available. Default is ON (-drc) ๐ฅ-[no]drc_use_cโ force the DRC to use the C backend. Default is OFF (-nodrc_use_c).-[no]drc_log_umlโ write the DRC UML disassembly log. Default is OFF (-nodrc_log_uml).-[no]drc_log_nativeโ write the DRC native disassembly log. Default is OFF (-no_drc_log_native).-biosbiosname โ the specific BIOS to use with the current game, for game systems that use a BIOS. The-listxmloutput lists all the possible BIOS names for a game. Default is'default'.-[no]cheat,-[no]cโ activates the cheat menu with autofire options and other tricks from the cheat database, if it's there ๐ default is OFF (-nocheat).-[no]skip_gameinfoโ forces MAME to skip displaying the game info screen. Default is OFF (-noskip_gameinfo).-uifontfontname โ the name of a BDF font file to use for the UI font ๐ if this font can't be found or can't be loaded, the system falls back to its built-in UI font. On some platforms fontname can be a system font name instead of a BDF font file. Default is'default'(use the OSD-determined default font).-uisimple|cabinetโ type of UI.-ramsize,-ramvalue โ size of RAM (if supported by driver) ๐ง-[no]confirm_quitโ display the confirm quit screen on exit. Default is ON (-confirm_quit).-[no]ui_mouseโ display the UI mouse cursor. Default is OFF (-noui_mouse).-autoboot_command,-abcommand โ command string to execute after machine boot (in quotes"") ๐ฌ to issue a quote to the emulation, use"""in the string. Using\nissues a new line, issuing what was typed prior as a command. Example:-autoboot_command "load """$""",8,1\n".-autoboot_delay[value]โ timer delay (in seconds) to trigger command execution on autoboot โฑ๏ธ default is2.-autoboot_script,-script[filename.lua]โ file containing scripting to execute after machine boot ๐-[no]consoleโ enable the emulator LUA console. Default is OFF (-noconsole).-[no]pluginsโ enable LUA plugin support. Default is ON (-plugins).-pluginvalue โ list of plugins to enable.-nopluginvalue โ list of plugins to disable.-language,-langvalue โ display language. Default is'English'๐-watchdogvalue โ a number of seconds after which MAME should automatically exit if it detects that the emulation has locked up ๐๐ฆบ
๐ SEE ALSO ๐
โ๏ธ LEGAL NOTICE โ๏ธ
Bestie, please visit the MAME website for some important legal information, this one's serious ๐ซถ
http://mamedev.org/legal.html
And that's a wrap on the whole page, periodt ๐
this was MAME(6) from version 0.176, dated 2016-07-21 โ go forth and emulate, you absolute icon ๐๐ธ
๐ฆ where this page comes from
- arch rolling: mame 0.289-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSL-1.0 AND CC0-1.0 AND GPL-2.0-only AND LGPL-2.1-only AND MIT AND Zlib
- fedora 43: mame 0.289-1.fc43 ยท GPL-2.0-or-later
- fedora 44: mame 0.286-2.fc44 ยท GPL-2.0-or-later
- fedora 44: mame 0.289-1.fc44 ยท GPL-2.0-or-later
- ubuntu resolute: mame 0.285+dfsg1-1 ยท BSD-3-Clause
- ubuntu stonking: mame 0.289+dfsg1-1 ยท BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms