2024-08-18 13:05:29 +00:00
|
|
|
#ifndef PKR_H
|
|
|
|
#define PKR_H
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "export.h"
|
|
|
|
|
2024-08-18 16:30:56 +00:00
|
|
|
struct PKR_FILEINFO
|
2024-08-18 13:30:06 +00:00
|
|
|
{
|
|
|
|
char name[0x20];
|
|
|
|
u32 crc;
|
|
|
|
i32 compressed;
|
|
|
|
u32 fileOffset;
|
|
|
|
u32 uncompressedSize;
|
|
|
|
u32 compressedSize;
|
|
|
|
};
|
2024-08-18 13:05:29 +00:00
|
|
|
|
2024-08-18 16:48:50 +00:00
|
|
|
struct PKR_FOOTER
|
|
|
|
{
|
|
|
|
i32 field_0;
|
2024-08-20 20:53:40 +00:00
|
|
|
u32 numDirs;
|
2024-08-18 16:48:50 +00:00
|
|
|
i32 numFiles;
|
|
|
|
};
|
|
|
|
|
2024-08-18 16:50:48 +00:00
|
|
|
struct PKR_DIRINFO
|
|
|
|
{
|
|
|
|
char name[0x20];
|
|
|
|
|
|
|
|
i32 field_20;
|
|
|
|
i32 numFiles;
|
|
|
|
};
|
|
|
|
|
2024-08-18 18:49:08 +00:00
|
|
|
struct NODE_DIRINFO
|
|
|
|
{
|
|
|
|
PKR_DIRINFO dirInfo;
|
|
|
|
struct NODE_DIRINFO* mNext;
|
|
|
|
struct NODE_DIRINFO* mPrev;
|
|
|
|
};
|
|
|
|
|
2024-08-20 21:57:54 +00:00
|
|
|
struct NODE_FILEINFO
|
|
|
|
{
|
|
|
|
};
|
|
|
|
|
2024-08-20 20:53:40 +00:00
|
|
|
struct PKR_HEADER
|
|
|
|
{
|
|
|
|
i32 pkrMagic;
|
|
|
|
i32 dirOffset;
|
|
|
|
};
|
|
|
|
|
2024-08-18 17:29:20 +00:00
|
|
|
struct LIBPKR_HANDLE
|
|
|
|
{
|
|
|
|
FILE* fp;
|
2024-08-18 17:45:39 +00:00
|
|
|
char name[1];
|
2024-08-18 17:29:20 +00:00
|
|
|
u8 padAfterName[0x108-4-1];
|
|
|
|
|
|
|
|
|
|
|
|
i32 field_108;
|
2024-08-20 20:53:40 +00:00
|
|
|
PKR_HEADER mHeader;
|
|
|
|
PKR_FOOTER mFooter;
|
2024-08-18 17:29:20 +00:00
|
|
|
|
2024-08-18 18:49:08 +00:00
|
|
|
NODE_DIRINFO* pDirInfo;
|
2024-08-20 21:57:54 +00:00
|
|
|
NODE_FILEINFO* pFileInfo;
|
2024-08-18 17:29:20 +00:00
|
|
|
|
2024-08-20 21:57:54 +00:00
|
|
|
u8 padBottom[0x12C-0x124-4];
|
2024-08-18 17:29:20 +00:00
|
|
|
};
|
|
|
|
|
2024-08-18 13:10:40 +00:00
|
|
|
EXPORT u8 fileCRCCheck(u8*, i32, u32);
|
|
|
|
EXPORT void PKR_ReportError(const char*, ...);
|
2024-08-18 13:05:29 +00:00
|
|
|
|
2024-08-18 13:30:06 +00:00
|
|
|
EXPORT u8* decompressZLIB(u8*, u32, u32);
|
2024-08-18 16:30:56 +00:00
|
|
|
EXPORT u8* PKRComp_DecompressFile(PKR_FILEINFO*, u8*, i32);
|
2024-08-19 10:17:34 +00:00
|
|
|
EXPORT u8 PKR_UnlockFile(LIBPKR_HANDLE* fp);
|
2024-08-18 17:45:39 +00:00
|
|
|
EXPORT u8 PKR_Open(LIBPKR_HANDLE**, const char*, i32);
|
|
|
|
EXPORT u8 PKR_GetLastError(char*);
|
2024-08-20 21:00:52 +00:00
|
|
|
EXPORT u8 PKR_LockFile(LIBPKR_HANDLE*);
|
2024-08-20 21:47:29 +00:00
|
|
|
EXPORT u8 PKR_Close(LIBPKR_HANDLE*);
|
2024-08-21 08:35:18 +00:00
|
|
|
EXPORT u8 PKR_GetFileInfo(LIBPKR_HANDLE*, const char*, const char*, PKR_FILEINFO*);
|
|
|
|
|
2024-08-18 17:45:39 +00:00
|
|
|
|
2024-08-20 20:53:40 +00:00
|
|
|
EXPORT u8 dirAddToPKR(LIBPKR_HANDLE*, PKR_DIRINFO);
|
|
|
|
EXPORT u8 fileAddToPKR(LIBPKR_HANDLE*, PKR_FILEINFO, PKR_DIRINFO*, char*);
|
2024-08-20 21:57:54 +00:00
|
|
|
EXPORT void fileRemoveFromPKR(LIBPKR_HANDLE*, NODE_FILEINFO*);
|
|
|
|
EXPORT void dirRemoveFromPKR(LIBPKR_HANDLE*, NODE_DIRINFO*);
|
|
|
|
EXPORT void flushPKR(LIBPKR_HANDLE*);
|
2024-08-18 18:49:08 +00:00
|
|
|
|
2024-08-20 20:53:40 +00:00
|
|
|
EXPORT extern LIBPKR_HANDLE* gDataPkr;
|
2024-08-18 13:30:06 +00:00
|
|
|
|
2024-08-18 16:30:56 +00:00
|
|
|
void validate_PKR_FILEINFO(void);
|
2024-08-18 16:48:50 +00:00
|
|
|
void validate_PKR_FOOTER(void);
|
2024-08-18 16:50:48 +00:00
|
|
|
void validate_PKR_DIRINFO(void);
|
2024-08-18 17:29:20 +00:00
|
|
|
void validate_LIBPKR_HANDLE(void);
|
2024-08-18 18:49:08 +00:00
|
|
|
void validate_NODE_DIRINFO(void);
|
2024-08-20 20:53:40 +00:00
|
|
|
void validate_PKR_HEADER(void);
|
2024-08-20 21:57:54 +00:00
|
|
|
void validate_NODE_FILEINFO(void);
|
2024-08-18 13:05:29 +00:00
|
|
|
|
|
|
|
#endif
|