Asobo Studio DPC DPS: Difference between revisions
imported>Ikskoks |
imported>Ikskoks |
||
| (243 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
== DPC, DPS == | == What Is a Asobo Archive File? == | ||
Asobo Archive files used in Asobo games are asset archives that contain serialized class objects such as textures, models, animations, sounds, particle systems, etc. | |||
== History of the Asobo Archive File == | |||
The DPC file extension is used across Asobo’s catalog liberally; the structure of these files may change dramatically from title to title or not at all for several years. For example, the DPC files found in FUEL have special considerations for the asset streaming capabilities of ACE (Asobo Conception Engine), such as lazy loading of object data and parallel loading procedures at launch. ACE was specially created for the development of Grand Raid Off-road, the original title of what would eventually become FUEL, and as a result similarities between FUEL’s DPCs and other DPCs are expected to be minimal. While FUEL was released in 2009, its development began in 2005 as evidenced by many date artifacts in the DPCs and the project being referred to as “offroad” throughout the codebase and assets. Many of the assets were created and compiled around 2007. The PC release gold master was built in 2008 according to the version string present in the language files. Keep this timeline in mind if you intend to investigate other Asobo games for additional information.<br> | |||
First known occurence of Asobo Archive can be spotted in [[Super Farm]] game realeased in 2003. | |||
== DPC, DPS, DXB, DPP, DRV, D36 == | |||
* ''' Format Type ''': Archive <br> | * ''' Format Type ''': Archive <br> | ||
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br> | * ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br> | ||
| Line 7: | Line 16: | ||
<b>Version 1.19</b> | <b>Version 1.19</b> | ||
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | <pre> | ||
// Sitting Ducks (PS2) | // Sitting Ducks (PS2) | ||
| Line 41: | Line 51: | ||
} | } | ||
</pre> | </pre> | ||
</div> | |||
<b>Version 1.51</b> | |||
<div class="toccolours mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | |||
This file format is the same as in version 1.19 | |||
Only version string is different: "v1.51 - Asobo Studio - Internal Cross Technology". | |||
</pre> | |||
</div> | |||
<b>Version 1.81</b> | <b>Version 1.81</b> | ||
<div class="toccolours mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | <pre> | ||
// CT Special Forces: Fire for effect (PC) | // CT Special Forces: Fire for effect (PC) | ||
| Line 69: | Line 87: | ||
4 bytes - unknown | 4 bytes - unknown | ||
} | } | ||
x bytes - padding | |||
| Line 78: | Line 97: | ||
} | } | ||
</pre> | </pre> | ||
</div> | |||
<b>Version 1.06.63.06</b> | |||
<div class="toccolours mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | |||
// Ratatouille (PS2) | |||
// DPS archive file format | |||
// Files inside archive are compressesed | |||
// with custom compression algorithm | |||
//little endian | |||
//header | |||
256 bytes - version clob // "v1.06.63.06 - Asobo Studio - Internal Cross Technology" | |||
4 bytes (uint32) - number of folders? | |||
4 bytes (uint32)- number of files | |||
24 bytes - unknown | |||
//file info (24 bytes per entry) | |||
num_of_files * | |||
{ | |||
4 bytes - dummy | |||
4 bytes - xsize / uncompressed size | |||
4 bytes - size / compressed size | |||
4 bytes - unknwon | |||
4 bytes - some CRC? | |||
4 bytes - unknown | |||
} | |||
x bytes - padding | |||
//file data | |||
num_of_files * | |||
{ | |||
x bytes - file data | |||
x bytes - padding | |||
} | |||
</pre> | |||
</div> | |||
<b>Version 1.08.40.02</b> | |||
<div class="toccolours mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | |||
// Garfield 2 (PC) | |||
// DPC archive file format | |||
// little endian | |||
// Note: Files inside archive are | |||
// compressed wih unknown compression | |||
//header | |||
256 bytes - version clob // "v1.08.40.02 - Asobo Studio - Internal Cross Technology" | |||
4 bytes (uint32) - number of entries | |||
4 bytes (uint32) - unknown | |||
4 bytes (uint32) - unknown | |||
4 bytes (uint32) - file_size - header_size | |||
4 bytes (uint32) - unknown // always "222" | |||
4 bytes (uint32) - unknown // always "139" | |||
4 bytes (uint32) - unknown // always "39" | |||
4 bytes (uint32) - number of files? | |||
//entries table (24 bytes per entry) | |||
num_of_entries * | |||
{ | |||
4 bytes (uint32) - data block size (data+padding?) | |||
4 bytes (uint32) - data size | |||
4 bytes (uint32) - padding size? | |||
4 bytes (uint32) - CRC1? | |||
4 bytes (uint32) - CRC2? | |||
4 bytes (uint32) - data block ID? | |||
} | |||
x bytes - padding1 (up to offset=1820) // "\x00\x00\x00\x00..." | |||
x bytes - padding2 (up to offset=2048) // "\xFF\xFF\xFF\xFF..." | |||
//data | |||
num_of_entries * | |||
{ | |||
x bytes - data block | |||
} | |||
</pre> | |||
</div> | |||
<b>Version 1.291.03.07</b> | |||
<div class="toccolours mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | |||
This file format is the same as in version 1.06.63.06 | |||
Only version string is different: "v1.291.03.07 - Asobo Studio - Internal Cross Technology". | |||
</pre> | |||
</div> | |||
<b>Variouse versions (FUEL PC)</b> | |||
<div class="toccolours mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | |||
// FUEL PC | |||
// DPC file format | |||
256 bytes (char) - version string | |||
// * "v1.381.67.09 - Asobo Studio - Internal Cross Technology" | |||
// * "v1.381.66.09 - Asobo Studio - Internal Cross Technology" | |||
// * "v1.381.65.09 - Asobo Studio - Internal Cross Technology" | |||
// * "v1.381.64.09 - Asobo Studio - Internal Cross Technology" | |||
// * "v1.379.60.09 - Asobo Studio - Internal Cross Technology" | |||
// * "v1.325.50.07 - Asobo Studio - Internal Cross Technology" | |||
// * "v1.220.50.07 - Asobo Studio - Internal Cross Technology" | |||
4 bytes (uint32) - isNotRTC // 1 - DPC in RTC directory | |||
// 0 - DPC not in RTC directory | |||
4 bytes (uint32) - blockCount // num of blocks in DPC file | |||
4 bytes (uint32) - blockWorkingBufferCapacityEven | |||
4 bytes (uint32) - blockWorkingBufferCapacityOdd | |||
4 bytes (uint32) - paddedSize | |||
4 bytes (uint32) - versionPatch | |||
4 bytes (uint32) - versionMinor | |||
num_of_block_descriptions * | |||
{ | |||
// block description | |||
4 bytes (uint32) - blockType | |||
4 bytes (uint32) - objectCount | |||
4 bytes (uint32) - paddedSize | |||
4 bytes (uint32) - dataSize | |||
4 bytes (uint32) - workingBufferOffset | |||
4 bytes (uint32) - CRC32 | |||
} | |||
4 bytes (uint32) - null | |||
4 bytes (uint32) - poolManifestPaddedSize | |||
4 bytes (uint32) - poolManifestOffset | |||
4 bytes (uint32) - poolManifestUnused0 | |||
4 bytes (uint32) - poolManifestUnused1 | |||
4 bytes (uint32) - poolObjectDecompressionBufferCapacity | |||
4 bytes (uint32) - blockSectorPaddingSize | |||
4 bytes (uint32) - poolSectorPaddingSize | |||
4 bytes (uint32) - fileSize | |||
128 bytes (char) - incrediBuilderString | |||
64 bytes - padding // 0xFF 0xFF... | |||
// Block Sector | |||
num_of_blocks * | |||
{ | |||
// Block | |||
num_of_block_objects * | |||
{ | |||
//Block object | |||
4 bytes (uint32) - dataSize | |||
4 bytes (uint32) - classObjectSize | |||
4 bytes (uint32) - decompressedSize | |||
4 bytes (uint32) - compressedSize | |||
4 bytes (uint32) - classCRC32 | |||
4 bytes (uint32) - CRC32 | |||
x bytes - data | |||
} | |||
x bytes - padding | |||
} | |||
// Pool Sector | |||
x bytes - Pool Manifest | |||
x bytes - Pool Objects | |||
</pre> | |||
</div> | |||
=== QuickBMS Script === | |||
* [https://aluigi.altervista.org/bms/asobo_ratatouille.bms asobo_ratatouille.bms] | |||
* [https://aluigi.altervista.org/bms/ratatouille_dpc.bms ratatouille_dpc.bms] | |||
=== MultiEx BMS Script === | === MultiEx BMS Script === | ||
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;"> | |||
<pre> | <pre> | ||
IDString 0 "v1.381.67.09 - Asobo Studio - Internal Cross Technology" ; | IDString 0 "v1.381.67.09 - Asobo Studio - Internal Cross Technology" ; | ||
| Line 103: | Line 300: | ||
Next T ; | Next T ; | ||
</pre> | </pre> | ||
</div> | |||
=== | === Notes and Comments === | ||
=== | * Archives may be compressesed with [https://forum.xentax.com/viewtopic.php?f=21&t=22830 custom compression algorithm]. Implementation from FUEL toolkit may be found [https://github.com/widberg/fmtk/wiki/Asobo-LZ-Compression here]. | ||
* Archives may use [https://github.com/widberg/fmtk/wiki/Asobo-CRC32 custom CRC32 hashing function]. | |||
* File format is shared with many "Asobo Studio" games. | |||
* Extensions may be described as follows: DPS = "Data PlayStation", DPC = "Data PC", DXB = "Data Xbox", DPP = "Data PSP", DRV = "Data Wii", D36 = "Data Xbox 360". | |||
* In "Garfield 2" PC game there are also *.NPC and *.LAYOUT files which contains filenames and database entries for *.DPC archives.<br> In "FUEL" PC game there are some *.IWR files which also contains some database entries. <br> In Monopoly Plus PC game there are NPC and LPC files with database entries. | |||
* In "Racket Sports Party" Wii game there is string "x:\Datas\$$$IncrediBuilder$$$\X##DATAS#_MASTER#RACKET_DATAS\KIT-WII\" in every *.DRV archive <br>which may suggest that archives were build with [https://en.wikipedia.org/wiki/IncrediBuild IncrediBuild] software. | |||
* Archive version numbering suggests that Asobo Engine has been rewritten in 2006. | |||
=== Games === | |||
List of games sharing same file format: | |||
= | {| class="wikitable sortable" | ||
|- | |||
* [[ | ! Release Year !! Game Title !! Platform !! Archive Version !! Extension !! Compression | ||
|- | |||
| 2003 || ''[[Super Farm]]'' || PS2 / PC || v1.09 / v1.00.68.18 || *.DPS / *.DPC || Custom LZ? | |||
|- | |||
| 2004 || ''[[Sitting Ducks]]'' || PS2 / PC || v1.19 / v1.22 || *.DPS / *.DPC || None | |||
|- | |||
| 2004 || ''[[The Mummy: The Animated Series]]'' || PS2 / PC || v1.51 / v1.54 || *.DPS / *.DPC || None | |||
|- | |||
| 2005 || ''[[CT Special Forces: Fire for effect (Nemesis Strike)]]'' || PC / XBOX / PS2 || v1.81 || *.DPC / *.DXB / *.DPS || Custom LZ | |||
|- | |||
| 2006 || ''[[Garfield: A Tail of Two Kitties (Garfield 2)]]'' || PC / PS2 || v1.08.40.02 / v1.08.40.04 || *.DPC / *.DPS || Custom LZ? | |||
|- | |||
| 2007 || ''[[Ratatouille]]'' || PS2 || v1.06.63.06 || *.DPS || Custom LZ? | |||
|- | |||
| 2008 || ''[[WALL-E]]'' || PS2 || v1.291.03.07 || *.DPS || ? | |||
|- | |||
| 2009 || ''[[Fuel]]'' || PC || v1.220.50.07 / v1.381.67.09 || *.DPC || Custom LZSS | |||
|- | |||
| 2009 || ''[[Up]]'' || PSP || v1.530.62.01 || *.DPS || ? | |||
|- | |||
| 2010 || ''[[Toy Story 3]]'' || PSP || v1.634.78.15 || *.DPP || ? | |||
|- | |||
| 2010 || ''[[Racket Sports Party|Racquet Sports / Racket Sports / Racket Sports Party]]'' || WII || v1.796.75.01 || *.DRV || Custom LZ? | |||
|- | |||
| 2012 || ''Kinect Rush: A Disney-Pixar Adventure'' || PC / X360 || v1.2000.31.11 || *.DPC / *.D36 || ? | |||
|- | |||
| 2014 || ''Monopoly Plus'' || PC / X360 || v1.2000.77.18 || *.DPC / *.D36 || ? | |||
|- | |||
| 2016 || ''Fragments – HoloLens'' || PC || v1.2000.97.19 || *.DUA || Custom LZ | |||
|- | |||
| 2016 || ''Young Conker – HoloLens'' || PC || v1.2000.97.19 || *.DUA || ? | |||
|- | |||
| 2019 || ''[[A Plague Tale: Innocence]]'' || PC || v2.128.92.19 || *.DPC || [[LZ4]] | |||
|- | |||
| 2020 || ''Microsoft Flight Simulator'' || PC / XONE || v2.256.97.19 || *.DPC || ? | |||
|- | |||
| 2022 || ''A Plague Tale: Requiem'' || ? || ? || ? || ? | |||
|} | |||
=== Compatible Programs === | === Compatible Programs === | ||
[https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/Asobo%20Studio%20DPC%20DPS%20Research/Asobo_DPC_DPS_Tool.py Asobo DPC DPS Tool] | * [https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/Asobo%20Studio%20DPC%20DPS%20Research/Asobo_DPC_DPS_Tool.py Asobo DPC DPS Tool] | ||
* [https://forum.xentax.com/viewtopic.php?t=20481 A Plague Tale: Innocence Tool] | |||
* [https://github.com/widberg/fmtk FUEL Modding Toolkit] | |||
* [https://github.com/widberg/dpc dpc] | |||
* MultiExCommander + [https://www.moddb.com/games/fuel/downloads/multiex-commander-dpc-plugin DPC plugin] | |||
== Associated File Types == | |||
=== NPC === | |||
Names PC | |||
Plaintext table of Asobo CRC32 hashes and their human readable strings. CRC32 Hashes are represented as signed 32bit integers despite internally being used as unsigned 32bit integers. The distinction between signed and unsigned is important because the hashing algorithm makes use of the right shift operation which compiles to different machine code instructions for signed and unsigned integers. It is unclear why the NPC format uses signed integers when the DPC format uses unsigned integers but my guess is that fprintf is used with the %d format specifier in their internal build tools because somebody didn’t want to lookup the unsigned integer format specifier. | |||
=== LPC === | |||
Layout PC | |||
Describes the contents of a DPC archive. Analogous to a PDB file for an EXE. | |||
=== DPC.LAYOUT === | |||
Data PC Layout | |||
Older format of LPC files. | |||
=== IWR === | |||
Information World Reference (I could stand for anything. Internal/Input/Include) | |||
Describes TWORLDREF dependencies. Only USA1.DPC in FUEL has one of these that isn't empty. | |||
== See Also == | |||
* [https://github.com/widberg/fmtk/wiki/Asobo-DPC-File-Format-Specification DPC File Format Specification] | |||
* [https://github.com/widberg/fmtk/wiki/Asobo-LZ-Compression Asobo LZ Compression] | |||
* [https://github.com/widberg/fmtk/wiki/Asobo-CRC32 Asobo CRC32] | |||
<br/><br> | <br/><br> | ||
| Line 127: | Line 402: | ||
[[Category:Platform PC|Asobo Studio DPC DPS]] | [[Category:Platform PC|Asobo Studio DPC DPS]] | ||
[[Category:Platform PS2|Asobo Studio DPC DPS]] | [[Category:Platform PS2|Asobo Studio DPC DPS]] | ||
[[Category:Platform PSP|Asobo Studio DPC DPS]] | |||
[[Category:Platform WII|Asobo Studio DPC DPS]] | |||
[[Category:CE Unknown|Asobo Studio DPC DPS]] | [[Category:CE Unknown|Asobo Studio DPC DPS]] | ||
[[Category:Format_Archive | Type: Archive]] | [[Category:Format_Archive | Type: Archive]] | ||
[[Category:Extension_dpc | Extension: dpc]] | [[Category:Extension_dpc | Extension: dpc]] | ||
[[Category:Extension_dps | Extension: dps]] | [[Category:Extension_dps | Extension: dps]] | ||
[[Category:Extension_dxb | Extension: dxb]] | |||
[[Category:Extension_dpp | Extension: dpp]] | |||
[[Category:Extension_d36 | Extension: d36]] | |||
[[Category:BMS_None | BMS: None]] | [[Category:BMS_None | BMS: None]] | ||
[[Category:Custom compression]] | |||
[[Category:File Format]] | |||
Latest revision as of 19:12, 30 November 2022
What Is a Asobo Archive File?
Asobo Archive files used in Asobo games are asset archives that contain serialized class objects such as textures, models, animations, sounds, particle systems, etc.
History of the Asobo Archive File
The DPC file extension is used across Asobo’s catalog liberally; the structure of these files may change dramatically from title to title or not at all for several years. For example, the DPC files found in FUEL have special considerations for the asset streaming capabilities of ACE (Asobo Conception Engine), such as lazy loading of object data and parallel loading procedures at launch. ACE was specially created for the development of Grand Raid Off-road, the original title of what would eventually become FUEL, and as a result similarities between FUEL’s DPCs and other DPCs are expected to be minimal. While FUEL was released in 2009, its development began in 2005 as evidenced by many date artifacts in the DPCs and the project being referred to as “offroad” throughout the codebase and assets. Many of the assets were created and compiled around 2007. The PC release gold master was built in 2008 according to the version string present in the language files. Keep this timeline in mind if you intend to investigate other Asobo games for additional information.
First known occurence of Asobo Archive can be spotted in Super Farm game realeased in 2003.
DPC, DPS, DXB, DPP, DRV, D36
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
Version 1.19
// Sitting Ducks (PS2)
// DPS archive file format
//little endian
//Note: padding is set to multiplication of 1024 bytes.
//header (2048 bytes)
48 bytes (char) - version clob // "v1.19 - Asobo Studio - Internal Cross Technology"
1 byte - null
207 bytes - padding // "\xCD\xCD\xCD\xCD..."
4 bytes (uint32) - next folder offset - 2048
4 bytes (uint32) - unknown // always "214"
4 bytes (uint32) - unknown // always "74"
4 bytes (uint32) - unknown // always "59"
1776 bytes - padding // "\xCD\xCD\xCD\xCD..."
//data
num_of_folders *
{
4 bytes (uint32) - number of files in folder
num_of_files *
{
4 bytes (uint32) - file size + 4
x bytes - file data
}
x bytes - padding // "\xCD\xCD\xCD\xCD..."
}
Version 1.51
This file format is the same as in version 1.19 Only version string is different: "v1.51 - Asobo Studio - Internal Cross Technology".
Version 1.81
// CT Special Forces: Fire for effect (PC)
// DPC archive file format
// Archives are compressesed
// with custom compression algorithm
//header
256 bytes - version clob // "v1.81 - Asobo Studio - Internal Cross Technology"
4 bytes - number of files
24 bytes - unknown
//file info (24 bytes per entry)
num_of_files *
{
4 bytes - dummy
4 bytes - xsize / uncompressed size
4 bytes - size / compressed size
4 bytes - unknwon
4 bytes - some CRC?
4 bytes - unknown
}
x bytes - padding
//file data
num_of_files *
{
x bytes - file data
x bytes - padding
}
Version 1.06.63.06
// Ratatouille (PS2)
// DPS archive file format
// Files inside archive are compressesed
// with custom compression algorithm
//little endian
//header
256 bytes - version clob // "v1.06.63.06 - Asobo Studio - Internal Cross Technology"
4 bytes (uint32) - number of folders?
4 bytes (uint32)- number of files
24 bytes - unknown
//file info (24 bytes per entry)
num_of_files *
{
4 bytes - dummy
4 bytes - xsize / uncompressed size
4 bytes - size / compressed size
4 bytes - unknwon
4 bytes - some CRC?
4 bytes - unknown
}
x bytes - padding
//file data
num_of_files *
{
x bytes - file data
x bytes - padding
}
Version 1.08.40.02
// Garfield 2 (PC)
// DPC archive file format
// little endian
// Note: Files inside archive are
// compressed wih unknown compression
//header
256 bytes - version clob // "v1.08.40.02 - Asobo Studio - Internal Cross Technology"
4 bytes (uint32) - number of entries
4 bytes (uint32) - unknown
4 bytes (uint32) - unknown
4 bytes (uint32) - file_size - header_size
4 bytes (uint32) - unknown // always "222"
4 bytes (uint32) - unknown // always "139"
4 bytes (uint32) - unknown // always "39"
4 bytes (uint32) - number of files?
//entries table (24 bytes per entry)
num_of_entries *
{
4 bytes (uint32) - data block size (data+padding?)
4 bytes (uint32) - data size
4 bytes (uint32) - padding size?
4 bytes (uint32) - CRC1?
4 bytes (uint32) - CRC2?
4 bytes (uint32) - data block ID?
}
x bytes - padding1 (up to offset=1820) // "\x00\x00\x00\x00..."
x bytes - padding2 (up to offset=2048) // "\xFF\xFF\xFF\xFF..."
//data
num_of_entries *
{
x bytes - data block
}
Version 1.291.03.07
This file format is the same as in version 1.06.63.06 Only version string is different: "v1.291.03.07 - Asobo Studio - Internal Cross Technology".
Variouse versions (FUEL PC)
// FUEL PC
// DPC file format
256 bytes (char) - version string
// * "v1.381.67.09 - Asobo Studio - Internal Cross Technology"
// * "v1.381.66.09 - Asobo Studio - Internal Cross Technology"
// * "v1.381.65.09 - Asobo Studio - Internal Cross Technology"
// * "v1.381.64.09 - Asobo Studio - Internal Cross Technology"
// * "v1.379.60.09 - Asobo Studio - Internal Cross Technology"
// * "v1.325.50.07 - Asobo Studio - Internal Cross Technology"
// * "v1.220.50.07 - Asobo Studio - Internal Cross Technology"
4 bytes (uint32) - isNotRTC // 1 - DPC in RTC directory
// 0 - DPC not in RTC directory
4 bytes (uint32) - blockCount // num of blocks in DPC file
4 bytes (uint32) - blockWorkingBufferCapacityEven
4 bytes (uint32) - blockWorkingBufferCapacityOdd
4 bytes (uint32) - paddedSize
4 bytes (uint32) - versionPatch
4 bytes (uint32) - versionMinor
num_of_block_descriptions *
{
// block description
4 bytes (uint32) - blockType
4 bytes (uint32) - objectCount
4 bytes (uint32) - paddedSize
4 bytes (uint32) - dataSize
4 bytes (uint32) - workingBufferOffset
4 bytes (uint32) - CRC32
}
4 bytes (uint32) - null
4 bytes (uint32) - poolManifestPaddedSize
4 bytes (uint32) - poolManifestOffset
4 bytes (uint32) - poolManifestUnused0
4 bytes (uint32) - poolManifestUnused1
4 bytes (uint32) - poolObjectDecompressionBufferCapacity
4 bytes (uint32) - blockSectorPaddingSize
4 bytes (uint32) - poolSectorPaddingSize
4 bytes (uint32) - fileSize
128 bytes (char) - incrediBuilderString
64 bytes - padding // 0xFF 0xFF...
// Block Sector
num_of_blocks *
{
// Block
num_of_block_objects *
{
//Block object
4 bytes (uint32) - dataSize
4 bytes (uint32) - classObjectSize
4 bytes (uint32) - decompressedSize
4 bytes (uint32) - compressedSize
4 bytes (uint32) - classCRC32
4 bytes (uint32) - CRC32
x bytes - data
}
x bytes - padding
}
// Pool Sector
x bytes - Pool Manifest
x bytes - Pool Objects
QuickBMS Script
MultiEx BMS Script
IDString 0 "v1.381.67.09 - Asobo Studio - Internal Cross Technology" ; GoTo 260 0 ; Get FileNum Long 0 ; GoTo 284 0 ; Set FNS String "file" ; Set EXT String ".bin" ; Set OFF Long 2048 ; For T = 1 To FileNum ; Get U1 Long 0 ; Get U2 Long 0 ; Get PSize Long 0 ; Get RSize Long 0 ; Get U3 Long 0 ; Get U4 Long 0 ; Set FN String FNS ; String FN += T ; String FN += EXT ; Log FN OFF RSize 0 0 ; Math OFF += PSize ; Next T ;
Notes and Comments
- Archives may be compressesed with custom compression algorithm. Implementation from FUEL toolkit may be found here.
- Archives may use custom CRC32 hashing function.
- File format is shared with many "Asobo Studio" games.
- Extensions may be described as follows: DPS = "Data PlayStation", DPC = "Data PC", DXB = "Data Xbox", DPP = "Data PSP", DRV = "Data Wii", D36 = "Data Xbox 360".
- In "Garfield 2" PC game there are also *.NPC and *.LAYOUT files which contains filenames and database entries for *.DPC archives.
In "FUEL" PC game there are some *.IWR files which also contains some database entries.
In Monopoly Plus PC game there are NPC and LPC files with database entries. - In "Racket Sports Party" Wii game there is string "x:\Datas\$$$IncrediBuilder$$$\X##DATAS#_MASTER#RACKET_DATAS\KIT-WII\" in every *.DRV archive
which may suggest that archives were build with IncrediBuild software. - Archive version numbering suggests that Asobo Engine has been rewritten in 2006.
Games
List of games sharing same file format:
| Release Year | Game Title | Platform | Archive Version | Extension | Compression |
|---|---|---|---|---|---|
| 2003 | Super Farm | PS2 / PC | v1.09 / v1.00.68.18 | *.DPS / *.DPC | Custom LZ? |
| 2004 | Sitting Ducks | PS2 / PC | v1.19 / v1.22 | *.DPS / *.DPC | None |
| 2004 | The Mummy: The Animated Series | PS2 / PC | v1.51 / v1.54 | *.DPS / *.DPC | None |
| 2005 | CT Special Forces: Fire for effect (Nemesis Strike) | PC / XBOX / PS2 | v1.81 | *.DPC / *.DXB / *.DPS | Custom LZ |
| 2006 | Garfield: A Tail of Two Kitties (Garfield 2) | PC / PS2 | v1.08.40.02 / v1.08.40.04 | *.DPC / *.DPS | Custom LZ? |
| 2007 | Ratatouille | PS2 | v1.06.63.06 | *.DPS | Custom LZ? |
| 2008 | WALL-E | PS2 | v1.291.03.07 | *.DPS | ? |
| 2009 | Fuel | PC | v1.220.50.07 / v1.381.67.09 | *.DPC | Custom LZSS |
| 2009 | Up | PSP | v1.530.62.01 | *.DPS | ? |
| 2010 | Toy Story 3 | PSP | v1.634.78.15 | *.DPP | ? |
| 2010 | Racquet Sports / Racket Sports / Racket Sports Party | WII | v1.796.75.01 | *.DRV | Custom LZ? |
| 2012 | Kinect Rush: A Disney-Pixar Adventure | PC / X360 | v1.2000.31.11 | *.DPC / *.D36 | ? |
| 2014 | Monopoly Plus | PC / X360 | v1.2000.77.18 | *.DPC / *.D36 | ? |
| 2016 | Fragments – HoloLens | PC | v1.2000.97.19 | *.DUA | Custom LZ |
| 2016 | Young Conker – HoloLens | PC | v1.2000.97.19 | *.DUA | ? |
| 2019 | A Plague Tale: Innocence | PC | v2.128.92.19 | *.DPC | LZ4 |
| 2020 | Microsoft Flight Simulator | PC / XONE | v2.256.97.19 | *.DPC | ? |
| 2022 | A Plague Tale: Requiem | ? | ? | ? | ? |
Compatible Programs
- Asobo DPC DPS Tool
- A Plague Tale: Innocence Tool
- FUEL Modding Toolkit
- dpc
- MultiExCommander + DPC plugin
Associated File Types
NPC
Names PC
Plaintext table of Asobo CRC32 hashes and their human readable strings. CRC32 Hashes are represented as signed 32bit integers despite internally being used as unsigned 32bit integers. The distinction between signed and unsigned is important because the hashing algorithm makes use of the right shift operation which compiles to different machine code instructions for signed and unsigned integers. It is unclear why the NPC format uses signed integers when the DPC format uses unsigned integers but my guess is that fprintf is used with the %d format specifier in their internal build tools because somebody didn’t want to lookup the unsigned integer format specifier.
LPC
Layout PC
Describes the contents of a DPC archive. Analogous to a PDB file for an EXE.
DPC.LAYOUT
Data PC Layout
Older format of LPC files.
IWR
Information World Reference (I could stand for anything. Internal/Input/Include)
Describes TWORLDREF dependencies. Only USA1.DPC in FUEL has one of these that isn't empty.
See Also