Asobo Studio DPC DPS: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(240 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
//file data
num_of_files *
{
  x bytes - file data
  x bytes - padding
}
</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




Line 78: Line 137:
}
}
</pre>
</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>
=== QuickBMS Script ===
* [https://aluigi.altervista.org/bms/asobo_ratatouille.bms asobo_ratatouille.bms]
* [https://aluigi.altervista.org/bms/ratatouille_dpc.bms ratatouille_dpc.bms]


=== Notes and Comments ===  
=== Notes and Comments ===  


* Archives are compressesed with custom compression algorithm.
* 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].
* File format is shared with some other "Asobo Studio" games.
* Archives may use [https://github.com/widberg/fmtk/wiki/Asobo-CRC32 custom CRC32 hashing function].
* Some games may use extension *.DPS instead of *.DPC.
* 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.


=== Other Games ===  
=== Games ===  
List of other games sharing same file format:
List of games sharing same file format:


{| class="wikitable sortable"
{| class="wikitable sortable"
|-  
|-  
!    Release Year !!  Game Title !!           Platform !!       Archive Version !!      Extension
!    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            || ?
|-
|-
|    2004 ||          ''[[Sitting Ducks]]''   || PS2             || v1.19                || .*DPS
|    2010 ||          ''[[Toy Story 3]]''                                           || PSP             || v1.634.78.15        || *.DPP            || ?
|-
|-
|    xxx ||          ''[[Ratatouille]]''     || ?               || ?                   || ?        
|    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 135: 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 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

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