mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Move RPak types to public header
This commit is contained in:
parent
0e54190541
commit
2118ee6b48
@ -527,7 +527,7 @@ void RTech_Decompress_f(const CCommand& args)
|
||||
DevMsg(eDLL_T::RTECH, " | |-- Size comp: '%llu'\n", pHeader->m_nSizeDisk);
|
||||
DevMsg(eDLL_T::RTECH, " | |-- Size decp: '%llu'\n", pHeader->m_nSizeMemory);
|
||||
|
||||
if (pHeader->m_nMagic != RPAK_MAGIC)
|
||||
if (pHeader->m_nMagic != PAK_HEADER_MAGIC)
|
||||
{
|
||||
Error(eDLL_T::RTECH, NO_ERROR, "%s - pak file '%s' has invalid magic!\n",
|
||||
__FUNCTION__, inPakFile.String());
|
||||
|
260
r5dev/public/rtech/ipakfile.h
Normal file
260
r5dev/public/rtech/ipakfile.h
Normal file
@ -0,0 +1,260 @@
|
||||
#ifndef RTECH_IPACKFILE_H
|
||||
#define RTECH_IPACKFILE_H
|
||||
|
||||
#define PLATFORM_PAK_PATH "paks\\Win64\\"
|
||||
#define PLATFORM_PAK_OVERRIDE_PATH "paks\\Win32\\"
|
||||
|
||||
#define INVALID_PAK_HANDLE -1
|
||||
|
||||
#define PAK_MAX_TYPES 64
|
||||
#define PAK_HEADER_MAGIC (('k'<<24)+('a'<<16)+('P'<<8)+'R')
|
||||
|
||||
typedef int RPakHandle_t;
|
||||
|
||||
enum class RPakStatus_t : int32_t
|
||||
{
|
||||
PAK_STATUS_FREED = 0,
|
||||
PAK_STATUS_LOAD_PENDING = 1,
|
||||
PAK_STATUS_REPAK_RUNNING = 2,
|
||||
PAK_STATUS_REPAK_DONE = 3,
|
||||
PAK_STATUS_LOAD_STARTING = 4,
|
||||
PAK_STATUS_LOAD_PAKHDR = 5,
|
||||
PAK_STATUS_LOAD_PATCH_INIT = 6,
|
||||
PAK_STATUS_LOAD_PATCH_EDIT_STREAM = 7,
|
||||
PAK_STATUS_LOAD_ASSETS = 8,
|
||||
PAK_STATUS_LOADED = 9,
|
||||
PAK_STATUS_UNLOAD_PENDING = 10,
|
||||
PAK_STATUS_FREE_PENDING = 11,
|
||||
PAK_STATUS_CANCELING = 12,
|
||||
PAK_STATUS_ERROR = 13,
|
||||
PAK_STATUS_INVALID_PAKHANDLE = 14,
|
||||
PAK_STATUS_BUSY = 15
|
||||
};
|
||||
|
||||
struct RPakAssetBinding_t
|
||||
{
|
||||
uint32_t m_nExtension; // For example '0x6C74616D' for the material asset.
|
||||
int m_iVersion;
|
||||
const char* m_szDescription; // Description/Name of asset.
|
||||
void* m_pLoadAssetFunction;
|
||||
void* m_pUnloadAssetFunction;
|
||||
void* m_pReplaceAssetFunction;
|
||||
void* m_pAllocAssetFunctions;
|
||||
int m_iSubHeaderSize;
|
||||
int m_iNativeClassSize; // Native class size, for 'material' it would be CMaterialGlue full size.
|
||||
uint32_t m_HeaderAlignment;
|
||||
int unk3;
|
||||
// [ PIXIE ]: Should be the full size across Season 0-3.
|
||||
};
|
||||
|
||||
struct RPakAssetEntry_t
|
||||
{
|
||||
uint64_t m_Guid;
|
||||
uint64_t m_Padding;
|
||||
uint32_t m_nHeadPageIdx;
|
||||
uint32_t m_nHeadPageOffset;
|
||||
uint32_t m_nCpuPageIdx;
|
||||
uint32_t m_nCpuPageOffset;
|
||||
uint64_t m_nStarpakOffset;
|
||||
uint64_t m_nStarpakOptOffset;
|
||||
uint16_t m_nPageEnd;
|
||||
uint16_t unk1;
|
||||
uint32_t m_nRelationsStartIdx;
|
||||
uint32_t m_nUsesStartIdx;
|
||||
uint32_t m_nRelationsCount;
|
||||
uint32_t m_nUsesCount;
|
||||
uint32_t m_nAssetHeaderSize;
|
||||
uint32_t m_nVersion;
|
||||
uint32_t m_nMagic;
|
||||
};
|
||||
|
||||
struct RPakAssetEntryShort
|
||||
{
|
||||
uint64_t m_Guid;
|
||||
uint64_t m_Padding;
|
||||
void* m_pHead;
|
||||
void* m_pCpu;
|
||||
};
|
||||
|
||||
struct RPakGlobals_t
|
||||
{
|
||||
RPakAssetBinding_t m_nAssetBindings[64]; // [ PIXIE ]: Max possible registered assets on Season 3, 0-2 I did not check yet.
|
||||
RPakAssetEntryShort m_Assets[0x40000];
|
||||
// End size unknown.
|
||||
};
|
||||
|
||||
struct RPakHeader_t
|
||||
{
|
||||
uint32_t m_nMagic; // 'RPak'
|
||||
uint16_t m_nVersion; // R2 = '7' R5 = '8'
|
||||
uint8_t m_nFlags[0x2]; //
|
||||
FILETIME m_nFileTime; //
|
||||
uint64_t m_nHash; //
|
||||
uint64_t m_nSizeDisk; // Compressed size
|
||||
uint64_t m_nEmbeddedStarpakOffset; //
|
||||
uint8_t unk0[0x8]; //
|
||||
uint64_t m_nSizeMemory; // Decompressed size
|
||||
uint64_t m_nEmbeddedStarpakSize; //
|
||||
uint8_t unk1[0x8]; //
|
||||
|
||||
uint16_t m_nStarpakReferenceSize; //
|
||||
uint16_t m_nStarpakOptReferenceSize; //
|
||||
uint16_t m_nVirtualSegmentCount; // * 0x10
|
||||
uint16_t m_nMemPageCount; // * 0xC
|
||||
|
||||
uint32_t m_nPatchIndex; //
|
||||
|
||||
uint32_t m_nDescriptorCount; //
|
||||
uint32_t m_nAssetEntryCount; // File entry count
|
||||
uint32_t m_nGuidDescriptorCount; //
|
||||
uint32_t m_nRelationsCounts; //
|
||||
|
||||
uint8_t unk2[0x10]; //
|
||||
uint32_t m_nMemPageOffset; // Size not verified. Offsets every page by x amount, if not 0 start of first page has data corresponding for 'patching some page'
|
||||
uint8_t unk3[0x8]; //
|
||||
};
|
||||
|
||||
struct RPakPatchCompressedHeader_t
|
||||
{
|
||||
uint64_t m_nSizeDisk;
|
||||
uint64_t m_nSizeMemory;
|
||||
};
|
||||
|
||||
struct RPakDecompState_t
|
||||
{
|
||||
uint64_t m_nInputBuf;
|
||||
uint64_t m_nOut;
|
||||
uint64_t m_nMask;
|
||||
uint64_t m_nOutMask;
|
||||
uint64_t m_nTotalFileLen;
|
||||
uint64_t m_nDecompSize;
|
||||
uint64_t m_nInvMaskIn;
|
||||
uint64_t m_nInvMaskOut;
|
||||
uint32_t m_nHeaderOffset;
|
||||
uint32_t dword44;
|
||||
uint64_t m_nInputBytePos;
|
||||
uint64_t m_nDecompPosition;
|
||||
uint64_t m_nLengthNeeded;
|
||||
uint64_t byte;
|
||||
uint32_t m_nByteBitOffset;
|
||||
uint32_t dword6C;
|
||||
uint64_t qword70;
|
||||
uint64_t m_nCompressedStreamSize;
|
||||
uint64_t m_nDecompStreamSize;
|
||||
};
|
||||
|
||||
class RPakLoadedInfo_t
|
||||
{
|
||||
public:
|
||||
RPakHandle_t m_nHandle; //0x0000
|
||||
RPakStatus_t m_nStatus; //0x0004
|
||||
uint64_t m_nUnk1; //0x0008
|
||||
uint32_t m_nUnk2; //0x0010
|
||||
uint32_t m_nAssetCount; //0x0014
|
||||
char* m_pszFileName; //0x0018
|
||||
void* m_pMalloc; //0x0020
|
||||
uint64_t* m_pAssetGuids; //0x0028 size of the array is m_nAssetCount
|
||||
#if defined (GAMEDLL_S3)
|
||||
void* m_pVSegBuffers[4]; //0x0030
|
||||
char pad_0050[16]; //0x0050
|
||||
void* m_pPakInfo; //0x0060
|
||||
RPakLoadedInfo_t* m_pUnknownLoadedPakInfo; //0x0068
|
||||
char pad_0070[4]; //0x0070
|
||||
int8_t m_nUnk3; //0x0074
|
||||
char pad_0075[51]; //0x0075
|
||||
uint32_t m_nUnk4; //0x00A8
|
||||
uint8_t m_nUnk5; //0x00AC
|
||||
#endif
|
||||
#if !defined (GAMEDLL_S3)
|
||||
char pad_0030[128]; //0x0030
|
||||
char pad_00B0[48]; //0x00B0
|
||||
#endif // !GAMEDLL_S3
|
||||
uint64_t m_nUnkEnd; //0x00B0/0x00E8
|
||||
}; //Size: 0x00B8/0x00E8
|
||||
|
||||
struct RPakDescriptor_t
|
||||
{
|
||||
uint32_t m_Index;
|
||||
uint32_t m_Offset;
|
||||
};
|
||||
|
||||
struct RPakMemPageInfo_t
|
||||
{
|
||||
uint32_t m_nVirtualSegmentIndex;
|
||||
uint32_t m_nPageAlignment;
|
||||
uint32_t m_nDataSize;
|
||||
};
|
||||
|
||||
struct RPakVirtualSegment_t
|
||||
{
|
||||
uint32_t m_nFlags;
|
||||
uint32_t m_nAlignment;
|
||||
uint64_t m_nDataSize;
|
||||
};
|
||||
|
||||
struct PakFile_t // !TODO: Map out on S1 and S2!
|
||||
{
|
||||
int m_nDescCount;
|
||||
int m_nProcessedAssetCount;
|
||||
int m_nPageEnd;
|
||||
int m_nPageStart;
|
||||
uint32_t m_nPatchIndex_maybe;
|
||||
uint32_t dword14;
|
||||
char gap18[184];
|
||||
uint32_t unsigned_intD0;
|
||||
char gapD4[284];
|
||||
uint64_t m_nInputBytePos;
|
||||
uint8_t byte1F8;
|
||||
char gap1F9[4];
|
||||
uint8_t byte1FD;
|
||||
uint8_t byte1FE;
|
||||
uint8_t byte200;
|
||||
RPakDecompState_t m_PakDecompState;
|
||||
uint64_t qword288;
|
||||
uint64_t qword290;
|
||||
uint64_t qword298;
|
||||
uint64_t qword2A0;
|
||||
char* m_PatchData;
|
||||
char gap2B0[696];
|
||||
unsigned __int8(__fastcall* pfunc568)(__int64, LARGE_INTEGER*, unsigned __int64);
|
||||
uint64_t qword570;
|
||||
uint64_t qword578;
|
||||
int* qword580;
|
||||
uint8_t** m_ppPagePointers;
|
||||
void* m_pPatchCompressPairs;
|
||||
uint64_t qword598;
|
||||
char* m_pszStreamingFilePaths;
|
||||
char* m_pszOptStreamingFilePaths;
|
||||
void* m_pVirtualSegments;
|
||||
RPakMemPageInfo_t* m_pMemPages;
|
||||
RPakDescriptor_t* m_pVirtualPointers;
|
||||
RPakAssetEntry_t* m_pAssetEntries;
|
||||
RPakDescriptor_t* m_pGuidDescriptors;
|
||||
uint32_t* m_pFileRelations;
|
||||
char gap5E0[40];
|
||||
RPakAssetEntry_t** m_ppAssetEntries;
|
||||
char gap610[256];
|
||||
#if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) // TODO: needs to be checked.
|
||||
char gap710[256];
|
||||
#if !defined (GAMEDLL_S2)
|
||||
char gap810[8];
|
||||
#endif // !(GAMEDLL_S0) || !(GAMEDLL_S1) || !(GAMEDLL_S2)
|
||||
#endif
|
||||
const char* m_pszFileName;
|
||||
RPakHeader_t m_PakHdr;
|
||||
};
|
||||
|
||||
#if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1)
|
||||
#if !defined (GAMEDLL_S2)
|
||||
static_assert(sizeof(PakFile_t) == 2208); // S3+
|
||||
#else
|
||||
static_assert(sizeof(PakFile_t) == 2200); // S2
|
||||
#endif // !GAMEDLL_S2
|
||||
#else
|
||||
static_assert(sizeof(PakFile_t) == 1944); // S0/S1
|
||||
#endif // !GAMEDLL_S0 && !GAMEDLL_S1
|
||||
|
||||
static_assert(sizeof(RPakDecompState_t) == 136);
|
||||
static_assert(sizeof(RPakPatchCompressedHeader_t) == 16);
|
||||
|
||||
#endif // RTECH_IPACKFILE_H
|
@ -3,11 +3,15 @@ add_module( "lib" "rtech_game" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
|
||||
|
||||
start_sources()
|
||||
|
||||
add_sources( SOURCE_GROUP "Source"
|
||||
add_sources( SOURCE_GROUP "Private"
|
||||
"rtech_game.cpp"
|
||||
"rtech_game.h"
|
||||
)
|
||||
|
||||
add_sources( SOURCE_GROUP "Public"
|
||||
"${ENGINE_SOURCE_DIR}/public/rtech/ipakfile.h"
|
||||
)
|
||||
|
||||
end_sources()
|
||||
|
||||
add_module( "lib" "rtech_tools" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
|
||||
@ -19,6 +23,12 @@ add_sources( SOURCE_GROUP "Source"
|
||||
"rtech_utils.h"
|
||||
)
|
||||
|
||||
add_sources( SOURCE_GROUP "Public"
|
||||
"${ENGINE_SOURCE_DIR}/public/rtech/ipakfile.h"
|
||||
)
|
||||
|
||||
end_sources()
|
||||
|
||||
add_module( "lib" "rui" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
|
||||
|
||||
start_sources()
|
||||
@ -28,6 +38,8 @@ add_sources( SOURCE_GROUP "Source"
|
||||
"rui/rui.h"
|
||||
)
|
||||
|
||||
end_sources()
|
||||
|
||||
add_module( "lib" "stryder" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
|
||||
|
||||
start_sources()
|
||||
|
@ -1,36 +1,14 @@
|
||||
#pragma once
|
||||
#include "tier0/tslist.h"
|
||||
|
||||
#define PLATFORM_PAK_PATH "paks\\Win64\\"
|
||||
#define PLATFORM_PAK_OVERRIDE_PATH "paks\\Win32\\"
|
||||
|
||||
#define INVALID_PAK_HANDLE -1
|
||||
|
||||
typedef int RPakHandle_t;
|
||||
enum class ePakStatus : int
|
||||
{
|
||||
PAK_STATUS_FREED = 0,
|
||||
PAK_STATUS_LOAD_PENDING,
|
||||
PAK_STATUS_REPAK_RUNNING,
|
||||
PAK_STATUS_REPAK_DONE,
|
||||
PAK_STATUS_LOAD_STARTING,
|
||||
PAK_STATUS_LOAD_PAKHDR,
|
||||
PAK_STATUS_LOAD_PATCH_INIT,
|
||||
PAK_STATUS_LOAD_PATCH_EDIT_STREAM,
|
||||
PAK_STATUS_LOAD_ASSETS,
|
||||
PAK_STATUS_LOADED, // 9
|
||||
PAK_STATUS_UNLOAD_PENDING,
|
||||
PAK_STATUS_FREE_PENDING,
|
||||
PAK_STATUS_CANCELING,
|
||||
PAK_STATUS_ERROR, // 13
|
||||
PAK_STATUS_INVALID_PAKHANDLE,
|
||||
PAK_STATUS_BUSY
|
||||
};
|
||||
#include "public/rtech/ipakfile.h"
|
||||
|
||||
/* ==== RTECH_GAME ====================================================================================================================================================== */
|
||||
inline CMemory p_CPakFile_LoadAsync;
|
||||
inline RPakHandle_t(*CPakFile_LoadAsync)(const char* szPakFileName, CAlignedMemAlloc* pMalloc, int nIdx, bool bUnk);
|
||||
|
||||
inline CMemory p_CPakFile_WaitAsync;
|
||||
inline RPakStatus_t(*CPakFile_WaitAsync)(RPakHandle_t handle, void* pFinishCallback);
|
||||
|
||||
inline CMemory p_CPakFile_LoadPak;
|
||||
inline unsigned int (*CPakFile_LoadPak)(void* thisptr, void* a2, uint64_t a3);
|
||||
|
||||
@ -42,7 +20,8 @@ inline CMemory p_CPakFile_OpenFileOffset; // Offset to inlined 'CPakFile::LoadPa
|
||||
class CPakFile
|
||||
{
|
||||
public:
|
||||
static RPakHandle_t LoadAsync(const char* szPakFileName, CAlignedMemAlloc* pMalloc = AlignedMemAlloc(), int nIdx = NULL, bool bUnk = false);
|
||||
static RPakHandle_t LoadAsync(const char* szPakFileName, CAlignedMemAlloc* pMalloc = AlignedMemAlloc(), int nIdx = NULL, bool bUnk = false);
|
||||
static inline RPakStatus_t WaitAsync(RPakHandle_t handle, void* pFinishCallback = nullptr) { return CPakFile_WaitAsync(handle, pFinishCallback); }
|
||||
static void UnloadPak(RPakHandle_t handle);
|
||||
};
|
||||
|
||||
@ -55,18 +34,22 @@ class V_RTechGame : public IDetour
|
||||
virtual void GetAdr(void) const
|
||||
{
|
||||
LogFunAdr("CPakFile::LoadAsync", p_CPakFile_LoadAsync.GetPtr());
|
||||
LogFunAdr("CPakFile::WaitAsync", p_CPakFile_WaitAsync.GetPtr());
|
||||
LogFunAdr("CPakFile::LoadPak", p_CPakFile_LoadPak.GetPtr());
|
||||
LogFunAdr("CPakFile::UnloadPak", p_CPakFile_UnloadPak.GetPtr());
|
||||
LogFunAdr("CPakFile::OpenFile", p_CPakFile_OpenFileOffset.GetPtr());
|
||||
}
|
||||
virtual void GetFun(void) const
|
||||
{
|
||||
p_CPakFile_LoadPak = g_GameDll.FindPatternSIMD("48 89 4C 24 ?? 56 41 55 48 81 EC ?? ?? ?? ?? 4C");
|
||||
CPakFile_LoadPak = p_CPakFile_LoadPak.RCast<unsigned int (*)(void*, void*, uint64_t)>();
|
||||
|
||||
p_CPakFile_LoadAsync = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 89 03 8B 0B").FollowNearCallSelf();
|
||||
CPakFile_LoadAsync = p_CPakFile_LoadAsync.RCast<RPakHandle_t(*)(const char*, CAlignedMemAlloc*, int, bool)>();
|
||||
|
||||
p_CPakFile_WaitAsync = g_GameDll.FindPatternSIMD("40 53 55 48 83 EC 38 48 89 74 24 ??");
|
||||
CPakFile_WaitAsync = p_CPakFile_WaitAsync.RCast<RPakStatus_t(*)(RPakHandle_t, void*)>();
|
||||
|
||||
p_CPakFile_LoadPak = g_GameDll.FindPatternSIMD("48 89 4C 24 ?? 56 41 55 48 81 EC ?? ?? ?? ?? 4C");
|
||||
CPakFile_LoadPak = p_CPakFile_LoadPak.RCast<unsigned int (*)(void*, void*, uint64_t)>();
|
||||
|
||||
p_CPakFile_UnloadPak = g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 85 FF 74 0C").FollowNearCallSelf();
|
||||
CPakFile_UnloadPak = p_CPakFile_UnloadPak.RCast<void (*)(RPakHandle_t)>();
|
||||
}
|
||||
|
@ -159,6 +159,124 @@ uint64_t __fastcall RTech::DecompressPakFileInit(RPakDecompState_t* state, uint8
|
||||
return result;
|
||||
}
|
||||
|
||||
static const unsigned char /*unk_141313180*/ s_PakFileCompressionLUT[0x720] =
|
||||
{
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0B,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0xF7,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF3,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0E,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0x09,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF1,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0D,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0xF7,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF2,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0F,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0x0A,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF0,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0C,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x09,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0E,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0B,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0A,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x10,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0C,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x09,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0F,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0D,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0A,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0xFF,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x07,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x07,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x0B,
|
||||
0x00, 0x08, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x0E,
|
||||
0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0D,
|
||||
0x00, 0x08, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0F,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x4A, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
|
||||
0xCA, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00,
|
||||
0x4A, 0x01, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0xAA, 0x01, 0x00, 0x00,
|
||||
0xAA, 0x03, 0x00, 0x00, 0xAA, 0x05, 0x00, 0x00, 0xAA, 0x25, 0x00, 0x00, 0xAA, 0x25, 0x02, 0x00,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x09, 0x09, 0x0D, 0x11, 0x15,
|
||||
0x00, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x2A, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05,
|
||||
0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF,
|
||||
0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE,
|
||||
0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C,
|
||||
0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F,
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F,
|
||||
0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9,
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37,
|
||||
0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0,
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xF1, 0x1D, 0xC1, 0xF6, 0x7F, 0x00, 0x00,
|
||||
0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F,
|
||||
0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37,
|
||||
0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0,
|
||||
0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA,
|
||||
0x00, 0x70, 0x95, 0xB6, 0x00, 0x70, 0x95, 0xB6, 0x00, 0x70, 0x95, 0xB6, 0x00, 0x70, 0x95, 0xB6,
|
||||
0xA9, 0xAA, 0x2A, 0x3D, 0xA9, 0xAA, 0x2A, 0x3D, 0xA9, 0xAA, 0x2A, 0x3D, 0xA9, 0xAA, 0x2A, 0x3D,
|
||||
0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F,
|
||||
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF,
|
||||
0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE,
|
||||
0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C,
|
||||
0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F,
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F,
|
||||
0x4C, 0x39, 0x56, 0x75, 0x42, 0x52, 0x65, 0x75, 0x70, 0x35, 0x31, 0x77, 0x4C, 0x51, 0x64, 0x61,
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: decompress input data
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -3,375 +3,7 @@
|
||||
#include "vpklib/packedstore.h"
|
||||
#include "rtech/rtech_game.h"
|
||||
#include "public/rendersystem/schema/texture.g.h"
|
||||
|
||||
#define PAK_MAX_TYPES 64
|
||||
#define PAK_PARAM_SIZE 0xB0
|
||||
|
||||
#define RPAK_MAGIC (('k'<<24)+('a'<<16)+('P'<<8)+'R')
|
||||
|
||||
static const inline unsigned char /*unk_141313180*/ s_PakFileCompressionLUT[0x720] =
|
||||
{
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0B,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0xF7,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF3,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0E,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0x09,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF1,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0D,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0xF7,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF2,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF9, 0x04, 0xFD, 0xFC, 0x07, 0x04, 0x05, 0xFF, 0xF4,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF6, 0x04, 0xFD, 0xFC, 0xFB, 0x04, 0x06, 0xFF, 0x0F,
|
||||
0x04, 0xFE, 0xFC, 0x08, 0x04, 0xEF, 0x11, 0xF8, 0x04, 0xFD, 0xFC, 0x0C, 0x04, 0x05, 0xFF, 0x0A,
|
||||
0x04, 0xFE, 0xFC, 0x10, 0x04, 0xEF, 0x11, 0xF5, 0x04, 0xFD, 0xFC, 0xFA, 0x04, 0x06, 0xFF, 0xF0,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0C,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x09,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0E,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0B,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0A,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x10,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0C,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x09,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0F,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x11,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0D,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x0A,
|
||||
0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x08, 0x04, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0xFF,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x07,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x07,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x06,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x02, 0x04, 0x03, 0x05, 0x02, 0x04, 0x04, 0x06, 0x02, 0x04, 0x03, 0x06, 0x02, 0x05, 0x04, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x07,
|
||||
0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x08,
|
||||
0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x0B,
|
||||
0x00, 0x08, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x0E,
|
||||
0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0D,
|
||||
0x00, 0x08, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0F,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x01, 0x02, 0x01, 0x05, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06, 0x01, 0x02, 0x01, 0x06,
|
||||
0x4A, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
|
||||
0xCA, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00,
|
||||
0x4A, 0x01, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0xAA, 0x01, 0x00, 0x00,
|
||||
0xAA, 0x03, 0x00, 0x00, 0xAA, 0x05, 0x00, 0x00, 0xAA, 0x25, 0x00, 0x00, 0xAA, 0x25, 0x02, 0x00,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x09, 0x09, 0x0D, 0x11, 0x15,
|
||||
0x00, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x2A, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05,
|
||||
0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF,
|
||||
0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE,
|
||||
0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C,
|
||||
0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F,
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F,
|
||||
0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9,
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37,
|
||||
0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0,
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xF1, 0x1D, 0xC1, 0xF6, 0x7F, 0x00, 0x00,
|
||||
0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F,
|
||||
0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9, 0x02, 0x61, 0x4D, 0xB9,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37, 0xC2, 0x14, 0xCF, 0x37,
|
||||
0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0, 0x9E, 0x4B, 0x6F, 0xB0,
|
||||
0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA, 0x22, 0x0B, 0xB6, 0xBA,
|
||||
0x00, 0x70, 0x95, 0xB6, 0x00, 0x70, 0x95, 0xB6, 0x00, 0x70, 0x95, 0xB6, 0x00, 0x70, 0x95, 0xB6,
|
||||
0xA9, 0xAA, 0x2A, 0x3D, 0xA9, 0xAA, 0x2A, 0x3D, 0xA9, 0xAA, 0x2A, 0x3D, 0xA9, 0xAA, 0x2A, 0x3D,
|
||||
0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F,
|
||||
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF,
|
||||
0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE, 0xA8, 0xAA, 0x2A, 0xBE,
|
||||
0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C, 0xD2, 0x85, 0x08, 0x3C,
|
||||
0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F, 0x83, 0xF9, 0x22, 0x3F,
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F, 0x00, 0x10, 0xC9, 0x3F,
|
||||
0x4C, 0x39, 0x56, 0x75, 0x42, 0x52, 0x65, 0x75, 0x70, 0x35, 0x31, 0x77, 0x4C, 0x51, 0x64, 0x61,
|
||||
};
|
||||
|
||||
enum class RPakStatus_t : int32_t
|
||||
{
|
||||
PAK_STATUS_FREED = 0,
|
||||
PAK_STATUS_LOAD_PENDING = 1,
|
||||
PAK_STATUS_REPAK_RUNNING = 2,
|
||||
PAK_STATUS_REPAK_DONE = 3,
|
||||
PAK_STATUS_LOAD_STARTING = 4,
|
||||
PAK_STATUS_LOAD_PAKHDR = 5,
|
||||
PAK_STATUS_LOAD_PATCH_INIT = 6,
|
||||
PAK_STATUS_LOAD_PATCH_EDIT_STREAM = 7,
|
||||
PAK_STATUS_LOAD_ASSETS = 8,
|
||||
PAK_STATUS_LOADED = 9,
|
||||
PAK_STATUS_UNLOAD_PENDING = 10,
|
||||
PAK_STATUS_FREE_PENDING = 11,
|
||||
PAK_STATUS_CANCELING = 12,
|
||||
PAK_STATUS_ERROR = 13,
|
||||
PAK_STATUS_INVALID_PAKHANDLE = 14,
|
||||
PAK_STATUS_BUSY = 15
|
||||
};
|
||||
|
||||
struct RPakAssetBinding_t
|
||||
{
|
||||
uint32_t m_nExtension; // For example '0x6C74616D' for the material asset.
|
||||
int m_iVersion;
|
||||
const char* m_szDescription; // Description/Name of asset.
|
||||
void* m_pLoadAssetFunction;
|
||||
void* m_pUnloadAssetFunction;
|
||||
void* m_pReplaceAssetFunction;
|
||||
void* m_pAllocAssetFunctions;
|
||||
int m_iSubHeaderSize;
|
||||
int m_iNativeClassSize; // Native class size, for 'material' it would be CMaterialGlue full size.
|
||||
uint32_t m_HeaderAlignment;
|
||||
int unk3;
|
||||
// [ PIXIE ]: Should be the full size across Season 0-3.
|
||||
};
|
||||
|
||||
struct RPakAssetEntry_t
|
||||
{
|
||||
uint64_t m_Guid;
|
||||
uint64_t m_Padding;
|
||||
uint32_t m_nHeadPageIdx;
|
||||
uint32_t m_nHeadPageOffset;
|
||||
uint32_t m_nCpuPageIdx;
|
||||
uint32_t m_nCpuPageOffset;
|
||||
uint64_t m_nStarpakOffset;
|
||||
uint64_t m_nStarpakOptOffset;
|
||||
uint16_t m_nPageEnd;
|
||||
uint16_t unk1;
|
||||
uint32_t m_nRelationsStartIdx;
|
||||
uint32_t m_nUsesStartIdx;
|
||||
uint32_t m_nRelationsCount;
|
||||
uint32_t m_nUsesCount;
|
||||
uint32_t m_nAssetHeaderSize;
|
||||
uint32_t m_nVersion;
|
||||
uint32_t m_nMagic;
|
||||
};
|
||||
|
||||
struct RPakAssetEntryShort
|
||||
{
|
||||
uint64_t m_Guid;
|
||||
uint64_t m_Padding;
|
||||
void* m_pHead;
|
||||
void* m_pCpu;
|
||||
};
|
||||
|
||||
struct RPakGlobals_t
|
||||
{
|
||||
RPakAssetBinding_t m_nAssetBindings[64]; // [ PIXIE ]: Max possible registered assets on Season 3, 0-2 I did not check yet.
|
||||
RPakAssetEntryShort m_Assets[0x40000];
|
||||
// End size unknown.
|
||||
};
|
||||
|
||||
struct RPakHeader_t
|
||||
{
|
||||
uint32_t m_nMagic; // 'RPak'
|
||||
uint16_t m_nVersion; // R2 = '7' R5 = '8'
|
||||
uint8_t m_nFlags[0x2]; //
|
||||
FILETIME m_nFileTime; //
|
||||
uint64_t m_nHash; //
|
||||
uint64_t m_nSizeDisk; // Compressed size
|
||||
uint64_t m_nEmbeddedStarpakOffset; //
|
||||
uint8_t unk0[0x8]; //
|
||||
uint64_t m_nSizeMemory; // Decompressed size
|
||||
uint64_t m_nEmbeddedStarpakSize; //
|
||||
uint8_t unk1[0x8]; //
|
||||
|
||||
uint16_t m_nStarpakReferenceSize; //
|
||||
uint16_t m_nStarpakOptReferenceSize; //
|
||||
uint16_t m_nVirtualSegmentCount; // * 0x10
|
||||
uint16_t m_nMemPageCount; // * 0xC
|
||||
|
||||
uint32_t m_nPatchIndex; //
|
||||
|
||||
uint32_t m_nDescriptorCount; //
|
||||
uint32_t m_nAssetEntryCount; // File entry count
|
||||
uint32_t m_nGuidDescriptorCount; //
|
||||
uint32_t m_nRelationsCounts; //
|
||||
|
||||
uint8_t unk2[0x10]; //
|
||||
uint32_t m_nMemPageOffset; // Size not verified. Offsets every page by x amount, if not 0 start of first page has data corresponding for 'patching some page'
|
||||
uint8_t unk3[0x8]; //
|
||||
};
|
||||
|
||||
struct RPakPatchCompressedHeader_t
|
||||
{
|
||||
uint64_t m_nSizeDisk;
|
||||
uint64_t m_nSizeMemory;
|
||||
};
|
||||
|
||||
struct RPakDecompState_t
|
||||
{
|
||||
uint64_t m_nInputBuf;
|
||||
uint64_t m_nOut;
|
||||
uint64_t m_nMask;
|
||||
uint64_t m_nOutMask;
|
||||
uint64_t m_nTotalFileLen;
|
||||
uint64_t m_nDecompSize;
|
||||
uint64_t m_nInvMaskIn;
|
||||
uint64_t m_nInvMaskOut;
|
||||
uint32_t m_nHeaderOffset;
|
||||
uint32_t dword44;
|
||||
uint64_t m_nInputBytePos;
|
||||
uint64_t m_nDecompPosition;
|
||||
uint64_t m_nLengthNeeded;
|
||||
uint64_t byte;
|
||||
uint32_t m_nByteBitOffset;
|
||||
uint32_t dword6C;
|
||||
uint64_t qword70;
|
||||
uint64_t m_nCompressedStreamSize;
|
||||
uint64_t m_nDecompStreamSize;
|
||||
};
|
||||
|
||||
class RPakLoadedInfo_t
|
||||
{
|
||||
public:
|
||||
RPakHandle_t m_nHandle; //0x0000
|
||||
RPakStatus_t m_nStatus; //0x0004
|
||||
uint64_t m_nUnk1; //0x0008
|
||||
uint32_t m_nUnk2; //0x0010
|
||||
uint32_t m_nAssetCount; //0x0014
|
||||
char* m_pszFileName; //0x0018
|
||||
void* m_pMalloc; //0x0020
|
||||
uint64_t* m_pAssetGuids; //0x0028 size of the array is m_nAssetCount
|
||||
#if defined (GAMEDLL_S3)
|
||||
void* m_pVSegBuffers[4]; //0x0030
|
||||
char pad_0050[16]; //0x0050
|
||||
void* m_pPakInfo; //0x0060
|
||||
RPakLoadedInfo_t* m_pUnknownLoadedPakInfo; //0x0068
|
||||
char pad_0070[4]; //0x0070
|
||||
int8_t m_nUnk3; //0x0074
|
||||
char pad_0075[51]; //0x0075
|
||||
uint32_t m_nUnk4; //0x00A8
|
||||
uint8_t m_nUnk5; //0x00AC
|
||||
#endif
|
||||
#if !defined (GAMEDLL_S3)
|
||||
char pad_0030[128]; //0x0030
|
||||
char pad_00B0[48]; //0x00B0
|
||||
#endif // !GAMEDLL_S3
|
||||
uint64_t m_nUnkEnd; //0x00B0/0x00E8
|
||||
}; //Size: 0x00B8/0x00E8
|
||||
|
||||
struct RPakDescriptor_t
|
||||
{
|
||||
uint32_t m_Index;
|
||||
uint32_t m_Offset;
|
||||
};
|
||||
|
||||
struct RPakMemPageInfo_t
|
||||
{
|
||||
uint32_t m_nVirtualSegmentIndex;
|
||||
uint32_t m_nPageAlignment;
|
||||
uint32_t m_nDataSize;
|
||||
};
|
||||
|
||||
struct RPakVirtualSegment_t
|
||||
{
|
||||
uint32_t m_nFlags;
|
||||
uint32_t m_nAlignment;
|
||||
uint64_t m_nDataSize;
|
||||
};
|
||||
|
||||
struct PakFile_t // !TODO: Map out on S1 and S2!
|
||||
{
|
||||
int m_nDescCount;
|
||||
int m_nProcessedAssetCount;
|
||||
int m_nPageEnd;
|
||||
int m_nPageStart;
|
||||
uint32_t m_nPatchIndex_maybe;
|
||||
uint32_t dword14;
|
||||
char gap18[184];
|
||||
uint32_t unsigned_intD0;
|
||||
char gapD4[284];
|
||||
uint64_t m_nInputBytePos;
|
||||
uint8_t byte1F8;
|
||||
char gap1F9[4];
|
||||
uint8_t byte1FD;
|
||||
uint8_t byte1FE;
|
||||
uint8_t byte200;
|
||||
RPakDecompState_t m_PakDecompState;
|
||||
uint64_t qword288;
|
||||
uint64_t qword290;
|
||||
uint64_t qword298;
|
||||
uint64_t qword2A0;
|
||||
char* m_PatchData;
|
||||
char gap2B0[696];
|
||||
unsigned __int8(__fastcall* pfunc568)(__int64, LARGE_INTEGER*, unsigned __int64);
|
||||
uint64_t qword570;
|
||||
uint64_t qword578;
|
||||
int* qword580;
|
||||
uint8_t** m_ppPagePointers;
|
||||
void* m_pPatchCompressPairs;
|
||||
uint64_t qword598;
|
||||
char* m_pszStreamingFilePaths;
|
||||
char* m_pszOptStreamingFilePaths;
|
||||
void* m_pVirtualSegments;
|
||||
RPakMemPageInfo_t* m_pMemPages;
|
||||
RPakDescriptor_t* m_pVirtualPointers;
|
||||
RPakAssetEntry_t* m_pAssetEntries;
|
||||
RPakDescriptor_t* m_pGuidDescriptors;
|
||||
uint32_t* m_pFileRelations;
|
||||
char gap5E0[40];
|
||||
RPakAssetEntry_t** m_ppAssetEntries;
|
||||
char gap610[256];
|
||||
#if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) // TODO: needs to be checked.
|
||||
char gap710[256];
|
||||
#if !defined (GAMEDLL_S2)
|
||||
char gap810[8];
|
||||
#endif // !(GAMEDLL_S0) || !(GAMEDLL_S1) || !(GAMEDLL_S2)
|
||||
#endif
|
||||
const char* m_pszFileName;
|
||||
RPakHeader_t m_PakHdr;
|
||||
};
|
||||
|
||||
#if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1)
|
||||
#if !defined (GAMEDLL_S2)
|
||||
static_assert(sizeof(PakFile_t) == 2208); // S3+
|
||||
#else
|
||||
static_assert(sizeof(PakFile_t) == 2200); // S2
|
||||
#endif // !GAMEDLL_S2
|
||||
#else
|
||||
static_assert(sizeof(PakFile_t) == 1944); // S0/S1
|
||||
#endif // !GAMEDLL_S0 && !GAMEDLL_S1
|
||||
|
||||
static_assert(sizeof(RPakDecompState_t) == 136);
|
||||
static_assert(sizeof(RPakPatchCompressedHeader_t) == 16);
|
||||
#include "public/rtech/ipakfile.h"
|
||||
|
||||
/* ==== RTECH =========================================================================================================================================================== */
|
||||
// [ PIXIE ]: I'm very unsure about this, but it really seems like it
|
||||
|
Loading…
x
Reference in New Issue
Block a user