Profile/Burnout Paradise/Progression Profile/Development

From Burnout Wiki

The profile underwent extensive changes, reflecting the changes the game itself went through over the course of development.

This page will expand as more runnable builds are found and recovered.

Version 7

Burnout 5 (2007-02-22 build) uses this profile. It is significantly different to the final version of the profile.

Note that only the Xbox 360 layout is documented on this page, but other platforms should be similar.

Structures

Following the MC02 header, there is text data. It is believed this is a metadata description of the save file.

Offset Length Type Name Description Comments
0x0 0x100 char[256] ? Profile description "# Violation Points", where # is the number of violation points earned

This is completely separate from the profile. This chunk has its own checksum in the MC02 header.

BrnGui::ProfileManager::ProfileStoredData

Offset Length Type Name Description Comments
0x0 0x172D0 FixedSizeOpaqueBuffer<Profile> ? Profile data

BrnProgression::Profile

Offset Length Type Name Description Comments
0x0 0x4 int32_t miVersionNumber Version number of the profile 7
0x4 0x20 char[20] macName Player-chosen profile name Unused
0x24 0xC Padding
0x30 0x10 Vector3 mCarPosition Spawn position of the player vehicle
0x40 0x10 Vector3 mCarDirection Spawn direction of the player vehicle
0x50 0x8 CgsID mCarId The vehicle the player spawns in
0x58 0x8 CgsID mWheelId The wheel the player vehicle spawns with
0x60 0x4 uint32_t muTimeStampOfLastRoadRulesDownload
0x64 0x4 int32_t miViolationPoints Violation points amount
0x68 0x4 int32_t miRank Rank
0x6C 0x4 int32_t miCarCount The number of CarData entries present
0x70 0x4 int32_t miBlackspotCount The number of blackspot entries present
0x74 0x4 int32_t miWorldOffenceCount The number of world offence entries present
0x78 0x4 int32_t miRivalCount The number of RivalData entries present
0x7C 0x4 int32_t miRaceCount The number of race entries present
0x80 0x4 int32_t miCustomRaceCount The number of custom race entries present
0x84 0x4 Padding
0x88 0x2800 CarData[256] maCars Vehicle unlocks, mileage
0x2888 0x1000 BlackspotData[256] maBlackspots Blackspot data
0x3888 0x3000 RivalData[256] maRivals Information on roaming rivals
0x6888 0x1000 RaceData[256] maRaces Race data
0x7888 0x1000 WorldOffenceData[256] maWorldOffences World offence data
0x8888 0xC940 SavedRace[280] maCustomRaces Custom race data Same structure as how races are defined in ProgressionData
0x151C8 0x18C0 ChallengeHighScoreEntry[66] maNetworkChallengeData Online Road Rule scores
0x16A88 0x840 ChallengeData[66] maChallengeData Local player Road Rule scores
0x172C8 0x8 Padding
BrnProgression::CarData
Offset Length Type Name Description Comments
0x0 0x8 CgsID mId ID of the unlocked vehicle
0x8 0x4 float32_t mfDistanceDriven Distance the vehicle has been driven (meters)
0xC 0x2 uint16_t muTotalTakedownCount Total number of takedowns
0xE 0x8 uint16_t[4] mauTakedownCounts Takedown counts per takedown type See TakedownType
0x16 0x2 uint16_t muEventCount Number of events
0x18 0x2 uint16_t muOffenceCount Number of offences
0x1A 0xC bool[12] maCompletedOffences Offences completed
0x26 0x2 Padding
BrnProgression::BlackspotData
Offset Length Type Name Description Comments
0x0 0x8 CgsID mId ID of the vehicle used to get the high score
0x8 0x4 int32_t miHighScore High score
0xC 0x4 Padding
BrnProgression::RivalData
Offset Length Type Name Description Comments
0x0 0x8 CgsID mCarId ID of the rival vehicle
0x8 0x4 int32_t miEventCount
0xC 0x4 int32_t miTakedownFromCount
0x10 0x4 int32_t miVerticalTakedownFromCount
0x14 0x4 int32_t miTakedownToCount
0x18 0x4 int32_t miVerticalTakedownToCount
0x1C 0x4 int32_t miTakedownToInEventCount
0x20 0x4 int32_t miTakedownToInLastEventCount
0x24 0x4 int32_t miEventMissingCount
0x28 0x1 bool mbDefeated Has been defeated
0x29 0x7 Padding
BrnProgression::RaceData
Offset Length Type Name Description Comments
0x0 0x8 CgsID mId Event ID
0x8 0x4 State meState
0xC 0x4 Padding
BrnProgression::WorldOffenceData
Offset Length Type Name Description Comments
0x0 0x8 CgsID mId Event ID
0x8 0x4 Type meType
0xC 0x4 Padding
BrnStreetData::ChallengeData
Offset Length Type Name Description Comments
0x0 0x8 BitArray<4u> mDirty See ScoreType for index names
0x8 0x8 BitArray<4u> mValidScores See ScoreType for index names
0x10 0x10 ScoreList mScoreList
BrnStreetData::ScoreList
Offset Length Type Name Description Comments
0x0 0x10 int32_t[4] maScores See ScoreType for index names
BrnStreetData::ChallengeHighScoreEntry
Offset Length Type Name Description Comments
0x0 0x20 ChallengeData Base class
0x20 0x40 PlayerName[4] maPlayerNames See ScoreType for index names
BrnWorld::CarOffence::TakedownType
Name Value Comments
E_TAKEDOWN_TYPE_VERTICAL 0
E_TAKEDOWN_TYPE_TBONE 1
E_TAKEDOWN_TYPE_AFTERTOUCH 2
E_TAKEDOWN_TYPE_OTHER 3
E_TAKEDOWN_TYPE_COUNT 4
BrnProgression::RaceData::State
Name Value Comments
E_STATE_NEW 0
E_STATE_AVAILABLE 1
E_STATE_WON 2
E_STATE_COUNT 3
BrnProgression::WorldOffenceData::Type
Name Value Comments
E_TYPE_SHORTCUT 0
E_TYPE_STUNT 1
E_TYPE_SIGNATURE_TAKEDOWN 2
E_TYPE_COUNT 3
BrnStreetData::ScoreType
Name Value Comments
E_SCORE_TYPE_TIME 0
E_SCORE_TYPE_STUNT_TIME 1
E_SCORE_TYPE_CRASH 2
E_SCORE_TYPE_SMASH 3
E_SCORE_TYPE_COUNT 4

Version 26 ("2007-10-04")

In v1.0, retail versions of the game supported upgrading save files with this version. Cagney (v1.3) introduced the profile upgrade resource which moved this logic away from the executable, with support for this version of the save file no longer available in external builds.

Changes compared to version 28 (1.0) are denoted in red.

BrnProgression::Profile

Only PS3 is listed but other platforms should follow similar changes.

PlayStation 3

Offset Length Type Name Description Comments
0x0 0x4 int32_t miVersionNumber Version number of the Profile structure 26
0x4 0x20 char[32] macName Player-chosen profile name Unused in the final game
0x24 0xC Padding
0x30 0x10 Vector3 mCarPosition Spawn position of the player vehicle Unused in the final game
0x40 0x10 Vector3 mCarDirection Spawn direction of the player vehicle Unused in the final game
0x50 0x8 CgsID mSpawnCarId The vehicle the player spawns in
0x58 0x8 CgsID mSpawnWheelId The wheel the player vehicle spawns with Unused in the final game
0x60 0x4 uint32_t muTimeStampOfLastRoadRulesDownload
0x64 0x4 float32_t mfDistanceDrivenOnline Distance driven online in cars (meters) Subject to distance limitations
0x68 0x4 float32_t mfDistanceDrivenOffline Distance driven offline in cars (meters) Subject to distance limitations
0x6C 0x4 float32_t mfTimePlayed Subject to time limitations
0x70 0x1 int8_t mi8CurrentProgressionRank Current license of the player See ranks
0x71 0x1 int8_t mi8PowerParkingBestRating Power Parking record
0x72 0x1 int8_t mi8PowerParkingBetweenOtherPlayersBestRating Power Parking between players record Not displayed in the final game
0x73 0x1 Padding
0x74 0x4 uint32_t muBestNewBurnoutChainScore Burnout chain record
0x78 0x44 int32_t[17] maGameModeTypeAmount Number of events present, per type See EGameModeType
0xBC 0x44 int32_t[17] maGameModeTypeAmountDiscovered Number of events discovered, per type See EGameModeType
0x100 0x44 int32_t[17] maGameModeTypeAmountCompleted Number of events completed for the current license, per type See EGameModeType
0x144 0x44 int32_t[17] maGameModeTypeAmountCompletedSinceTheStart Total number of events completed, per type See EGameModeType
0x188 0x4 int32_t miTotalTakedownCount Number of takedowns performed
0x18C 0x4 int32_t miTotalOnlineVerticleTakedownCount Number of vertical takedowns performed
0x190 0x34 int32_t[13] maiTakedownTypeCounts Number of takedowns performed, per type See ETakedownType
0x1C4 0x28 int32_t[10] maiWinsPerOfflineGameMode Number of events won, per type See EGameModeType
0x1EC 0x28 int32_t[10] maiRankWinsPerOfflineGameMode Number of events won causing a license upgrade, per type See EGameModeType
0x214 0x28 int32_t[10] maiLossesPerOfflineGameMode Number of events lost, per type
0x214 0x4 int32_t miCompletedBarrelRolls Barrel roll record
0x218 0x4 float32_t mfCompletedAirSpinAngle Flat spin record
0x21C 0x4 float32_t mfCompletedHandbreakTurnAngle Handbrake turn record Not displayed in the final game
0x220 0x4 float32_t mfCompletedDriftDistance Drift record
0x224 0x4 float32_t mfOncomingDistance Oncoming record
0x228 0x4 float32_t mfAirMaximum Air time record
0x22C 0x4 int32_t miHighestShowTimeScore Showtime record
0x230 0x4 int32_t miBestStuntRunScore Stunt run record
0x234 0x4 int32_t miCarCount Number of vehicle entries
0x238 0x4 int32_t miLiveryDataCount Number of livery entries
0x23C 0x4 int32_t miRivalCount Number of rival entries
0x240 0x4 int32_t miEventCount Number of event entries
0x244 0x4 Padding
0x248 0x3000 CarData[512] maCars Vehicle unlocks, colors, and damage
0x3248 0x3000 LiveryData[512] maLiveryChoices Selected finishes and mileage
0x6248 0xE00 RivalData[64] maRivals Roaming rival/shutdown car info
0x7048 0x578 ProfileEvent[175] maEvents Event completion states
0x75C0 0x3018 Set<CgsID, 512u>[3] maStuntElements Collectible completion states See EStuntType
0xA5D8 0x4 uint32_t muMedalCountFromTheStart Total number of events won
0xA5DC 0x1 bool mbGoldCarsUnlocked Tracks whether gold finishes are unlocked
0xA5DD 0x1 bool mbSilverCarsUnlocked Tracks whether platinum finishes are unlocked
0xA5DE 0x2 Padding
0xA5E0 0x30 Set<CgsID, 5u> mJunkYardsDriveThruSet Discovered Junkyards
0xA610 0x60 Set<CgsID, 11u> mBodyShopsDriveThruSet Discovered Auto Repairs
0xA670 0x30 Set<CgsID, 5u> mPaintShopsDriveThruSet Discovered Paint Shops
0xA6A0 0x78 Set<CgsID, 14u> mGasStationsDriveThruSet Discovered Gas Stations
0xA718 0x60 Set<CgsID, 11u> mCarParksDriveThruSet Discovered Car Parks
0xA778 0x3E88 Array<CgsID, 2000u> maFreeBurnChallengeData Completed Freeburn and Timed Challenges
0xE600 0x9280 HitPropsBitArray mabHitPropBitArray Smashed billboards and individual gate sections 500 TRK units, 600 prop hit indicators (bits) each. Not all TRKs are used
0x17880 0x1E int16_t[3][5] maaiStuntCountsByCounty Collectible progression, per-county See EStuntType and counties
0x1789E 0x2 Padding
0x178A0 0x1000 ChallengeHighScoreEntry[64] maNetworkChallengeData Online mainland car Time/Showtime Road Rule scores and player names
0x188A0 0xA00 ChallengePlayerScoreEntry[64] maChallengeData Player mainland car Time/Showtime Road Rule scores and vehicles
0x192A0 0x4 uint32_t muLastRoadRulesResetTime
0x192A4 0x1C NetworkTexture mPlayerLicencePicture License picture header
0x192C0 0x2580 char[9600] macPlayerLicenceTextureData License picture data
0x1B840 0x1 bool mbPlayerLicencePictureIsValid Tracks whether the license picture is present
0x1B841 0x7 Padding
0x1B848 0x20F8 Array<MugshotInfo, 30u>[5] maaMugshotInfo Information on saved mugshots
0x1D940 0x28 BitArray<30u>[5] maAvailableMugshotFileIDs Tracks what mugshot slots are used
0x1D968 0xC float32_t[3] mafCarTypes Unused in the final game
0x1D974 0x4 ECarType meCurrentCarType Boost type of the current vehicle See ECarType
0x1D978 0x20 BitArray<256u> maHasPlayerSeenTraining Tracks the tips DJ Atomika has used
0x1D998 0x4 int32_t miNumOnlineRacesDone Number of online races completed
0x1D99C 0x4 int32_t miNumOnlineRacesWon Number of online races won
0x1D9A0 0x4 int32_t miNumMugshotsSent Number of mugshots sent by the player
0x1D9A4 0x4 Padding
0x1D9A8 0x10 DateAndTime mDateLicenceIssued Date the player's license was created
0x1D9B8 0x10 DateAndTime mDate100PercentCompleted Date the player achieved 100% completion
0x1D9F4 0x4 Padding
0x1DA00 0x8 BitArray<60u> mAchievementsEarnt Tracks which Paradise Awards have been earned
0x1D9C8 0x1 bool mbCompletionSequenceShown Tracks whether the 100% completion animation has been shown
0x1D9C9 0x1 bool mbIsNewProfile Tracks whether the profile is new Intro will be shown if true
0x1D9CA 0x2 Padding
0x1D9CC 0x4 float mfRedundantFloat1
0x1D9D0
(reordered)
0x8 BitArray<35u> mSeenTrophyAwardBitArray Tracks which of the primary 35 vehicles unlocks have been shown
0x1D9D8 0x4 float mfRedundantFloat2
0x1D9DC
(reordered)
0x4 int32_t miHighestNumberOfTakeDownsInRoadRage Road Rage record
0x1D9E0 0x4 int32_t miRedundantInt2
0x1D9E4 0x4 int32_t miRedundantInt3
0x1D9E8 0x4 int32_t miRedundantInt4
0x1D9EC 0x1 bool miRedundantBool1
0x1D9ED 0x1 bool miRedundantBool2
0x1D9EE 0x1 bool miRedundantBool3
0x1D9EF 0x1 bool miRedundantBool4

Everything after mbRedundantBool4 in version 28 (1.0) did not exist in this version.

BrnProgression::LiveryData

Distance driven was not stored. Instead it was a simple flag to denote whether the car has been ever been driven.

Offset Length Type Name Description Comments
0x0 0x8 CgsID mBaseCarId
0x8 0x8 CgsID mChosenLiveryCarId
0x10 0x1 bool mbHasBeenDriven
0x11 0x7 Padding