RETROARCH(1)

NAME
retroarch - The reference frontend for the libretro API.

SYNOPSIS
retroarch [rom file] [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 and emulators. 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 called RGUI.

EXAMPLE COMMANDLINE

Load a ROM, 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 RGUI mode.
    retroarch

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

RGUI
RGUI is 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 ROMs, but can uncompress roms in the .zip/deflate format if support for it is compiled in. ROM types supported depend on the libretro implementation used.

--help, -h
    Prints help text.

--menu
    Starts directly in in-game menu (RGUI) if enabled. Does not require a ROM 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. If PATH is a directory, RetroArch will try to find the first implementation that claims to support the extension of the ROM used, and use that libretro implementation. If two or more different implementations claim to support a certain ROM extension, there might be collisions.

--save PATH, -s PATH
    Overrides the path used for save ram (*.srm). 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 extention 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. 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 extention 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 RGUI. 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.

--gameboy PATH, -g PATH
    Path to a Nintendo Game Boy ROM. If this flag is set, the Super Game Boy subsystem will be activated. The Super Game Boy BIOS needs to be loaded as the normal rom.

--bsx PATH, -b PATH
    Path to BS-X rom. Load BS-X BIOS as the regular rom. When using BS-X, save ram paths will be inferred from the BS-X BIOS path, not BS-X rom path.

--bsxslot PATH, -B PATH
    Path to BS-X slotted rom. Load BS-X BIOS as the regular rom. When using BS-X, save ram paths will be inferred from the BS-X BIOS path, not BS-X rom path.

--sufamiA PATH
    Path to A slot in Sufami Turbo. Load Sufami Turbo BIOS as regular rom. When using Sufami, save ram paths will be inferred from the Sufami BIOS path, not slot paths.

--sufamiB PATH
    Path to B slot in Sufami Turbo. Load Sufami Turbo BIOS as regular rom. When using Sufami, save ram paths will be inferred from the Sufami BIOS path, not slot paths.

--mouse PORT, -m PORT
    Connects a mouse into port number PORT. Possible values for PORT are 1 to 8. If set explicitly here, overrides config file for that port.

--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.

--scope, -p
    Connects a Super Scope into port 2 of an emulated SNES. It is controlled with your mouse. If set explicitly here, overrides config file for that port.

--justifier, -j
    Connects a Konami Justifier into port 2 of an emulated SNES. It is controlled with your mouse. If set explicitly here, overrides config file for that port.

--justifiers, -J
    Connects two Konami Justifier into port 2 of an emulated SNES. Currently, only player 1 is controlled with the mouse. If set explicitly here, overrides config file for that port.

--multitap, -4
    Connects a four-way multitap into an emulated SNES. This allows for up to 5 players. 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.

--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 FFmpeg recording.

--size WIDTHxHEIGHT
    Allows specifying the exact output width and height of FFmpeg 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 player connects. The host will always assume player 1.

--connect SERVER, -C SERVER
    Connect to a host of netplay. Will always assume player 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 player 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 players identify each other.

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

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

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

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

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

SEE ALSO
retroarch-joyconfig(1)