Carmageddon Wiki
Advertisement

This sub-page of SAVEDGAMES.ARS covers information regarding the 010 Editor tool.

Template[]

Binary template to easily analyze content of the file, this is a perfect tool to quickly see what's for what in raw hex mode.

//-----------------------------------------------------------------------------
//--- 010 Editor v4.0.1 Binary Template
//
// File     : Carmageddon 2 Savegame
// Purpose  : Analyze savegame format
//            base work for Carmeditor 2-Rebirth (>= 0.2.x.x)
// Author   : Rudy Dullier / Shutting_Down
// Revision : 2013-02-09 12:49
// Wikia    : http://carmageddon.wikia.com/wiki/SAVEDGAMES.ARS
//
//-----------------------------------------------------------------------------

LittleEndian(); 
struct FILE {
    while (!FEof()) {
        struct SLOT {
             struct {
                byte    dummy;
                char    saveFormatVersion[2] <comment="Currently V4">;
                byte    dummy;
            } HEADER < fgcolor=cWhite, bgcolor=cRed >;
            
            string  playerName < fgcolor=cBlack, bgcolor=cGreen >; // Maybe 12 actually? Could use string and then compute size of filler
            byte    unknown1[14 - Strlen(playerName)-1]; // Maybe 2 only, check with playerName in string type
            string  opponentFileName < bgcolor=cLtPurple >; // Don't known what's this for?!
            byte    unknown2[32 - Strlen(opponentFileName)-1];
            
            struct SAVEDATE {
                char    day[2];
                char    delim;
                char    month[2];
                char    delim;
                char    year[4];
            } saveDate < fgcolor=cBlue, bgcolor=cLtAqua >;
        
            char    filer2[22];
        
            struct SAVETIME {
                char    hour[2]; // Char 1A = SUB (substitute)
                char    delim;
                char    minute[2];
                char    delim;
                char    second[2];
            } saveTime < fgcolor=cBlue, bgcolor=cLtAqua >;
        
            byte    unknown3[426]; // Must hold race unlocks, but what more?
            int32   money < fgcolor=cRed, bgcolor=cYellow >;
            int32   difficultyLevel < comment="0=easy, 1=normal, 2=hard" >;
            byte    padding[4];
        
            struct BOUGHT_CARS
            {
                int32 count < fgcolor=cRed, bgcolor=cLtPurple >;
                int32 cars[60] < fgcolor=cBlack, bgcolor=cLtPurple, comment="Array of int32, one per  car" >;
            } boughtCars;
        
            int32   currentCar < bgcolor=cLtBlue >;
            int32   currentRace < bgcolor=cLtGreen >;
            int32   isMissionEnabled <comment="Actually a boolean on 4 bytes", fgcolor=cWhite, bgcolor=cDkGreen>;
        
            struct APO {
                int32   Armor <bgcolor=cRed>;
                int32   Power <bgcolor=cGreen>;
                int32   Offense <bgcolor=cBlue>;
            
                int32   ArmorMax <bgcolor=cRed>;
                int32   PowerMax <bgcolor=cGreen>;
                int32   OffenseMax <bgcolor=cBlue>;
            } apo < fgcolor=cBlack >;
        } slot;
    }
} file;

Hex mapping[]

When using a binary template, the hex dump is colored by following definitions done in template. 010 Editor - Hex view

Template result[]

When using a binary template, the hex values are output in a colored tree view. Selecting a line highlights corresponding bytes in hex view. 010 Editor - Template result

Advertisement