RVGL Changelog: Bug Fixes & Updates
RVGL Changelog: Bug Fixes & Updates
**                               RVGL Changelog                               **
********************************************************************************
23.1030a1:
| Bug-fix release.
| Pumped network version.
Mod:
  [Graphics]
  - Disabled SSO by default as it was reported to cause issues with recent AMD
     drivers and certain mobile devices.
  - On Windows and macOS, the game switches to windowed mode before showing a
     system message box. This works around OpenGL applications unable to display
     overlays when running in fullscreen. Also, the game is now minimized when
     focus is lost (eg, Windows key or Alt-Tab).
Fix:
  [General]
  - Object Animation: Fixed sound and spark effects not playing when specified
     at the first frame of the animation.
  - Fixed broken split time triggers in several tracks. The following track
     trigger files are updated: Museum 2 (R), Market 1 (R), Ghost Town 2, Ghost
     Town 2 (R) and Toytanic 2.
  - Ensure skins above the suffix length limit are rejected properly.
  [Graphics]
  - Fixed rendering of the green glow in Battle Tag when DRINKME cheat is used.
  [Multi]
  - Fixed object teleportation and invisible collision issues introduced after
     recent fixes.
  - Fixed weapons getting killed immediately after firing for some players.
--------------------------------------------------------------------------------
23.0602a1:
| Bug-fix release.
| Pumped network version.
Mod:
  [General]
  - Renamed the log file to "rvgl.log".
  - Updated credits.
Fix:
  [General]
  - Fixed player's bomb state not reset properly, resulting in immunity to
     bombs for the rest of the race.
  - Fixed broken radar in Time Trial mode.
--------------------------------------------------------------------------------
23.0501a2:
| Bug-fix release.
Fix:
  [General]
  - Fixed broken behavior of stacked objects like ABC blocks.
  - Android: Fixed installation issues on Android 12 and above.
  - Editor: Fixed selecting of thin meshes in Objects and Instances mode.
  [Graphics]
  - Fixed several rendering issues when DRINKME cheat is enabled (weapons,
    camera and spinner offsets).
  [Multi]
  - Fixed remote car position and lap data not updated when spectating while
    keeping the game minimized.
--------------------------------------------------------------------------------
23.0501a1:
| Pumped network version.
Add:
  [General]
  - Cups: Added new entries for cup files. "QualifyPos" - the minimum finish
     position to qualify per race (1-16), and "UnlockPos" - the minimum overall
     podium position to unlock the next cup (1-3).
  - New keyboard commands are available in TVTIME mode: Right Ctrl + F11 and
     Right Shift + F11 to cycle through available cameras, and Left Shift + F7
     to hide race results.
  - New rearview behavior: Added new rearview cameras that complement each
     forward camera. There is a new profile.ini option "RearViewType" to
     configure the rearview behavior when pressing the "look-back" button.
       0 (auto): Switch to a rearview that matches the current forward view.
       1 (fixed): Always use the DC style hood rearview (the default option).
  - Better reposition triggers for Stunt Arena: If a Stunt Arena track provides
     AI Nodes, the game now uses them for triggered repositions, instead of
     resetting the car all the way back to the start grid.
  - New command line "-largereplays" to enable large replays up to 1GB, with a
     dynamically expanding replay buffer size.
  [Multi]
  - The DRINKME cheat is now supported online. The cheat code can be enabled or
     disabled by the host in a multiplayer session. Further, replays saved with
     the cheat enabled now play back properly.
  - The host IP can now be specified with an optional server port. (eg.,
     192.168.1.4:6666 or b.rv.gl:4444). This way, clients do not need to use the
     "-serverport" command line to specify the server port.
Mod:
  [General]
  - The "-register" command line now takes an optional path to the executable
     that must be registered for lobby launching (Discord rich presence).
  - Cups: Stock cup data is now read from file. Modifications to stock cup data
     marks the cup as (CHT) at the cup selection screen.
  - Upgraded SDL to 2.0.20 (Windows, Android and macOS).
  - Android: The app now targets API 31 (Android 12).
  - Replay: Global pulses (star weapon) are now stored in the replay.
  - Editor: Increased the maximum size of waterbox to 20000 units.
  - Updated assets: Includes fixed collision data for Toy World 2.
  - DC Pack: Updated Bossvolt body mesh with proper underside mapping.
  - Updated several language files with corrections.
  - Updated credits.
  [Graphics]
  - Android: Allow fully hiding the pause button overlay.
  [Audio]
  - Linux: Added support for FLAC 1.4 and above (libFLAC.so.12).
  [Input]
  - Android: Updated the Controller Map configuration app.
  - Updated the SDL GameController mapping database.
  [Multi]
  - Minor improvements to lag management and remote object interpolation.
  - Allow car collisions at the start grid before countdown ends. This prevents
    tumbleweeds from going through ghosts and getting stuck inside cars.
Fix:
  [General]
  - Track Zone hit tests now properly support low-CoM cars.
  - Editor: Fixed a bug in modern editor that can cause a wrong link count to
     be saved to the *.fan file.
  - Linux: Fixed a library detection bug in the 'rvgl' launch script.
  - Restored support for Windows XP.
  [Graphics]
  - Fixed missing shininess over the sliding door glass in Market 2.
  - Fixed broken shadow box in Toys in the Hood 2.
  - Fixed broken reflections caused by overlapping mirrors.
  - Fixed glitch during fullscreen toggle in some versions of SDL.
  - Fixed glitch in mirrors and vertical fog in the legacy renderer.
  - Shaders: Fixed glitches in fog clamping and object shininess.
  - Shaders: Fixed reflections and fog for additive blended meshes.
  - Shaders: Shininess is now affected by lights.
  [Multi]
  - Fixed cases where oil slick dropped just in front of a fastly moving car
     does not affect the car's wheels.
  - Fixed various desync and teleportation issues in objects like traffic cones
     and tumbleweeds.
  - Fixed potential desync issues with pickups and firework targets.
  - Train, sliding door and boat animations now start in sync for all players.
  - Ensure that the behavior of wind remains in sync for all players.
  - Fixed stuttering during very slight rotation of remote cars.
--------------------------------------------------------------------------------
21.0930a1:
| Bug-fix release.
| Pumped network version.
Add:
  [General]
  - Linux: Builds for armhf and arm64 are now included. The 'rvgl' launch
     script is updated to auto-detect these architectures and launch the
     appropriate build.
Mod:
  [General]
  - Linux: The 'rvgl' launch script now uses 'ldd' in place of 'ldconfig' to
     resolve libraries. This fixes an error message about root permissions.
  - Weapon generation and firework target display use a better offset
     computation for the low-CoM fix.
Fix:
  [General]
  - Object Animation: Fixed interpolation glitches in sound effects.
  - Fixed a reposition immediately at countdown in some custom tracks.
  - Fixed the displayed list of stars overflowing in Stunt Arena.
  [Input]
  - Fixed a crash on Windows 7 when certain controllers are plugged in.
  [Multi]
  - Fixed various inconsistencies in the transfer of star in Battle Tag,
    like the wrong player appearing to hold the star, timer freezing and
    inability to transfer the star.
  - Improved packet verification and fixed a bug that caused the same packet to
    be received twice in rare occasions.
--------------------------------------------------------------------------------
21.0905a1:
| Pumped network version.
Add:
  [General]
  - Object Animation: Added support for lights, sound effects and sparks. Each
     bone can have a 3d sound, light and spark generator attached to it. These
     can be created and destroyed at any keyframe. Sounds can be one-shot or
     looping. See the docs for more details.
  - Object Animation: Non-looping animations (Mode 1) can now be triggered
     multiple times. Set 'TriggerOnce' to 'false' to enable this behavior.
  - For cars, the 'Weapon' key in parameters.txt is now deprecated. Instead, 2
     new keys have been added: 'WeaponOffset1' (for shockwaves and fireworks)
     and 'WeaponOffset2' (for water bombs).
  - Added support for Slovenian language (thanks to Mirko Ficko).
  [Graphics]
  - Added support for High DPI rendering (eg., on macOS with a retina display).
     This can be disabled by setting 'HighDPI = 0' in rvgl.ini.
  - Linux: Added option to keep the Desktop compositor enabled when the game is
     running. This allows smoother transition between RVGL and other windows, at
     the cost of slightly reduced performance. Set 'Compositor = 1' in rvgl.ini.
  [Multi]
  - Added support for blocking a player by IP address. The host can select a
     player in Waiting Room and use 'Ctrl + Shift + D' to disconnect and block
     the player from connecting again during the session.
  - Global Blocklist: In addition to dynamic blocking, a file containing IPs to
     block can be loaded at session start. Create 'profiles\blocklist.txt' with
     one entry per line. Then, launch RVGL with the '-blocklist' command line.
Mod:
  [General]
  - The following libraries are upgraded: SDL -> 2.0.14, ENet -> 1.3.17,
     OpenAL Soft -> 1.21.1 (Windows).
  - On macOS, assets are loaded from the 'Application Support' folder so the
     content is not lost when the RVGL.app is updated or replaced. Assets are
     copied from the bundle on first run.
  - Improved assets handling on Android and macOS. Installing the full game
     bundle (APK or DMG) over a previously installed partial bundle correctly
     copies the full game assets again.
  - Editor: Improved support for AI line creation from ghost path and curve
     generation. These features are now supported by the modern editor. See the
     docs for the updated list of commands.
  - Editor: Several message boxes are replaced with in-game messages.
  [Graphics]
  - Game window should no longer minimize when a message box is displayed.
  - Log the window size and render resolution at startup.
  [Audio]
  - Initialize audio device with a 48 kHz sample rate when available.
  - FluidSynth 2 is supported for MIDI playback.
  [Input]
  - Android: Updated the Controller Map configuration app.
  - Updated the SDL GameController mapping database.
  - Log information about Force Feedback support.
Fix:
  [General]
  - Several fixes for low-CoM vehicles: (1) Transfer of electropulse between
     low-CoM and high-CoM cars not working; (2) Weapons spawning underground or
     exploding onto the car itself; (3) Trigger boxes failing hit tests.
  - Better support for flippable cars: When these cars are upside-down, weapons
     and cameras (hood and rear-view) are now oriented properly.
  - Fixed weapons like battery and electropulse crashing the game if the car
     has an empty body mesh.
  - Fixed an exploit that let the player skip through a championship race by
     repeatedly pressing Enter at the Quit menu option.
  - Fixed a collision issue when wall-riding. When merging close collisions,
     take into account alignment along all 3 axes. This fixes situations where
     the wheels clip collision polygon edges, causing the car to spin out.
  - Object Animation: Fixed a collision glitch when the car is on an animated
     platform that is moving away from the world NCP bounds.
  - Android: Fixed crash at start on Android 4.x devices.
  - Editor: Fixed empty meshes unselectable in Objects and Instances modes.
  - Editor: Fixed invalid flags causing crash in Lights edit mode.
  - Editor: Fixed selection of overlapping Fields and Triggers.
  [Graphics]
  - Fixed ball bearing texture cut off in the weapon holder.
  [Audio]
  - Fixed inconsistency in playing frontend music when music is turned off.
  [Multi]
  - Fixed a precision loss in the Battle Tag timer.
--------------------------------------------------------------------------------
21.0125a:
| Bug-fix release.
| Pumped network version.
Add:
  [General]
  - Initial macOS release: Supports OSX 10.9 and above on 64-bit Intel and M1
     architectures.
Mod:
  [General]:
  - Packs: The packlist file included with RVGL is renamed "sample.txt" so it
     doesn't overwrite the default packlist.
  - Cups: Invalid class table entries are automatically fixed up instead of
     rejecting the cup file.
  - Cups: Support for zero tries and negative point values.
  - Cups: Custom skins can be selected by CPU cars.
  - Improved handling of missing game data. Display a helpful warning and avoid
     too many message boxes or game crashing.
  [Input]
  - Pressing F8 to take a screenshot no longer skips championship end screen.
  - Updated SDL GameController mapping files.
Fix:
  [General]
  - Cups: Fixed crash when not enough cars are available in a class.
  - Fixed unfinished players marked as finished in the session log.
  - Fixed crash and glitches when no level collision data is found or an empty
    car hull file is present.
  [Graphics]
  - Fixed crash caused by memory corruption when loading zero polygon meshes.
  - Editor: Fixed portal rendering issue in legacy renderer.
--------------------------------------------------------------------------------
20.1230a:
| Pumped network version.
Add:
  [General]
  - Content Packs: The game now supports a pack management system similar to
     tools like Mod Organizer. Content can be placed in multiple folders and
     enabled selectively through a packlist file. There is a new "packs" folder
     where packs and packlists are loaded from. The default packlist is
     "packs/default.txt".
     The command line "-packlist <name>" can be used to select a different
     packlist. This causes the packlist "packs/<name>.txt" to be loaded.
  - Custom Cups: Added support for custom championship cups. Each cup is
     defined in a text file placed in the "cups" folder. Use the "-nousercups"
     command line to temporarily disable them.
  - For custom frontends, there is a new camera view (ID 24) that is used at
     the cup selection screen when a custom cup is selected.
  - Editor: Modern editor now supports Light and Portal modes.
  [Graphics]
  - Added texture animation support for non-world meshes (*.m and *.prm files).
     Animation data is stored in the world file as usual, but models can now set
     the Texture Animation face flag, just like world faces.
  - Added support for mirrored-repeat texture mapping for levels. To use this,
     set the TEXTUREPROPS wrap mode to 2.
Mod:
  [General]
  - Editor: Modern editor is made the default.
  - Editor: No longer create dummy files in place of missing level files.
  - Session CSV once again prints unfinished players in the results table.
  - Replay and Cup selection now have search support.
  [Multi]
  - Difficulty setting is once again taken into account for multiplayer clients
     that use the "-gazzasaicar" command line.
Fix:
  [General]
  - Editor: Fixed glitchy axes in modern editor when the level has just loaded.
  - Editor: Fixed several scaling issues in modern editor. Ensure a minimum
     box size for zones, triggers, etc.
  [Graphics]
  - Fixed crash when a car using the Mystery cloth effect has no body mesh.
  - Editor: Ensure the editor text is drawn on top of other elements.
  [Multi]
  - Fixed a bug that can cause P2P connections to fail in rare cases.
--------------------------------------------------------------------------------
20.0930a:
| Bug-fix release.
| Pumped network version.
Add:
  [Graphics]
  - Editor: New command for rotating the camera about Z axis (tilt) for a Dutch
     Angle effect. Hold down Alt and move the mouse horizontally. Use the reset
     command (C) to reset the tilt.
  [Input]
  - New command line '-nojoy' to allow completely disabling SDL2 joystick and
     game controller subsystem (similar to '-nosound' for audio).
Mod:
  [General]
  - When searching for car skins, use the folder path from tpage file rather
     than hardcoding search to the car's root folder. This allows placing the
     default tpage and additional skins in a sub-folder.
  - Android: On first run, check for game data and do not extract assets from
     the APK if the RVGL folder is empty.
  - Editor: Updated the spark generator object to support the full range of 64
     spark IDs.
  [Graphics]
  - The maximum number of trails visible at a time is increased to 256. Each
     trail supports up to 16 trail bits (Length property).
  - Editor: Swapped the zoom controls. Now use Z for zoom in, X for zoom out
     and C for resetting the camera lens.
  - Windows: Option 'Profile = 3' automatically attempts an ES 3.0 context and
     falls back to ES 2.0 mode. Removed the now redundant 'Profile = 4' option.
  - Option 'Profile = 1' attempts to create an OpenGL 4.5 Core context and
     falls back to OpenGL 3.2 Core.
  [Audio]
  - Windows: Roll back OpenAL Soft to 1.19.1 to fix several issues.
  - OpenAL version is logged to the log file.
Fix:
  [General]
  - Ensure the correct class is checked for progress unlocking.
  - Editor: Fixed flawed intersection tests that caused several issues in
     modern mode.
  - Fixed a bug in the generated session CSV where unfinished players were
     marked as finished when '-savereplays' was also used.
  [Graphics]
  - Editor: Fixed trails glitching out when switching to Objects Preview.
  [Input]
  - Fixed a potential crash when entering the controller config menu after
     hotswapping controllers.
  [Multi]
  - Ensure that clients use the default catchup mode in Battle Tag. This fixes
     yet another 'it' car speedup bug.
--------------------------------------------------------------------------------
20.0905a:
| Pumped network version.
Add:
  [General]
  - The behavior when    repositioning to start grid in Time Trial mode can be
     customized. There   is a new *.inf key STARTGRIDRESET that can be 0 or 1. 0:
     reset to the node   above start grid, 1: actually reset to start grid (the
     default).
  - Object Animation:    New option PreCountdown in the ANIMATION section to
    disable syncing in multiplayer and always start the animation before
    countdown. This is useful, eg., for platforms that are supposed to come up
    during the countdown.
  - Level Properties: There is now support for custom slots in addition to the
    default IDs. Up to: 64 Materials, 32 Corrugations, 32 Dusts, 64 Sparks and
    32 Trails are supported.
  - Level Properties: The MATERIAL section has a new Color property for editor
    display (currently unused).
  - Replay: Race results CSV is saved along with each saved replay.
  - The game can optionally have separate base and pref paths. Use new command
    lines '-basepath <path>' and '-prefpath <path>'. If no <path> is supplied,
    the default paths are used. These folders belong to the pref path: cache,
    profiles, replays and times. The default pref path is:
    - "C:\Users\<user>\AppData\Roaming\RVGL" (Windows)
    - "~/.local/share/RVGL" (Linux)
  [Graphics]
  - Windows: Added a new Profile option for forcing an ES3 profile with ANGLE
    Direct3D11 backend. This unlocks ES3 level features, such as UBO and
    disabling mipmap generation. In rvgl.ini, set 'Profile = 3' for a default
    ES2 profile (D3D9), and 'Profile = 4' to enforce an ES3 profile (D3D11).
  - Device creation fallback: Attempt fallback modes when device creation
    fails. The order is: OpenGL (shader) -> D3D (ANGLE) -> OpenGL (legacy).
  [Audio]
  - The 3D Sound object has a redesigned Mode option (0: Continuous, 1: Random,
    2: Play Once). There is a new Start Time flag to decide the time in seconds
    before the sound is played. This is only applicable to Play Once mode.
Mod:
  [General]
  - The following libraries are upgraded: SDL -> 2.0.12, SDL_image -> 2.0.5,
     OpenAL Soft -> 1.20.1 (Windows) / 1.19.1 (Android), ENet -> 1.3.15. The
     GLAD OpenGL loader was upgraded to 2.0.0-beta.
  - Android: The app now targets API 28 (Android 9) and supports the runtime
     permission model. The minimum supported version is now Android 3.1. Support
     for the ARMv5 32-bit architecture has been removed (minimum is now ARMv7).
  - Better message box behavior: Ensure the main window is properly restored
     once the message box is dismissed.
  - Replay: Reading of replay files at startup is better optimized.
  - Editor: Zones editor now shows whether a car has gone outside zone. In
     modern mode, N key toggles AI nodes display.
  - Additional stock cars (those not part of the stack like Clockworks and UFO)
     can now have custom carbox textures.
  [Graphics]
  - Windows: Updated ANGLE libs to the 3497 branch (Chrome 69). Uses custom
     built libs for Windows XP / Vista compatibility.
  - Windows: Removed the ID for Windows 10 from the manifest for better
     compatibility with Intel drivers. This enables native OpenGL support for
     old Intel chipsets running on Windows 10.
  - Shaders: Minor optimization in fragment shader code.
  - Shaders: Cached binaries are now saved to "cache\shaders".
  - Hide HUD now hides Replay, Spectator and No Pause text.
  [Audio]
  - Android: Integer decoder (Tremor) is now used to decode OGG on both 32-bit
     and 64-bit arm devices.
  [Input]
  - Android: Better controller support and HIDAPI support. Updated the RVGL
     Controller Map configuration app.
  - Updated SDL GameController mapping files.
  [Multi]
  - Re-enabled AI rubberbanding and difficulty setting in multiplayer.
  - Don't send data for objects that are almost still. This helps conserve
    bandwidth especially for objects that are always moving, like tumbleweeds
    and wobbly cones.
Fix:
  [General]
  - Level Properties: Fixed parsing of several TRAIL properties (Fades,
     Shrinks, Expands and Length). TexturePage -1 can now be used to disable
     texturing.
  - Ensure custom level progress is loaded so OBTAIN works correctly.
  - Object Animation: Cars on top of animated objects or platforms no longer
     fall through upon reposition.
  - Object Animation: Fixed improper case handling of custom animation model
     file names. This affects case-sensitive platforms like Linux.
  - Replay: Fixed a save game issue when selecting to view replay or restarting
     the race from replay mode.
  - Replay: Fixed a bug in replay file version check.
  - Fixed crash caused by unlinked AI nodes in sprint mode.
  - Fixed an AI recovery glitch when cars drop down during countdown.
  - Fixed rounding errors in pickup randomization that can cause the player to
     get the global weapon even when the probability should be 0%.
  - Editor: Fixed inability to deselect a trigger in legacy editor.
  - Linux: Game launcher now handles arguments with quotes.
  - Better logging of loaded files.
  [Graphics]
  - Camera low CoM fix now takes the orientation of car BBox into account.
  - Windows: Fixed a flicker when launching the game in fullscreen.
  - Shaders: Fixed the order in which debug lines are rendered.
  [Multi]
  - Fixed an overflow in network traffic values (Ctrl + P).
--------------------------------------------------------------------------------
20.0430a:
| Pumped network version.
Add:
  [General]
  - New WIND section in properties.txt to modify the behavior of Wind force
     fields. Wind can be set to affect objects only (default behavior) or both
     objects and cars; either expand (infinite size) or take the actual size of
     the field.
  - Level Obtain Support: New *.inf key OBTAIN to set the conditions to unlock
     the level. This is based on car Obtain values and take -1 to 5. R/M/RM
     variants can be set to be unlocked on beating the level's challenge times.
  - New profile.ini key 'FinalCam' to disable the special finish camera at race
     end. Setting this to 0 will always show the close-up rotating camera
     similar to the original PC version. Further, when 'FinalCam' is 1 (the
     default), replay cameras are now enabled for Battle Tag finish.
  - New rvgl.ini key 'UseProfiles' to disable multiple profiles support. This
     will automatically load the last used profile (set in 'DefaultProfile')
     similar to using the '-profile' command line. If no profile exists, a
     default profile named 'player' is automatically created (unlike the command
     line variant).
  - Added new gallery pages, contributed by MightyCucumber, and rearranged
     existing ones.
  [Graphics]
  - Added support for Adaptive V-Sync. The V-Sync option can now be set to On,
    Off or Adaptive. Only applicable for Windows and Linux with X11.
  [Audio]
  - Persistent Material Sound: There is support for playing a sound effect when
    driving on a material. A new parameter 'DefaultSound' is available for each
    MATERIAL section in properties.txt. This works similar to 'SkidSound' and
    'ScrapeSound'.
  [Input]
  - Added setting to enable or disable Force Feedback for each controller from
    Controller Settings.
Mod:
  [General]
  - DC Pack: Updated Groovster and BigVolt textures to fix wheel issues and
     pure-black. BigVolt has improved windshield and AMA text.
  - When the DC Pack is not installed, and CupDC is disabled, Rooftops is now
     hidden from the track selection screen and Progress Table.
  - Replay: Weapon position data is now stored in replay file as with other
     objects. This affects Firework, Shockwave and Water Bomb objects.
  - Editor: Calc Stats mode now computes the Weight and Trans.
  - Editor: The color of Cam Node links now disambiguates two-way links from
     one-way links. This helps fixing unintended one-way links.
  - The Probe Intro Sequence is now optional. If the 'intro' folder is removed,
     or OBTAIN is set to -1 in 'intro.inf', the game attempts to load a static
     intro slide (devlogo3[a-c].bmp) in place of the animated sequence.
  - When a reversed *.inf is found, the reversed challenge time is taken from
     CHALLENGE key in the reversed *.inf. CHALLENGEREV is deprecated.
  - Stock level info and car parameters are no longer hard-coded. The values
     are now read from the files and can be customized. Updated level *.inf and
     and car parameter files are now included.
  - Reversed customization: These textures can now have reversed variants
     placed in 'custom\reversed': fxpage[1-3].bmp and all level textures.
  - Bomb explosion now uses a dedicated 'models\bomb.m' model instead of
     reusing 'models\ball.m'.
  - Android: Game Settings menu exposes more options (MultiPlayer CPU and Show
     Ghost). The Reset Progress Table option is removed.
  - Select Profile menu is reordered as Create / Load / Delete. The default
     option remains Load (i.e., press left for Create and right for Delete).
  [Graphics]
  - Improved fence sync behavior with v-sync on or when LimitFPS is used.
  - Renamed some rvgl.ini keys for consistency: EnvFlag is now EnvLevel,
     AlphaSort is now SortLevel.
  - Android: Center HUD is now configurable from Render Settings. Removed the
     Instances option instead (which can still be set from rvgl.ini).
  - Android: The carbox and track screen positions and sizes are tweaked for
     better placement in both Portrait and Landscape.
  - Menu titles are now aligned to the top-left.
  [Input]
  - Steering Range and Deadzone settings are now taken into account for mouse
     controls and can be configured in Controller Settings.
  [Multi]
  - Restricted the frequency of jumps in Battle Tag to once every 80ms. This
     limits multiple jumps to double jumps.
Fix:
  [General]
  - Editor:   Fixed   crash in Instances mode with the legacy editor.
  - Editor:   Fixed   AI Node distances not computed for some nodes.
  - Editor:   Fixed   Cam Nodes linking bug with the modern editor.
  - Replay:   Fixed   glitch during playback right after the car flips.
  - Android: Fixed freeze in main menu after tapping on Select Profile.
  [Graphics]
  - Fixed rail camera direction not properly updated in some cases.
  - Rearview animation is disabled completely when 'AnimateRearview' is off.
  - Show the correct resolution in Video Settings when '-nores' is used.
  - Android: Fixed color band artifacts with Frame Buffer Antialiasing.
  [Multi]
  - Ensure custom animation objects are synced in multiplayer.
--------------------------------------------------------------------------------
20.0325a:
| Bug-fix release.
| Pumped network version.
Add:
  [General]
  - Editor: New selection behavior to allow selecting overlapping objects such
     as zones. Use Left Shift + Select to cycle through objects beneath the
     current selected object. This is supported in both legacy and modern editor
     modes (for Zones, Fields, Visiboxes, Instances and Objects).
  [Graphics]
  - New command line '-nores' to disable display mode change and preserve the
     desktop resolution in fullscreen. Removed the '-nofullscreen' command line
     added previously.
  - Low latency mode: New rvgl.ini key LimitLatency that can be enabled to keep
     latency under control and reduce input lag, especially with v-sync on. This
     can have a slight negative impact on performance. Set to 1 to use standard
     latency control mechanism or 2 to use Fence Sync Objects when available.
Mod:
  [General]
  - Updated DC Pack: Restored wheelXX.prm files for Groovster and LA 54 from
     the original Dreamcast content.
  - Editor: Box selection and side manipulation in lights and visiboxes mode is
     made consistent with other editors. The active box or side is highlighted
     in visibox editor.
  - Write audio and input initialization to the log file.
  [Graphics]
  - Improved loading: Use Fence Sync Objects when available to speed up loading
     when v-sync is on and Threaded OpenGL disabled. For better compatibility,
     Threaded OpenGL is now disabled by default.
  - The minimum frame rate for LimitFPS is increased to 15.
  - Shaders: Restored lights and effects layout to use distinct uniform arrays.
     Works around Intel driver bugs that cause crash during shader compilation.
  - Single-buffered window is no longer provided as a fallback option (can
     cause flickering display in some systems).
  [Multi]
  - AI rubberbanding is disabled in multiplayer. In Battle Tag, the speed of
     the 'it' car is no longer tied to the player's difficulty setting.
Fix:
  [General]
  - Editor: Fixed format detection that broke legacy field and camnode files.
  - Editor: Fixed broken link toggle and missing functions in camnode editor.
  - Editor: Fixed spherical fields not having an initial radius.
  - Editor: Fixed potential crash when deleting an instance.
  - Fixed crash while loading when using certain objects with Object Thrower.
  - Security fix to sanitise profile name before creating the folder.
  [Graphics]
  - Shaders: Fixed a UBO glitch with ANGLE ES3 API.
  - Ensure container objects (VAO) are initialized in the loading thread.
  - Editor: Fixed 3D text not highlighted on hover in zone and trigger editors
    and text being obscured by zones in shader mode.
--------------------------------------------------------------------------------
20.0210a:
| Pumped network version.
Add:
  [General]
  - New force field format with extended options and type selection. The shape,
     direction, distribution and apply type can be configured separately, and
     new field types have been added. Use the FLDFORMAT level *.inf key to
     switch between the new and old format for saving.
  - Editor: Modern editor workflows now available for these edit modes: Camera
     Nodes, Fields, Instances, Objects, Triggers, Visiboxes and Track Zones. New
     tools added for Translation, Rotation and Scaling.
  - Sweep Camera support: New level *.inf key SWEEPCAM (0 or 1) to toggle the
     starting grid zoom camera in user levels.
  - Added support for Super Pro cars (new Rating level 5). Set cars to be
     unlocked upon Stunt Arena completion (new Obtain level 5).
  - Added command line arguments to manage user-made content: '-nouserlevels',
     '-nousercars', '-nouserskins', '-nousersfx' (for car sfx only), along with
     existing '-nouser' (for all the above).
  - Android: Ability to launch from adb shell with command line arguments (set
     through a string extra called 'args').
  [Graphics]
  - Fullscreen emulation support: new command line '-nofullscreen' for
     borderless fullscreen window (i.e., fake fullscreen).
  [Audio]
  - Custom car sfx: New parameters.txt keywords SFXHONK '<path>' and SFXSERVO
     '<path>' to use a custom horn sound and servo sound for the car.
Mod:
  [General]
  - Object Throwers can now specify lap settings in flag high similar to Object
     Animations. More objects are now throwable without crashing the game.
  - Object Animation: Collision now accounts for angular velocity of the moving
     object to support rotating platforms and objects (currently supported for
     Bone 0 only).
  - Collision is now supported for Boat and Horse objects.
  - Removed hardcoded collision bounding box for Train and Slider objects.
  - Updated stat bar ranges in car selection screen to account for Super Pros.
  - Editor: The MAKEITGOOD cheat enables all editor features that are available
     through Dev mode.
  - Editor: The currently active edit mode can be changed directly from the
     in-game menu (and press Enter to restart the level).
  - Editor: Save Car Info option now uses in-game confirmation menu instead of
     system message dialog.
  - Updated Serbian strings.
  [Graphics]
  - Shaders: Updated lights and effects layout to use closely packed data. The
     settings ShaderLights, ShaderShadows and ShaderEffects can be set down to
     zero (previously needed to be at least 1).
  - Shaders: Better mobile compatibility and improved UBO support. Properly
     detect the fragment shader precision for GLES2, and use explicit layout
    specifier for each uniform block (fixes UBO on several devices).
  - Improved fog support: Fog computation is moved to the fragment shader for
    proper per-fragment fog (avoid polygon artifacts).
  - Particle physics processing is tied to the physics rate for consistent
    behavior across different frame rates. Particle collisions are still
    processed at the display rate to avoid computation overhead.
  - Particles render setting now affects more objects (such as sprinklers).
  - EffectsFlag rvgl.ini setting is also applicable in legacy renderer.
  - Editor: Keep meshes visible when Show Collision option is uses. Also avoid
    a crash when collision render and wireframe are both enabled.
Fix:
  [General]
  - Fixed force fields limit to 1024.
  - Fixed minor glitches in gravity customization options.
  - Fixed bad visimask tests for particles processing.
  - Object Animation: Fixed glitch during keyframe relative translations.
  - Object Animation: Improved validation to prevent crash with bad values and
     show a helpful error message in addition to logging.
  - Editor: Save Car Info option uses consistent line endings across platforms.
  - Editor: Properly uninitialize when switching to a new mode or quitting.
  [Graphics]
  - Fixed championship podium cars using wrong skins.
  - Fixed Speedup object animation linked to frame rate.
  - Shaders: Fixed broken alpha transparency when Reflections are off.
  - Shaders: On GLES2, ensure 32-bit indices are supported or use 16-bit
     otherwise. This fixes a compatibility issue with Mali-400.
--------------------------------------------------------------------------------
19.1230a:
| Pumped network version.
Add:
  [General]
  - Custom Animations: Added a new object type that allows track makers to
     design their own animated objects. Each object can consist of multiple
     models (*.m with optional *.ncp collision) that act as "bones". Each bone
     is animated either freely or relative to a "parent". Animation data and
     keyframes are defined in a text file named "custom_animations.txt".
     A new trigger type is available with options to trigger the animation at a
     specific lap, the first or last lap.
  - New GRAVITY section in properties.txt to modify the behavior of the global
     gravity field (magnitude, direction, dampening and rockiness). The ROCK and
     ROCKTYPE level *.inf keys are deprecated - new tracks should set these
     properties in properties.txt instead.
  - New PICKUPS section in properties.txt to change pickup properties: spawn
     count (initial and per-player pickup count), env (shininess) color, and
     light color.
  [Graphics]
  - Android: New rvgl.ini key Orientation to manually set device orientation.
     Supported values are: Auto (-1), Landscape (0), Portrait (1), Sensor
     Landscape (2), Sensor Portrait (3), Reverse Landscape (4), Reverse
     Portrait (5).
Mod:
  [General]
  - '-savereplays' command line is now supported for offline modes.
  - '-sessionlog' is now available in offline modes. The following game modes
    are supported: Single Race, Championship, Clockwork and Split-Screen.
  - The beginning and end of level load are marked in the log file along with
    elapsed time to aid auto-splitters.
  - Updated various limits: 1024 meshfx slots (eg, animated waterboxes), 256
    effect polys (for piano keys), 256 unique level models (for objects), and
    256 pickups (192 normal + 64 clones). The maximum number of collisions that
    can be processed per frame is increased to 1024.
  - Support for corrugation and conveyor effect for objects NCP collision.
  - The "Car started over finish line" message is now logged instead of showing
    a message box in dev mode.
  - Updated edit mode names in selection menu for consistency.
  - Updated Turkish language strings.
  [Graphics]
  - Updated camera collision behavior: Scale the collision shifting based on
    the car speed such that the necessary scaling is only applied while racing,
    without introducing stuttering when the car is still.
  - Ensure all LODs are updated when setting clockwork body colors.
  - Hide HUD functionality is improved: Shift + F5 toggles HUD. Shift + Ctrl +
    F5 toggles menu.
  - Editor: Added Ctrl + P shortcut in visiboxes mode to refresh / preview the
    visibox behavior at any time. Visiboxes are otherwise refreshed upon saving
    the file.
  - Removed the GL prefix from rvgl.ini keys: 'GLProfile' is now 'Profile',
    and 'GLThreaded' is now 'Threaded'.
  [Audio]
  - Support up to 128 audio samples and 256 3D audio samples.
  - Allow the entire range of effects for sfx testing (Audio Settings).
  [Input]
  - Android: Configuring device with the Controller Map app automatically adds
    or updates the mapping in 'profiles\gamecontrollerdb.txt'.
  [Multi]
  - Shortcut to toggle ping display is now Ctrl + P.
Fix:
  [General]
  - Fixed potentially overflowing entries in Best Times menu when downloaded
     times are available.
  - Ensure best times are loaded upon track change when typing a search term.
  - Android: Fixed crash in Best Times menu and Time Trial mode.
  - Verify that the level and its reversed variant exists and ensure it is
     locked otherwise. Fixed crash in random tracks mode with missing levels.
  - Fixed objects limit in edit mode (now updated to 1024).
  - Fixed broken moving surfaces (conveyor belt) customization in
     properties.txt.
  [Graphics]
  - Show the correct player skin in Championship podium.
  - Editor: Fixed glitched lighting in lights mode (legacy renderer).
  - Shaders: Fixed broken visiboxes reload.
  [Input]
  - Android: Fixed glitch in Controller Map app when attempting to assign axes
     to A and B buttons.
  [Multi]
  - Fixed broken global star behavior: properly identify the star captured when
     the level has multiple stars.
--------------------------------------------------------------------------------
19.1001a:
Add:
  [General]
  - New level *.inf key CAMFORMAT to select the format to be used for saving
     the camera nodes file in edit mode (0 for old format or 1 for new, with new
     being default). This replaces the in-game message box query.
  - Improved ghost file format: the file header now includes the RVGL version
     number and date. A new "Ins:" flag is added to help deduce whether the
     record was done with instances on or off. Also brings car skin support for
     new records.
  - Added a new cheat code. It is also possible to disable previously used
     cheats by adding an '!' at the end (eg, 'CARNIVAL!' to disable cars cheat).
  [Multi]
  - Added support for pasting in chat (Ctrl + V).
Mod:
  [General]
  - Editor: Modern editor controls are improved. Operations using right click
     require holding Shift to avoid conflict with camera rotation. The camera
     no longer moves when using commands like Ctrl + S. New "chain-create-link"
     command using Ctrl + Shift + Click.
     It is now possible to move hovered nodes without having to select them. The
     behavior is improved for selecting racing lines at segment extremities.
  - Editor: Saving uses an in-game notification text instead of message box.
  - The following file limits were extended: Lights, Objects and Instance
     Models (1024). Maximum poly and vertex count for model and world meshes is
     now 65535.
  - Editor: Updated the car camera editor controls (Ctrl + C). Use numpad keys
     to move the camera and hold down Ctrl for more precise movement.
  - Improved Best Times Menu: Level search functionality is now usable. When a
     downloaded ghost file (*.lapdownload) is available, the time is shown
     highlighted in the records list.
  - Updated the clockwork grid layout for better spacing.
  - Removed outdated copyright info from credits.
  [Graphics]
  - The camera collision shifting behavior is tweaked to prevent stuttering
     when close to walls and objects.
  [Input]
  - Android: Improved touch navigation. Auto repeat support for horizontal
     scrolling. Touch region sizes are increased to prevent misses. Backspace is
     handled better when virtual keyboard is used.
Fix:
  [General]
  - Editor: Fixes for AI nodes priority range. Light RGB intensity can once
     again go from -1024 to 1024.
  - Fixed championship points sorting to ensure lower position comes first when
     points are equal.
  - Partial matches are no longer accepted for cheat codes.
  - Several safety and security fixes.
  [Graphics]
  - Fixed rare glitch involving blue flashing in levels using the piano.
  - Preserve alpha during vertex color operations (grayscale conversion and
     clockwork color randomization).
  [Multi]
  - Fixed potential deadlock or connection timeout in loading screen when
     GLThreaded is set to 0.
--------------------------------------------------------------------------------
19.0907a:
| Pumped network version.
Add:
  [General]
  - Sprint Tracks: New GAMETYPE 4 for sprint tracks (point A -> B). Tracks
     using this game type must also specify an ENDPOS defining the finish line,
     in the same format as the STARTPOS.
     The AI (*.fan) and Pos Nodes (*.pan) file formats have been updated to hold
     the ending node ID. The end node is deduced from the ENDPOS, just as the
     start node is deduced from the STARTPOS. These files must be re-saved
     whenever the STARTPOS or ENDPOS is changed. When the start and end nodes
     are different, the nodes do not have to form a loop.
  [Input]
  - Modern Editor Workflow: There is now optional support for a modern editor
     controls scheme and alternate camera controls, both of which are disabled
     by default. These can be enabled separately using new options under the
     Editor section in rvgl.ini:
     Set "LegacyCameraControls = 0" to access a modified WSAD set for camera
     movement along with same-direction Y-axis for mouse motion.
     Set "LegacyEditorControls = 0" to access the new and improved editor
     workflow. This is currently implemented for AI Nodes and Pos Nodes edit
     modes.
Mod:
  [General]
  - Level *.inf file parsing now uses the common utils parser similar to other
     text-based formats. This should make *.inf parsing more stable and bring
     consistency across the different text formats.
  [Graphics]
  - Shaders: Maximum supported on-screen generated polys (eg, sparks, dust) has
     increased to 65536. Also better optimized semi-transparency sorting.
  - The camera collision fix from the previous version is restored. This should
     improve camera behavior at high frame rates.
  - Editor: Visimasks are no longer updated per-frame in Visiboxes edit mode.
     They are updated when saving the file. This should improve performance.
  [Input]
  - Editor: Lens zoom support has improved. Rotation speed is now consistent
     across zoom levels. The scroll-wheel zoom speed can be controlled with the
     caps lock key. Also, zoom level is preserved when switching between F4 and
     F6 modes.
  - Editor: The in-game mouse cursor is 1:1 accurate with the system cursor.
     The cursor is hidden in camera rotation mode (with mouse right held).
Fix:
  [General]
  - Fixed overflow in Stunt Arena mode with more than 64 stars.
  - Editor: Fixed improperly initialized objects in nodes edit mode and ensure
     proper ranges for light Reach and RGB. Also fixed inability to set Zone ID
     above 255.
  - Editor: Fixed AI nodes flashing even after linking until the file is saved.
  [Graphics]
  - Editor: Fixed various glitches in shader mode. Transparent objects (eg,
     zone boxes) no longer flicker. Lines are now properly rendered over the 3D
     mesh. Working wireframe and AI debug render.
  - Editor: Fixed glitch in 3D text positioning in mirrored mode. Also fixed
     distance text over nodes with no links.
  - Editor: Fixed frame rate dependency in various editor mechanics including
     value selection and rotation.
  [Multi]
  - Fixed   key cars not moving in Frontend after using Back To Lobby.
  - Fixed   'Waiting For' bug when a game is started with no human players.
  - Fixed   cheating flags in session CSV saved out of order.
  - Fixed   bomb transfer bug affecting CPU cars.
--------------------------------------------------------------------------------
19.0819a:
| Pumped network version.
Add:
  [General]
  - New languages: Romanian and Turkish.
  - Added more gallery pages from Phippen's artwork.
  [Multi]
  - CPU cars are now supported in online multiplayer, enabled through Game
     Settings -> Multiplayer CPU. This works similar to split-screen mode.
Mod:
  [General]
  - Allow *.prm files along with their *.ncp to be customized through the
     custom folder (similar to *.m).
  - Updated assets: Includes fixed collision data for these levels (Toys in the
     Hood 2, Toy World 1, Museum 1 and Rooftops), and fixed track zones for
     Toytanic 2. Updated DC Pack (Rooftops).
  - Android: Continue checking other paths in case folder creation fails.
  [Graphics]
  - Uniform Buffer Objects are now disabled by default.
  - Removed frame rate dependent speed-up in Game Gauge mode.
  [Multi]
  - Cheating state is printed in the session CSV.
  - Disabled dev mode car reset (F10) in multiplayer.
Fix:
  [General]
  - Fixed potential crash when stock cars are missing.
  - Fixed crash in random cars mode when certain cars are removed.
  - Fixed path exploit in profile creation.
  - Editor: In AI Nodes mode, fixed start node detection and node distances
     computation when there are multiple zones with ID 0.
  - Editor: Fixed crash upon inserting or copying instance / object.
  [Graphics]
  - Fixed potential crash when switching windowed mode while loading.
  - Fixed text layout in Progress Table. Updated strings.
  - Fixed camera jitter when close to wall.
--------------------------------------------------------------------------------
19.0430a:
| Bug-fix release.
| Pumped network version.
Mod:
  [General]
  - Windows: Added manifest file for modern Windows compatibility. The manifest
     sets per-monitor DPI awareness mode. This makes it possible to select 4K
     resolutions without upscaling.
  [Multi]
  - Discord RPC now shows the currently played level name and time elapsed.
  - Flash on selected player in Waiting Room and make host unselectable.
Fix:
  [General]
  - Android: Fixed Controller Config menu width in Portrait mode.
  [Multi]
  - Fixed Hybrid P2P issues. Prevent P2P glitches when multiple LAN peers use
     conflicting local ports.
  - Fixed inconsistent race results after host goes back to lobby. Players are
     now made to wait for the host.
  - Fixed players getting skipped when switching views in spectator mode.
  - Fixed black screen when switching into spectator mode during reposition.
  - Fixed bad lap info shown when joining an ongoing race.
  - Fixed potential crash when quitting the session.
  - Prevent memory leak when packets get rejected.
  - Prevent autokick after going back to lobby.
  - Reject bad messages (better verification).
--------------------------------------------------------------------------------
19.0414a:
| Pumped network version.
Add:
  [Multi]
  - Hybrid P2P: Combines the best of P2P and centralized connection schemes.
     Players who are unable to establish a direct connection are linked together
     by the host through multicasting. The host can use '-nomulticast' command
     line to keep using pure P2P.
  - Better P2P management with features like prioritization, order swapping and
     retry attempts to improve the chances of establishing a successful direct
     connection.
Mod:
  [Multi]
  - Late joining is enabled by default (i.e., joining players can spectate an
     ongoing race instead of having to wait at the lobby). Host can use the
     '-nolatejoin' command line to keep this disabled.
  - Players without a direct P2P connection are displayed in dark gray at the
     Waiting Room.
Fix:
  [General]
  - Fixed player colors appearing white in multiplayer replays.
  - Fixed "Press Pause To Continue" message truncated in long translations.
--------------------------------------------------------------------------------
19.0330a:
| Pumped network version.
Add:
  [General]
  - Added command line '-printlog' to print log messages to the terminal.
  [Audio]
  - Jukebox Support: The MUSIC keyword in level .inf now accepts a folder path.
     The game selects a music track from the folder at random.
  [Multi]
  - Improved P2P: More robust P2P support and better handling of direct
    connections. Peers are properly synced before they initiate connections.
    Server side ordering ensures connections are routed to peers with a better
    chance of accepting them.
Mod:
  [General]
  - Update Czech and Slovak strings.
  [Multi]
  - The '-latejoin' command line now works in centralized mode.
  - Use direct multicast in centralized mode (better handling of lag).
  - Waiting Room always prioritizes Spectator state for consistency.
  - Remove unnecessary CHT over Random cars in Waiting Room.
  - Now use PgUp / PgDn to change pages at the player list.
  - Better ping info with '-showping' and better network logs.
  - Mute session log file from repeatedly showing up in the game log.
  - In-game player colors now match the chat colors.
Fix:
  [General]
  - Fixed podium cars jumping too high at high frame rates.
  - Fixed glitch when manually resetting the car (F10) in dev mode.
  [Graphics]
  - Fixed broken antenna motion blur at high frame rates.
  - Ensure that the game window is cleared at startup.
  [Multi]
  - Fixed Battle Tag time position in spectator mode.
  - Fixed font file freed improperly when restarting a multiplayer replay.
  - Prevent timeouts when joining by lobby and potential race conditions when
     several peers join at the same time.
--------------------------------------------------------------------------------
19.0320a:
| Pumped network version.
Add:
  [General]
  - Added Slovak language and updated Czech translation.
  [Graphics]
  - Shaders: The number of lights / effects affecting each mesh is configurable
     through rvgl.ini options: ShaderLights, ShaderShadows, ShaderEffects (upto
     16 each). Defaults to 8 lights, 4 shadow boxes and 4 mesh effects.
  [Multi]
  - Chat messages log: The '-sessionlog' option now captures chat messages,
     saved to a multiplayer event log (session_xxx.log file) along with the csv.
  - Added command line '-hidechat' to hide in-game chat messages. These can be
     seen by pressing TAB or F12.
Mod:
  [General]
  - Improved session log: Player best lap times are saved to the session log.
     Also, the logs are created once for each session (i.e., Back To Lobby no
     longer creates a new file).
  [Graphics]
  - Support for generic texture compression when S3TC extensions not available.
  - Shaders: Renamed the 'SortLevel' rvgl.ini option to 'AlphaSort'.
  [Input]
  - Non-linear steering option can now be configured for keyboard and mouse.
  [Multi]
  - The race results table is now shown for spectator players.
  - Best lap and race times are now communicated through the server (prevents
    inconsistent results for P2P clients).
  - Improved network logs and now logs weapon data packets.
  - Restored client-side weapon computation in centralized mode.
  - Updated player colors for consistency.
Fix:
  [General]
  - Fixed disabled objects appearing in multiplayer replay.
  - Fixed issues with camera and force feedback at high frame rates.
  - Ensure physics and AI computations are not run when game paused.
  [Graphics]
  - Better handling of high frame rates: the game animations now use a variable
     timestep, with an internal limit of 250 fps. Fixes stuttering with v-sync
     off while keeping game stable even in previously unsupported cases (broken
     v-sync, high monitor refresh rates, etc).
  - Fixed sporadic glitches in the Probe intro animation.
  - Shaders: Fixed credits display in 'gimmecredits' mode.
  [Audio]
  - More consistent position updates and velocity computations for the 3D audio
     and doppler effects.
  [Multi]
  - Fixed broken late joining support in P2P mode.
  - Fixed player stuck in 'Not Ready' mode after going back to lobby.
  - Fixed potential overflow when typing chat messages with unicode characters.
  - Reject high pings during game sync (prevent bad starts).
--------------------------------------------------------------------------------
19.0301a:
| Pumped network version.
Add:
  [General]
  - New profile.ini key 'Difficulty' to adjust the AI difficulty level for
     single races (0: Very Easy, 1: Easy, 2: Medium, 3: Hard).
  - New command line '-chdir <path>' to set the working directory (i.e., change
     where the game looks for assets).
  [Graphics]
  - New rvgl.ini key 'GLThreaded' to configure whether to use multi-threaded
     OpenGL support for assets loading (disabling causes all GPU assets to be
     loaded from the main thread).
Mod:
  [General]
  - Android: AI catchup enabled by default on new profiles.
  [Graphics]
  - Restored Visibox Headers limit to 64.
  - Host Computer menu uses full text width for IP text.
  [Multi]
  - Better lag management and tighter car and object animation.
  - IP text is trimmed of leading and trailing spaces when pasting.
  - Mode text in session log file no longer uses localization.
Fix:
  [General]
  - Fixed blinking 'Spectator' display in Calc Stats mode.
  - Fixed alignment in Best Times menu with unicode text.
  [Graphics]
  - Shaders: Glitch with semi-transparent surfaces in Museum 2 planetarium.
  - Windows: Potential flickering in fullscreen when configuring mouse inputs.
  - Fixed darker menus when viewing replays saved as spectator.
  - Prevent possible stuttering at loading screen.
  [Multi]
  - Ensure default level exists. Fixed crash with host starting Rooftops and no
    DC Pack installed.
  - Electro zap impact displayed properly on remote cars (centralized mode).
  - Glitch with in-game lobby menu when resizing the window.
--------------------------------------------------------------------------------
19.0210a:
| Pumped network version.
Add:
  [General]
  - New profile.ini key 'AnimateRearView' to disable the animation during rear
     view transition.
  - New parameters.txt keys 'FixedOffset' and 'FixedLook' in CAMATTACHED
     section to configure whether the hood / rearview camera is fixed or allowed
     to move.
  - New symbols in font file for bullet point (•) and double dagger (‡).
  [Video]
  - Better support for legacy OpenGL devices (1.1 and above).
  - Texture compression support: New rvgl.ini key 'CompressTextures' to enable
     S3TC (DXT5) compression for all textures.
  [Input]
  - Mouse navigation support: mouse axes and buttons (including mouse wheel)
     can now be configured for gameplay. Mouse cursor is automatically captured
     when using mouse mode.
  [Multi]
  - New command line '-showping' to access ping display (Ctrl + Numpad Enter)
     even without dev mode.
  - New command line '-savereplays' to automatically save replays in
     multiplayer.
Mod:
  [General]
  - Car skin selections are now saved in replay file (breaks compatibility with
     existing replay files). Also updated game_gauge_replay file.
  - Replay selection menu provides more space for level name.
  [Graphics]
  - Shaders: Memory allocation for buffers is done at run-time (should result
     in reduced memory consumption when shaders are not used). Also added safety
     checks to prevent potential crashes during buffer loading.
  - Shaders: Updated texture page sorting and optimization to take into account
     more than 10 level textures.
  - Shaders: Ensure alpha testing turned off for reflective surfaces.
  - Updated video caps info log.
  [Input]
  - Numpad Enter can now be used in the menus.
  - Reset Controls option is moved into Config Controls menu.
  [Multi]
  - Car skins are now synchronized when using random cars mode.
  - Session log file now specifies the network mode (P2P / Centralized) and
     player type (Server / Client).
  - Lagging remote cars (those displayed as ghost) have collisions disabled.
  - When using centralized connection ('-nop2p'), bomb, electropulse and Battle
    Tag star transfer are now server controlled.
  - Waiting Room shows Mode for collision type and On / Off for pickups.
Fix:
  [General]
  - Fixed level length not updated in Select Replay and Overview menu.
  - Fixed missing menu entries when going back from Select Replay menu.
  - Fixed crashes when playing back bad replay data.
  - Fixed Time Trial 'beaten' progress not saved for custom tracks.
  - Fixed level search filter still active in Best Times menu.
  [Graphics]
  - Fixed missing instances at Create Profile screen.
  - Fixed greyed out 'Unknown' resolution in Video Settings.
  - Ensure 'rvgl.ini' is always created (eg, upon video errors).
  - Shaders: Attempted fix for UBO glitches on certain GPUs.
  - Shaders: Fixed glitch rendering transparent meshes (eg, Ranch waterfall).
  - Shaders: Fixed transparent poly count not updated in debug display (F9).
  - Android: Fixed car selection screen cut off in Portrait mode.
  [Input]
  - Better conflict prevention between menu and in-game controls.
  - Fixed non-working force feedback in multiplayer and spectator mode.
  - Fixed glitch when typing vertical bar (|) in chat.
  [Multi]
  - Ensure random cars and tracks option is saved on going back to lobby.
  - Ensure sound effects paused during client restart in multiplayer.
--------------------------------------------------------------------------------
19.0120a:
| Pumped network version.
Add:
  [General]
  - Improved Replays Support: Replays are timestamped and saved to 'replays'
     folder upon using Save Replay. These are accessible from Options -> View
     Replay. Further, replays are now available in Championship and Multi-Player
     mode (including Spectator mode).
  - Custom Frontend Support: Added support for authoring frontend levels by
     setting 'GAMETYPE 3' in the level inf file. Properties like camera
     positions can be overridden through a 'frontend.txt' file placed in the
     level folder. Available frontends are accessible from Options menu. For
     more info, see the online documentation.
  - Added Serbian and Czech language translations.
  - Unicode: Added support for combining characters and additional characters
     for Arabic and Hebrew romanization.
  - Added '-nodemo' command line to disable screensaver mode in main menu.
  [Graphics]
  - Additional Level Textures: Support for up to 64 level textures with an
     extended naming scheme. Texture names can range from __a.bmp to __z.bmp,
     then __aa.bmp to __za.bmp, __ab.bmp to __lb.bmp. There should be no gap
     inbetween the sequence after j (eg, __k.bmp, __m.bmp is invalid).
Mod:
  [General]
  - Extended various level file limits: AI Nodes, Pos Nodes, Cam Nodes (4096);
     AI Zones, Fields, Triggers, Instances, Visiboxes, Portals (1024); Lights,
     Objects, Instance Models, Visibox Headers (256).
  - Improved Replay file format: support for dynamic replay file size based on
    stored data. The maximum limit is capped at 16MB. The frequency of player
    position updates is increased to prevent possible desync.
  - Replay can be saved multiple times without terminating the recording.
  - Automatically terminate replay recording after all players finish.
  - Replay: Added Hood and Rear camera views to the random selection.
  - Replay: Up / Down changes car view by position (similar to Spectator mode).
  - Renamed and re-saved Game Gauge replay file in new format.
  - Simplified CPU car recovery behavior for handling reposition.
  - Updated Polish language strings with diacritics.
  - Updated copyright year in the intro screen.
  - Android: Added '/storage/extSdCard' to list of search paths.
  - Shader builds are now included in this changelog.
  [Graphics]
  - Level Properties: Values accepted by TexturePage parameter are restricted
    to prevent support breaking in future. 0-46 are world textures, 47-49 are
    fxpage[1-3] and higher values are unsupported.
  - Custom support: Texture files 'gfx\acclaim.bmp' and 'cars\misc\shadow.bmp'
    are now customizable.
  - Moved the default carbox textures to 'cars\misc\carbox[1-5].bmp', menu
    title images to 'gfx\spruimage.bmp' and made them customizable.
  - Updated j character in the font file to support diacritics.
  - Warn in log file about bad TPage values in World and Model files.
  [Multi]
  - Use hardware timer to re-seed the Random Number Generator for multiplayer
    games (should result in better quality of randomization).
Fix:
  [General]
  - Level Properties: Security fixes for properties.txt parsing. Properly parse
     the 'Name' key and fix boolean keys not set properly (i.e., setting a key
     to false previously had no effect).
  - Replay: Fixed loaded replay not using correct settings (mirrored, etc).
  - Replay: Ensure recording is stopped after termination.
  - Fixed some custom cars (eg, Bendor) not starting in Calc Stats mode.
  - Fixed PgUp / PgDn not working in Calc Stats mode.
  - Fixed various glitches when Frontend level is started as a track.
  - Fixed AI zone computation for finding the closest player.
  [Graphics]
  - Fixed mipmap loading behavior to always check for *.bmp first.
  - Fixed glitchy rotation of aerial tips when using an asymmetrical model.
  - Ensure Stunt Arena track image does not show flipped or mirrored.
--------------------------------------------------------------------------------
18.1126a:
| Pumped network version.
Add:
  [General]
  - New language strings syntax: The language name and locale are now specified
     using escape sequences \LN and \LC, with the following syntax:
     \LN<Language Name>
     \LC<Language Locale>
     Existing language files are updated to use the new format.
  - Locale support: Language text case conversions are now locale-aware. Eg, i
     is capitalized to İ in Turkish locale and I in other locales. The locale is
     specified as an ISO 639-1 language code in the strings file.
  - Extended support for Latin alphabets. Additional characters for Turkish,
    Slovak, Bavarian, Welsh, Livonian and Vietnamese, and Romanisation schemes
    for Indic, Slavic, Greek, Georgian and Armenian. Title font now supports
    apostrophe.
Mod:
  [General]
  - Linux: The 'fix_cases' script now skips the licenses folder.
  - Now includes world files optimized for the shader renderer for all default
     levels. Also updated DC Pack (Rooftops).
  - Updated Italian strings.
  [Graphics]
  - Shaders: Optimized GPU upload of mirrored world meshes for large levels.
  - Improved rendering of the Vietnamese horn diacritic.
  [Multi]
  - Updated text colors for player chat messages.
Fix:
  [General]
  - A collision issue affecting certain animated objects such as the Market 2
     sliders has been fixed. The behavior of the sliding door animation upon
     pause / resume is also improved.
  [Graphics]
  - Shaders: Fixed vertical fog cutoff (objects visible in reflection beyond
     the specified mirror height). Updated shaders.
  - Fixed glitch / crash with the legacy renderer when a reflective surface and
     waterbox are used together.
  [Multi]
  - Fixed menu inputs not working in the in-game lobby (TAB) screen.
--------------------------------------------------------------------------------
18.1112a:
| Bug-fix release.
| Pumped network version.
Add:
  [General]
  - Added Lithuanian language, contributed by Vaid.
  - New profile.ini setting RandomSkins to toggle the randomization of CPU and
     Random Cars skins (enabled by default).
Fix:
  [General]
  - Fixed truncation issue when parsing parameters containing extended ASCII.
  [Multi]
  - Removed ability to join ongoing race after using Back To Lobby.
  - Fixed cases where player status is not updated after loading (eg, Spectator
     player allowed to race).
  - Fixed camera view stuck after loading in Spectator mode.
  - Fixed possible blank name and car displayed in Waiting Room.
  - Fixed 'Room Full' shown after using Back To Lobby even when holding a slot.
  - Fixed CHT and autokick if a player loads level while host is back in lobby.
  - Ensure player is always in 'Ready' state when launching game.
--------------------------------------------------------------------------------
18.1110a:
| Pumped network version.
Add:
  [General]
  - Unicode support: The game internals are now fully UTF-8 aware, replacing
     the previously used Windows-1252 (ASCII) encoding.
  - Wide character support on Windows: Filesystem calls on Windows use wide
     variants. Unicode filenames are now accessible, complementing UTF-8 support
     on Linux.
  [Graphics]
  - Improved Font: Added new characters and symbols taking advantage of Unicode
     support. The following additional Latin alphabets are supported: Hungarian,
     Romanian, Polish, Lithuanian, Latvian, Czech, Croatian, Turkish and
     Vietnamese.
  [Multi]
  - Back To Lobby in-game menu option to go back to Frontend without quitting
     the online session. This allows players to change their name and car. It
     also allows the host to re-launch the session with new settings, such as
     different number of laps.
  - New Waiting Room command Ctrl-A that allows the host to force a player into
     active state.
Mod:
  [General]
  - Skins support: CPU car skins are now randomized. Skins are also randomized
     in Random Cars mode.
  - Linux: Discord RPC code is disabled in 32-bit binaries. This avoids a GLIBC
     2.28 dependency. Also reverted some included libs to previous versions.
  - The log file entries now use UTF-8 encoding.
  - Language files are now resaved in UTF-8 encoding.
  - The new line '\n' in language strings now implies line return '\r'.
  [Graphics]
  - Updated font texture to redraw some characters and remove UV offset.
  - The font and fxpage2 textures are resaved to make alpha channel readable by
     image viewers and editors.
  [Input]
  - Player names and profile names accept Unicode characters.
  - Content search keywords accept Unicode characters.
  [Multi]
  - Player status behavior: 'Not Ready' players no longer give up their active
     slot. The default state for new players is 'Spectator'.
  - When a player is selected in Waiting Room, the 'Spectator' state is
     prioritized over 'Ready' state. This allows the host to use kick / assign
     commands appropriately.
  - Chat message length is UTF-8 aware. The entire range of 45 characters can
     be reached when typing Unicode characters.
  - Session log CSV file now adds version entry to the header.
Fix:
  [Graphics]
  - Android: Fixed broken save screenshot (F8) option.
  - Fixed possible text overflow out of spru box in Game Settings.
  [Multi]
  - Fixed glitch displaying number of laps above 127 in Waiting Room.
--------------------------------------------------------------------------------
18.1020a:
Add:
  [General]
  - Add license files for RVGL and its dependencies, now providing proper
    attribution for libraries used / included with the game - see "licenses"
    folder. RVGL redistributables are themselves covered by CC-BY-NC-SA.
  [Graphics]
  - SVG textures support (provided by SDL_image 2.0.3).
  - Android: Adaptive icons support for Oreo and above.
  [Audio]
  - Experimental support for FluidSynth (MIDI) playback. The game looks for a
    soundfont placed in "soundfonts\default.sf2". Not supported on Android.
  - Android: FLAC playback support.
  [Input]
  - Android: New "Controller Map" app that allows generating SDL GameController
    mappings for controllers. The mappings can be retrieved from the log at:
    "profiles\gamecontroller_log.txt" and added to the db file.
Mod:
  [General]
  - Android: FPU / NEON optimizations enabled where applicable for aarch64 and
     x86 builds (eg, for image, audio decoding).
  - Android: Several external components are now loaded as shared objects.
  - Windows: Audio libs now use file name versioning (i.e., libFLAC-8.dll
     instead of libFLAC.dll).
  - Windows: Major update of provided libraries: SDL_image 2.0.3, OpenAL Soft
     1.19.0, ENet 1.3.13, updated image and audio libs.
  - Linux: Statically link to libstdc++ (compatible with old distros).
  - Linux: Updated scripts. Massive optimization of 'fix_cases' script using
     Bash 4 globstar support and parameter expansion. Also simplified working
     directory resolution. The 'setup' script uses Yes / No confirmation, and
     ensures that the .desktop file path exists.
  - Updated language strings.
  [Graphics]
  - V-sync is on by default for new installations.
  - The shader renderer is now enabled by default.
  - TEXTUREPROPS colorkey attribute now has effect on legacy renderer.
  - Render Settings "Particles" option now has effect for spark generators.
  - Spark generators are now affected by visiboxes.
  [Audio]
  - Android: 32-bit armeabi and armeabi-v7a now use Integer decoding for OGG
     Vorbis (Tremor) and MP3 playback.
  [Input]
  - Controller Settings displays the Game Controller name when available.
  - Game Controller mapping is now logged to the log file.
  - Maximum number of supported joystick buttons is now 100 (eg, Android
     reports 36 buttons).
  - The behavior of rejecting broken axes at Controller Config menu is restored
     for legacy joysticks.
  - Ensure flush upon joystick remove to prevent stray inputs from a removed
     controller.
  - Android: Support for Back button on the device to pause the game, skip the
     intro screens, etc.
  - Support for Keyboard Pause / Break button to pause the game.
Fix:
  [General]
  - Fixed profile created upon going back from Create Profile screen. Also
     simplified the "Profile Already Exists" message string.
  [Graphics]
  - Windows Setup: Fixed font creation flags to use sans serif.
  - Fixed display mode showing "Windowed" in fullscreen. Now shows "Unknown" if
    mode cannot be detected.
  - Fixed HUD radar spru size in split-screen and touch modes (long car names
    touching the border).
  - Fixed "challenge beaten" and "final lap" message text and spru flashing
    unsynchronized, which can be disorienting.
  - Shaders: Fixed crash when loading levels with a large number of texture
    animation pages (eg, Slippery Slope).
  [Audio]
  - Fixed Alure library functions that return without doing anything when an
    existing OpenAL error was detected. Should solve audio / music not paused.
  [Input]
  - Android: Fixed various glitches in Controller Settings menu that prevented
    controllers from being configured.
  - Ensure joystick and force feedback devices are properly re-initialized to
    prevent potential crashes.
--------------------------------------------------------------------------------
18.0731a:
| Pumped network version.
Add:
  [Multi]
  - Discord Rich Presence support: announce and join games from the Discord
     client. A new rvgl.ini key "DiscordRPC" under the Network section can be
     used to disable this feature. A custom URI for the game is registered by
     the RVGL setup for Windows and the Linux 'setup' script. To manually
     register the URI, run RVGL with the '-register' command line.
Mod:
  [General]
  - Changed inf keywords behavior for reversed mode: if a reversed\<level>.inf
     is found, normal keywords are taken from the file. REV keywords are used
     only when no reversed\<level>.inf is found.
Fix:
  [Graphics]
  - Fixed crash with UBO upon new level load.
  - Fixed viewport scaling in lobby launch screen.
  - Android: Fixed text scaling in the Gallery screen.
--------------------------------------------------------------------------------
18.0725a:
| Bug-fix release.
Add:
  [Graphics]
  - New rvgl.ini key "EnableFBO" that toggles the use of Frame Buffer Objects
     for multisampling. When disabled, the "Antialias" key controls native
     window multisampling, which is more efficient and has wider support on
     embedded GPUs. FBO is disabled by default on Android.
  - Antialias support on ANGLE: FBO-backed multisampling is now supported on
     the ANGLE backend when available.
Mod:
  [Graphics]
  - Updated video info log: prints the window format and various GL limits.
  - Render Settings displays proper Antialias level when FBO is not used.
Fix:
  [General]
  - Fixed aarch64 detected as x86 in debug log.
  [Graphics]
  - Fixed crash on rendering the first frame with UBO.
  - Fixed fog and reflection glitches with UBO.
  - Fixed frame buffer multisampling on GLES3.
  - Fixed issues with video capture when Antialias on.
  - Workaround shader compilation error with SSO on Linux.
--------------------------------------------------------------------------------
18.0720a:
| Pumped network version.
Add:
  [General]
  - Improved support for reverse tracks: all supported levels files (.w, .ncp,
     .fob, etc.) and a few level graphics can now have reverse variants placed
     in the "reversed" or "custom\reversed" folder. If one of these files is not
     present, the game will fall back to the normal version of the file.
     All supported <level>.inf keywords can be customized for reverse through
     reversed\<level>.inf. The only exceptions are STARTPOS, STARTROT and
     STARTGRID which must use their REV variants.
  - New profile.ini setting WeaponCam to enable the weapon target in-set cam
     used for fireworks (disabled by default).
  - Added Basque language.
  [Graphics]
  - Support for new OpenGL functionality: Uniform Buffer Objects and Separate
     Shader Objects. These can be disabled through new rvgl.ini keys "EnableUBO"
     and "EnableSSO".
  - Improved translucency sorting: better handling of sparks, skidmarks and
     dust effects. New rvgl.ini key "SortLevel" to switch between complex and
     minimal sorting schemes.
  - Android: Ultra wide aspect ratio support.
Mod:
  [General]
  - Android: Increased target API level to 21 for compatibility with Android P.
  - Avoid repeated error messages on shader compilation failure.
  - Does not enable shared OpenGL context when using silent load.
  - Show confirmation message for Save Car Info in-game option (dev mode).
  - The log file mentions CPU architecture info (x86 or arm).
  - Updated video caps info log.
  [Graphics]
  - Improved performance with shaders: better shader generation and avoids
     dynamic branching where possible. Split lights and shadow box handling (8
     lights and 3 shadow boxes).
  - Android: Better disclaimer text scaling at the intro screen.
  [Input]
  - Support multiple gamecontrollerdb files for different SDL2 versions.
Fix:
  [General]
  - Android: Ensure on-screen keyboard shown after dismissing message box.
  - Shaders: Fixed crash in Objects edit mode on quiting Preview.
  [Graphics]
  - Fixed pure-black issues in BossVolt texture.
  - Shaders: Fixed lighting glitch in car springs and other parts.
  - Shaders: Fixed glitch in reflections of additive blended meshes (Market1
    fluoroscent lights).
  - Fixed broken Antialias support on GLES3 mobile devices.
  - Fixed firework target disappearing in Chase camera view.
  - Fixed transparency issues and invisible nodes in edit mode.
  - Fixed lines visible through walls in edit mode.
--------------------------------------------------------------------------------
18.0514a:
| Bug-fix release.
Mod:
  [Graphics]
  - Updated shaders: more compliant with newer GLSL standards, support for
     integer operations when available.
  - Updated resources: the game window sets the proper class name and hi-res
     icon on Windows and Linux (eg, for the Alt-Tab switcher). Gfx assets are
     re-saved in newer bitmap format for better compatibility with Linux image
     viewers.
  - Updated ANGLE libs: new custom built ANGLE libs and d3dcompiler modules
     with better compatibility and Windows XP / Vista support.
  - Anisotropy support is now also detected from core OpenGL 4.6 and the
     corresponding ARB extension.
Fix:
  [General]
  - Fixed skin selector showing up wrongly in split-screen.
  - Fixed potential buffer overflow cases in car params parsing and huge memory
     consumption caused by empty params file.
  [Graphics]
  - Fixed broken mesh effects in shader mode.
  - Fixed potential crash at loading, especially with ANGLE backend.
  [Input]
  - Android: Fixed freeze and looping "honk" sound at the main menu when
     controllers or hardware keyboard is used.
--------------------------------------------------------------------------------
18.0504a:
| Bug-fix release.
| Pumped network version.
Add:
  [Graphics]
  - The proper Video Device name is displayed in Video Settings. New Video
     Renderer entry shows the backend (OpenGL / Direct3D) and rendering mode
     (Shader / Legacy) in use.
Mod:
  [Graphics]
  - The shader mode has improved mesh updates that prevent freezes (eg, during
     bomb explosion) with large and poorly optimized world files.
  - Updated lights and effects shaders: loops are no longer unrolled manually,
     should result in faster shader compilation on mobiles and compatibility
     with older mobile GPUs.
  - Brightness / Contrast sliders in Video Settings now use steps of 5.
  [Input]
  - Controller names are no longer prefixed with "Joystick".
  - Android: Hardware keyboard / controller inputs are enabled in menus.
  - Android: Updated SDL GameController database.
Fix:
  [General]
  - Android: Fixed glitch in pickup randomizer after the app is restarted.
  - Updated DC textures - remove white dot in FulonX carbox.
  - Fixed BigVolt / BossVolt shadow table values.
  [Graphics]
  - Fixed rain rendering in legacy mode.
  - Fixed 3D text showing through walls in legacy mode.
  - Android: Fixed touch highlights in legacy mode.
--------------------------------------------------------------------------------
18.0428a:
Add:
  [Graphics]
  - Shader mode: The shader edition is now part of the usual alpha builds,
     selectable through an ini option. To switch between the shader and fixed
     pipeline (legacy) renderer, use the 'Shaders' key in rvgl.ini. The
     "-noshader" command line can be used to force the legacy renderer when
     shader mode is enabled through the ini.
  - Texture properties: New level .inf keyword TEXTUREPROPS to set various
     level per-texture properties. Syntax is 'TEXTUREPROPS 3 1 0 1', with four
     values specifying the index (0-9), mipmapping (0-disable / 1-enable), wrap
     mode (0-clamp / 1-repeat) and colorkeying (0-disable / 1-auto).
Mod:
  [General]
  - Save Car Info option now uses Windows (CRLF) line endings.
  - More intuitive error message when language files are out of date.
  [Graphics]
  - Removed the 8192x8192 upper limit on texture size.
Fix:
  [General]
  - Message boxes should no longer minimize the game window on Linux.
  - Android: Fixed text widths in the car selection screen.
  - Win in a "single car race" is no longer counted for progress.
--------------------------------------------------------------------------------
18.0416a:
18.0416s:
| Pumped network version.
Mod:
  [General]
  - Skins support: carbox files rejection is now based on the params file
     TCARBOX entry - eg, if TCARBOX points to "box.bmp", then "box.bmp",
     "box256.bmp", "box-alt.bmp" are rejected.
  - Moved "Final Lap" box more towards the top of the screen.
  - Save Replay option is now available when viewing a replay.
  - Improved Save Car Info option: better formatting, adds missing sections and
     original params are now signed.
  [Multi]
  - Increased maximum connections to 24 (16 players and 8 spectators).
Fix:
  [General]
  - Fixed wrong cars showing up in a saved replay after adding / removing
     custom cars. Existing replays need to be re-saved for this fix to work.
  - Fixed "Final Lap" message appearing in Practice mode and when switching
     between players in spectator mode.
  [Audio]
  - Fixed music not stopped at the end of a replay.
  [Multi]
  - More robust net code. Fixed potential crashes when receiving corrupt or
     hand crafted messages over the network (eg, from a third party dedicated
     server tool).
--------------------------------------------------------------------------------
18.0410a:
18.0410s:
Add:
  [General]
  - The DC pack is updated to include alternate skins based on the PSX version
     for some of the cars, designed by Strinabre.
  - "Final Lap!" message. This can be disabled with a new 'FinalLapMsg' key in
     profile.ini.
Mod:
  [General]
  - Spinner Axis provided in the car params is now normalized (improves support
     for rotation along multiple axes).
  - Next Track in-game menu option is now available in single race modes.
  - Car skins are now sorted (ensure same order at each RVGL start).
  - Updated language strings.
Fix:
  [General]
  - Skins support: properly reject carbox files on Windows.
  - Android: Fixed crash when quiting from the main menu.
  - Fixed potential divide-by-zero in vector normalization code.
  [Multi]
  - Local player's skin is loaded properly even if host doesn't have it.
--------------------------------------------------------------------------------
18.0330a:
18.0330s:
| Pumped network version.
Add:
  [General]
  - Car skins support: Support for additional skins for each car, selectable at
     the car preview screen. Skins are detected based on a suffix system, i.e.,
     if the TPAGE points to 'car.bmp', then 'caror.bmp', 'car1.bmp' and
     'car-bleh.bmp' are valid skins. Special names like 'carbox.bmp' are
     skipped. The suffix length is limited to 11 characters.
  - Custom car engine sfx: New parameters.txt keyword SFXENGINE '<path>' to use
     a custom engine sound for a car. The way the engine sound is used by the
     game depends on the car class (Electric or Glow).
  - Custom challenge times: Custom tracks can now set challenge times to be
    beaten in Time Trial. New level *.inf keywords CHALLENGE and CHALLENGEREV
    with the format: 'CHALLENGE 0 54 0' (3 values for min, sec, ms).
  - Dreamcast championship mode: New profile.ini key 'CupDC' that can be used
    to enable Dreamcast mode for the Championship cups. This brings Rooftops
    and DC cars to the cups. Requires the DC Pack to be installed.
  - Android: Add Camera View option in Game Settings.
  [Input]
  - Android: Add Controller Settings menu to configure the hardware keyboard or
    wireless controllers if available.
  - Android: Button Opacity can now be changed from the Controller Settings.
Mod:
  [General]
  - Android: When tapping on the level name, level modes are now switched in
     progress table order (Normal,R,M,RM).
  - Android: Time Trial now displays the Record time at the top right corner
     (after challenge time has been beaten).
  - Android: Add new emulated storage paths (eg, "storage/emulated/0").
  - Android: APK now displays the proper version number.
  [Graphics]
  - Android: Rearview in-set camera (F2) is kept disabled at start (can still
     be enabled with a hardware keyboard).
Fix:
  [General]
  - Android: Fixed custom cars and tracks hanging the game forever (happens
     with certain *.inf / parameters.txt files that end without a newline).
  - Strip trailing spaces in language files (fixed bad padding).
  [Graphics]
  - Android: Fixed broken per-instance shading (RgbPer).
  - Shaders: Fixed shader compilation errors with some ATI drivers.
  [Audio]
  - Android: MP3 music is now enabled.
--------------------------------------------------------------------------------
18.0315a:
18.0315s:
| Bug-fix release.
Add:
  [Graphics]
  - Shaders caching: Compiled shader executables are cached to avoid having to
     re-compile them on each run. Enabled on both desktop and mobiles. Cached
     binaries are stored in the RVGL folder, in "shaders\cache". Caches are
     compared against the shader sources and automatically rejected if found out
     of date.
Mod:
  [General]
  - Improved Android support.
  - Windows and Android now use SDL 2.0.8.
  - Updated SDL GameController database.
  [Graphics]
  - Maintain Aspect setting now takes effect immediately.
  - Moved V-Sync option to Video Settings.
  - Additional video info logs in sync with shader edition.
  - Shaders: Antialiasing available on GLES3 mobile hardware.
  - Shaders: Better handling of world buffer updates (for bomb explosions).
Fix:
  [Graphics]
  - Shaders: Fixed Museum 2 stars sporadically disappearing.
  [Multi]
  - Fixed chat messages overlapping race results.
  - Fixed chat messages length in waiting room.
--------------------------------------------------------------------------------
18.0310a:
18.0310s:
| Pumped network version.
Add:
  [General]
  - Android support: RVGL is now available on Android 2.x and above on both
     32-bit and 64-bit arm and x86 targets. The game data should be placed in an
     RVGL folder on the device's internal storage (eg, "/storage/sdcard0/RVGL").
  - Touch support: New touch UI and virtual joypad support with updated HUD and
     menu screens. Currently enabled only on Android. This release includes
     touch overlay buttons designed by RV Passion.
  [Graphics]
  - OpenGL ES 1.1 support for fixed pipeline rendering on OpenPandora, Android
     and Linux based legacy handheld devices.
  - New rvgl.ini setting 'EffectFlag' to toggle mesh effects. Only used by the
     shader edition to turn off complex effect shaders on old hardware.
  [Multi]
  - New "-serverport <number>" command line that can be set to use a different
     server port from 2310. When the host uses a custom server port, all clients
     will need to use the same server port to be able to connect to that host.
  - Password support: new command line "-pass <phrase>" to protect the session
     with a password. The passphrase can be upto 255 characters in length and
     cannot contain spaces.
Mod:
  [General]
  - Increased instances limit to 1024.
  - Updated language files for touch support.
  - Additional log info for android support.
  - Updated credits.
  [Graphics]
  - Shaders: Per-poly visimasks support.
Fix:
  [Graphics]
  - Fixed glitch with ball bearing when shininess is turned off.
  - Fixed render settings overrides not working in frontend.
  - Attempt to fix untextured polys not rendered on some devices.
  - Shaders: Static lights (from .lit file) not working on instances.
  - Shaders: Fixed fluorescent light reflections in Market1.
  - Shaders: Fixed crash in instances edit mode.
  - Shaders: Invisible 3D text in edit mode.
  - Shaders: Fixed shader compilation error on some devices.
  - Shaders: Lights and shininess not working during reposition.
  [Audio]
  - Music stops after changing music volume when playing custom music.
  - Inablity to use custom music on stock tracks.
--------------------------------------------------------------------------------
17.1222a:
17.1222s:
| Bug-fix release.
| Pumped network version.
Mod:
  [General]
  - Removed unused GLEW libraries.
  - Updated language files for latest version.
  - Better detection for corrupt language files.
  [Multi]
  - Spectator players are no longer affected by autokick.
  - Late joining and not-ready players are not automatically launched upon
     reaching the waiting room. They can launch by pressing TAB when ready.
  - Disabled "reload car" dev mode option in multiplayer.
Fix:
  [General]
  - Fixed early countdown in single-player when loading takes a while.
  - Fixed difficulty mode getting reset in Practice mode.
  [Multi]
  - Fixed alignment issues that resulted in incompatibility between 32-bit
     Linux build and other versions (eg, weapons not working).
  - Fixed camera view not updated in late-join mode until the player list
     screen is dismissed.
  - Fixed possibility of bad lap count and radar values when late joining.
--------------------------------------------------------------------------------
17.1218a:
17.1218s:
| Bug-fix release.
| Pumped network version.
Add:
  [Multi]
  - Added command line "-latejoin" that can be set by the host to allow players
     to jump into an ongoing race. This is only supported in P2P mode.
  - The host can use Ctrl + C keyboard shortcut to copy the public IP address
     displayed in the top right corner.
Mod:
  [Graphics]
  - Window events are now processed during the load screen. This allows players
     to minimize / maximize / resize the RVGL window while loading.
  - The inset cams (F2 and F3) are now hidden when using panel hide feature.
  - Shaders: Optimized shader code and buffer updates. Shaders are generated
     based on the enabled render settings (lights / reflections / environment).
  - Shaders: Edit modes support (lines, nodes, edit objects drawn properly).
Fix:
  [General]
  - Fixed potential crash when world polys use an improper texture anim slot.
  - Attempt a fix for crash experienced by some users when restarting the race
     after using a freeform camera.
  [Graphics]
  - Fixed potential flickering / black lines at loading screen.
  - Fixed black screen after repositioning in some cases.
  - Particles setting not taking effect from in-game Render Settings.
  - Ensure split-screen cameras are updated properly when game is paused.
  - Fixed stray weapon counter displayed in split-screen after race finish.
  - Shaders: Slight flicker when using weapons like battery or electro pulse.
  - Shaders: Text disappearing when there is a lot of text.
  - Shaders: Player names showing through walls and opaque surfaces.
  - Shaders: Fixed issues with models scaling, eg, in "small cars" mode.
  [Multi]
  - Fixed timeout / disconnect when the game is minimized during sync screen.
  - Fixed weapons dropped at the start grid after several restarts.
  - Don't trigger Rear View or Change Camera while configuring controls.
  - Next Track menu in split-screen unusable after viewing replay.
  - Trying to join an ongoing race properly displays the 'Joining Next Game'
    dialog (broken in previous update).
--------------------------------------------------------------------------------
17.1124a:
17.1124s:
| Pumped network version.
Add:
  [General]
  - Custom level properties: Added support for overriding properties like
     materials, corrugation, dust, sparks and trails. Properties are loaded from
     a 'properties.txt' file placed in the level folder. For more info, see
     the online documentation.
  [Graphics]
  - Added GLProfile key to rvgl.ini settings. This does nothing, and is added
     for compatibility with the shader edition. Also updated video info log in
     sync with the shader edition.
Mod:
  [General]
  - Improved Windows setup: New UI, added option to create a Desktop shortcut.
     Further, the setup now checks whether the game data is found in the install
     path and displays a warning.
  - Windows: Updated SDL2 library to version 2.0.7.
  - The release builds now use optimization level -O3.
  [Graphics]
  - Use GLAD OpenGL loader and shared context in sync with shader edition.
  - When stepping through the Antialias setting, the FBO is recreated afresh
     rather than modifying storage (may improve performance).
  - Shaders: When running on an embedded GPU with no Desktop OpenGL support, ES
     profile is automatically used.
  - Shaders: log messages related to shader loading are clearly formatted.
  [Multi]
  - Removed the flashing 'Locked' overlay from the in-game 'Next Track' screen
     to improve readability.
Fix:
  [General]
  - Fixed broken compatibility with old replay files, introduced in 17.1009a.
  [Graphics]
  - Possible stuttering when streaming textures (like water ripples on Garden).
  - Save Screenshots (F8) now reads from the back buffer (fixes issues with
     some drivers).
  [Multi]
  - Ensure that the client's audio is stopped properly when the same track is
    restarted.
  - Messages received during sync and level load are queued to be processed at
    the end of loading. This fixes improper message handling when clients load
    too fast (eg, by using the -sload command), which can result in bad sync
    and CHT tagging. High priority messages are processed immediately in the
    background.
  - With -sload command, network tasks are run in a background thread in order
    to keep connections from timing out.
--------------------------------------------------------------------------------
17.1115s:
Add:
  [Graphics]
  - OpenGL ES 2.0 support: The popular version of OpenGL for Embedded Systems
     is now supported.
  - ANGLE Direct3D backend support on Windows.
  - New option 'GLProfile' in rvgl.ini to switch between Compatibility, Core,
     Embedded profile and ANGLE backend (values from 0-3).
Mod:
  [Graphics]
  - Switched to GLAD OpenGL loader.
  - Optimized rendering: Significant rewrite and optimizations since the
     preliminary release. Now uses multiple shader programs for world, model and
     screen space (particles, etc.) rendering with combinations depending on the
     mesh type.
  - Better optimized shader code and better compatibility for old devices
  - Transparent meshes are now rendered back to front in correct order.
  - Alpha testing (colorkeying) is only enabled for textures that need it.
  - Untextured polys now use a 1x1 pure-white texture internally.
  - The minimum requirement to run the shader edition is now OpenGL 2.0.
  - Multi-threaded assets loading: Now uses a shared OpenGL context for fast
     loading of assets in background while rendering in the main thread.
  - Re-enabled the loading screen, along with intros.
Fix:
  [Graphics]
  - Fixed broken waterbox animation on levels like Boat Beach.
--------------------------------------------------------------------------------
17.1021a:
| Bug-fix release.
Mod:
  [Graphics]
  - Tweaked the 'popcorn' spark type, updated color and various attributes.
  - Panel hide (Shift + F5) now hides race results and finish position display.
  [Multi]
  - Players are cycled through in the spectator cam or follow cam (F3) based on
     their current race position.
  - The '-port' command line to override the LocalPort ini option now accepts 0
     to force a random port for this instance.
Fix:
  [Multi]
  - Bad default player count in split-screen when creating a new profile.
  - Glitch in name enter menu in random cars mode in split-screen.
  - Wrong player name shown in-game in random cars mode in split-screen.
  - Incorrect CHT tag shown on players in random cars mode.
--------------------------------------------------------------------------------
17.1014a:
| Bug-fix release.
| Pumped network version.
Add:
  [General]
  - Added command line "-tvtime" that enables special cameras, similar to using
     TVTIME cheat.
Mod:
  [Graphics]
  - In tvtime mode, pressing and holding Shift + Space hides in-game menu. When
     HUD is already hidden (Shift + F5), menu can be hidden with Space alone.
  [Multi]
  - Freeform (F6) camera is now allowed in Battle Tag mode after the player has
     finished.
  - Improved level verification: the following files are compared against the
     host: *.fob, *.taz, *.pan, *.fan, *.fld and *.ncp. Visual changes are not
     tagged as cheat. The verification system is also aware of "dummy" files.
  - Disabled various cheats and Edit modes in multiplayer.
  - Entering cheat codes to unlock tracks / cars no longer registers as CHT.
Fix:
  [General]
  - The currently followed player in spectator mode or F3 camera is properly
     saved after race restart.
  [Multi]
  - Fixed 'persistent cheat' bug where a player with mismatching car or level
     continues to be tagged CHT after starting a different level.
--------------------------------------------------------------------------------
17.1012a:
| Pumped network version.
Add:
  [Multi]
  - Added command line "-sessionlog" that can be used by the host to log the
     session data to file. The session data is timestamped and saved in the
     profiles folder as csv.
  - Server-side cheat verification is now extended to cover level data files.
     Mismatching players are kicked when "-autokick" is used.
Mod:
  [Multi]
  - Players using cheat codes are now tagged as CHT.
  - Disabled Object mode preview in multiplayer.
  - All weapons cheat is disabled even with dev mode in multiplayer.
Fix:
  [Multi]
  - Fixed player's car not removed on host's screen when forced to spectate.
  - Fixed possible case when a player can appear twice in race results.
--------------------------------------------------------------------------------
17.1009a:
| Pumped network version.
Add:
  [General]
  - Allow users to specify a custom difficulty for levels with the DIFFICULTY
     line in .inf files. Supported values are 0 to 4.
  - Windows versions are now provided as installer executables (both 32-bit and
     64-bit variants).
  [Multi]
  - Server-side cheat verification: client car parameters are now compared
     against that of the host to detect cheating players. This allows custom
     cars without the CHT tag as long as it matches with the host.
  - Host can set to auto-kick cheating players (those with mismatching car
     parameters) by using the "-autokick" command line. Players with DEV mode
     enabled, but matching parameters, are tagged with CHT but not kicked.
  - New "-port <number>" command line that can be used to override the local
     port for each RVGL instance without editing the ini.
Mod:
  [General]
  - User cars and tracks are now selected by the random cars / tracks option.
  - Added minimal Game Settings in the in-game Options menu.
  - Number of cars can be set down to 1 and laps up to 255 in profile.ini even
     without dev mode.
  [Graphics]
  - Weapon counter is now shown in split-screen for fireworks and water bomb.
  [Multi]
  - Local IP and port are now also displayed for clients.
  - Updated public IP server to 'rv12.revoltzone.net'.
Fix:
  [Graphics]
  - Tweaked sand material color, skidmark and particle effects.
  [Multi]
  - LAN broadcast not working when LocalPort is set to 2310.
  - Next Track option missing in split-screen after viewing replay.
--------------------------------------------------------------------------------
17.1002a:
| Bug-fix release.
Add:
  [General]
  - Added key "CatchUp" in profile.ini to enable / disable AI catchup.
  [Input]
  - Support for custom GameController mappings: mappings are now sourced from
     "profiles\gamecontrollerdb.txt" in addition to the default mappings
     included in the root game folder.
Fix:
  [Input]
  - Fixed hotplugging support with multiple players and controllers.
--------------------------------------------------------------------------------
17.0930a:
Add:
  [Input]
  - Hotplugging support: controllers can be added and removed while the game is
     running and they are now detected and used automatically.
  - Menu navigation uses the D-Pad by default on supported controllers.
  - Controller info including the name and GUID are now logged.
  [Multi]
  - A new rvgl.ini setting called "LocalPort" can be found under the Network
     section. This allows clients to set the port to be used when connecting to
     an online session. The default is 0, i.e., a random port is used.
Mod:
  [General]
  - Updated language files.
  [Graphics]
  - Optimized viewport clear and skybox rendering for better performance on
     tracks that have a skybox.
  - The F9 key in dev mode now shows world and model vertex count in addition
     to poly count.
Fix:
  [General]
  - Fixed wrong player position suffixes used when the panel is hidden.
  - Minor internal tweaks / refactoring.
--------------------------------------------------------------------------------
17.0618s:
| Bug-fix release.
Mod:
  [Graphics]
  - Disabled world mesh info logging (prevent slowdown on Windows).
  - Alpha testing is turned on for additive blending.
Fix:
  [Graphics]
  - Fixed bomb explosions on levels with texture animations.
  - Fixed car fading glitch during reposition.
--------------------------------------------------------------------------------
17.0615s:
| First Shader release.
Add:
  [Graphics]
  - New shader based rendering engine with complete support for the existing
     feature set. Meshes are processed on the GPU.
Mod:
  [Graphics]
  - The OpenGL version is locked to 3.2+ Core profile.
  - Shader Edition is limited to 8 lights and 4 effects per mesh.
  - Log information about world meshes upon loading.
--------------------------------------------------------------------------------
17.0327a:
| Bug-fix release.
Add:
  [General]
  - Added Portuguese language support, translated by LC-DDM.
Mod:
  [General]
  - Save Replay option is currently disabled in Championship mode.
  [Graphics]
  - When using the "-aspect" command line, the lens setting now takes effect in
     frontend too.
  [Multi]
  - Disabled the 'press pause to continue' message (upon race finish) for
     clients.
Fix:
  [General]
  - Fixed podium cars jumping too high when v-sync is off.
  - Fixed -gamegauge mode not working, moved the output to 'profiles\fps.txt'.
  - Fixed version display when entering in and out of dev mode.
  [Graphics]
  - Fixed visual glitch when FOGSTART is equal to FARCLIP.
  [Multi]
  - Fixed chat messages overlapping with race results table.
--------------------------------------------------------------------------------
17.0325a:
| Pumped network version.
Add:
  [General]
  - Added Hungarian (Magyar) language support, translated by Andor.
  - Initial support for loading UTF-8 language files.
  - Added new 3-car wide STARTGRID types 4 and 5 for use in custom tracks.
  [Input]
  - 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.
  [Multi]
  - Updated Waiting Room layout and added new 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.
Mod:
  [General]
  - Increased the maximum number of cars to 16.
  - Reduced the probability of player getting the global star pickup.
  - Can now use the look back button when spectating cars at race finish.
  [Multi]
  - Increased number of connections to 20 (upto 16 playable cars and 4 more
    slots for spectators).
  - More efficient transfer of the game data during race start.
  - Improved Waiting Room messages in various occasions such as late joining
    and spectating (i.e., when game has already started or when joining the
    next game).
Fix:
  [Multi]
  - Fixed crash when the number of players connecting exceeds the maximum
     allowed connections.
  - Fixed bug with the "Room Full" status not detecting properly.
--------------------------------------------------------------------------------
17.0215a:
| Bug-fix release.
Mod:
  [General]
  - Reintroduce fixed timestep for camera movement and animations with v-sync
     off. A variable timestep is still used to keep the animation smooth when
     v-sync is on.
  [Input]
  - Left Stick should now be accepted in menu inputs even when Acc/Reverse is
     configured differently.
Fix:
  [General]
  - Various code cleanup aimed at the 64-bit version.
  [Audio]
  - Updated the doppler effect code to provide safe limits, avoid generating
     very large pitch values. This fixes a potential crash or lockup with some
     openal versions on 64-bit Linux.
  [Multi]
  - Fixed a bug in lag computation on 64-bit RVGL that can result in high
     latency and cars flickering on some LANs.
--------------------------------------------------------------------------------
17.0115a:
| Pumped network version.
Mod:
  [General]
  - Updated the Spanish translation for Instances option in Render Settings.
  - Disabled the "Object Out of Bounds" warning that appeared in Dev mode. The
     message is now logged instead.
  [Multi]
  - The external IP service provider is now changed to 'www.myexternalip.com'.
  - P2P is now the default mode for multiplayer sessions. Use "-nop2p" command
     line to explicitly disable P2P and use client-server mode.
  - Disabled the ping displayed above cars. Ping values can still be checked
     from the debug display in Dev mode (Ctrl + Numpad Enter).
Fix:
  [General]
  - Fixed camera stuttering issues. This undoes a change introduced in v1.2
     build 15.0325 that was intended to improve stability at high fps.
  - Flickering lights (as in Market1) were improved so the flicker speed is no
    longer dependent on the frame rate.
  - Fixed audio clipping at high frame rate.
  [Multi]
  - Players on the same LAN connecting to a remote host in P2P mode should now
    be able to see each other.
  - Fixed lobby timeout not giving any error in the previous release.
  - Fixed bad 'player leaving' message sent by clients in P2P mode.
--------------------------------------------------------------------------------
16.1230a:
| Pumped network version.
Add:
  [General]
  - This release includes additional Gallery pages from the DC version.
  [Multi]
  - Initial support for P2P multiplayer: use the "-p2p" command line to start a
     P2P session. Only the host needs to set the command line. UDP hole punching
     is used to link clients behind NAT, so no port forwarding is required for
     the clients.
Mod:
  [General]
  - Replays are now saved per-profile when using the Save Replay feature.
  - Added missing entry for libGLEW.so.2.0 in the 'rvgl' launch script.
  - The changelog is now saved in UTF-8 encoding.
  [Multi]
  - Lobby connection timeout is reduced from 60s to 15s.
Fix:
  [General]
  - Time Trial records and ghosts not loading in Linux after running the
     fix_cases script.
  [Graphics]
  - Possible alpha transparency glitch in saved screenshots.
  [Multi]
  - 'No countdown' bug when a fast client finishes loading when the host is
     still at the sync screen.
--------------------------------------------------------------------------------
16.1210a:
Add:
  [General]
  - Added missing texture files for the Trolley car.
  [Graphics]
  - New implementation of multisample anti-aliasing using Framebuffer objects.
     Antialias is now a proper option under Render Settings, and changes take
     effect instantly. The command line "-multisample <num_samples>" can be used
     to initialize a multisampled opengl window the old fashioned way, without
     framebuffer objects.
  - Screenshot support: automatically save screenshots from the game using F8
     key. The screenshots are timestamped and saved in the profiles folder in
     PNG format.
  [Audio]
  - Added libsndfile decoder to support various compressed WAV formats.
Mod:
  [General]
  - Updated the collision poly limit 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.
  - The unlocking behavior and CPU selectability of BigVolt and BossVolt are
     now restored based on the original DC version.
  - Improved logging to display additional details and log error messages.
Fix:
  [General]
  - Fixed repeated error messages at startup when the selected language strings
     are missing or outdated.
--------------------------------------------------------------------------------
16.1125a:
Add:
  [Graphics]
  - Support for enabling Multisampling (MSAA) from the Video Settings. Changing
     this setting currently requires restarting RVGL to take effect.
Mod:
  [General]
  - Updated the Dreamcast pack with the latest files.
  - Localized the "Windowed" text in Video Settings.
  - Log the OS and architecture to the re-volt.log file.
  [Multi]
  - Calculate the remote delay based on the last packet lag only (not taking
     into account the interval between packets). This avoids increased delay in
     case of low pps.
  - Debug display is now invoked with Ctrl + Numpad Enter (Dev mode).
  - Show lag and interval values in multiplayer debug display.
  - Car / object position updates are now sent in a separate enet channel.
Fix:
  [General]
  - Fixed bug in .lit file saving in Lights edit mode.
  - Fixed crash after selecting give up try in Championship mode.
  - Dev mode: don't add a camera section when saving car info if the car
     doesn't use one.
  [Multi]
  - Reducing the number of cars from Game Settings in an online session now
     properly sets any extra players to spectating mode.
--------------------------------------------------------------------------------
16.0927a:
| Bug-fix release.
| Pumped network version.
Mod:
  [Multi]
  - Ensure remote car orientation doesn't deviate too much from correct angle.
  - Restored the remote object delay (to a lesser extent than before).
  - Weapon transfer now uses guaranteed messaging.
  - Show CHT if the player has entered dev mode.
--------------------------------------------------------------------------------
16.0920a:
| Pumped network version.
Add:
  [General]
  - Additional content: 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).
  [Input]
  - 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.
Mod:
  [General]
  - Rooftops now shows the proper gfx and length at the track selection screen
     even if the level data is missing.
  - Provide signed parameters for special cars (key cars, Mystery, UFO) to
     remove CHT mention.
  - Automatically restore window upon dismissing a message box in fullscreen
     (Windows only).
  - Linux 'setup' script now sets proper permissions to the 'lib' folder.
  [Graphics]
  - Increased the enumerated number of display modes to 1024 (previously 256).
     The number of display modes is logged to the re-volt.log file.
  [Input]
  - 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).
  [Multi]
  - Disabled the delay added to the multiplayer cars and objects animation.
  - Updated multiplayer animation model, should result in smoother animation
     even at high pings without the need for adding a remote delay.
  - Increased the network packets per second to 20 (from previous 6).
  - Improved debug display in multiplayer (Numpad Enter in Dev mode).
Fix:
  [General]
  - Bug restarting level in reverse / mirror mode in split-screen.
  - Fixed CPU cars info shown in race summary in split-screen even when
     Multiplayer CPU setting is turned off.
  - Fixed key cars locked at the options menu when a race is quit before the
     countdown has ended.
  [Graphics]
  - Possible crash when the number of display modes is above 256.
  - Glitch when switching from windowed to fullscreen at the frontend after
     selecting split-screen mode.
  - Improper menu layout when the window is resized while the menu is animated.
  [Input]
  - Menu navigation not working when controller axes are used as buttons.
  [Multi]
  - Track search unavailable when going back from waiting room.
  - Wrong weapon target when using the 'all weapons' cheat in multiplayer.
--------------------------------------------------------------------------------
16.0904a:
Add:
  [General]
  - 64 bit builds are now available for Windows.
  - Additional content: added support for Rooftops level from the DC version
     (available as a separate optional download).
  - Support Rooftops models, sfx and skybox in the Objects edit mode.
Mod:
  [Graphics]
  - Edited the 32-bit bitmaps included in 16.0705 for compatibility as they
     were found to not load in v1.2 and older versions.
  [Audio]
  - Increased the sfx range to be closer to 1207 behavior.
  - Disabled the exponential volume curve introduced previously.
Fix:
  [General]
  - Bug selecting 'no' during championship give up try.
  [Audio]
  - Fixed a bug in 3D surround panning.
--------------------------------------------------------------------------------
16.0710a:
Add:
  [General]
  - 64 bit support: this release includes native linux binaries for both 32-bit
     and 64-bit systems (rvgl.32 and rvgl.64).
  - Added 'rvgl' 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.
--------------------------------------------------------------------------------
16.0705a:
Mod:
  [General]
  - Spherical linear interpolation (slerp) code used for remote car animation
     is now closer to the 1207 / DC version.
  - Updated the Linux build for Ubuntu 16.04 support.
  - Avoid renaming dll files when running the fix_cases script.
Fix:
  [Graphics]
  - Fixed 32-bit bitmaps (icon, logo, etc.) that can cause transparency issues
     with latest SDL libraries.
  [Input]
  - Fixed TAB and F11 keys not working when caps lock or num lock is on.
--------------------------------------------------------------------------------
16.0505a:
| Bug-fix release.
Mod:
  [General]
  - Improved AI catchup code: should make the effect more subtle, especially in
     Junior RC mode.
  - Updated fix_cases script on Linux to avoid renaming the lib folder.
  [Multi]
  - Reverted lag management change from 16.0315a as it can cause jittering.
Fix:
  [General]
  - Fixed crash introduced by the waterbox fix in last release.
--------------------------------------------------------------------------------
16.0420a:
Add:
  [General]
  - Added 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.
  [Graphics]
  - Added an fps limiter that can be used with v-sync 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.
Mod:
  [General]
  - Allow 'flying' car AIs to turn in air / water.
  - The camera speed in edit mode is now controlled by the caps lock key.
  - Errors are logged to the console in addition to message box display.
  [Input]
  - Disable broken axes in controller config menu.
Fix:
  [General]
  - Fixed split times bug in time trial introduced in last release.
  - Fixed crash at load screen when trying to preload a bad object thrower.
  - Fixed jittering of the waterbox animation with v-sync off.
  - Fixed edit camera mouse movement not working with v-sync off.
  [Input]
  - Fixed inablity to select controllers other than keyboard for players 2-4.
  - Fixed error in axis deadzone / range calculation.
--------------------------------------------------------------------------------
16.0315a:
| Bug-fix release.
Mod:
  [General]
  - Optimized collision data gridding (should reduce ncp loading times by half
     when lots of instance models are used).
  [Graphics]
  - Use DC style hi-res text for Replay / Spectator / Demo Mode.
Fix:
  [Multi]
  - Fixed clone weapon not working between clients.
  - Fixed player ping display showing wrong ping.
  - Minor lag management improvement, cuts off interpolation based on distance
    between samples. Should avoid cars zooming past, etc.
--------------------------------------------------------------------------------
16.0305a:
Add:
  [General]
  - Add support for UTF-8 filenames on Linux. This allows the car parameters
     file and level inf to be saved in UTF-8 encoding. The characters that can
     be displayed in-game is still limited to extended ascii (Windows-1252)
     encoding. UTF-8 support is not available on Windows, to be added later.
  [Multi]
  - Display the ping delay in ms above the lagging player cars.
Mod:
  [General]
  - Disabled v-sync by default, avoids input lag with some gfx cards.
  - Only display "no pause" message in dev mode.
  - Updated setup script on Linux: now places launcher in
     ~/.local/share/applications and uses correct category. The rename script
     now handles all valid UTF-8 symbols.
Fix:
  [General]
  - Fixed error loading textures in user content with extended ascii filenames.
  - Fixed instance files (fin) saved in-game not importing in Blender.
  - Code cleanup: Fixed potential crash while freeing memory.
  [Multi]
  - Fixed camera change glitches when one player enters spectator mode.
  - Fixed improper game start in waiting room under some cases.
  - Keep peer alive (prevent timeout) when loading takes a long time.
  - Avoid redundant messages when new player joins.
--------------------------------------------------------------------------------
16.0115a:
| Pumped network version.
Add:
  [General]
  - Add support for controlling camera speed in edit mode: press and hold the
     scroll lock to speed up camera.
  - Included the names of artwork contributors in the credits.
  [Multi]
  - 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.
Fix:
  [General]
  - Fixed pause menu showing up in demo and credits mode after minimizing and
     reactivating the game (in windowed mode).
  - Pressing Esc at the pause menu no longer resumes the game.
  [Multi]
  -   Improved public ip address retry to reduce the frequency of requests.
  -   Fixed bug allowing the car to move before countdown after using spectator.
  -   Prevent possible crash at the sync screen.
  -   Fixed crash at loading screen in battle tag mode.
  -   Fixed issue with Battle Tag star capture and transfer.
  -   Fixed Battle Tag time display in in-game waiting room.
--------------------------------------------------------------------------------
16.0110a:
| Pumped network version.
Add:
  [Graphics]
  - Re-added support for changing the brightness and contrast. This only works
     in fullscreen, and for the primary monitor in a multi-monitor display. Use
     "-nogamma" command line to disable gamma correction.
  [Audio]
  - 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.
Fix:
  [General]
  - Fixed bug loading instances with capitalized file name extension.
  [Multi]
  - Fixed no collision after going to spectator mode and re-joining race.
  - Fixed buggy level loading after using the Next Track in-game option and
     changing the reversed or mirrored states.
  - Reversed and mirrored states not displayed in the Waiting Room.
--------------------------------------------------------------------------------
15.1220a:
Add:
  [Graphics]
  - Texture formats support: 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.
  - 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.
  [Audio]
  - Re-added support for MP3 playback on Windows.
Fix:
  [Graphics]
  - Fixed "Spectating" text displayed in demo mode and credits.
  - The "Demo Mode" text in demo mode no longer looks stretched.
  [Audio]
  - Fixed loud sfx volume, now uses an exponential volume curve that fades away
     quickly as you move away from the source. Also fixed an inconsistency in
    panning.
--------------------------------------------------------------------------------
15.1025a:
| Pumped network version.
Add:
  [General]
  - Added "-nopause" command line to keep running the game even when it's in
     the background. This is an alternative to the Shift+F9 shortcut in dev mode.
  [Multi]
  - Added lobby launching support with the command line "-lobby <ip_address>".
     <ip_address> can be the host's IP, 0 (to search for local sessions), or
     entirely ignored (for launching the host).
Fix:
  [General]
  - Fixed potential crash in custom tracks utilizing the Speedup object.
  - Viewport glitches in 3-player split-screen when not using Auto split.
  - Pickups not staying disabled in edit mode.
  - Broken "clear progress table" option.
  - Fixed instances saved using RVGL not loading anymore in previous Re-Volt
     versions. The non-working instances need to be re-saved using the fixed
     rvgl build.
--------------------------------------------------------------------------------
15.0827a:
| Bug-fix release.
| Pumped network version.
Mod:
  [Multi]
  - Enabled display of debug information (ping, packets) using Numpad Enter
     (dev mode only).
Fix:
  [Multi]
  - Fixed bug in syncing of race timers.
--------------------------------------------------------------------------------
15.0825a:
| Pumped network version.
Add:
  [Audio]
  - Logs occurences of al_soft errors in an attempt to pin point the "can't
     load moto.wav" error.
  [Multi]
  - Keyboard layouts support: the existing support in v1.2 for international
     keyboards is now back. Further, various keyboard layouts added through the
     OS is also supported, including the use of dead keys.
Mod:
  [General]
  - Localized the "Locked" message on track select screen.
  [Graphics]
  - Optimized texture updates that are done for some special effects such as
    the water ripple used in Garden.
  [Multi]
  - Enabled the spectating menu (to join game / spectate) and the corresponding
    in-game menu entry.
  - Enabled the multiplayer main menu (to change options, profile, etc).
  - Enabled the in-game sync / pinging of players.
  - After selecting the "Spectate" option from the in-game menu, re-joining the
    race instantly puts the player back on track to continue the current race.
  - Now retries fetching of public IP upon time-out.
Fix:
  [General]
  - Fixed behavior on championship give-up try.
  - Cup not unlocked even after completion of previous cup.
  [Graphics]
  - Fixed particles and lights stretched horizontally.
  - Fixed screen not turning bluish when under water.
  - Fixed spru bar width on "cup locked" message.
  [Multi]
  - Stray 'v' character when pasting host IP.
--------------------------------------------------------------------------------
15.0814a:
| Bug-fix release.
| Pumped network version.
Mod:
  [General]
  - Use Windows line endings for the language strings files to keep backwards
     compatibility with v1.2.
  [Multi]
  - Changed the UDP port used to 2310 to prevent conflict with RV House.
Fix:
  [General]
  - Fixed "speed units" setting changing the "number of cars" instead.
  [Multi]
  - Fixed crash upon "Can't create enet server" error.
--------------------------------------------------------------------------------
15.0810a:
| Pumped network version.
Add:
  [Multi]
  - First implementation of online multiplayer support. Uses client/server mode
     of communication rather than peer-to-peer. The server binds to UDP port
     2301 (currently hard-coded).
  - Display both the public and private IP address for the host. Public IP is
     queried through "checkip.dyndns.org".
  - Logs various network information to the log file (see lines starting with
     the "NET:" prefix.
Mod:
  [General]
  - Enabled the options menu (some unsupported settings may be greyed out).
  - Removed delay when quickly pressing Enter / Forward key at the profile menu.
  - Simplified multiplayer menu.
Fix:
  [General]
  - Summary screen showed non-existing challenge time for reverse-mirror modes.
  - Fixed wheels not turning when using the camber feature.
  [Graphics]
  - Fixed / improved the rendering of firework trails.
--------------------------------------------------------------------------------
15.0501a:
| First Alpha release.
Add:
  [General]
  - Language search support: 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,
     "Français" for "french.txt") can be specified as the last line of the
     strings file.
  [Graphics]
  - Fullscreen toggle support: use F11 to switch between fullscreen and windows
     mode instantly.
  - Ability to resize the RVGL window in windowed mode to any preferred size.
     The last window size is saved on fullscreen toggle.
  - 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.
  - New logo: This release adds the RV Team developer splash screen with a
     disclaimer text and uses a new RVGL logo made by hi-ban for the loading and
     frontend screens.
Mod:
  [General]
  - We now support Unix (LF) line endings for the language files. Previously
     only Windows (CRLF) line endings were supported.
  - RVGL global settings file is named "rvgl.ini" and profile specific settings
     are saved in "profile.ini". Profile names are capitalized in-game.
  - The profile ini entries now use double-quotes to cover string entries like
     level dir, player name, etc. This supports entry with spaces better.
  - The debug log files are now created inside the profiles folder.
  [Graphics]
  - The default resolution is taken from the desktop mode rather than being
     hard-coded to 640x480. In windowed mode, the default size is half the
     desktop dimensions. A different default size can be set using "-window w h"
     command line.
--------------------------------------------------------------------------------