Skip to content

ThemModdingHerds/gfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reverge Package File

Reverge Package File (.gfs) parser library for C#

Structure

Everything is Big Endian

struct Pascal64String
{
    size_t length;
    char chars[length];
};

struct Header
{
    uint dataOffset;
    Pascal64String identifier;
    Pascal64String version;
    size_t entryCount;
};

struct Entry
{
    Pascal64String path;
    size_t size;
    int alignment;
};

Header header;
Entry entries[header.entryCount];

Calculate Data Offset

size_t runningOffset = header.dataOffset;

for(size_t i = 0;i < header.entryCount;i++)
{
    Entry entry = entries[i];
    runningOffset += (entry.alignment - (runningOffset % entry.alignment)) % entry.alignment
    // runningOffset is the position of the data from entries[i]
    runningOffset += entry.size;
}

Usage

For reading:

using ThemModdingHerds.GFS;
using ThemModdingHerds.IO;

BinaryReader reader = new BinaryReader(someStreamOrFilePath);
RevergePackage file = reader.ReadRevergePackage(); // extends List<RevergePackageEntry>
RevergePackageHeader header = file.Header; // contains file count, offset, version and file identifier
RevergePackageEntry entry = file[index]; // the entry contains the path to the file and its data

or parsing a folder into one:

using ThemModdingHerds.GFS;

RevergePackage file = RevergePackage.Open(pathToFolder); // now the folder became a .gfs file

Credits

Packages

 
 
 

Contributors

Languages