widberg / dpc

Superseded by https://github.com/widberg/bff
https://github.com/widberg/bff
MIT License
10 stars 2 forks source link

❗ All new developments are happening in https://github.com/widberg/bff

DPC

Tar analogous utility to work with the BigFile format from Asobo Studio games.

This repository is a relative of the main FMTK repository.

While the tool is named DPC it works with BigFiles from other platforms too.

Supported Games/Versions

All versions listed have full support. The bold versions are the version that the respective game is equipped to load. Unstable games are games that may be processed by the tool using the --unsafe option but do not have a dedicated DPC backend.

Tutorial

Since most people being pointed towards this tool don't even know how to run a command line utility, here is a quick rundown for the uninitiated. First, download the dpc program from the releases tab of this repository. Download the latest file matching your operating system. Once downloaded, unzip it with 7-zip or a similar utility. Once it is unzipped, open a command prompt in the folder you unzipped it to. If you have never used a command line tool before, please read How to Use the Command Line. Now we can begin using the tool.

Extract/Create BigFiles

To extract a BigFile run the command

dpc -g fuel -eulf -i "path/to/BIGFILE.DPC" -o "path/to/BIGFILE.DPC.d"

where path/to/BIGFILE.DPC is the path of the bigfile on disk. This will create a directory path/to/BIGFILE.DPC.d next to the BigFile you extracted containing the extracted data.

When you are done messing around with the extracted data you may want to turn it back into a BigFile. This can be done with the command.

dpc -g fuel -culf -i "path/to/BIGFILE.DPC.d" -o "path/to/NEW_BIGFILE.DPC"

where path/to/BIGFILE.DPC.d is the path of the extracted folder on disk. This will create a BigFile path/to/NEW_BIGFILE.DPC next to the extracted folder.

Note that while the command contains the name of the game FUEL, these commands will work with the other "unstable" games. This is because the formats are similar enough between these games that we can piggyback off the FUEL support even if each individual game has not been considered.

Extract/Create Objects

Once the BigFile is extracted you may want to modify the objects inside of it. Modifying them with a hex editor may change the size information so it is best to use the dpc tool's capabilities to ensure that valid objects are created. Since the object formats vary much more than the BigFile format does between versions, this is only recommended for stable games.

To extract an object run the command

dpc fmt -g fuel -e -i path/to/object.UserDefine_Z -o path/to/object.UserDefine_Z.d

where path/to/object.UserDefine_Z is the path of the object on disk. This will create a directory path/to/object.UserDefine_Z.d next to the object you extracted containing the extracted data. In the case of UserDefine_Z this directory will contain a data.txt file with the contents of the UserDefine_Z. This text file can be safely modified.

When you are done messing around with the extracted data you may want to turn it back into an object. This can be done with the command.

dpc fmt -g fuel -c -i path/to/object.UserDefine_Z.d -o path/to/new_object.UserDefine_Z

where path/to/object.UserDefine_Z.d is the path of the extracted folder on disk. This will create an object path/to/new_object.UserDefine_Z next to the extracted folder.

Final Note

This tutorial covers the most basic use case that 90% of people want this tool for; in actuality, the tool is far more powerful. To learn about the other options and subcommand, run the command dpc --help for more information.

Help

dpc version 0.1.5;c12d4143e64e51f381196ac5c223d3ea326f2557;x86_64-pc-windows-msvc
widberg <https://github.com/widberg>
Work with DPC files

USAGE:
    dpc [FLAGS] [OPTIONS] --game <GAME> [-- <CUSTOM_ARGS>]
    dpc <SUBCOMMAND>

FLAGS:
    -c, --create          directory -> DPC
    -e, --extract         DPC -> directory
    -f, --force           Don't ask about existing folder
    -l, --lz              Apply Asobo LZ compression/deflation when appropriate
    -O, --optimization    Optimize the DPC
    -q, --quiet           No console output
    -r, --recursive       extract the dpc and all objects
    -u, --unsafe          Don't check the version string for compatibility
    -v, --validate        Checks if your DPC is valid
    -h, --help            Prints help information
    -V, --version         Prints version information

OPTIONS:
    -g, --game <GAME>        The game the dpc should be compatible with [possible values: fuel]
    -i, --input <INPUT>      The input DPC file
    -o, --output <OUTPUT>    The output directory

ARGS:
    <CUSTOM_ARGS>    Supply arguments directly to the dpc backend

SUBCOMMANDS:
    crc32    generate name files
    fmt      Used to format object files
    help     Prints this message or the help of the given subcommand(s)
    lz       Used to compress raw files
    obj      Used to compress/split object files

EXAMPLES:
    -g fuel -- -h
    -cflO -g fuel -i BIKE.DPC.d -o BIKE.DPC
    -ef -g fuel -i /FUEL/**/*.DPC

Getting Started

Prerequisites

Checkout

git clone https://github.com/widberg/dpc.git
cd dpc

Build

cargo build --release