====== .CMP file ====== The .CMP file is one of the files embedded within a .CAM/.TRN/.TAC file. The CMP file has most of the basic data for the campaign. It is loaded by the campaign engine to show an overview of the file you have selected, so contains some information that is more correctly found in other files, but also copied into this file for convenience. ===== .CMP file format ===== ==== Raw format (compressed contents) ==== ^Field^Data Type^Width (in bytes)^Description^ |CompressedSize |signed 32-bit integer|4|Size, in bytes, of the compressed file to follow (includes 4 bytes for the "Uncompressed Size" field at the start of the data)| |UncompressedSize|signed 32-bit integer|4|Size, in bytes, of the content that follows, when it's uncompressed| |DATA|byte[]|(CompressedSize-4)|[[falcon4:file_formats:cam_trn_tac:lzss_compression|LZSS-compressed]] binary data.| ==== Uncompressed contents of the DATA field ==== ^Field^Data Type^Width (in bytes)^Description^Versions^ |CurrentTime|unsigned 32-bit integer|4| |All| |TE_StartTime|unsigned 32-bit integer|4| |>=48| |TE_TimeLimit|unsigned 32-bit integer|4| |>=48| |TE_VictoryPoints|Signed 32-bit integer|4| |>=49| |TE_Type|Signed 32-bit integer|4| |>=52| |TE_number_teams|Signed 32-bit integer|4| |>=52| |TE_number_aircraft[]|array of Signed 32-bit integer * 8|4*8=32| |>=52| |TE_number_f16s[]|array of Signed 32-bit integer * 8|4*8=32| |>=52| |TE_team|Signed 32-bit integer|4| |>=52| |TE_team_pts[]|array of Signed 32-bit integer *8 |4*8=32| |>=52| |TE_flags|Signed 32-bit integer|4| |>=52| |TeamInfo[]|TeamBasicInfo[8]|222 *8 = 1776| |>=52| |LastMajorEvent|unsigned 32-bit integer|4| |>=19| |lastResupply|unsigned 32-bit integer|4| |All| |lastRepair|unsigned 32-bit integer|4| |All| |lastReinforcement|unsigned 32-bit integer|4| |All| |TimeStamp|Signed 16-bit integer|2| |All| |Group|Signed 16-bit integer|2| |All| |GroundRatio|Signed 16-bit integer|2| |All| |AirRatio|Signed 16-bit integer|2| |All| |AirDefenseRatio|Signed 16-bit integer|2| |All| |NavalRatio|Signed 16-bit integer|2| |All| |Brief|Signed 16-bit integer|2| |All| |TheaterSizeX|Signed 16-bit integer|2| |All| |TheaterSizeY|Signed 16-bit integer|2| |All| |CurrentDay|byte|1| |All| |ActiveTeam|byte|1| |All| |DayZero|byte|1| |All| |EndgameResult|byte|1| |All| |Situation|byte|1| |All| |EnemyAirExp|byte|1| |All| |EnemyADExp|byte|1| |All| |BullseyeName|byte|1| |All| |BullseyeX|Signed 16-bit integer|2| |All| |BullseyeY|Signed 16-bit integer|2| |All| |TheaterName|_TCHAR[40]|40| |All| |Scenario|_TCHAR[40]|40| |All| |SaveFile|_TCHAR[40]|40| |All| |UIName|_TCHAR[40]|40| |All| |PlayerSquadronID|VU_ID|8| |All| |NumRecentEventEntries|Signed 16-bit integer|2| |All| |RecentEventEntries[]|EventNode[NumRecentEventEntries]|sizeof(EventNode)*NumRecentEventEntries| |All| |NumPriorityEventEntries|Signed 16-bit integer|2| |All| |PriorityEventEntries[]|EventNode[NumPriorityEventEntries]|sizeof(EventNode)*NumPriorityEventEntries| |All| |CampMapSize|Signed 16-bit integer|2| |All| |CampMap[]|byte[CampMapSize]|(CampMapSize) bytes| |All| |LastIndexNum|Signed 16-bit integer|2| |All| |NumAvailableSquadrons|Signed 16-bit integer|2| |All| |SquadInfo[]|SquadInfo[NumAvailableSquadrons]|sizeof(SquadInfo)*NumAvailableSquadrons| |All| |Tempo|byte|1| |>=31| |CreatorIP|Signed 32-bit integer|4| |>=43| |CreationTime|Signed 32-bit integer|4| |>=43| |CreationRand|Signed 32-bit integer|4| |>=43| ===== Structures used ===== ==== TeamBasicInfo structure==== ^Field^Data Type^Width (in bytes)^Description^ |teamFlag|byte|1| | |teamColor|byte|1| | |teamName|_TCHAR[20]|20| | |teamMotto|_TCHAR[200]|200| | ==== VU_ID structure==== ^Field^Data Type^Width (in bytes)^Description^ |num_|unsigned 32-bit integer|4| | |creator_|unsigned 32-bit integer|4| | ==== SquadInfo structure==== ^Field^Data Type^Width (in bytes)^Description^Version^ |x|single-precision 32-bit floating point|4| |All| |y|single-precision 32-bit floating point|4| |All| |id|VU_ID|8| |All| |descriptionIndex|Signed 16-bit integer|4| |All| |nameId|Signed 16-bit integer|4| |All| |airbaseIcon|Signed 16-bit integer|4| |All| |squadronPath|Signed 16-bit integer|4| |All| |specialty|byte|1| |All| |currentStrength|byte|1| |All| |country|byte|1| |All| |airbaseName|_TCHAR[40]|40| |All| |airbaseNameExt|_TCHAR[40]|40|additional 40 characters of airbaseName (only supported in earlier versions) |<42| |padding|byte|1|needed for the structure's fields to align on an Int32 boundary|All| ==== EventNode structure==== ^Field^Data Type^Width (in bytes)^Description^ |x|Signed 16-bit integer|2| | |y|Signed 16-bit integer|2| | |time|unsigned 32-bit integer|4| | |flags|byte|1| | |Team|byte|1| | |padding|byte|2|needed for the structure's fields to align on an Int32 boundary | |EventText|Int32 pointer|4|as a pointer, this field is only useful in-memory and is meaningless when restored from disk | |UiEventNode|Int32 pointer|4|as a pointer, this field is only useful in-memory and is meaningless when restored from disk | |eventTextSize|unsigned 16-bit integer|2| | |eventText|_TCHAR[eventTextSize]|eventTextSize| |