RVGL Documentation

Date: August 31, 2017
Authors: Marv, Huki
Categories: RVGL
Tags: documentation

This brand new update for the PC version of Acclaim's classic R/C racer "Re-Volt" is aimed at bug fixes, compatibility and user improvements, new features, additional content and more. Work in progress.

Have suggestions, ideas for new Re-Volt features, or bugs to report? Feel free to join and post in our forum boards. http://z3.invisionfree.com/Our_ReVolt_Pub

This section is meant for car and track makers and is updated from time to time to reflect features in the latest Alpha release.

It may be convenient to work with tracks and cars in "DEV mode". This mode enables several helpful features for car / track making, in addition to MAKEITGOOD and TVTIME cheats. To access DEV mode, run Re-Volt with -dev command line.

  • The maximum number of cars has been raised to 16.
  • Dreamcast Content
    • Additional Gallery pages from the DC version
    • added support for additional cars from the DC version (available as a separate optional download). This adds BigVolt and BossVolt to the car selection screen. It is possible to use the original Dreamcast frontend.fob file to bring the same carbox layout as the DC version (i.e., all carboxes displayed on screen).
  • Added support for true 3D surround sound. Surround speakers or headphones with virtual surround capability are required.
  • Support for the streaming redbook from the PSX master track (TRACK1.DA). Convert the master track to OGG and place it in the redbook folder as "track1.ogg". Only OGG is supported.

The list of languages supported is no longer hard-coded. Instead, any language file can be placed in the strings folder and it will be detected by RVGL. The localized language name (eg, "Francais" for "french.txt") can be specified as the last line of the strings file.

The following languages are included: English, Dutch, French, German, Hungarian, Italian, Polish, Spanish and Swedish

Save files are located in the "profiles" folder. RVGL global settings file is named "rvgl.ini" and profile specific settings are saved in "profile.ini". Profile names are capitalized in-game.

P2P is now the default mode for multiplayer sessions. Use "-nop2p" command line to explicitly disable P2P and use client-server mode.

The maximum number of cars is 16 as well, however, a maximum of 20 connections is supported, making room for 4 additional spectators.

Waiting Room commands: use Up / Down keys to scroll through the player list, hold down Ctrl for faster scrolling. The host can use Ctrl-D to disconnect a player or Ctrl-S to put a player in spectator mode.

The Windows version now adds support for DirectPlay lobby launchers like GameRanger or GameSpy. For this to work, create a copy of rvgl.exe and rename it to revolt.exe, then place dplobby_helper.dll alongside.

  • Video Options:

    • Auto Generate Mipmaps: All mipmap levels can now be automatically generated at loading time (no need for .bmq, ... files). We only recommend using this option if Anisotropic filtering is also enabled, otherwise there can be excessive blurring.

    • Water Ripples: New option in Render Settings to enable or disable the water ripples effect (vibrations in water) used in tracks like Garden. This can help improve performance with some Intel cards.

    • Multisampling: Support for enabling Multisampling (MSAA) from the Video Settings.

.ini Settings: Added an fps limiter that can be used with vsync off. Set the preferred frame rate through the LimitFPS entry in rvgl.ini, set it to zero to disable limiting. Only 0 or values above 10 are accepted.

Fullscreen toggle support: use F11 to switch between fullscreen and windows mode instantly.

Paste host IP in Multiplayer mode: You can press CTRL+V to paste an IP address from your clipboard.

Screenshot support: automatically save screenshots from the game using F8 key. The screenshots are timestamped and saved in the profiles folder in PNG format.

  • Controller buttons are properly supported for menu navigation: axes can now be treated as buttons. Use Fire - forwards (Button A by default) and Pause - backwards (Button Y by default).
  • Support for modern game controllers like the Xbox 360 and PS3 Controllers. This means Triggers can be selected along with other axes. The axis and button names are displayed in the Controller Config menu for these devices.
  • Included an SDL community sourced GameController mapping database that is loaded automatically to support various additional controllers.
  • Menu select and back are set to buttons A and B by default on supported controllers.

You can start RVGL via command-line or shortcuts with the following parameters:

-aspect <width> <height> <lens>
Changes the display aspect ratio and fov (default 512).

Launches the game in demo mode.

-lobby <ip address>
Launch the game and directly connect to a lobby. can be the host's IP, 0 (to search for local sessions), or entirely ignored (for launching the host).

-multisample <num_samples>
Initializes a multisampled opengl window without framebuffer objects.

Disables gamma correction.

Disables the intro.

Disables P2P and usea client-server mode.

Keeps the game running even when it's in the background. This is an alternative to the Shift+F9 shortcut in dev mode.

Launches the game without sound/music.

Disables custom content.

Loads last used profile, do not show profile selection menu.

-profile <name>
Loads the profile .

-res <width> <height>
Forces a fullscreen resolution.

Disables the loading screen.

-window <width> <height>
Launches the game in window mode. Specify width and height optionally. The default size is half the desktop dimensions.


Launches the game in developer mode and enables edit modes and debug features.

-alpharef <0 to 256>
Reference value for alpha testing, default is 128

Performs heavier visibox computations for rendering.

-editscale <s>
-editoffset <x, y, z> Changes scale and offset of the makeitgood editor, all floating point values

Shows the maximum supported texture size by the GPU. (Capped to 8192).


Don't use force feedback of controllers.

Disables mipmaps.

Disables stars in Museum 2's planetarium

RVGL comes with a launch script that auto-detects the system type and launches either the 32-bit or 64-bit executable. The script automatically resolves dependencies by using libs included with rvgl in place of any missing libs. This allows rvgl to run without any manual configuration on a wide range of distros as long as the opengl drivers, sdl2 and sdl2_image are installed.

All game files need to be lower case. Run fix_cases to repair file names after installing custom content.

Applies to both cars and tracks.

Supports standard texture sizes that work with any graphics card. Your texture has to be square (i.e., same width and height) with power-of-two dimensions (like 256x256, 512x512, etc). We have currently set a safe higher limit of 8192x8192.

The legacy Re-Volt versions only support one texture size:

256x256. To learn how to make your track using hi-res textures backward compatible, see the Mipmaps section just below.

Mipmaps are low resolution copies of the main texture. Mipmaps improve both the performance and visuals of your content, especially when used with hi-res textures.

Several mipmap levels can be used, each level must be half the size of the previous and named with a different ".bm[p]" extension: the last character keeps increasing. (eg., a 256x256 "texture.bmp" will have a 128x128 "texture.bmq" file as the first mipmap level and a 64x64 "texture.bmr" as the second mipmap level).

We also allow the use of mipmaps that go upward (i.e., with the above mentioned example, you may include a hi-res 512x512 version called "texture.bmo"). By including your hi-res texture this way, you will be able to keep the actual "texture.bmp" file at 256x256 and enable your content to be played in legacy Re-Volt versions.

For a quick reference, here is a list of supported sizes and their corresponding file names, as per the above example:

      8192 x 8192   -   texture.bmk
      4096 x 4096   -   texture.bml
      2048 x 2048   -   texture.bmm
      1024 x 1024   -   texture.bmn
       512 x 512    -   texture.bmo
     [ 256 x 256    -   texture.bmp ]
       128 x 128    -   texture.bmq
        64 x 64     -   texture.bmr
        32 x 32     -   texture.bms
        16 x 16     -   texture.bmt
         8 x 8      -   texture.bmu
         4 x 4      -   texture.bmv
         2 x 2      -   texture.bmw
         1 x 1      -   texture.bmx

Intermediate mipmap levels cannot be skipped. For example, do not

include a texture.bmp" (256x256) and a "texture.bmn" (1024x1024) without a "texture.bmo" (512x512) inbetween.

Mipmaps also find a third use as "texture sets". The game will pick textures of the appropriate size to load, depending on the available system resources. Therefore, it is always recommended to include appropriate mipmap levels for your content.

Use the -texinfo command line to display the texture sets info that was detected for your system.

Supports bitmap textures with alpha channel for transparency data. Only 32-bit ARGB (A8 R8 G8 B8) format is supported.

Alpha channel transparency can be used to create rich and varied effects, eg., transparency gradients and well anti-aliased shapes. Colorkeying is disabled in this case, which means pure-black color (RGB 000) can be used freely on opaque surfaces.

Care should be taken to save your alpha-enabled texture in the correct format ARGB. Some other 32-bit BMP formats such as XRGB, while creating a 32-bit bitmap file, does not save your alpha channel in the extra space. This would result in a fully transparent texture in-game.

For example uses of 32-bit textures, see: http://z3.invisionfree.com/Our_ReVolt_Pub/index.php?showtopic=1619

Additional texture formats are now supported. For historical reasons, the textures should still be named with the .bmp extension (and mipmaps with .bmq, .bmo, etc. as usual).

Available formats: BMP, PNG, JPG, WEBP, TIF, GIF, CUR, ICO, LBM, PCX, PNM, XPM, XV, XCF.

Support for XCF (GIMP's native format) is experimental. This allows you to visualize a GIMP project file in RVGL without exporting it. However, this is not guaranteed to work correctly in all cases.

Customize user cars through new entries in the car's "parameters.txt" file.

To make sure your car stays compatible with legacy versions of the game, precede each line of a new entry in the parameters file with ;). This is done in our examples below.

To add a box-art image to your car, use the TCARBOX parameter. This entry works the same way as the TPAGE parameter. General syntax:
;)TCARBOX <path to carbox texture>

The carbox texture should be a full 256x256 bitmap image (although other sizes may be supported), with pure white (RGB 255,255,255) background. Mipmaps may be used for improved quality and performance (see the Textures & Mipmaps section).

Each car can have its own shadow map, or it can use one of the preset stock shadows (useful for default car repaints).

The shadow map is generally a 64x64 bitmap image containing a white silhouette of the car on a black background. They can be generated from the top view of the car (preferably from a 3D modeller) and then postp-processed in an image editor.

Re-Volt requires 5 coordinates supplied in the car Parameters.txt file to position the shadow under the car. These are the Left, Right, Front and Back edges and Height relative to the model center. These values are independent of the car CoM and do not need to be updated upon changing the CoM.

Parameters to be added:

  • TSHADOW to specify the shadow texture, similar to TPAGE and TCARBOX parameters. This parameter can be ignored if the car is not using a custom shadow texture.
  • SHADOWINDEX to use one of the default car shadows found in "cars\misc\Shadow.bmp". Set this parameter to -1 to use the generic square shadow. This parameter can be ignored if TSHADOW is used.
  • SHADOWTABLE parameter followed by 5 offset values for the Left / Right / Front / Back / Height of shadow relative to model center. Remove this line or set all offsets to zero if you'd like the shadow to be automatically placed under the car's body (in this case, the shadow will not cover wheels extending out of the body).

General syntax:

    ;)TSHADOW     <path to shadow texture (or) NONE>
    ;)SHADOWINDEX -1  ; 0 to 27, (or) -1
    ;)SHADOWTABLE -10.2 10.2 30.4 -30.4 -4.2

For a walkthrough on generating and setting up a car shadow, and to download an example car, see: http://z3.invisionfree.com/Our_ReVolt_Pub/index.php?showtopic=1680

User cars can show the Speed / Acceleration / Weight bars in the car selection screen.

To use this feature, calculate and fill in the TopEnd and Acc parameter values using Start Race -> Calc Car Stats option in DEV mode. Weight takes the same value as the car mass.

v1.2 also requires the Trans parameter to be properly filled in.

Then add the following line in the Frontend section of the parameters file.

    ;)Statistics  TRUE

TopEnd gives the maximum top-speed that can actually be reached by the car. Acc gives time, in seconds the car takes to reach the top speed.

To download an example car with custom shadow and stats, see: http://z3.invisionfree.com/Our_ReVolt_Pub/index.php?showtopic=1443&st=1150&#entry22000166

Configure the hood and rear-view cameras for your car by adding the new CAMATTACHED section in your parameters file. Below is a sample:

    ; Camera details

    ;)CAMATTACHED {   ; Start Camera
    ;)HoodOffset      -0.12 -71.81 -60.01 ; Offset from model center
    ;)HoodLook        0.02 ; Look angle (-0.25 to 0.25, 0.0 - straight)
    ;)RearOffset      -0.12 -71.81 27.24
    ;)RearLook        0.03
    ;)}               ; End Camera

Configure the camber angle for each wheel of your car using the Camber entry. This sets the rotation angle (in degree) of the wheel along the Z axis. General syntax (in each WHEEL section):

    ;)Camber    -10

The camber sign is automatically adjusted for left / right wheels. A negative Camber value makes the bottom of the wheel farther out than the top.

Enable Rotor, UFO or Mystery effect for your user car by adding new parameters in the "Handling related stuff" in the parameters file.
General syntax:

    ;)Flippable FALSE   ; Rotor car effect
    ;)Flying    FALSE   ; Flying like the UFO car
    ;)ClothFx   FALSE   ; Mystery car cloth effect

Flying AI cars will also steer in the air.

Mystery car effect will also need modification to the car mesh to flag the polygons that form the edges of the cloth. For more details, see: http://z3.invisionfree.com/Our_ReVolt_Pub/index.php?showtopic=1443&st=1000&#entry10640663

To use Panga affect (i.e., head turning and ducking according to speed), modify the SPINNER section. Further, you can use rotation only, ducking (translation) only, or both. General syntax (in the SPINNER section):

    ;)Type            0   ; 1: Default rot, 2: Turn with steer, 
                          ; 4: Translate with speed, 6: both 2 and 4
    ;)Trans           0.000000 3.000000 6.000000  ; Translation max
    ;)TransVel        0.001000    ; Velocity factor

Unlike in legacy versions (eg., default Panga car) where TransVel was zero to make the spinner turn with steer, now TransVel specifies the speed of turning, so it should be non-zero. A TransVel value of zero denotes that the spinner doesn't turn at all.

Disable a user car for AI selection by adding the CPUSelectable parameter in the "frontend and selectability" section in the parameters file. General syntax:

    ;)CPUSelectable  FALSE

These commands work in DEV mode, some commands may also work by manually entering MAKEITGOOD edit mode or other appropriate cheat codes.

Instant Car Refresh: Press Ctrl + R to refresh the car data. Allows you to quickly make changes to the car parameters and data (textures, hull, etc) while Re-Volt is running and view those changes in-game. This works both in Frontend preview screen and in-game.

Customize user tracks through new entries in the "level".inf file and the extensive "custom" folder support.

New 3-car wide STARTGRID with type numbers 4 and 5 have been added for use in custom tracks.

There is a new level inf keyword ROCKTYPE, which can be 0 or 1. The default 0 can be used for ship levels, 1 can be used for water surfaces (Boat tracks).

To play a custom music track in your level instead of the default CD audio, use the MUSIC entry in the "level".inf file. General syntax:

    MUSIC <Path to music file>

Supported formats are OGG (recommended), FLAC, MP3 and WAV.

This entry was previously called MP3 which is now a deprecated keyword. The MUSIC keyword is recommended for new tracks.

If both MUSIC and REDBOOK lines are present in the inf, MUSIC has

the higher priority.

Practice: User tracks can be played in Practice mode. Add a single star object for this mode, when the player finds and catches it, the progress will be saved.

Battle & Stunt: These special type of tracks can be created and supported with the help of a new GAMETYPE entry in the "track".inf file. General syntax:

    GAMETYPE 1    ;Track type (1:battle, 2:stunt)

Add several stars for Battle Tag mode, and upto 64 stars for Stunt Arena. Progress for Stunt track type is saved and displayed.

Reverse Mode: Support for Reverse mode can be added by including a "reversed" folder in your track folder, containing the needed files (see the default levels for an example) .

Several edit modes (AI Nodes, Pos Nodes) support automatically reversing the data for you, by using the LShift + R command.

Added support for advanced custom content in user tracks. This includes but not limited to:

  • Animated objects
  • Skymap, clouds, other graphics
  • Sound effects
  • Loadscreen image
  • HUD, menu and font

This works by replacing default (stock) data with custom content. When a model, sound, texture, etc. has to be loaded, the file is first searched inside the "custom" sub-folder located in the current track's folder.

The only thing to do to add custom content in your track is to create a "custom" folder inside the track's directory and place the custom files inside, with the same name as the stock content you want to replace.

Here is the list of the customizable files:

  • Skyboxes: sky_bk.bmp to sky_tp.bmp
  • All Objects added in Edit mode (MAKEITGOOD): the .m files and their associated .hul or .ncp file, if any.
  • All the .wav files (sfx).
  • All track files: .fob, .fld, .fan, .fin, .cam, .pan, .tri, .taz, .por, .w, vis, .rim, .ncp, .lit.
  • The track textures.
  • trolley.bmp, sun.bmp, dragon.bmp, water.bmp, clouds.bmp
  • loadlevel1.bmp to loadlevel4.bmp
  • fxpage1.bmp to fxpage3.bmp
  • font.bmp, loading.bmp and spru.bmp
  • gogo.m and go1.m to go3.m

This is an exhaustive list. Some of these files should practically never be customized. The support for some formats was only added to be able to release a track compatible with both v1.2 and legacy Re-Volt version (see the Compatibility Notes section below).

In Reverse mode, the custom version of the files that Re-Volt expects to find in the "reversed" folder have to be placed inside the "custom\reversed" folder to be detected.

With support for custom track files (.fob, .fin, etc), it is possible to to include, for example, a simplified .fob file in the main track folder and a custom .fob file placed in the "custom" folder. That way, the track can be played with both v1.2 and legacy Re-Volt versions.

The recommended practice is to first create the simplified track files, then copy those files into the "custom" folder and continue working in Edit mode to add v1.2 specific customizations. Any modifications will now be saved in the "custom" folder without touching the main track files.

When designing simplified track files for legacy versions, the following limitations need to be taken into account:

Texture Animation: The simplified world (.w) file should contain no more than 16 texture animation slots, any more will crash legacy versions.

Camera Nodes: This edit mode gives you an option whether to save the .cam file in the old format or the new v1.2 format (with support for higher range). If you are sure your track coordinates are within the range of (-32768 to 32768), you can choose to save in the old format without having to worry about compatibility. If your track exceeds the specified range, first create a simplified .cam file with nodes staying within the range and save it with the old format.
Then copy this .cam file to your "custom" folder and continue adding the rest of the nodes, this time saving it with the new format.

Conveyor Effect: The direction of conveyor effect is hardcoded in legacy versions, hence not easy to support in those versions. It is recommended to first create the world (.w) or instance (.fin) file with no conveyor effect, then use custom support to add the effect later.

Limitations: Any content exceding these limits will simply be ignored by legacy versions and are not of concern for compatibility.

  • Pickups: 40.
  • Objects: 128.
  • Instances: 200.

Below limits are not usually exceeded but if otherwise, you might want to use custom support to include simplified files.

  • Track Zones: 128.
  • Collision polygons: 16384.

The collision poly limit has been updated to accomodate instance collpolys. The maximum polys supported by the world ncp file is limited to 65536. However, it's now possible to add any number of additional instance ncp files, i.e., the total number of world + instance collpolys can now exceed 65536.

These commands work in DEV mode, some commands may also work by manually entering MAKEITGOOD edit mode or other appropriate cheat codes.

Full Track Reload: Make changes to track files while Re-Volt is running, then simply restart the track to reload all the files.

Preview Objects: In Objects edit mode, press Ctrl + P to preview objects animation instantly, then use the same command to get back to editing.

Show Camera Position: Press RShift + F9 to show position and direction of the camera. This can help setting the required StartPos and StartRot values in the "track".inf file, by placing the camera at the start line and noting the camera values.

Keep game running in background: Press LShift + F9 to keep the gamerunning when it's not focused.

Hide HUD and Menus: Shift + F5 to hide HUD, then with the game paused, press and hold Shift to hide the pause menu. This helps, eg., taking a screenshot for the main track gfx.

Ping values in multiplayer sessions can be checked from the debug display in Dev mode (Ctrl + Numpad Enter).

Toggle Camera Speed: Use Caps Lock to toggle the camera speed.

Copyright © Huki and jigebren 2017
Webpage: http://rv12.revoltzone.net
Email: rv12@revoltzone.net