Profile/Burnout Paradise/Progression Profile/Development: Difference between revisions
mNo edit summary |
(v7 takedown types) |
||
(17 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
[[Burnout 5 (2007-02-22 build)]] uses this profile. It is significantly different to the final version of the profile. |
[[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. |
|||
== Layout == |
|||
There appears to only be a single chunk in this version, as opposed to the multiple found in version 28 and above. |
|||
== Structures == |
|||
Following the MC02 header, there is text data. It is believed this is a metadata description of the save file. |
|||
Offsets are relative to 0x1C, the end of the MC02 header (start of the Profile structure). |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|- |
||
| 0x0 || 0x100 || char[256] || ? || Profile description || "# Violation Points", where # is the number of violation points earned |
|||
! Offset !! Size !! Type !! Name !! Description !! Comments |
|||
|} |
|||
This is completely separate from the profile. This chunk has its own checksum in the MC02 header. |
|||
=== BrnGui::ProfileManager::ProfileStoredData === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|- |
||
| 0x0 || 0x172D0 || FixedSizeOpaqueBuffer<[[#BrnProgression::Profile|Profile]]> || ? || Profile data || |
|||
| 0x0 || 0x100 || char[100] || ? || Violation points earned || Defaults to "0 Violation Points" |
|||
|} |
|||
==== BrnProgression::Profile ==== |
|||
{| class="wikitable" |
|||
! 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 || [[#BrnProgression::CarData|CarData]][256] || maCars || Vehicle unlocks, mileage || |
|||
|- |
|||
| 0x2888 || 0x1000 || [[#BrnProgression::BlackspotData|BlackspotData]][256] || maBlackspots || Blackspot data || |
|||
|- |
|||
| 0x3888 || 0x3000 || [[#BrnProgression::RivalData|RivalData]][256] || maRivals || Information on roaming rivals || |
|||
|- |
|||
| 0x6888 || 0x1000 || [[#BrnProgression::RaceData|RaceData]][256] || maRaces || Race data || |
|||
|- |
|||
| 0x7888 || 0x1000 || [[#BrnProgression::WorldOffenceData|WorldOffenceData]][256] || maWorldOffences || World offence data || |
|||
|- |
|||
| 0x8888 || 0xC940 || [[Progression Data/Burnout Paradise/Development#BrnProgression::SavedRace|SavedRace]][280] || maCustomRaces || Custom race data || Same structure as how races are defined in ProgressionData |
|||
|- |
|||
| 0x151C8 || 0x18C0 || [[#BrnStreetData::ChallengeHighScoreEntry|ChallengeHighScoreEntry]][66] || maNetworkChallengeData || Online Road Rule scores || |
|||
|- |
|||
| 0x16A88 || 0x840 || [[#BrnStreetData::ChallengeData|ChallengeData]][66] || maChallengeData || Local player Road Rule scores || |
|||
|- |
|||
| 0x172C8 || 0x8 || || || Padding || |
|||
|} |
|} |
||
===== BrnProgression::CarData ===== |
|||
== Structures == |
|||
=== CarData === |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|- |
||
| 0x0 || 0x8 || [[CgsID]] || mId || ID of the unlocked vehicle || |
|||
! Offset !! Size !! 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) || |
| 0x8 || 0x4 || float32_t || mfDistanceDriven || Distance the vehicle has been driven (meters) || |
||
|- |
|- |
||
| 0xC || |
| 0xC || 0x2 || uint16_t || muTotalTakedownCount || Total number of takedowns || |
||
|- |
|||
| 0xE || 0x8 || uint16_t[4] || mauTakedownCounts || Takedown counts per takedown type || See [[#BrnWorld::CarOffence::TakedownType|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 ===== |
|||
=== RivalData === |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! 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 ===== |
|||
{| class="wikitable" |
|||
! 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 ===== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || [[CgsID]] || mId || Event ID || |
|||
|- |
|||
| 0x8 || 0x4 || [[#BrnProgression::RaceData::State|State]] || meState || || |
|||
|- |
|||
| 0xC || 0x4 || || || Padding || |
|||
|} |
|||
===== BrnProgression::WorldOffenceData ===== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || [[CgsID]] || mId || Event ID || |
|||
|- |
|||
| 0x8 || 0x4 || [[#BrnProgression::WorldOffenceData::Type|Type]] || meType || || |
|||
|- |
|||
| 0xC || 0x4 || || || Padding || |
|||
|} |
|||
===== BrnStreetData::ChallengeData ===== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || [[CgsBitArray|BitArray<4u>]] || mDirty || || See [[#BrnStreetData::ScoreType|ScoreType]] for index names |
|||
|- |
|||
| 0x8 || 0x8 || [[CgsBitArray|BitArray<4u>]] || mValidScores || || See [[#BrnStreetData::ScoreType|ScoreType]] for index names |
|||
|- |
|||
| 0x10 || 0x10 || [[#BrnStreetData::ScoreList|ScoreList]] || mScoreList || || |
|||
|} |
|||
===== BrnStreetData::ScoreList ===== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x10 || int32_t[4] || maScores || || See [[#BrnStreetData::ScoreType|ScoreType]] for index names |
|||
|} |
|||
===== BrnStreetData::ChallengeHighScoreEntry ===== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x20 || [[#BrnStreetData::ChallengeData|ChallengeData]] || || Base class || |
|||
|- |
|||
| 0x20 || 0x40 || [[../#CgsNetwork::PlayerName|PlayerName]][4] || maPlayerNames || || See [[#BrnStreetData::ScoreType|ScoreType]] for index names |
|||
|} |
|||
===== BrnWorld::CarOffence::TakedownType ===== |
|||
{| class="wikitable" |
|||
! 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 ===== |
|||
{| class="wikitable" |
|||
! Name !! Value !! Comments |
|||
|- |
|||
| E_STATE_NEW || 0 || |
|||
|- |
|||
| E_STATE_AVAILABLE || 1 || |
|||
|- |
|||
| E_STATE_WON || 2 || |
|||
|- |
|||
| E_STATE_COUNT || 3 || |
|||
|} |
|||
===== BrnProgression::WorldOffenceData::Type ===== |
|||
{| class="wikitable" |
|||
! Name !! Value !! Comments |
|||
|- |
|||
| E_TYPE_SHORTCUT || 0 || |
|||
|- |
|||
| E_TYPE_STUNT || 1 || |
|||
|- |
|||
| E_TYPE_SIGNATURE_TAKEDOWN || 2 || |
|||
|- |
|||
| E_TYPE_COUNT || 3 || |
|||
|} |
|||
===== BrnStreetData::ScoreType ===== |
|||
{| class="wikitable" |
|||
! 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|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 <span style="color:red">red</span>. |
|||
== BrnProgression::Profile == |
|||
Only PS3 is listed but other platforms should follow similar changes. |
|||
=== PlayStation 3 === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x4 || int32_t || miVersionNumber || Version number of the Profile structure || <span style="color:red">26</span> |
|||
|- |
|||
| 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 [[../../#Time_and_distance_limitations|distance limitations]] |
|||
|- |
|||
| 0x68 || 0x4 || float32_t || mfDistanceDrivenOffline || Distance driven offline in cars (meters) || Subject to [[../../#Time_and_distance_limitations|distance limitations]] |
|||
|- |
|||
| 0x6C || 0x4 || float32_t || <span style="color:red">mfTimePlayed</span> || || Subject to [[../../#Time_and_distance_limitations|time limitations]] |
|||
|- |
|||
| 0x70 || 0x1 || int8_t || mi8CurrentProgressionRank || Current license of the player || See [[../#Progression rank|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 [[../#BrnGameState::GameStateModuleIO::EGameModeType|EGameModeType]] |
|||
|- |
|||
| 0xBC || 0x44 || int32_t[17] || maGameModeTypeAmountDiscovered || Number of events discovered, per type || See [[../#BrnGameState::GameStateModuleIO::EGameModeType|EGameModeType]] |
|||
|- |
|||
| 0x100 || 0x44 || int32_t[17] || maGameModeTypeAmountCompleted || Number of events completed for the current license, per type || See [[../#BrnGameState::GameStateModuleIO::EGameModeType|EGameModeType]] |
|||
|- |
|||
| 0x144 || 0x44 || int32_t[17] || maGameModeTypeAmountCompletedSinceTheStart || Total number of events completed, per type || See [[../#BrnGameState::GameStateModuleIO::EGameModeType|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 [[../#BrnGameState::ETakedownType|ETakedownType]] |
|||
|- |
|||
| 0x1C4 || 0x28 || int32_t[10] || maiWinsPerOfflineGameMode || Number of events won, per type || See [[../#BrnGameState::GameStateModuleIO::EGameModeType|EGameModeType]] |
|||
|- |
|||
| 0x1EC || 0x28 || int32_t[10] || maiRankWinsPerOfflineGameMode || Number of events won causing a license upgrade, per type || See [[../#BrnGameState::GameStateModuleIO::EGameModeType|EGameModeType]] |
|||
|- |
|||
| <span style="color:red"><s>0x214</s></span> || <span style="color:red"><s>0x28</s></span> || <span style="color:red"><s>int32_t[10]</s></span> || <span style="color:red"><s>maiLossesPerOfflineGameMode</s></span> || <span style="color:red"><s>Number of events lost, per type</s></span> || |
|||
|- |
|||
| <span style="color:red">0x214</span> || 0x4 || int32_t || miCompletedBarrelRolls || Barrel roll record || |
|||
|- |
|||
| <span style="color:red">0x218</span> || 0x4 || float32_t || mfCompletedAirSpinAngle || Flat spin record || |
|||
|- |
|||
| <span style="color:red">0x21C</span> || 0x4 || float32_t || mfCompletedHandbreakTurnAngle || Handbrake turn record || Not displayed in the final game |
|||
|- |
|||
| <span style="color:red">0x220</span> || 0x4 || float32_t || mfCompletedDriftDistance || Drift record || |
|||
|- |
|||
| <span style="color:red">0x224</span> || 0x4 || float32_t || mfOncomingDistance || Oncoming record || |
|||
|- |
|||
| <span style="color:red">0x228</span> || 0x4 || float32_t || mfAirMaximum || Air time record || |
|||
|- |
|||
| <span style="color:red">0x22C</span> || 0x4 || int32_t || miHighestShowTimeScore || Showtime record || |
|||
|- |
|||
| <span style="color:red">0x230</span> || 0x4 || int32_t || miBestStuntRunScore || Stunt run record || |
|||
|- |
|||
| <span style="color:red">0x234</span> || 0x4 || int32_t || miCarCount || Number of vehicle entries || |
|||
|- |
|||
| <span style="color:red">0x238</span> || 0x4 || int32_t || miLiveryDataCount || Number of livery entries || |
|||
|- |
|||
| <span style="color:red">0x23C</span> || 0x4 || int32_t || miRivalCount || Number of rival entries || |
|||
|- |
|||
| <span style="color:red">0x240</span> || 0x4 || int32_t || miEventCount || Number of event entries || |
|||
|- |
|||
| <span style="color:red">0x244</span> || 0x4 || || || Padding || |
|||
|- |
|||
| <span style="color:red">0x248</span> || 0x3000 || [[../#BrnProgression::CarData|CarData]][512] || maCars || Vehicle unlocks, colors, and damage || |
|||
|- |
|||
| <span style="color:red">0x3248</span> || 0x3000 || [[../#BrnProgression::LiveryData|LiveryData]][512] || maLiveryChoices || Selected finishes and mileage || |
|||
|- |
|||
| <span style="color:red">0x6248</span> || 0xE00 || [[../#BrnProgression::RivalData|RivalData]][64] || maRivals || Roaming rival/shutdown car info || |
|||
|- |
|||
| <span style="color:red">0x7048</span> || 0x578 || [[../#BrnProgression::ProfileEvent|ProfileEvent]][175] || maEvents || Event completion states || |
|||
|- |
|||
| <span style="color:red">0x75C0</span> || 0x3018 || [[CgsSet|Set]]<[[CgsID]], 512u>[3] || maStuntElements || Collectible completion states || See [[../#BrnGameState::EStuntType|EStuntType]] |
|||
|- |
|||
| <span style="color:red">0xA5D8</span> || 0x4 || uint32_t || muMedalCountFromTheStart || Total number of events won || |
|||
|- |
|||
| <span style="color:red">0xA5DC</span> || 0x1 || bool || mbGoldCarsUnlocked || Tracks whether gold finishes are unlocked || |
|||
|- |
|||
| <span style="color:red">0xA5DD</span> || 0x1 || bool || mbSilverCarsUnlocked || Tracks whether platinum finishes are unlocked || |
|||
|- |
|||
| <span style="color:red">0xA5DE</span> || 0x2 || || || Padding || |
|||
|- |
|||
| <span style="color:red">0xA5E0</span> || 0x30 || [[CgsSet|Set]]<[[CgsID]], 5u> || mJunkYardsDriveThruSet || Discovered Junkyards || |
|||
|- |
|||
| <span style="color:red">0xA610</span> || 0x60 || [[CgsSet|Set]]<[[CgsID]], 11u> || mBodyShopsDriveThruSet || Discovered Auto Repairs || |
|||
|- |
|||
| <span style="color:red">0xA670</span> || 0x30 || [[CgsSet|Set]]<[[CgsID]], 5u> || mPaintShopsDriveThruSet || Discovered Paint Shops || |
|||
|- |
|||
| <span style="color:red">0xA6A0</span> || 0x78 || [[CgsSet|Set]]<[[CgsID]], 14u> || mGasStationsDriveThruSet || Discovered Gas Stations || |
|||
|- |
|||
| <span style="color:red">0xA718</span> || 0x60 || [[CgsSet|Set]]<[[CgsID]], 11u> || mCarParksDriveThruSet || Discovered Car Parks || |
|||
|- |
|||
| <span style="color:red">0xA778</span> || 0x3E88 || [[CgsArray|Array]]<[[CgsID]], 2000u> || maFreeBurnChallengeData || Completed Freeburn and Timed Challenges || |
|||
|- |
|||
| <span style="color:red">0xE600</span> || 0x9280 || [[../#BrnProgression::Profile::HitPropsBitArray|HitPropsBitArray]] || mabHitPropBitArray || Smashed billboards and individual gate sections || 500 TRK units, 600 prop hit indicators (bits) each. Not all TRKs are used |
|||
|- |
|||
| <span style="color:red">0x17880</span> || 0x1E || int16_t[3][5] || maaiStuntCountsByCounty || Collectible progression, per-county || See [[../#BrnGameState::EStuntType|EStuntType]] and [[Paradise City/Counties|counties]] |
|||
|- |
|||
| <span style="color:red">0x1789E</span> || 0x2 || || || Padding || |
|||
|- |
|||
| <span style="color:red">0x178A0</span> || 0x1000 || [[../#BrnStreetData::ChallengeHighScoreEntry|ChallengeHighScoreEntry]][64] || maNetworkChallengeData || Online mainland car Time/Showtime Road Rule scores and player names || |
|||
|- |
|||
| <span style="color:red">0x188A0</span> || 0xA00 || [[../#BrnStreetData::ChallengePlayerScoreEntry|ChallengePlayerScoreEntry]][64] || maChallengeData || Player mainland car Time/Showtime Road Rule scores and vehicles || |
|||
|- |
|||
| <span style="color:red">0x192A0</span> || 0x4 || uint32_t || muLastRoadRulesResetTime || || |
|||
|- |
|||
| <span style="color:red">0x192A4</span> || 0x1C || [[../#CgsNetwork::NetworkTexture|NetworkTexture]] || mPlayerLicencePicture || License picture header || |
|||
|- |
|||
| <span style="color:red">0x192C0</span> || 0x2580 || char[9600] || macPlayerLicenceTextureData || License picture data || |
|||
|- |
|||
| <span style="color:red">0x1B840</span> || 0x1 || bool || mbPlayerLicencePictureIsValid || Tracks whether the license picture is present || |
|||
|- |
|||
| <span style="color:red">0x1B841</span> || 0x7 || || || Padding || |
|||
|- |
|||
| <span style="color:red">0x1B848</span> || 0x20F8 || [[CgsArray|Array]]<[[../#BrnProgression::MugshotInfo|MugshotInfo]], 30u>[5] || maaMugshotInfo || Information on saved mugshots || |
|||
|- |
|||
| <span style="color:red">0x1D940</span> || 0x28 || [[CgsBitArray|BitArray<30u>]][5] || maAvailableMugshotFileIDs || Tracks what mugshot slots are used || |
|||
|- |
|||
| <span style="color:red">0x1D968</span> || 0xC || float32_t[3] || mafCarTypes || || Unused in the final game |
|||
|- |
|||
| <span style="color:red">0x1D974</span> || 0x4 || [[../#BrnResource::ECarType|ECarType]] || meCurrentCarType || Boost type of the current vehicle || See [[../#BrnResource::ECarType|ECarType]] |
|||
|- |
|||
| <span style="color:red">0x1D978</span> || 0x20 || [[CgsBitArray|BitArray<256u>]] || maHasPlayerSeenTraining || Tracks the tips DJ Atomika has used || |
|||
|- |
|||
| <span style="color:red">0x1D998</span> || 0x4 || int32_t || miNumOnlineRacesDone || Number of online races completed || |
|||
|- |
|||
| <span style="color:red">0x1D99C</span> || 0x4 || int32_t || miNumOnlineRacesWon || Number of online races won || |
|||
|- |
|||
| <span style="color:red">0x1D9A0</span> || 0x4 || int32_t || miNumMugshotsSent || Number of mugshots sent by the player || |
|||
|- |
|||
| <span style="color:red">0x1D9A4</span> || 0x4 || || || Padding || |
|||
|- |
|||
| <span style="color:red">0x1D9A8</span> || 0x10 || [[../#CgsSystem::DateAndTime|DateAndTime]] || mDateLicenceIssued || Date the player's license was created || |
|||
|- |
|||
| <span style="color:red">0x1D9B8</span> || 0x10 || [[../#CgsSystem::DateAndTime|DateAndTime]] || mDate100PercentCompleted || Date the player achieved 100% completion || |
|||
|- |
|||
| <span style="color:red"><s>0x1D9F4</s></span> || <span style="color:red"><s>0x4</s></span> || || || <span style="color:red"><s>Padding</s></span> || |
|||
|- |
|||
| <span style="color:red"><s>0x1DA00</s></span> || <span style="color:red"><s>0x8</s></span> || <span style="color:red"><s>[[CgsBitArray|BitArray<60u>]]</s></span> || <span style="color:red"><s>mAchievementsEarnt</span> || <span style="color:red"><s>Tracks which Paradise Awards have been earned</s></span> || |
|||
|- |
|||
| <span style="color:red">0x1D9C8</span> || 0x1 || bool || <span style="color:red">mbCompletionSequenceShown</span> || Tracks whether the 100% completion animation has been shown || |
|||
|- |
|||
| <span style="color:red">0x1D9C9</span> || 0x1 || bool || mbIsNewProfile || Tracks whether the profile is new || Intro will be shown if true |
|||
|- |
|||
| <span style="color:red">0x1D9CA</span> || <span style="color:red">0x2</span> || || <span style="color:red">Padding</span> || |
|||
|- |
|||
| <span style="color:red">0x1D9CC</span> || <span style="color:red">0x4</span> || <span style="color:red">float</span> || <span style="color:red">mfRedundantFloat1</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9D0<br>(reordered)</span> || 0x8 || [[CgsBitArray|BitArray<35u>]] || mSeenTrophyAwardBitArray || Tracks which of the primary 35 vehicles unlocks have been shown || |
|||
|- |
|||
| <span style="color:red">0x1D9D8</span> || <span style="color:red">0x4</span> || <span style="color:red">float</span> || <span style="color:red">mfRedundantFloat2</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9DC<br>(reordered)</span> || 0x4 || int32_t || miHighestNumberOfTakeDownsInRoadRage || Road Rage record || |
|||
|- |
|||
| <span style="color:red">0x1D9E0</span> || <span style="color:red">0x4</span> || <span style="color:red">int32_t</span> || <span style="color:red">miRedundantInt2</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9E4</span> || <span style="color:red">0x4</span> || <span style="color:red">int32_t</span> || <span style="color:red">miRedundantInt3</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9E8</span> || <span style="color:red">0x4</span> || <span style="color:red">int32_t</span> || <span style="color:red">miRedundantInt4</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9EC</span> || <span style="color:red">0x1</span> || <span style="color:red">bool</span> || <span style="color:red">miRedundantBool1</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9ED</span> || <span style="color:red">0x1</span> || <span style="color:red">bool</span> || <span style="color:red">miRedundantBool2</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9EE</span> || <span style="color:red">0x1</span> || <span style="color:red">bool</span> || <span style="color:red">miRedundantBool3</span> || || |
|||
|- |
|||
| <span style="color:red">0x1D9EF</span> || 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. |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || [[CgsID]] || mBaseCarId || || |
|||
|- |
|- |
||
| 0x8 || 0x8 || [[CgsID]] || mChosenLiveryCarId || || |
|||
! Offset !! Size !! Type !! Name !! Description !! Comments |
|||
|- |
|- |
||
| <span style="color:red">0x10</span> || <span style="color:red">0x1</span> || <span style="color:red">bool</span> || <span style="color:red">mbHasBeenDriven</span> || || |
|||
| 0x0 || 0x8 || CgsID || mCarId || ID of the rival vehicle || |
|||
|- |
|- |
||
| |
| <span style="color:red">0x11</span> || <span style="color:red">0x7</span> || || || Padding || |
||
|} |
|} |
Latest revision as of 20:19, 20 March 2024
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 | 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 | |
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 |