Git Product home page Git Product logo

wotbdvpformat's Introduction

wotb-dvp

WOTB dvp type file specification.

Research materials

.dvpm

DVPM files are split into 3 sections: meta, file table and footer.

meta

This section is at the very start of the file and has a magic string of "met3".

struct DVPMMeta
{
    char magic[4]; // "met3"
    uint32_t fileCount;
    uint32_t unknownArray[fileCount];
    uint32_t dvpdCount;
    struct {
        uint32_t dvpdUnknown1;
        uint32_t dvpdUnknown2;
        uint32_t dvpdUnknown3;
        uint32_t dvpdUnknown4;
    } dvpdInfo[dvpdCount]; // For every dvpd there are 16 bytes of unknown data
    uint32_t filePathStringLength;
    char filePathString[]; // Null seperated filepath strings
    uint32_t packStringsRawSize;
    uint32_t packStringCompressedSize;
    byte packStrings[]; // lz4 encoded "pack" strings
}

file table

struct DVPMFileTable
{
    struct {
        uint64_t fileOffset; // Offset to the file inside the dvpd data block
        uint32_t compressedSize;
        uint32_t uncompressedSize;
        uint32_t compressedCRC32;
        uint32_t compressionType;
        uint32_t uncompressedCRC32;
        uint32_t metaSectionReference;
    } FileEntries[];
    byte filePaths[]; // lz4 encoded file paths string (separated by null bytes), see footer "fileTableFilepaths"
}

Compression types

0 none
1 LZ4
2 LZ4_HC
3 RFC1951

footer

The footer is 44 bytes large and the last 4 bytes are a magic string that reads "DVPM".

struct DVPMFooter
{
    byte unknown1[8];
    uint32_t metaSectionCRC32;
    uint32_t metaSectionSize;
    byte unknown2[4];
    uint32_t fileCount;
    uint32_t fileTableFilepathsCompressedSize;
    uint32_t fileTableFilepathsRawSize;
    uint32_t fileTableSize;
    uint32_t fileTableCRC32;
    char magic[4]; // "DVPM"
}

.dvpd

TODO

footer

The footer is 32 bytes large and the last four bytes are a magic string that read "DVPD".

struct DVPDFooter
{
    struct {
        uint32_t dvpdUnknown1;
        uint32_t dvpdUnknown2;
        uint32_t dvpdUnknown3;
        uint32_t dvpdUnknown4;
    } dvpdInfo; // Matches with dvpdInfo in DVPM meta section
    uint64_t dataSize; // File size - header size (file size - 32)
    uint32_t dataCRC32;
    char magic[4]; // "DVPD"
}

wotbdvpformat's People

Contributors

pyogenics avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.