spidey-decomp/pkr.h

97 lines
1.8 KiB
C
Raw Normal View History

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