RGUI RetroArch Menu Interface

RGUI is a simple built-in GUI for RetroArch. It was originally introduced in the Wii port of RetroArch in order to provide the console experience, where everything is controlled from a joypad. RGUI was later refitted for PC and mobile ports.

RGUI startup screen

Features

While RGUI cannot configure absolutely everything, it can do the most common things you would want to do while using RetroArch.

Config file

By default, RetroArch looks for a config in various places depending on OS:

To override this, use retroarch --config customconfig.cfg. If you have some special options you want to store in separate config files you can use retroarch --config baseconfig.cfg --appendconfig specialconfig.cfg. See man-page and/or --help for detail.

Warning

While you are changing settings in runtime, they are not saved to disk afterwards on PC by default. If you want RetroArch to automatically write back the config, either set config_save_on_exit = true in config, or enable this under Settings -> Config Save On Exit from within RGUI.

By design, the config file is considered immutable as it is likely maintained by the user, and should not be overwritten behind the users back. This is not the case on consoles however, where looking at the config manually isn't really an option for most users.

Entering the menu

Menu toggle button can be mapped to joypad as well, see option input_menu_toggle option in retroarch.cfg.

RGUI is controlled like any other libretro core. Regular input binds will apply, and binds here are defined in terms of the RetroPad, RetroArch's joypad abstraction.

Searching through lists with keyboard

When using a keyboard, it can be slow to navigate a large list using gamepad-like controls. To help this, you can type / (forward slash) at any time to bring up a search-box. Type a search string and hit return. The cursor should jump to the first entry that matches. The search will match mid-path strings. However, if a match is found at the beginning of the path, like when searching for first letter, the start-of-path match will take priority.

The forward slash is recognized on character basis, not on the key itself. This allows e.g. norwegian layouts to type forward slash using shift + 7. Characters which are outside the ASCII set are recognized but ignored as RGUI cannot render such characters anyways.

Thumbnails

RGUI thumbnail support requires the use of playlist files and thumbnail image packs, as described in ROMs, Playlists, and Thumbnails.

To view existing playlists choose Load Content from the top menu, then Collections. Select a playlist, and while browsing its contents use the RetroPad Y button to toggle the display of the thumbnail associated with the currently highlighted entry:

Thumbnails off:

Thumbnails on:

Note that it is possible to navigate up and down through a playlist while thumbnails are being shown.

To choose which type of thumbnail will be displayed, from the top menu select Settings > User Interface > Appearance and set the Thumbnails option to one of:

Any thumbnail image larger than 320x240 will be downscaled automatically to fit the screen. Three downscaling methods are provided, allowing a choice between performance and quality. To switch between them, from the top menu select Settings > User Interface > Appearance and set the Thumbnail Downscaling Method option to one of:

Starting a game

After loading a libretro core, you will see the name and version of the core in lower part of screen. You can then browse for a ROM with Load Game. To control where RGUI starts to browse for roms, set rgui_browser_directory in config. If not set, it'll start in root.

The browser will filter out extensions for the last core set in Core, and use that core when a ROM is loaded. If libretro_path in config is set with a full path to a core, this core is automatically selected once RGUI boots up (but you can still change the core afterwards).

Applying shaders

See the shaders user guide.

Configuring input

Currently you can configure two settings per player (on PC):

Configuring joypad input

Configuring joypad input is supported from within RGUI.
Normal gameplay binds as well as RGUI hotkey binding is supported. It is possible to bind everything in succession for convenience.

Configuring keyboard input

Configuring keyboard input is currently not supported. To configure keyboard binds, it must be done outside RGUI.

PlayStation disk swapping

Some PlayStation games require disk swapping. To manage disks, libretro has a concept of a disk index (like a multi-disk CD player, remember those? :P). If a PlayStation core is loaded, Disk Index and Disk Image Append options are added to main menu.

In Mednafen PSX, multi-CD images are typically handled with an .m3u playlist. In this case, you can swap disks by cycling through the Disk Index setting. If you don't or can't use a playlist, you can append a disk image on the fly using Disk Image Append. In this case, you browse for a disk image and append it to the internal disk image list. The Disk Index is updated appropriately and you are returned to the game.

Workarounds

Replacing the disk inside RGUI is "physically" speaking the same as ejecting, swapping disks and closing the tray instantanously. Some games will not work with this approach, notably Metal Gear Solid because they need to detect an actual eject taking place.

To work around this, set Disk Index to No Disk, and exit RGUI. The game will pick up that the tray has been ejected/missing disk after half a second or so. Now you can go back to RGUI, pick the correct disk index and return to the game.

Themes

The visual appearance of RGUI may altered by choosing one of 32 inbuilt color themes. From the top menu select Settings > User Interface > Appearance and cycle through the various Menu Color Theme options:

Setting Menu Color Theme to Custom allows for an even greater degree of personalisation via the use of custom menu theme presets. A number of examples are provided in the RetroArch assets package, which may be downloaded by selecting from the top menu Online Updater > Update Assets. To choose one of these examples, go to Settings > User Interface > Appearance and select the Custom Menu Theme Preset option. In the file browser that opens, navigate to the rgui directory and select a .cfg file.

Creating Custom Menu Theme Presets

A custom menu theme preset is a plain text configuration file (e.g. my_theme.cfg) with the following contents:

1
2
3
4
5
6
7
8
rgui_entry_normal_color = "0xAARRGGBB"
rgui_entry_hover_color = "0xAARRGGBB"
rgui_title_color = "0xAARRGGBB"
rgui_bg_dark_color = "0xAARRGGBB"
rgui_bg_light_color = "0xAARRGGBB"
rgui_border_dark_color = "0xAARRGGBB"
rgui_border_light_color = "0xAARRGGBB"
rgui_wallpaper = "wallpaper_file.png"

Color Selection

All color values are given in 0xAARRGGBB 8-digit hex code format - i.e. the first two digits correspond to the alpha (transparency) value, while the remaining 6 are a normal hex triplet. For example: fully opaque red would correspond to 0xFFFF0000; 50% transparent green would correspond (approximately) to 0x7F00FF00.

For maximum legibility, the alpha value for all text colors should be set to FF (fully opaque). For the background and border, setting partial transparency allows the currently loaded content to be seen 'through' the menu when opening it while running a game. Note, however, that setting partial transparency causes colors to appear darker than expected, so careful tuning of the hex triplet values is required. Appropriate transparency values are as follows:

Creating Wallpaper Images

RGUI wallpapers must have the following properties:

Wallpapers should be generated in PNG format.

To produce a suitable image, the user should first create a regular 320x240 PNG file via any means at their disposal. Inkscape users may find the following simple template beneficial: rgui_wallpaper_template.svg

Once the image is complete, it is necessary to reduce its color depth. This may be done via one of two methods:

1) pngquant (recommended):

pngquant is a command-line utility for lossy compression of PNG files. It supports very high quality conversion of images to indexed color, in a manner appropriate for most kinds of wallpaper.

Download/compile/install the latest version, then use the following command to process a wallpaper source file:

1
> pngquant --posterize=4 --force -o "WALLPAPER_NAME_indexed.png" "WALLPAPER_SOURCE.png"

Open the output WALLPAPER_NAME_indexed.png file and check that colors/gradients appear correct. In most cases, the result will be agreeable. If odd 'speckles' are apparent, it may be necessary to adjust the colors in the source image (this is a black art, and beyond the scope of this document). If the image has unacceptable, uncorrectable dithering then the WALLPAPER_NAME_indexed.png file should be discarded, and the following alternate method used instead:

2) GIMP:

GIMP is a well known image editor. In general it produces lower quality color reduction than pngquant, but it can handle certain gradients and patterns that cause pngquant to stumble. Download/install the latest version, then:

Whether pngquant or GIMP is used to create WALLPAPER_NAME_indexed.png, a final stage of optimisation should be applied to generate a 'clean' output wallpaper. This can be done using OptiPNG. Download/compile/install the latest version, then run the following command:

1
> optipng -o7 -strip=all -force -clobber -out `WALLPAPER_NAME.png` `WALLPAPER_NAME_indexed.png`

Edit the custom menu theme preset configuration file such that rgui_wallpaper points to the resultant WALLPAPER_NAME.png image. Once appropriate text/background/border colors have been set, the theme is complete.