All posts by Coniah Chuang

RaceTools v2.88

This is an optional update with some bug fixes but mostly minor tweaks to the interface to make it a little easier to use.



  • Add Delete Log Files button to General Configurations tab to delete old log files from LogPath
  • Add Delete Session Files button to General Configurations tab to delete old ABS and BIN files from the DatabasePath
  • Add Export/Import Settings to Layout menu to package application settings files into a zip file to easily export them to another instance or machine, and import them by unzipping the file to the program folder.
  • Add RelativeLocation to Custom Popups (formerly Clocks) to tie their position to the track map if the Link To Trackmap option is selected for the popup. Allows relocating the track map and linked popups as a single unit by moving the map.


Bug Fixes:

  • Fuel Resetting at SF line without a pit stop if the previous lap FuelUsed was not set, or if the CurrentLap count was already incremented before the FuelUsed was updated.
  • Change StrToDate function to use fixed date format to decouple the decoding from the computer settings.
  • Fix Competitor.SF setting


You can download the latest version from




2016 03 30 – disable fsStayOnTop for main program window (hides other popups)

2016 03 29 – fix Fuel Reset bug in IMSA version for messages out of order changing the CurrentLap before the Fuel Usage is updated.

2016 03 28 – add CautionGapThreshold to highlight large gaps in the running order during cautions for RaceControl version

2016 03 28 – add DeleteLogFiles to delete old replay files (*.log) from LogPath

– add DeleteSessionFiles to delete old session files (*.abs, *.bim) from DatabasePath

– add Export Settings to Layout menu to easily package all *.ini, *.tee, *.dbg, *.config, *.fields files into a single ZIP file for transfer to other locations (folders or machines)

– add Import Settings to Layout menu to easily extract all configuration files packaged by Export Settings to apply saved settings to current application

– add options for the baselap to use in the LTR (Lap Time Remaining) Session Results field

2016 03 27 – RelativePosition to lock popup location relative to track map when Link To Trackmap enabled. Allows moving trackmap with popups together.

2016 03 25 – change StrToDate(string) calls to StrToDate(string,fmt) to make conversion independent of computer settings, use mm/dd/yyyy date format

– test for replay file before prompting for close confirmation (must stop replay first so don’t ask to close if close is not an option).

– set Competitor.SF to ‘T’ on Pit Out to designate Lap as On Track. Eliminate double P lap logging, might not properly tag laps if Pit Lane does not intersect SF line (ie. No SFP)


2016 03 19 – add Exclude RED TIME to end stints at RED TIME. Must be applied before going back to racing.

2016 03 19 – add Insert Message to insert comments into the input logfile

2016 03 18 – remove Cancel property of buttons to remove trapping of ESC key before the form. Fixes ESC to exit Configuration window.


2016 03 17 – fix GenerateSectionTime to set SectionTime.Status = LineCrossingStatus (not TrackStatus), fixes updating of ProfileLap and DefaultLap

– also fixes track map CarPosition (requires ProfileLap/DefaultLap to set car position)


2016 03 14 – add logic to calculate Best Split deltas and ranks for Display By Driver mode

2016 03 14 – reset SPSections counter before populating Track definition (fix bug with continually adding SP sections, leading to BestTrapSpeed report errors)

– fix GenerateSectionTimes bug skipping populating StartTime

– fix ProjTime calculations

– convert Telemetry.ElapsedTime to ElapsedTime for all versions (instead of TOD for some versions)

2016 03 13 – set Telemetry.Valid=false if no data within last 2 seconds (missing data), or if crossed timeline with zero speed AND rpm (invalid data)

– use $O Tire and OT_Remain values if NOT Telemetry.Valid

2016 03 12 – enable logDB by default. Fixes empty LineChart bug

2016 03 10 – apply ContrastFont before TextRect to ensure high contrast text rendering

Sharing your data – Relay Server and Get Session

Relay Server was included in a major update to RaceTools in version 2.56. It was added to address the connection restrictions in the WEC data feed, but this feature is also useful for non-WEC users. The Relay Server redistributes the data stream from one instance of RaceTools to other copies of RaceTools. This can be used to reduce network traffic to the data source, limit the number of machines connected to the pit lane network, or to synchronize clients in a replay scenario (such as for learning the software) without using another tool like IPBroadcaster.

The RaceTools was enhanced in v2.75 to support a server/client request for a snapshot of the current session (Get Session). This feature was mentioned in the previous post ( but it is described in more detail here.

Enabling Relay Server
Enabling the Relay Server in RaceTools is very easy. Just go to the main program File menu and select Relay Server. You will be prompted to confirm or change the IP address to listen to (enter to accept connections on any IP address, or a specific IP address if you wish to restrict access to a single IP address on that machine) and port to listen for connections on. This combination is what other clients will connect to. A checkmark beside the option means the Relay Server is active. In this case it will listen for requests on port 9000.

2016-01-24_10h09_43 2016-01-24_10h13_29

Connecting to Relay Server
Connecting to the Relay Server is the same as connecting to the Pit Lane server. You can either directly specify and connect to the T&S feed using the File menu Connect T&S, or use the Configuration window to specify the T&S Server IP and Port. For the IP address, enter the IP address of the Relay Server. For the Port, use the Listen port specified when you enabled or configured the Relay Server (9000 in this example). Clients connected to the Relay Server will get a copy of whatever the Relay Server receives.
2016-01-24_10h16_51 2016-01-24_10h17_22

Getting a Snapshot (Get Session)
One big advantage of the Relay Server is that not only can the Relay Server distribute the incoming data feed (thereby reducing network traffic between the pit stand and the T&S server) it can also share whatever data it has already captured for the session. This means that if the Relay Server has been running since the start of the session and a client connects mid-session, it can get a snapshot of everything up to that point and then continue with the live data as if it had been connected the whole time. This feature was added in version 2.75

You don’t have to get the live data feed from the Relay Server for this feature to work. You can still be connected to the pit lane T&S server, but the transition from archive to live data might be a little less smooth, depending on how far you are into the race.

To request a Session Snapshot, use the file menu ‘Get Session’ (CTRL+G) from the main program window. Enter the IP address and port number of the Relay Server.

2016-01-24_10h34_27 2016-01-24_10h34_40 2016-01-24_10h34_50

The current status and log of GetSession requests are displayed in the Announcement line and Message window.2016-01-24_10h41_06

Once the Get Session request is complete, the client will have an exact copy of data that the Relay Server has and will proceed with the live data from the T&S connection.

There is one main caveat to the Get Session function; the Relay Server and clients need to be running compatible versions of RaceTools. Because the data being sent is an exact copy of the in-memory data, any changes in how or what data is logged will make two version incompatible. I will try to limit these changes and note them when necessary, but it means you cannot run v2.77 as the server and v2.79 as the client, or vice versa.

I recommend that you run a copy of RaceTools on the pit stand with the Relay Server enabled at all times (before the first session until the end of the last session) to capture the data. I would minimize the user interaction on this machine to keep it as stable as possible, perhaps using it to display the track map and basic results. This will make sure that there is a copy of the current session available to other copies of RaceTools as needed. Ideally this would be a machine that stays at the pitstand. It doesn’t have to be portable or very powerful. It should have enough storage to log all of the sessions and be kept on all day.

The client RaceTools can connect to the pit lane T&S server or the Relay Server for the live feed, but if you need to start or restart RaceTools after a session has started, you can use the Get Session command to get a snapshot of the current session.

RaceTools v2.77 – Faster session restore, easier updating.

For the first 8 years of RaceTools, the focus was on new features as the feedback and suggestions from dozens of race engineers and strategists made their way into the software. The focus for the last couple of years has been ease of use; trying to corral all of the features and options into something more manageable. Some new features were added but most of the work was in refining existing features and making them work more consistently across the software. The configuration window helped consolidate many of the options into one location and the addition of tabs helped manage the many popup reports that have been added to the software.

During this off-season, the priority was solidifying the interface and optimizing some of the slower operations. This involved reworking the logic behind some of the slower reports, speeding up replay files, jump to replay files to start a replay at a certain point and adding the ability to save and restore the data of a session in native format to cut session load time from minutes to seconds. This last feature also changed my approach to address the issue of starting or restarting software mid-session. Instead of replaying an archive of the session or loading a database snapshot of the session, the software can now save/load the memory block of data. Combined with the Relay Server feature (which distributes the incoming data stream to other instances of RaceTools), one can now get a snapshot of the session up from another instance of RaceTools within seconds. The limiting factor is usually the network speed. Compressing the data (the data compressed by 7-8 times) shaved more time off the process, especially over a slower network. The result is that you can now start/restart an instance of RaceTools and get all of the session’s data within seconds. A 10 hour race restored in less than 3 seconds over a slow LAN (20-30mbps) and less than 1 second from a file.

In our continuing efforts to make the software easier to use, and because the software is updated frequently, I’ve added a Check Update and Install Update feature to allow you to quickly check for new versions of the software, and if you choose, to download and install the software all from within the application. I know that you might not want to update your software frequently, but if you do, I’m trying to make it easier.

Versions prior to 2.77 expires on December 31, 2015 so if you are renewing your software license, you will need to update to this version to continue using it in the new year.

What’s next is largely dependent on you. If there are things that need to be fixed or features added, please let me know so that I can prioritize it. If you’ve told me before, tell me again. Sometimes I forget.

New Features since the end of the season:

Save/Load Session Stream
From the first release of RaceTools there were two ways to load or restore a session. One was to do a replay. This is still the most reliable way and is completely backwards compatible from version to version. The second was to load the data from the session database that it updates with the live data. This was usually effective but often slower than doing a replay on a long (over 1 hour) session. The two uses of restoring a session are to be able to pull up reports after a session or to resume a session if a machine crashed or was started after a session started. In the latter case, there is no time to lose so I did some research on how to save and restore the program state and the session data in the most efficient method. The new Save/Load Session (stream) is the result of this work and now you can load a session in seconds (often less than 1 second) and have all of the data for a session available. This involved reworking some of the reports to use memory objects instead of the database, but that also had the effect of speeding up the reports so it was a win-win situation.

The main caveat is that the session data is not saved in real time. It is only saved when the session goes COLD, when you exit the software or manually with the Save Session menu option. The Load Session process is the same but by using the ‘*.bin’ file instead of the ‘*.abs’ file, you can reduce the load time from minutes to milliseconds with typical load times of less than 1 second. The software still generates the .ABS files and you can still load data from the database, but it’s use may be deprecated in the future. Most reports no longer use it.


Relay Server w/Get Session feature

The Relay Server was added mid-season to address the per connection pricing of the WEC/Al Kamel timing and scoring feed. By enabling the Relay Server, other instances of the RaceTools software can get a copy of the data stream so each instance of RaceTools can become a data distribution point. I recommend only using one or two per it stand so that it doesn’t complicate things. One issue was what to do about machines that connect after the initial machine had connected to the server. The initial burst of data might not be repeated so I planned on caching and resending this data. With the implementation of the Session Stream feature, I was able to save and restore a whole session’s worth of data in seconds so the need for replaying the data stream or sending a cache of data to connected clients became a moot point. It would be more useful and faster for the client to just request the session data from the Relay Server.

The new Relay Server feature now supports requests for the session stream snapshot from clients. To get a snapshot of the session, issue the ‘Get Session’ command from the main File menu and RaceTools will connect to the Relay Server and get a copy of the session data. This typically takes 2-3 seconds on a LAN and less than a minute over a reasonable Internet connection. With the compressed stream format, the (shortened) Petit Le Mans race data fits in 3.8 MB.

2015-12-05_10h52_20  2015-12-05_11h05_59 2015-12-05_11h06_11

If you want to try this feature, you can issue a GET SESSION request to Server: Port: 9000. The data is from an IMSA race, but the concept is the same regardless of the version.

About w/Update
The About window has been made easier to read and added the option to Check Update, Download (update) and Install Update.

RaceTools is update frequently, probably too frequently for many of you. To help you keep up to date with the latest version, I’ve integrated the Update function into the software so that you don’t have to leave the software to check and get the latest version. The About window is also more descriptive and readable. To get the latest version of the software, click on Check Update, Download, then Install Update. The software will take care of the details and replace the current copy with the updated version.


I hope you like the new enhancements. As always, please send me your suggestions, feedback and bug reports so that I can make RaceTools better.

RaceTools v2.68 – new Check Control Lines/Validate Track Map features

Tired of switching track maps during a race weekend? Using the new $U message to identify the control lines from the data feed (available only since Detroit), RaceTools can now use a single track map to display both the race and alternate track configurations.

Check Control Line to automatically adjust for Alternate SF line(s):

To automatically adjust for different SF/SFP timelines, enable the ‘Check Control Line’ option found in the main program Options menu.


Validate Trackmap to manually check and adjust for Alternate SF line(s):

To manually force the software to adjust the SF line, select the Validate Trackmap menu item from the Track Map popup menu (right click track map). This will prompt for the SF and SFP timelines to use and compare it with the current configuration and track map. If the SF/SFP lines are different and found in the track configuration, the software will automatically offset the track map to match the specified timelines. Note that you can only execute this once the track configuration is available (ie. when the session has gone warm).


How it works:

  1. On a new session or when the program launches, only the SF line is displayed. There are no sections defined.2015-07-23_12h40_57
  2. After the track message is received (after the session has gone warm), the sections and location of timelines are available. If this is a PQ session and the track map loaded is the race map, the track map does not match the actual location of the SF line for this session.2015-07-23_12h41_49
  3. If the Check Control Line option is enabled, as soon as the $U message is received, RaceTools will compare the SF and SFP lines defined by the $U message with the current track configuration. If it does not match, RaceTools will adjust the track to the SF/SFP lines defined by the $U message.

    If the Check Control Line option is disabled, you can force RaceTools to validate the track map by executing the ‘Validate Trackmap’ option in the track map popup menu. You can use this if the $U message is missing or incorrect. If the $U message is incorrect, you should disable the ‘Check Control Line’ option to prevent it from automatically adjusting the track map.

    Remember that the track definition must be available before you can execute the Validate Trackmap function and the SF and SFP lines must be defined in the track definition. To see the track definition, open the Track Editor (CTRL+T).

    The map below is after the Validate Trackmap has been executed (either manually or automatically) for a PQ session.2015-07-23_12h52_19

RaceTools v2.68

This is a maintenance upgrade and offers a few refinements to the software as requested by our users.

For IndyCar, one of the most common errors and frustrating parts of the software was making sure the correct map was loaded and the correct SF line was configured for the race and alternate start/finish lines. The latest version makes use of the newly added $U message and it’s control line designator (*) to identify the lap counter line for each session. With this information, RaceTools can now compare the settings to make sure the correct timeline is used for the SF and SFP lines, and if required, shift the trackmap to the alternate SF line. Now you can just load the race map and not have to switch between session types and let the software do the change for you.

Other minor changes are listed below:

2018 07 22 – fix LineCrossingLog lap calculation
– add ValidateTrackMap to trackmap to check for correct SF/SFP timelines (use IndyCar RP $U to determine SF/SFP lines)
– automatically switch between SF and Alt SF for IndyCar series when $U RP messages available.
2015 07 16 – add parsing for $M Manufacturer Points: messages, store in SessionInfo.ManufacturerPoints
– add Manufacturer Points to Clock types
– Clear LineChartPopUp in NewSession
2015 07 13 – Set Track Map CarPosition to use 1/3 spacing if Side-By-Side enabled
– check LiveSections Column Width when updating column titles. Make sure column titles can be seen.
– eRMON filter out duplicate $L messages
2015 06 29 – update StartStint and EndStint to use Telemetry.ElapsedTime-Session.StartTime for actual Elapsed Time instead of TOD, fixes Drive Times report
2015 06 27 – implement setMinimumPitStopTime to update minpitstoptime within PitLaneMonitor
– set Current.PitIn and Current.PitOut times to session time, not TOD. Telemetry.ElapsedTime is in TOD.
2015 06 27 – re-enable freeze field for IMSA Race Control version
2015 06 26 – change lap speed calculations to use Session.TrackLength instead of Track.Length (which is populated by $U message and may not be the same as the ‘official’ track length
– fix IMSA version to subtract SessionInfo.StartTime from TimeToLine calculations. Telemetry.ElapsedTime is TOD not session time. Fixes ProjectedTime calculations
2015 06 22 – move code to GenerateSectionTimes to routine in TASDB module
2015 06 21 – optimize calculations to use objects instead of database – reduce calculation time from 17s to 0.06s
– add ‘P’ column to display RecNo
– hide/exclude Class/Rating from non-MultiClass versions
2015 06 18 – add support for WEC Al Kamel $PASSING records
2015 06 01 – Force SF, SFP, Start, PIT, In Lap, Out Lap to be T1, P1, T1, PIT, IL and OL to fix wrong configuration issues in IMSA version.
2015 05 30 – add mnuLockScale to Graphs to not automatically reset the Axis scales
2015 05 16 – make BoldTitle an option in the configuration file ([Layout] BoldFont=1)

RaceTools v2.59 Pit Lane Monitor

New to v2.59 is the Pit Lane Monitor. Primarily added to help competitors in series that have a minimum pit stop time requirement, the Pit Lane Monitor displays cars currently in pit lane and optionally those on their out lap. It is similar to the Running Order display but adds the PitIn (Elapsed Time at Pit In), PitLane (time in Pit Lane as a running clock during the stop and the actual time after the stop), and CountDown (time remaining to meet the Minimum Pit Stop Time, see below) columns.


Set the Minimum Pit Stop Time in the Pit Stops Configuration tab (Alt+C for the configuration window). This value is used in the Pit Lane Monitor CountDown display and to exclude ‘invalid’ or ‘non-service’ pit stops from Pit Window calculations. 2015-04-29_11h22_44

RaceTools v2.59 ‘Highlight Slow Cars In Section’ feature

This is an experimental feature to help race control identify cars that may be off-track or otherwise slow in completing a section. It compares the current time in a section with the expected section time. Note that there are multiple reasons why a car might appear to be slow in the section, including a missing timeline, but most false positives should be brief.2015-05-01_07h50_29

Use the Track Map Settings tab to fine tune when a car should be highlighted.2015-05-01_08h04_42

RaceTools v2.56

V2.56 adds the ability to have multiple graphs and maps open.

You can add Graphs and Maps using the Add Graphs and Add Maps menus.
You can add Graphs and Maps using the Add Graphs and Add Maps menus.
v2.56 adds the ability to have multiple maps and graphs open at the same time.
v2.56 adds the ability to have multiple maps and graphs open at the same time.


2015 04 15 – clean up RestoreSession
– restore pit stop data
– eliminate double logging of pit lane section times in TimeGear module
– fix Pit Stop Analysis refresh routines
– provide better Estimated Time for RestoreSession/Load Session by tracking lapsprocessed/lapstoprocess during phase 3
– restore LapChart in RestoreSession
– populate ClassRank in RestoreSession
– log LeaderLap (add to eROM module)
– restore LeaderLap in RestoreSession
2015 04 14 – Drive Times add Include Follow Cars option to include all cars in TeamCars list
– add Double Click Drive Times to open TimeCard functionality
– Filter out ‘E’ cars during non-YELLOW
2015 04 14 – don’t log L2 to tblSectionLog specifically, log as general section to prevent double logging of pit stops
2015 04 14 – remove DatabaseToCompetitors (replaced by RestoreSession)
– restore TOD from tblSectionLog in RestoreSession
2015 04 13 – add support for new $O messages (TireType, P2P, Passes)
– fix tracking of car position in pit lane with PO=SFP, ignore inactive pit lane timelines
– add PitStatus to PICFlag to track if Pits are OPEN or CLOSED, only highlight if Pit Status not defined or CLOSED
2015 04 12 – add RelayServer to distribute input data stream
– fix logging of pit stops when PO=SFP (pit lane does not straddle SF line, therefore use current lap on pit out as pit lap
– fix processing of $O messages outside of active sessions without corresponding $C/$E messages
2015 04 09 – don’t update weather data on startup (before Weather table configured).
2015 04 05 – add Weather graphing (Ambient Temperature, Track Temperature, Barometric Pressure, Humidity, Wind Speed, Wind Direction (not implemented))
2015 04 04 – add Maps array to support multiple track maps
2015 04 04 – add Graphs array to support multiple graphs for analysis
2015 04 02 – replace mnuLoadSessionClick and DatabaseToCompetitor with mnuRestoreSessionClick and RestoreSession to share the same code
2015 03 30 – add mnuTelemetryLapDistance to use $P lapdistance value to position cars on track. Helps with a) monitoring telemetry data feed, b) possible precise location of car on track.
2015 03 29 – add 3rdFTime and NthFTime to results table to display 3rd..Nth fastest lap time
2015 03 28 – add 2ndFTime to results table for 2nd fastest time
– add LastTrap to results table
2015 03 21 – change AheadUsOnTrack to AheadUs and BehindUsOnTrack to BehindUs
2015 03 17 – fix teamcar list (apply filter to eliminate null car numbers from list (double ,’s, leading or trailing ,’s)
2015 03 16 – display laptime instead of projtime for holdtime/highlighttime after completion of a lap
2015 03 15 – add Highlight Yellow Pit Stop option to track map to highlight yellow flag at PIC.
2015 03 02 – add LeaderLap to TimeCard
– add LeaderLap to SessionResults
– add LeaderLap to SessionLog
2015 02 11 – remove shuffling of competitors down scoreboard when a competitor improves. Let Orbits update scoreboard
– prompt for filename when copying database
2015 02 04 – add option to display driver name in RunningOrder
2015 02 03 – fix rendering of first pit window that begins at race start to draw on the correct row (was drawing on the previous row). Also fixes hiding of ‘car position’ and ‘previous pitstops’ beneath pit window.
2015 02 02 – fix display of Fuel In Car in Metric mode to use competitor.FuelCapacity instead of the global FuelCapacity
– remove default series1 : TSeries from dbcLapChart removes access error when no competitors are selected for the graph.
– remove highlighting series with Legend if only one series in graph
– use getClassColor when adding a class to the ClassLeader array to assign default class colors (uniform routine to set Class Colors).
2015 02 01 – add support for different column orders (add support for column reordering)
2015 01 24 – simplify/fix Pass Around logic for RunningOrder
– pause processinput (set processing=true) before copydatabase to prevent record lock errors
– add Highlight Pass Around and Pass Around Color menus to Running Order Popupmenu
– fix display of LD in RunningOrder
2015 01 23 – set Stint StartTOD to start of race and limit EndTOD to duration of race
– limit stint EndTime to duration of race
– fix ClsDiff and ClsGap calculations (was overwriting with bad data)
– filter out extra ‘,’ in team cars list.
2015 01 22 – change Refresh to not reset Results Column Widths
– add Refresh All (CTRL+F5) to reset column widths after refreshing the data
– remove LapsDownWaveBy code
– highlight passaround cars in Running Order (P and LD fields under caution)
2015 01 21 – add StartTOD, EndTOD, StartRank and EndRank to tblStints
– add code to restore stints in Database to Competitors rountine
– add code to restore stints to Restoresession
2015 01 21 – implement Restore Session for team prioritized loading of session data from ABS file.
2015 01 20 – add Drive Times Report
2015 01 14 – add TopSpeed to Results table, display fastest section speed, regardless of where it is on the track.
2015 01 14 – auto decompress map archive file if user selects a zip file for the track map.

RaceTools v2.51 for IMSA

This is an optional release. It includes minor fixes. If these fixes are not required, you should stick with what you have. You might want to only run this version on systems that require these fixes or upgrades.

As always, be aware that the software relies on the data and if there are interruptions in the data feed or other issues, the reports may have errors. Always double check the information and make sure you understand

Running Order

The Running Order report has been updated to reflect the elimination of the Lap Down Wave By rule. The LD@Y field is no longer available. To help identify pass-around cars, under caution, all cars between the safety car and their class leader can have their  ‘P’ and ‘LD’ fields highlighted in the Pass Around Color (set it using the popup menu, default is Red), if the Highlight Pass Around option is selected.


There are now two ‘Refresh’ options. The default Refresh (F5) option refreshes the data, sorting the competitors, leaderboard, etc. but no longer resizes the Session Results columns. To autoresize the Session Results columns (and do a data refresh) you now need to use the Refresh All (CTRL+F5) option.

The Drive Times report now properly use the race start time as the start of the race rather than the first team car crossing.

Download the latest version of the software from



2015 01 23 – set Stint StartTOD to start of race and limit EndTOD to duration of race

– limit stint EndTime to duration of race

– fix ClsDiff and ClsGap calculations (was overwriting with bad data)

– filter out extra ‘,’ in team cars list.

2015 01 22 – change Refresh to not reset Results Column Widths

– add Refresh All (CTRL+F5) to reset column widths after refreshing the data

– remove LapsDownWaveBy code

– highlight passaround cars in Running Order (P and LD fields under caution)


2015 01 21 – add StartTOD, EndTOD, StartRank and EndRank to tblStints

– add code to restore stints in Database to Competitors rountine

– add code to restore stints to Restoresession

2015 01 21 – implement Restore Session for team prioritized loading of session data from ABS file.

2015 01 20 – add Drive Times Report

2015 01 14 – add TopSpeed to Results table, display fastest section speed, regardless of where it is on the track.

2015 01 14 – auto decompress map archive file if user selects a zip file for the track map.


RaceTools v2.50 for IMSA

RaceTools v2.50 for IMSA

  • The first release is now available. There will likely be an update  before the weekend as I test and fine tune things.
  • This version has features geared towards the race rather than for practice or qualifying.

You can download the latest version:

New Features:

Drive Times Report (Alt+F2)

  • Complements the Stint Report
  • Displays the information required by IMSA for logging Drive Times for each driver.
  • As with the other reports, you can change the sort order by clicking on the column title. The default is by Driver Name so that they are grouped by Driver, but you can change it to sort by Lap or any other column.

Drive Times Report

Restore Session (CTRL+R)

  • An optimized version of the Load Session function to recover quickly from a restart mid-session. Use this instead of Load Session if you need to restart the software mid-race. As soon as the software reloads, hit CTRL+R (or File/Restore Session from the main menu) and load the session file (*.abs) of the current session.
  • Loads the stint times for all competitors (takes only a few seconds), then loads the lap times and section times for the team car, followed by all of the other cars. This means that the full details of the team car will be available within a couple of minutes including all drive times (stints), lap times, section times, pit stops, etc. The rest of the data will be restored in the background. It might take a couple of hours for a full 24 hour race, but at least you will be back up and running with as much of the team data as possible as soon as possible and the software is operational while the details are loaded in the background.


RaceTools v2.49 released

Happy New Year!

With each new year comes a new version of RaceTools. Last year’s version will not work in 2015. To continue using RaceTools you must download the latest version (v2.49). See the download page for the latest version of the software.

New license keys are being distributed to teams who have renewed their software license for 2015. If you don’t receive your software license key by January 1st, please contact me for more information.

Here is a look back at what has changed in the software in 2014. Not all changes apply to all versions.


2014 12 17 – hide Oval Layouts from non-IndyCar versions

2014 12 02 – update Expiry Date to 12 31 2015


2014 09 16 – fix extra TLabels for TrapSpeed sections. Caused by resetting the Labels Array in DrawCompareLaps and recreating labels for trap speed sections


2014 08 22 – remove Side-By-Side spacing based on dynamic scaling, fix cars being offset by too large an amount

2014 08 22 – set rank earlier in getRaceInfo to before UpdateClassRank, move UpdateClassRank to end of GetRaceInformation routine to set ClassRank correctly


2014 08 17 – add Announcements to the bottom of the track map to display the latest announcement.

– add Pit Status for INDYCAR version, Pits Closed on Yellow, Pit Status via $A RaceControl messages

2014 08 15 – fix setting ID when selecting Car to set Fuel In Car in Pit Stop Window table. Lookup based on ‘Nr’ column instead of index within Scoreboard which is wrong if not showing all cars in Pit Stop table


2014 08 13 – exclude INVALIDATED laps from Average Laptime

– exclude Laptime<FLapTime from Average Laptime

– add PIC to TimeCards for MultiClass versions


2014 07 29 – hide Add Class option from non-multiclass versions

– add ‘CarNr’ export to Lap Times export (was not implemented)

2014 07 29 – add CK to list of Session Results fields and to the default columns

– add definition of columns to missing descriptions in Session Results column editor, default hint is column name instead of ‘N/A’

2014 07 28 – add DeleteEmptyPitLaneLaps to eliminate false pit stops that are triggered by a Pit In crossing without an associated pit out crossing.


2014 07 24 – add LapTimes logging to export laptimes for multiple cars


2014 07 12 – track FuelEconomy setting changes and only recalculate if value changed. Prevent exiting fields from updating FuelEconomy figures

2014 07 12 – fix Series.Transparency to 0 if GraphLineWidth>0 to re-enable lines between points.


2014 07 11 – classify ‘SB’ as Logical section instead of physical section for IOWA Speedway layout.

2014 07 06 – ignore $X flag time for current flag. Calculate current flag time using $F flag message from MLP feed, otherwise the flag time doubles

fixes flag times (GreenTime, YellowTime, RedTime)

2014 07 03 – use tblSessionLog[SessionCode] to set SessionCode in DatabaseToCompetitor (LoadSession) instead of tblSessionInfo[SessionCode] because sometimes the database includes the next session in the SessionInfo table before it is closed. Loading the database loads the empty session.

fall back to use tblSessionInfo if tblSessionLog[SessionCode] is not available


2014 06 26 – fine tune spacing between cars for Spacing and Side-By-Side modes

2014 06 24 – fix print map subtitle of Best Lap to match actual comparison. Set ID2 correctly.

2014 06 08 – add Live Rank option to Running Order to display Projected Rank Live in place of Rank, and Projected Class Rank in place of PIC, useful during races to show actual on track position instead of SF position

– add ProjClassRank to track live PIC/projected PIC

– set ProjClassRank in SortProjRank

– add Leader On Track option to Track map to highlight the actual leader on track and not the leader at the SF line. Perhaps I will find a way to highlight both.

2014 06 08 – clear TrackTemperatures before populating with $W record

– populate full $W fields if available (ambient temperature, barometric pressure, wind speed, wind direction, humidity)


2014 06 03 – add SortColumnTitles option to Session Results popup menu to sort the fields in alphabetical order (instead of default groupings)

– adjust order of column titles

2014 05 30 – add Track Temperatures to track map

– add TOD= option to Replay Until function

– thicken start/finish line (3 lines wide)


2014 05 21 – fix Tow Filter (functionality removed when refreshdisplay optimized to use sorted lists instead of database. Functionality restored.

– add Upload Logfile to quickly upload current logfile


2014 05 16 – update QStatus strings

– make SessionFilter case insensitive

– update SessionFilter field in Configuration window

2014 05 16 – add ALT+T as short cut for Tow Filter

– check for Delta(n) and SR(n) fields before accessing them to resolve missing fields (due to track configuration changes) in BestLap/BestSplits/BestTrap reports

2014 05 14 – add ‘Tow Filter Enabled’ to caption when applicable

– add version, EventName, TrackName to caption


2014 05 13 – update applyTowFilter to properly use TowTimeLines setting

– call SortNTScoreboard (Non-Tow Scoreboard) after processing Completed Lap Message

– fix rendering of Best Lap map with Tow-Filter enabled (reference NTScoreboard instead of SessionInfo.NonTowP1ID)

2014 05 12 – rename INDYLIGHTS version to MRTI

– check for Indy Lights registry for team/key pair, save as MRTI team/key for backwards compatibility


2014 05 11 – add Section_OT field for each section to track OT usage within a section

– display Section OT usage with Red font.

2014 05 11 – fix delete all pit stops function (Range Error)

– fix logging of OT_Status in sectiontimes

2014 05 06 – fix TimeGeargetHeartBeat to handle timed races with no LapsToGo values.

– fixes display of Total Laps, LapsToGo and Pit Stop Windows for timed races with no distance entered.

2014 05 05 – add Package and Send Files to make it easy to send log and configuration files for debugging purposes

2014 05 04 – use SectionType instead of comparing section names for Live Section title and field management. Custom sections may be named anything. Check for SectionType=TrapSpeed instead of section naming convention

– use FindSectionID to determine if FastestSplits title is a section name instead of specific section naming convention

2014 05 03 – change Excel Export Diff to TeamCar-Leader to get positive values

2014 05 03 – set TLabel.Transparent = false to show background color in configuration window

2014 05 02 – break up zip file into path and filename

– disable mnuCloseFile when replay file finished.

– log flag times in announcement window.


2014 05 01 – set sgdSessionResults.RowCount to number of competitors displayed (eliminate extra rows when lines needed decreases, ie. showing single class in multi-class mode).

– add LD@Y to RunningOrder for all IMSA versions, populate LapsDownAtCaution when Y flag first seen.

– change Safety Car (SC) color in Running Order to clRed from clYellow to match color of car on track map

– refresh frmRunningOrder.PopupMenuPopup if new classes added to run.

2014 04 26 – add ContrastFont to setting font color within PrintGrid

– add Print option to SessionResults table (popup menu)

2014 04 25 – add logic to set Sn sections as logical instead of physical sections if SnA and SnB exist

– add mnuFlipWithTrackMap to SessionResults to swap positions of Session Results and Track Map.


2014 04 24 – add Diff to Live Excel Export

2014 04 23 – sdd TireType to graph options to display tire type color for point

2014 04 21 – add support for $M broadcast messages, $U track timeline distances, and $D deleted lap notices

2014 04 14-20

– update RIS/WEC version

– update Import CSV

– update RIS module

– fix Pit Stop Report

– add frmMain.SetFocus to OnHide of popup windows to return program focus to main program window.

2014 04 11 – LapTimes Report – fix display of lap times with SortByLaptime enabled (was missing fastest lap)

2014 04 11 – add QuickSort logic to TimeGear code

2014 04 10 – LapTimes Report – fix display of drivername to use NrRow with and without ShowAverages enabled

– LapTimes Report – add logic to display drive of lap selected in multiclass version instead of current driver

– LapTimes Report – fix lookup of car number with/without mnuShowAverages. Fixes inserting bad car numbers by misinterpreting laptimes as car numbers

2014 04 07 – optimize RefreshDisplay to use Competitors list instead of database, reduced calculation time from 2->20 seconds to < 0.1 seconds.

– fix logic for filtering which cars to display in the LiveSections and Pit Stop tables

– if Show All Cars selected, show all cars within the selected classes

– If Show All Cars not selected, only show selected cars and team cars in the selected classes

– If Exclude Other Classes selected, ignore Selected Class list and only display cars that are in the Team Car Class.

2014 04 04 – add InDriver to Pit Stop Report for MultiClass (multi-driver) version

2014 03 29 – add wildcard session filtering

2014 03 28 – trap GetTrackMap error on launch. Try to reload if first attempt fails.

2014 03 14 – check pnlTop.Height to make sure pgMain is visible. Fixes problem when a configuration with a taller screen is loaded on a smaller screen and cannot access the pgMain section

2014 03 12 – add bookmark code to disable scrolling of table to last record to TimeLineAudit

2014 03 07 – update F1 – Best Splits layout when track configuration changes.

2014 02 24 – highlight Status in Session Results when cars in pit

– set default class colors for P, GTLM, PC, GTD, ST and GS classes if the ClassColors.ini file is not found

2014 02 11 – update Laps To Go in SessionStatus for Timed Race mode.

– test BehindLeader for ‘L’ not ‘LAP’ as some versions set BehindLeader as ‘xL’ not ‘x LAPS’

– remove references to SessionCode[2], use SessionType to test for Session Type

– fix setting of StartDate for multi-day (past midnight) sessions when the software is launched on the second date

2014 01 25 – add Current Flag Time type to display time of current flag, used to display time since last flag change

2014 01 24 – don’t resize TrapSpeed columns with every refresh, only if manually refreshed

– trap Refresh errors

2014 01 20 – add option to include Class Leaders when ExcludeOtherClasses selected

– Add PlayUntilFlag option to pause Replay based on ElapsedTime, Lap #, or Flag Status

2014 01 18 – add option to highlight LSP and LD columns to help with Lap Down Wave By rule

– add option to highlight LSP and LD only under caution

– add option to highlight LSP and LD only for Team Class

2014 01 17 – add Class filters (ExcludeOtherClasses, Class submenus to select classes to display

2014 01 17 – fix setting for StartTime in eRMON to always be >0, fix calculation of StintReport after midnight

2014 01 14 – fix loadSession, read ‘last’ sessioncode

– do not clear trackmap in ClearData

2013 12 28 – filter out sessionlog records where Driver OR Number is NULL in DriverPerformanceReport


RaceTools – Session Results Columns

The Session Results table can be configured to display any combination of over 30 different fields (over 60 in IndyCar/MRTI versions, over 45 in IMSA/WEC versions).

Here is a list of the available fields, not all of which are applicable depending on the series, session type and track type:

IndyCar Session Results Fields
IMSA Session Results Fields
IMSA Session Results Fields

Click on the field to get a more detailed description of the field.

Click on the field to get a detailed description.
Click on the field to get a detailed description.

CK – Check box to select competitor for other reports.
P – Position
Nr – Car Number
Name – Driver Name
FL – Fast Lap
FastTime – Fast Lap Time
BestSpeed – Fast Lap Speed
LapTime – Last Lap Time
LastTime – Last Lap Time
Laps – Laps Completed
LastSpeed – Last Lap Speed
Pace – Last Lap Delta to P1
± FLT – Delta to Fast Lap Time
Gap – Delta to preceding car
Gap SPD – Delta in speed to preceding car
GapOnTrack – Delta to previous car on track, time behind previous car
GapToNext – Delta to next car on track, time ahead of next car
ElapsedTime – ElapsedTime of last S/F crossing
PTS – Points if race ended with current results
PTime – Previous Fast Lap Time
± PT – Delta to Previous Fast Lap Time
PIC – Place In Class
CLASS – Class Name
STINT – Elapsed Time of Current Stint
Diff – Delta to P1
Diff SPD – Delta to P1 in speed
Gap2Us – Gap to Team Car
Pits – Number of Pit Stops made
LSP – Laps Since Pit
LapsDown – Laps down to P1
OR – Overall Rank
BestTime – Best Overall Lap Time
Status – Competitor Status
St – Start Position
Led – Number of Laps Led
P2P – Push To Pass
Tire – Current Tire Type on Car
LPit – Lap of Last Pit Stop
Outing Laps – Visual display of laps since last pit
MSP – Distance since Pit Stop
ThisPit – Pit Lane time for current or latest pit stop
LastPit – Pit Lane time for previous pit stop
QWU – Oval Qualfying Warm Up Lap Time/Speed
QL1 – Oval Qualfiying Lap 1 Time/Speed
QL2 – Oval Qualfiying Lap 2 Time/Speed
QL3 – Oval Qualfiying Lap 3 Time/Speed
QL4 – Oval Qualfiying Lap 4 Time/Speed
QTotal – Oval Qualifying Total Lap Times or Average Lap Speed
QLTime – Oval Qualifying Average Lap Time
QSpeed – Oval Qualifying Average Lap Speed
QStatus – Qualifying Status
QLaps – Number of Qualifying Laps Completed
QRank – Qualfying Rank
QAttempt – Oval Qualifying Attempt Number
QDay – Oval Qualifying Day of attempt
QTarget – Lap Time required to match each competitor for current qualifier
QTotal+ – Projected Qualifying Total Time or Average Speed
Tow FL – minimum Gap On Track for Fast Lap, used to guage tow factor of Fast Lap
Tow LL – minimum Gap On Track for Last Lap, used to guage tow factor of Last Lap
Proj. – Projected Lap Time/Speed
P+ – Projected Rank based on Projected Lap Time/Speed
NTFLap – Non-Tow Fast Lap
NTFTime – Non-Tow Fast Lap Time
NTFSpeed – Non-Tow Fast Lap Speed
NTR – Non-Tow Rank
Team – Team Name
Engine – Engine Supplier
MaxL – Maximum Laps possible for competitor based on Time Remaining/Leader Laps
L2G – Maximum Laps To Go for competitor based on Time Remaining/Leader Laps
RollAvg – Rolling Lap Average, average of last x number of laps
BP – Best Position in session
CLSDiff – Gap to class leader
CLSGap – Gap to previous car in class
Optimal – Optimal Lap Time
LP+ – Live Projected Rank, including Projected Lap Times of active competitors
TackGap2Us – Gap to team car on track
BehindUsOnTrack – time ahead of team car on track
AheadUsOnTrack – time behind of team car on track

RaceTools – Layouts

RaceTools allows you to save and restore custom layouts with quick links to predefined, commonly used layouts. Specifically, there are quick links to Race, Qualifying and Practice layouts. IndyCar versions get to choose Road versus Oval layouts.

Layout Menu

These custom layouts use a special file naming template: <application name>_<SessionType>_<TrackType>.ini.
<application name> is the name of the program, usually INDYCAR_TSModule, IMSA_TSModule, MRTI_TSModule or WEC_TSModule.
<SessionType> is either ‘Race’, ‘Qualifying’ or ‘Practice’
<TrackType> is either ‘Road’ or ‘Oval’ (for INDYCAR and MRTI versions).
ie. ‘IMSA_TSModule_PracticeRoad.ini‘ is the filename for the Practice Layout for the IMSA version of RaceTools. ‘INDYCAR_TSModule_QualifyingOval.ini‘ is the filename for the Oval Qualifying Layout for the INDYCAR version of RaceTools. ‘WEC_TSModule_RaceRoad.ini‘ is the Race Layout for the WEC version of RaceTools.

If you select the Layout/Auto option, RaceTools will automatically load the correct layout when the session changes.

Once you have organized the layout of the software to your satisfaction, select the Layout/Save option to save the layout to a file. You can name it anything you’d like or use the above filenaming convention to make it the default layout for the different session types.

To transfer the layout to other computers on your team, just copy the .ini file(s) to each machine where they can be loaded and modified.