RETROARCH(6)

NAME
retroarch - The reference frontend for the libretro API.

SYNOPSIS
retroarch [rom file(s)] [OPTIONS]...

DESCRIPTION
retroarch is the reference frontend for the libretro API. libretro is an abstraction of a game system, and can be implemented by any frontend. The libretro API is designed for games, emulators and multimedia. retroarch focuses on exposing needed functionality for the game system through the use of command line and configuration files. It also features a simple built-in UI.

EXAMPLE COMMANDLINE

Load content, using a specific libretro core and config file.
    retroarch --config ~/.config/retroarch/retroarch.cfg --libretro /path/to/libretro/core.so /path/to/rom.rom --verbose

No command line options will start RetroArch in menu mode.
    retroarch

Start RetroArch in menu mode, with verbose logging.
    retroarch --menu --verbose

Menu
Refers to the built-in GUI system for RetroArch. It is aimed at being controlled with a gamepad only.

DEFAULT CONTROLS
By default, only keyboard input is accepted.

GENERAL OPTIONS

[rom file]
    If no rom file path is defined on the command line, retroarch will try to load a core with no rom. This will only work with some libretro cores. retroarch use uncompressed content, but can uncompress content in the .zip/deflate format if support for it is compiled in. Content types supported depend on the libretro implementation used.

--help, -h
    Prints help text.

--menu
    Starts directly in in-game menu if enabled. Does not require content or libretro implementation to be set. These can be loaded afterwards in the menu. If no arguments are passed to retroarch, it is equivalent to calling retroarch with this as only argument.

--features
    Prints available features compiled into RetroArch, then exits.

-L PATH, --libretro PATH
    Path to a libretro implementation which is to be used. This option will override any setting in a config file. This option is only available if RetroArch is compiled with dynamic libretro loading.

--save PATH, -s PATH
    Overrides the path used for save ram (*.srm) (deprecated). Without this flag, the save ram path will be inferred from the rom path name, and put in the same directory as the rom file with the extension replaced with '.srm'. If PATH is a directory, RetroArch will treat this as the save file directory, where the save file name will be inferred from the rom name.

--savestate PATH, -S PATH
    Overrides the path used for save states (deprecated). Without this flag, the save state path will be inferred from the rom path name, and put in the same directory as the rom file with the extension replace with '.state'. If PATH is a directory, RetroArch will treat this as the save state directory, where the state file name will be inferred from the rom name. Do note that save states are bound to the libretro implementation being used. Using a different libretro could invalidate the save state file.

--fullscreen, -f
    Always starts RetroArch in fullscreen. Disregards settings in configuration file.

--config PATH, -c PATH
    Sets the configuration file path. retroarch will use this path to load the configuration file. Should this not be defined, retroarch will look in platform specific paths to attempt finding the config file. /etc/retroarch.cfg (when installed), or retroarch.cfg in the source tarball serves as a skeleton configuration file. /etc/retroarch.cfg should serve as a skeleton config only.

    Unix-like systems will look in $XDG_CONFIG_HOME/retroarch/retroarch.cfg first. If $XDG_CONFIG_HOME is not defined, it is assumed to be $HOME/.config as per specification. Then it will try $HOME/.retroarch.cfg. If both paths fail, RetroArch will try to create a new, default config file in $XDG_CONFIG_HOME/retroarch/retroarch.cfg (or the $HOME/.config default for $XDG_CONFIG_HOME). If all fails, default settings will be assumed. If RetroArch creates a new default config file, it will attempt to load the skeleton config file /etc/retroarch.cfg and use that as a basis. This allows distributions to set up default paths for libretro cores, and similar things. A configuration file does not need to define every possible option, only those which should be overridden. If config_save_on_exit = true is set in the config file, RetroArch will overwrite the config file on exit. Settings can be changed from within the menu. If RetroArch overwrites a config file, formatting, comments, etc will be lost. If RetroArch creates a default config file, it will have config_save_on_exit set automatically.

    Windows will look in retroarch.cfg in same folder where retroarch.exe resides. A default config file will also be created in the same manner as Unix.

--appendconfig PATH
    Appends a different set of config files to the config file loaded in -c (or default). Multiple config files are delimited by ','. Every config file will be appended in order where the key-value pairs of the next config file takes priority over the old ones.

--subsystem SUBSYSTEM
    Use a subsystem of the loaded libretro core. Multiple content files are loaded as multiple arguments. If content is skipped, use a blank ("") command line argument. Content must be loaded in an order which depends on the particular subsystem used. See verbose log output to learn how a particular subsystem wants content to be loaded.

--nodevice PORT, -N PORT
    Disconnects an input device from port number PORT. Possible values for PORT are 1 to 8. This may be needed for some odd games to run properly. If set explicitly here, overrides config file for that port.

--dualanalog PORT, -A PORT
    Connects a DualAnalog controller into port PORT. Possible values are 1 to 8. If set explicitly here, overrides config file for that port.

--device PORT:ID, -d PORT:ID
    Connects a generic input device ID into port PORT. Possible values for port are 1 to 8. If set explicitly here, overrides config file for that port. ID is an unsigned number corresponding to the device for a libretro core.

--record PATH, -r PATH
    Activates video recording of gameplay into PATH. Using .mkv extension is recommended. Codecs used are (FFV1 or H264 RGB lossless (x264))/FLAC, suitable for processing the material further.

--recordconfig PATH
    Sets path to a config file for use during recording.

--size WIDTHxHEIGHT
    Allows specifying the exact output width and height of recording. This option will override any configuration settings. The video input is scaled with point filtering before being encoded at the correct size.

--bsvplay PATH, -P PATH
    Play back a movie recorded in the .bsv format (bsnes). Cart ROM and movie file need to correspond. It also requires to play back with the same libretro backend that was used for recording.

--bsvrecord PATH, -R PATH
    Start recording a .bsv video to PATH immediately after startup.

--sram-mode MODE, -M MODE
    MODE designates how to handle SRAM. The format of the second parameter is {no,}load-{no,}save. These two boolean values tell if SRAM loading and SRAM saving should take place. Note that noload-save implies that the SRAM will be overwritten with new data.

--verbose, -v
    Activates verbose logging.

--host, -H
    Be the host of netplay. Waits until a user connects. The host will always assume user 1.

--connect SERVER, -C SERVER
    Connect to a host of netplay. Will always assume user 2.

--frames FRAMES, -F FRAMES
    Sync frames to use when using netplay. More frames allow for more latency, but requires more CPU power. Set FRAMES to 0 to have perfect sync. 0 frames is only suitable for LAN. Defaults to 0.

--port PORT
    Network port used for netplay. This defaults to 55435. This option affects both TCP and UDP.

--spectate
    If netplay is used, it will go into a spectator mode. Spectator mode allows one host to live stream game playback to multiple clients. Essentially, clients receive a live streamed BSV movie file. Clients can connect and disconnect at any time. Clients thus cannot interact as user 2. For spectating mode to work, both host and clients will need to use this flag.

--command CMD
    Sends a command over UDP to an already running RetroArch application, and exit. The command is formatted as "COMMAND;HOST;PORT". HOST and PORT are both optional. "COMMAND;HOST" will set PORT to "network_cmd_port" default setting. If only "COMMAND" is used, HOST and PORT will be assumed to be "localhost" and "network_cmd_port" respectively. The available commands are listed if "COMMAND" is invalid.

--nick NICK
    Pick a nickname for use with netplay. This is purely cosmetic, and only serves to help users identify each other.

--ups PATCH, -U PATCH
    Attempts to apply an UPS patch to the current content image. No files are altered. If this flag is not specified, RetroArch will look for a .ups file with same basename as content specified.

--bps PATCH
    Attempts to apply a BPS patch to the current content image. No files are altered. If this flag is not specified, RetroArch will look for a .bps file with same basename as content specified.

--ips PATCH
    Attempts to apply a IPS patch to the current content image. No files are altered. If this flag is not specified, RetroArch will look for a .ips file with same basename as content specified. Note that RetroArch cannot perform any error checking if patching was successful due to how IPS works.

--no-patch
    Disables all kinds of content patching.

-D, --detach
    Detach from the current console. This is currently only relevant for Microsoft Windows.

SEE ALSO
retroarch-joyconfig(6)