Retro Game Laucnher (RGL)
Retro Game Laucnher (RGL) is a front-end for managing & launching games from arcade emulators (such as MAME) and game ports (such as DOOM). RGL works on MS-Windows, Linux and Raspberry Pi. For MS-Windows and Linux you are own your own when it comes to installing and configuring game emulators. For Raspberry Pi I recommend RetroPie. For more information see RGL at yipton.net.History
1.1- Updates to support NES emulator
- Added python scripts (console & GUI) to create gameinfo.dat and history.dat for a given emulator by scraping thegamesdb.net (see scripts/infocreator)
- Fix broken raspberry pi build due to missing CMake scripts for sdl-gpu
- Fixed memory leak and improved stability when scrolling through game menus
1.0
Initial version
Installation Windows (binaries)
Three simple steps:1. Unpack the windows binaries zip file, maintaining the directory structure
2. Install the runtime rgl\install_once\vcredist_x86.exe
3. Start rgl.exe
Installation Windows (source)
RGL can be built using the free Visual Studio 2015 version. For other (older) versions you are on your own. Support is only included for 32-bit builds. Create a directory for RGL's source code. This directory is referred to as <rgl-root-dir>.Install source code
Unzip the <linux rgl tgz file> into directory <rgl-root-dir>. In case you don't know how to unzip a .tgz file, use WinRAR.Install additional packages
Install Videolan and set environment variable VLC_PLUGIN_PATH to VLC's plugins directory.On my machine that is:
VLC_PLUGIN_PATH=C:\Program Files (x86)\VideoLAN\VLC\plugins
Install cmake.Building
From the command line:
cd <rgl-root-dir>
cmake . -Bbuild
start build\rgl.sln
Running from the command line
cd <rgl-root-dir>
exe/release/rgl.exe win32_config.rc
Running/debugging from Visual Studio
Make RGL the startup project:
- In the solution explorer, right click RGL
- select "Set as Startup Project"
Set the working directory for RGL
- right click RGL
- select Properties
- In the "Configuration:" dropdown select "All Configurations"
- In the Configuration Properties tree select "Configuration->Debugging"
- Set property "Working Directory" to "$(SolutionDir).." (note: there is no slash in the directory name)
Installation Linux
Create a directory for RGL's source code. This directory is referred to as <rgl-root-dir>.Install source code
cd <rgl-root-dir>
tar -xvzf <linux rgl tgz file>
Install additional packages
sudo apt-get install apt-get install libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-gfx-dev libsdl2-mixer-dev
sudo apt-get install sudo apt-get install vlc libvlc-dev
sudo apt-get install cmake
Building
cd <rgl-root-dir>
cmake . -Bbuild
cd build; make
Running
cd <rgl-root-dir>
exe/rgl linux_config.rc
Installation Raspberry Pi
Running on Raspbrry pi is best done using RetroPie, which comes with a lot of pre-compiled emulators. Building from source is the same as for standard Linux.Running
Run RGL with the pi_system.rc file
cd <rgl-root-dir>
exe/rgl pi_system.rc
System configuration
RGL uses 4 configuration files:1. system.rc: system settings, including emulator configuration settings. You need to manually configure these settings and they are described in the table below.
2. theme.rc: the theme settings (fonts, wallpaper image files, etc). You need to manually configure these settings. Details are in the section on how to create your own themes.
3. joystick.rc: joystick configuration settings. You can configure the joystick from within RGL in the system menu so there is no need to manually modify this file.
3. config.rc: user configurable settings. You can configure them from within RGL in the system menu so there is no need to manually modify this file.
system.rc configuration
RGL comes with three system.rc files because I run RGL on Windows, Linux and the Raspberry pi. If you don't pass a system.rc parameter to RGL on a Linux system (including raspberry pi), it will search for linux_system.rc by default. On Windows RGL will use win32_system.rc by default.Parameter | Default value | Description |
System directories | ||
Font.Dirs | ., fonts | List of font directories, relative to current directory |
Theme.Dir | theme | Location of theme directory, relative to current directory |
Image.Dirs | ., images | List of image directories, relative to current directory. This is used by RGL themes; they don not refer to game artwork |
User.Dir | user | Location of user directory. RGL stores all read/write files in here; including config.rc, recent.rc, favs.rc and all media cache files |
Data.Dir | data | Location of the emualtor data directory; see next section on Emulator configuration |
Audio.Dirs | ., sounds | Location of directory where audio files are stored for RGL events. Store files with the same name as the event.
Supported audio formats are wav and mp3. Supported events:
- intro: startup sound - ok: sound when ok is pressed in dialogs - cancel: sound when cancel or escape is pressed in dialogs - scrollh: horizonal scrolling event - scrollv: vertical scrolling event - scrollend: event when end of a scrolling a list is reached |
System renderer | ||
Renderer | SDL | Either SDL or SDLGPU. For raspberry pi, use SDL; Windows and Linux will benefit from using SDLGPU |
Emulators | Add an entry for each emulator you wish to support. Replace EMU with a name for the emulator, such as MAME, GBA etc. | |
EMU.ExeName | Location of the emulator's executable | |
EMU.IncludeAllRoms | no |
There are 2 ways to configure the game list for a given emulator:
1. Using a gameinfo.dat file. This file explicitely lists all games, and, for each game all metadata such as the game's category, manufacturer, year of release, etc. 2. By letting RGL create a game entry for each ROM file located in the the emulator's ROM directory You can use the EMU.IncludeAllRoms setting to choose which method you use. For MAME I use method 1, because I've created a gameinfo.dat containing just the games supported by the MAME raspberry pi emualtor (advmame). For GBA I have created a gameinfo.dat by scraping info from thegamesdb.net. Since that it most likely not complete with regards to the GBA roms I have, I use the 2nd configuration method for GBA. |
EMU.CommandLine | Commandline string. The following parameter may be used, which will be substituted at run-time: %game%=game name; %romfile%=fullpath of romfile | |
EMU.RomFileExtension | zip | String of the file extention for ROMS. For example, DOOM uses wad. |
Emualtor ROM directory | ||
EMU.RomDirectory.Path | Location of the directory containing rom files | |
EMU.RomDirectory.IgnoreLeading |
Some media collections I've downloaded (particularly GBA) look like this: 2427 - Megaman Battle Network 6 Cybeast Gregar (U).zip In order to get the real name of the game, the prefix "2427 -" should be removed and also the "(U") postfix. That's what the leading and trailing char are for. In this case leading is '-' and trailing is '(' | |
EMU.RomDirectory.IgnoreTrailing | See previous description | |
Emualtor media directories | You can define up to 10 media directories (MediaDirectory1 till MediaDirectory9) containing per-game artwork such as snapshot files, video files, marquees etc. For each MediaDirectory you define a logical name (such as dir_snaps), which is referred to from the theme.rc file. | |
EMU.MediaDirectory | MediaDirectory is the location of a directory and can be used as an alternative for configuring MediaDirectory1, MediaDirectory2 and MediaDirectory3.
In order to associate a game with its media files, internally, RGL will strip all non-alphanumeric characters from file names. What remains must match either a name in the according emulator's gameinfo.dat file or a ROM file name. These directories are set to the following values: EMU.MediaDirectory1.Path: EMU.MediaDirectory/snaps EMU.MediaDirectory1.Name: dir_snaps EMU.MediaDirectory2.Path: EMU.MediaDirectory/videosnaps EMU.MediaDirectory2.Name: dir_videosnaps EMU.MediaDirectory3.Path: EMU.MediaDirectory/marquees EMU.MediaDirectory3.Name: dir_marquees | |
EMU.MediaDirectoryX.Path | Location of the directory containing media files | |
EMU.MediaDirectoryX.Name | Logical name for this media directory | |
EMU.MediaDirectoryX.IgnoreLeading | Same behaviour as for EMU.RomDirectory.IgnoreLeading | |
EMU.MediaDirectoryX.IgnoreTrailing | Same behaviour as for EMU.RomDirectory.IgnoreTrailing |
RGL per-emulator configuration
For each emualtor, you can provide the following 3 configuration files:1. gameinfo.dat: Describes per-game meta data
2. catmap.ini: Maps game categories
3. history.dat: Describes per-game historical data
The location of thes files is determined by 2 configuration items in system.rc. If for example you have configured the Game Boy Advance emulator in system.rc by using say GBA, then its emulator configuration files are stored in a sub-directory gba (lower-cased) of the Data.Dir directory as defined in system.rc.
Gameinfo.dat
This is a text file that provides per-game metadata. Each line in the file describes 1 game, according to this format:name=description | clone | year | manufacturer | number of players | ignore | number of buttons | ignore | sim or alt | categories
An example is:
1941=1941 - Counter Attack (World)||1990|Capcom|2|joy8way|2|2|2P sim|Shooter / Flying Vertical
Name | Default value | Description |
name | Short name of the game. This must match the name of the rom file and artwork files. If you had set the emulator's EMU.IncludeAllRoms to yes, then RGL generates a name game from the rom file by stripping all non-alphanumeric characters from its name. The game's description will be the original ROM file name. | |
description | Full game name as is shown on screen by RGL | |
clone | If this game is a clone, name of the original game | |
year | Year the game was released | |
manufacturer | Name of the manufacturer | |
number of players | 1 | Number of players |
number of buttons | 0 | Number of buttons |
sim-alt | 1P | Number of players (like 2P), followed by sim for simultaneous game play; alt for alternative game play |
categories | None | List of categories seperated by slash. Currently, RGL only uses the first category name. All other categories are ignored |
Catmap.ini
This is a text file that allows you to remap category names. Each line has the following format:category = new category
Category is the name of the category you wish to remap. New category is the new category name.
An example is:
Misc.=Miscelaneous
History.dat
This is per-game history information according to Arcade history.For MAME you can download one from Arcade history. For GBA I've written some scripts to scrape information from TheGamesDB.net
Create your own theme
Themes are stored in directory Theme.Dir as defined in system.rc. Every sub-directory is a theme and its name is the sub-directory name. When switching themes in RGL, the theme name is stored in config.rc.In each theme sub-directory, file theme.rc describes the theme according to the definitions below.
Name | Type | Default value | Description |
Screen properties | |||
Screen.Width | Integer | 800 | Screen width |
Screen.Height | Integer | 600 | Screen height |
Screen.FullScreen | Boolean | false | Running in full screen mode |
Debug properties | |||
Debug.ShowOutline | Boolean | false | When true shows a rectangle around UI objects |
Debug.OutlineColor | Integer | 0xFF0000 (red) | Color in which debug outlines are drawn |
Background image properties | |||
BackgroundImage | String | Filename of background image | |
Default text properties | |||
DefaultFont.Name | String | Arimo-Regular.ttf | Filename of font file |
DefaultFont.Size | Integer | 24 | Font size |
DefaultFont.Outline | Integer | 0 | Font outline size |
DefaultFont.Color | Integer | 0xffffff (white) | Font text color |
DefaultBackgroundColor | Integer | 0x969696 (light gray) | Default background color of highlighted text |
HighlightBackgroundColor | Integer | 0xc0c0c0 (dark gray) | Default background color of highlighted text |
HighlightTextColor | Integer | 0 (black) | Default text color of highlighted text |
Default window properties | |||
DefaultWindow.Title.Font.Name | String | DefaultFont.Name | Window title default font filename |
DefaultWindow.Title.Font.Size | Integer | Automatically calculated | Window title default font size |
DefaultWindow.Title.Font.Outline | Integer | 0 | Window title default font outline size |
DefaultWindow.Title.Font.Color | Integer | 0xffffff (white) | Window title default font text color |
DefaultWindow.Title.Bold | Boolean | false | Window title default font bold property |
DefaultWindow.Title.Italic | Boolean | false | Window title default font italic property |
DefaultWindow.Title.Underline | Boolean | false | Window title default font underlined property |
DefaultWindow.Title.EclipseText | Boolean | false | Window title if text is truncated with ... when too large |
DefaultWindow.Title.HorizontalAlignment | left|right|center | center | Window title default horizontal alignment |
DefaultWindow.Title.VerticalAlignment | top|bottom|center | center | Window title default vertical alignment |
DefaultWindow.TitleHeight | Integer | Automatically calculated | Window title default height |
DefaultWindow.RoundedRect.RadiusX | Integer | 25 | Window default horizontal rounded courner size |
DefaultWindow.RoundedRect.RadiusY | Integer | 25 | Window default vertical rounded courner size |
DefaultWindow.RoundedRect.FrameColor | Integer | 0 | Window default frame color |
DefaultWindow.RoundedRect.FillColor | Integer | DefaultBackgroundColor | Window default fill color |
DefaultWindow.RoundedRect.FrameWidth | Integer | 3 | Window default frame size |
Default information window properties | |||
InfoPrint.Font.Name | String | DefaultFont.Name | Information window font filename |
InfoPrint.Font.Size | Integer | DefaultFont.Size | Information window font size |
InfoPrint.Font.Outline | Integer | 0 | Information window font outline size |
InfoPrint.Font.Color | Integer | 0xffffff (white) | Information window font text color |
InfoPrint.Bold | Boolean | false | Information window font bold property |
InfoPrint.Italic | Boolean | false | Information window font italic property |
InfoPrint.Underline | Boolean | false | Information window font underlined property |
InfoPrint.EclipseText | Boolean | false | Information window if text is truncated with ... when too large |
InfoPrint.HorizontalAlignment | left|right|center | center | Information window horizontal alignment |
InfoPrint.VerticalAlignment | top|bottom|center | center | Information window vertical alignment |
InfoPrint.Timeout | Integer | 3 | Information window time display time (in seconds) before automatically dismissing itself |
InfoPrint.RoundedRect.RadiusX | Integer | 0 | Information window horizontal rounded courner size |
InfoPrint.RoundedRect.RadiusY | Integer | 0 | Information window vertical rounded courner size |
InfoPrint.RoundedRect.FrameColor | Integer | 0 | Information window frame color |
InfoPrint.RoundedRect.FillColor | Integer | DefaultBackgroundColor | Information window fill color |
InfoPrint.RoundedRect.FrameWidth | Integer | 0 | Information window frame size |
Default popup window properties | |||
DefaultPopup.Text.Font.Name | String | DefaultFont.Name | Popup window default font filename |
DefaultPopup.Text.Font.Size | Integer | Automatically calculated | Popup window default font size |
DefaultPopup.Text.Font.Outline | Integer | 0 | Popup window default font outline size |
DefaultPopup.Text.Font.Color | Integer | 0xffffff (white) | Popup window default font text color |
DefaultPopup.Text.Bold | Boolean | false | Popup window default font bold property |
DefaultPopup.Text.Italic | Boolean | false | Popup window default font italic property |
DefaultPopup.Text.Underline | Boolean | false | Popup window default font underlined property |
DefaultPopup.Text.EclipseText | Boolean | false | Popup window if text is truncated with ... when too large |
DefaultPopup.Text.HorizontalAlignment | left|right|center | center | Popup window default horizontal alignment |
DefaultPopup.Text.VerticalAlignment | top|bottom|center | center | Popup window default vertical alignment |
DefaultPopup.RoundedRect.RadiusX | Integer | 5 | Popup window default horizontal rounded courner size |
DefaultPopup.RoundedRect.RadiusY | Integer | 5 | Popup window default vertical rounded courner size |
DefaultPopup.RoundedRect.FrameColor | Integer | 0 | Popup window default frame color |
DefaultPopup.RoundedRect.FillColor | Integer | DefaultBackgroundColor | Popup window default fill color |
DefaultPopup.RoundedRect.FrameWidth | Integer | 3 | Popup window default frame size |
Default dialog properties | |||
DefaultDialog.Margin.Left | Integer | 0 | Dialog default left margin |
DefaultDialog.Margin.Top | Integer | 0 | Dialog default top margin |
DefaultDialog.Margin.Right | Integer | 0 | Dialog default right margin |
DefaultDialog.Margin.Bottom | Integer | 0 | Dialog default bottom margin |
DefaultDialog.Width | Integer | Automatically calculated | Dialog default width |
DefaultDialog.Height | Integer | Automatically calculated | Dialog default height |
DefaultDialog.BackgroundMask | Integer | 0x808080a0 | Dialog default color mask when fading background behind dialog |
Default control properties | |||
Controls.FrameColor | Integer | DefaultWindow.RoundedRect.FrameColor | Control default frame color |
Controls.FrameSize | Integer | 3 | Control default frame size |
Controls.FillColorOn | Integer | DefaultWindow.RoundedRect.FrameColor | Control default fill color when enabled or on |
Controls.FillColorOff | Integer | DefaultWindow.RoundedRect.FillColor | Control default fill color when disabled or off |
Controls.ScrollbarThumb | Integer | DefaultWindow.RoundedRect.FrameColor | Scrollbar thumb default fill color |
Category text properties | Game's category text control - updated when highlighting a different game | ||
CategoryText.Rect | x, y, width, height | 0, 0, 0, 0 | Default area |
CategoryText.Text | SimpleText | <p align=center><font size=large>%cat% (%numitems%) | SimpleText for when a game list is active |
CategoryText.VerticalAlign | top|center|bottom | top | vertical alginment |
CategoryText.SingleLine | Boolean | true | If true, limits text to one line |
CategoryText.EclipseText | Boolean | false | If true, adds ... when text too long, otherwise truncates |
CategoryText.SystemMenuText | SimpleText | <p align=center><font size=large> | Simpletext for when the system menu is active |
2D menu properties | |||
2DMenu.Rect | x, y, width, height | 0, 0, 0, 0 | 2D Menu area |
2DMenu.HorizontalAnimation | Boolean | true | If true, horizontal scrolling animation is enabled |
2DMenu.VerticalAnimation | Boolean | true | If true, vertical scrolling animation is enabled |
2DMenu.HorizontalAnimationDelay | Integer (ms) | 10 | Delay inbetween each horizontal scrolling animation step |
2DMenu.VerticalAnimationDelay | Integer (ms) | 10 | Delay inbetween each vertical scrolling animation step |
2DMenu.TextMenu.Font.Name | String | DefaultFont.Name | Text item font name |
2DMenu.TextMenu.Font.Size | Integer | DefaultFont.Size | Text item font size |
2DMenu.TextMenu.Font.Outline | Integer | DefaultFont.Outline | Text item font outline size |
2DMenu.TextMenu.Font.Color | Integer | DefaultFont.Color | Text item font text color |
2DMenu.TextMenu.Rect | x, y, width, height | 0, 0, 0, 0 | 2D menu area for text items |
2DMenu.TextMenu.Round | x | 0 | Draw the menu in a rounded curve, the higher the number, the more curved. Only used if 2DMenu.TextMenu.TextStyle=round |
2DMenu.TextMenu.Items | Integer | 9 | Number of text items in the list |
2DMenu.TextMenu.TextStyle | left|center|rigt|round | left | List aligment |
2DMenu.TextMenu.FontSizeSelected | Integer | 0 | Font size of the highlighted item (the middle item in the list) |
2DMenu.TextMenu.FontSizeGradient | Float | 0.0 | Number that is subtracted from 2DMenu.TextMenu.Font.Size for each item further away from the highlighted item |
2DMenu.TextMenu.FontColorGradient | Float | 0.0 | Number that is subtracted from 2DMenu.TextMenu.Font.Color for each item further away from the highlighted item |
2DMenu.TextMenu.UseHighlight | Boolean | false | If true, draws a rounded rectangle (2DMenu.TextMenu.HighlightRect) around the highlighted area |
2DMenu.TextMenu.HighlightRect.RadiusX | Integer | 0 | 2Dmenu highlighted item rounded courner size |
2DMenu.TextMenu.HighlightRect.RadiusY | Integer | 0 | 2Dmenu highlighted item rounded courner size |
2DMenu.TextMenu.HighlightRect.FrameColor | Integer | 0 | 2Dmenu highlighted item frame color |
2DMenu.TextMenu.HighlightRect.FillColor | Integer | 0 | 2Dmenu highlighted item fill color |
2DMenu.TextMenu.HighlightRect.FrameWidth | Integer | 0 | 2Dmenu highlighted item frame size |
Snapshot properties | |||
Snap.Rect | x, y, width, height | 0, 0, 0, 0 | Per-game snapshot display area |
Snap.Directory | String | Logical name of the directory where per-game snapshots image files are stored.
For each emulator you configure this using EMU.MediaDirectory1.Name in system.rc.
Regardless if you specify a name, images are also searched for in the image directory list Image.Dirs as defined in system.rc. That is particularly convenient for he DefaultImage name. | |
Snap.FileName | String | Automatically determined | Filename in the Snap.Directory used to display the image.
The following per-game parameter may be used, which will be substituted at run-time: %name%: Game name %category%: Game category %year%: Game year of release %man%: Game manufacturer %playcon%: Game player control such as 1alt or 2sim %buttons%: Game number of buttons %game%: Game description %players%: Game number of players %clone%: Name of the game clone %engine%: Game emulator name as defined in system.rc |
Snap.DefaultImage | String | Filename of the image that should be shown if the image configured for Snap.FileName doesn't exist | |
Snap.DrawMode | normal|scaled | normal |
normal: image is drawn top left of the .Rect area using the image's size
scaled: image is centered in .Rect area and scaled (maintaining aspect ratio) to fit the .Rect area |
Video snapshot properties | |||
VideoSnap.Rect | x, y, width, height | 0, 0, 0, 0 | Video snapshot display area. The video is scaled (maintaining aspect ratio) to fit this area |
VideoSnap.Directory | String | Logical name of the directory where per-game video snapshot files are stored. For each emulator you configure this using EMU.MediaDirectory2.Name in system.rc | |
Per-game image properties | You can configure 9 per-game image areas Image1-Image9. The attributes are the same as for the snapshot properties (Snap as describe above | ||
ImageN.Rect | |||
ImageN.Directory | See Snap, above | ||
ImageN.FileName | See Snap, above | ||
ImageN.DefaultImage | See Snap, above | ||
ImageN.DrawMode | See Snap, above | ||
Per-game text properties | You can add up to 10 per-game text boxes: Text1-Text10 | ||
TextN.Rect | x, y, width, height | 0, 0, 0, 0 | Per-game textbox display area |
TextN.Text | SimpleText | Text displayed in the text box.
The same per-game parameter as for Snap.Filename may be used, which will be substituted at run-time.
The text may be formatted in SimpleText formatting as described below. | |
TextN.VerticalAlign | top|bottom|center | top | Vertical text alignment of the text in the textbox |
TextN.SingleLine | Boolean | true | If true, the textbox will only display 1 line, otherwise drawn in multiple lines if needed |
TextN.EclipseText | Boolean | true | If true, single-text boxes will display ... if the text is too wide; otherwise it just gets truncated |
Game info dialog properties | |||
GameInfoDialog.Width | Integer | Automatically calculated | Width |
GameInfoDialog.Height | Integer | Automatically calculated | Height |
GameInfoDialog.FormatTitle | SimpleText | <p align=center><font size=xlarge><b> |
Info dialog formatting for the game title.
The text may be formatted in SimpleText formatting as described below. |
GameInfoDialog.FormatHeading | SimpleText | <p align=center><font size=large><b> |
Info dialog formatting for each section heading.
The text may be formatted in SimpleText formatting as described below. |
GameInfoDialog.FormatBody | SimpleText | <p align=justified><font size=xxsmall> |
Info dialog formatting for the body text.
The text may be formatted in SimpleText formatting as described below. |
SimpleText formatting
Some UI elements in RGL my be defined using the SimpleText format, which provides simple paragraph and character formatting directives.Example:
<p align=center><font name=Arimo-Regular.ttf size=large color=0xff0000><u>Hello</u> <b>world</b>
Formatting syntax
SimpleText uses an XML/HTML-like style, for example <b>Hello</b> tags denote that "Hello" should be printed in bold. Unlike XML, the tags don't follow a strict <tag> </tag> symmetry. Instead, each <tag> is simply a formatting instruction; and it's merely convenient that tags like <b> (=bold on) have an opposite </b> (=bold off) tag.
Consider the following formatting:
<i><b><i>Hello</i></b> World</i> According to strict XML/HTML rules, both "Hello" and the entire "Hello World" would be in italic. In SimpleText, however, you should interpret the line above above as a series of formatting instructions:
italic on, bold on, italic on, Hello, italic off, bold off, World, italic off As a result, Hello is printed in both bold & italic; World will be printed without both bold and italic.
White spacing and word splitting
Just like HTML, all redundant spaces will be removed and end of lines will be ignored. Use <br> to force a line break. Also, simpletext prevents words to be split across lines.
Paragraph formatting
<p align=left|center|right|justified> |
Starts a new paragraph with the following rules:
- Text starts on a new line - Character formatting is reset to defaults - Text alignment according to the align parameter |
Character formatting
<b> | Bold on |
</b> | Bold off |
<i> | Italic on |
</i> | Italic off |
<u> | Undeline on |
</u> | Underline off |
<s> | Strike-through on |
</s> | Strike-through off |
<br> | Text continues on new line with same character formatting |
<font name="fontname" size=fontsize color=textcolor> |
name:
- name of a supported font file, like courier.ttf; or - default: reset to default font name size: - either a number like 8 or 32, or; - xxlarge, xlarge, large, small, xsmall, xxsmall, or; - default: reset to default font size color: - either a number like 0, 2; or - hex number like 0xff or 0xffffff; or - default: reset to default font color Default character formatting: Default font name, size and text color are according to RGL's theme "Default text properties", see above. |