From 07336347d040944e9c0b92ab11d8badbd7c5c567 Mon Sep 17 00:00:00 2001 From: krystalgamer Date: Fri, 13 Sep 2024 18:35:20 +0200 Subject: [PATCH] Pack_Unpack --- main.cpp | 2 ++ pack.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++++- pack.h | 16 +++++++++++++++- 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index f0e5890..48e505f 100644 --- a/main.cpp +++ b/main.cpp @@ -77,6 +77,7 @@ #include "SpideyDX.h" #include "DXsound.h" #include "DXinit.h" +#include "pack.h" extern int FAIL_VALIDATION; @@ -391,6 +392,7 @@ i32 validate(void) validate_SDataGlyph(); validate_POLY_FT4(); validate_POLY_GT4(); + validate_SPack(); puts("[*] Validation done!"); diff --git a/pack.cpp b/pack.cpp index d7b6546..73df977 100644 --- a/pack.cpp +++ b/pack.cpp @@ -1 +1,46 @@ -#include "pack.h" \ No newline at end of file +#include "pack.h" +#include "mem.h" +#include "validate.h" + +EXPORT SPack Pack_pFull; + +// @SMALLTODO +void Pack_Init(void) +{ + printf("Pack_Init(void)"); +} + +// @SMALLTODO +void Pack_Pack(i32,i32,i32,i32 *,i32 *,i32,i32,u32) +{ + printf("Pack_Pack(i32,i32,i32,i32 *,i32 *,i32,i32,u32)"); +} + +// @Ok +// @Matching +void Pack_Unpack(SPack* a1) +{ + SPack* pPrev = &Pack_pFull; + for (SPack *pCur = pPrev->pNext; + pCur; + pCur = pCur->pNext) + { + if (a1 == pCur) + { + pPrev->pNext = pCur->pNext; + Mem_Delete(a1); + return; + } + + pPrev = pCur; + } + + print_if_false(0, "Couldn't find pack structure."); + Mem_Delete(a1); +} + +void validate_SPack(void) +{ + VALIDATE_SIZE(SPack, 0xC); + VALIDATE(SPack, pNext, 0x8); +} diff --git a/pack.h b/pack.h index 46a0d15..53c6198 100644 --- a/pack.h +++ b/pack.h @@ -3,4 +3,18 @@ #ifndef PACK_H #define PACK_H -#endif \ No newline at end of file +#include "export.h" + +struct SPack +{ + u8 padTop[8]; + SPack* pNext; +}; + +EXPORT void Pack_Init(void); +EXPORT void Pack_Pack(i32,i32,i32,i32 *,i32 *,i32,i32,u32); +EXPORT void Pack_Unpack(SPack *); + +void validate_SPack(void); + +#endif