From 88320aaebe7e2aa8884d67ded8623dd8842774c2 Mon Sep 17 00:00:00 2001 From: krystalgamer Date: Sun, 30 Jun 2024 13:31:17 +0100 Subject: [PATCH] CVenomElectrified --- main.cpp | 1 + venom.cpp | 16 ++++++++++ venom.h | 91 ++++++++++++++++++++++++++++++------------------------- 3 files changed, 67 insertions(+), 41 deletions(-) diff --git a/main.cpp b/main.cpp index bdbdaad..ad8e359 100644 --- a/main.cpp +++ b/main.cpp @@ -327,6 +327,7 @@ int main() validate_CNonRenderedBit(); validate_SPSXRegion(); validate_CSimbyShot(); + validate_CVenomElectrified(); puts("[*] Validation done!"); diff --git a/venom.cpp b/venom.cpp index fa83e3e..bd4055d 100644 --- a/venom.cpp +++ b/venom.cpp @@ -86,6 +86,15 @@ unsigned char CVenom::TugImpulse(CVector *a2, CVector *a3, CVector *a4) return 0; } +// @Ok +CVenomElectrified::CVenomElectrified(CSuper* pSuper) +{ + print_if_false(pSuper != 0, "NULL pSuper sent to CVenomWrap"); + print_if_false((pSuper->field_38 == 313), "Non venom sent to CVenomElectrified"); + + this->field_3C = Mem_MakeHandle(pSuper); +} + void validate_CVenom(void){ VALIDATE_SIZE(CVenom, 0x468); @@ -132,3 +141,10 @@ void validate_CVenomWrap(void) { VALIDATE_SIZE(CVenomWrap, 0x5C); } + +void validate_CVenomElectrified(void) +{ + VALIDATE_SIZE(CVenomElectrified, 0x48); + + VALIDATE(CVenomElectrified, field_3C, 0x3C); +} diff --git a/venom.h b/venom.h index bb3a442..1233969 100644 --- a/venom.h +++ b/venom.h @@ -11,62 +11,62 @@ class CVenom : public CBaddy { public: - EXPORT CVenom(int*, int); + EXPORT CVenom(i32*, i32); EXPORT void Lookaround(void); EXPORT void Shouldnt_DoPhysics_Be_Virtual(void); EXPORT void DoPhysics(void); - EXPORT int* KillCommandBlock(int*); + EXPORT i32* KillCommandBlock(i32*); EXPORT void KillAllCommandBlocks(void); - EXPORT unsigned char TugImpulse(CVector *, CVector *, CVector *); + EXPORT u8 TugImpulse(CVector *, CVector *, CVector *); - unsigned char venomStartPad[0x18]; - unsigned char field_33C; - unsigned char field_33D; - unsigned char venomPadAfter33D[0x24 - 12]; + u8 venomStartPad[0x18]; + u8 field_33C; + u8 field_33D; + u8 venomPadAfter33D[0x24 - 12]; - int field_358; - int* field_35C; - unsigned char venomPadAfter35C[0x37C-0x35C-4]; + i32 field_358; + i32* field_35C; + u8 venomPadAfter35C[0x37C-0x35C-4]; - int field_37C; - int field_380; - int field_384; - unsigned char venomPadAfter384[0x14]; + i32 field_37C; + i32 field_380; + i32 field_384; + u8 venomPadAfter384[0x14]; - int field_39C; - int field_3A0; - int field_3A4; - int field_3A8; + i32 field_39C; + i32 field_3A0; + i32 field_3A4; + i32 field_3A8; - unsigned char venomPadAFter3A8[0x3C]; + u8 venomPadAFter3A8[0x3C]; - int field_3E8; - int field_3EC; - int field_3F0; + i32 field_3E8; + i32 field_3EC; + i32 field_3F0; - unsigned char venomPadAfter3F0[0xC]; + u8 venomPadAfter3F0[0xC]; - int field_400; - int field_404; - int field_408; - int field_40C; - int field_410; - int field_414; - int field_418; - int field_41C; - int field_420; - unsigned char venomPadAfter420[0x30 - 0x24]; + i32 field_400; + i32 field_404; + i32 field_408; + i32 field_40C; + i32 field_410; + i32 field_414; + i32 field_418; + i32 field_41C; + i32 field_420; + u8 venomPadAfter420[0x30 - 0x24]; - int field_430; + i32 field_430; CQuadBit *field_434; - unsigned char venomPadAfter434[0x20-4]; + u8 venomPadAfter434[0x20-4]; - int field_454; - int field_458; - int field_45C; - int field_460; - int field_464; + i32 field_454; + i32 field_458; + i32 field_45C; + i32 field_460; + i32 field_464; // @TODO venom has two secret virtual fucnctions }; @@ -75,11 +75,20 @@ class CVenomWrap : public CNonRenderedBit { public: EXPORT void Die(void); - unsigned char fullPad[0x20]; + u8 fullPad[0x20]; +}; + +class CVenomElectrified : public CNonRenderedBit +{ + public: + EXPORT CVenomElectrified(CSuper*); + SHandle field_3C; + u8 padBottom[4]; }; void validate_CVenom(void); void validate_CVenomWrap(void); +void validate_CVenomElectrified(void); EXPORT void Venom_CreateVenom(const unsigned int *stack, unsigned int *result);