Skip to content

Instantly share code, notes, and snippets.

@Wunkolo
Last active August 29, 2015 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Wunkolo/fda865bd9c166cdc17cd to your computer and use it in GitHub Desktop.
Save Wunkolo/fda865bd9c166cdc17cd to your computer and use it in GitHub Desktop.
010 editor templates for various Fox engine file formats
typedef enum <uint>
{
FTEX_Param = 1, // Found for srm and mtm files
// Each channel acts as material parameter
// R = Ambient Occlusion
// G = Specular Albedo
// B = Roughness
FTEX_Color = 3, // Found for bsm files(albedo texture)
FTEX_Cubemap = 7, // Found for cbm(cubemap) and
FTEX_NormalMap = 9 // Found for nrm files
} FTEX_USAGE;
typedef enum <ushort>
{
DXT1 = 2,
UnknownA1 = 3,
DXT5 = 4,
UnknownA3 = 5,
} FTEX_COMP;
struct FTEX_Header
{
unsigned int Magic <format=hex,bgcolor=cPurple>; // 1480938566(0x58455446)
unsigned int Unknown <format=hex>; // 1073867653(0x4001EB85) Float? Version?
FTEX_COMP DXType <bgcolor=cLtRed>; // 2 = DXT1, 4 = DXT5
unsigned short Width <bgcolor=cAqua>,
Height <bgcolor=cGreen>;
unsigned short One; // ?
unsigned char MipMaps <bgcolor=cYellow>;
unsigned char Unkn;
unsigned short UnknShrt <bgcolor=cYellow>;
unsigned char Flag1 <bgcolor=cLtRed>;
unsigned char Flag2 <bgcolor=cRed>;
unsigned short UnknShrt3 <bgcolor=cAqua>;
unsigned int Flag2 <bgcolor=cLtRed>;
unsigned FTEX_USAGE Usage <bgcolor=cLtBlue>; // Bitfield
unsigned int Flag3 <bgcolor=cRed>;
unsigned int Pad2[3];
unsigned int Hash128[4] <bgcolor=cPurple>;
};
struct FTEX_Entry
{
unsigned int ChunkMapOffset <bgcolor=cLtRed>; // Offset within FTEXS file
unsigned int Flags; // ?
unsigned int DataSize <bgcolor=cAqua>; // Not including block headers
unsigned char MipLevel <bgcolor=cLtRed>;
unsigned char StreamNumber <bgcolor=cLtPurple>;
unsigned short StreamChunkCount <bgcolor=cLtGreen>;
};
FTEX_Header Header;
if ((char)Header.Usage == FTEX_Cubemap) // Cubemap
{
SetForeColor(cRed);
FTEX_Entry Front[Header.MipMaps];
FTEX_Entry Back[Header.MipMaps];
SetForeColor(cBlue);
FTEX_Entry Left[Header.MipMaps];
FTEX_Entry Right[Header.MipMaps];
SetForeColor(cGreen);
FTEX_Entry Up[Header.MipMaps];
FTEX_Entry Down[Header.MipMaps];
}
else
{
FTEX_Entry MipLevels[Header.MipMaps];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment