Cities Skylines CRP

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(Created page with "{{FormatInfo |formattype=electronic |subcat=Game data files |extensions={{ext|crp}} |released=2015 }} CRP files are used in the game [https://en.wikipedia.org/wiki/Cities:_Sk...")
 
m (Copy-editing)
 
(5 intermediate revisions by 3 users not shown)
Line 6: Line 6:
 
}}
 
}}
  
CRP files are used in the game [https://en.wikipedia.org/wiki/Cities:_Skylines Cities: Skylines] to store Unity game data like meshes, textures and game objects. CRPs act like archives to store multiple pieces of media. Textures are usually stored in [[DirectDraw Surface]] (.dds) format.
+
CRP (Colossal Raw Asset Package) files are used in the game [https://en.wikipedia.org/wiki/Cities:_Skylines Cities: Skylines] to store Unity game data like meshes, textures and game objects. CRPs act like archives to store multiple pieces of media. Textures are usually stored in [[DirectDraw Surface]] (.dds) format.
  
 
==Format==
 
==Format==
:char[4] crap_header ("CRAP")
+
<pre>
:uint16 version
+
char[4] crap_header ("CRAP")
:uint8 size_of_steam_id
+
uint16 version
:char[size_of_steam_id] steam_id
+
uint8 size_of_steam_id
:uint8 size_of_unknown
+
char[size_of_steam_id] steam_id
:char[size_of_unknown] unknown
+
uint8 size_of_unknown
:uint32 unknown
+
char[size_of_unknown] unknown
:uint8 size_of_name_of_mod
+
uint32 unknown
:char[size_of_name_of_mod] name_of_mod
+
uint8 size_of_name_of_mod
:uint32 number_of_files
+
char[size_of_name_of_mod] name_of_mod
:uint64 end_header_offset
+
uint32 number_of_files
 +
uint64 end_header_offset
  
:'''struct file_headers[number_of_files]'''
+
struct file_headers[number_of_files]
::uint8 size_of_file_name
+
  uint8 size_of_file_name
::char[size_of_file_name] file_name
+
  char[size_of_file_name] file_name
::uint8 size_of_unknown
+
  uint8 size_of_unknown
::char[size_of_unknown] unknown
+
  char[size_of_unknown] unknown
::uint32 unknown
+
  uint32 unknown
::uint64 offset_from_header
+
  uint64 offset_from_header
::uint64 file_size
+
  uint64 file_size
 +
</pre>
  
 
*This information can be used to export each section of the CRP to different files based on the offset from header and file size.
 
*This information can be used to export each section of the CRP to different files based on the offset from header and file size.
 +
 +
*On Windows systems, you can generally find your saved game files under <code>c:/Users/''[username]''/AppData/Local/Colossal Order/Cities_Skylines/Saves</code>.
 +
 +
'''ADDENDUM:'''
 +
 +
The file sections pointed to by the <code>file_headers[x].offset_from_header</code>
 +
begin with a single byte zero,
 +
followed by additional metadata, followed,
 +
where applicable, by the packaged file verbatim.
 +
 +
From what I've seen, all except the Locale section start with an object
 +
identifier which is a counted short Pascal string.
 +
A counted Pascal string consists of a length byte followed by characters.
 +
It's not null terminated.
 +
 +
Additional metadata fields follow, depending on the object type.
  
 
==External links==
 
==External links==
 
*[http://steamcommunity.com/app/255710/workshop/ Cities: Skylines workshop]
 
*[http://steamcommunity.com/app/255710/workshop/ Cities: Skylines workshop]
 +
*[https://github.com/LiamBrandt/crp-extract Tool to extract CRPs]
 +
*[http://www.skylineswiki.com/User_path Paths to CRPs]

Latest revision as of 14:24, 20 January 2018

File Format
Name Cities Skylines CRP
Ontology
Extension(s) .crp
Released 2015

CRP (Colossal Raw Asset Package) files are used in the game Cities: Skylines to store Unity game data like meshes, textures and game objects. CRPs act like archives to store multiple pieces of media. Textures are usually stored in DirectDraw Surface (.dds) format.

[edit] Format

char[4] crap_header ("CRAP")
uint16 version
uint8 size_of_steam_id
char[size_of_steam_id] steam_id
uint8 size_of_unknown
char[size_of_unknown] unknown
uint32 unknown
uint8 size_of_name_of_mod
char[size_of_name_of_mod] name_of_mod
uint32 number_of_files
uint64 end_header_offset

struct file_headers[number_of_files]
  uint8 size_of_file_name
  char[size_of_file_name] file_name
  uint8 size_of_unknown
  char[size_of_unknown] unknown
  uint32 unknown
  uint64 offset_from_header
  uint64 file_size
  • This information can be used to export each section of the CRP to different files based on the offset from header and file size.
  • On Windows systems, you can generally find your saved game files under c:/Users/[username]/AppData/Local/Colossal Order/Cities_Skylines/Saves.

ADDENDUM:

The file sections pointed to by the file_headers[x].offset_from_header begin with a single byte zero, followed by additional metadata, followed, where applicable, by the packaged file verbatim.

From what I've seen, all except the Locale section start with an object identifier which is a counted short Pascal string. A counted Pascal string consists of a length byte followed by characters. It's not null terminated.

Additional metadata fields follow, depending on the object type.

[edit] External links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox