whitepeak.org

i-Magic Catalyst (.ca) run file format

Introduction

As for the Fortius files, whenever fields have units associated with them, such as weight, distance etc., the Tacx software stores the SI unit any only converts to the Imperial system for display purposes.

Single byte characters (ASCII) are used throughout.

Note: I do not believe the scale factor is stored in this file. I am led to this conclusion because a) I cannot find it and b) the Tacx Analyser program does not display it for .ca files.

An .im file contains the following data blocks.

  1. General information.
  2. Program.
  3. Ride information.
  4. Ride data.

General Information Block

 

Field Offset Size .NET type Comments
Course name 0 30 Char[]
Unknown 30 10  
WattSlopePulse 40 4 UInt32
TimeDist 44 4 UInt32
No. of program records 48 4 UInt32
Total 52

As for the Fortius Catalyst Run Files, the values of the WattSlopePulse and TimeDist fields indicate the type of catalyst program in use, based on the following table.

  0 1 2
WattSlopePulse Watt Slope Pulse
TimeDist Time Distance  

For example, if WattSlopePulse was 1 and TimeDist was 0, the catalyst program would be a Slope - Time based one.

Program Block

 

Field Offset Size .NET type Comments
Duration 0 4 UInt32 seconds
PulseSlopeWatt 4 8 Double Pulse or slope or watt
Distance 12 8 Double km
Total 20

Ride Information Block

This has the same layout as the .im ride info block.

Field Offset Size .NET type Comments
Unknown 0 4    
Course name 4 260 Char[]
Terrain 264 260 Char[]
Year of ride 524 2 UInt16
Month of ride 526 2 UInt16
Day of week 528 2 UInt16
Date of ride 530 2 UInt16
Time of ride (hours) 532 2 UInt16
Time of ride (mins) 534 2 UInt16
Time of ride (secs) 536 2 UInt16
Unknown 538 10  
Number of ride data records 548 4 UInt32 This seems to be 1 more than it should be for Catalyst
Unknown 552 4  
Ride distance (km) 556 4 Single
Ride duration (seconds) 560 4 Single
Team name 564 20 Char[]
Rider name 584 20 Char[]
Weight of rider (kg) 604 4 Single
Gender? 608 1 Byte 0 = male, 1 = female
Height of rider (cm) 605 4 Single
Rider year of birth 609 2 UInt16
Unknown 611 2  
Rider month of birth 613 1 Byte
Rider date of birth 614 1 Byte
Rider HR max 615 1 Byte
Rider HR min 616 1 Byte
Rider HR A Threshold 617 1 Byte
HR Zone 1 upper limit 618 1 Byte
HR Zone 2 upper limit 619 1 Byte
HR Zone 3 upper limit 620 1 Byte
HR Zone 4 upper limit 621 1 Byte
HR Zone 5 upper limit 622 1 Byte
Rider email 623 260 Char[]
Rider country 883 256 Char[]
Rider remarks 1139 256 Char[]
Course notes 1395 256 Char[]
Feeling 1651 21 Char[]
Temp 1672 11 Char[]
Cool down records? 1683 4 Int32 -1 if none present
Unknown 1687 6  
No. of laps 1693 4 UInt32
Total 1701

Ride Data Block

 

Field Offset Size .NET type Comments
Distance 0 4 Single metres
HR 4 1 Byte
Cadence 5 1 Byte
Power x 10 6 2 UInt16 Divide by 10 to get power in watts
Speed x 10 8 2 UInt16 Divide by 10 to get speed in km/h
Total 10