# Using MESS at the Command Line

This section deals with configuring and running MESS for Win32. It includes where to start, an in depth look at the command line and a section looking at the MESS.ini file.

## Where to start...

The beauty of MESS for Win32 is the fact although it looks like a DOS file it is actually a windows based program. Therefore you don't have to mess around configuring drivers as it uses DirectX and your windows drivers.

All you need to do to run it is to open a command prompt. Either go to the start button, press run and type command or you can run the command prompt from the start/programs/accessories menu.

Once you are in a DOS box type in this command

cd C:\MESS

You should see the prompt

C:\MESS>

If it is the first time you have run MESS type MESS -cc. This will create a file called MESS.ini which holds all the default MESS settings.

## Command Line Options

MESS for Win32 uses a straightforward command format to execute. Heres what it looks like...

MESS <system> <options...>

The <system> option is the name of the system (for a complete list, check here). The <options...> include both device options as well as options found in Mame. Each system has its own list of device types; some of these are common to multiple systems, whereas some others are specific to certain systems. Cartridges on the NES and Atari 2600 are both specified with the -cart option. The Apple II floppy disk is specified with -s6d1 (Slot 6 Disk 1). One can obtain a complete list of what devices are used for any given system by typing: MESS -listdevices

These are all the command line options that MESS uses...

*** Frontend Related ***
-help / -h ./ -? | Show the help message
-listfull / -ll | Lists all games as short name, full name
-listdetails | Lists all games with detailed info
-listxml / -lx | Lists all available info on a driver in XML format
-listclones / -lc | Lists only clones
-listcrc | Lists rom checksums
-listdevices | Lists the devices used by a system in MESS
-listroms | Displays ROMs required by the specified system
-listsamples | Displays samples required by the specified game
-verifyroms | Checks specified game(s) for missing and invalid ROMs.
-verifysets / -vset | Checks specified game(s) and reports its status.
-verifysamples | Checks that all samplesets have the correct samples in them.
-romident | Checks an unknown romset against MESS romsets to see what it belongs to
-isknown | Same as above but with less info
*** Windows path and folder options ***
-rompath / -rp | Specify path for ROM files
-hashpath / -hash | Specify path for software hash check files
-inipath | Specify path for game ini files
-samplepath / -sp | Specify path for system samples
-cfg_directory | Specify the folder to save configurations
-nvram_directory | Specify the folder to save nvram contents
-memcard_directory | Specify the folder to save memory card contents
-input_directory | Specify the folder to save input device logs
-hiscore_directory | Specify the folder to save hiscores
-state_directory | Specify the folder to save states
-artwork_directory | Specify the folder for Artwork (Overlays etc.)
-snapshot_directory | Specify the folder for screenshots (.png format)
-ctrlr_directory | Lets you specify a folder for MESS to look in for you controller ini files.
-cheat_file | Specify the cheat filename
*** Windows video options ***
-[no]autoframeskip / -[no]afs | If you game is running slow then use skip frames to speed up emulation
-frameskip / -fs | Lets you specify how many frames are skipped when playing a game. (autoframeskip needs to be off)
-[no]waitvsync | Waits for the screen to draw before drawing the next frame (reduces tearing of graphics)
-[no]triplebuffer / -[no]tb | Triple buffering (only if fullscreen) draws three screens at a time and flips them which creates smoother animation.
-[no]window / -[no]w | This option lets you run MESS in a window on your desktop or fullscreen.
-[no]ddraw / -[no]dd | Use DirectDraw for rendering (Leave on!)
-[no]direct3d / -[no]d3d | Use Direct3D for rendering (On some cards faster than direct draw)
-[no]hwstretch / -[no]hws | Stretches games to fill the screen using the hardware on your graphics card (if you have it)
-cleanstretch / -cs | Stretches the screem to integer ratios and ignores the game aspect ratio. Uses these options... -cleanstretch auto : Lets MESS decide. -cleanstretch full -cleanstretch none : Disables cleanstretch -cleanstretch horizontal : Horzontal clean stretch only -cleanstretch vertical : Vertical clean stretch only
-resolution / -r | Sets the resolution in fullscreen mode (e.g. 640x480)
-zoom / -z | Forces a specific zoom level
-refresh | Set a specific monitor refresh rate in hz
-[no]scanlines / -[no]sl | Emulates the lower resolution screenmode on monitors and TV's.
-[no]switchres | Switches the screen resolutions to best fit the game
-[no]switchbpp | Switch the color depth of a screen to match the game being played.
-[no]maximize / -[no]max | Starts a MESS window maximized
-[no]keepaspect / -[no]ka | Keep a game in the right aspect no matter what resolution is used.
-[no]matchrefresh | Attempt to match the game's refresh rate
-[no]syncrefresh | Synchronize only to the monitor refresh
-[no]throttle | Throttle MESS's speed to match the game's framerate
-full_screen_brightness / -fsb | Sets the brightness in full screen mode
-frames_to_run / -ftr | Sets the number of frames to run within the game
-effect | none - no effect (this is the default) sharp - Stretch screen without blurring scan25 - 25% scanlines scan50 - 50% scanlines scan75 - 75% scanlines rgb3 - a certain "monitor mask" rgb4 - another one rgb6 - another one rgb16 - another one. Choose the one you like best.
-screen_aspect X:Y | Where X and Y are the aspect you want. Helps configure the screen to fill your monitor. eg.g. most monitors are 4:3 though if you have a wide screen then you may have 16:9.
-[no]sleep | Lets MESS use less CPU time if it can
-[no]rdtsc | Changes the timing in a game
-[no]high_priority | Increase processor thread priority so improves performance if you have alot of programs running.
*** Windows Direct3D 2D video options ***
-[no]d3dtexmanage | Lets DirectX manage all game screen to texture operations rather than MESS.
-d3dfilter / -flt | Sets the filter (blurriness) when using D3D for rendering the game screen thus reducing jagged edges. 0 is none 1 bi-linear 2 flat bi-cubic 3 gaussian bicubic 4 anisotropic (If your card supports it)
-[no]d3dprescale | Works like sharp in the effects so doesn't blur the screen.
-d3dfeedback | Something about feedback intensity (Whatever that is)
-d3dsaturate | Over saturates the colour intensity in games.
-d3dscan | Sets the scanline intensity if you select this effect.
-[no]d3deffectrotate | Rotates the d3deffect command to work with vertically aligned monitors.
-d3deffect | Adds screen effects when the game screen is drawn. You can also use the names from the -effect option too. rgbminmask dotmedmask rgbmedmask rgbmicro rgbtiny aperturegrille dotmedbright rgbmaxbright
-d3dcustom | Dont touch unless you know what you're doing
-d3dexpert | Same as above.
*** Windows sound options ***
-audio_latency | Sets MESSs audio latency which help to reduce sound clicks and pops
*** Input device options ***
-[no]mouse | Enable mouse input
-[no]joystick / -[no]joy | Enable joystick input
-[no]lightgun / -[no]gun | Enable lightgun input
-[no]steadkey / -[no]steady | If you are having problems with pressing more than one key at a time then enable this option.
-[no]keyboard_leds / -[no]leds | uses the keyboard LED's (e.g. numlock light) to simulate the LED's on an arcade board
-a2d_deadzone / -a2d <float> | How much you have to move an analog joystick before it registers on digitally controlled games.
-ctrlr name Loads the controller ini file specified by name (e.g. -ctrlr wingman)
*** MESS specific options ***
-[no]newui / -[no]nu | Uses the new MESS windows user interface for options instead of Mames screen based one
-ramsize / -ram | Lets you set the amount of RAM a system can use (if the system supports it)
-threads / -thr | Used for parallel data
-[no]natural / -[no]nat | Determines whether a natural keyboard is being used
-min_width / -mw <int> | Sets a minimum width for the MESS screen
-min_height / -mh <int> | Sets a minimum height for the MESS screen
-[no]writeconfig / -[no]wc | Determines whether MESS writes a configuration file for a system when you close it
-createdir | Creates all the system folders in the MESS software folder
*** MESS CORE video options ***
-[no]norotate | Do not apply rotation
-[no]ror | Rotate screen clockwise
-[no]rol | Rotate screen anti-clockwise
-[no]autoror | Automatically rotates the screen clockwise for vertical games.
-[no]autorol | Automatically rotates the screen anti-clockwise for vertical games.
-[no]flipx | Flip screen upside-down
-[no]flipy | Flip screen left-right
-gamma | Gamma correction is used if you find your game is too dark.
-brightness | Brightness is also used if you find your game is too dark.
-pause_brightness | Changes the brightness of the game when paused.
*** MESS CORE vector game options ***
-[no]antialias / -[no]aa | Draw antialiased vectors which smoothes out the edges.
-[no]translucency / -[no]tl | Draw translucent vectors which simulates the feel of vector games
-beam | Set beam width in vector games
-flicker | Set flickering in vector games which again adds to the realism of vector games.
-intensity | Sets the brightness of the vectors.
*** MESS CORE sound options ***
-samplerate / -sr | Set samplerate (e.g. 22050) in khz
-[no]samples | Uses samples to complete the sound systems for games which require them.
-[no]sound | Enable/Disable sound and sound CPUs
-volume / -vol | Volume (range [-32,0])
*** MESS CORE misc options ***
-[no]artwork / -[no]art | Use additional game artwork
-[no]use_backdrops / -[no]backdrop | For art files that are the backdrop for games.
-[no]use_overlays / -[no]overlay | For art files that are overlayed on top of games.
-[no]use_bezels / -[no]bezel | For art files that are go around games.
-[no]artwork_crop / -[no]artcrop | Crop artwork to game screen size only.
-artwork_resolution / -artres | Sets the resolution for the artwork in a game (0 for auto)
-[no]cheat / -[no]c | Enable/disable cheat subsystem
-[no]debug / -[no]d | Enable/disable debugger (only if available)
-playback / -pb | Playback an input file
-record / -rec | Record an input file
-[no]log | Generate an error.log for debugging
-[no]oslog | Outputs an error log to MESSs debugger
-[no]skip_gameinfo | Skips the game info screen
-bios | Select the system BIOS to use.
*** Configuration options ***
-createconfig / -cc | Create the default configuration file
-showconfig / -sc | Display running parameters in rc style
-showusage / -su | Show key help
-[no]readconfig / -[no]rc | Enable/disable loading of configfiles
-[no]verbose / -[no]v | Display additional diagnostic information

Heres an example of running MESS at the command line...

mess a2600 -cart c:\games\defender.a26 -now

This will run defender on an Atari 2600 using the full screen. As you can see it's not too hard once you've got over the amount of options available to you. If your brain is frazzled and you want an easier MESS use the GUI version as it's much easier to configure.

##
MESS.ini File

Rather than using the command line to set up the options you want to use in MESS you can adjust a file called MESS.ini . This is where MESS stores it's default configuration information.

To edit the file in windows find the MESS.ini file in the C:\MESS folder (it will have an icon next to it that looks like a text pad with a yellow stamp on it) and then double click it. This will automatically bring up the MESS.ini file in notepad. There are several parts to it and as you can see they relate to the command line options above.

The format of the file is simple to follow, most things with a yes / no answer are denoted by 0 for no and 1 for yes. there are also a few numerical options (e.g. gamma) and a few that require a text answer (e.g. rom path)

If you configure this file correctly you wont need to add options onto the command line.

Don't worry if you muck the whole file up because if you can delete it and, if you run MESS -cc again it will make another.

    #
    # CORE SEARCH PATH OPTIONS
    #
    rompath                   roms
    hashpath                  hash
    softwarepath              software
    samplepath                samples
    artpath                   artwork
    ctrlrpath                 ctrlr
    inipath                   .;ini
    fontpath                  .

    #
    # CORE OUTPUT DIRECTORY OPTIONS
    #
    cfg_directory             cfg
    nvram_directory           nvram
    memcard_directory         memcard
    input_directory           inp
    state_directory           sta
    snapshot_directory        snap
    diff_directory            diff
    comment_directory         comments

    #
    # CORE FILENAME OPTIONS
    #
    cheat_file                cheat.dat

    #
    # CONFIGURATION OPTIONS
    #
    readconfig                1
    skip_gameinfo             0

    #
    # MISC OPTIONS
    #
    bios                      default
    cheat                     0

    #
    # STATE/PLAYBACK OPTIONS
    #
    # state                   <NULL> (not set)
    autosave                  0
    # playback                <NULL> (not set)
    # record                  <NULL> (not set)
    # mngwrite                <NULL> (not set)
    # wavwrite                <NULL> (not set)

    #
    # DEBUGGING OPTIONS
    #
    log                       0
    oslog                     0
    verbose                   0

    #
    # PERFORMANCE OPTIONS
    #
    autoframeskip             0
    frameskip                 0
    frames_to_run             0
    throttle                  1
    sleep                     1
    rdtsc                     0
    priority                  0
    multithreading            0

    #
    # VIDEO OPTIONS
    #
    video                     d3d
    numscreens                1
    window                    0
    maximize                  1
    keepaspect                1
    prescale                  1
    effect                    none
    pause_brightness          0.65
    waitvsync                 0
    syncrefresh               0

    #
    # VIDEO ROTATION OPTIONS
    #
    rotate                    1
    ror                       0
    rol                       0
    autoror                   0
    autorol                   0
    flipx                     0
    flipy                     0

    #
    # DIRECTDRAW-SPECIFIC OPTIONS
    #
    hwstretch                 1

    #
    # DIRECT3D-SPECIFIC OPTIONS
    #
    d3dversion                9
    filter                    1

    #
    # PER-WINDOW VIDEO OPTIONS
    #
    screen                    auto
    aspect                    auto
    resolution                auto
    view                      auto
    screen0                   auto
    aspect0                   auto
    resolution0               auto
    view0                     auto
    screen1                   auto
    aspect1                   auto
    resolution1               auto
    view1                     auto
    screen2                   auto
    aspect2                   auto
    resolution2               auto
    view2                     auto
    screen3                   auto
    aspect3                   auto
    resolution3               auto
    view3                     auto

    #
    # FULL SCREEN OPTIONS
    #
    triplebuffer              0
    switchres                 0
    full_screen_brightness    1.0
    full_screen_contrast      1.0
    full_screen_gamma         1.0

    #
    # GAME SCREEN OPTIONS
    #
    brightness                1.0
    contrast                  1.0
    gamma                     1.0

    #
    # VECTOR RENDERING OPTIONS
    #
    antialias                 1
    beam                      1.0
    flicker                   0

    #
    # ARTWORK OPTIONS
    #
    artwork_crop              0
    use_backdrops             1
    use_overlays              1
    use_bezels                1

    #
    # SOUND OPTIONS
    #
    sound                     1
    samplerate                48000
    samples                   1
    volume                    0
    audio_latency             1

    #
    # INPUT DEVICE OPTIONS
    #
    # ctrlr                   <NULL> (not set)
    mouse                     0
    joystick                  0
    lightgun                  0
    dual_lightgun             0
    offscreen_reload          0
    steadykey                 0
    a2d_deadzone              0.3
    digital                   none

    #
    # AUTOMATIC DEVICE SELECTION OPTIONS
    #
    paddle_device             keyboard
    adstick_device            keyboard
    pedal_device              keyboard
    dial_device               keyboard
    trackball_device          keyboard
    lightgun_device           keyboard
    mouse_device              mouse

    #
    # MESS SPECIFIC OPTIONS
    #
    newui                     1
    # ramsize                 <NULL> (not set)
    threads                   0
    natural                   0
    min_width                 200
    min_height                200
    writeconfig               0
    skip_warnings             0