Skip to content

Instantly share code, notes, and snippets.

@Radfordhound
Created August 30, 2020 05:53
Show Gist options
  • Save Radfordhound/9c7695a0f6b1bcdfaeb4ad4c5462a6e8 to your computer and use it in GitHub Desktop.
Save Radfordhound/9c7695a0f6b1bcdfaeb4ad4c5462a6e8 to your computer and use it in GitHub Desktop.
template<typename T>
struct MoveArray
{
T* Data;
uint Count;
uint Capacity;
IAllocator* Allocator = nullptr; // Not actually set to anything in files obviously
};
struct Header
{
ushort Version = 2;
ushort SheetCount; // ??
MoveArray<Sheet*> Sheets;
}
class Sheet
{
char* NameOffset;
uint CellsCount;
MoveArray<Cell*> Cells;
}
class Cell
{
char* NameOffset; // **Can be null!!**
char16_t* DataOffset; // Null-terminated UTF-16 string
MoveArray<Remapping*> Remappings;
ulong Unknown1 = 0; // Always 0??
ulong Unknown2 = 0; // Always 0??
ushort Unknown3 = 0; // ??
ushort LastCharIndex;
uint Unknown4 = 2; // ??
uint Unknown5 = 0xFFFFFFFF; // ??
ushort Unknown6 = 0; // ??
ushort LastCharIndex2 = LastCharIndex;
uint Unknown7 = 1; // ??
uint Unknown8 = 0x16; // Can also be 0x14? Layout type??
ushort Unknown9 = 0; // ??
ushort LastCharIndex3 = LastCharIndex;
uint Unknown10 = 0; // ??
uint Unknown11 = 1; // ??
ushort Unknown12 = 0; // ??
ushort LastCharIndex4 = LastCharIndex;
uint Unknown13 = 3; // ??
uint Unknown14 = 0; // ??
}
class Remapping // ?
{
ushort CharIndex;
ushort Unknown2;
uint Unknown3; // Always 5 or 4?? Maybe data type?
uint Unknown4; // Seems to be a normal uint if Unknown3 == 5 and 4 bytes contained within a uint (so endianness applies) if Unknown3 == 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment