Code
Issues
34
Pull requests
11
Projects
1
Releases
3
Packages
1
Wiki
Activity
Var Dump:
Mailing List
dumpVar: only available in dev mode
Page:
File Type - Bundle
Pages
Building the source code
Building your first mod
Bundle Patcher Architecture
CLI Reference
File Type - Bundle Database
File Type - Bundle
File Type - Material
File Type - Package
File Type - Strings
File Type - Texture
File Type - Wwise Bank
File Type - Wwise Event
File Type - Wwise Stream
File Type Status
Home
Installing mods with DTMM
Migrating from loose files
Murmur hashes and dictionaries
Obtaining the Oodle library
Register DTMM as handler for Nexus downloads
Reverse Engineering - Getting Started
Reverse Engineering - Sound
Reverse Engineering - Textures
WIP DDSImage::load
dtmt.cfg Reference
No results
2
File Type - Bundle
Lucas Schwiderski edited this page 2024-07-26 16:31:00 +02:00
//------------------------------------------------
//--- 010 Editor v12.0.1 Binary Template
//
// File: dt_bundle_decompressed.bt
// Authors: Lucas Schwiderski
// Version:
// Purpose:
// Category: Darktide
// File Mask:
// ID Bytes:
// History:
//------------------------------------------------
typedef struct {
uint64 extension <format=hex>;
uint64 name <format=hex>;
// One of these bitflags might designate a deleted file, i.e. the ability for a patch bundle
// to make the engine assume that a file from the original bundle doesn't exist anymore.
// But since Fatshark doesn't use patch bundles for DT, we won't have examples for this.
// The decompiled code would be the only place to figure this out.
uint32 flags <format=binary>;
} FileMeta;
typedef struct {
uint32 lang <format=binary>;
byte is_data_file <comment="If 1, data chunk will be a file name in data/">;
uint32 size;
// May designate a deleted file (see `FileMeta.flags`). Though less likely because when the meta flags are used
// this while header could be omitted.
byte unknown_2;
// If > 0, data chunk will be followed by a string of that length, which is an auxiliary/extension file
// to the data in the data chunk.
// Example: `.wwise_stream` only contains 12 bytes of data in the bundle, which includes an offset and a length.
// The extra file then contains the actual data.
uint32 len_data_file_name;
if (unknown_2 != 1) {
Warning("Expected '1' for 'unknown_2', got '%x'", unknown_2);
}
} FileHeader;
typedef struct {
uint64 extension <format=hex>;
uint64 name <format=hex>;
uint32 header_count;
uint32 unknown_1;
FileHeader headers[header_count];
local int i = 0;
for (i = 0; i < header_count; i++) {
if (headers[i].is_data_file) {
char data_file[headers[i].size];
} else {
byte data[headers[i].size];
char data_file[headers[i].len_data_file_name];
}
}
} File;
uint32 version <format=hex>;
uint32 unknown_1;
Assert(unknown_1 == 3);
uint32 num_entries;
uint64 properties[32] <format=hex>;
FileMeta file_meta[num_entries];
uint32 num_chunks;
uint32 chunk_sizes[num_chunks];
local int padding_size = 16 - (FTell() % 16);
if (padding_size < 16) {
byte padding[padding_size];
}
uint32 unpacked_size <bgcolor=0x0015FF>;
uint32 unknown_3;
File files[num_entries] <optimize=false>;
Wiki
Building the source code
Obtaining the Oodle library
DTMM
Installing mods
Register DTMM as handler for Nexus downloads
DTMT
CLI Reference
Building your first mod
Migrating from loose files
dtmt.cfg
Reference
Murmur hashes and dictionaries
Reverse Engineering
Getting Started
Sound
Textures
File Types
Status
Bundle
Bundle Database
Texture
Material
Strings
Package
Wwise Event
Wwise Stream
Wwise Bank