From 43df2ab5fafeb0f8bb394371addf46395d55b7bf Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Wed, 11 Feb 2026 23:24:15 -0500 Subject: [PATCH 1/8] zNPCTypeCommon progress --- src/SB/Core/x/xNPCBasic.h | 37 +- src/SB/Core/x/xSnd.h | 5 + src/SB/Game/zLasso.h | 2 +- src/SB/Game/zNPCSndTable.h | 3 +- src/SB/Game/zNPCSupport.cpp | 2 +- src/SB/Game/zNPCSupport.h | 3 +- src/SB/Game/zNPCTypeCommon.cpp | 1118 +++++++++++++++++++++----------- src/SB/Game/zNPCTypeCommon.h | 131 +++- src/SB/Game/zNPCTypeVillager.h | 6 +- 9 files changed, 902 insertions(+), 405 deletions(-) diff --git a/src/SB/Core/x/xNPCBasic.h b/src/SB/Core/x/xNPCBasic.h index d4218b1c4..24ff1d1be 100644 --- a/src/SB/Core/x/xNPCBasic.h +++ b/src/SB/Core/x/xNPCBasic.h @@ -25,6 +25,7 @@ enum en_npcdcat eNPCDCAT_Ten = 10, eNPCDCAT_Eleven = 11, eNPCDCAT_Thirteen = 13, + eNPCDCAT_Fourteen = 14, }; struct xNPCBasic : xEnt, xFactoryInst @@ -62,7 +63,10 @@ struct xNPCBasic : xEnt, xFactoryInst // Offset: 0x138 xShadowSimpleCache simpShadow_embedded; - xNPCBasic(S32); + xNPCBasic(S32 value) + { + myNPCType = value; + } S32 SelfType() const; void RestoreColFlags() @@ -76,16 +80,25 @@ struct xNPCBasic : xEnt, xFactoryInst } void DBG_PStatClear(); - void DBG_PStatCont(en_npcperf stat); - void DBG_PStatOn(en_npcperf stat); + void DBG_PStatOn(en_npcperf stat) + { + } + + void DBG_PStatCont(en_npcperf stat) + { + } S32 DBG_IsNormLog(en_npcdcat input, S32 input2); void DBG_HaltOnMe(U32, char*); // DO NOT CHANGE THE ORDER OF THESE, the order determines the // vtable layout which needs to remain fixed. virtual void Init(xEntAsset* asset); - virtual void PostInit(); - virtual void Setup(); + virtual void PostInit() + { + } + virtual void Setup() + { + } virtual void PostSetup() { @@ -95,10 +108,18 @@ struct xNPCBasic : xEnt, xFactoryInst virtual void Process(xScene* xscn, F32 dt); virtual void BUpdate(xVec3*); virtual void NewTime(xScene* xscn, F32 dt); - virtual void Move(xScene* xscn, F32 dt, xEntFrame* frm); + virtual void Move(xScene* xscn, F32 dt, xEntFrame* frm) + { + } virtual S32 SysEvent(xBase* from, xBase* to, U32 toEvent, const F32* toParam, - xBase* toParamWidget, S32* handled); - virtual void Render(); + xBase* toParamWidget, S32* handled) + { + return 1; + } + virtual void Render() + { + xEntRender(this); + } virtual void Save(xSerial*) const; virtual void Load(xSerial*); virtual void CollideReview(); diff --git a/src/SB/Core/x/xSnd.h b/src/SB/Core/x/xSnd.h index fc7c23524..38527867e 100644 --- a/src/SB/Core/x/xSnd.h +++ b/src/SB/Core/x/xSnd.h @@ -163,4 +163,9 @@ inline U32 xSndPlay3D(U32 id, F32 vol, F32 pitch, U32 priority, U32 flags, xEnt* return xSndPlay3D(id, vol, pitch, priority, flags, ent, radius / 4.0f, radius, category, delay); } +inline U32 xSndIsPlaying(U32 assetID, U32 parid) +{ + return iSndIsPlaying(assetID, parid); +} + #endif diff --git a/src/SB/Game/zLasso.h b/src/SB/Game/zLasso.h index f307d4311..0fdadd12c 100644 --- a/src/SB/Game/zLasso.h +++ b/src/SB/Game/zLasso.h @@ -52,7 +52,7 @@ struct zLassoGuideList // Size: 0xE0 void zLasso_scenePrepare(); void zLasso_InitTimer(zLasso* lasso, F32 interpTime); void zLasso_ResetTimer(zLasso* lasso, F32 interpTime); -void zLasso_AddGuide(xEnt* ent, xAnimState* lassoAnim, xModelInstance modelInst); +void zLasso_AddGuide(xEnt* ent, xAnimState* lassoAnim, xModelInstance* modelInst); void zLasso_SetGuide(xEnt* ent, xAnimState* lassoAnim); void zLasso_InterpToGuide(zLasso* lasso); diff --git a/src/SB/Game/zNPCSndTable.h b/src/SB/Game/zNPCSndTable.h index 0a0df0d36..8759d1b7c 100644 --- a/src/SB/Game/zNPCSndTable.h +++ b/src/SB/Game/zNPCSndTable.h @@ -15,6 +15,7 @@ struct NPCSndQueue //0x14 }; void NPCS_Startup(); +void NPCS_Shutdown(); void NPCS_SndTimersUpdate(F32 dt); void NPCS_SndTimersReset(); void NPCS_SndTypePlayed(en_NPC_SOUND sndtype, F32 delayNext); @@ -22,6 +23,6 @@ S32 NPCS_SndOkToPlay(en_NPC_SOUND sndtype); void NPCS_SndTablePrepare(NPCSndTrax* trax); NPCSndProp* NPCS_SndFindProps(en_NPC_SOUND sndtype); en_NPC_SOUND NPCS_SndTypeFromHash(U32 aid_snd, NPCSndTrax* cust, NPCSndTrax* share); -void NPCS_Shutdown(); +U32 NPCS_SndPickSimilar(en_NPC_SOUND sndtype, NPCSndTrax* cust, NPCSndTrax* share); #endif diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 4bb6120f7..39cbc5794 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -843,7 +843,7 @@ S32 NPCC_LampStatus() return g_pc_playerInvisible == 0 ? true : false; } -bool NPCC_ForceTalkOk() +U32 NPCC_ForceTalkOk() { return globals.player.g.DisableForceConversation == 0 ? 1 : 0; } diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index 9878f9681..0a860971e 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -124,13 +124,14 @@ struct Firework void Detonate(); }; -bool NPCC_ForceTalkOk(); +U32 NPCC_ForceTalkOk(); void NPCWidget_Startup(); void NPCWidget_Shutdown(); void NPCWidget_ScenePrepare(); void NPCWidget_SceneFinish(); void NPCWidget_SceneReset(); void NPCWidget_ScenePostInit(); +NPCWidget* NPCWidget_Find(en_NPC_UI_WIDGETS which); void NPCSupport_Startup(); void NPCSupport_ScenePrepare(); void NPCSupport_SceneFinish(); diff --git a/src/SB/Game/zNPCTypeCommon.cpp b/src/SB/Game/zNPCTypeCommon.cpp index bb7d69733..4b0eab249 100644 --- a/src/SB/Game/zNPCTypeCommon.cpp +++ b/src/SB/Game/zNPCTypeCommon.cpp @@ -1,46 +1,47 @@ #include "zNPCTypeCommon.h" +#include #include #include +#include "xDebug.h" +#include "xDraw.h" +#include "zGameExtras.h" +#include "xMathInlines.h" +#include "xString.h" + +#include "zAssetTypes.h" #include "zCombo.h" #include "zEntButton.h" -#include "zEntCruiseBubble.h" #include "zEntTeleportBox.h" -#include "zGlobals.h" #include "zGrid.h" -#include "zNPCGoals.h" -#include "zNPCTypes.h" -#include "zNPCSndTable.h" -#include "zNPCSndLists.h" -#include "zNPCSupport.h" #include "zNPCFXCinematic.h" -#include "iCollide.h" -#include "iModel.h" -#include "iSnd.h" - -#include "xDebug.h" -#include "xDraw.h" -#include "xString.h" - -// Finish porting code from bfbbpc repo - #define Unknown 0 #define LassoGuide_Grab01 1 #define LassoGuide_Hold01 2 -extern char zNPCTypeCommon_strings[]; -static char* g_strz_lassanim[3] = { "Unknown", "LassoGuide_Grab01", "LassoGuide_Hold01" }; -extern S32 g_hash_lassanim[3]; -extern volatile S32 g_skipDescent; -extern NPCConfig* g_ncfghead; +U32 g_hash_lassanim[3] = {}; +char* g_strz_lassanim[3] = { "Unknown", "LassoGuide_Grab01", "LassoGuide_Hold01" }; +static NPCConfig* g_ncfghead; +static volatile S32 g_skipDescent; static zNPCSettings* g_dflt_npcsettings; -extern F32 lbl_803CE4C0; -extern S32 g_flg_wonder; -extern S32 g_isConversation; -extern xBase* g_ownerConversation; -extern F32 g_tmr_talkless; + +static F32 g_tmr_talkless = 10.0f; + +void __deadstripped_zNPCTypeCommon_lass_strings(char* str) +{ + printf("LASS_EVNT_BEGIN"); + printf("LASS_EVNT_ENDED"); + printf("LASS_EVNT_GRABSTART"); + printf("LASS_EVNT_GRABEND"); + printf("LASS_EVNT_YANK"); + printf("LASS_EVNT_ABORT"); + printf("LASS_STAT_DONE"); + printf("LASS_STAT_PENDING"); + printf("LASS_STAT_GRABBING"); + printf("LASS_STAT_TOSSING"); +} static char* g_strz_params[NPC_PARM_NOMORE] = { "Empty", @@ -176,7 +177,7 @@ void zNPCCommon_SceneFinish() { zNPCCommon::ConfigSceneDone(); NPCSupport_SceneFinish(); - xDebugRemoveTweak("NPC"); //(zNPCTypeCommon_strings + 0x42b); + xDebugRemoveTweak("NPC"); } void zNPCCommon_SceneReset() @@ -428,8 +429,14 @@ void zNPCCommon::Setup() } } +void __deadstripped_zNPCTypeCommon_str() +{ + printf("unknown"); +} + void zNPCCommon::Reset() { + // non-matching: lis r4, globals@ha scheduled too early, needs to be r3 xSceneID2Name(globals.sceneCur, this->id); xNPCBasic::Reset(); @@ -442,7 +449,7 @@ void zNPCCommon::Reset() this->npcset = *this->npcsetass; - if (this->entass->flags & XENT_COLLTYPE_DYN) + if (this->entass->flags & XENT_COLLTYPE_TRIG) { xEntShow(this); } @@ -753,28 +760,25 @@ S32 zNPCCommon::NPCMessage(NPCMsg* mail) void zNPCCommon::Move(xScene* xscn, F32 dt, xEntFrame* frm) { - bool retval = false; - if ((npcset.useNavSplines) && ((flg_move) & 8)) - if (this->drv_data && (this->drv_data->driver || this->drv_data->odriver)) - { - retval = true; - S32 backit = 0; - xVec3 var_28; + if (this->drv_data && (this->drv_data->driver || this->drv_data->odriver)) + { + S32 backit = 0; + xVec3 temp_dpos; - if (this->frame->mode & 0x2) - { - backit = 1; - var_28 = this->frame->dpos; - } + if (this->frame->mode & 0x2) + { + backit = 1; + temp_dpos = this->frame->dpos; + } - xEntDriveUpdate(this->drv_data, xscn, dt, NULL); + xEntDriveUpdate(this->drv_data, xscn, dt, NULL); - if (backit) - { - this->frame->mode |= 0x2; - this->frame->dpos = var_28; - } + if (backit) + { + this->frame->mode |= 0x2; + this->frame->dpos = temp_dpos; } + } xNPCBasic::Move(xscn, dt, frm); } @@ -1335,6 +1339,11 @@ void zNPCCommon::ConvertHitEvent(xBase* from, xBase* to, U32 toEvent, const F32* this->Damage(what, from, vec_hit); } +F32 __deadstripped_zNPCTypeCommon_float() +{ + return 3.0f; +} + void zNPCCommon::VelStop() { this->spd_throttle = 0.0f; @@ -1453,7 +1462,8 @@ F32 zNPCCommon::TurnToFace(F32 dt, const xVec3* dir_want, F32 useTurnRate) F32 f1_ = xDangleClamp(f30 - f28); F32 f2_ = CLAMP(f1_, -f29, f29); - F32 f2 = CLAMP(f28 + f2_, f31 - f29, f31 + f29); + F32 f3 = f28 + f2_; + F32 f2 = CLAMP(f3, f31 - f29, f31 + f29); F32 f1 = f2 - f28; this->frame->drot.angle = f1; @@ -1725,7 +1735,7 @@ void zNPCCommon::CollideReview() } } -bool zNPCCommon::IsMountableType(en_ZBASETYPE type) +S32 zNPCCommon::IsMountableType(en_ZBASETYPE type) { switch (type) { @@ -1958,12 +1968,15 @@ void zNPCCommon::PlayerKiltMe() void zNPCCommon::ISeePlayer() { + // non-matching: stubborn switch statement, may not be correct. en_xEventTags ven = eEventUnknown; if (!SomethingWonderful() && g_tmr_talkless < 0.0f) { g_tmr_talkless = 3.0f + (xurand() - 0.5f) * 0.25f * 3.0f; + // case NPC_TYPE_FISH jumps to the `if (ven != eEventUnknown)` at the end + // instead of `>= NPC_TYPE_FISH` jumping to the NPC_TYPE_BARNACLEBOY case switch (this->SelfType()) { //case NPC_TYPE_UNKNOWN: @@ -2160,119 +2173,135 @@ void zNPCCommon::GetParm(en_npcparm pid, zMovePoint** val) void zNPCCommon::GetParm(en_npcparm pid, void* val) { - char** names = g_strz_params; - xModelAssetParam* pmdata = this->parmdata; - U32 pmsize = this->pdatsize; + // non-matching: regalloc, scheduling + F32 fv; + S32 iv; + xVec3 vec_tmp; + zMovePoint* mvpt; + char** names; + U32 pmsize; + xModelAssetParam* pmdata; + + pmdata = this->parmdata; + pmsize = this->pdatsize; + names = g_strz_params; this->GetParmDefault(pid, val); - switch (pid) { - case NPC_PARM_BND_ISBOX: - case NPC_PARM_HITPOINTS: - case NPC_PARM_ESTEEM_A: - case NPC_PARM_ESTEEM_B: - case NPC_PARM_ESTEEM_C: - case NPC_PARM_ESTEEM_D: - case NPC_PARM_ESTEEM_E: - case NPC_PARAM_TEST_COUNT: - if (pmdata && pmsize) - { - *(S32*)val = zParamGetInt(pmdata, pmsize, names[pid], *(S32*)val); - } - break; - case NPC_PARM_MOVERATE: - case NPC_PARM_TURNRATE: - case NPC_PARM_ACCEL: - case NPC_PARM_DRIFT: - case NPC_PARM_MASS: - case NPC_PARM_TOSSGRAV: - case NPC_PARM_TOSSELASTIC: - case NPC_PARM_DETECT_RAD: - case NPC_PARM_DETECT_HYT: - case NPC_PARM_DETECT_OFF: - case NPC_PARM_ATTACK_RAD: - case NPC_PARM_ATTACK_FOV: - case NPC_PARM_SND_RAD: - case NPC_PARM_TIMEFIDGET: - case NPC_PARM_TIMEATTACK: - case NPC_PARM_TIMESTUN: - case NPC_PARM_TIMEALERT: - case NPC_PARM_ATK_SIZE01: - case NPC_PARM_SHADOW_CASTDIST: - case NPC_PARM_SHADOW_RADCACHE: - case NPC_PARM_SHADOW_RADRASTER: - if (pmdata && pmsize) - { - *(F32*)val = zParamGetFloat(pmdata, pmsize, names[pid], *(F32*)val); - } - break; - case NPC_PARM_BND_CENTER: - case NPC_PARM_BND_EXTENT: - case NPC_PARM_MODELSCALE: - case NPC_PARM_ATK_FRAMES01: - case NPC_PARM_ATK_FRAMES01A: - case NPC_PARM_ATK_FRAMES01B: - case NPC_PARM_ATK_FRAMES02: - case NPC_PARM_ATK_FRAMES02A: - case NPC_PARM_ATK_FRAMES02B: - case NPC_PARM_ATK_FRAMES03: - case NPC_PARM_ATK_FRAMES03A: - case NPC_PARM_ATK_FRAMES03B: - if (pmdata && pmsize) - { - zParamGetVector(pmdata, pmsize, names[pid], *(xVec3*)val, (xVec3*)val); - } - break; - case NPC_PARM_VTX_ATTACKBASE: - case NPC_PARM_VTX_ATTACK: - case NPC_PARM_VTX_ATTACK1: - case NPC_PARM_VTX_ATTACK2: - case NPC_PARM_VTX_ATTACK3: - case NPC_PARM_VTX_ATTACK4: - case NPC_PARM_VTX_EYEBALL: - case NPC_PARM_VTX_DMGSMOKEA: - case NPC_PARM_VTX_DMGSMOKEB: - case NPC_PARM_VTX_DMGSMOKEC: - case NPC_PARM_VTX_DMGFLAMEA: - case NPC_PARM_VTX_DMGFLAMEB: - case NPC_PARM_VTX_DMGFLAMEC: - case NPC_PARM_VTX_PROPEL: - case NPC_PARM_VTX_EXHAUST: - case NPC_PARM_VTX_GEN01: - case NPC_PARM_VTX_GEN02: - case NPC_PARM_VTX_GEN03: - case NPC_PARM_VTX_GEN04: - case NPC_PARM_VTX_GEN05: - zParamGetFloatList(pmdata, pmsize, names[pid], 4, NULL, (F32*)val); - break; - case NPC_PARM_FIRSTMVPT: - if (this->npcass->movepoint) + switch (pid) { - zMovePoint* mvpt = zMovePoint_From_xAssetID(this->npcass->movepoint); - if (mvpt) + case NPC_PARM_BND_ISBOX: + case NPC_PARM_HITPOINTS: + case NPC_PARM_ESTEEM_A: + case NPC_PARM_ESTEEM_B: + case NPC_PARM_ESTEEM_C: + case NPC_PARM_ESTEEM_D: + case NPC_PARM_ESTEEM_E: + case NPC_PARAM_TEST_COUNT: + if (pmdata) { - *(zMovePoint**)val = mvpt; + if (pmsize) + { + iv = zParamGetInt(pmdata, pmsize, names[pid], *(S32*)val); + *(S32*)val = iv; + } } + break; + case NPC_PARM_MOVERATE: + case NPC_PARM_TURNRATE: + case NPC_PARM_ACCEL: + case NPC_PARM_DRIFT: + case NPC_PARM_MASS: + case NPC_PARM_TOSSGRAV: + case NPC_PARM_TOSSELASTIC: + case NPC_PARM_DETECT_RAD: + case NPC_PARM_DETECT_HYT: + case NPC_PARM_DETECT_OFF: + case NPC_PARM_ATTACK_RAD: + case NPC_PARM_ATTACK_FOV: + case NPC_PARM_SND_RAD: + case NPC_PARM_TIMEFIDGET: + case NPC_PARM_TIMEATTACK: + case NPC_PARM_TIMESTUN: + case NPC_PARM_TIMEALERT: + case NPC_PARM_ATK_SIZE01: + case NPC_PARM_SHADOW_CASTDIST: + case NPC_PARM_SHADOW_RADCACHE: + case NPC_PARM_SHADOW_RADRASTER: + if (pmdata && pmsize) + { + fv = zParamGetFloat(pmdata, pmsize, names[pid], *(F32*)val); + *(F32*)val = fv; + } + break; + case NPC_PARM_BND_CENTER: + case NPC_PARM_BND_EXTENT: + case NPC_PARM_MODELSCALE: + case NPC_PARM_ATK_FRAMES01: + case NPC_PARM_ATK_FRAMES01A: + case NPC_PARM_ATK_FRAMES01B: + case NPC_PARM_ATK_FRAMES02: + case NPC_PARM_ATK_FRAMES02A: + case NPC_PARM_ATK_FRAMES02B: + case NPC_PARM_ATK_FRAMES03: + case NPC_PARM_ATK_FRAMES03A: + case NPC_PARM_ATK_FRAMES03B: + if (pmdata && pmsize) + { + zParamGetVector(pmdata, pmsize, names[pid], *(xVec3*)val, (xVec3*)val); + } + break; + case NPC_PARM_VTX_ATTACKBASE: + case NPC_PARM_VTX_ATTACK: + case NPC_PARM_VTX_ATTACK1: + case NPC_PARM_VTX_ATTACK2: + case NPC_PARM_VTX_ATTACK3: + case NPC_PARM_VTX_ATTACK4: + case NPC_PARM_VTX_EYEBALL: + case NPC_PARM_VTX_DMGSMOKEA: + case NPC_PARM_VTX_DMGSMOKEB: + case NPC_PARM_VTX_DMGSMOKEC: + case NPC_PARM_VTX_DMGFLAMEA: + case NPC_PARM_VTX_DMGFLAMEB: + case NPC_PARM_VTX_DMGFLAMEC: + case NPC_PARM_VTX_PROPEL: + case NPC_PARM_VTX_EXHAUST: + case NPC_PARM_VTX_GEN01: + case NPC_PARM_VTX_GEN02: + case NPC_PARM_VTX_GEN03: + case NPC_PARM_VTX_GEN04: + case NPC_PARM_VTX_GEN05: + zParamGetFloatList(pmdata, pmsize, names[pid], 4, NULL, (F32*)val); + break; + case NPC_PARM_FIRSTMVPT: + if (this->npcass->movepoint) + { + zMovePoint* mvpt = zMovePoint_From_xAssetID(this->npcass->movepoint); + if (mvpt) + { + *(zMovePoint**)val = mvpt; + } + } + break; + case NPC_PARM_BOGUSSHARE: + if (pmdata && pmsize) + { + S32 iv = zParamGetInt(pmdata, pmsize, names[pid], *(S32*)val); + *(S32*)val = iv; + } + break; + case NPC_PARM_NONE: + case NPC_PARM_ENDTAG_INI: + case NPC_PARM_ENDTAG_PROPS: + case NPC_PARM_ENDTAG_SHARE: + break; } - break; - case NPC_PARM_BOGUSSHARE: - if (pmdata && pmsize) - { - *(S32*)val = zParamGetInt(pmdata, pmsize, names[pid], *(S32*)val); - } - break; - case NPC_PARM_NONE: - case NPC_PARM_ENDTAG_INI: - case NPC_PARM_ENDTAG_PROPS: - case NPC_PARM_ENDTAG_SHARE: - break; } } -void zNPCCommon::GetParmDefault(en_npcparm pid, void* val) +S32 zNPCCommon::GetParmDefault(en_npcparm pid, void* val) { - // Should be a S32? S32 result = 1; S32* ivp = (S32*)val; F32* fvp = (F32*)val; @@ -2420,17 +2449,10 @@ void zNPCCommon::GetParmDefault(en_npcparm pid, void* val) result = 0; break; } - - //return result; -} - -void zNPCCommon_WonderReset() -{ - g_isConversation = 0; - g_flg_wonder = 0; + return result; } -U32 zNPCCommon::CanDoSplines() +S32 zNPCCommon::CanDoSplines() { bool retval = false; if ((npcset.useNavSplines) && ((flg_move) & 8)) @@ -2517,7 +2539,7 @@ S32 zNPCCommon::MvptCycle() zMovePointGetNext(this->nav_dest, this->nav_curr, &this->nav_lead, NULL); } - return (this->nav_dest != NULL); + return this->nav_dest != NULL ? TRUE : FALSE; } S32 zNPCCommon::HaveLOSToPos(xVec3* pos, F32 dist, xScene* xscn, xBase* tgt, xCollis* colCallers) @@ -2540,8 +2562,8 @@ S32 zNPCCommon::HaveLOSToPos(xVec3* pos, F32 dist, xScene* xscn, xBase* tgt, xCo colrec = &localCollis; } - this->DBG_PStatCont((en_npcperf)1); - this->DBG_PStatOn((en_npcperf)2); + this->DBG_PStatCont(eNPCPerfEnable); + this->DBG_PStatOn(eNPCPerfDisable); if (!this->GetVertPos(NPC_MDLVERT_LOSEYEBALL, &mypos)) { @@ -2584,7 +2606,7 @@ S32 zNPCCommon::HaveLOSToPos(xVec3* pos, F32 dist, xScene* xscn, xBase* tgt, xCo result = 0; } - if (this->DBG_IsNormLog((en_npcdcat)13, 2)) + if (this->DBG_IsNormLog(eNPCDCAT_Thirteen, 2)) { if (result) { @@ -2598,8 +2620,8 @@ S32 zNPCCommon::HaveLOSToPos(xVec3* pos, F32 dist, xScene* xscn, xBase* tgt, xCo xDrawLine(&mypos, pos); } - this->DBG_PStatCont((en_npcperf)2); - this->DBG_PStatOn((en_npcperf)1); + this->DBG_PStatCont(eNPCPerfDisable); + this->DBG_PStatOn(eNPCPerfEnable); return result; } @@ -2678,14 +2700,13 @@ S32 zNPCCommon::AnimStart(U32 animID, S32 forceRestart) this->AnimGetTable(); } - xAnimState* r3_ = this->AnimCurState(); - if (r3_ && r3_->ID == animID && !forceRestart) + xAnimState* state = this->AnimCurState(); + if (state && state->ID == animID && !forceRestart) { - return r3_->ID; + return state->ID; } - xAnimTable* r3 = this->AnimGetTable(); - xAnimTransition* da_tran = r3->TransitionList; + xAnimTransition* da_tran = this->AnimGetTable()->TransitionList; while (da_tran) { @@ -2747,6 +2768,65 @@ xAnimState* zNPCCommon::AnimCurState() return this->model->Anim->Single->State; } +U32 zNPCCommon::AnimCurStateID() +{ + xAnimState* state = AnimCurState(); + if (state != NULL) + { + return state->ID; + } + else + { + return 0; + } +} + +F32 zNPCCommon::AnimDuration(xAnimState* ast) +{ + if (ast == 0) + { + ast = AnimCurState(); + } + return (ast == 0) ? 0.0f : ast->Data->Duration; +} + +F32 zNPCCommon::AnimTimeRemain(xAnimState* ast) +{ + return (AnimDuration(ast) - AnimTimeCurrent()); +} + +F32 zNPCCommon::AnimTimeCurrent() +{ + return model->Anim->Single->Time; +} + +void zNPCSettings_MakeDummy() +{ + static zNPCSettings dum; + dum.id = 0xFEEDCAFE; + dum.baseType = eBaseTypeNPCSettings; + dum.linkCount = 0; + dum.baseFlags = ((U16)(1 << 0)); + dum.type = 0xBAD0CACA; + dum.version = 2; + dum.handle = 0; + dum.basisType = NPCP_BASIS_NONE; + dum.allowDetect = 1; + dum.allowWander = 1; + dum.allowPatrol = 1; + dum.reduceCollide = 0; + dum.useNavSplines = 1; + dum.allowChase = 1; + dum.allowAttack = 1; + dum.assumeLOS = 0; + dum.assumeFOV = 0; + dum.duploWaveMode = NPCP_DUPOWAVE_CONTINUOUS; + dum.duploSpawnLifeMax = -1; + dum.duploSpawnDelay = 5.0f; // non-matching: lfs scheduled too early + + g_dflt_npcsettings = &dum; +} + zNPCSettings* zNPCSettings_Find(U32 id) { zNPCSettings* set = NULL; @@ -2791,15 +2871,15 @@ void zNPCCommon::Vibrate(en_npcvibe vibe, F32 duration) switch (vibe) { case NPC_VIBE_BUILD_A: - tym_rum = 0.05f; + tym_rum = 0.050000004f; typ_rum = eRumble_Light; break; case NPC_VIBE_BUILD_B: - tym_rum = 0.05f; + tym_rum = 0.050000004f; typ_rum = eRumble_Medium; break; case NPC_VIBE_BUILD_C: - tym_rum = 0.05f; + tym_rum = 0.050000004f; typ_rum = eRumble_Heavy; break; case NPC_VIBE_SOFT: @@ -2825,80 +2905,32 @@ void zNPCCommon::Vibrate(en_npcvibe vibe, F32 duration) { tym_rum = duration; } - //return retval; + + zPadAddRumble(typ_rum, tym_rum, 0, 0); } -U32 zNPCCommon::AnimCurStateID() +xVec3* zNPCCommon::MatPosSet(xVec3* pos) { - xAnimState* state = AnimCurState(); - if (state != NULL) - { - return state->ID; - } - else + if (pos != NULL) { - return 0; + xVec3Copy((xVec3*)&model->Mat->pos, pos); } + return (xVec3*)&model->Mat->pos; } -F32 zNPCCommon::AnimDuration(xAnimState* ast) -{ - if (ast == 0) - { - ast = AnimCurState(); - } - return (ast == 0) ? 0.0f : ast->Data->Duration; -} - -F32 zNPCCommon::AnimTimeRemain(xAnimState* ast) -{ - return (AnimDuration(ast) - AnimTimeCurrent()); -} - -F32 zNPCCommon::AnimTimeCurrent() -{ - return model->Anim->Single->Time; -} - -void zNPCSettings_MakeDummy() -{ - static zNPCSettings dum; - dum.id = 0xFEEDCAFE; - dum.baseType = eBaseTypeNPCSettings; - dum.linkCount = 0; - dum.baseFlags = ((U16)(1 << 0)); - dum.type = 0xBAD0CACA; - dum.version = 2; - dum.handle = 0; - dum.basisType = NPCP_BASIS_NONE; - dum.allowDetect = 1; - dum.allowWander = 1; - dum.allowPatrol = 1; - dum.reduceCollide = 0; - dum.useNavSplines = 1; - dum.allowChase = 1; - dum.allowAttack = 1; - dum.assumeLOS = 0; - dum.assumeFOV = 0; - dum.duploWaveMode = NPCP_DUPOWAVE_CONTINUOUS; - dum.duploSpawnLifeMax = -1; - dum.duploSpawnDelay = 5.0f; +static S32 g_flg_wonder; +static S32 g_isConversation; +static xBase* g_ownerConversation; - g_dflt_npcsettings = &dum; -} - -xVec3* zNPCCommon::MatPosSet(xVec3* pos) +S32 NPCC_NPCIsConversing() { - if (pos != NULL) - { - xVec3Copy((xVec3*)&model->Mat->pos, pos); - } - return (xVec3*)&model->Mat->pos; + return g_isConversation; } -S32 NPCC_NPCIsConversing() +void zNPCCommon_WonderReset() { - return g_isConversation; + g_isConversation = 0; + g_flg_wonder = 0; } void zNPCCommon::WonderOfTalking(S32 inprogress, xBase* owner) @@ -2965,23 +2997,259 @@ S32 zNPCCommon::SomethingWonderful() return flg_wonder; } -S32 zNPCCommon::SndIsAnyPlaying() +S32 zNPCCommon::SndPlayFromAFX(zAnimFxSound* afxsnd, U32* sid_played) { - S32 iVar1 = 0; + en_NPC_SOUND sndtype; + F32 radius; + U32 aidToPlay; + U32 xsid; + NPCSndProp* sprop; - for (S32 i = 0; i < 4; i++) + sndtype = + NPCS_SndTypeFromHash(afxsnd->ID, this->cfg_npc->snd_trax, this->cfg_npc->snd_traxShare); + xsid = NPCS_SndOkToPlay(sndtype); // Already returns S32 + if ((S32)xsid == 0) // U32 in dwarf but needs to be compared as S32 { - iVar1 = xSndIsPlaying(0, (U32)this + i); - if (iVar1) + xsid = -1; + } + else + { + sprop = NPCS_SndFindProps(sndtype); + + radius = this->cfg_npc->rad_sound; + if (sndtype == NPC_STYP_BOGUS) { + aidToPlay = afxsnd->ID; + } + else + { + aidToPlay = + NPCS_SndPickSimilar(sndtype, this->cfg_npc->snd_trax, this->cfg_npc->snd_traxShare); + } + aidToPlay = this->SndStart(aidToPlay, sprop, radius); + if (sid_played != 0x0) + { + *sid_played = aidToPlay; + } + xsid = 1; + } + return xsid; +} + +S32 zNPCCommon::SndPlayFromSFX(xSFX* sfx, U32* sid_played) +{ + U32 aidToPlay; + NPCSndProp* sprop; + + this->SndKillSounds(2, 0); + sprop = NPCS_SndFindProps(NPC_STYP_XSFXTALK); + + U32 xsid = sfx->asset->soundAssetID; + + aidToPlay = this->SndStart(xsid, sprop, MIN(sfx->asset->outerRadius, this->cfg_npc->rad_sound)); + + if (sid_played != NULL) + { + *sid_played = aidToPlay; + } + + if (aidToPlay != 0) + { + return TRUE; + } + return FALSE; +} + +S32 zNPCCommon::SndPlayRandom(en_NPC_SOUND sndtype) +{ + U32 xsid; + NPCConfig* cfg; + NPCSndProp* sprop; + U32 aidToPlay; + + xsid = 0; + cfg = this->cfg_npc; + + if (NPCS_SndOkToPlay(sndtype)) + { + sprop = NPCS_SndFindProps(sndtype); + aidToPlay = NPCS_SndPickSimilar(sndtype, cfg->snd_trax, cfg->snd_traxShare); + if (aidToPlay != 0) + { + xsid = this->SndStart(aidToPlay, sprop, cfg->rad_sound); + } + } + return (-xsid | xsid) >> 0x1f; +} + +U32 zNPCCommon::SndStart(U32 aid_toplay, NPCSndProp* sprop, F32 radius) +{ + F32 pvary = 0.0f; + U32 priority; + U32 owner; + U32 xsid = 0; + F32 vol; + U32 flg_snd; + U32 xsndflags; + static const F32 pitchChoices[7] = { -5.0f, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f }; + + if (sprop == NULL) + { + sprop = NPCS_SndFindProps(NPC_STYP_BOGUS); + } + + flg_snd = sprop->flg_snd & 0xFFFFFF; + + if (SQ(radius) < NPCC_ds2_toCam(this->Pos(), NULL)) + { + return 0; + } + + if ((flg_snd & 0x20000) && this->SndChanIsBusy(1)) + { + return 0; + } + + if ((flg_snd & 0x8000) && this->SndChanIsBusy(3)) + { + return 0; + } + + static S32 idx_seq = 0; + + if (flg_snd & 0x100) + { + vol = 1.0f; + priority = 0x82; + } + else if (flg_snd & 0x200) + { + vol = 0.85f; + priority = 0x7d; + } + else if (flg_snd & 0x400) + { + vol = 0.7f; + priority = 0x79; + } + else + { + vol = 0.85f; + priority = 0x7d; + } + + if (flg_snd & 0x800) + { + pvary = xUtil_choose(pitchChoices, 7, 0); + } + + xsndflags = 0x10000; + owner = (U32)this + (flg_snd & 0x3); + if (flg_snd & 0x1000) + { + xsndflags &= ~0x10000; + } + + if (aid_toplay != 0 && (flg_snd & 0x10000)) + { + xsid = xSndPlay(aid_toplay, vol, pvary, priority, xsndflags, owner, SND_CAT_GAME, 0.0f); + } + else if (aid_toplay != 0) + { + if (flg_snd & 0x2000) + { + xsid = xSndPlay3D(aid_toplay, vol * 0.77f, pvary, priority, xsndflags, this->Pos(), + 2.0f, radius, SND_CAT_GAME, 0.0f); + } + else + { + xsid = xSndPlay3D(aid_toplay, vol * 0.77f, pvary, priority, xsndflags, (xEnt*)owner, + 2.0f, radius, SND_CAT_GAME, 0.0f); + } + } + + NPCS_SndTypePlayed(sprop->sndtype, sprop->tym_delayNext); + + return xsid; +} + +S32 zNPCCommon::SndIsAnyPlaying() +{ + S32 owner = (S32)this; + S32 yep; + for (S32 i = 0; i < 4; i++) + { + yep = xSndIsPlaying(0, owner + i); + if (yep != 0) break; + } + return yep; +} + +S32 zNPCCommon::SndChanIsBusy(S32 flg_chan) +{ + return xSndIsPlaying(0, (U32)this + (flg_chan & 3)); +} + +void zNPCCommon::SndKillSounds(S32 flg_chan, S32 all) +{ + S32 owner = (S32)this; + if (all != 0) + { + for (S32 i = 0; i < 4; i++) + { + xSndStopChildren(owner + i); } } + else + { + xSndStopChildren(owner + (flg_chan & 3)); + } +} + +S32 zNPCCommon::SndQueUpdate(F32 dt) +{ + zNPCCommon* que; + S32 i; + S32 cnt; + NPCSndProp* sprop; - return iVar1; + cnt = 0; + que = this; + + for (i = 0; i < 4; i++) + { + if (que->snd_queue[0].sndtype != (en_NPC_SOUND)-2) + { + cnt++; + que->snd_queue[0].tmr_delay -= dt; + + if (!(que->snd_queue[0].tmr_delay > 0.0f)) + { + cnt--; + sprop = NPCS_SndFindProps(que->snd_queue[0].sndtype); + this->SndStart(que->snd_queue[0].sndDirect, sprop, que->snd_queue[0].radius); + + que->snd_queue[0].sndtype = NPC_STYP_BOGUS; + que->snd_queue[0].sndDirect = 0; + } + } + que = (zNPCCommon*)((U8*)que + 0x14); + } + + if (cnt > 0) + { + this->flg_misc |= 0x2; + } + else + { + this->flg_misc &= ~0x2; + } + + return cnt; } -U32 zNPCCommon::LassoInit() +S32 zNPCCommon::LassoInit() { lassdata = PRIV_GetLassoData(); if (lassdata != NULL) @@ -2997,6 +3265,143 @@ U32 zNPCCommon::LassoInit() return 0; } +S32 zNPCCommon::LassoSetup() +{ + zNPCLassoInfo* lass = this->lassdata; + + if (lass && lass->grabGuideModel && lass->grabGuideAnim && lass->holdGuideModel && + lass->holdGuideAnim) + { + zLasso_AddGuide(this, lass->grabGuideAnim, lass->grabGuideModel); + zLasso_AddGuide(this, lass->holdGuideAnim, lass->holdGuideModel); + + lass->holdGuideModel->Flags &= ~0x1; + lass->grabGuideModel->Flags &= ~0x1; + + lass->holdGuideModel->Flags |= 0x2; + lass->grabGuideModel->Flags |= 0x2; + + this->flg_vuln |= 0x01000000; + } + else + { + this->flg_vuln &= ~0x01000000; + } + + return this->flg_vuln & 0x01000000; +} + +S32 zNPCCommon::LassoUseGuides(S32 idx_grabmdl, S32 idx_holdmdl) +{ + xModelInstance* minst; + xModelInstance* mod_grab = NULL; + xModelInstance* mod_hold = NULL; + zNPCLassoInfo* lass = this->lassdata; + S32 midx = 0; + S32 haveAnims = 0; + + for (minst = this->model; minst != NULL; minst = minst->Next) + { + if (midx == idx_grabmdl) + { + mod_grab = minst; + } + if (midx == idx_holdmdl) + { + mod_hold = minst; + } + if (mod_grab != NULL && mod_hold != NULL) + break; + midx++; + } + lass->grabGuideModel = mod_grab; + lass->holdGuideModel = mod_hold; + if (mod_grab != NULL && mod_hold != NULL) + { + haveAnims = this->LassoGetAnims(mod_grab, mod_hold); + } + return haveAnims; +} + +S32 zNPCCommon::LassoGetAnims(xModelInstance* modgrab, xModelInstance* modhold) +{ + xAnimState* ast_grab; + xAnimState* ast_hold; + zNPCLassoInfo* lass; + + ast_grab = NULL; + lass = this->lassdata; + ast_hold = NULL; + if (modgrab->Anim != NULL && modhold->Anim == NULL) + { + modhold->Anim = modgrab->Anim; + } + if (modgrab->Anim == NULL && modhold->Anim != NULL) + { + modgrab->Anim = modhold->Anim; + } + if (modgrab->Anim == NULL || modhold->Anim == NULL) + { + for (xAnimPlay* play = this->model->Anim; play != NULL; play = play->Next) + { + if (play->Table != NULL && strcmp(play->Table->Name, "LassoGuides") == 0) + { + modgrab->Anim = play; + modhold->Anim = play; + break; + } + } + } + if (modhold->Anim != NULL && modhold->Anim != NULL) + { + xAnimTable* tab = modgrab->Anim->Table; + xAnimState* temp_ast = tab ? tab->StateList : NULL; + xAnimState* ast = temp_ast; + while (ast != NULL) + { + if (ast->ID == g_hash_lassanim[1]) + { + ast_grab = ast; + } + if (ast->ID == g_hash_lassanim[2]) + { + ast_hold = ast; + } + if (ast_grab != NULL && ast_hold != NULL) + break; + ast = ast->Next; + } + lass->grabGuideAnim = ast_grab; + lass->holdGuideAnim = ast_hold; + } + return ast_grab != NULL && ast_hold != NULL; +} + +void zNPCCommon::LassoSyncAnims(en_lassanim lassanim) +{ + xAnimState* lass_ast = NULL; + xModelInstance* lass_mdl = NULL; + + switch (lassanim) + { + case LASS_ANIM_GRAB: + lass_ast = this->lassdata->grabGuideAnim; + lass_mdl = this->lassdata->grabGuideModel; + break; + case LASS_ANIM_HOLD: + lass_ast = this->lassdata->holdGuideAnim; + lass_mdl = this->lassdata->holdGuideModel; + break; + } + + if (lass_ast != NULL && lass_mdl != NULL) + { + xAnimPlaySetState(lass_mdl->Anim->Single, lass_ast, this->AnimTimeCurrent()); + } + + this->DBG_IsNormLog(eNPCDCAT_Fourteen, -1); +} + zNPCLassoInfo* zNPCCommon::GimmeLassInfo() { return flg_vuln & 0x1000000 ? lassdata : NULL; @@ -3041,6 +3446,59 @@ void zNPCCommon::LassoNotify(en_LASSO_EVENT event) } } +void zNPCCommon::AddBaseline(xPsyche* psy, + S32 (*eval_idle)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_wander)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_patrol)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_waiting)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_fidget)(xGoal*, void*, en_trantype*, F32, void*)) +{ + xGoal* goal; + goal = psy->AddGoal(NPC_GOAL_IDLE, NULL); + goal->SetCallbacks(eval_idle, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_WANDER, NULL); + goal->SetCallbacks(eval_patrol, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_PATROL, NULL); + goal->SetCallbacks(eval_wander, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_WAITING, NULL); + goal->SetCallbacks(eval_waiting, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_FIDGET, NULL); + goal->SetCallbacks(eval_fidget, NULL, NULL, NULL); + psy->AddGoal(NPC_GOAL_LIMBO, NULL); + this->AddDEVGoals(psy); +} + +void zNPCCommon::AddScripting(xPsyche* psy, + S32 (*eval_script)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_playanim)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_attack)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_move)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_follow)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_lead)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_wait)(xGoal*, void*, en_trantype*, F32, void*)) +{ + // non-matching: lwz scheduled too early + this->DBG_Name(); + if (this->flg_misc & 1) + { + xGoal* goal; + goal = psy->AddGoal(NPC_GOAL_SCRIPT, NULL); + goal->SetCallbacks(eval_script, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_SCRIPTANIM, NULL); + goal->SetCallbacks(eval_playanim, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_SCRIPTATTACK, NULL); + goal->SetCallbacks(eval_attack, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_SCRIPTMOVE, NULL); + goal->SetCallbacks(eval_move, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_SCRIPTFOLLOW, NULL); + goal->SetCallbacks(eval_follow, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_SCRIPTLEAD, NULL); + goal->SetCallbacks(eval_lead, NULL, NULL, NULL); + goal = psy->AddGoal(NPC_GOAL_SCRIPTWAIT, NULL); + goal->SetCallbacks(eval_wait, NULL, NULL, NULL); + } +} + void zNPCCommon::AddDEVGoals(xPsyche*) { } @@ -3071,135 +3529,67 @@ xAnimTable* ZNPC_AnimTable_LassoGuide() return table; } -U32 zNPCCommon::DBG_Name() -{ - return 0; -} - -void zNPCCommon::DBG_AddTweakers() -{ -} - -void zNPCCommon::SelfSetup() -{ -} - -void zNPCCommon::DBG_RptDataSize() -{ -} - -U32 zNPCCommon::DBG_InstName() -{ - return this->DBG_Name(); -} - -xEntDrive* zNPCCommon::PRIV_GetDriverData() -{ - return NULL; -} -void zNPCCommon::ModelScaleSet(const xVec3* vec) -{ - ModelScaleSet(vec->x, vec->y, vec->z); -} - -xAnimTable* zNPCCommon::AnimGetTable() -{ - return model->Anim->Table; -} - -zNPCLassoInfo* zNPCCommon::PRIV_GetLassoData() -{ - return NULL; -} - -void zNPCCommon::DuploOwner(zNPCCommon* duper) -{ - npc_duplodude = duper; -} - -void zNPCCommon::SpeakBegin() -{ -} - -void zNPCCommon::SpeakEnd() -{ -} - -void zNPCCommon::SpeakStart(U32 param_1, U32 param_2, S32 param_3) -{ -} - -void zNPCCommon::SpeakStop() -{ -} - -F32 zNPCCommon::GenShadCacheRad() -{ - return lbl_803CE4C0; -} - -// xNPCBasic vtable at: 0x2949F4 -// vtable reference is stored immidately _after_ object fields in an xNPCBasic -// instance. That is, sizeof(xNPCBasic) = sizeof(visible fields) + an extra 4 -// bytes for the vtable pointer after those fields. -// vtable[0] = NULL (I think these first two are for RTTI which is disabled) -// vtable[1] = NULL -// vtable[2] = Init(FP9xEntAsset) -// vtable[3] = PostInit(Fv) -// vtable[4] = Setup(Fv) -// vtable[5] = PostSetup(Fv) -// vtable[6] = Reset(Fv) -// vtable[7] = Process(FP6xScenef) -// vtable[8] = BUpdate(FP5xVec3) -// vtable[9] = NewTime(FP6xScenef) -// vtable[10] = Move(FP6xScenefP9xEntFrame) -// vtable[11] = SysEvent(FP5xBaseP5xBaseUiPCfP5xBasePi) -// vtable[12] = Render(Fv) -// vtable[13] = Save(CFP7xSerial) -// vtable[14] = Load(FP7xSerial) -// vtable[15] = CollideReview(Fv) -// vtable[16] = ColChkFlags(CFv) -// vtable[17] = ColPenFlags(CFv) -// vtable[18] = ColChkByFlags(CFv) -// vtable[19] = ColPenByFlags(CFv) -// vtable[20] = PhysicsFlags(CFv) -xNPCBasic::xNPCBasic(S32 value) +void NPCC_BuildStandardAnimTran(xAnimTable* table, char** namelist, S32* ourAnims, S32 idx_dflt, + F32 blend) { - myNPCType = value; -} + xAnimTransition* def = NULL; + char** names = namelist; -void xNPCBasic::Setup() -{ -} + S32 i = 0; -void xNPCBasic::Move(xScene* xscn, F32 dt, xEntFrame* frm) -{ -} - -S32 xNPCBasic::SysEvent(xBase* from, xBase* to, U32 toEvent, const F32* toParam, - xBase* toParamWidget, S32* handled) -{ - return 1; -} - -void xNPCBasic::DBG_PStatOn(en_npcperf stat) -{ -} - -void xNPCBasic::DBG_PStatCont(en_npcperf stat) -{ -} - -void xNPCBasic::PostInit() -{ + while (ourAnims[i] != 0) // *ourAnims matches better than ourAnims[i] for some reason? + { + if (idx_dflt == ourAnims[i]) + { + i++; + } + else if (def == NULL) + { + def = xAnimTableNewTransition(table, names[ourAnims[i]], names[idx_dflt], NULL, NULL, + 0x10, 0, 0.0f, 0.0f, 0, 0, blend, NULL); + } + else + { + xAnimTableAddTransition(table, def, names[ourAnims[i]]); + i++; + } + } + i = 0; + while (ourAnims[i] != 0) + { + if (idx_dflt == ourAnims[i]) + { + i++; + } + else + { + xAnimTableNewTransition(table, names[ourAnims[i]], names[idx_dflt], NULL, NULL, 0, 0, + 0.0f, 0.0f, 0, 0, blend, NULL); + xAnimTableNewTransition(table, names[idx_dflt], names[ourAnims[i]], NULL, NULL, 0, 0, + 0.0f, 0.0f, 0, 0, blend, NULL); + i++; + } + } } -void xNPCBasic::Render() +void zNPCCommon_EjectPhlemOnPawz() { - xEntRender(this); + NPCWidget* talk_font; + zGameIsPaused(); + if (globals.sceneCur->pendingPortal != NULL) + { + talk_font = NPCWidget_Find(NPC_WIDGE_TALK); + if (talk_font != NULL) + { + if (talk_font->IsVisible()) + { + talk_font->Off(NULL, 1); + } + } + } } -U32 xSndIsPlaying(U32 assetID, U32 parid) +F32 __deadstripped_zNPCTypeCommon_int2flt(S32 i) { - return iSndIsPlaying(assetID, parid); + return i; } diff --git a/src/SB/Game/zNPCTypeCommon.h b/src/SB/Game/zNPCTypeCommon.h index 7ec96fcb6..901f3c240 100644 --- a/src/SB/Game/zNPCTypeCommon.h +++ b/src/SB/Game/zNPCTypeCommon.h @@ -19,6 +19,15 @@ class zAnimFxSound; +enum en_lassanim +{ + LASS_ANIM_UNKNOWN = 0, + LASS_ANIM_GRAB = 1, + LASS_ANIM_HOLD = 2, + LASS_ANIM_NOMORE = 3, + LASS_ANIM_FORCEINT = 2147483647, +}; + enum en_npcparm { NPC_PARM_NONE, @@ -105,8 +114,6 @@ enum en_NPC_GOAL_SPOT NPC_GSPOT_FORCEINT = 0x7fffffff }; - - enum en_npcvibe { NPC_VIBE_SOFT, @@ -312,7 +319,9 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 zNPCLassoInfo* lassdata; //0x24C NPCSndQueue snd_queue[4]; //0x250 - zNPCCommon(S32 myType); + zNPCCommon(S32 myType) : xNPCBasic(myType) + { + } F32 TurnToFace(F32 dt, const xVec3* dir_want, F32 useTurnRate); F32 ThrottleApply(F32 dt, const xVec3* dir, S32 force3D); @@ -325,25 +334,21 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 xBase* toParamWidget, S32* handled); void VelStop(); static void ConfigSceneDone(); - U32 LassoInit(); + S32 LassoInit(); + S32 LassoGetAnims(xModelInstance* modgrab, xModelInstance* modhold); + void LassoSyncAnims(en_lassanim lassanim); zNPCLassoInfo* GimmeLassInfo(); void AddDEVGoals(xPsyche*); - U32 DBG_Name(); // return type might be wrong - void DBG_AddTweakers(); - void DBG_RptDataSize(); - U32 DBG_InstName(); // return type might be wrong - xAnimTable* AnimGetTable(); F32 AnimTimeRemain(xAnimState* ast); F32 AnimTimeCurrent(); F32 AnimDuration(xAnimState* ast); - bool IsMountableType(en_ZBASETYPE type); + S32 IsMountableType(en_ZBASETYPE type); void MvptReset(zMovePoint* nav_goto); S32 MvptCycle(); void TagVerts(); S32 HaveLOSToPos(xVec3*, float, xScene*, xBase*, xCollis*); void ModelScaleSet(F32 x, F32 y, F32 z); void ModelScaleSet(F32 unk); - void ModelScaleSet(const xVec3* vec); xModelInstance* ModelAtomicFind(int index, int idx_prev, xModelInstance* mdl_prev); xModelInstance* ModelAtomicHide(int index, xModelInstance* mdl); xModelInstance* ModelAtomicShow(int index, xModelInstance* mdl); @@ -361,14 +366,14 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 void GetParm(en_npcparm pid, xVec3* val); void GetParm(en_npcparm pid, zMovePoint** val); S32 HasSpline(); - U32 CanDoSplines(); + S32 CanDoSplines(); S32 IsAttackFrame(F32 tym_anim, S32 series); void GiveReward(); void PlayerKiltMe(); S32 SndPlayFromSFX(xSFX* sfx, U32* sid_played); S32 SndPlayFromAFX(zAnimFxSound* afx, U32* sid_played); S32 SndPlayRandom(en_NPC_SOUND sndtype); - //U32 SndStart(U32 aid_toplay, NPCSndProp* sprop, F32 radius); + U32 SndStart(U32 aid_toplay, NPCSndProp* sprop, F32 radius); S32 SndChanIsBusy(S32 flg_chan); void SndKillSounds(S32 flg_chan, S32 all); S32 SndQueUpdate(F32 dt); @@ -420,7 +425,59 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 S32 SomethingWonderful(); S32 SndIsAnyPlaying(); - // vTable (xNPCBasic) + U32 DBG_Name() // Seil: return type might be wrong + { + return 0; + } + + void DBG_AddTweakers() + { + } + + void DBG_RptDataSize() + { + } + + U32 DBG_InstName() // Seil: return type might be wrong + { + return this->DBG_Name(); + } + + void ModelScaleSet(const xVec3* vec) + { + ModelScaleSet(vec->x, vec->y, vec->z); + } + + xAnimTable* AnimGetTable() + { + return model->Anim->Table; + } + + // xNPCBasic vtable at: 0x2949F4 + // vtable reference is stored immidately _after_ object fields in an xNPCBasic + // instance. That is, sizeof(xNPCBasic) = sizeof(visible fields) + an extra 4 + // bytes for the vtable pointer after those fields. + // vtable[0] = NULL (I think these first two are for RTTI which is disabled) + // vtable[1] = NULL + // vtable[2] = Init(FP9xEntAsset) + // vtable[3] = PostInit(Fv) + // vtable[4] = Setup(Fv) + // vtable[5] = PostSetup(Fv) + // vtable[6] = Reset(Fv) + // vtable[7] = Process(FP6xScenef) + // vtable[8] = BUpdate(FP5xVec3) + // vtable[9] = NewTime(FP6xScenef) + // vtable[10] = Move(FP6xScenefP9xEntFrame) + // vtable[11] = SysEvent(FP5xBaseP5xBaseUiPCfP5xBasePi) + // vtable[12] = Render(Fv) + // vtable[13] = Save(CFP7xSerial) + // vtable[14] = Load(FP7xSerial) + // vtable[15] = CollideReview(Fv) + // vtable[16] = ColChkFlags(CFv) + // vtable[17] = ColPenFlags(CFv) + // vtable[18] = ColChkByFlags(CFv) + // vtable[19] = ColPenByFlags(CFv) + // vtable[20] = PhysicsFlags(CFv) virtual void Init(xEntAsset* asset); virtual void Reset(); @@ -448,7 +505,9 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 virtual void ParseINI(); virtual void ParseLinks(); virtual void ParseProps(); - virtual void SelfSetup(); + virtual void SelfSetup() + { + } virtual void SelfDestroy(); virtual S32 IsHealthy(); virtual S32 IsAlive() @@ -457,7 +516,10 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 } virtual void Damage(en_NPC_DAMAGE_TYPE damtype, xBase* who, const xVec3* vec_hit); virtual S32 Respawn(const xVec3* pos, zMovePoint* mvptFirst, zMovePoint* mvptSpawnRef); - virtual void DuploOwner(zNPCCommon* duper); + virtual void DuploOwner(zNPCCommon* duper) + { + npc_duplodude = duper; + } virtual void DuploNotice(en_SM_NOTICES, void*); virtual S32 CanRope(); virtual void LassoNotify(en_LASSO_EVENT event); @@ -465,10 +527,20 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 virtual void Stun(F32 stuntime) { } - virtual void SpeakBegin(); - virtual void SpeakEnd(); - virtual void SpeakStart(U32 sound, U32 param_2, S32 param_3); - virtual void SpeakStop(); + virtual void SpeakBegin() + { + } + + virtual void SpeakEnd() + { + } + + virtual void SpeakStart(U32 sound, U32 param_2, S32 param_3) + { + } + virtual void SpeakStop() + { + } virtual U32 AnimPick(S32 animID, en_NPC_GOAL_SPOT gspot, xGoal* goal) { @@ -476,10 +548,19 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 } virtual void GetParm(en_npcparm pid, void* val); - virtual void GetParmDefault(en_npcparm pid, void* val); - virtual F32 GenShadCacheRad(); - virtual xEntDrive* PRIV_GetDriverData(); - virtual zNPCLassoInfo* PRIV_GetLassoData(); + virtual S32 GetParmDefault(en_npcparm pid, void* val); + virtual F32 GenShadCacheRad() + { + return 2.4f; + } + virtual xEntDrive* PRIV_GetDriverData() + { + return NULL; + } + virtual zNPCLassoInfo* PRIV_GetLassoData() + { + return NULL; + } virtual S32 LassoSetup(); protected: @@ -487,8 +568,6 @@ struct zNPCCommon : xNPCBasic //Size of zNPCCommon: 0x2A0 ~zNPCCommon(); }; - - xFactoryInst* ZNPC_Create_Common(S32 who, RyzMemGrow* grow, void*); void ZNPC_Destroy_Common(xFactoryInst* inst); void zNPCCommon_ScenePrepare(); diff --git a/src/SB/Game/zNPCTypeVillager.h b/src/SB/Game/zNPCTypeVillager.h index 8943925e1..e9c864cfd 100644 --- a/src/SB/Game/zNPCTypeVillager.h +++ b/src/SB/Game/zNPCTypeVillager.h @@ -26,7 +26,7 @@ struct zNPCVillager : zNPCCommon ztaskbox* converse; //0x2a8 S32 current_talk_anim; - zNPCVillager(S32 myType) :zNPCCommon(myType) + zNPCVillager(S32 myType) : zNPCCommon(myType) { } @@ -300,7 +300,7 @@ struct zNPCNewsFish : zNPCVillager void SpeakStop(); // 0xAC zNPCNewsFish U32 AnimPick(S32, en_NPC_GOAL_SPOT, xGoal*); // 0xB0 zNPCVillager void GetParm(en_npcparm, void*); // 0xB4 zNPCCommon - void GetParmDefault(en_npcparm, void*); // 0xB8 zNPCCommon + S32 GetParmDefault(en_npcparm, void*); // 0xB8 zNPCCommon F32 GenShadCacheRad(); // 0xBC zNPCVillager xEntDrive* PRIV_GetDriverData(); // 0xC0 zNPCCommon zNPCLassoInfo* PRIV_GetLassoData(); // 0xC4 zNPCCommon @@ -342,7 +342,7 @@ void ZNPC_Villager_Shutdown(); xFactoryInst* ZNPC_Create_Villager(S32 who, RyzMemGrow* growCtxt, void*); void ZNPC_Destroy_Villager(xFactoryInst* inst); S32 zParamGetF32List(xModelAssetParam* parmdata, U32 pdatsize, const char* str32, S32 found, - F32* non_choices, F32 len_mvptspline); + F32* non_choices, F32 len_mvptspline); void zNPCVillager_SceneFinish(); void zNPCVillager_SceneTimestep(xScene* xscn, F32 dt); From b41b1ed891d44a5f98d91d913f706caf9d30315a Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Wed, 11 Feb 2026 23:35:40 -0500 Subject: [PATCH 2/8] Fix regression --- src/SB/Game/zNPCSupport.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 39cbc5794..a78316142 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -845,7 +845,7 @@ S32 NPCC_LampStatus() U32 NPCC_ForceTalkOk() { - return globals.player.g.DisableForceConversation == 0 ? 1 : 0; + return globals.player.g.DisableForceConversation == 0; } RwRaster* NPCC_FindRWRaster(const char* txtrname) From 66deaafb1688928d676c901808e5330fb99071b8 Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Thu, 21 May 2026 02:00:59 -0400 Subject: [PATCH 3/8] zNPCTypeVillager progress --- configure.py | 2 +- dwarf/SB/Game/zNPCTypeVillager.cpp | 2439 +++++++++++++++++----------- src/SB/Core/x/xFX.h | 2 + src/SB/Core/x/xutil.h | 33 + src/SB/Game/zEntCruiseBubble.cpp | 2 - src/SB/Game/zGameExtras.cpp | 48 +- src/SB/Game/zGameExtras.h | 2 - src/SB/Game/zNPCGoalCommon.h | 2 +- src/SB/Game/zNPCGoalRobo.cpp | 4 +- src/SB/Game/zNPCGoalStd.h | 15 +- src/SB/Game/zNPCGoalVillager.h | 2 +- src/SB/Game/zNPCHazard.cpp | 111 +- src/SB/Game/zNPCSupplement.h | 4 + src/SB/Game/zNPCSupport.h | 5 +- src/SB/Game/zNPCTypeVillager.cpp | 2169 ++++++++++++++++++++----- src/SB/Game/zNPCTypeVillager.h | 191 ++- src/SB/Game/zTaskBox.h | 14 +- 17 files changed, 3525 insertions(+), 1520 deletions(-) diff --git a/configure.py b/configure.py index 8f1608937..63c5a304b 100644 --- a/configure.py +++ b/configure.py @@ -556,7 +556,7 @@ def MatchingFor(*versions): Object(Matching, "SB/Game/zNPCTypes.cpp"), Object(NonMatching, "SB/Game/zNPCTypeCommon.cpp", extra_cflags=["-sym on"]), Object(NonMatching, "SB/Game/zNPCTypeRobot.cpp"), - Object(NonMatching, "SB/Game/zNPCTypeVillager.cpp"), + Object(NonMatching, "SB/Game/zNPCTypeVillager.cpp", extra_cflags=["-sym on"]), Object(NonMatching, "SB/Game/zNPCTypeAmbient.cpp"), Object(NonMatching, "SB/Game/zNPCTypeTiki.cpp", extra_cflags=["-sym on"]), Object(NonMatching, "SB/Core/x/xBehaveMgr.cpp", extra_cflags=["-sym on"]), diff --git a/dwarf/SB/Game/zNPCTypeVillager.cpp b/dwarf/SB/Game/zNPCTypeVillager.cpp index 76e5973a0..99a0807d8 100644 --- a/dwarf/SB/Game/zNPCTypeVillager.cpp +++ b/dwarf/SB/Game/zNPCTypeVillager.cpp @@ -6,47 +6,50 @@ char buffer[16]; // size: 0x10, address: 0x0 char buffer[16]; // size: 0x10, address: 0x0 unsigned int g_hash_folkanim[26]; // size: 0x68, address: 0x5CD520 -char * g_strz_folkanim[26]; // size: 0x68, address: 0x4DF520 +char* g_strz_folkanim[26]; // size: 0x68, address: 0x4DF520 static unsigned int g_hash_platanim[2]; // size: 0x8, address: 0x50FF70 -static char * g_strz_platanim[2]; // size: 0x8, address: 0x50F038 +static char* g_strz_platanim[2]; // size: 0x8, address: 0x50F038 static signed int g_npcmsglock; // size: 0x4, address: 0x0 static class NPCMsg g_npcmsg; // size: 0x44, address: 0x0 -static class zParEmitter * g_pemit_aqualeak; // size: 0x4, address: 0x50FF78 +static class zParEmitter* g_pemit_aqualeak; // size: 0x4, address: 0x50FF78 static class xParEmitterCustomSettings g_parf_aqualeak; // size: 0x16C, address: 0x5CD590 float g_vilg_ds2_playernear; // size: 0x4, address: 0x50F040 float g_vilg_ds2_playergoing; // size: 0x4, address: 0x50F044 static signed int goalsWhichCheer[6]; // size: 0x18, address: 0x4DF650 static float g_rad_cowercheck; // size: 0x4, address: 0x50F048 -static char * news_fish_audio[71]; // size: 0x11C, address: 0x4DF680 +static char* news_fish_audio[71]; // size: 0x11C, address: 0x4DF680 static unsigned int news_fish_audio_hash[71]; // size: 0x11C, address: 0x5CD700 -class RwRaster * rast_shadBalloon; // size: 0x4, address: 0x50FF7C +class RwRaster* rast_shadBalloon; // size: 0x4, address: 0x50FF7C unsigned int aid_fresnelTxtr; // size: 0x4, address: 0x50FF84 unsigned int aid_enviroTxtr; // size: 0x4, address: 0x50FF88 -class RwTexture * txtr_fresnel; // size: 0x4, address: 0x50FF8C -class RwTexture * txtr_enviro; // size: 0x4, address: 0x50FF90 -class RwRaster * rast_fresnel; // size: 0x4, address: 0x50FF94 -class RwRaster * rast_enviro; // size: 0x4, address: 0x50FF98 +class RwTexture* txtr_fresnel; // size: 0x4, address: 0x50FF8C +class RwTexture* txtr_enviro; // size: 0x4, address: 0x50FF90 +class RwRaster* rast_fresnel; // size: 0x4, address: 0x50FF94 +class RwRaster* rast_enviro; // size: 0x4, address: 0x50FF98 float alf_currBubBud; // size: 0x4, address: 0x50F04C -class xEnt * CruiseBubbleDoesBubbleBuddyToo; // size: 0x4, address: 0x50FF9C +class xEnt* CruiseBubbleDoesBubbleBuddyToo; // size: 0x4, address: 0x50FF9C static unsigned int bb_env_texture; // size: 0x4, address: 0x50FFA4 static unsigned int bb_fresnel_texture; // size: 0x4, address: 0x50FFA8 -struct /* @anon10 */ { +struct /* @anon10 */ +{ // total size: 0xD0 } __vt__15zNPCBubbleBuddy; // size: 0xD0, address: 0x50B760 class xVec3 g_O3; // size: 0xC, address: 0x4F8D70 class zGlobals globals; // size: 0x2050, address: 0x52C8F0 float EnvMapShininess; // size: 0x4, address: 0x50E858 -class RpMaterial * MaterialSetShininess(class RpMaterial *, void *); // size: 0x0, address: 0x1EACD0 -class RpAtomic * (* gAtomicRenderCallBack)(class RpAtomic *); // size: 0x4, address: 0x50F9BC +class RpMaterial* MaterialSetShininess(class RpMaterial*, void*); // size: 0x0, address: 0x1EACD0 +class RpAtomic* (*gAtomicRenderCallBack)(class RpAtomic*); // size: 0x4, address: 0x50F9BC unsigned int gFXSurfaceFlags; // size: 0x4, address: 0x50F4D8 -class RpAtomic * AtomicDefaultRenderCallBack(class RpAtomic *); // size: 0x0, address: 0x21F4C0 -class RpAtomic * NPC_BubBud_RenderCB(class RpAtomic *); // size: 0x0, address: 0x2EB140 +class RpAtomic* AtomicDefaultRenderCallBack(class RpAtomic*); // size: 0x0, address: 0x21F4C0 +class RpAtomic* NPC_BubBud_RenderCB(class RpAtomic*); // size: 0x0, address: 0x2EB140 class xVec3 g_NY3; // size: 0xC, address: 0x4F8DC0 -class xLightKit * gLastLightKit; // size: 0x4, address: 0x50FFD4 +class xLightKit* gLastLightKit; // size: 0x4, address: 0x50FFD4 class xVec3 g_Y3; // size: 0xC, address: 0x4F8D90 -unsigned int xUpdateCull_AlwaysTrueCB(void *, void *); // size: 0x0, address: 0x329920 -signed int MERC_grul_goAlert(class xGoal *, void *, enum en_trantype *, float, void *); // size: 0x0, address: 0x2EAED0 -signed int FOLK_grul_goAlert(class xGoal *, void *, enum en_trantype *, float, void *); // size: 0x0, address: 0x2EB0A0 +unsigned int xUpdateCull_AlwaysTrueCB(void*, void*); // size: 0x0, address: 0x329920 +signed int MERC_grul_goAlert(class xGoal*, void*, enum en_trantype*, float, + void*); // size: 0x0, address: 0x2EAED0 +signed int FOLK_grul_goAlert(class xGoal*, void*, enum en_trantype*, float, + void*); // size: 0x0, address: 0x2EB0A0 class NPCSndTrax g_sndTrax_VillagerGirl[]; // size: 0x0, address: 0x4DFFF0 class NPCSndTrax g_sndTrax_VillagerBoy[]; // size: 0x0, address: 0x4DFFD0 class NPCSndTrax g_sndTrax_VillagerEldess[]; // size: 0x0, address: 0x5CF9D8 @@ -57,41 +60,53 @@ class NPCSndTrax g_sndTrax_Squidward[]; // size: 0x0, address: 0x4DFEC0 class NPCSndTrax g_sndTrax_VillagerCoStar[]; // size: 0x0, address: 0x4DFF10 class NPCSndTrax g_sndTrax_Villager[]; // size: 0x0, address: 0x4DFD70 enum _CurrentPlayer gCurrentPlayer; // size: 0x4, address: 0x50F3EC -void xAnimDefaultBeforeEnter(class xAnimPlay *, class xAnimState *); // size: 0x0, address: 0x213A90 -struct /* @anon1 */ { +void xAnimDefaultBeforeEnter(class xAnimPlay*, class xAnimState*); // size: 0x0, address: 0x213A90 +struct /* @anon1 */ +{ // total size: 0x10 } __vt__7HiThere; // size: 0x10, address: 0x50B900 -struct /* @anon9 */ { +struct /* @anon9 */ +{ // total size: 0x10 } __vt__Q28ztaskbox8callback; // size: 0x10, address: 0x50B910 -struct /* @anon5 */ { +struct /* @anon5 */ +{ // total size: 0xD0 } __vt__12zNPCVillager; // size: 0xD0, address: 0x50BD30 -struct /* @anon6 */ { +struct /* @anon6 */ +{ // total size: 0xCC } __vt__10zNPCCommon; // size: 0xCC, address: 0x50A6C0 -struct /* @anon8 */ { +struct /* @anon8 */ +{ // total size: 0x54 } __vt__9xNPCBasic; // size: 0x54, address: 0x50BE30 -struct /* @anon4 */ { +struct /* @anon4 */ +{ // total size: 0xD0 } __vt__14zNPCNewsFishTV; // size: 0xD0, address: 0x50B830 -struct /* @anon7 */ { +struct /* @anon7 */ +{ // total size: 0xD0 } __vt__12zNPCNewsFish; // size: 0xD0, address: 0x50BAC0 -struct /* @anon2 */ { +struct /* @anon2 */ +{ // total size: 0xD0 } __vt__15zNPCMerManChair; // size: 0xD0, address: 0x50BB90 -struct /* @anon3 */ { +struct /* @anon3 */ +{ // total size: 0xD0 } __vt__15zNPCSandyBikini; // size: 0xD0, address: 0x50B9F0 -struct /* @anon11 */ { +struct /* @anon11 */ +{ // total size: 0xD0 } __vt__14zNPCBalloonBoy; // size: 0xD0, address: 0x50B920 -struct /* @anon0 */ { +struct /* @anon0 */ +{ // total size: 0xD0 } __vt__8zNPCFish; // size: 0xD0, address: 0x50BC60 -class RwMatrixTag { +class RwMatrixTag +{ // total size: 0x40 public: class RwV3d right; // offset 0x0, size 0xC @@ -103,16 +118,17 @@ class RwMatrixTag { class RwV3d pos; // offset 0x30, size 0xC unsigned int pad3; // offset 0x3C, size 0x4 }; -class RwCamera { +class RwCamera +{ // total size: 0x190 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 enum RwCameraProjection projectionType; // offset 0x14, size 0x4 - class RwCamera * (* beginUpdate)(class RwCamera *); // offset 0x18, size 0x4 - class RwCamera * (* endUpdate)(class RwCamera *); // offset 0x1C, size 0x4 + class RwCamera* (*beginUpdate)(class RwCamera*); // offset 0x18, size 0x4 + class RwCamera* (*endUpdate)(class RwCamera*); // offset 0x1C, size 0x4 class RwMatrixTag viewMatrix; // offset 0x20, size 0x40 - class RwRaster * frameBuffer; // offset 0x60, size 0x4 - class RwRaster * zBuffer; // offset 0x64, size 0x4 + class RwRaster* frameBuffer; // offset 0x60, size 0x4 + class RwRaster* zBuffer; // offset 0x64, size 0x4 class RwV2d viewWindow; // offset 0x68, size 0x8 class RwV2d recipViewWindow; // offset 0x70, size 0x8 class RwV2d viewOffset; // offset 0x78, size 0x8 @@ -125,43 +141,50 @@ class RwCamera { class RwBBox frustumBoundBox; // offset 0x10C, size 0x18 class RwV3d frustumCorners[8]; // offset 0x124, size 0x60 }; -class xGoal : public xListItem, public xFactoryInst { +class xGoal : public xListItem, public xFactoryInst +{ // total size: 0x3C public: - class xPsyche * psyche; // offset 0x18, size 0x4 + class xPsyche* psyche; // offset 0x18, size 0x4 signed int goalID; // offset 0x1C, size 0x4 enum en_GOALSTATE stat; // offset 0x20, size 0x4 signed int flg_able; // offset 0x24, size 0x4 - signed int (* fun_process)(class xGoal *, void *, enum en_trantype *, float, void *); // offset 0x28, size 0x4 - signed int (* fun_precalc)(class xGoal *, void *, float, void *); // offset 0x2C, size 0x4 - signed int (* fun_chkRule)(class xGoal *, void *, enum en_trantype *, float, void *); // offset 0x30, size 0x4 - void * cbdata; // offset 0x34, size 0x4 -}; -class xAnimTable { + signed int (*fun_process)(class xGoal*, void*, enum en_trantype*, float, + void*); // offset 0x28, size 0x4 + signed int (*fun_precalc)(class xGoal*, void*, float, void*); // offset 0x2C, size 0x4 + signed int (*fun_chkRule)(class xGoal*, void*, enum en_trantype*, float, + void*); // offset 0x30, size 0x4 + void* cbdata; // offset 0x34, size 0x4 +}; +class xAnimTable +{ // total size: 0x1C public: - class xAnimTable * Next; // offset 0x0, size 0x4 - char * Name; // offset 0x4, size 0x4 - class xAnimTransition * TransitionList; // offset 0x8, size 0x4 - class xAnimState * StateList; // offset 0xC, size 0x4 + class xAnimTable* Next; // offset 0x0, size 0x4 + char* Name; // offset 0x4, size 0x4 + class xAnimTransition* TransitionList; // offset 0x8, size 0x4 + class xAnimState* StateList; // offset 0xC, size 0x4 unsigned int AnimIndex; // offset 0x10, size 0x4 unsigned int MorphIndex; // offset 0x14, size 0x4 unsigned int UserFlags; // offset 0x18, size 0x4 }; -class xBase { +class xBase +{ // total size: 0x10 public: unsigned int id; // offset 0x0, size 0x4 unsigned char baseType; // offset 0x4, size 0x1 unsigned char linkCount; // offset 0x5, size 0x1 unsigned short baseFlags; // offset 0x6, size 0x2 - class xLinkAsset * link; // offset 0x8, size 0x4 - signed int (* eventFunc)(class xBase *, class xBase *, unsigned int, float *, class xBase *); // offset 0xC, size 0x4 + class xLinkAsset* link; // offset 0x8, size 0x4 + signed int (*eventFunc)(class xBase*, class xBase*, unsigned int, float*, + class xBase*); // offset 0xC, size 0x4 }; -class xEnt : public xBase { +class xEnt : public xBase +{ // total size: 0xD0 public: - class xEntAsset * asset; // offset 0x10, size 0x4 + class xEntAsset* asset; // offset 0x10, size 0x4 unsigned short idx; // offset 0x14, size 0x2 unsigned short num_updates; // offset 0x16, size 0x2 unsigned char flags; // offset 0x18, size 0x1 @@ -176,47 +199,50 @@ class xEnt : public xBase { unsigned char collLev; // offset 0x21, size 0x1 unsigned char chkby; // offset 0x22, size 0x1 unsigned char penby; // offset 0x23, size 0x1 - class xModelInstance * model; // offset 0x24, size 0x4 - class xModelInstance * collModel; // offset 0x28, size 0x4 - class xModelInstance * camcollModel; // offset 0x2C, size 0x4 - class xLightKit * lightKit; // offset 0x30, size 0x4 - void (* update)(class xEnt *, class xScene *, float); // offset 0x34, size 0x4 - void (* endUpdate)(class xEnt *, class xScene *, float); // offset 0x38, size 0x4 - void (* bupdate)(class xEnt *, class xVec3 *); // offset 0x3C, size 0x4 - void (* move)(class xEnt *, class xScene *, float, class xEntFrame *); // offset 0x40, size 0x4 - void (* render)(class xEnt *); // offset 0x44, size 0x4 - class xEntFrame * frame; // offset 0x48, size 0x4 - class xEntCollis * collis; // offset 0x4C, size 0x4 + class xModelInstance* model; // offset 0x24, size 0x4 + class xModelInstance* collModel; // offset 0x28, size 0x4 + class xModelInstance* camcollModel; // offset 0x2C, size 0x4 + class xLightKit* lightKit; // offset 0x30, size 0x4 + void (*update)(class xEnt*, class xScene*, float); // offset 0x34, size 0x4 + void (*endUpdate)(class xEnt*, class xScene*, float); // offset 0x38, size 0x4 + void (*bupdate)(class xEnt*, class xVec3*); // offset 0x3C, size 0x4 + void (*move)(class xEnt*, class xScene*, float, class xEntFrame*); // offset 0x40, size 0x4 + void (*render)(class xEnt*); // offset 0x44, size 0x4 + class xEntFrame* frame; // offset 0x48, size 0x4 + class xEntCollis* collis; // offset 0x4C, size 0x4 class xGridBound gridb; // offset 0x50, size 0x14 class xBound bound; // offset 0x64, size 0x4C - void (* transl)(class xEnt *, class xVec3 *, class xMat4x3 *); // offset 0xB0, size 0x4 - class xFFX * ffx; // offset 0xB4, size 0x4 - class xEnt * driver; // offset 0xB8, size 0x4 + void (*transl)(class xEnt*, class xVec3*, class xMat4x3*); // offset 0xB0, size 0x4 + class xFFX* ffx; // offset 0xB4, size 0x4 + class xEnt* driver; // offset 0xB8, size 0x4 signed int driveMode; // offset 0xBC, size 0x4 - class xShadowSimpleCache * simpShadow; // offset 0xC0, size 0x4 - class xEntShadow * entShadow; // offset 0xC4, size 0x4 - class anim_coll_data * anim_coll; // offset 0xC8, size 0x4 - void * user_data; // offset 0xCC, size 0x4 + class xShadowSimpleCache* simpShadow; // offset 0xC0, size 0x4 + class xEntShadow* entShadow; // offset 0xC4, size 0x4 + class anim_coll_data* anim_coll; // offset 0xC8, size 0x4 + void* user_data; // offset 0xCC, size 0x4 }; -class _zPortal : public xBase { +class _zPortal : public xBase +{ // total size: 0x14 public: - class xPortalAsset * passet; // offset 0x10, size 0x4 + class xPortalAsset* passet; // offset 0x10, size 0x4 }; -class zFragLightning { +class zFragLightning +{ // total size: 0x10 public: - class zFragLightningAsset * fasset; // offset 0x0, size 0x4 - class xModelInstance * startParent; // offset 0x4, size 0x4 - class xModelInstance * endParent; // offset 0x8, size 0x4 - class zLightning * lightning; // offset 0xC, size 0x4 + class zFragLightningAsset* fasset; // offset 0x0, size 0x4 + class xModelInstance* startParent; // offset 0x4, size 0x4 + class xModelInstance* endParent; // offset 0x8, size 0x4 + class zLightning* lightning; // offset 0xC, size 0x4 }; -class xParEmitter : public xBase { +class xParEmitter : public xBase +{ // total size: 0x78 public: - class xParEmitterAsset * tasset; // offset 0x10, size 0x4 - class xParGroup * group; // offset 0x14, size 0x4 - class xParEmitterPropsAsset * prop; // offset 0x18, size 0x4 + class xParEmitterAsset* tasset; // offset 0x10, size 0x4 + class xParGroup* group; // offset 0x14, size 0x4 + class xParEmitterPropsAsset* prop; // offset 0x18, size 0x4 unsigned char rate_mode; // offset 0x1C, size 0x1 float rate; // offset 0x20, size 0x4 float rate_time; // offset 0x24, size 0x4 @@ -228,19 +254,20 @@ class xParEmitter : public xBase { class xModelTag tag; // offset 0x38, size 0x20 float oocull_distance_sqr; // offset 0x58, size 0x4 float distance_to_cull_sqr; // offset 0x5C, size 0x4 - void * attachTo; // offset 0x60, size 0x4 - class xParSys * parSys; // offset 0x64, size 0x4 - void * emit_volume; // offset 0x68, size 0x4 + void* attachTo; // offset 0x60, size 0x4 + class xParSys* parSys; // offset 0x64, size 0x4 + void* emit_volume; // offset 0x68, size 0x4 class xVec3 last_attach_loc; // offset 0x6C, size 0xC }; -class xModelInstance { +class xModelInstance +{ // total size: 0x6C public: - class xModelInstance * Next; // offset 0x0, size 0x4 - class xModelInstance * Parent; // offset 0x4, size 0x4 - class xModelPool * Pool; // offset 0x8, size 0x4 - class xAnimPlay * Anim; // offset 0xC, size 0x4 - class RpAtomic * Data; // offset 0x10, size 0x4 + class xModelInstance* Next; // offset 0x0, size 0x4 + class xModelInstance* Parent; // offset 0x4, size 0x4 + class xModelPool* Pool; // offset 0x8, size 0x4 + class xAnimPlay* Anim; // offset 0xC, size 0x4 + class RpAtomic* Data; // offset 0x10, size 0x4 unsigned int PipeFlags; // offset 0x14, size 0x4 float RedMultiplier; // offset 0x18, size 0x4 float GreenMultiplier; // offset 0x1C, size 0x4 @@ -248,79 +275,85 @@ class xModelInstance { float Alpha; // offset 0x24, size 0x4 float FadeStart; // offset 0x28, size 0x4 float FadeEnd; // offset 0x2C, size 0x4 - class xSurface * Surf; // offset 0x30, size 0x4 - class xModelBucket * * Bucket; // offset 0x34, size 0x4 - class xModelInstance * BucketNext; // offset 0x38, size 0x4 - class xLightKit * LightKit; // offset 0x3C, size 0x4 - void * Object; // offset 0x40, size 0x4 + class xSurface* Surf; // offset 0x30, size 0x4 + class xModelBucket** Bucket; // offset 0x34, size 0x4 + class xModelInstance* BucketNext; // offset 0x38, size 0x4 + class xLightKit* LightKit; // offset 0x3C, size 0x4 + void* Object; // offset 0x40, size 0x4 unsigned short Flags; // offset 0x44, size 0x2 unsigned char BoneCount; // offset 0x46, size 0x1 unsigned char BoneIndex; // offset 0x47, size 0x1 - unsigned char * BoneRemap; // offset 0x48, size 0x4 - class RwMatrixTag * Mat; // offset 0x4C, size 0x4 + unsigned char* BoneRemap; // offset 0x48, size 0x4 + class RwMatrixTag* Mat; // offset 0x4C, size 0x4 class xVec3 Scale; // offset 0x50, size 0xC unsigned int modelID; // offset 0x5C, size 0x4 unsigned int shadowID; // offset 0x60, size 0x4 - class RpAtomic * shadowmapAtomic; // offset 0x64, size 0x4 - class /* @class */ { + class RpAtomic* shadowmapAtomic; // offset 0x64, size 0x4 + class /* @class */ + { // total size: 0x4 public: - class xVec3 * verts; // offset 0x0, size 0x4 + class xVec3* verts; // offset 0x0, size 0x4 } anim_coll; // offset 0x68, size 0x4 }; -class RwLLLink { +class RwLLLink +{ // total size: 0x8 public: - class RwLLLink * next; // offset 0x0, size 0x4 - class RwLLLink * prev; // offset 0x4, size 0x4 + class RwLLLink* next; // offset 0x0, size 0x4 + class RwLLLink* prev; // offset 0x4, size 0x4 }; -class ztaskbox : public xBase { +class ztaskbox : public xBase +{ // total size: 0x24 public: - class /* @class */ { + class /* @class */ + { // total size: 0x4 public: unsigned char enabled : 8; // offset 0x0, size 0x1 unsigned int dummy : 24; // offset 0x0, size 0x4 } flag; // offset 0x10, size 0x4 - class asset_type * asset; // offset 0x14, size 0x4 + class asset_type* asset; // offset 0x14, size 0x4 enum state_enum state; // offset 0x18, size 0x4 - class callback * cb; // offset 0x1C, size 0x4 - class ztaskbox * current; // offset 0x20, size 0x4 + class callback* cb; // offset 0x1C, size 0x4 + class ztaskbox* current; // offset 0x20, size 0x4 }; -class zNPCCommon : public xNPCBasic { +class zNPCCommon : public xNPCBasic +{ // total size: 0x2A0 public: - class xEntAsset * entass; // offset 0x1BC, size 0x4 - class xEntNPCAsset * npcass; // offset 0x1C0, size 0x4 - class zNPCSettings * npcsetass; // offset 0x1C4, size 0x4 + class xEntAsset* entass; // offset 0x1BC, size 0x4 + class xEntNPCAsset* npcass; // offset 0x1C0, size 0x4 + class zNPCSettings* npcsetass; // offset 0x1C4, size 0x4 signed int flg_vuln; // offset 0x1C8, size 0x4 signed int flg_move; // offset 0x1CC, size 0x4 signed int flg_misc; // offset 0x1D0, size 0x4 signed int flg_able; // offset 0x1D4, size 0x4 - class NPCConfig * cfg_npc; // offset 0x1D8, size 0x4 + class NPCConfig* cfg_npc; // offset 0x1D8, size 0x4 class zNPCSettings npcset; // offset 0x1DC, size 0x2C - class zMovePoint * nav_past; // offset 0x208, size 0x4 - class zMovePoint * nav_curr; // offset 0x20C, size 0x4 - class zMovePoint * nav_dest; // offset 0x210, size 0x4 - class zMovePoint * nav_lead; // offset 0x214, size 0x4 - class xSpline3 * spl_mvptspline; // offset 0x218, size 0x4 + class zMovePoint* nav_past; // offset 0x208, size 0x4 + class zMovePoint* nav_curr; // offset 0x20C, size 0x4 + class zMovePoint* nav_dest; // offset 0x210, size 0x4 + class zMovePoint* nav_lead; // offset 0x214, size 0x4 + class xSpline3* spl_mvptspline; // offset 0x218, size 0x4 float len_mvptspline; // offset 0x21C, size 0x4 float dst_curspline; // offset 0x220, size 0x4 - class xEntDrive * drv_data; // offset 0x224, size 0x4 - class xPsyche * psy_instinct; // offset 0x228, size 0x4 - class zNPCCommon * npc_duplodude; // offset 0x22C, size 0x4 + class xEntDrive* drv_data; // offset 0x224, size 0x4 + class xPsyche* psy_instinct; // offset 0x228, size 0x4 + class zNPCCommon* npc_duplodude; // offset 0x22C, size 0x4 float spd_throttle; // offset 0x230, size 0x4 signed int flg_xtrarend; // offset 0x234, size 0x4 float tmr_fidget; // offset 0x238, size 0x4 float tmr_invuln; // offset 0x23C, size 0x4 - class zShrapnelAsset * explosion; // offset 0x240, size 0x4 - class xModelAssetParam * parmdata; // offset 0x244, size 0x4 + class zShrapnelAsset* explosion; // offset 0x240, size 0x4 + class xModelAssetParam* parmdata; // offset 0x244, size 0x4 unsigned int pdatsize; // offset 0x248, size 0x4 - class zNPCLassoInfo * lassdata; // offset 0x24C, size 0x4 + class zNPCLassoInfo* lassdata; // offset 0x24C, size 0x4 class NPCSndQueue snd_queue[4]; // offset 0x250, size 0x50 }; -class xEntAsset : public xBaseAsset { +class xEntAsset : public xBaseAsset +{ // total size: 0x54 public: unsigned char flags; // offset 0x8, size 0x1 @@ -340,81 +373,92 @@ class xEntAsset : public xBaseAsset { unsigned int modelInfoID; // offset 0x4C, size 0x4 unsigned int animListID; // offset 0x50, size 0x4 }; -class zNPCBalloonBoy : public zNPCFish { +class zNPCBalloonBoy : public zNPCFish +{ // total size: 0x354 public: signed int specialBalloon; // offset 0x348, size 0x4 - class zPlatform * plat_balloons; // offset 0x34C, size 0x4 - class xShadowCache * shadCache; // offset 0x350, size 0x4 + class zPlatform* plat_balloons; // offset 0x34C, size 0x4 + class xShadowCache* shadCache; // offset 0x350, size 0x4 }; -class RwTexture { +class RwTexture +{ // total size: 0x58 public: - class RwRaster * raster; // offset 0x0, size 0x4 - class RwTexDictionary * dict; // offset 0x4, size 0x4 + class RwRaster* raster; // offset 0x0, size 0x4 + class RwTexDictionary* dict; // offset 0x4, size 0x4 class RwLLLink lInDictionary; // offset 0x8, size 0x8 char name[32]; // offset 0x10, size 0x20 char mask[32]; // offset 0x30, size 0x20 unsigned int filterAddressing; // offset 0x50, size 0x4 signed int refCount; // offset 0x54, size 0x4 }; -class zNPCVillager : public zNPCCommon { +class zNPCVillager : public zNPCCommon +{ // total size: 0x2B0 public: class HiThere hithere; // offset 0x2A0, size 0x8 - class ztaskbox * converse; // offset 0x2A8, size 0x4 + class ztaskbox* converse; // offset 0x2A8, size 0x4 signed int current_talk_anim; // offset 0x2AC, size 0x4 }; -class zFragBone { +class zFragBone +{ // total size: 0x10 public: signed int index; // offset 0x0, size 0x4 class xVec3 offset; // offset 0x4, size 0xC }; -class RpWorld { +class RpWorld +{ // total size: 0x70 public: class RwObject object; // offset 0x0, size 0x8 unsigned int flags; // offset 0x8, size 0x4 enum RpWorldRenderOrder renderOrder; // offset 0xC, size 0x4 class RpMaterialList matList; // offset 0x10, size 0xC - class RpSector * rootSector; // offset 0x1C, size 0x4 + class RpSector* rootSector; // offset 0x1C, size 0x4 signed int numTexCoordSets; // offset 0x20, size 0x4 signed int numClumpsInWorld; // offset 0x24, size 0x4 - class RwLLLink * currentClumpLink; // offset 0x28, size 0x4 + class RwLLLink* currentClumpLink; // offset 0x28, size 0x4 class RwLinkList clumpList; // offset 0x2C, size 0x8 class RwLinkList lightList; // offset 0x34, size 0x8 class RwLinkList directionalLightList; // offset 0x3C, size 0x8 class RwV3d worldOrigin; // offset 0x44, size 0xC class RwBBox boundingBox; // offset 0x50, size 0x18 - class RpWorldSector * (* renderCallBack)(class RpWorldSector *); // offset 0x68, size 0x4 - class RxPipeline * pipeline; // offset 0x6C, size 0x4 + class RpWorldSector* (*renderCallBack)(class RpWorldSector*); // offset 0x68, size 0x4 + class RxPipeline* pipeline; // offset 0x6C, size 0x4 }; -class RxNodeMethods { +class RxNodeMethods +{ // total size: 0x1C public: - signed int (* nodeBody)(class RxPipelineNode *, class RxPipelineNodeParam *); // offset 0x0, size 0x4 - signed int (* nodeInit)(class RxNodeDefinition *); // offset 0x4, size 0x4 - void (* nodeTerm)(class RxNodeDefinition *); // offset 0x8, size 0x4 - signed int (* pipelineNodeInit)(class RxPipelineNode *); // offset 0xC, size 0x4 - void (* pipelineNodeTerm)(class RxPipelineNode *); // offset 0x10, size 0x4 - signed int (* pipelineNodeConfig)(class RxPipelineNode *, class RxPipeline *); // offset 0x14, size 0x4 - unsigned int (* configMsgHandler)(class RxPipelineNode *, unsigned int, unsigned int, void *); // offset 0x18, size 0x4 -}; -class xMemPool { + signed int (*nodeBody)(class RxPipelineNode*, + class RxPipelineNodeParam*); // offset 0x0, size 0x4 + signed int (*nodeInit)(class RxNodeDefinition*); // offset 0x4, size 0x4 + void (*nodeTerm)(class RxNodeDefinition*); // offset 0x8, size 0x4 + signed int (*pipelineNodeInit)(class RxPipelineNode*); // offset 0xC, size 0x4 + void (*pipelineNodeTerm)(class RxPipelineNode*); // offset 0x10, size 0x4 + signed int (*pipelineNodeConfig)(class RxPipelineNode*, + class RxPipeline*); // offset 0x14, size 0x4 + unsigned int (*configMsgHandler)(class RxPipelineNode*, unsigned int, unsigned int, + void*); // offset 0x18, size 0x4 +}; +class xMemPool +{ // total size: 0x1C public: - void * FreeList; // offset 0x0, size 0x4 + void* FreeList; // offset 0x0, size 0x4 unsigned short NextOffset; // offset 0x4, size 0x2 unsigned short Flags; // offset 0x6, size 0x2 - void * UsedList; // offset 0x8, size 0x4 - void (* InitCB)(class xMemPool *, void *); // offset 0xC, size 0x4 - void * Buffer; // offset 0x10, size 0x4 + void* UsedList; // offset 0x8, size 0x4 + void (*InitCB)(class xMemPool*, void*); // offset 0xC, size 0x4 + void* Buffer; // offset 0x10, size 0x4 unsigned short Size; // offset 0x14, size 0x2 unsigned short NumRealloc; // offset 0x16, size 0x2 unsigned int Total; // offset 0x18, size 0x4 }; -class zNPCNewsFish : public zNPCVillager { +class zNPCNewsFish : public zNPCVillager +{ // total size: 0x530 public: class say_data said[71]; // offset 0x2B0, size 0x238 @@ -423,7 +467,7 @@ class zNPCNewsFish : public zNPCVillager { unsigned int currSoundID; // offset 0x4F0, size 0x4 unsigned int nextSoundID; // offset 0x4F4, size 0x4 float jawTime; // offset 0x4F8, size 0x4 - void * jawData; // offset 0x4FC, size 0x4 + void* jawData; // offset 0x4FC, size 0x4 unsigned int newsfishFlags; // offset 0x500, size 0x4 class xVec2 onScreenCoords; // offset 0x504, size 0x8 class xVec2 offScreenCoords; // offset 0x50C, size 0x8 @@ -434,17 +478,19 @@ class zNPCNewsFish : public zNPCVillager { float disappearSpeed; // offset 0x528, size 0x4 float screenLerp; // offset 0x52C, size 0x4 }; -class _tagPadAnalog { +class _tagPadAnalog +{ // total size: 0x2 public: signed char x; // offset 0x0, size 0x1 signed char y; // offset 0x1, size 0x1 }; -class xNPCBasic : public xEnt, public xFactoryInst { +class xNPCBasic : public xEnt, public xFactoryInst +{ // total size: 0x1BC public: - void (* f_setup)(class xEnt *); // offset 0xDC, size 0x4 - void (* f_reset)(class xEnt *); // offset 0xE0, size 0x4 + void (*f_setup)(class xEnt*); // offset 0xDC, size 0x4 + void (*f_reset)(class xEnt*); // offset 0xE0, size 0x4 signed int flg_basenpc : 16; // offset 0xE4, size 0x4 signed int inUpdate : 8; // offset 0xE4, size 0x4 signed int flg_upward : 8; // offset 0xE4, size 0x4 @@ -457,7 +503,8 @@ class xNPCBasic : public xEnt, public xFactoryInst { class xEntShadow entShadow_embedded; // offset 0xF8, size 0x28 class xShadowSimpleCache simpShadow_embedded; // offset 0x120, size 0x98 }; -class zFragLightningAsset : public zFragAsset { +class zFragLightningAsset : public zFragAsset +{ // total size: 0x68 public: class zFragLocation start; // offset 0x18, size 0x24 @@ -465,20 +512,23 @@ class zFragLightningAsset : public zFragAsset { unsigned int startParentID; // offset 0x60, size 0x4 unsigned int endParentID; // offset 0x64, size 0x4 }; -class xSFX : public xBase { +class xSFX : public xBase +{ // total size: 0x1C public: - class xSFXAsset * asset; // offset 0x10, size 0x4 + class xSFXAsset* asset; // offset 0x10, size 0x4 unsigned int sndID; // offset 0x14, size 0x4 float cachedOuterDistSquared; // offset 0x18, size 0x4 }; -class NPCAreaInfo { +class NPCAreaInfo +{ // total size: 0x10 public: - class zNPCCommon * npc_origin; // offset 0x0, size 0x4 + class zNPCCommon* npc_origin; // offset 0x0, size 0x4 class xVec3 pos_origin; // offset 0x4, size 0xC }; -class RwFrame { +class RwFrame +{ // total size: 0xB0 public: class RwObject object; // offset 0x0, size 0x8 @@ -486,39 +536,45 @@ class RwFrame { class RwMatrixTag modelling; // offset 0x10, size 0x40 class RwMatrixTag ltm; // offset 0x50, size 0x40 class RwLinkList objectList; // offset 0x90, size 0x8 - class RwFrame * child; // offset 0x98, size 0x4 - class RwFrame * next; // offset 0x9C, size 0x4 - class RwFrame * root; // offset 0xA0, size 0x4 + class RwFrame* child; // offset 0x98, size 0x4 + class RwFrame* next; // offset 0x9C, size 0x4 + class RwFrame* root; // offset 0xA0, size 0x4 }; -class RxPipelineCluster { +class RxPipelineCluster +{ // total size: 0x8 public: - class RxClusterDefinition * clusterRef; // offset 0x0, size 0x4 + class RxClusterDefinition* clusterRef; // offset 0x0, size 0x4 unsigned int creationAttributes; // offset 0x4, size 0x4 }; -class RxOutputSpec { +class RxOutputSpec +{ // total size: 0xC public: - char * name; // offset 0x0, size 0x4 - enum RxClusterValid * outputClusters; // offset 0x4, size 0x4 + char* name; // offset 0x0, size 0x4 + enum RxClusterValid* outputClusters; // offset 0x4, size 0x4 enum RxClusterValid allOtherClusters; // offset 0x8, size 0x4 }; -class xAnimMultiFileEntry { +class xAnimMultiFileEntry +{ // total size: 0x8 public: unsigned int ID; // offset 0x0, size 0x4 - class xAnimFile * File; // offset 0x4, size 0x4 + class xAnimFile* File; // offset 0x4, size 0x4 }; -class xAnimActiveEffect { +class xAnimActiveEffect +{ // total size: 0x8 public: - class xAnimEffect * Effect; // offset 0x0, size 0x4 + class xAnimEffect* Effect; // offset 0x0, size 0x4 unsigned int Handle; // offset 0x4, size 0x4 }; -class zMovePoint : public xMovePoint { +class zMovePoint : public xMovePoint +{ // total size: 0x30 }; -class xPortalAsset : public xBaseAsset { +class xPortalAsset : public xBaseAsset +{ // total size: 0x18 public: unsigned int assetCameraID; // offset 0x8, size 0x4 @@ -526,7 +582,8 @@ class xPortalAsset : public xBaseAsset { float ang; // offset 0x10, size 0x4 unsigned int sceneID; // offset 0x14, size 0x4 }; -class xEntCollis { +class xEntCollis +{ // total size: 0x5B4 public: unsigned char chk; // offset 0x0, size 0x1 @@ -541,43 +598,48 @@ class xEntCollis { unsigned char stat_eidx; // offset 0x9, size 0x1 unsigned char idx; // offset 0xA, size 0x1 class xCollis colls[18]; // offset 0xC, size 0x5A0 - void (* post)(class xEnt *, class xScene *, float, class xEntCollis *); // offset 0x5AC, size 0x4 - unsigned int (* depenq)(class xEnt *, class xEnt *, class xScene *, float, class xCollis *); // offset 0x5B0, size 0x4 + void (*post)(class xEnt*, class xScene*, float, class xEntCollis*); // offset 0x5AC, size 0x4 + unsigned int (*depenq)(class xEnt*, class xEnt*, class xScene*, float, + class xCollis*); // offset 0x5B0, size 0x4 }; -class xVec3 { +class xVec3 +{ // total size: 0xC public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 float z; // offset 0x8, size 0x4 }; -class xPsyche : public RyzMemData { +class xPsyche : public RyzMemData +{ // total size: 0x68 public: - class xBase * clt_owner; // offset 0x0, size 0x4 - class xPSYNote * cb_notice; // offset 0x4, size 0x4 + class xBase* clt_owner; // offset 0x0, size 0x4 + class xPSYNote* cb_notice; // offset 0x4, size 0x4 signed int flg_psyche; // offset 0x8, size 0x4 - class xGoal * goallist; // offset 0xC, size 0x4 - class xGoal * goalstak[5]; // offset 0x10, size 0x14 + class xGoal* goallist; // offset 0xC, size 0x4 + class xGoal* goalstak[5]; // offset 0x10, size 0x14 float tmr_stack[5][1]; // offset 0x24, size 0x14 signed int staktop; // offset 0x38, size 0x4 - class xGoal * pendgoal; // offset 0x3C, size 0x4 + class xGoal* pendgoal; // offset 0x3C, size 0x4 enum en_pendtype pendtype; // offset 0x40, size 0x4 signed int gid_safegoal; // offset 0x44, size 0x4 - void (* fun_remap)(signed int *, enum en_trantype *); // offset 0x48, size 0x4 - void * userContext; // offset 0x4C, size 0x4 + void (*fun_remap)(signed int*, enum en_trantype*); // offset 0x48, size 0x4 + void* userContext; // offset 0x4C, size 0x4 signed int cnt_transLastTimestep; // offset 0x50, size 0x4 enum PSY_BRAIN_STATUS psystat; // offset 0x54, size 0x4 class xBase fakebase; // offset 0x58, size 0x10 }; -class xParEmitterAsset : public xBaseAsset { +class xParEmitterAsset : public xBaseAsset +{ // total size: 0x54 public: unsigned char emit_flags; // offset 0x8, size 0x1 unsigned char emit_type; // offset 0x9, size 0x1 unsigned short pad; // offset 0xA, size 0x2 unsigned int propID; // offset 0xC, size 0x4 - union { // inferred + union + { // inferred class xPECircle e_circle; // offset 0x10, size 0x14 class _tagEmitSphere e_sphere; // offset 0x10, size 0x4 class _tagEmitRect e_rect; // offset 0x10, size 0x8 @@ -595,15 +657,17 @@ class xParEmitterAsset : public xBaseAsset { unsigned int cull_mode; // offset 0x4C, size 0x4 float cull_dist_sqr; // offset 0x50, size 0x4 }; -struct /* @anon0 */ { +struct /* @anon0 */ +{ // total size: 0xD0 }; -class RwRaster { +class RwRaster +{ // total size: 0x34 public: - class RwRaster * parent; // offset 0x0, size 0x4 - unsigned char * cpPixels; // offset 0x4, size 0x4 - unsigned char * palette; // offset 0x8, size 0x4 + class RwRaster* parent; // offset 0x0, size 0x4 + unsigned char* cpPixels; // offset 0x4, size 0x4 + unsigned char* palette; // offset 0x8, size 0x4 signed int width; // offset 0xC, size 0x4 signed int height; // offset 0x10, size 0x4 signed int depth; // offset 0x14, size 0x4 @@ -614,53 +678,59 @@ class RwRaster { unsigned char cFlags; // offset 0x21, size 0x1 unsigned char privateFlags; // offset 0x22, size 0x1 unsigned char cFormat; // offset 0x23, size 0x1 - unsigned char * originalPixels; // offset 0x24, size 0x4 + unsigned char* originalPixels; // offset 0x24, size 0x4 signed int originalWidth; // offset 0x28, size 0x4 signed int originalHeight; // offset 0x2C, size 0x4 signed int originalStride; // offset 0x30, size 0x4 }; -class xCutsceneZbufferHack { +class xCutsceneZbufferHack +{ // total size: 0x44 public: - char * name; // offset 0x0, size 0x4 + char* name; // offset 0x0, size 0x4 class xCutsceneZbuffer times[4]; // offset 0x4, size 0x40 }; -class xUpdateCullMgr { +class xUpdateCullMgr +{ // total size: 0x2C public: unsigned int entCount; // offset 0x0, size 0x4 unsigned int entActive; // offset 0x4, size 0x4 - void * * ent; // offset 0x8, size 0x4 - class xUpdateCullEnt * * mgr; // offset 0xC, size 0x4 + void** ent; // offset 0x8, size 0x4 + class xUpdateCullEnt** mgr; // offset 0xC, size 0x4 unsigned int mgrCount; // offset 0x10, size 0x4 unsigned int mgrCurr; // offset 0x14, size 0x4 - class xUpdateCullEnt * mgrList; // offset 0x18, size 0x4 + class xUpdateCullEnt* mgrList; // offset 0x18, size 0x4 unsigned int grpCount; // offset 0x1C, size 0x4 - class xUpdateCullGroup * grpList; // offset 0x20, size 0x4 - void (* activateCB)(void *); // offset 0x24, size 0x4 - void (* deactivateCB)(void *); // offset 0x28, size 0x4 + class xUpdateCullGroup* grpList; // offset 0x20, size 0x4 + void (*activateCB)(void*); // offset 0x24, size 0x4 + void (*deactivateCB)(void*); // offset 0x28, size 0x4 }; -class xMat4x3 : public xMat3x3 { +class xMat4x3 : public xMat3x3 +{ // total size: 0x40 public: class xVec3 pos; // offset 0x30, size 0xC unsigned int pad3; // offset 0x3C, size 0x4 }; -class NPCSndTrax { +class NPCSndTrax +{ // total size: 0xC public: enum en_NPC_SOUND typ_sound; // offset 0x0, size 0x4 - char * nam_sound; // offset 0x4, size 0x4 + char* nam_sound; // offset 0x4, size 0x4 unsigned int aid_sound; // offset 0x8, size 0x4 }; -class NPCMsg { +class NPCMsg +{ // total size: 0x44 public: enum en_NPC_MSG_ID msgid; // offset 0x0, size 0x4 unsigned int sendto; // offset 0x4, size 0x4 unsigned int from; // offset 0x8, size 0x4 enum en_NPC_MSG_DATA infotype; // offset 0xC, size 0x4 - union { // inferred + union + { // inferred class NPCSysEvent sysevent; // offset 0x10, size 0x28 class NPCBlastInfo blastarea; // offset 0x10, size 0x14 class NPCChatInfo chatter; // offset 0x10, size 0x10 @@ -672,11 +742,12 @@ class NPCMsg { class NPCMountInfo mountdata; // offset 0x10, size 0x8 class NPCAreaInfo areadata; // offset 0x10, size 0x10 }; - void * attached; // offset 0x38, size 0x4 - class NPCMsg * next; // offset 0x3C, size 0x4 + void* attached; // offset 0x38, size 0x4 + class NPCMsg* next; // offset 0x3C, size 0x4 float tmr_delay; // offset 0x40, size 0x4 }; -class zFrag { +class zFrag +{ // total size: 0x84 public: enum zFragType type; // offset 0x0, size 0x4 @@ -684,32 +755,35 @@ class zFrag { float delay; // offset 0x64, size 0x4 float alivetime; // offset 0x68, size 0x4 float lifetime; // offset 0x6C, size 0x4 - void (* update)(class zFrag *, float); // offset 0x70, size 0x4 - class xModelInstance * parent[2]; // offset 0x74, size 0x8 - class zFrag * prev; // offset 0x7C, size 0x4 - class zFrag * next; // offset 0x80, size 0x4 + void (*update)(class zFrag*, float); // offset 0x70, size 0x4 + class xModelInstance* parent[2]; // offset 0x74, size 0x8 + class zFrag* prev; // offset 0x7C, size 0x4 + class zFrag* next; // offset 0x80, size 0x4 }; -struct /* @anon1 */ { +struct /* @anon1 */ +{ // total size: 0x10 }; -class RpAtomic { +class RpAtomic +{ // total size: 0x70 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 - class RwResEntry * repEntry; // offset 0x14, size 0x4 - class RpGeometry * geometry; // offset 0x18, size 0x4 + class RwResEntry* repEntry; // offset 0x14, size 0x4 + class RpGeometry* geometry; // offset 0x18, size 0x4 class RwSphere boundingSphere; // offset 0x1C, size 0x10 class RwSphere worldBoundingSphere; // offset 0x2C, size 0x10 - class RpClump * clump; // offset 0x3C, size 0x4 + class RpClump* clump; // offset 0x3C, size 0x4 class RwLLLink inClumpLink; // offset 0x40, size 0x8 - class RpAtomic * (* renderCallBack)(class RpAtomic *); // offset 0x48, size 0x4 + class RpAtomic* (*renderCallBack)(class RpAtomic*); // offset 0x48, size 0x4 class RpInterpolator interpolator; // offset 0x4C, size 0x14 unsigned short renderFrame; // offset 0x60, size 0x2 unsigned short pad; // offset 0x62, size 0x2 class RwLinkList llWorldSectorsInAtomic; // offset 0x64, size 0x8 - class RxPipeline * pipeline; // offset 0x6C, size 0x4 + class RxPipeline* pipeline; // offset 0x6C, size 0x4 }; -class RwFrustumPlane { +class RwFrustumPlane +{ // total size: 0x14 public: class RwPlane plane; // offset 0x0, size 0x10 @@ -718,30 +792,34 @@ class RwFrustumPlane { unsigned char closestZ; // offset 0x12, size 0x1 unsigned char pad; // offset 0x13, size 0x1 }; -class xParGroup { +class xParGroup +{ // total size: 0x0 }; -class RwTexDictionary { +class RwTexDictionary +{ // total size: 0x18 public: class RwObject object; // offset 0x0, size 0x8 class RwLinkList texturesInDict; // offset 0x8, size 0x8 class RwLLLink lInInstance; // offset 0x10, size 0x8 }; -class xGridBound { +class xGridBound +{ // total size: 0x14 public: - void * data; // offset 0x0, size 0x4 + void* data; // offset 0x0, size 0x4 unsigned short gx; // offset 0x4, size 0x2 unsigned short gz; // offset 0x6, size 0x2 unsigned char ingrid; // offset 0x8, size 0x1 unsigned char oversize; // offset 0x9, size 0x1 unsigned char deleted; // offset 0xA, size 0x1 unsigned char gpad; // offset 0xB, size 0x1 - class xGridBound * * head; // offset 0xC, size 0x4 - class xGridBound * next; // offset 0x10, size 0x4 + class xGridBound** head; // offset 0xC, size 0x4 + class xGridBound* next; // offset 0x10, size 0x4 }; -class xEntDrive { +class xEntDrive +{ // total size: 0x7C public: unsigned int flags; // offset 0x0, size 0x4 @@ -751,9 +829,9 @@ class xEntDrive { float tm; // offset 0x10, size 0x4 float tmr; // offset 0x14, size 0x4 float s; // offset 0x18, size 0x4 - class xEnt * odriver; // offset 0x1C, size 0x4 - class xEnt * driver; // offset 0x20, size 0x4 - class xEnt * driven; // offset 0x24, size 0x4 + class xEnt* odriver; // offset 0x1C, size 0x4 + class xEnt* driver; // offset 0x20, size 0x4 + class xEnt* driven; // offset 0x24, size 0x4 class xVec3 op; // offset 0x28, size 0xC class xVec3 p; // offset 0x34, size 0xC class xVec3 q; // offset 0x40, size 0xC @@ -761,7 +839,8 @@ class xEntDrive { class xVec3 dloc; // offset 0x50, size 0xC class tri_data tri; // offset 0x5C, size 0x20 }; -class zFragAsset { +class zFragAsset +{ // total size: 0x18 public: enum zFragType type; // offset 0x0, size 0x4 @@ -770,39 +849,43 @@ class zFragAsset { float lifetime; // offset 0x10, size 0x4 float delay; // offset 0x14, size 0x4 }; -class RxNodeDefinition { +class RxNodeDefinition +{ // total size: 0x40 public: - char * name; // offset 0x0, size 0x4 + char* name; // offset 0x0, size 0x4 class RxNodeMethods nodeMethods; // offset 0x4, size 0x1C class RxIoSpec io; // offset 0x20, size 0x14 unsigned int pipelineNodePrivateDataSize; // offset 0x34, size 0x4 enum RxNodeDefEditable editable; // offset 0x38, size 0x4 signed int InputPipesCnt; // offset 0x3C, size 0x4 }; -class RwResEntry { +class RwResEntry +{ // total size: 0x18 public: class RwLLLink link; // offset 0x0, size 0x8 signed int size; // offset 0x8, size 0x4 - void * owner; // offset 0xC, size 0x4 - class RwResEntry * * ownerRef; // offset 0x10, size 0x4 - void (* destroyNotify)(class RwResEntry *); // offset 0x14, size 0x4 + void* owner; // offset 0xC, size 0x4 + class RwResEntry** ownerRef; // offset 0x10, size 0x4 + void (*destroyNotify)(class RwResEntry*); // offset 0x14, size 0x4 }; -class xAnimFile { +class xAnimFile +{ // total size: 0x20 public: - class xAnimFile * Next; // offset 0x0, size 0x4 - char * Name; // offset 0x4, size 0x4 + class xAnimFile* Next; // offset 0x0, size 0x4 + char* Name; // offset 0x4, size 0x4 unsigned int ID; // offset 0x8, size 0x4 unsigned int FileFlags; // offset 0xC, size 0x4 float Duration; // offset 0x10, size 0x4 float TimeOffset; // offset 0x14, size 0x4 unsigned short BoneCount; // offset 0x18, size 0x2 unsigned char NumAnims[2]; // offset 0x1A, size 0x2 - void * * RawData; // offset 0x1C, size 0x4 + void** RawData; // offset 0x1C, size 0x4 }; -enum en_trantype { +enum en_trantype +{ GOAL_TRAN_NONE = 0, GOAL_TRAN_SET = 1, GOAL_TRAN_PUSH = 2, @@ -815,7 +898,8 @@ enum en_trantype { GOAL_TRAN_NOMORE = 9, GOAL_TRAN_FORCE = 2147483647, }; -enum en_NPC_MSG_DATA { +enum en_NPC_MSG_DATA +{ NPC_MDAT_BLANK = 0, NPC_MDAT_SYSEVENT = 1, NPC_MDAT_BLAST = 2, @@ -830,21 +914,25 @@ enum en_NPC_MSG_DATA { NPC_MDAT_NOMORE = 11, NPC_MDAT_FORCE = 2147483647, }; -class asset_type { +class asset_type +{ // total size: 0x0 }; -class xEntMotionMPData { +class xEntMotionMPData +{ // total size: 0xC public: unsigned int flags; // offset 0x0, size 0x4 unsigned int mp_id; // offset 0x4, size 0x4 float speed; // offset 0x8, size 0x4 }; -class xParEmitterPropsAsset : public xBaseAsset { +class xParEmitterPropsAsset : public xBaseAsset +{ // total size: 0x138 public: unsigned int parSysID; // offset 0x8, size 0x4 - union { // inferred + union + { // inferred class xParInterp rate; // offset 0xC, size 0x14 class xParInterp value[1]; // offset 0xC, size 0x14 }; @@ -859,18 +947,21 @@ class xParEmitterPropsAsset : public xBaseAsset { unsigned int emit_limit; // offset 0x130, size 0x4 float emit_limit_reset_time; // offset 0x134, size 0x4 }; -class RwPlane { +class RwPlane +{ // total size: 0x10 public: class RwV3d normal; // offset 0x0, size 0xC float distance; // offset 0xC, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x4 public: - class xVec3 * verts; // offset 0x0, size 0x4 + class xVec3* verts; // offset 0x0, size 0x4 }; -class xEntERData { +class xEntERData +{ // total size: 0x44 public: class xVec3 a; // offset 0x0, size 0xC @@ -885,23 +976,27 @@ class xEntERData { float ert; // offset 0x3C, size 0x4 signed int state; // offset 0x40, size 0x4 }; -class xJSPHeader { +class xJSPHeader +{ // total size: 0x18 public: char idtag[4]; // offset 0x0, size 0x4 unsigned int version; // offset 0x4, size 0x4 unsigned int jspNodeCount; // offset 0x8, size 0x4 - class RpClump * clump; // offset 0xC, size 0x4 - class xClumpCollBSPTree * colltree; // offset 0x10, size 0x4 - class xJSPNodeInfo * jspNodeList; // offset 0x14, size 0x4 + class RpClump* clump; // offset 0xC, size 0x4 + class xClumpCollBSPTree* colltree; // offset 0x10, size 0x4 + class xJSPNodeInfo* jspNodeList; // offset 0x14, size 0x4 }; -class zLightning { +class zLightning +{ // total size: 0x234 public: unsigned int type; // offset 0x0, size 0x4 unsigned int flags; // offset 0x4, size 0x4 - union { // inferred - class /* @class */ { + union + { // inferred + class /* @class */ + { // total size: 0x220 public: class xVec3 base_point[16]; // offset 0x0, size 0xC0 @@ -911,14 +1006,16 @@ class zLightning { float arc_height; // offset 0x184, size 0x4 class xVec3 arc_normal; // offset 0x188, size 0xC float thickness[16]; // offset 0x194, size 0x40 - union { // inferred + union + { // inferred class _tagLightningLine line; // offset 0x1D4, size 0x4 class _tagLightningRot rot; // offset 0x1D4, size 0x48 class _tagLightningZeus zeus; // offset 0x1D4, size 0xC }; float rand_radius; // offset 0x21C, size 0x4 } legacy; // offset 0x8, size 0x220 - class /* @class */ { + class /* @class */ + { // total size: 0x58 public: class xVec3 endPoint[2]; // offset 0x0, size 0x18 @@ -937,26 +1034,28 @@ class zLightning { float time_left; // offset 0x22C, size 0x4 float time_total; // offset 0x230, size 0x4 }; -class xAnimSingle { +class xAnimSingle +{ // total size: 0x40 public: unsigned int SingleFlags; // offset 0x0, size 0x4 - class xAnimState * State; // offset 0x4, size 0x4 + class xAnimState* State; // offset 0x4, size 0x4 float Time; // offset 0x8, size 0x4 float CurrentSpeed; // offset 0xC, size 0x4 float BilinearLerp[2]; // offset 0x10, size 0x8 - class xAnimEffect * Effect; // offset 0x18, size 0x4 + class xAnimEffect* Effect; // offset 0x18, size 0x4 unsigned int ActiveCount; // offset 0x1C, size 0x4 float LastTime; // offset 0x20, size 0x4 - class xAnimActiveEffect * ActiveList; // offset 0x24, size 0x4 - class xAnimPlay * Play; // offset 0x28, size 0x4 - class xAnimTransition * Sync; // offset 0x2C, size 0x4 - class xAnimTransition * Tran; // offset 0x30, size 0x4 - class xAnimSingle * Blend; // offset 0x34, size 0x4 + class xAnimActiveEffect* ActiveList; // offset 0x24, size 0x4 + class xAnimPlay* Play; // offset 0x28, size 0x4 + class xAnimTransition* Sync; // offset 0x2C, size 0x4 + class xAnimTransition* Tran; // offset 0x30, size 0x4 + class xAnimSingle* Blend; // offset 0x34, size 0x4 float BlendFactor; // offset 0x38, size 0x4 unsigned int pad; // offset 0x3C, size 0x4 }; -class xLinkAsset { +class xLinkAsset +{ // total size: 0x20 public: unsigned short srcEvent; // offset 0x0, size 0x2 @@ -966,27 +1065,30 @@ class xLinkAsset { unsigned int paramWidgetAssetID; // offset 0x18, size 0x4 unsigned int chkAssetID; // offset 0x1C, size 0x4 }; -class RxPipelineNode { +class RxPipelineNode +{ // total size: 0x28 public: - class RxNodeDefinition * nodeDef; // offset 0x0, size 0x4 + class RxNodeDefinition* nodeDef; // offset 0x0, size 0x4 unsigned int numOutputs; // offset 0x4, size 0x4 - unsigned int * outputs; // offset 0x8, size 0x4 - class RxPipelineCluster * * slotClusterRefs; // offset 0xC, size 0x4 - unsigned int * slotsContinue; // offset 0x10, size 0x4 - void * privateData; // offset 0x14, size 0x4 - unsigned int * inputToClusterSlot; // offset 0x18, size 0x4 - class RxPipelineNodeTopSortData * topSortData; // offset 0x1C, size 0x4 - void * initializationData; // offset 0x20, size 0x4 + unsigned int* outputs; // offset 0x8, size 0x4 + class RxPipelineCluster** slotClusterRefs; // offset 0xC, size 0x4 + unsigned int* slotsContinue; // offset 0x10, size 0x4 + void* privateData; // offset 0x14, size 0x4 + unsigned int* inputToClusterSlot; // offset 0x18, size 0x4 + class RxPipelineNodeTopSortData* topSortData; // offset 0x1C, size 0x4 + void* initializationData; // offset 0x20, size 0x4 unsigned int initializationDataSize; // offset 0x24, size 0x4 }; -class xGroupAsset : public xBaseAsset { +class xGroupAsset : public xBaseAsset +{ // total size: 0xC public: unsigned short itemCount; // offset 0x8, size 0x2 unsigned short groupFlags; // offset 0xA, size 0x2 }; -class RpVertexNormal { +class RpVertexNormal +{ // total size: 0x4 public: signed char x; // offset 0x0, size 0x1 @@ -994,14 +1096,16 @@ class RpVertexNormal { signed char z; // offset 0x2, size 0x1 unsigned char pad; // offset 0x3, size 0x1 }; -class tri_data { +class tri_data +{ // total size: 0xC public: unsigned int index; // offset 0x0, size 0x4 float r; // offset 0x4, size 0x4 float d; // offset 0x8, size 0x4 }; -class RpLight { +class RpLight +{ // total size: 0x40 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 @@ -1013,21 +1117,25 @@ class RpLight { unsigned short lightFrame; // offset 0x3C, size 0x2 unsigned short pad; // offset 0x3E, size 0x2 }; -class callback { +class callback +{ // total size: 0x4 }; -class _tagiPad { +class _tagiPad +{ // total size: 0x4 public: signed int port; // offset 0x0, size 0x4 }; -class NPCChatInfo { +class NPCChatInfo +{ // total size: 0x10 public: class xVec3 pos_chat; // offset 0x0, size 0xC float tym_chat; // offset 0xC, size 0x4 }; -class zNPCFish : public zNPCVillager { +class zNPCFish : public zNPCVillager +{ // total size: 0x348 public: class NPCTarget tgt_robonear; // offset 0x2B0, size 0x14 @@ -1035,7 +1143,8 @@ class zNPCFish : public zNPCVillager { float tmr_checkagain; // offset 0x2C8, size 0x4 class xEntDrive raw_drvdata; // offset 0x2CC, size 0x7C }; -class zNPCGoalCommon : public xGoal { +class zNPCGoalCommon : public xGoal +{ // total size: 0x4C public: signed int flg_npcgauto; // offset 0x3C, size 0x4 @@ -1044,78 +1153,87 @@ class zNPCGoalCommon : public xGoal { signed int flg_info : 16; // offset 0x48, size 0x4 signed int flg_user : 16; // offset 0x48, size 0x4 }; -class xAnimState { +class xAnimState +{ // total size: 0x4C public: - class xAnimState * Next; // offset 0x0, size 0x4 - char * Name; // offset 0x4, size 0x4 + class xAnimState* Next; // offset 0x0, size 0x4 + char* Name; // offset 0x4, size 0x4 unsigned int ID; // offset 0x8, size 0x4 unsigned int Flags; // offset 0xC, size 0x4 unsigned int UserFlags; // offset 0x10, size 0x4 float Speed; // offset 0x14, size 0x4 - class xAnimFile * Data; // offset 0x18, size 0x4 - class xAnimEffect * Effects; // offset 0x1C, size 0x4 - class xAnimTransitionList * Default; // offset 0x20, size 0x4 - class xAnimTransitionList * List; // offset 0x24, size 0x4 - float * BoneBlend; // offset 0x28, size 0x4 - float * TimeSnap; // offset 0x2C, size 0x4 + class xAnimFile* Data; // offset 0x18, size 0x4 + class xAnimEffect* Effects; // offset 0x1C, size 0x4 + class xAnimTransitionList* Default; // offset 0x20, size 0x4 + class xAnimTransitionList* List; // offset 0x24, size 0x4 + float* BoneBlend; // offset 0x28, size 0x4 + float* TimeSnap; // offset 0x2C, size 0x4 float FadeRecip; // offset 0x30, size 0x4 - unsigned short * FadeOffset; // offset 0x34, size 0x4 - void * CallbackData; // offset 0x38, size 0x4 - class xAnimMultiFile * MultiFile; // offset 0x3C, size 0x4 - void (* BeforeEnter)(class xAnimPlay *, class xAnimState *); // offset 0x40, size 0x4 - void (* StateCallback)(class xAnimState *, class xAnimSingle *, void *); // offset 0x44, size 0x4 - void (* BeforeAnimMatrices)(class xAnimPlay *, class xQuat *, class xVec3 *, signed int); // offset 0x48, size 0x4 -}; -class zShrapnelAsset { + unsigned short* FadeOffset; // offset 0x34, size 0x4 + void* CallbackData; // offset 0x38, size 0x4 + class xAnimMultiFile* MultiFile; // offset 0x3C, size 0x4 + void (*BeforeEnter)(class xAnimPlay*, class xAnimState*); // offset 0x40, size 0x4 + void (*StateCallback)(class xAnimState*, class xAnimSingle*, void*); // offset 0x44, size 0x4 + void (*BeforeAnimMatrices)(class xAnimPlay*, class xQuat*, class xVec3*, + signed int); // offset 0x48, size 0x4 +}; +class zShrapnelAsset +{ // total size: 0xC public: signed int fassetCount; // offset 0x0, size 0x4 unsigned int shrapnelID; // offset 0x4, size 0x4 - void (* initCB)(class zShrapnelAsset *, class xModelInstance *, class xVec3 *, void (*)(class zFrag *, class zFragAsset *)); // offset 0x8, size 0x4 + void (*initCB)(class zShrapnelAsset*, class xModelInstance*, class xVec3*, + void (*)(class zFrag*, class zFragAsset*)); // offset 0x8, size 0x4 }; -class RxCluster { +class RxCluster +{ // total size: 0x1C public: unsigned short flags; // offset 0x0, size 0x2 unsigned short stride; // offset 0x2, size 0x2 - void * data; // offset 0x4, size 0x4 - void * currentData; // offset 0x8, size 0x4 + void* data; // offset 0x4, size 0x4 + void* currentData; // offset 0x8, size 0x4 unsigned int numAlloced; // offset 0xC, size 0x4 unsigned int numUsed; // offset 0x10, size 0x4 - class RxPipelineCluster * clusterRef; // offset 0x14, size 0x4 + class RxPipelineCluster* clusterRef; // offset 0x14, size 0x4 unsigned int attributes; // offset 0x18, size 0x4 }; -class RxPipeline { +class RxPipeline +{ // total size: 0x34 public: signed int locked; // offset 0x0, size 0x4 unsigned int numNodes; // offset 0x4, size 0x4 - class RxPipelineNode * nodes; // offset 0x8, size 0x4 + class RxPipelineNode* nodes; // offset 0x8, size 0x4 unsigned int packetNumClusterSlots; // offset 0xC, size 0x4 enum rxEmbeddedPacketState embeddedPacketState; // offset 0x10, size 0x4 - class RxPacket * embeddedPacket; // offset 0x14, size 0x4 + class RxPacket* embeddedPacket; // offset 0x14, size 0x4 unsigned int numInputRequirements; // offset 0x18, size 0x4 - class RxPipelineRequiresCluster * inputRequirements; // offset 0x1C, size 0x4 - void * superBlock; // offset 0x20, size 0x4 + class RxPipelineRequiresCluster* inputRequirements; // offset 0x1C, size 0x4 + void* superBlock; // offset 0x20, size 0x4 unsigned int superBlockSize; // offset 0x24, size 0x4 unsigned int entryPoint; // offset 0x28, size 0x4 unsigned int pluginId; // offset 0x2C, size 0x4 unsigned int pluginData; // offset 0x30, size 0x4 }; -class xFactoryInst : public RyzMemData { +class xFactoryInst : public RyzMemData +{ // total size: 0xC public: signed int itemType; // offset 0x0, size 0x4 - class xFactoryInst * nextprod; // offset 0x4, size 0x4 - class xFactoryInst * prevprod; // offset 0x8, size 0x4 + class xFactoryInst* nextprod; // offset 0x4, size 0x4 + class xFactoryInst* prevprod; // offset 0x8, size 0x4 }; -class _tagEmitOffsetPoint { +class _tagEmitOffsetPoint +{ // total size: 0xC public: class xVec3 offset; // offset 0x0, size 0xC }; -class xScene { +class xScene +{ // total size: 0x70 public: unsigned int sceneID; // offset 0x0, size 0x4 @@ -1135,28 +1253,30 @@ class xScene { unsigned short num_stats_allocd; // offset 0x24, size 0x2 unsigned short num_dyns_allocd; // offset 0x26, size 0x2 unsigned short num_npcs_allocd; // offset 0x28, size 0x2 - class xEnt * * trigs; // offset 0x2C, size 0x4 - class xEnt * * stats; // offset 0x30, size 0x4 - class xEnt * * dyns; // offset 0x34, size 0x4 - class xEnt * * npcs; // offset 0x38, size 0x4 - class xEnt * * act_ents; // offset 0x3C, size 0x4 - class xEnt * * nact_ents; // offset 0x40, size 0x4 - class xEnv * env; // offset 0x44, size 0x4 + class xEnt** trigs; // offset 0x2C, size 0x4 + class xEnt** stats; // offset 0x30, size 0x4 + class xEnt** dyns; // offset 0x34, size 0x4 + class xEnt** npcs; // offset 0x38, size 0x4 + class xEnt** act_ents; // offset 0x3C, size 0x4 + class xEnt** nact_ents; // offset 0x40, size 0x4 + class xEnv* env; // offset 0x44, size 0x4 class xMemPool mempool; // offset 0x48, size 0x1C - class xBase * (* resolvID)(unsigned int); // offset 0x64, size 0x4 - char * (* base2Name)(class xBase *); // offset 0x68, size 0x4 - char * (* id2Name)(unsigned int); // offset 0x6C, size 0x4 + class xBase* (*resolvID)(unsigned int); // offset 0x64, size 0x4 + char* (*base2Name)(class xBase*); // offset 0x68, size 0x4 + char* (*id2Name)(unsigned int); // offset 0x6C, size 0x4 }; -class xEntShadow { +class xEntShadow +{ // total size: 0x28 public: class xVec3 pos; // offset 0x0, size 0xC class xVec3 vec; // offset 0xC, size 0xC - class RpAtomic * shadowModel; // offset 0x18, size 0x4 + class RpAtomic* shadowModel; // offset 0x18, size 0x4 float dst_cast; // offset 0x1C, size 0x4 float radius[2]; // offset 0x20, size 0x8 }; -class xSFXAsset : public xBaseAsset { +class xSFXAsset : public xBaseAsset +{ // total size: 0x30 public: unsigned short flagsSFX; // offset 0x8, size 0x2 @@ -1172,27 +1292,32 @@ class xSFXAsset : public xBaseAsset { float innerRadius; // offset 0x28, size 0x4 float outerRadius; // offset 0x2C, size 0x4 }; -class RxPipelineNodeParam { +class RxPipelineNodeParam +{ // total size: 0x8 public: - void * dataParam; // offset 0x0, size 0x4 - class RxHeap * heap; // offset 0x4, size 0x4 + void* dataParam; // offset 0x0, size 0x4 + class RxHeap* heap; // offset 0x4, size 0x4 }; -class xCutsceneBreak { +class xCutsceneBreak +{ // total size: 0x8 public: float Time; // offset 0x0, size 0x4 signed int Index; // offset 0x4, size 0x4 }; -class zFragLocInfo { +class zFragLocInfo +{ // total size: 0x20 public: - union { // inferred + union + { // inferred class zFragBone bone; // offset 0x0, size 0x10 class xModelTag tag; // offset 0x0, size 0x20 }; }; -enum say_enum { +enum say_enum +{ INVALID_SAY = -1, SAY_B101_01 = 0, SAY_B101_02 = 1, @@ -1267,45 +1392,50 @@ enum say_enum { SAY_HIT_LAST = 70, MAX_SAY = 71, }; -class xMovePoint : public xBase { +class xMovePoint : public xBase +{ // total size: 0x30 public: - class xMovePointAsset * asset; // offset 0x10, size 0x4 - class xVec3 * pos; // offset 0x14, size 0x4 - class xMovePoint * * nodes; // offset 0x18, size 0x4 - class xMovePoint * prev; // offset 0x1C, size 0x4 + class xMovePointAsset* asset; // offset 0x10, size 0x4 + class xVec3* pos; // offset 0x14, size 0x4 + class xMovePoint** nodes; // offset 0x18, size 0x4 + class xMovePoint* prev; // offset 0x1C, size 0x4 unsigned int node_wt_sum; // offset 0x20, size 0x4 unsigned char on; // offset 0x24, size 0x1 unsigned char pad[2]; // offset 0x25, size 0x2 float delay; // offset 0x28, size 0x4 - class xSpline3 * spl; // offset 0x2C, size 0x4 + class xSpline3* spl; // offset 0x2C, size 0x4 }; -class xBehaveMgr : public RyzMemData { +class xBehaveMgr : public RyzMemData +{ // total size: 0x18 public: - class xFactory * goalFactory; // offset 0x0, size 0x4 - class xPsyche * psypool; // offset 0x4, size 0x4 + class xFactory* goalFactory; // offset 0x0, size 0x4 + class xPsyche* psypool; // offset 0x4, size 0x4 class st_XORDEREDARRAY psylist; // offset 0x8, size 0x10 }; -class RxPacket { +class RxPacket +{ // total size: 0x30 public: unsigned short flags; // offset 0x0, size 0x2 unsigned short numClusters; // offset 0x2, size 0x2 - class RxPipeline * pipeline; // offset 0x4, size 0x4 - unsigned int * inputToClusterSlot; // offset 0x8, size 0x4 - unsigned int * slotsContinue; // offset 0xC, size 0x4 - class RxPipelineCluster * * slotClusterRefs; // offset 0x10, size 0x4 + class RxPipeline* pipeline; // offset 0x4, size 0x4 + unsigned int* inputToClusterSlot; // offset 0x8, size 0x4 + unsigned int* slotsContinue; // offset 0xC, size 0x4 + class RxPipelineCluster** slotClusterRefs; // offset 0x10, size 0x4 class RxCluster clusters[1]; // offset 0x14, size 0x1C }; -class tri_data : public tri_data { +class tri_data : public tri_data +{ // total size: 0x20 public: class xVec3 loc; // offset 0xC, size 0xC float yaw; // offset 0x18, size 0x4 - class xCollis * coll; // offset 0x1C, size 0x4 + class xCollis* coll; // offset 0x1C, size 0x4 }; -enum en_NPC_GOAL_SPOT { +enum en_NPC_GOAL_SPOT +{ NPC_GSPOT_START = 32, NPC_GSPOT_RESUME = 33, NPC_GSPOT_FINISH = 34, @@ -1316,7 +1446,8 @@ enum en_NPC_GOAL_SPOT { NPC_GSPOT_NOMORE = 39, NPC_GSPOT_FORCEINT = 2147483647, }; -class RpInterpolator { +class RpInterpolator +{ // total size: 0x14 public: signed int flags; // offset 0x0, size 0x4 @@ -1326,20 +1457,24 @@ class RpInterpolator { float recipTime; // offset 0xC, size 0x4 float position; // offset 0x10, size 0x4 }; -class xAnimMultiFileBase { +class xAnimMultiFileBase +{ // total size: 0x4 public: unsigned int Count; // offset 0x0, size 0x4 }; -class zNPCMerManChair : public zNPCVillager { +class zNPCMerManChair : public zNPCVillager +{ // total size: 0x2B4 public: signed int flg_mermanchair; // offset 0x2B0, size 0x4 }; -class zNPCGoalCheer : public zNPCGoalLoopAnim { +class zNPCGoalCheer : public zNPCGoalLoopAnim +{ // total size: 0x6C }; -class zJumpParam { +class zJumpParam +{ // total size: 0x10 public: float PeakHeight; // offset 0x0, size 0x4 @@ -1347,7 +1482,8 @@ class zJumpParam { float TimeHold; // offset 0x8, size 0x4 float ImpulseVel; // offset 0xC, size 0x4 }; -class xMovePointAsset : public xBaseAsset { +class xMovePointAsset : public xBaseAsset +{ // total size: 0x28 public: class xVec3 pos; // offset 0x8, size 0xC @@ -1361,39 +1497,46 @@ class xMovePointAsset : public xBaseAsset { float zoneRadius; // offset 0x20, size 0x4 float arenaRadius; // offset 0x24, size 0x4 }; -class zFragSound { +class zFragSound +{ // total size: 0x14 public: - class zFragSoundAsset * fasset; // offset 0x0, size 0x4 + class zFragSoundAsset* fasset; // offset 0x0, size 0x4 class xVec3 location; // offset 0x4, size 0xC unsigned int soundID; // offset 0x10, size 0x4 }; -class xAnimEffect { +class xAnimEffect +{ // total size: 0x14 public: - class xAnimEffect * Next; // offset 0x0, size 0x4 + class xAnimEffect* Next; // offset 0x0, size 0x4 unsigned int Flags; // offset 0x4, size 0x4 float StartTime; // offset 0x8, size 0x4 float EndTime; // offset 0xC, size 0x4 - unsigned int (* Callback)(unsigned int, class xAnimActiveEffect *, class xAnimSingle *, void *); // offset 0x10, size 0x4 + unsigned int (*Callback)(unsigned int, class xAnimActiveEffect*, class xAnimSingle*, + void*); // offset 0x10, size 0x4 }; -class zNPCLassoInfo { +class zNPCLassoInfo +{ // total size: 0x18 public: enum en_LASSO_STATUS stage; // offset 0x0, size 0x4 - class xEnt * lassoee; // offset 0x4, size 0x4 - class xAnimState * holdGuideAnim; // offset 0x8, size 0x4 - class xModelInstance * holdGuideModel; // offset 0xC, size 0x4 - class xAnimState * grabGuideAnim; // offset 0x10, size 0x4 - class xModelInstance * grabGuideModel; // offset 0x14, size 0x4 -}; -class xAnimTransition { + class xEnt* lassoee; // offset 0x4, size 0x4 + class xAnimState* holdGuideAnim; // offset 0x8, size 0x4 + class xModelInstance* holdGuideModel; // offset 0xC, size 0x4 + class xAnimState* grabGuideAnim; // offset 0x10, size 0x4 + class xModelInstance* grabGuideModel; // offset 0x14, size 0x4 +}; +class xAnimTransition +{ // total size: 0x2C public: - class xAnimTransition * Next; // offset 0x0, size 0x4 - class xAnimState * Dest; // offset 0x4, size 0x4 - unsigned int (* Conditional)(class xAnimTransition *, class xAnimSingle *, void *); // offset 0x8, size 0x4 - unsigned int (* Callback)(class xAnimTransition *, class xAnimSingle *, void *); // offset 0xC, size 0x4 + class xAnimTransition* Next; // offset 0x0, size 0x4 + class xAnimState* Dest; // offset 0x4, size 0x4 + unsigned int (*Conditional)(class xAnimTransition*, class xAnimSingle*, + void*); // offset 0x8, size 0x4 + unsigned int (*Callback)(class xAnimTransition*, class xAnimSingle*, + void*); // offset 0xC, size 0x4 unsigned int Flags; // offset 0x10, size 0x4 unsigned int UserFlags; // offset 0x14, size 0x4 float SrcTime; // offset 0x18, size 0x4 @@ -1401,16 +1544,18 @@ class xAnimTransition { unsigned short Priority; // offset 0x20, size 0x2 unsigned short QueuePriority; // offset 0x22, size 0x2 float BlendRecip; // offset 0x24, size 0x4 - unsigned short * BlendOffset; // offset 0x28, size 0x4 + unsigned short* BlendOffset; // offset 0x28, size 0x4 }; -class RxPipelineRequiresCluster { +class RxPipelineRequiresCluster +{ // total size: 0xC public: - class RxClusterDefinition * clusterDef; // offset 0x0, size 0x4 + class RxClusterDefinition* clusterDef; // offset 0x0, size 0x4 enum RxClusterValidityReq rqdOrOpt; // offset 0x4, size 0x4 unsigned int slotIndex; // offset 0x8, size 0x4 }; -enum en_pendtype { +enum en_pendtype +{ PEND_TRAN_NONE = 0, PEND_TRAN_SET = 1, PEND_TRAN_PUSH = 2, @@ -1421,14 +1566,16 @@ enum en_pendtype { PEND_TRAN_INPROG = 7, PEND_TRAN_NOMORE = 8, }; -enum RwFogType { +enum RwFogType +{ rwFOGTYPENAFOGTYPE = 0, rwFOGTYPELINEAR = 1, rwFOGTYPEEXPONENTIAL = 2, rwFOGTYPEEXPONENTIAL2 = 3, rwFOGTYPEFORCEENUMSIZEINT = 2147483647, }; -class /* @class */ { +class /* @class */ +{ // total size: 0x220 public: class xVec3 base_point[16]; // offset 0x0, size 0xC0 @@ -1438,44 +1585,50 @@ class /* @class */ { float arc_height; // offset 0x184, size 0x4 class xVec3 arc_normal; // offset 0x188, size 0xC float thickness[16]; // offset 0x194, size 0x40 - union { // inferred + union + { // inferred class _tagLightningLine line; // offset 0x1D4, size 0x4 class _tagLightningRot rot; // offset 0x1D4, size 0x48 class _tagLightningZeus zeus; // offset 0x1D4, size 0xC }; float rand_radius; // offset 0x21C, size 0x4 }; -class XCSNNosey { +class XCSNNosey +{ // total size: 0xC public: - void * userdata; // offset 0x4, size 0x4 + void* userdata; // offset 0x4, size 0x4 signed int flg_nosey; // offset 0x8, size 0x4 }; -class xCutsceneMgr : public xBase { +class xCutsceneMgr : public xBase +{ // total size: 0x24 public: - class xCutsceneMgrAsset * tasset; // offset 0x10, size 0x4 - class xCutscene * csn; // offset 0x14, size 0x4 + class xCutsceneMgrAsset* tasset; // offset 0x10, size 0x4 + class xCutscene* csn; // offset 0x14, size 0x4 unsigned int stop; // offset 0x18, size 0x4 - class xCutsceneZbufferHack * zhack; // offset 0x1C, size 0x4 + class xCutsceneZbufferHack* zhack; // offset 0x1C, size 0x4 float oldfov; // offset 0x20, size 0x4 }; -class xSurface : public xBase { +class xSurface : public xBase +{ // total size: 0x28 public: unsigned int idx; // offset 0x10, size 0x4 unsigned int type; // offset 0x14, size 0x4 - union { // inferred + union + { // inferred unsigned int mat_idx; // offset 0x18, size 0x4 - class xEnt * ent; // offset 0x18, size 0x4 - void * obj; // offset 0x18, size 0x4 + class xEnt* ent; // offset 0x18, size 0x4 + void* obj; // offset 0x18, size 0x4 }; float friction; // offset 0x1C, size 0x4 unsigned char state; // offset 0x20, size 0x1 unsigned char pad[3]; // offset 0x21, size 0x3 - void * moprops; // offset 0x24, size 0x4 + void* moprops; // offset 0x24, size 0x4 }; -class iColor_tag { +class iColor_tag +{ // total size: 0x4 public: unsigned char r; // offset 0x0, size 0x1 @@ -1483,28 +1636,31 @@ class iColor_tag { unsigned char b; // offset 0x2, size 0x1 unsigned char a; // offset 0x3, size 0x1 }; -class zFragProjectileAsset : public zFragAsset { +class zFragProjectileAsset : public zFragAsset +{ // total size: 0x90 public: unsigned int modelInfoID; // offset 0x18, size 0x4 - class RpAtomic * modelFile; // offset 0x1C, size 0x4 + class RpAtomic* modelFile; // offset 0x1C, size 0x4 class zFragLocation launch; // offset 0x20, size 0x24 class zFragLocation vel; // offset 0x44, size 0x24 float bounce; // offset 0x68, size 0x4 signed int maxBounces; // offset 0x6C, size 0x4 unsigned int flags; // offset 0x70, size 0x4 unsigned int childID; // offset 0x74, size 0x4 - class zShrapnelAsset * child; // offset 0x78, size 0x4 + class zShrapnelAsset* child; // offset 0x78, size 0x4 float minScale; // offset 0x7C, size 0x4 float maxScale; // offset 0x80, size 0x4 unsigned int scaleCurveID; // offset 0x84, size 0x4 - class xCurveAsset * scaleCurve; // offset 0x88, size 0x4 + class xCurveAsset* scaleCurve; // offset 0x88, size 0x4 float gravity; // offset 0x8C, size 0x4 }; -struct /* @anon2 */ { +struct /* @anon2 */ +{ // total size: 0xD0 }; -class zFragSoundAsset : public zFragAsset { +class zFragSoundAsset : public zFragAsset +{ // total size: 0x4C public: unsigned int assetID; // offset 0x18, size 0x4 @@ -1513,20 +1669,23 @@ class zFragSoundAsset : public zFragAsset { float innerRadius; // offset 0x44, size 0x4 float outerRadius; // offset 0x48, size 0x4 }; -class xCollis { +class xCollis +{ // total size: 0x50 public: unsigned int flags; // offset 0x0, size 0x4 unsigned int oid; // offset 0x4, size 0x4 - void * optr; // offset 0x8, size 0x4 - class xModelInstance * mptr; // offset 0xC, size 0x4 + void* optr; // offset 0x8, size 0x4 + class xModelInstance* mptr; // offset 0xC, size 0x4 float dist; // offset 0x10, size 0x4 class xVec3 norm; // offset 0x14, size 0xC class xVec3 tohit; // offset 0x20, size 0xC class xVec3 depen; // offset 0x2C, size 0xC class xVec3 hdng; // offset 0x38, size 0xC - union { // inferred - class /* @class */ { + union + { // inferred + class /* @class */ + { // total size: 0xC public: float t; // offset 0x0, size 0x4 @@ -1536,10 +1695,12 @@ class xCollis { class tri_data tri; // offset 0x44, size 0xC }; }; -class zEntHangable { +class zEntHangable +{ // total size: 0x0 }; -class RwRGBAReal { +class RwRGBAReal +{ // total size: 0x10 public: float red; // offset 0x0, size 0x4 @@ -1547,10 +1708,12 @@ class RwRGBAReal { float blue; // offset 0x8, size 0x4 float alpha; // offset 0xC, size 0x4 }; -class zParEmitter : public xParEmitter { +class zParEmitter : public xParEmitter +{ // total size: 0x78 }; -class xEntMotionMechData { +class xEntMotionMechData +{ // total size: 0x2C public: unsigned char type; // offset 0x0, size 0x1 @@ -1568,14 +1731,16 @@ class xEntMotionMechData { float ret_delay; // offset 0x24, size 0x4 float post_ret_delay; // offset 0x28, size 0x4 }; -class RwObjectHasFrame { +class RwObjectHasFrame +{ // total size: 0x14 public: class RwObject object; // offset 0x0, size 0x8 class RwLLLink lFrame; // offset 0x8, size 0x8 - class RwObjectHasFrame * (* sync)(class RwObjectHasFrame *); // offset 0x10, size 0x4 + class RwObjectHasFrame* (*sync)(class RwObjectHasFrame*); // offset 0x10, size 0x4 }; -class xCutsceneMgrAsset : public xBaseAsset { +class xCutsceneMgrAsset : public xBaseAsset +{ // total size: 0xC8 public: unsigned int cutsceneAssetID; // offset 0x8, size 0x4 @@ -1585,52 +1750,58 @@ class xCutsceneMgrAsset : public xBaseAsset { float endTime[15]; // offset 0x50, size 0x3C unsigned int emitID[15]; // offset 0x8C, size 0x3C }; -class xListItem { +class xListItem +{ // total size: 0xC public: signed int flg_travFilter; // offset 0x0, size 0x4 - class xGoal * next; // offset 0x4, size 0x4 - class xGoal * prev; // offset 0x8, size 0x4 + class xGoal* next; // offset 0x4, size 0x4 + class xGoal* prev; // offset 0x8, size 0x4 }; -enum en_NPC_CARRY_STATE { +enum en_NPC_CARRY_STATE +{ zNPCCARRY_NONE = 0, zNPCCARRY_PICKUP = 1, zNPCCARRY_THROW = 2, zNPCCARRY_ATTEMPTPICKUP = 3, zNPCCARRY_FORCEINT = 2147483647, }; -class NPCSpawnInfo { +class NPCSpawnInfo +{ // total size: 0x18 public: class xVec3 pos_spawn; // offset 0x0, size 0xC - class zMovePoint * nav_firstMovepoint; // offset 0xC, size 0x4 - class zMovePoint * nav_spawnReference; // offset 0x10, size 0x4 + class zMovePoint* nav_firstMovepoint; // offset 0xC, size 0x4 + class zMovePoint* nav_spawnReference; // offset 0x10, size 0x4 signed int spawnSuccess; // offset 0x14, size 0x4 }; -class xFFX { +class xFFX +{ // total size: 0x0 }; -class RpPolygon { +class RpPolygon +{ // total size: 0x8 public: unsigned short matIndex; // offset 0x0, size 0x2 unsigned short vertIndex[3]; // offset 0x2, size 0x6 }; -class xCutscene { +class xCutscene +{ // total size: 0x138 public: - class xCutsceneInfo * Info; // offset 0x0, size 0x4 - class xCutsceneData * Data; // offset 0x4, size 0x4 - unsigned int * TimeChunkOffs; // offset 0x8, size 0x4 - unsigned int * Visibility; // offset 0xC, size 0x4 - class xCutsceneBreak * BreakList; // offset 0x10, size 0x4 - class xCutsceneTime * Play; // offset 0x14, size 0x4 - class xCutsceneTime * Stream; // offset 0x18, size 0x4 + class xCutsceneInfo* Info; // offset 0x0, size 0x4 + class xCutsceneData* Data; // offset 0x4, size 0x4 + unsigned int* TimeChunkOffs; // offset 0x8, size 0x4 + unsigned int* Visibility; // offset 0xC, size 0x4 + class xCutsceneBreak* BreakList; // offset 0x10, size 0x4 + class xCutsceneTime* Play; // offset 0x14, size 0x4 + class xCutsceneTime* Stream; // offset 0x18, size 0x4 unsigned int Waiting; // offset 0x1C, size 0x4 unsigned int BadReadPause; // offset 0x20, size 0x4 float BadReadSpeed; // offset 0x24, size 0x4 - void * RawBuf; // offset 0x28, size 0x4 - void * AlignBuf; // offset 0x2C, size 0x4 + void* RawBuf; // offset 0x28, size 0x4 + void* AlignBuf; // offset 0x2C, size 0x4 float Time; // offset 0x30, size 0x4 float CamTime; // offset 0x34, size 0x4 unsigned int PlayIndex; // offset 0x38, size 0x4 @@ -1642,169 +1813,192 @@ class xCutscene { unsigned int Opened; // offset 0x50, size 0x4 class tag_xFile File; // offset 0x54, size 0xB4 signed int AsyncID; // offset 0x108, size 0x4 - void * MemBuf; // offset 0x10C, size 0x4 - void * MemCurr; // offset 0x110, size 0x4 + void* MemBuf; // offset 0x10C, size 0x4 + void* MemCurr; // offset 0x110, size 0x4 unsigned int SndStarted; // offset 0x114, size 0x4 unsigned int SndNumChannel; // offset 0x118, size 0x4 unsigned int SndChannelReq[2]; // offset 0x11C, size 0x8 unsigned int SndAssetID[2]; // offset 0x124, size 0x8 unsigned int SndHandle[2]; // offset 0x12C, size 0x8 - class XCSNNosey * cb_nosey; // offset 0x134, size 0x4 + class XCSNNosey* cb_nosey; // offset 0x134, size 0x4 }; -class xPEVCyl { +class xPEVCyl +{ // total size: 0xC public: float height; // offset 0x0, size 0x4 float radius; // offset 0x4, size 0x4 float deflection; // offset 0x8, size 0x4 }; -class RwLinkList { +class RwLinkList +{ // total size: 0x8 public: class RwLLLink link; // offset 0x0, size 0x8 }; -struct /* @anon3 */ { +struct /* @anon3 */ +{ // total size: 0xD0 }; -enum RwCullMode { +enum RwCullMode +{ rwCULLMODENACULLMODE = 0, rwCULLMODECULLNONE = 1, rwCULLMODECULLBACK = 2, rwCULLMODECULLFRONT = 3, rwCULLMODEFORCEENUMSIZEINT = 2147483647, }; -class xAnimPlay { +class xAnimPlay +{ // total size: 0x20 public: - class xAnimPlay * Next; // offset 0x0, size 0x4 + class xAnimPlay* Next; // offset 0x0, size 0x4 unsigned short NumSingle; // offset 0x4, size 0x2 unsigned short BoneCount; // offset 0x6, size 0x2 - class xAnimSingle * Single; // offset 0x8, size 0x4 - void * Object; // offset 0xC, size 0x4 - class xAnimTable * Table; // offset 0x10, size 0x4 - class xMemPool * Pool; // offset 0x14, size 0x4 - class xModelInstance * ModelInst; // offset 0x18, size 0x4 - void (* BeforeAnimMatrices)(class xAnimPlay *, class xQuat *, class xVec3 *, signed int); // offset 0x1C, size 0x4 -}; -class xEntPenData { + class xAnimSingle* Single; // offset 0x8, size 0x4 + void* Object; // offset 0xC, size 0x4 + class xAnimTable* Table; // offset 0x10, size 0x4 + class xMemPool* Pool; // offset 0x14, size 0x4 + class xModelInstance* ModelInst; // offset 0x18, size 0x4 + void (*BeforeAnimMatrices)(class xAnimPlay*, class xQuat*, class xVec3*, + signed int); // offset 0x1C, size 0x4 +}; +class xEntPenData +{ // total size: 0x50 public: class xVec3 top; // offset 0x0, size 0xC float w; // offset 0xC, size 0x4 class xMat4x3 omat; // offset 0x10, size 0x40 }; -class zPlatform : public zEnt { +class zPlatform : public zEnt +{ // total size: 0x210 public: - class xPlatformAsset * passet; // offset 0xD4, size 0x4 + class xPlatformAsset* passet; // offset 0xD4, size 0x4 class xEntMotion motion; // offset 0xE0, size 0x80 unsigned short state; // offset 0x160, size 0x2 unsigned short plat_flags; // offset 0x162, size 0x2 float tmr; // offset 0x164, size 0x4 signed int ctr; // offset 0x168, size 0x4 - class xMovePoint * src; // offset 0x16C, size 0x4 - class xModelInstance * am; // offset 0x170, size 0x4 - class xModelInstance * bm; // offset 0x174, size 0x4 + class xMovePoint* src; // offset 0x16C, size 0x4 + class xModelInstance* am; // offset 0x170, size 0x4 + class xModelInstance* bm; // offset 0x174, size 0x4 signed int moving; // offset 0x178, size 0x4 class xEntDrive drv; // offset 0x17C, size 0x7C - class zPlatFMRunTime * fmrt; // offset 0x1F8, size 0x4 + class zPlatFMRunTime* fmrt; // offset 0x1F8, size 0x4 float pauseMult; // offset 0x1FC, size 0x4 float pauseDelta; // offset 0x200, size 0x4 }; -class zCutsceneMgr : public xCutsceneMgr { +class zCutsceneMgr : public xCutsceneMgr +{ // total size: 0x24 }; -class _tagxRumble { +class _tagxRumble +{ // total size: 0x10 public: enum _tagRumbleType type; // offset 0x0, size 0x4 float seconds; // offset 0x4, size 0x4 - class _tagxRumble * next; // offset 0x8, size 0x4 + class _tagxRumble* next; // offset 0x8, size 0x4 signed short active; // offset 0xC, size 0x2 unsigned short fxflags; // offset 0xE, size 0x2 }; -class /* @class */ { +class /* @class */ +{ // total size: 0xC public: float t; // offset 0x0, size 0x4 float u; // offset 0x4, size 0x4 float v; // offset 0x8, size 0x4 }; -class xCoef3 { +class xCoef3 +{ // total size: 0x30 public: class xCoef x; // offset 0x0, size 0x10 class xCoef y; // offset 0x10, size 0x10 class xCoef z; // offset 0x20, size 0x10 }; -class zGlobals : public xGlobals { +class zGlobals : public xGlobals +{ // total size: 0x2050 public: class zPlayerGlobals player; // offset 0x700, size 0x1940 - class zAssetPickupTable * pickupTable; // offset 0x2040, size 0x4 - class zCutsceneMgr * cmgr; // offset 0x2044, size 0x4 - class zScene * sceneCur; // offset 0x2048, size 0x4 - class zScene * scenePreload; // offset 0x204C, size 0x4 + class zAssetPickupTable* pickupTable; // offset 0x2040, size 0x4 + class zCutsceneMgr* cmgr; // offset 0x2044, size 0x4 + class zScene* sceneCur; // offset 0x2048, size 0x4 + class zScene* scenePreload; // offset 0x204C, size 0x4 }; -class RpMaterialList { +class RpMaterialList +{ // total size: 0xC public: - class RpMaterial * * materials; // offset 0x0, size 0x4 + class RpMaterial** materials; // offset 0x0, size 0x4 signed int numMaterials; // offset 0x4, size 0x4 signed int space; // offset 0x8, size 0x4 }; -class xLightKit { +class xLightKit +{ // total size: 0x10 public: unsigned int tagID; // offset 0x0, size 0x4 unsigned int groupID; // offset 0x4, size 0x4 unsigned int lightCount; // offset 0x8, size 0x4 - class xLightKitLight * lightList; // offset 0xC, size 0x4 + class xLightKitLight* lightList; // offset 0xC, size 0x4 }; -class zFragLocation { +class zFragLocation +{ // total size: 0x24 public: enum zFragLocType type; // offset 0x0, size 0x4 class zFragLocInfo info; // offset 0x4, size 0x20 }; -class xDynAsset : public xBaseAsset { +class xDynAsset : public xBaseAsset +{ // total size: 0x10 public: unsigned int type; // offset 0x8, size 0x4 unsigned short version; // offset 0xC, size 0x2 unsigned short handle; // offset 0xE, size 0x2 }; -class zNPCSandyBikini : public zNPCVillager { +class zNPCSandyBikini : public zNPCVillager +{ // total size: 0x2B4 public: float tmr_leakCycle; // offset 0x2B0, size 0x4 }; -class xAnimMultiFile : public xAnimMultiFileBase { +class xAnimMultiFile : public xAnimMultiFileBase +{ // total size: 0xC public: class xAnimMultiFileEntry Files[1]; // offset 0x4, size 0x8 }; -class RpMaterial { +class RpMaterial +{ // total size: 0x1C public: - class RwTexture * texture; // offset 0x0, size 0x4 + class RwTexture* texture; // offset 0x0, size 0x4 class RwRGBA color; // offset 0x4, size 0x4 - class RxPipeline * pipeline; // offset 0x8, size 0x4 + class RxPipeline* pipeline; // offset 0x8, size 0x4 class RwSurfaceProperties surfaceProps; // offset 0xC, size 0xC signed short refCount; // offset 0x18, size 0x2 signed short pad; // offset 0x1A, size 0x2 }; -class zAssetPickupTable { +class zAssetPickupTable +{ // total size: 0x0 }; -class xModelPool { +class xModelPool +{ // total size: 0xC public: - class xModelPool * Next; // offset 0x0, size 0x4 + class xModelPool* Next; // offset 0x0, size 0x4 unsigned int NumMatrices; // offset 0x4, size 0x4 - class xModelInstance * List; // offset 0x8, size 0x4 + class xModelInstance* List; // offset 0x8, size 0x4 }; -class zGlobalSettings { +class zGlobalSettings +{ // total size: 0x150 public: unsigned short AnalogMin; // offset 0x0, size 0x2 @@ -1894,7 +2088,8 @@ class zGlobalSettings { unsigned char PowerUp[2]; // offset 0x149, size 0x2 unsigned char InitialPowerUp[2]; // offset 0x14B, size 0x2 }; -class xParInterp { +class xParInterp +{ // total size: 0x14 public: float val[2]; // offset 0x0, size 0x8 @@ -1902,42 +2097,48 @@ class xParInterp { float freq; // offset 0xC, size 0x4 float oofreq; // offset 0x10, size 0x4 }; -class rxHeapFreeBlock { +class rxHeapFreeBlock +{ // total size: 0x8 public: unsigned int size; // offset 0x0, size 0x4 - class rxHeapBlockHeader * ptr; // offset 0x4, size 0x4 + class rxHeapBlockHeader* ptr; // offset 0x4, size 0x4 }; -class xSpline3 { +class xSpline3 +{ // total size: 0x2C public: unsigned short type; // offset 0x0, size 0x2 unsigned short flags; // offset 0x2, size 0x2 unsigned int N; // offset 0x4, size 0x4 unsigned int allocN; // offset 0x8, size 0x4 - class xVec3 * points; // offset 0xC, size 0x4 - float * time; // offset 0x10, size 0x4 - class xVec3 * p12; // offset 0x14, size 0x4 - class xVec3 * bctrl; // offset 0x18, size 0x4 - float * knot; // offset 0x1C, size 0x4 - class xCoef3 * coef; // offset 0x20, size 0x4 + class xVec3* points; // offset 0xC, size 0x4 + float* time; // offset 0x10, size 0x4 + class xVec3* p12; // offset 0x14, size 0x4 + class xVec3* bctrl; // offset 0x18, size 0x4 + float* knot; // offset 0x1C, size 0x4 + class xCoef3* coef; // offset 0x20, size 0x4 unsigned int arcSample; // offset 0x24, size 0x4 - float * arcLength; // offset 0x28, size 0x4 + float* arcLength; // offset 0x28, size 0x4 }; -struct /* @anon4 */ { +struct /* @anon4 */ +{ // total size: 0xD0 }; -class xParSys { +class xParSys +{ // total size: 0x0 }; -class RxPipelineNodeTopSortData { +class RxPipelineNodeTopSortData +{ // total size: 0xC public: unsigned int numIns; // offset 0x0, size 0x4 unsigned int numInsVisited; // offset 0x4, size 0x4 - class rxReq * req; // offset 0x8, size 0x4 + class rxReq* req; // offset 0x8, size 0x4 }; -class _tagxPad { +class _tagxPad +{ // total size: 0x148 public: unsigned char value[22]; // offset 0x0, size 0x16 @@ -1960,16 +2161,19 @@ class _tagxPad { float down_tmr[22]; // offset 0xC0, size 0x58 class analog_data analog[2]; // offset 0x118, size 0x30 }; -class RwV2d { +class RwV2d +{ // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class RyzMemData { +class RyzMemData +{ // total size: 0x1 }; -class xEntOrbitData { +class xEntOrbitData +{ // total size: 0x28 public: class xVec3 orig; // offset 0x0, size 0xC @@ -1979,24 +2183,28 @@ class xEntOrbitData { float p; // offset 0x20, size 0x4 float w; // offset 0x24, size 0x4 }; -class xClumpCollBSPTree { +class xClumpCollBSPTree +{ // total size: 0x10 public: unsigned int numBranchNodes; // offset 0x0, size 0x4 - class xClumpCollBSPBranchNode * branchNodes; // offset 0x4, size 0x4 + class xClumpCollBSPBranchNode* branchNodes; // offset 0x4, size 0x4 unsigned int numTriangles; // offset 0x8, size 0x4 - class xClumpCollBSPTriangle * triangles; // offset 0xC, size 0x4 + class xClumpCollBSPTriangle* triangles; // offset 0xC, size 0x4 }; -class zNPCBubbleBuddy : public zNPCFish { +class zNPCBubbleBuddy : public zNPCFish +{ // total size: 0x348 }; -class xEntBoulder { +class xEntBoulder +{ // total size: 0x0 }; -class zFragShockwave { +class zFragShockwave +{ // total size: 0x38 public: - class zFragShockwaveAsset * fasset; // offset 0x0, size 0x4 + class zFragShockwaveAsset* fasset; // offset 0x0, size 0x4 float currSize; // offset 0x4, size 0x4 float currVelocity; // offset 0x8, size 0x4 float deltVelocity; // offset 0xC, size 0x4 @@ -2005,74 +2213,84 @@ class zFragShockwave { float currColor[4]; // offset 0x18, size 0x10 float deltColor[4]; // offset 0x28, size 0x10 }; -class xFactory : public RyzMemData { +class xFactory : public RyzMemData +{ // total size: 0x34 public: - class XGOFTypeInfo * infopool; // offset 0x0, size 0x4 + class XGOFTypeInfo* infopool; // offset 0x0, size 0x4 class st_XORDEREDARRAY infolist; // offset 0x4, size 0x10 - class xFactoryInst * products; // offset 0x14, size 0x4 + class xFactoryInst* products; // offset 0x14, size 0x4 class RyzMemGrow growContextData; // offset 0x18, size 0x1C }; -class zPlayerLassoInfo { +class zPlayerLassoInfo +{ // total size: 0x120 public: - class xEnt * target; // offset 0x0, size 0x4 + class xEnt* target; // offset 0x0, size 0x4 float dist; // offset 0x4, size 0x4 unsigned char destroy; // offset 0x8, size 0x1 unsigned char targetGuide; // offset 0x9, size 0x1 float lassoRot; // offset 0xC, size 0x4 - class xEnt * swingTarget; // offset 0x10, size 0x4 - class xEnt * releasedSwing; // offset 0x14, size 0x4 + class xEnt* swingTarget; // offset 0x10, size 0x4 + class xEnt* releasedSwing; // offset 0x14, size 0x4 float copterTime; // offset 0x18, size 0x4 signed int canCopter; // offset 0x1C, size 0x4 class zLasso lasso; // offset 0x20, size 0xFC - class xAnimState * zeroAnim; // offset 0x11C, size 0x4 + class xAnimState* zeroAnim; // offset 0x11C, size 0x4 }; -class xModelAssetParam { +class xModelAssetParam +{ // total size: 0x0 }; -class zScene : public xScene { +class zScene : public xScene +{ // total size: 0x2C8 public: - class _zPortal * pendingPortal; // offset 0x70, size 0x4 - union { // inferred + class _zPortal* pendingPortal; // offset 0x70, size 0x4 + union + { // inferred unsigned int num_ents; // offset 0x74, size 0x4 unsigned int num_base; // offset 0x74, size 0x4 }; - union { // inferred - class xBase * * base; // offset 0x78, size 0x4 - class zEnt * * ents; // offset 0x78, size 0x4 + union + { // inferred + class xBase** base; // offset 0x78, size 0x4 + class zEnt** ents; // offset 0x78, size 0x4 }; unsigned int num_update_base; // offset 0x7C, size 0x4 - class xBase * * update_base; // offset 0x80, size 0x4 + class xBase** update_base; // offset 0x80, size 0x4 unsigned int baseCount[72]; // offset 0x84, size 0x120 - class xBase * baseList[72]; // offset 0x1A4, size 0x120 - class _zEnv * zen; // offset 0x2C4, size 0x4 + class xBase* baseList[72]; // offset 0x1A4, size 0x120 + class _zEnv* zen; // offset 0x2C4, size 0x4 }; -class _tagLightningLine { +class _tagLightningLine +{ // total size: 0x4 public: float unused; // offset 0x0, size 0x4 }; -class rxHeapSuperBlockDescriptor { +class rxHeapSuperBlockDescriptor +{ // total size: 0xC public: - void * start; // offset 0x0, size 0x4 + void* start; // offset 0x0, size 0x4 unsigned int size; // offset 0x4, size 0x4 - class rxHeapSuperBlockDescriptor * next; // offset 0x8, size 0x4 + class rxHeapSuperBlockDescriptor* next; // offset 0x8, size 0x4 }; -class RyzMemGrow { +class RyzMemGrow +{ // total size: 0x1C public: signed int flg_grow; // offset 0x0, size 0x4 signed int amt; // offset 0x4, size 0x4 - char * ptr; // offset 0x8, size 0x4 - class xBase * user; // offset 0xC, size 0x4 + char* ptr; // offset 0x8, size 0x4 + class xBase* user; // offset 0xC, size 0x4 signed int amt_last; // offset 0x10, size 0x4 - char * ptr_last; // offset 0x14, size 0x4 - class xBase * user_last; // offset 0x18, size 0x4 + char* ptr_last; // offset 0x14, size 0x4 + class xBase* user_last; // offset 0x18, size 0x4 }; -class tag_iFile { +class tag_iFile +{ // total size: 0x90 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2081,7 +2299,8 @@ class tag_iFile { signed int offset; // offset 0x88, size 0x4 signed int length; // offset 0x8C, size 0x4 }; -class RpClump { +class RpClump +{ // total size: 0x2C public: class RwObject object; // offset 0x0, size 0x8 @@ -2089,9 +2308,10 @@ class RpClump { class RwLinkList lightList; // offset 0x10, size 0x8 class RwLinkList cameraList; // offset 0x18, size 0x8 class RwLLLink inWorldLink; // offset 0x20, size 0x8 - class RpClump * (* callback)(class RpClump *, void *); // offset 0x28, size 0x4 + class RpClump* (*callback)(class RpClump*, void*); // offset 0x28, size 0x4 }; -class NPCSndQueue { +class NPCSndQueue +{ // total size: 0x14 public: unsigned int sndDirect; // offset 0x0, size 0x4 @@ -2100,7 +2320,8 @@ class NPCSndQueue { float tmr_delay; // offset 0xC, size 0x4 float radius; // offset 0x10, size 0x4 }; -class zFragShockwaveAsset : public zFragAsset { +class zFragShockwaveAsset : public zFragAsset +{ // total size: 0x54 public: unsigned int modelInfoID; // offset 0x18, size 0x4 @@ -2113,7 +2334,8 @@ class zFragShockwaveAsset : public zFragAsset { float birthColor[4]; // offset 0x34, size 0x10 float deathColor[4]; // offset 0x44, size 0x10 }; -class RpGeometry { +class RpGeometry +{ // total size: 0x60 public: class RwObject object; // offset 0x0, size 0x8 @@ -2125,35 +2347,38 @@ class RpGeometry { signed int numMorphTargets; // offset 0x18, size 0x4 signed int numTexCoordSets; // offset 0x1C, size 0x4 class RpMaterialList matList; // offset 0x20, size 0xC - class RpTriangle * triangles; // offset 0x2C, size 0x4 - class RwRGBA * preLitLum; // offset 0x30, size 0x4 - class RwTexCoords * texCoords[8]; // offset 0x34, size 0x20 - class RpMeshHeader * mesh; // offset 0x54, size 0x4 - class RwResEntry * repEntry; // offset 0x58, size 0x4 - class RpMorphTarget * morphTarget; // offset 0x5C, size 0x4 -}; -class xGroup : public xBase { + class RpTriangle* triangles; // offset 0x2C, size 0x4 + class RwRGBA* preLitLum; // offset 0x30, size 0x4 + class RwTexCoords* texCoords[8]; // offset 0x34, size 0x20 + class RpMeshHeader* mesh; // offset 0x54, size 0x4 + class RwResEntry* repEntry; // offset 0x58, size 0x4 + class RpMorphTarget* morphTarget; // offset 0x5C, size 0x4 +}; +class xGroup : public xBase +{ // total size: 0x20 public: - class xGroupAsset * asset; // offset 0x10, size 0x4 - class xBase * * item; // offset 0x14, size 0x4 + class xGroupAsset* asset; // offset 0x10, size 0x4 + class xBase** item; // offset 0x14, size 0x4 unsigned int last_index; // offset 0x18, size 0x4 signed int flg_group; // offset 0x1C, size 0x4 }; -class xClumpCollBSPVertInfo { +class xClumpCollBSPVertInfo +{ // total size: 0x4 public: unsigned short atomIndex; // offset 0x0, size 0x2 unsigned short meshVertIndex; // offset 0x2, size 0x2 }; -class zLedgeGrabParams { +class zLedgeGrabParams +{ // total size: 0x380 public: float animGrab; // offset 0x0, size 0x4 float zdist; // offset 0x4, size 0x4 class xVec3 tranTable[60]; // offset 0x8, size 0x2D0 signed int tranCount; // offset 0x2D8, size 0x4 - class xEnt * optr; // offset 0x2DC, size 0x4 + class xEnt* optr; // offset 0x2DC, size 0x4 class xMat4x3 omat; // offset 0x2E0, size 0x40 float y0det; // offset 0x320, size 0x4 float dydet; // offset 0x324, size 0x4 @@ -2171,16 +2396,18 @@ class zLedgeGrabParams { float startrot; // offset 0x36C, size 0x4 float endrot; // offset 0x370, size 0x4 }; -class xUpdateCullEnt { +class xUpdateCullEnt +{ // total size: 0x10 public: unsigned short index; // offset 0x0, size 0x2 signed short groupIndex; // offset 0x2, size 0x2 - unsigned int (* cb)(void *, void *); // offset 0x4, size 0x4 - void * cbdata; // offset 0x8, size 0x4 - class xUpdateCullEnt * nextInGroup; // offset 0xC, size 0x4 + unsigned int (*cb)(void*, void*); // offset 0x4, size 0x4 + void* cbdata; // offset 0x8, size 0x4 + class xUpdateCullEnt* nextInGroup; // offset 0xC, size 0x4 }; -class xPEEntBone { +class xPEEntBone +{ // total size: 0x18 public: unsigned char flags; // offset 0x0, size 0x1 @@ -2191,7 +2418,8 @@ class xPEEntBone { float radius; // offset 0x10, size 0x4 float deflection; // offset 0x14, size 0x4 }; -class xEntNPCAsset { +class xEntNPCAsset +{ // total size: 0x18 public: signed int npcFlags; // offset 0x0, size 0x4 @@ -2201,29 +2429,31 @@ class xEntNPCAsset { unsigned int taskWidgetPrime; // offset 0x10, size 0x4 unsigned int taskWidgetSecond; // offset 0x14, size 0x4 }; -class RpWorldSector { +class RpWorldSector +{ // total size: 0x90 public: signed int type; // offset 0x0, size 0x4 - class RpPolygon * polygons; // offset 0x4, size 0x4 - class RwV3d * vertices; // offset 0x8, size 0x4 - class RpVertexNormal * normals; // offset 0xC, size 0x4 - class RwTexCoords * texCoords[8]; // offset 0x10, size 0x20 - class RwRGBA * preLitLum; // offset 0x30, size 0x4 - class RwResEntry * repEntry; // offset 0x34, size 0x4 + class RpPolygon* polygons; // offset 0x4, size 0x4 + class RwV3d* vertices; // offset 0x8, size 0x4 + class RpVertexNormal* normals; // offset 0xC, size 0x4 + class RwTexCoords* texCoords[8]; // offset 0x10, size 0x20 + class RwRGBA* preLitLum; // offset 0x30, size 0x4 + class RwResEntry* repEntry; // offset 0x34, size 0x4 class RwLinkList collAtomicsInWorldSector; // offset 0x38, size 0x8 class RwLinkList noCollAtomicsInWorldSector; // offset 0x40, size 0x8 class RwLinkList lightsInWorldSector; // offset 0x48, size 0x8 class RwBBox boundingBox; // offset 0x50, size 0x18 class RwBBox tightBoundingBox; // offset 0x68, size 0x18 - class RpMeshHeader * mesh; // offset 0x80, size 0x4 - class RxPipeline * pipeline; // offset 0x84, size 0x4 + class RpMeshHeader* mesh; // offset 0x80, size 0x4 + class RxPipeline* pipeline; // offset 0x84, size 0x4 unsigned short matListWindowBase; // offset 0x88, size 0x2 unsigned short numVertices; // offset 0x8A, size 0x2 unsigned short numPolygons; // offset 0x8C, size 0x2 unsigned short pad; // offset 0x8E, size 0x2 }; -class zPlatFMRunTime { +class zPlatFMRunTime +{ // total size: 0x124 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2234,12 +2464,14 @@ class zPlatFMRunTime { float vms[12]; // offset 0xC4, size 0x30 float dss[12]; // offset 0xF4, size 0x30 }; -class zEnt : public xEnt { +class zEnt : public xEnt +{ // total size: 0xD4 public: - class xAnimTable * atbl; // offset 0xD0, size 0x4 + class xAnimTable* atbl; // offset 0xD0, size 0x4 }; -enum en_NPC_MSG_ID { +enum en_NPC_MSG_ID +{ NPC_MID_NONE = 0, NPC_MID_SYSEVENT = 1, NPC_MID_RESPAWN = 2, @@ -2276,7 +2508,8 @@ enum en_NPC_MSG_ID { NPC_MID_NOMORE = 33, NPC_MID_FORCE = 2147483647, }; -class xClumpCollBSPBranchNode { +class xClumpCollBSPBranchNode +{ // total size: 0x10 public: unsigned int leftInfo; // offset 0x0, size 0x4 @@ -2284,7 +2517,8 @@ class xClumpCollBSPBranchNode { float leftValue; // offset 0x8, size 0x4 float rightValue; // offset 0xC, size 0x4 }; -enum zFragType { +enum zFragType +{ eFragInactive = 0, eFragGroup = 1, eFragShrapnel = 2, @@ -2296,17 +2530,19 @@ enum zFragType { eFragCount = 8, eFragForceSize = 2147483647, }; -class xEntMotion { +class xEntMotion +{ // total size: 0x80 public: - class xEntMotionAsset * asset; // offset 0x0, size 0x4 + class xEntMotionAsset* asset; // offset 0x0, size 0x4 unsigned char type; // offset 0x4, size 0x1 unsigned char pad; // offset 0x5, size 0x1 unsigned short flags; // offset 0x6, size 0x2 float t; // offset 0x8, size 0x4 float tmr; // offset 0xC, size 0x4 float d; // offset 0x10, size 0x4 - union { // inferred + union + { // inferred class xEntERData er; // offset 0x20, size 0x44 class xEntOrbitData orb; // offset 0x20, size 0x28 class xEntSplineData spl; // offset 0x20, size 0x4 @@ -2314,20 +2550,23 @@ class xEntMotion { class xEntMechData mech; // offset 0x20, size 0x4C class xEntPenData pen; // offset 0x20, size 0x50 }; - class xEnt * owner; // offset 0x70, size 0x4 - class xEnt * target; // offset 0x74, size 0x4 + class xEnt* owner; // offset 0x70, size 0x4 + class xEnt* target; // offset 0x74, size 0x4 }; -class tag_xFile { +class tag_xFile +{ // total size: 0xB4 public: char relname[32]; // offset 0x0, size 0x20 class tag_iFile ps; // offset 0x20, size 0x90 - void * user_data; // offset 0xB0, size 0x4 + void* user_data; // offset 0xB0, size 0x4 }; -class xPSYNote { +class xPSYNote +{ // total size: 0x4 }; -class zNPCSettings : public xDynAsset { +class zNPCSettings : public xDynAsset +{ // total size: 0x2C public: enum en_npcbtyp basisType; // offset 0x10, size 0x4 @@ -2345,27 +2584,31 @@ class zNPCSettings : public xDynAsset { float duploSpawnDelay; // offset 0x24, size 0x4 signed int duploSpawnLifeMax; // offset 0x28, size 0x4 }; -class RxHeap { +class RxHeap +{ // total size: 0x1C public: unsigned int superBlockSize; // offset 0x0, size 0x4 - class rxHeapSuperBlockDescriptor * head; // offset 0x4, size 0x4 - class rxHeapBlockHeader * headBlock; // offset 0x8, size 0x4 - class rxHeapFreeBlock * freeBlocks; // offset 0xC, size 0x4 + class rxHeapSuperBlockDescriptor* head; // offset 0x4, size 0x4 + class rxHeapBlockHeader* headBlock; // offset 0x8, size 0x4 + class rxHeapFreeBlock* freeBlocks; // offset 0xC, size 0x4 unsigned int entriesAlloced; // offset 0x10, size 0x4 unsigned int entriesUsed; // offset 0x14, size 0x4 signed int dirty; // offset 0x18, size 0x4 }; -class xPlatformAsset { +class xPlatformAsset +{ // total size: 0x0 }; -class RwBBox { +class RwBBox +{ // total size: 0x18 public: class RwV3d sup; // offset 0x0, size 0xC class RwV3d inf; // offset 0xC, size 0xC }; -class RwRGBA { +class RwRGBA +{ // total size: 0x4 public: unsigned char red; // offset 0x0, size 0x1 @@ -2373,28 +2616,33 @@ class RwRGBA { unsigned char blue; // offset 0x2, size 0x1 unsigned char alpha; // offset 0x3, size 0x1 }; -class xClumpCollBSPTriangle { +class xClumpCollBSPTriangle +{ // total size: 0x8 public: - class /* @class */ { + class /* @class */ + { // total size: 0x4 public: - union { // inferred + union + { // inferred class xClumpCollBSPVertInfo i; // offset 0x0, size 0x4 - class RwV3d * p; // offset 0x0, size 0x4 + class RwV3d* p; // offset 0x0, size 0x4 }; } v; // offset 0x0, size 0x4 unsigned char flags; // offset 0x4, size 0x1 unsigned char platData; // offset 0x5, size 0x1 unsigned short matIndex; // offset 0x6, size 0x2 }; -class xEntMotionAsset { +class xEntMotionAsset +{ // total size: 0x30 public: unsigned char type; // offset 0x0, size 0x1 unsigned char use_banking; // offset 0x1, size 0x1 unsigned short flags; // offset 0x2, size 0x2 - union { // inferred + union + { // inferred class xEntMotionERData er; // offset 0x4, size 0x28 class xEntMotionOrbitData orb; // offset 0x4, size 0x18 class xEntMotionSplineData spl; // offset 0x4, size 0x4 @@ -2403,49 +2651,57 @@ class xEntMotionAsset { class xEntMotionPenData pen; // offset 0x4, size 0x14 }; }; -class RpMorphTarget { +class RpMorphTarget +{ // total size: 0x1C public: - class RpGeometry * parentGeom; // offset 0x0, size 0x4 + class RpGeometry* parentGeom; // offset 0x0, size 0x4 class RwSphere boundingSphere; // offset 0x4, size 0x10 - class RwV3d * verts; // offset 0x14, size 0x4 - class RwV3d * normals; // offset 0x18, size 0x4 + class RwV3d* verts; // offset 0x14, size 0x4 + class RwV3d* normals; // offset 0x18, size 0x4 }; -class NPCTargetInfo { +class NPCTargetInfo +{ // total size: 0x10 public: - class xBase * bas_tgt; // offset 0x0, size 0x4 + class xBase* bas_tgt; // offset 0x0, size 0x4 class xVec3 pos_tgt; // offset 0x4, size 0xC }; -enum _zPlayerWallJumpState { +enum _zPlayerWallJumpState +{ k_WALLJUMP_NOT = 0, k_WALLJUMP_LAUNCH = 1, k_WALLJUMP_FLIGHT = 2, k_WALLJUMP_LAND = 3, }; -class xCurveAsset { +class xCurveAsset +{ // total size: 0x0 }; -class xQuat { +class xQuat +{ // total size: 0x10 public: class xVec3 v; // offset 0x0, size 0xC float s; // offset 0xC, size 0x4 }; -class RwV3d { +class RwV3d +{ // total size: 0xC public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 float z; // offset 0x8, size 0x4 }; -class RwTexCoords { +class RwTexCoords +{ // total size: 0x8 public: float u; // offset 0x0, size 0x4 float v; // offset 0x4, size 0x4 }; -class zNPCGoalLoopAnim : public zNPCGoalCommon { +class zNPCGoalLoopAnim : public zNPCGoalCommon +{ // total size: 0x6C public: signed int flg_loopanim; // offset 0x4C, size 0x4 @@ -2455,16 +2711,18 @@ class zNPCGoalLoopAnim : public zNPCGoalCommon { unsigned int origAnimFlags; // offset 0x64, size 0x4 unsigned int animWeMolested; // offset 0x68, size 0x4 }; -class rxHeapBlockHeader { +class rxHeapBlockHeader +{ // total size: 0x20 public: - class rxHeapBlockHeader * prev; // offset 0x0, size 0x4 - class rxHeapBlockHeader * next; // offset 0x4, size 0x4 + class rxHeapBlockHeader* prev; // offset 0x0, size 0x4 + class rxHeapBlockHeader* next; // offset 0x4, size 0x4 unsigned int size; // offset 0x8, size 0x4 - class rxHeapFreeBlock * freeEntry; // offset 0xC, size 0x4 + class rxHeapFreeBlock* freeEntry; // offset 0xC, size 0x4 unsigned int pad[4]; // offset 0x10, size 0x10 }; -class xEnvAsset : public xBaseAsset { +class xEnvAsset : public xBaseAsset +{ // total size: 0x44 public: unsigned int bspAssetID; // offset 0x8, size 0x4 @@ -2483,10 +2741,12 @@ class xEnvAsset : public xBaseAsset { unsigned int bspMapperFXID; // offset 0x3C, size 0x4 float loldHeight; // offset 0x40, size 0x4 }; -struct /* @anon5 */ { +struct /* @anon5 */ +{ // total size: 0xD0 }; -enum PSY_BRAIN_STATUS { +enum PSY_BRAIN_STATUS +{ PSY_STAT_BLANK = 0, PSY_STAT_GROW = 1, PSY_STAT_EXTEND = 2, @@ -2494,17 +2754,20 @@ enum PSY_BRAIN_STATUS { PSY_STAT_NOMORE = 4, PSY_STAT_FORCE = 2147483647, }; -struct /* @anon6 */ { +struct /* @anon6 */ +{ // total size: 0xCC }; -class _tagLightningRot { +class _tagLightningRot +{ // total size: 0x48 public: float deg[16]; // offset 0x0, size 0x40 float degrees; // offset 0x40, size 0x4 float height; // offset 0x44, size 0x4 }; -class xEntFrame { +class xEntFrame +{ // total size: 0xF0 public: class xMat4x3 mat; // offset 0x0, size 0x40 @@ -2518,10 +2781,12 @@ class xEntFrame { class xVec3 vel; // offset 0xD4, size 0xC unsigned int mode; // offset 0xE0, size 0x4 }; -struct /* @anon7 */ { +struct /* @anon7 */ +{ // total size: 0xD0 }; -class NPCConfig : public xListItem { +class NPCConfig : public xListItem +{ // total size: 0x3B0 public: unsigned int modelID; // offset 0xC, size 0x4 @@ -2557,13 +2822,14 @@ class NPCConfig : public xListItem { class xVec3 animFrameRange[9]; // offset 0x318, size 0x6C signed int cnt_esteem[5]; // offset 0x384, size 0x14 float rad_sound; // offset 0x398, size 0x4 - class NPCSndTrax * snd_trax; // offset 0x39C, size 0x4 - class NPCSndTrax * snd_traxShare; // offset 0x3A0, size 0x4 + class NPCSndTrax* snd_trax; // offset 0x39C, size 0x4 + class NPCSndTrax* snd_traxShare; // offset 0x3A0, size 0x4 signed int test_count; // offset 0x3A4, size 0x4 unsigned char talk_filter[4]; // offset 0x3A8, size 0x4 unsigned char talk_filter_size; // offset 0x3AC, size 0x1 }; -enum en_NPC_SOUND { +enum en_NPC_SOUND +{ NPC_STYP_BOGUS = -2, NPC_STYP_LISTEND = 0, NPC_STYP_ENCOUNTER = 1, @@ -2594,7 +2860,8 @@ enum en_NPC_SOUND { NPC_STYP_NOMORE = 26, NPC_STYP_FORCE = 2147483647, }; -enum en_GOALSTATE { +enum en_GOALSTATE +{ GOAL_STAT_UNKNOWN = 0, GOAL_STAT_PROCESS = 1, GOAL_STAT_ENTER = 2, @@ -2606,7 +2873,8 @@ enum en_GOALSTATE { GOAL_STAT_NOMORE = 8, GOAL_STAT_FORCE = 2147483647, }; -enum _tagRumbleType { +enum _tagRumbleType +{ eRumble_Off = 0, eRumble_Hi = 1, eRumble_VeryLightHi = 2, @@ -2622,37 +2890,43 @@ enum _tagRumbleType { eRumble_Total = 12, eRumbleForceU32 = 2147483647, }; -class HiThere : public callback { +class HiThere : public callback +{ // total size: 0x8 public: - class zNPCCommon * npc; // offset 0x4, size 0x4 + class zNPCCommon* npc; // offset 0x4, size 0x4 }; -enum _zPlayerType { +enum _zPlayerType +{ ePlayer_SB = 0, ePlayer_Patrick = 1, ePlayer_Sandy = 2, ePlayer_MAXTYPES = 3, }; -class xEnv { +class xEnv +{ // total size: 0x50 public: - class iEnv * geom; // offset 0x0, size 0x4 + class iEnv* geom; // offset 0x0, size 0x4 class iEnv ienv; // offset 0x10, size 0x30 - class xLightKit * lightKit; // offset 0x40, size 0x4 + class xLightKit* lightKit; // offset 0x40, size 0x4 }; -class xEntSplineData { +class xEntSplineData +{ // total size: 0x4 public: signed int unknown; // offset 0x0, size 0x4 }; -class xPECircle { +class xPECircle +{ // total size: 0x14 public: float radius; // offset 0x0, size 0x4 float deflection; // offset 0x4, size 0x4 class xVec3 dir; // offset 0x8, size 0xC }; -class RpMeshHeader { +class RpMeshHeader +{ // total size: 0x10 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2661,18 +2935,20 @@ class RpMeshHeader { unsigned int totalIndicesInMesh; // offset 0x8, size 0x4 unsigned int firstMeshOffset; // offset 0xC, size 0x4 }; -class NPCSysEvent { +class NPCSysEvent +{ // total size: 0x28 public: signed int doLinkEvents; // offset 0x0, size 0x4 signed int handled; // offset 0x4, size 0x4 - class xBase * from; // offset 0x8, size 0x4 - class xBase * to; // offset 0xC, size 0x4 + class xBase* from; // offset 0x8, size 0x4 + class xBase* to; // offset 0xC, size 0x4 unsigned int toEvent; // offset 0x10, size 0x4 float toParam[4]; // offset 0x14, size 0x10 - class xBase * toParamWidget; // offset 0x24, size 0x4 + class xBase* toParamWidget; // offset 0x24, size 0x4 }; -class zLasso { +class zLasso +{ // total size: 0xFC public: unsigned int flags; // offset 0x0, size 0x4 @@ -2699,9 +2975,10 @@ class zLasso { unsigned char reindex[5]; // offset 0xC4, size 0x5 class xVec3 anchor; // offset 0xCC, size 0xC class xModelTag tag; // offset 0xD8, size 0x20 - class xModelInstance * model; // offset 0xF8, size 0x4 + class xModelInstance* model; // offset 0xF8, size 0x4 }; -class analog_data { +class analog_data +{ // total size: 0x18 public: class xVec2 offset; // offset 0x0, size 0x8 @@ -2709,7 +2986,8 @@ class analog_data { float mag; // offset 0x10, size 0x4 float ang; // offset 0x14, size 0x4 }; -class xEntMotionPenData { +class xEntMotionPenData +{ // total size: 0x14 public: unsigned char flags; // offset 0x0, size 0x1 @@ -2720,41 +2998,48 @@ class xEntMotionPenData { float period; // offset 0xC, size 0x4 float phase; // offset 0x10, size 0x4 }; -class NPCDamageInfo { +class NPCDamageInfo +{ // total size: 0x14 public: enum en_NPC_DAMAGE_TYPE dmg_type; // offset 0x0, size 0x4 - class xBase * dmg_from; // offset 0x4, size 0x4 + class xBase* dmg_from; // offset 0x4, size 0x4 class xVec3 vec_dmghit; // offset 0x8, size 0xC }; -class xShadowSimplePoly { +class xShadowSimplePoly +{ // total size: 0x30 public: class xVec3 vert[3]; // offset 0x0, size 0x24 class xVec3 norm; // offset 0x24, size 0xC }; -class xUpdateCullGroup { +class xUpdateCullGroup +{ // total size: 0xC public: unsigned int active; // offset 0x0, size 0x4 unsigned short startIndex; // offset 0x4, size 0x2 unsigned short endIndex; // offset 0x6, size 0x2 - class xGroup * groupObject; // offset 0x8, size 0x4 + class xGroup* groupObject; // offset 0x8, size 0x4 }; -class zFragGroup { +class zFragGroup +{ // total size: 0x54 public: - class zFrag * list[21]; // offset 0x0, size 0x54 + class zFrag* list[21]; // offset 0x0, size 0x54 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x4 public: - union { // inferred + union + { // inferred class xClumpCollBSPVertInfo i; // offset 0x0, size 0x4 - class RwV3d * p; // offset 0x0, size 0x4 + class RwV3d* p; // offset 0x0, size 0x4 }; }; -class xVec4 { +class xVec4 +{ // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -2762,14 +3047,16 @@ class xVec4 { float z; // offset 0x8, size 0x4 float w; // offset 0xC, size 0x4 }; -class RwSurfaceProperties { +class RwSurfaceProperties +{ // total size: 0xC public: float ambient; // offset 0x0, size 0x4 float specular; // offset 0x4, size 0x4 float diffuse; // offset 0x8, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x58 public: class xVec3 endPoint[2]; // offset 0x0, size 0x18 @@ -2783,10 +3070,12 @@ class /* @class */ { float arc_height; // offset 0x48, size 0x4 class xVec3 arc_normal; // offset 0x4C, size 0xC }; -class zFragInfo { +class zFragInfo +{ // total size: 0x60 public: - union { // inferred + union + { // inferred class zFragGroup group; // offset 0x0, size 0x54 class zFragParticle particle; // offset 0x0, size 0x4 class zFragProjectile projectile; // offset 0x0, size 0x60 @@ -2795,26 +3084,29 @@ class zFragInfo { class zFragShockwave shockwave; // offset 0x0, size 0x38 }; }; -class zNPCGoalTalk : public zNPCGoalCommon { +class zNPCGoalTalk : public zNPCGoalCommon +{ // total size: 0x78 public: float tmr_cycleAnim; // offset 0x4C, size 0x4 float tmr_minTalk; // offset 0x50, size 0x4 signed int stopTalking; // offset 0x54, size 0x4 signed int killAndExit; // offset 0x58, size 0x4 - class xSFX * sfx_curTalk; // offset 0x5C, size 0x4 + class xSFX* sfx_curTalk; // offset 0x5C, size 0x4 unsigned int aid_curSound; // offset 0x60, size 0x4 class xVec3 pos_maintain; // offset 0x64, size 0xC - void * jawdata; // offset 0x70, size 0x4 + void* jawdata; // offset 0x70, size 0x4 float jawtime; // offset 0x74, size 0x4 }; -class RpTriangle { +class RpTriangle +{ // total size: 0x8 public: unsigned short vertIndex[3]; // offset 0x0, size 0x6 signed short matIndex; // offset 0x6, size 0x2 }; -class xCutsceneInfo { +class xCutsceneInfo +{ // total size: 0x50 public: unsigned int Magic; // offset 0x0, size 0x4 @@ -2832,50 +3124,55 @@ class xCutsceneInfo { char SoundLeft[16]; // offset 0x30, size 0x10 char SoundRight[16]; // offset 0x40, size 0x10 }; -class xListItem { +class xListItem +{ // total size: 0xC public: signed int flg_travFilter; // offset 0x0, size 0x4 - class NPCConfig * next; // offset 0x4, size 0x4 - class NPCConfig * prev; // offset 0x8, size 0x4 + class NPCConfig* next; // offset 0x4, size 0x4 + class NPCConfig* prev; // offset 0x8, size 0x4 }; -class rxReq { +class rxReq +{ // total size: 0x0 }; -class zCheckPoint { +class zCheckPoint +{ // total size: 0x14 public: class xVec3 pos; // offset 0x0, size 0xC float rot; // offset 0xC, size 0x4 unsigned int initCamID; // offset 0x10, size 0x4 }; -class xEntMPData { +class xEntMPData +{ // total size: 0x40 public: float curdist; // offset 0x0, size 0x4 float speed; // offset 0x4, size 0x4 - class xMovePoint * dest; // offset 0x8, size 0x4 - class xMovePoint * src; // offset 0xC, size 0x4 - class xSpline3 * spl; // offset 0x10, size 0x4 + class xMovePoint* dest; // offset 0x8, size 0x4 + class xMovePoint* src; // offset 0xC, size 0x4 + class xSpline3* spl; // offset 0x10, size 0x4 float dist; // offset 0x14, size 0x4 unsigned int padalign; // offset 0x18, size 0x4 class xQuat aquat; // offset 0x20, size 0x10 class xQuat bquat; // offset 0x30, size 0x10 }; -class zPlayerGlobals { +class zPlayerGlobals +{ // total size: 0x1940 public: class zEnt ent; // offset 0x0, size 0xD4 class xEntShadow entShadow_embedded; // offset 0xD4, size 0x28 class xShadowSimpleCache simpShadow_embedded; // offset 0xFC, size 0x98 class zGlobalSettings g; // offset 0x194, size 0x150 - class zPlayerSettings * s; // offset 0x2E4, size 0x4 + class zPlayerSettings* s; // offset 0x2E4, size 0x4 class zPlayerSettings sb; // offset 0x2F0, size 0x460 class zPlayerSettings patrick; // offset 0x750, size 0x460 class zPlayerSettings sandy; // offset 0xBB0, size 0x460 - class xModelInstance * model_spongebob; // offset 0x1010, size 0x4 - class xModelInstance * model_patrick; // offset 0x1014, size 0x4 - class xModelInstance * model_sandy; // offset 0x1018, size 0x4 + class xModelInstance* model_spongebob; // offset 0x1010, size 0x4 + class xModelInstance* model_patrick; // offset 0x1014, size 0x4 + class xModelInstance* model_sandy; // offset 0x1018, size 0x4 unsigned int Visible; // offset 0x101C, size 0x4 unsigned int Health; // offset 0x1020, size 0x4 signed int Speed; // offset 0x1024, size 0x4 @@ -2897,7 +3194,7 @@ class zPlayerGlobals { float HotsauceTimer; // offset 0x1064, size 0x4 float LeanLerp; // offset 0x1068, size 0x4 float ScareTimer; // offset 0x106C, size 0x4 - class xBase * ScareSource; // offset 0x1070, size 0x4 + class xBase* ScareSource; // offset 0x1070, size 0x4 float CowerTimer; // offset 0x1074, size 0x4 float DamageTimer; // offset 0x1078, size 0x4 float SundaeTimer; // offset 0x107C, size 0x4 @@ -2909,7 +3206,7 @@ class zPlayerGlobals { float HeadbuttVel; // offset 0x1094, size 0x4 float HeadbuttTimer; // offset 0x1098, size 0x4 unsigned int SpecialReceived; // offset 0x109C, size 0x4 - class xEnt * MountChimney; // offset 0x10A0, size 0x4 + class xEnt* MountChimney; // offset 0x10A0, size 0x4 float MountChimOldY; // offset 0x10A4, size 0x4 unsigned int MaxHealth; // offset 0x10A8, size 0x4 unsigned int DoMeleeCheck; // offset 0x10AC, size 0x4 @@ -2930,24 +3227,24 @@ class zPlayerGlobals { float IdleMajorTimer; // offset 0x10E8, size 0x4 float IdleSitTimer; // offset 0x10EC, size 0x4 signed int Transparent; // offset 0x10F0, size 0x4 - class zEnt * FireTarget; // offset 0x10F4, size 0x4 + class zEnt* FireTarget; // offset 0x10F4, size 0x4 unsigned int ControlOff; // offset 0x10F8, size 0x4 unsigned int ControlOnEvent; // offset 0x10FC, size 0x4 unsigned int AutoMoveSpeed; // offset 0x1100, size 0x4 float AutoMoveDist; // offset 0x1104, size 0x4 class xVec3 AutoMoveTarget; // offset 0x1108, size 0xC - class xBase * AutoMoveObject; // offset 0x1114, size 0x4 - class zEnt * Diggable; // offset 0x1118, size 0x4 + class xBase* AutoMoveObject; // offset 0x1114, size 0x4 + class zEnt* Diggable; // offset 0x1118, size 0x4 float DigTimer; // offset 0x111C, size 0x4 class zPlayerCarryInfo carry; // offset 0x1120, size 0xE0 class zPlayerLassoInfo lassoInfo; // offset 0x1200, size 0x120 class xModelTag BubbleWandTag[2]; // offset 0x1320, size 0x40 - class xModelInstance * model_wand; // offset 0x1360, size 0x4 - class xEntBoulder * bubblebowl; // offset 0x1364, size 0x4 + class xModelInstance* model_wand; // offset 0x1360, size 0x4 + class xEntBoulder* bubblebowl; // offset 0x1364, size 0x4 float bbowlInitVel; // offset 0x1368, size 0x4 - class zEntHangable * HangFound; // offset 0x136C, size 0x4 - class zEntHangable * HangEnt; // offset 0x1370, size 0x4 - class zEntHangable * HangEntLast; // offset 0x1374, size 0x4 + class zEntHangable* HangFound; // offset 0x136C, size 0x4 + class zEntHangable* HangEnt; // offset 0x1370, size 0x4 + class zEntHangable* HangEntLast; // offset 0x1374, size 0x4 class xVec3 HangPivot; // offset 0x1378, size 0xC class xVec3 HangVel; // offset 0x1384, size 0xC float HangLength; // offset 0x1390, size 0x4 @@ -2962,7 +3259,7 @@ class zPlayerGlobals { signed int Jump_CanDouble; // offset 0x1438, size 0x4 signed int Jump_CanFloat; // offset 0x143C, size 0x4 signed int Jump_SpringboardStart; // offset 0x1440, size 0x4 - class zPlatform * Jump_Springboard; // offset 0x1444, size 0x4 + class zPlatform* Jump_Springboard; // offset 0x1444, size 0x4 signed int CanJump; // offset 0x1448, size 0x4 signed int CanBubbleSpin; // offset 0x144C, size 0x4 signed int CanBubbleBounce; // offset 0x1450, size 0x4 @@ -2987,7 +3284,7 @@ class zPlayerGlobals { unsigned int Inv_PatsSock_Total; // offset 0x1544, size 0x4 class xModelTag BubbleTag; // offset 0x1548, size 0x20 class xEntDrive drv; // offset 0x1568, size 0x7C - class xSurface * floor_surf; // offset 0x15E4, size 0x4 + class xSurface* floor_surf; // offset 0x15E4, size 0x4 class xVec3 floor_norm; // offset 0x15E8, size 0xC signed int slope; // offset 0x15F4, size 0x4 class xCollis earc_coll; // offset 0x15F8, size 0x50 @@ -3000,7 +3297,7 @@ class zPlayerGlobals { class zCheckPoint cp; // offset 0x16B8, size 0x14 unsigned int SlideTrackSliding; // offset 0x16CC, size 0x4 unsigned int SlideTrackCount; // offset 0x16D0, size 0x4 - class xEnt * SlideTrackEnt[111]; // offset 0x16D4, size 0x1BC + class xEnt* SlideTrackEnt[111]; // offset 0x16D4, size 0x1BC unsigned int SlideNotGroundedSinceSlide; // offset 0x1890, size 0x4 class xVec3 SlideTrackDir; // offset 0x1894, size 0xC class xVec3 SlideTrackVel; // offset 0x18A0, size 0xC @@ -3008,7 +3305,7 @@ class zPlayerGlobals { float SlideTrackLean; // offset 0x18B0, size 0x4 float SlideTrackLand; // offset 0x18B4, size 0x4 unsigned char sb_model_indices[14]; // offset 0x18B8, size 0xE - class xModelInstance * sb_models[14]; // offset 0x18C8, size 0x38 + class xModelInstance* sb_models[14]; // offset 0x18C8, size 0x38 unsigned int currentPlayer; // offset 0x1900, size 0x4 class xVec3 PredictRotate; // offset 0x1904, size 0xC class xVec3 PredictTranslate; // offset 0x1910, size 0xC @@ -3018,13 +3315,15 @@ class zPlayerGlobals { float KnockBackTimer; // offset 0x1930, size 0x4 float KnockIntoAirTimer; // offset 0x1934, size 0x4 }; -enum RxClusterValidityReq { +enum RxClusterValidityReq +{ rxCLREQ_DONTWANT = 0, rxCLREQ_REQUIRED = 1, rxCLREQ_OPTIONAL = 2, rxCLUSTERVALIDITYREQFORCEENUMSIZEINT = 2147483647, }; -enum en_npcbtyp { +enum en_npcbtyp +{ NPCP_BASIS_NONE = 0, NPCP_BASIS_EVILROBOT = 1, NPCP_BASIS_FRIENDLYROBOT = 2, @@ -3033,14 +3332,16 @@ enum en_npcbtyp { NPCP_BASIS_NOMORE = 5, NPCP_BASIS_FORCE = 2147483647, }; -class _tagLightningZeus { +class _tagLightningZeus +{ // total size: 0xC public: float normal_offset; // offset 0x0, size 0x4 float back_offset; // offset 0x4, size 0x4 float side_offset; // offset 0x8, size 0x4 }; -class xBaseAsset { +class xBaseAsset +{ // total size: 0x8 public: unsigned int id; // offset 0x0, size 0x4 @@ -3048,26 +3349,30 @@ class xBaseAsset { unsigned char linkCount; // offset 0x5, size 0x1 unsigned short baseFlags; // offset 0x6, size 0x2 }; -class xShadowPoly { +class xShadowPoly +{ // total size: 0x30 public: class xVec3 vert[3]; // offset 0x0, size 0x24 class xVec3 norm; // offset 0x24, size 0xC }; -class zNPCGoalSpeak : public zNPCGoalCommon { +class zNPCGoalSpeak : public zNPCGoalCommon +{ // total size: 0x64 public: float tmr_cycleAnim; // offset 0x4C, size 0x4 class xVec3 pos_maintain; // offset 0x50, size 0xC - void * jawdata; // offset 0x5C, size 0x4 + void* jawdata; // offset 0x5C, size 0x4 float jawtime; // offset 0x60, size 0x4 }; -class _tagEmitSphere { +class _tagEmitSphere +{ // total size: 0x4 public: float radius; // offset 0x0, size 0x4 }; -enum en_npctgt { +enum en_npctgt +{ NPC_TGT_NONE = 0, NPC_TGT_PLYR = 1, NPC_TGT_ENT = 2, @@ -3077,7 +3382,8 @@ enum en_npctgt { NPC_TGT_NOMORE = 6, NPC_TGT_FORCEINT = 2147483647, }; -class xLightKitLight { +class xLightKitLight +{ // total size: 0x60 public: unsigned int type; // offset 0x0, size 0x4 @@ -3085,28 +3391,30 @@ class xLightKitLight { float matrix[16]; // offset 0x14, size 0x40 float radius; // offset 0x54, size 0x4 float angle; // offset 0x58, size 0x4 - class RpLight * platLight; // offset 0x5C, size 0x4 + class RpLight* platLight; // offset 0x5C, size 0x4 }; -class iEnv { +class iEnv +{ // total size: 0x30 public: - class RpWorld * world; // offset 0x0, size 0x4 - class RpWorld * collision; // offset 0x4, size 0x4 - class RpWorld * fx; // offset 0x8, size 0x4 - class RpWorld * camera; // offset 0xC, size 0x4 - class xJSPHeader * jsp; // offset 0x10, size 0x4 - class RpLight * light[2]; // offset 0x14, size 0x8 - class RwFrame * light_frame[2]; // offset 0x1C, size 0x8 + class RpWorld* world; // offset 0x0, size 0x4 + class RpWorld* collision; // offset 0x4, size 0x4 + class RpWorld* fx; // offset 0x8, size 0x4 + class RpWorld* camera; // offset 0xC, size 0x4 + class xJSPHeader* jsp; // offset 0x10, size 0x4 + class RpLight* light[2]; // offset 0x14, size 0x8 + class RwFrame* light_frame[2]; // offset 0x1C, size 0x8 signed int memlvl; // offset 0x24, size 0x4 }; -class zPlayerCarryInfo { +class zPlayerCarryInfo +{ // total size: 0xE0 public: - class xEnt * grabbed; // offset 0x0, size 0x4 + class xEnt* grabbed; // offset 0x0, size 0x4 unsigned int grabbedModelID; // offset 0x4, size 0x4 class xMat4x3 spin; // offset 0x10, size 0x40 - class xEnt * throwTarget; // offset 0x50, size 0x4 - class xEnt * flyingToTarget; // offset 0x54, size 0x4 + class xEnt* throwTarget; // offset 0x50, size 0x4 + class xEnt* flyingToTarget; // offset 0x54, size 0x4 float minDist; // offset 0x58, size 0x4 float maxDist; // offset 0x5C, size 0x4 float minHeight; // offset 0x60, size 0x4 @@ -3136,21 +3444,24 @@ class zPlayerCarryInfo { float fruitCeilingBounce; // offset 0xC8, size 0x4 float fruitWallBounce; // offset 0xCC, size 0x4 float fruitLifetime; // offset 0xD0, size 0x4 - class xEnt * patLauncher; // offset 0xD4, size 0x4 + class xEnt* patLauncher; // offset 0xD4, size 0x4 }; -class XGOFTypeInfo { +class XGOFTypeInfo +{ // total size: 0xC public: signed int tid; // offset 0x0, size 0x4 - class xFactoryInst * (* creator)(signed int, class RyzMemGrow *, void *); // offset 0x4, size 0x4 - void (* destroyer)(class xFactoryInst *); // offset 0x8, size 0x4 + class xFactoryInst* (*creator)(signed int, class RyzMemGrow*, void*); // offset 0x4, size 0x4 + void (*destroyer)(class xFactoryInst*); // offset 0x8, size 0x4 }; -class zFragParticle { +class zFragParticle +{ // total size: 0x4 public: - class zFragParticleAsset * fasset; // offset 0x0, size 0x4 + class zFragParticleAsset* fasset; // offset 0x0, size 0x4 }; -class xShadowSimpleCache { +class xShadowSimpleCache +{ // total size: 0x98 public: unsigned short flags; // offset 0x0, size 0x2 @@ -3159,7 +3470,7 @@ class xShadowSimpleCache { unsigned int collPriority; // offset 0x4, size 0x4 class xVec3 pos; // offset 0x8, size 0xC class xVec3 at; // offset 0x14, size 0xC - class xEnt * castOnEnt; // offset 0x20, size 0x4 + class xEnt* castOnEnt; // offset 0x20, size 0x4 class xShadowSimplePoly poly; // offset 0x24, size 0x30 float envHeight; // offset 0x54, size 0x4 float shadowHeight; // offset 0x58, size 0x4 @@ -3168,7 +3479,8 @@ class xShadowSimpleCache { float dydz; // offset 0x64, size 0x4 class xVec3 corner[4]; // offset 0x68, size 0x30 }; -class zPlayerSettings { +class zPlayerSettings +{ // total size: 0x460 public: enum _zPlayerType pcType; // offset 0x0, size 0x4 @@ -3195,12 +3507,14 @@ class zPlayerSettings { unsigned char talk_filter_size; // offset 0x459, size 0x1 unsigned char talk_filter[4]; // offset 0x45A, size 0x4 }; -enum RxNodeDefEditable { +enum RxNodeDefEditable +{ rxNODEDEFCONST = 0, rxNODEDEFEDITABLE = 1, rxNODEDEFEDITABLEFORCEENUMSIZEINT = 2147483647, }; -class xCutsceneTime { +class xCutsceneTime +{ // total size: 0x10 public: float StartTime; // offset 0x0, size 0x4 @@ -3208,19 +3522,22 @@ class xCutsceneTime { unsigned int NumData; // offset 0x8, size 0x4 unsigned int ChunkIndex; // offset 0xC, size 0x4 }; -enum RxClusterValid { +enum RxClusterValid +{ rxCLVALID_NOCHANGE = 0, rxCLVALID_VALID = 1, rxCLVALID_INVALID = 2, rxCLUSTERVALIDFORCEENUMSIZEINT = 2147483647, }; -class xAnimTransitionList { +class xAnimTransitionList +{ // total size: 0x8 public: - class xAnimTransitionList * Next; // offset 0x0, size 0x4 - class xAnimTransition * T; // offset 0x4, size 0x4 + class xAnimTransitionList* Next; // offset 0x0, size 0x4 + class xAnimTransition* T; // offset 0x4, size 0x4 }; -class xEntMotionERData { +class xEntMotionERData +{ // total size: 0x28 public: class xVec3 ret_pos; // offset 0x0, size 0xC @@ -3230,64 +3547,74 @@ class xEntMotionERData { float ret_tm; // offset 0x20, size 0x4 float ret_wait_tm; // offset 0x24, size 0x4 }; -class NPCStunInfo { +class NPCStunInfo +{ // total size: 0xC public: float tym_stuntime; // offset 0x0, size 0x4 enum en_NPC_CARRY_STATE carrystate; // offset 0x4, size 0x4 signed int allowStun; // offset 0x8, size 0x4 }; -class say_data { +class say_data +{ // total size: 0x8 public: signed int total; // offset 0x0, size 0x4 signed int prev_total; // offset 0x4, size 0x4 }; -class xJSPNodeInfo { +class xJSPNodeInfo +{ // total size: 0x8 public: signed int originalMatIndex; // offset 0x0, size 0x4 signed int nodeFlags; // offset 0x4, size 0x4 }; -class zFragParticleAsset : public zFragAsset { +class zFragParticleAsset : public zFragAsset +{ // total size: 0x1D4 public: class zFragLocation source; // offset 0x18, size 0x24 class zFragLocation vel; // offset 0x3C, size 0x24 class xParEmitterCustomSettings emit; // offset 0x60, size 0x16C unsigned int parEmitterID; // offset 0x1CC, size 0x4 - class zParEmitter * parEmitter; // offset 0x1D0, size 0x4 + class zParEmitter* parEmitter; // offset 0x1D0, size 0x4 }; -class xModelTag { +class xModelTag +{ // total size: 0x20 public: class xVec3 v; // offset 0x0, size 0xC unsigned int matidx; // offset 0xC, size 0x4 float wt[4]; // offset 0x10, size 0x10 }; -class xRot { +class xRot +{ // total size: 0x10 public: class xVec3 axis; // offset 0x0, size 0xC float angle; // offset 0xC, size 0x4 }; -class xCoef { +class xCoef +{ // total size: 0x10 public: float a[4]; // offset 0x0, size 0x10 }; -class xCutsceneData { +class xCutsceneData +{ // total size: 0x10 public: unsigned int DataType; // offset 0x0, size 0x4 unsigned int AssetID; // offset 0x4, size 0x4 unsigned int ChunkSize; // offset 0x8, size 0x4 - union { // inferred + union + { // inferred unsigned int FileOffset; // offset 0xC, size 0x4 - void * DataPtr; // offset 0xC, size 0x4 + void* DataPtr; // offset 0xC, size 0x4 }; }; -enum state_enum { +enum state_enum +{ STATE_INVALID = -1, STATE_BEGIN = 0, STATE_DESCRIPTION = 1, @@ -3297,29 +3624,34 @@ enum state_enum { STATE_END = 5, MAX_STATE = 6, }; -struct /* @anon8 */ { +struct /* @anon8 */ +{ // total size: 0x54 }; -enum rxEmbeddedPacketState { +enum rxEmbeddedPacketState +{ rxPKST_PACKETLESS = 0, rxPKST_UNUSED = 1, rxPKST_INUSE = 2, rxPKST_PENDING = 3, rxEMBEDDEDPACKETSTATEFORCEENUMSIZEINT = 2147483647, }; -class _tagEmitRect { +class _tagEmitRect +{ // total size: 0x8 public: float x_len; // offset 0x0, size 0x4 float z_len; // offset 0x4, size 0x4 }; -class xSphere { +class xSphere +{ // total size: 0x10 public: class xVec3 center; // offset 0x0, size 0xC float r; // offset 0xC, size 0x4 }; -class xShadowCache { +class xShadowCache +{ // total size: 0x3070 public: class xVec3 pos; // offset 0x0, size 0xC @@ -3329,22 +3661,23 @@ class xShadowCache { float polyRayDepth[5]; // offset 0x18, size 0x14 unsigned short castOnEnt; // offset 0x2C, size 0x2 unsigned short castOnPoly; // offset 0x2E, size 0x2 - class xEnt * ent[16]; // offset 0x30, size 0x40 + class xEnt* ent[16]; // offset 0x30, size 0x40 class xShadowPoly poly[256]; // offset 0x70, size 0x3000 }; -class xCamera : public xBase { +class xCamera : public xBase +{ // total size: 0x330 public: - class RwCamera * lo_cam; // offset 0x10, size 0x4 + class RwCamera* lo_cam; // offset 0x10, size 0x4 class xMat4x3 mat; // offset 0x20, size 0x40 class xMat4x3 omat; // offset 0x60, size 0x40 class xMat3x3 mbasis; // offset 0xA0, size 0x30 class xBound bound; // offset 0xD0, size 0x4C - class xMat4x3 * tgt_mat; // offset 0x11C, size 0x4 - class xMat4x3 * tgt_omat; // offset 0x120, size 0x4 - class xBound * tgt_bound; // offset 0x124, size 0x4 + class xMat4x3* tgt_mat; // offset 0x11C, size 0x4 + class xMat4x3* tgt_omat; // offset 0x120, size 0x4 + class xBound* tgt_bound; // offset 0x124, size 0x4 class xVec3 focus; // offset 0x128, size 0xC - class xScene * sc; // offset 0x134, size 0x4 + class xScene* sc; // offset 0x134, size 0x4 class xVec3 tran_accum; // offset 0x138, size 0xC float fov; // offset 0x144, size 0x4 unsigned int flags; // offset 0x148, size 0x4 @@ -3412,56 +3745,66 @@ class xCamera : public xBase { float roll_csv; // offset 0x264, size 0x4 class xVec4 frustplane[12]; // offset 0x270, size 0xC0 }; -class xBound { +class xBound +{ // total size: 0x4C public: class xQCData qcd; // offset 0x0, size 0x20 unsigned char type; // offset 0x20, size 0x1 unsigned char pad[3]; // offset 0x21, size 0x3 - union { // inferred + union + { // inferred class xSphere sph; // offset 0x24, size 0x10 class xBBox box; // offset 0x24, size 0x24 class xCylinder cyl; // offset 0x24, size 0x14 }; - class xMat4x3 * mat; // offset 0x48, size 0x4 + class xMat4x3* mat; // offset 0x48, size 0x4 }; -enum RwCameraProjection { +enum RwCameraProjection +{ rwNACAMERAPROJECTION = 0, rwPERSPECTIVE = 1, rwPARALLEL = 2, rwCAMERAPROJECTIONFORCEENUMSIZEINT = 2147483647, }; -enum RpWorldRenderOrder { +enum RpWorldRenderOrder +{ rpWORLDRENDERNARENDERORDER = 0, rpWORLDRENDERFRONT2BACK = 1, rpWORLDRENDERBACK2FRONT = 2, rpWORLDRENDERORDERFORCEENUMSIZEINT = 2147483647, }; -struct /* @anon9 */ { +struct /* @anon9 */ +{ // total size: 0x10 }; -enum RxClusterForcePresent { +enum RxClusterForcePresent +{ rxCLALLOWABSENT = 0, rxCLFORCEPRESENT = 1, rxCLUSTERFORCEPRESENTFORCEENUMSIZEINT = 2147483647, }; -enum en_dupowavmod { +enum en_dupowavmod +{ NPCP_DUPOWAVE_CONTINUOUS = 0, NPCP_DUPOWAVE_DISCREET = 1, NPCP_DUPOWAVE_NOMORE = 2, NPCP_DUPOWAVE_FORCE = 2147483647, }; -struct /* @anon10 */ { +struct /* @anon10 */ +{ // total size: 0xD0 }; -class xCylinder { +class xCylinder +{ // total size: 0x14 public: class xVec3 center; // offset 0x0, size 0xC float r; // offset 0xC, size 0x4 float h; // offset 0x10, size 0x4 }; -enum en_LASSO_STATUS { +enum en_LASSO_STATUS +{ LASS_STAT_DONE = 0, LASS_STAT_PENDING = 1, LASS_STAT_GRABBING = 2, @@ -3469,11 +3812,12 @@ enum en_LASSO_STATUS { LASS_STAT_NOMORE = 4, LASS_STAT_FORCEINT = 2147483647, }; -class zFragProjectile { +class zFragProjectile +{ // total size: 0x60 public: - class zFragProjectileAsset * fasset; // offset 0x0, size 0x4 - class xModelInstance * model; // offset 0x4, size 0x4 + class zFragProjectileAsset* fasset; // offset 0x0, size 0x4 + class xModelInstance* model; // offset 0x4, size 0x4 class xParabola path; // offset 0x8, size 0x24 float angVel; // offset 0x2C, size 0x4 float t; // offset 0x30, size 0x4 @@ -3485,7 +3829,8 @@ class zFragProjectile { class xVec3 N; // offset 0x48, size 0xC class xVec3 axis; // offset 0x54, size 0xC }; -class xParabola { +class xParabola +{ // total size: 0x24 public: class xVec3 initPos; // offset 0x0, size 0xC @@ -3494,7 +3839,8 @@ class xParabola { float minTime; // offset 0x1C, size 0x4 float maxTime; // offset 0x20, size 0x4 }; -class xParEmitterCustomSettings : public xParEmitterPropsAsset { +class xParEmitterCustomSettings : public xParEmitterPropsAsset +{ // total size: 0x16C public: unsigned int custom_flags; // offset 0x138, size 0x4 @@ -3506,35 +3852,40 @@ class xParEmitterCustomSettings : public xParEmitterPropsAsset { unsigned char padding; // offset 0x15F, size 0x1 float radius; // offset 0x160, size 0x4 float emit_interval_current; // offset 0x164, size 0x4 - void * emit_volume; // offset 0x168, size 0x4 + void* emit_volume; // offset 0x168, size 0x4 }; -enum _CurrentPlayer { +enum _CurrentPlayer +{ eCurrentPlayerSpongeBob = 0, eCurrentPlayerPatrick = 1, eCurrentPlayerSandy = 2, eCurrentPlayerCount = 3, }; -class xVec2 { +class xVec2 +{ // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class xBox { +class xBox +{ // total size: 0x18 public: class xVec3 upper; // offset 0x0, size 0xC class xVec3 lower; // offset 0xC, size 0xC }; -class RxClusterDefinition { +class RxClusterDefinition +{ // total size: 0x10 public: - char * name; // offset 0x0, size 0x4 + char* name; // offset 0x0, size 0x4 unsigned int defaultStride; // offset 0x4, size 0x4 unsigned int defaultAttributes; // offset 0x8, size 0x4 - char * attributeSet; // offset 0xC, size 0x4 + char* attributeSet; // offset 0xC, size 0x4 }; -class xQCData { +class xQCData +{ // total size: 0x20 public: signed char xmin; // offset 0x0, size 0x1 @@ -3548,40 +3899,46 @@ class xQCData { class xVec3 min; // offset 0x8, size 0xC class xVec3 max; // offset 0x14, size 0xC }; -class NPCScriptInfo { +class NPCScriptInfo +{ // total size: 0x4 public: unsigned int aid_playanim; // offset 0x0, size 0x4 }; -class RpSector { +class RpSector +{ // total size: 0x4 public: signed int type; // offset 0x0, size 0x4 }; -class xModelBucket { +class xModelBucket +{ // total size: 0x14 public: - class RpAtomic * Data; // offset 0x0, size 0x4 - class RpAtomic * OriginalData; // offset 0x4, size 0x4 - class xModelInstance * List; // offset 0x8, size 0x4 + class RpAtomic* Data; // offset 0x0, size 0x4 + class RpAtomic* OriginalData; // offset 0x4, size 0x4 + class xModelInstance* List; // offset 0x8, size 0x4 signed int ClipFlags; // offset 0xC, size 0x4 unsigned int PipeFlags; // offset 0x10, size 0x4 }; -class st_XORDEREDARRAY { +class st_XORDEREDARRAY +{ // total size: 0x10 public: - void * * list; // offset 0x0, size 0x4 + void** list; // offset 0x0, size 0x4 signed int cnt; // offset 0x4, size 0x4 signed int max; // offset 0x8, size 0x4 signed int warnlvl; // offset 0xC, size 0x4 }; -class xBBox { +class xBBox +{ // total size: 0x24 public: class xVec3 center; // offset 0x0, size 0xC class xBox box; // offset 0xC, size 0x18 }; -enum en_NPC_DAMAGE_TYPE { +enum en_NPC_DAMAGE_TYPE +{ DMGTYP_UNDECIDED = 0, DMGTYP_ABOVE = 1, DMGTYP_BELOW = 2, @@ -3602,10 +3959,12 @@ enum en_NPC_DAMAGE_TYPE { DMGTYP_NOMORE = 17, DMGTYP_FORCEINT = 2147483647, }; -struct /* @anon11 */ { +struct /* @anon11 */ +{ // total size: 0xD0 }; -class xPEEntBound { +class xPEEntBound +{ // total size: 0xC public: unsigned char flags; // offset 0x0, size 0x1 @@ -3615,7 +3974,8 @@ class xPEEntBound { float expand; // offset 0x4, size 0x4 float deflection; // offset 0x8, size 0x4 }; -enum zFragLocType { +enum zFragLocType +{ eFragLocBone = 0, eFragLocBoneUpdated = 1, eFragLocBoneLocal = 2, @@ -3625,7 +3985,8 @@ enum zFragLocType { eFragLocCount = 6, eFragLocForceSize = 2147483647, }; -class xEntMotionOrbitData { +class xEntMotionOrbitData +{ // total size: 0x18 public: class xVec3 center; // offset 0x0, size 0xC @@ -3633,25 +3994,29 @@ class xEntMotionOrbitData { float h; // offset 0x10, size 0x4 float period; // offset 0x14, size 0x4 }; -class _tagEmitLine { +class _tagEmitLine +{ // total size: 0x1C public: class xVec3 pos1; // offset 0x0, size 0xC class xVec3 pos2; // offset 0xC, size 0xC float radius; // offset 0x18, size 0x4 }; -class RwSphere { +class RwSphere +{ // total size: 0x10 public: class RwV3d center; // offset 0x0, size 0xC float radius; // offset 0xC, size 0x4 }; -class _zEnv : public xBase { +class _zEnv : public xBase +{ // total size: 0x14 public: - class xEnvAsset * easset; // offset 0x10, size 0x4 + class xEnvAsset* easset; // offset 0x10, size 0x4 }; -class iFogParams { +class iFogParams +{ // total size: 0x1C public: enum RwFogType type; // offset 0x0, size 0x4 @@ -3660,37 +4025,43 @@ class iFogParams { float density; // offset 0xC, size 0x4 class RwRGBA fogcolor; // offset 0x10, size 0x4 class RwRGBA bgcolor; // offset 0x14, size 0x4 - unsigned char * table; // offset 0x18, size 0x4 + unsigned char* table; // offset 0x18, size 0x4 }; -enum _tagPadState { +enum _tagPadState +{ ePad_Disabled = 0, ePad_DisabledError = 1, ePad_Enabled = 2, ePad_Missing = 3, ePad_Total = 4, }; -class NPCTarget { +class NPCTarget +{ // total size: 0x14 public: enum en_npctgt typ_target; // offset 0x0, size 0x4 - union { // inferred - class xEnt * ent_target; // offset 0x4, size 0x4 - class xBase * bas_target; // offset 0x4, size 0x4 + union + { // inferred + class xEnt* ent_target; // offset 0x4, size 0x4 + class xBase* bas_target; // offset 0x4, size 0x4 class xVec3 pos_target; // offset 0x4, size 0xC - class zMovePoint * nav_target; // offset 0x4, size 0x4 + class zMovePoint* nav_target; // offset 0x4, size 0x4 }; - class zNPCCommon * npc_owner; // offset 0x10, size 0x4 + class zNPCCommon* npc_owner; // offset 0x10, size 0x4 }; -class anim_coll_data { +class anim_coll_data +{ // total size: 0x0 }; -class NPCMountInfo { +class NPCMountInfo +{ // total size: 0x8 public: - class xEnt * ent_toMount; // offset 0x0, size 0x4 - class xCollis * col_forMount; // offset 0x4, size 0x4 + class xEnt* ent_toMount; // offset 0x0, size 0x4 + class xCollis* col_forMount; // offset 0x4, size 0x4 }; -enum _SDRenderState { +enum _SDRenderState +{ SDRS_Unknown = 0, SDRS_Default = 1, SDRS_OpaqueModels = 2, @@ -3716,7 +4087,8 @@ enum _SDRenderState { SDRS_DiscoFloorGlow = 22, SDRS_Total = -1, }; -class xCutsceneZbuffer { +class xCutsceneZbuffer +{ // total size: 0x10 public: float start; // offset 0x0, size 0x4 @@ -3724,7 +4096,8 @@ class xCutsceneZbuffer { float nearPlane; // offset 0x8, size 0x4 float farPlane; // offset 0xC, size 0x4 }; -class basic_rect { +class basic_rect +{ // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -3732,20 +4105,21 @@ class basic_rect { float w; // offset 0x8, size 0x4 float h; // offset 0xC, size 0x4 }; -class xGlobals { +class xGlobals +{ // total size: 0x700 public: class xCamera camera; // offset 0x0, size 0x330 - class _tagxPad * pad0; // offset 0x330, size 0x4 - class _tagxPad * pad1; // offset 0x334, size 0x4 - class _tagxPad * pad2; // offset 0x338, size 0x4 - class _tagxPad * pad3; // offset 0x33C, size 0x4 + class _tagxPad* pad0; // offset 0x330, size 0x4 + class _tagxPad* pad1; // offset 0x334, size 0x4 + class _tagxPad* pad2; // offset 0x338, size 0x4 + class _tagxPad* pad3; // offset 0x33C, size 0x4 signed int profile; // offset 0x340, size 0x4 char profFunc[6][128]; // offset 0x344, size 0x300 - class xUpdateCullMgr * updateMgr; // offset 0x644, size 0x4 + class xUpdateCullMgr* updateMgr; // offset 0x644, size 0x4 signed int sceneFirst; // offset 0x648, size 0x4 char sceneStart[32]; // offset 0x64C, size 0x20 - class RpWorld * currWorld; // offset 0x66C, size 0x4 + class RpWorld* currWorld; // offset 0x66C, size 0x4 class iFogParams fog; // offset 0x670, size 0x1C class iFogParams fogA; // offset 0x68C, size 0x1C class iFogParams fogB; // offset 0x6A8, size 0x1C @@ -3762,7 +4136,8 @@ class xGlobals { unsigned char dontShowPadMessageDuringLoadingOrCutScene; // offset 0x6F0, size 0x1 unsigned char autoSaveFeature; // offset 0x6F1, size 0x1 }; -class xMat3x3 { +class xMat3x3 +{ // total size: 0x30 public: class xVec3 right; // offset 0x0, size 0xC @@ -3772,42 +4147,48 @@ class xMat3x3 { class xVec3 at; // offset 0x20, size 0xC unsigned int pad2; // offset 0x2C, size 0x4 }; -class RxClusterRef { +class RxClusterRef +{ // total size: 0xC public: - class RxClusterDefinition * clusterDef; // offset 0x0, size 0x4 + class RxClusterDefinition* clusterDef; // offset 0x0, size 0x4 enum RxClusterForcePresent forcePresent; // offset 0x4, size 0x4 unsigned int reserved; // offset 0x8, size 0x4 }; -enum en_BBOY_PLATANIM { +enum en_BBOY_PLATANIM +{ BBOY_PLATANIM_MOVE = 0, BBOY_PLATANIM_HIT = 1, BBOY_PLATANIM_NOMORE = 2, BBOY_PLATANIM_FORCE = 2147483647, }; -class RwObject { +class RwObject +{ // total size: 0x8 public: unsigned char type; // offset 0x0, size 0x1 unsigned char subType; // offset 0x1, size 0x1 unsigned char flags; // offset 0x2, size 0x1 unsigned char privateFlags; // offset 0x3, size 0x1 - void * parent; // offset 0x4, size 0x4 + void* parent; // offset 0x4, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x4 public: unsigned char enabled : 8; // offset 0x0, size 0x1 unsigned int dummy : 24; // offset 0x0, size 0x4 }; -class NPCBlastInfo { +class NPCBlastInfo +{ // total size: 0x14 public: class xVec3 pos_blast; // offset 0x0, size 0xC float rad_blast; // offset 0xC, size 0x4 float spd_expand; // offset 0x10, size 0x4 }; -class xEntMechData { +class xEntMechData +{ // total size: 0x4C public: class xVec3 apos; // offset 0x0, size 0xC @@ -3822,23 +4203,26 @@ class xEntMechData { float trfd; // offset 0x3C, size 0x4 float tsbd; // offset 0x40, size 0x4 float trbd; // offset 0x44, size 0x4 - float * rotptr; // offset 0x48, size 0x4 + float* rotptr; // offset 0x48, size 0x4 }; -class RxIoSpec { +class RxIoSpec +{ // total size: 0x14 public: unsigned int numClustersOfInterest; // offset 0x0, size 0x4 - class RxClusterRef * clustersOfInterest; // offset 0x4, size 0x4 - enum RxClusterValidityReq * inputRequirements; // offset 0x8, size 0x4 + class RxClusterRef* clustersOfInterest; // offset 0x4, size 0x4 + enum RxClusterValidityReq* inputRequirements; // offset 0x8, size 0x4 unsigned int numOutputs; // offset 0xC, size 0x4 - class RxOutputSpec * outputs; // offset 0x10, size 0x4 + class RxOutputSpec* outputs; // offset 0x10, size 0x4 }; -class xEntMotionSplineData { +class xEntMotionSplineData +{ // total size: 0x4 public: signed int unknown; // offset 0x0, size 0x4 }; -class _tagEmitVolume { +class _tagEmitVolume +{ // total size: 0x4 public: unsigned int emit_volumeID; // offset 0x0, size 0x4 @@ -3851,11 +4235,13 @@ class _tagEmitVolume { Code range: 0x002EAED0 -> 0x002EB094 */ // Range: 0x2EAED0 -> 0x2EB094 -static signed int MERC_grul_goAlert(class xGoal * rawgoal /* r2 */, enum en_trantype * trantype /* r16 */) { +static signed int MERC_grul_goAlert(class xGoal* rawgoal /* r2 */, + enum en_trantype* trantype /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EAED0 -> 0x2EB094 - class zNPCVillager * npc; // r17 + class zNPCVillager* npc; // r17 class xVec3 dir_plyr; // r29+0x40 } } @@ -3867,12 +4253,14 @@ static signed int MERC_grul_goAlert(class xGoal * rawgoal /* r2 */, enum en_tran Code range: 0x002EB0A0 -> 0x002EB140 */ // Range: 0x2EB0A0 -> 0x2EB140 -static signed int FOLK_grul_goAlert(class xGoal * rawgoal /* r2 */, enum en_trantype * trantype /* r16 */) { +static signed int FOLK_grul_goAlert(class xGoal* rawgoal /* r2 */, + enum en_trantype* trantype /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB0A0 -> 0x2EB140 signed int nextgoal; // r18 - class zNPCVillager * npc; // r17 + class zNPCVillager* npc; // r17 class xVec3 vec; // r29+0x40 } } @@ -3884,7 +4272,8 @@ static signed int FOLK_grul_goAlert(class xGoal * rawgoal /* r2 */, enum en_tran Code range: 0x002EB140 -> 0x002EB2C8 */ // Range: 0x2EB140 -> 0x2EB2C8 -class RpAtomic * NPC_BubBud_RenderCB(class RpAtomic * atomic /* r16 */) { +class RpAtomic* NPC_BubBud_RenderCB(class RpAtomic* atomic /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB140 -> 0x2EB2C8 @@ -3899,7 +4288,8 @@ class RpAtomic * NPC_BubBud_RenderCB(class RpAtomic * atomic /* r16 */) { Code range: 0x002EB2D0 -> 0x002EB358 */ // Range: 0x2EB2D0 -> 0x2EB358 -void RenderExtra(class zNPCBubbleBuddy * this /* r16 */) { +void RenderExtra(class zNPCBubbleBuddy* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB2D0 -> 0x2EB358 @@ -3914,7 +4304,8 @@ void RenderExtra(class zNPCBubbleBuddy * this /* r16 */) { Code range: 0x002EB360 -> 0x002EB390 */ // Range: 0x2EB360 -> 0x2EB390 -void Reset(class zNPCBubbleBuddy * this /* r16 */) { +void Reset(class zNPCBubbleBuddy* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB360 -> 0x2EB390 @@ -3928,11 +4319,12 @@ void Reset(class zNPCBubbleBuddy * this /* r16 */) { Code range: 0x002EB390 -> 0x002EB474 */ // Range: 0x2EB390 -> 0x2EB474 -void Setup(class zNPCBubbleBuddy * this /* r16 */) { +void Setup(class zNPCBubbleBuddy* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB390 -> 0x2EB474 - char * nam_fresTxtr; // r17 + char* nam_fresTxtr; // r17 } } @@ -3943,7 +4335,8 @@ void Setup(class zNPCBubbleBuddy * this /* r16 */) { Code range: 0x002EB480 -> 0x002EB530 */ // Range: 0x2EB480 -> 0x2EB530 -void Init(class zNPCBubbleBuddy * this /* r16 */, class xEntAsset * asset /* r2 */) { +void Init(class zNPCBubbleBuddy* this /* r16 */, class xEntAsset* asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB480 -> 0x2EB530 @@ -3957,7 +4350,8 @@ void Init(class zNPCBubbleBuddy * this /* r16 */, class xEntAsset * asset /* r2 Code range: 0x002EB530 -> 0x002EB538 */ // Range: 0x2EB530 -> 0x2EB538 -void PlatAnimSync(class zNPCBalloonBoy * this /* r2 */) { +void PlatAnimSync(class zNPCBalloonBoy* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB530 -> 0x2EB538 @@ -3971,7 +4365,8 @@ void PlatAnimSync(class zNPCBalloonBoy * this /* r2 */) { Code range: 0x002EB540 -> 0x002EB5A4 */ // Range: 0x2EB540 -> 0x2EB5A4 -void PlatAnimSet(class zNPCBalloonBoy * this /* r2 */, enum en_BBOY_PLATANIM platanim /* r2 */) { +void PlatAnimSet(class zNPCBalloonBoy* this /* r2 */, enum en_BBOY_PLATANIM platanim /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB540 -> 0x2EB5A4 @@ -3986,12 +4381,13 @@ void PlatAnimSet(class zNPCBalloonBoy * this /* r2 */, enum en_BBOY_PLATANIM pla Code range: 0x002EB5B0 -> 0x002EB72C */ // Range: 0x2EB5B0 -> 0x2EB72C -signed int ParseSysEvent(class zNPCBalloonBoy * this /* r2 */, class NPCSysEvent * sed /* r2 */) { +signed int ParseSysEvent(class zNPCBalloonBoy* this /* r2 */, class NPCSysEvent* sed /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB5B0 -> 0x2EB72C signed int handled; // r16 - class zPlatform * plat; // r6 + class zPlatform* plat; // r6 } } @@ -4002,7 +4398,8 @@ signed int ParseSysEvent(class zNPCBalloonBoy * this /* r2 */, class NPCSysEvent Code range: 0x002EB730 -> 0x002EB810 */ // Range: 0x2EB730 -> 0x2EB810 -signed int FolkHandleMail(class zNPCBalloonBoy * this /* r18 */, class NPCMsg * mail /* r17 */) { +signed int FolkHandleMail(class zNPCBalloonBoy* this /* r18 */, class NPCMsg* mail /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB730 -> 0x2EB810 @@ -4017,7 +4414,9 @@ signed int FolkHandleMail(class zNPCBalloonBoy * this /* r18 */, class NPCMsg * Code range: 0x002EB810 -> 0x002EB968 */ // Range: 0x2EB810 -> 0x2EB968 -unsigned int AnimPick(class zNPCBalloonBoy * this /* r2 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal * rawgoal /* r2 */) { +unsigned int AnimPick(class zNPCBalloonBoy* this /* r2 */, signed int gid /* r2 */, + enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal* rawgoal /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB810 -> 0x2EB968 @@ -4033,7 +4432,8 @@ unsigned int AnimPick(class zNPCBalloonBoy * this /* r2 */, signed int gid /* r2 Code range: 0x002EB970 -> 0x002EBC18 */ // Range: 0x2EB970 -> 0x2EBC18 -void PlatShadRend(class zNPCBalloonBoy * this /* r17 */) { +void PlatShadRend(class zNPCBalloonBoy* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EB970 -> 0x2EBC18 @@ -4052,7 +4452,8 @@ void PlatShadRend(class zNPCBalloonBoy * this /* r17 */) { Code range: 0x002EBC20 -> 0x002EBC4C */ // Range: 0x2EBC20 -> 0x2EBC4C -void Render(class zNPCBalloonBoy * this /* r16 */) { +void Render(class zNPCBalloonBoy* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EBC20 -> 0x2EBC4C @@ -4066,11 +4467,12 @@ void Render(class zNPCBalloonBoy * this /* r16 */) { Code range: 0x002EBC50 -> 0x002EBCEC */ // Range: 0x2EBC50 -> 0x2EBCEC -void SelfSetup(class zNPCBalloonBoy * this /* r16 */) { +void SelfSetup(class zNPCBalloonBoy* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EBC50 -> 0x2EBCEC - class xPsyche * psy; // r16 + class xPsyche* psy; // r16 } } @@ -4081,11 +4483,12 @@ void SelfSetup(class zNPCBalloonBoy * this /* r16 */) { Code range: 0x002EBCF0 -> 0x002EBD24 */ // Range: 0x2EBCF0 -> 0x2EBD24 -void Reset(class zNPCBalloonBoy * this /* r2 */) { +void Reset(class zNPCBalloonBoy* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EBCF0 -> 0x2EBD24 - char * nam_texture; // r2 + char* nam_texture; // r2 } } @@ -4096,7 +4499,8 @@ void Reset(class zNPCBalloonBoy * this /* r2 */) { Code range: 0x002EBD30 -> 0x002EBDCC */ // Range: 0x2EBD30 -> 0x2EBDCC -void Init(class zNPCBalloonBoy * this /* r16 */, class xEntAsset * asset /* r2 */) { +void Init(class zNPCBalloonBoy* this /* r16 */, class xEntAsset* asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EBD30 -> 0x2EBDCC @@ -4110,7 +4514,8 @@ void Init(class zNPCBalloonBoy * this /* r16 */, class xEntAsset * asset /* r2 * Code range: 0x002EBDD0 -> 0x002EC0B4 */ // Range: 0x2EBDD0 -> 0x2EC0B4 -void VFXLeakyFaucet(class zNPCSandyBikini * this /* r18 */, float dt /* r23 */) { +void VFXLeakyFaucet(class zNPCSandyBikini* this /* r18 */, float dt /* r23 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EBDD0 -> 0x2EC0B4 @@ -4129,7 +4534,9 @@ void VFXLeakyFaucet(class zNPCSandyBikini * this /* r18 */, float dt /* r23 */) Code range: 0x002EC0C0 -> 0x002EC12C */ // Range: 0x2EC0C0 -> 0x2EC12C -void Process(class zNPCSandyBikini * this /* r17 */, class xScene * xscn /* r16 */, float dt /* r20 */) { +void Process(class zNPCSandyBikini* this /* r17 */, class xScene* xscn /* r16 */, + float dt /* r20 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC0C0 -> 0x2EC12C @@ -4143,7 +4550,8 @@ void Process(class zNPCSandyBikini * this /* r17 */, class xScene * xscn /* r16 Code range: 0x002EC130 -> 0x002EC1D8 */ // Range: 0x2EC130 -> 0x2EC1D8 -void Reset(class zNPCSandyBikini * this /* r17 */) { +void Reset(class zNPCSandyBikini* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC130 -> 0x2EC1D8 @@ -4157,20 +4565,22 @@ void Reset(class zNPCSandyBikini * this /* r17 */) { Code range: 0x002EC1E0 -> 0x002EC430 */ // Range: 0x2EC1E0 -> 0x2EC430 -signed int say(class zNPCNewsFish * this /* r22 */, enum say_enum * s /* r21 */, unsigned int size /* r2 */, signed int flags /* r23 */, signed int max_say /* r2 */) { +signed int say(class zNPCNewsFish* this /* r22 */, enum say_enum* s /* r21 */, + unsigned int size /* r2 */, signed int flags /* r23 */, signed int max_say /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC1E0 -> 0x2EC430 signed int min_say; // r30 - enum say_enum * it; // r5 - enum say_enum * end; // r20 + enum say_enum* it; // r5 + enum say_enum* end; // r20 signed int total; // r16 - enum say_enum * it; // r5 - enum say_enum * end; // r2 + enum say_enum* it; // r5 + enum say_enum* end; // r2 signed int played; // r19 signed int which; // r18 - enum say_enum * it; // r17 - enum say_enum * end; // r2 + enum say_enum* it; // r17 + enum say_enum* end; // r2 unsigned char last_changed; // r2 } } @@ -4182,7 +4592,9 @@ signed int say(class zNPCNewsFish * this /* r22 */, enum say_enum * s /* r21 */, Code range: 0x002EC430 -> 0x002EC568 */ // Range: 0x2EC430 -> 0x2EC568 -unsigned char say(class zNPCNewsFish * this /* r18 */, enum say_enum s /* r2 */, signed int flags /* r17 */) { +unsigned char say(class zNPCNewsFish* this /* r18 */, enum say_enum s /* r2 */, + signed int flags /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC430 -> 0x2EC568 @@ -4197,11 +4609,12 @@ unsigned char say(class zNPCNewsFish * this /* r18 */, enum say_enum s /* r2 */, Code range: 0x002EC570 -> 0x002EC780 */ // Range: 0x2EC570 -> 0x2EC780 -void Render(class zNPCNewsFish * this /* r18 */) { +void Render(class zNPCNewsFish* this /* r18 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC570 -> 0x2EC780 - class xLightKit * lastLightKit; // r17 + class xLightKit* lastLightKit; // r17 enum _SDRenderState oldstate; // r16 class xMat4x3 oldMat; // r29+0x50 class basic_rect r; // r29+0x40 @@ -4217,7 +4630,8 @@ void Render(class zNPCNewsFish * this /* r18 */) { Code range: 0x002EC780 -> 0x002EC7B0 */ // Range: 0x2EC780 -> 0x2EC7B0 -void TalkOnScreen(class zNPCNewsFish * this /* r2 */, signed int talkOnScreen /* r2 */) { +void TalkOnScreen(class zNPCNewsFish* this /* r2 */, signed int talkOnScreen /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC780 -> 0x2EC7B0 @@ -4231,7 +4645,8 @@ void TalkOnScreen(class zNPCNewsFish * this /* r2 */, signed int talkOnScreen /* Code range: 0x002EC7B0 -> 0x002EC818 */ // Range: 0x2EC7B0 -> 0x2EC818 -void SpeakStop(class zNPCNewsFish * this /* r16 */) { +void SpeakStop(class zNPCNewsFish* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC7B0 -> 0x2EC818 @@ -4245,7 +4660,9 @@ void SpeakStop(class zNPCNewsFish * this /* r16 */) { Code range: 0x002EC820 -> 0x002EC910 */ // Range: 0x2EC820 -> 0x2EC910 -void SpeakStart(class zNPCNewsFish * this /* r18 */, unsigned int sndid /* r17 */, unsigned int sndhandle /* r16 */) { +void SpeakStart(class zNPCNewsFish* this /* r18 */, unsigned int sndid /* r17 */, + unsigned int sndhandle /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC820 -> 0x2EC910 @@ -4259,7 +4676,8 @@ void SpeakStart(class zNPCNewsFish * this /* r18 */, unsigned int sndid /* r17 * Code range: 0x002EC910 -> 0x002ECA04 */ // Range: 0x2EC910 -> 0x2ECA04 -void Reset(class zNPCNewsFish * this /* r16 */) { +void Reset(class zNPCNewsFish* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EC910 -> 0x2ECA04 @@ -4273,11 +4691,12 @@ void Reset(class zNPCNewsFish * this /* r16 */) { Code range: 0x002ECA10 -> 0x002ECD5C */ // Range: 0x2ECA10 -> 0x2ECD5C -void Process(class zNPCNewsFish * this /* r16 */, float dt /* r20 */) { +void Process(class zNPCNewsFish* this /* r16 */, float dt /* r20 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ECA10 -> 0x2ECD5C - class xModelInstance * minst; // r3 + class xModelInstance* minst; // r3 class xVec3 delta; // r29+0x30 float lerp; // r29+0x40 float invLerp; // r4 @@ -4291,7 +4710,8 @@ void Process(class zNPCNewsFish * this /* r16 */, float dt /* r20 */) { Code range: 0x002ECD60 -> 0x002ECD7C */ // Range: 0x2ECD60 -> 0x2ECD7C -void PostSetup(class zNPCNewsFish * this /* r2 */) { +void PostSetup(class zNPCNewsFish* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ECD60 -> 0x2ECD7C @@ -4305,7 +4725,8 @@ void PostSetup(class zNPCNewsFish * this /* r2 */) { Code range: 0x002ECD80 -> 0x002ECE5C */ // Range: 0x2ECD80 -> 0x2ECE5C -void Init(class zNPCNewsFish * this /* r16 */, class xEntAsset * asset /* r2 */) { +void Init(class zNPCNewsFish* this /* r16 */, class xEntAsset* asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ECD80 -> 0x2ECE5C @@ -4320,11 +4741,12 @@ void Init(class zNPCNewsFish * this /* r16 */, class xEntAsset * asset /* r2 */) Code range: 0x002ECE60 -> 0x002ECED0 */ // Range: 0x2ECE60 -> 0x2ECED0 -void Process(class zNPCMerManChair * this /* r16 */, float dt /* r29+0x20 */) { +void Process(class zNPCMerManChair* this /* r16 */, float dt /* r29+0x20 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ECE60 -> 0x2ECED0 - class xModelInstance * minst; // r4 + class xModelInstance* minst; // r4 } } @@ -4335,7 +4757,9 @@ void Process(class zNPCMerManChair * this /* r16 */, float dt /* r29+0x20 */) { Code range: 0x002ECED0 -> 0x002ED0A4 */ // Range: 0x2ECED0 -> 0x2ED0A4 -unsigned int AnimPick(class zNPCMerManChair * this /* r18 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal * rawgoal /* r2 */) { +unsigned int AnimPick(class zNPCMerManChair* this /* r18 */, signed int gid /* r2 */, + enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal* rawgoal /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ECED0 -> 0x2ED0A4 @@ -4354,13 +4778,14 @@ unsigned int AnimPick(class zNPCMerManChair * this /* r18 */, signed int gid /* Code range: 0x002ED0B0 -> 0x002ED180 */ // Range: 0x2ED0B0 -> 0x2ED180 -void SelfSetup(class zNPCMerManChair * this /* r17 */) { +void SelfSetup(class zNPCMerManChair* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED0B0 -> 0x2ED180 - class xBehaveMgr * bmgr; // r2 - class xPsyche * psy; // r16 - class xGoal * goal; // r2 + class xBehaveMgr* bmgr; // r2 + class xPsyche* psy; // r16 + class xGoal* goal; // r2 } } @@ -4371,11 +4796,12 @@ void SelfSetup(class zNPCMerManChair * this /* r17 */) { Code range: 0x002ED180 -> 0x002ED27C */ // Range: 0x2ED180 -> 0x2ED27C -void Reset(class zNPCMerManChair * this /* r16 */) { +void Reset(class zNPCMerManChair* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED180 -> 0x2ED27C - class ztaskbox * pat_converse; // r2 + class ztaskbox* pat_converse; // r2 } } @@ -4386,7 +4812,8 @@ void Reset(class zNPCMerManChair * this /* r16 */) { Code range: 0x002ED280 -> 0x002ED2D4 */ // Range: 0x2ED280 -> 0x2ED2D4 -void Init(class zNPCMerManChair * this /* r16 */, class xEntAsset * asset /* r2 */) { +void Init(class zNPCMerManChair* this /* r16 */, class xEntAsset* asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED280 -> 0x2ED2D4 @@ -4400,13 +4827,14 @@ void Init(class zNPCMerManChair * this /* r16 */, class xEntAsset * asset /* r2 Code range: 0x002ED2E0 -> 0x002ED4C4 */ // Range: 0x2ED2E0 -> 0x2ED4C4 -void MonitorCowering(class zNPCFish * this /* r18 */) { +void MonitorCowering(class zNPCFish* this /* r18 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED2E0 -> 0x2ED4C4 class xVec3 vec; // r29+0x50 - class NPCTarget * tgt; // r17 - class NPCConfig * cfg; // r16 + class NPCTarget* tgt; // r17 + class NPCConfig* cfg; // r16 } } @@ -4417,15 +4845,16 @@ void MonitorCowering(class zNPCFish * this /* r18 */) { Code range: 0x002ED4D0 -> 0x002ED670 */ // Range: 0x2ED4D0 -> 0x2ED670 -signed int FolkHandleMail(class zNPCFish * this /* r19 */, class NPCMsg * msg /* r18 */) { +signed int FolkHandleMail(class zNPCFish* this /* r19 */, class NPCMsg* msg /* r18 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED4D0 -> 0x2ED670 signed int handled; // r17 - class xPsyche * psy; // r16 + class xPsyche* psy; // r16 signed int cancheer; // r17 signed int gid; // r2 - class zNPCGoalCheer * cheer; // r2 + class zNPCGoalCheer* cheer; // r2 } } @@ -4436,7 +4865,8 @@ signed int FolkHandleMail(class zNPCFish * this /* r19 */, class NPCMsg * msg /* Code range: 0x002ED670 -> 0x002ED770 */ // Range: 0x2ED670 -> 0x2ED770 -void Process(class zNPCFish * this /* r17 */, class xScene * xscn /* r16 */, float dt /* r20 */) { +void Process(class zNPCFish* this /* r17 */, class xScene* xscn /* r16 */, float dt /* r20 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED670 -> 0x2ED770 @@ -4450,7 +4880,9 @@ void Process(class zNPCFish * this /* r17 */, class xScene * xscn /* r16 */, flo Code range: 0x002ED770 -> 0x002ED8D0 */ // Range: 0x2ED770 -> 0x2ED8D0 -unsigned int AnimPick(class zNPCFish * this /* r2 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal * rawgoal /* r2 */) { +unsigned int AnimPick(class zNPCFish* this /* r2 */, signed int gid /* r2 */, + enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal* rawgoal /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED770 -> 0x2ED8D0 @@ -4466,13 +4898,14 @@ unsigned int AnimPick(class zNPCFish * this /* r2 */, signed int gid /* r2 */, e Code range: 0x002ED8D0 -> 0x002ED9C0 */ // Range: 0x2ED8D0 -> 0x2ED9C0 -void SelfSetup(class zNPCFish * this /* r17 */) { +void SelfSetup(class zNPCFish* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED8D0 -> 0x2ED9C0 - class zNPCVillager * npc; // r2 - class xBehaveMgr * bmgr; // r2 - class xPsyche * psy; // r16 + class zNPCVillager* npc; // r2 + class xBehaveMgr* bmgr; // r2 + class xPsyche* psy; // r16 } } @@ -4483,7 +4916,8 @@ void SelfSetup(class zNPCFish * this /* r17 */) { Code range: 0x002ED9C0 -> 0x002EDB34 */ // Range: 0x2ED9C0 -> 0x2EDB34 -void FishSoundTables(class zNPCFish * this /* r2 */) { +void FishSoundTables(class zNPCFish* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2ED9C0 -> 0x2EDB34 @@ -4497,7 +4931,8 @@ void FishSoundTables(class zNPCFish * this /* r2 */) { Code range: 0x002EDB40 -> 0x002EDB88 */ // Range: 0x2EDB40 -> 0x2EDB88 -void ParseINI(class zNPCFish * this /* r16 */) { +void ParseINI(class zNPCFish* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDB40 -> 0x2EDB88 @@ -4511,7 +4946,8 @@ void ParseINI(class zNPCFish * this /* r16 */) { Code range: 0x002EDB90 -> 0x002EDD9C */ // Range: 0x2EDB90 -> 0x2EDD9C -void Reset(class zNPCFish * this /* r16 */) { +void Reset(class zNPCFish* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDB90 -> 0x2EDD9C @@ -4525,7 +4961,8 @@ void Reset(class zNPCFish * this /* r16 */) { Code range: 0x002EDDA0 -> 0x002EDE2C */ // Range: 0x2EDDA0 -> 0x2EDE2C -void Init(class zNPCFish * this /* r16 */, class xEntAsset * asset /* r2 */) { +void Init(class zNPCFish* this /* r16 */, class xEntAsset* asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDDA0 -> 0x2EDE2C @@ -4539,7 +4976,8 @@ void Init(class zNPCFish * this /* r16 */, class xEntAsset * asset /* r2 */) { Code range: 0x002EDE30 -> 0x002EDE38 */ // Range: 0x2EDE30 -> 0x2EDE38 -void TossMyConverse(class zNPCVillager * this /* r2 */) { +void TossMyConverse(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDE30 -> 0x2EDE38 @@ -4553,11 +4991,12 @@ void TossMyConverse(class zNPCVillager * this /* r2 */) { Code range: 0x002EDE40 -> 0x002EDEB8 */ // Range: 0x2EDE40 -> 0x2EDEB8 -void FindMyConverse(class zNPCVillager * this /* r16 */) { +void FindMyConverse(class zNPCVillager* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDE40 -> 0x2EDEB8 - class xEntNPCAsset * nass; // r5 + class xEntNPCAsset* nass; // r5 } } @@ -4568,11 +5007,17 @@ void FindMyConverse(class zNPCVillager * this /* r16 */) { Code range: 0x002EDEC0 -> 0x002EDFD0 */ // Range: 0x2EDEC0 -> 0x2EDFD0 -void AddTalking(class xPsyche * psy /* r16 */, signed int (* eval_plyrnear)(class xGoal *, void *, enum en_trantype *, float, void *) /* r20 */, signed int (* eval_talking)(class xGoal *, void *, enum en_trantype *, float, void *) /* r19 */, signed int (* eval_chatter)(class xGoal *, void *, enum en_trantype *, float, void *) /* r18 */, signed int (* eval_speak)(class xGoal *, void *, enum en_trantype *, float, void *) /* r17 */) { +void AddTalking( + class xPsyche* psy /* r16 */, + signed int (*eval_plyrnear)(class xGoal*, void*, enum en_trantype*, float, void*) /* r20 */, + signed int (*eval_talking)(class xGoal*, void*, enum en_trantype*, float, void*) /* r19 */, + signed int (*eval_chatter)(class xGoal*, void*, enum en_trantype*, float, void*) /* r18 */, + signed int (*eval_speak)(class xGoal*, void*, enum en_trantype*, float, void*) /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDEC0 -> 0x2EDFD0 - class xGoal * goal; // r2 + class xGoal* goal; // r2 } } @@ -4583,7 +5028,8 @@ void AddTalking(class xPsyche * psy /* r16 */, signed int (* eval_plyrnear)(clas Code range: 0x002EDFD0 -> 0x002EE120 */ // Range: 0x2EDFD0 -> 0x2EE120 -signed int PlayerIsStaring(class zNPCVillager * this /* r2 */) { +signed int PlayerIsStaring(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EDFD0 -> 0x2EE120 @@ -4599,13 +5045,14 @@ signed int PlayerIsStaring(class zNPCVillager * this /* r2 */) { Code range: 0x002EE120 -> 0x002EE17C */ // Range: 0x2EE120 -> 0x2EE17C -void SpeakStop(class zNPCVillager * this /* r2 */) { +void SpeakStop(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE120 -> 0x2EE17C - class xGoal * goal; // r2 - class zNPCGoalTalk * talkgoal; // r2 - class zNPCGoalSpeak * talkgoal; // r2 + class xGoal* goal; // r2 + class zNPCGoalTalk* talkgoal; // r2 + class zNPCGoalSpeak* talkgoal; // r2 } } @@ -4616,13 +5063,15 @@ void SpeakStop(class zNPCVillager * this /* r2 */) { Code range: 0x002EE180 -> 0x002EE214 */ // Range: 0x2EE180 -> 0x2EE214 -void SpeakStart(class zNPCVillager * this /* r2 */, unsigned int sndid /* r17 */, signed int anim /* r2 */) { +void SpeakStart(class zNPCVillager* this /* r2 */, unsigned int sndid /* r17 */, + signed int anim /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE180 -> 0x2EE214 - class xGoal * goal; // r16 - class zNPCGoalTalk * talkgoal; // r2 - class zNPCGoalSpeak * talkgoal; // r2 + class xGoal* goal; // r16 + class zNPCGoalTalk* talkgoal; // r2 + class zNPCGoalSpeak* talkgoal; // r2 } } @@ -4633,11 +5082,12 @@ void SpeakStart(class zNPCVillager * this /* r2 */, unsigned int sndid /* r17 */ Code range: 0x002EE220 -> 0x002EE270 */ // Range: 0x2EE220 -> 0x2EE270 -void SpeakEnd(class zNPCVillager * this /* r2 */) { +void SpeakEnd(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE220 -> 0x2EE270 - class xPsyche * psy; // r16 + class xPsyche* psy; // r16 } } @@ -4648,7 +5098,8 @@ void SpeakEnd(class zNPCVillager * this /* r2 */) { Code range: 0x002EE270 -> 0x002EE284 */ // Range: 0x2EE270 -> 0x2EE284 -void SpeakBegin(class zNPCVillager * this /* r2 */) { +void SpeakBegin(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE270 -> 0x2EE284 @@ -4662,7 +5113,8 @@ void SpeakBegin(class zNPCVillager * this /* r2 */) { Code range: 0x002EE290 -> 0x002EE390 */ // Range: 0x2EE290 -> 0x2EE390 -signed int FolkHandleMail(class zNPCVillager * this /* r2 */, class NPCMsg * mail /* r2 */) { +signed int FolkHandleMail(class zNPCVillager* this /* r2 */, class NPCMsg* mail /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE290 -> 0x2EE390 @@ -4677,13 +5129,14 @@ signed int FolkHandleMail(class zNPCVillager * this /* r2 */, class NPCMsg * mai Code range: 0x002EE390 -> 0x002EE474 */ // Range: 0x2EE390 -> 0x2EE474 -signed int NPCMessage(class zNPCVillager * this /* r19 */, class NPCMsg * mail /* r18 */) { +signed int NPCMessage(class zNPCVillager* this /* r19 */, class NPCMsg* mail /* r18 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE390 -> 0x2EE474 - class zNPCGoalCommon * curgoal; // r17 - class zNPCGoalCommon * recgoal; // r2 - class xPsyche * psy; // r16 + class zNPCGoalCommon* curgoal; // r17 + class zNPCGoalCommon* recgoal; // r2 + class xPsyche* psy; // r16 signed int handled; // r2 } } @@ -4695,7 +5148,9 @@ signed int NPCMessage(class zNPCVillager * this /* r19 */, class NPCMsg * mail / Code range: 0x002EE480 -> 0x002EE848 */ // Range: 0x2EE480 -> 0x2EE848 -unsigned int AnimPick(class zNPCVillager * this /* r17 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */) { +unsigned int AnimPick(class zNPCVillager* this /* r17 */, signed int gid /* r2 */, + enum en_NPC_GOAL_SPOT gspot /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE480 -> 0x2EE848 @@ -4720,12 +5175,13 @@ unsigned int AnimPick(class zNPCVillager * this /* r17 */, signed int gid /* r2 Code range: 0x002EE850 -> 0x002EE92C */ // Range: 0x2EE850 -> 0x2EE92C -void SelfSetup(class zNPCVillager * this /* r17 */) { +void SelfSetup(class zNPCVillager* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE850 -> 0x2EE92C - class xBehaveMgr * bmgr; // r2 - class xPsyche * psy; // r16 + class xBehaveMgr* bmgr; // r2 + class xPsyche* psy; // r16 } } @@ -4736,11 +5192,12 @@ void SelfSetup(class zNPCVillager * this /* r17 */) { Code range: 0x002EE930 -> 0x002EE9A4 */ // Range: 0x2EE930 -> 0x2EE9A4 -void CollideReview(class zNPCVillager * this /* r17 */) { +void CollideReview(class zNPCVillager* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE930 -> 0x2EE9A4 - class zNPCGoalCommon * goal; // r2 + class zNPCGoalCommon* goal; // r2 signed int goaldidit; // r16 } } @@ -4752,7 +5209,8 @@ void CollideReview(class zNPCVillager * this /* r17 */) { Code range: 0x002EE9B0 -> 0x002EEB90 */ // Range: 0x2EE9B0 -> 0x2EEB90 -void ChkCheatSize(class zNPCVillager * this /* r16 */) { +void ChkCheatSize(class zNPCVillager* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EE9B0 -> 0x2EEB90 @@ -4767,7 +5225,8 @@ void ChkCheatSize(class zNPCVillager * this /* r16 */) { Code range: 0x002EEB90 -> 0x002EEBF0 */ // Range: 0x2EEB90 -> 0x2EEBF0 -void Process(class zNPCVillager * this /* r17 */, class xScene * xscn /* r16 */, float dt /* r20 */) { +void Process(class zNPCVillager* this /* r17 */, class xScene* xscn /* r16 */, float dt /* r20 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEB90 -> 0x2EEBF0 @@ -4781,11 +5240,12 @@ void Process(class zNPCVillager * this /* r17 */, class xScene * xscn /* r16 */, Code range: 0x002EEBF0 -> 0x002EECF8 */ // Range: 0x2EEBF0 -> 0x2EECF8 -void ParseNonRandTalk(class zNPCVillager * this /* r5 */) { +void ParseNonRandTalk(class zNPCVillager* this /* r5 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEBF0 -> 0x2EECF8 - class NPCConfig * cfg; // r16 + class NPCConfig* cfg; // r16 float non_choices[4]; // r29+0x20 signed int found; // r2 signed int i; // r7 @@ -4801,7 +5261,8 @@ void ParseNonRandTalk(class zNPCVillager * this /* r5 */) { Code range: 0x002EED00 -> 0x002EED40 */ // Range: 0x2EED00 -> 0x2EED40 -void ParseINI(class zNPCVillager * this /* r16 */) { +void ParseINI(class zNPCVillager* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EED00 -> 0x2EED40 @@ -4815,11 +5276,12 @@ void ParseINI(class zNPCVillager * this /* r16 */) { Code range: 0x002EED40 -> 0x002EEDE4 */ // Range: 0x2EED40 -> 0x2EEDE4 -void Reset(class zNPCVillager * this /* r17 */) { +void Reset(class zNPCVillager* this /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EED40 -> 0x2EEDE4 - class NPCConfig * cfg; // r16 + class NPCConfig* cfg; // r16 } } @@ -4830,7 +5292,8 @@ void Reset(class zNPCVillager * this /* r17 */) { Code range: 0x002EEDF0 -> 0x002EEE20 */ // Range: 0x2EEDF0 -> 0x2EEE20 -void Init(class zNPCVillager * this /* r16 */, class xEntAsset * asset /* r2 */) { +void Init(class zNPCVillager* this /* r16 */, class xEntAsset* asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEDF0 -> 0x2EEE20 @@ -4844,7 +5307,8 @@ void Init(class zNPCVillager * this /* r16 */, class xEntAsset * asset /* r2 */) Code range: 0x002EEE20 -> 0x002EEE68 */ // Range: 0x2EEE20 -> 0x2EEE68 -unsigned char PhysicsFlags(class zNPCVillager * this /* r2 */) { +unsigned char PhysicsFlags(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEE20 -> 0x2EEE68 @@ -4859,7 +5323,8 @@ unsigned char PhysicsFlags(class zNPCVillager * this /* r2 */) { Code range: 0x002EEE70 -> 0x002EEED8 */ // Range: 0x2EEE70 -> 0x2EEED8 -unsigned char ColPenFlags(class zNPCVillager * this /* r2 */) { +unsigned char ColPenFlags(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEE70 -> 0x2EEED8 @@ -4874,7 +5339,8 @@ unsigned char ColPenFlags(class zNPCVillager * this /* r2 */) { Code range: 0x002EEEE0 -> 0x002EEF48 */ // Range: 0x2EEEE0 -> 0x2EEF48 -unsigned char ColChkFlags(class zNPCVillager * this /* r2 */) { +unsigned char ColChkFlags(class zNPCVillager* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEEE0 -> 0x2EEF48 @@ -4889,12 +5355,13 @@ unsigned char ColChkFlags(class zNPCVillager * this /* r2 */) { Code range: 0x002EEF50 -> 0x002EF31C */ // Range: 0x2EEF50 -> 0x2EF31C -class xAnimTable * ZNPC_AnimTable_SuperFriend(class xAnimTable * callerTable /* r2 */) { +class xAnimTable* ZNPC_AnimTable_SuperFriend(class xAnimTable* callerTable /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EEF50 -> 0x2EF31C - class xAnimTable * table; // r17 - char * * names; // r16 + class xAnimTable* table; // r17 + char** names; // r16 signed int ourAnims[10]; // r29+0x50 } } @@ -4906,7 +5373,8 @@ class xAnimTable * ZNPC_AnimTable_SuperFriend(class xAnimTable * callerTable /* Code range: 0x002EF320 -> 0x002EF328 */ // Range: 0x2EF320 -> 0x2EF328 -class xAnimTable * ZNPC_AnimTable_SuperFriend() { +class xAnimTable* ZNPC_AnimTable_SuperFriend() +{ // Blocks /* anonymous block */ { // Range: 0x2EF320 -> 0x2EF328 @@ -4920,12 +5388,13 @@ class xAnimTable * ZNPC_AnimTable_SuperFriend() { Code range: 0x002EF330 -> 0x002EF5F0 */ // Range: 0x2EF330 -> 0x2EF5F0 -class xAnimTable * ZNPC_AnimTable_BalloonBoy(class xAnimTable * callerTable /* r2 */) { +class xAnimTable* ZNPC_AnimTable_BalloonBoy(class xAnimTable* callerTable /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EF330 -> 0x2EF5F0 - class xAnimTable * table; // r17 - char * * names; // r16 + class xAnimTable* table; // r17 + char** names; // r16 signed int ourAnims[7]; // r29+0x50 } } @@ -4937,7 +5406,8 @@ class xAnimTable * ZNPC_AnimTable_BalloonBoy(class xAnimTable * callerTable /* r Code range: 0x002EF5F0 -> 0x002EF5F8 */ // Range: 0x2EF5F0 -> 0x2EF5F8 -class xAnimTable * ZNPC_AnimTable_BalloonBoy() { +class xAnimTable* ZNPC_AnimTable_BalloonBoy() +{ // Blocks /* anonymous block */ { // Range: 0x2EF5F0 -> 0x2EF5F8 @@ -4951,12 +5421,13 @@ class xAnimTable * ZNPC_AnimTable_BalloonBoy() { Code range: 0x002EF600 -> 0x002EF98C */ // Range: 0x2EF600 -> 0x2EF98C -class xAnimTable * ZNPC_AnimTable_Villager(class xAnimTable * callerTable /* r2 */) { +class xAnimTable* ZNPC_AnimTable_Villager(class xAnimTable* callerTable /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EF600 -> 0x2EF98C - class xAnimTable * table; // r17 - char * * names; // r16 + class xAnimTable* table; // r17 + char** names; // r16 signed int ourAnims[11]; // r29+0x50 } } @@ -4968,7 +5439,8 @@ class xAnimTable * ZNPC_AnimTable_Villager(class xAnimTable * callerTable /* r2 Code range: 0x002EF990 -> 0x002EF998 */ // Range: 0x2EF990 -> 0x2EF998 -class xAnimTable * ZNPC_AnimTable_Villager() { +class xAnimTable* ZNPC_AnimTable_Villager() +{ // Blocks /* anonymous block */ { // Range: 0x2EF990 -> 0x2EF998 @@ -4982,7 +5454,8 @@ class xAnimTable * ZNPC_AnimTable_Villager() { Code range: 0x002EF9A0 -> 0x002EF9C4 */ // Range: 0x2EF9A0 -> 0x2EF9C4 -void ZNPC_Destroy_Villager(class xFactoryInst * inst /* r2 */) { +void ZNPC_Destroy_Villager(class xFactoryInst* inst /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EF9A0 -> 0x2EF9C4 @@ -4996,11 +5469,13 @@ void ZNPC_Destroy_Villager(class xFactoryInst * inst /* r2 */) { Code range: 0x002EF9D0 -> 0x002EFF60 */ // Range: 0x2EF9D0 -> 0x2EFF60 -class xFactoryInst * ZNPC_Create_Villager(signed int who /* r16 */, class RyzMemGrow * growCtxt /* r2 */) { +class xFactoryInst* ZNPC_Create_Villager(signed int who /* r16 */, + class RyzMemGrow* growCtxt /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EF9D0 -> 0x2EFF60 - class zNPCVillager * vil; // r2 + class zNPCVillager* vil; // r2 } } @@ -5011,7 +5486,8 @@ class xFactoryInst * ZNPC_Create_Villager(signed int who /* r16 */, class RyzMem Code range: 0x002EFF60 -> 0x002F0078 */ // Range: 0x2EFF60 -> 0x2F0078 -void zNPCVillager_SceneTimestep(float dt /* r29+0x20 */) { +void zNPCVillager_SceneTimestep(float dt /* r29+0x20 */) +{ // Blocks /* anonymous block */ { // Range: 0x2EFF60 -> 0x2F0078 @@ -5025,7 +5501,8 @@ void zNPCVillager_SceneTimestep(float dt /* r29+0x20 */) { Code range: 0x002F0080 -> 0x002F00F8 */ // Range: 0x2F0080 -> 0x2F00F8 -void zNPCVillager_ScenePostInit() { +void zNPCVillager_ScenePostInit() +{ // Blocks /* anonymous block */ { // Range: 0x2F0080 -> 0x2F00F8 @@ -5039,7 +5516,8 @@ void zNPCVillager_ScenePostInit() { Code range: 0x002F0100 -> 0x002F0108 */ // Range: 0x2F0100 -> 0x2F0108 -void zNPCVillager_SceneReset() { +void zNPCVillager_SceneReset() +{ // Blocks /* anonymous block */ { // Range: 0x2F0100 -> 0x2F0108 @@ -5053,7 +5531,8 @@ void zNPCVillager_SceneReset() { Code range: 0x002F0110 -> 0x002F0118 */ // Range: 0x2F0110 -> 0x2F0118 -void zNPCVillager_SceneFinish() { +void zNPCVillager_SceneFinish() +{ // Blocks /* anonymous block */ { // Range: 0x2F0110 -> 0x2F0118 @@ -5067,7 +5546,8 @@ void zNPCVillager_SceneFinish() { Code range: 0x002F0120 -> 0x002F0128 */ // Range: 0x2F0120 -> 0x2F0128 -void zNPCVillager_ScenePrepare() { +void zNPCVillager_ScenePrepare() +{ // Blocks /* anonymous block */ { // Range: 0x2F0120 -> 0x2F0128 @@ -5081,7 +5561,8 @@ void zNPCVillager_ScenePrepare() { Code range: 0x002F0130 -> 0x002F0138 */ // Range: 0x2F0130 -> 0x2F0138 -void ZNPC_Villager_Shutdown() { +void ZNPC_Villager_Shutdown() +{ // Blocks /* anonymous block */ { // Range: 0x2F0130 -> 0x2F0138 @@ -5095,11 +5576,11 @@ void ZNPC_Villager_Shutdown() { Code range: 0x002F0140 -> 0x002F01D0 */ // Range: 0x2F0140 -> 0x2F01D0 -void ZNPC_Villager_Startup() { +void ZNPC_Villager_Startup() +{ // Blocks /* anonymous block */ { // Range: 0x2F0140 -> 0x2F01D0 signed int i; // r18 } } - diff --git a/src/SB/Core/x/xFX.h b/src/SB/Core/x/xFX.h index 408c848ff..009740fb8 100644 --- a/src/SB/Core/x/xFX.h +++ b/src/SB/Core/x/xFX.h @@ -167,6 +167,8 @@ extern xFXStreak sStreakList[10]; extern xFXShine sShineList[2]; extern xFXRing ringlist[RING_COUNT]; +extern RpAtomic* (*gAtomicRenderCallBack)(RpAtomic*); + void xFXInit(); U32 xFXShineStart(const xVec3*, F32, F32, F32, F32, U32, const iColor_tag*, const iColor_tag*, F32, S32); diff --git a/src/SB/Core/x/xutil.h b/src/SB/Core/x/xutil.h index 313356b01..7d84322c0 100644 --- a/src/SB/Core/x/xutil.h +++ b/src/SB/Core/x/xutil.h @@ -1,6 +1,7 @@ #ifndef XUTIL_H #define XUTIL_H +#include "xMath.h" #include S32 xUtilStartup(); @@ -13,4 +14,36 @@ void xUtil_wtadjust(F32* wts, S32 cnt, F32 arbref); template static T* xUtil_select(T** arg0, S32 arg1, const F32* arg3); +template T xUtil_choose(T const* list, S32 size, F32 const* float_list) +{ + if (list == NULL) + return NULL; + if (size < 1) + return NULL; + S32 idx = 0; + F32 rand = xurand(); + if (float_list == NULL) + idx = rand * size; + else + { + const F32* float_it = float_list; + F32 total = 0.0f; + for (S32 i = 0; i < size; float_it++, i++) + { + F32 prev_total = total; + total += *float_it; + if (rand >= prev_total && rand <= total) + { + idx = i; + break; + } + } + } + if (idx >= size) + idx = size - 1; + if (idx < 0) + idx = 0; + return list[idx]; +} + #endif diff --git a/src/SB/Game/zEntCruiseBubble.cpp b/src/SB/Game/zEntCruiseBubble.cpp index 27bd996dc..d3d2feeb0 100644 --- a/src/SB/Game/zEntCruiseBubble.cpp +++ b/src/SB/Game/zEntCruiseBubble.cpp @@ -40,8 +40,6 @@ basic_rect default_adjust = { 0.0f, 0.0f, 1.0f, 1.0f }; extern iColor_tag zEntCruiseBubble_color_80_00_00_FF; // 128, 0, 0, 255 extern iColor_tag zEntCruiseBubble_color_FF_14_14_FF; // 255, 20, 20, 255 -extern RpAtomic* (*gAtomicRenderCallBack)(RpAtomic*); - namespace cruise_bubble { namespace diff --git a/src/SB/Game/zGameExtras.cpp b/src/SB/Game/zGameExtras.cpp index 4bdd0e791..0a17e5a77 100644 --- a/src/SB/Game/zGameExtras.cpp +++ b/src/SB/Game/zGameExtras.cpp @@ -7,7 +7,7 @@ #include "xSnd.h" #include "xEnt.h" #include "xCounter.h" -#include "xMath.h" +#include "xUtil.h" #include "zGameExtras.h" #include "zEntPlayer.h" @@ -740,49 +740,3 @@ U32 zGame_HackIsGallery() } return 0; } - -template <> U32 xUtil_choose(U32 const* list, S32 size, F32 const* float_list) -{ - if (list == NULL) - { - return NULL; - } - - if (size < 1) - { - return NULL; - } - - S32 idx = 0; - F32 rand = xurand(); - - if (float_list == NULL) - { - idx = rand * size; - } - else - { - const F32* float_it = float_list; - F32 total = 0.0f; - for (S32 i = 0; i < size; float_it++, i++) - { - float prev_total = total; - total += *float_it; - if (rand >= prev_total && rand <= total) - { - idx = i; - break; - } - } - } - - if (idx >= size) - { - idx = size - 1; - } - if (idx < 0) - { - idx = 0; - } - return list[idx]; -} diff --git a/src/SB/Game/zGameExtras.h b/src/SB/Game/zGameExtras.h index a97ac4811..74a060ec9 100644 --- a/src/SB/Game/zGameExtras.h +++ b/src/SB/Game/zGameExtras.h @@ -84,6 +84,4 @@ void GEC_cb_PanHandle(); void zGame_HackGalleryInit(); U32 zGame_HackIsGallery(); -template T xUtil_choose(T const* list, S32 size, F32 const* c); - #endif diff --git a/src/SB/Game/zNPCGoalCommon.h b/src/SB/Game/zNPCGoalCommon.h index b11b38f6e..2e760b47a 100644 --- a/src/SB/Game/zNPCGoalCommon.h +++ b/src/SB/Game/zNPCGoalCommon.h @@ -44,7 +44,7 @@ struct zNPCGoalCommon : xGoal return 0; } - virtual U8 CollReview(void*) + virtual S32 CollReview(void*) { return 0; } diff --git a/src/SB/Game/zNPCGoalRobo.cpp b/src/SB/Game/zNPCGoalRobo.cpp index 674c48992..64fa3c23b 100644 --- a/src/SB/Game/zNPCGoalRobo.cpp +++ b/src/SB/Game/zNPCGoalRobo.cpp @@ -5037,12 +5037,12 @@ void zNPCGoalDogLaunch::SilentSwimout(xVec3* unk1, xVec3* unk2, zMovePoint* unk3 this->ViciousAttack(unk1, unk2, unk3, 1); } -U8 zNPCGoalPatThrow::CollReview(void*) +S32 zNPCGoalPatThrow::CollReview(void*) { return 0; } -U8 zNPCGoalDogLaunch::CollReview(void*) +S32 zNPCGoalDogLaunch::CollReview(void*) { return 0; } diff --git a/src/SB/Game/zNPCGoalStd.h b/src/SB/Game/zNPCGoalStd.h index dee0ae678..f40c30fc6 100644 --- a/src/SB/Game/zNPCGoalStd.h +++ b/src/SB/Game/zNPCGoalStd.h @@ -323,7 +323,7 @@ class zNPCGoalLassoThrow : public zNPCGoalCommon S32 Enter(F32 dt, void* updCtxt); S32 Exit(F32 dt, void* updCtxt); S32 Process(en_trantype* trantype, F32 dt, void* updCtxt, xScene* xscn); - U8 CollReview(void*); + S32 CollReview(void*); void ApplyYank(S32 left); S32 flg_throw; // offset 0x4C, size 0x4 S32 floorBounce; // offset 0x50, size 0x4 @@ -635,7 +635,7 @@ struct zNPCGoalPatThrow : zNPCGoalCommon } S32 Enter(F32 dt, void* updCtxt); - U8 CollReview(void*); + S32 CollReview(void*); }; enum en_alertchuk @@ -771,7 +771,7 @@ class zNPCGoalAlertGlove : public zNPCGoalCommon void FXWhirlwind(); void CalcAttackVector(); void CheckHandBones(); - U8 CollReview(void*); + S32 CollReview(void*); F32 tmr_attack; // offset 0x4C, size 0x4 F32 tmr_minAttack; // offset 0x50, size 0x4 xVec3 pos_began; // offset 0x54, size 0xC @@ -1050,11 +1050,12 @@ struct zNPCGoalDogLaunch : zNPCGoalCommon void ViciousAttack(xVec3* unk1, xVec3* unk2, zMovePoint* unk3, S32 unk4); void PreCollide(); S32 BallisticUpdate(F32 dt); - void BubTrailCone(const xVec3* pos, S32 num, const xVec3* pos_rand, const xVec3* vel_rand, const xMat3x3* mat); + void BubTrailCone(const xVec3* pos, S32 num, const xVec3* pos_rand, const xVec3* vel_rand, + const xMat3x3* mat); void FurryFlurry(); void SilentSwimout(xVec3* unk1, xVec3* unk2, zMovePoint* unk3); - U8 CollReview(void*); + S32 CollReview(void*); }; class zNPCGoalDogBark : public zNPCGoalLoopAnim @@ -1349,7 +1350,7 @@ class zNPCGoalKnock : public zNPCGoalCommon S32 Exit(F32 dt, void* updCtxt); S32 Process(en_trantype* trantype, F32 dt, void* updCtxt, xScene* xscn); S32 InputInfo(NPCDamageInfo* info); - U8 CollReview(void*); + S32 CollReview(void*); void StreakPrep(); void StreakDone(); void StreakUpdate(); @@ -1371,7 +1372,7 @@ class zNPCGoalWound : public zNPCGoalPushAnim S32 Enter(F32, void*); S32 Process(en_trantype* trantype, F32 dt, void* updCtxt, xScene* xscn); - U8 CollReview(void*); + S32 CollReview(void*); S32 NPCMessage(NPCMsg*); xVec3 dir_fling; // offset 0x54, size 0xC S32 flg_knock; // offset 0x60, size 0x4 diff --git a/src/SB/Game/zNPCGoalVillager.h b/src/SB/Game/zNPCGoalVillager.h index bbb0da4c8..8f401be29 100644 --- a/src/SB/Game/zNPCGoalVillager.h +++ b/src/SB/Game/zNPCGoalVillager.h @@ -141,7 +141,7 @@ struct zNPCGoalBoyFall : zNPCGoalCommon } virtual S32 Process(en_trantype* trantype, F32 dt, void* updCtxt, xScene* scene); - virtual U8 CollReview(void*); + virtual S32 CollReview(void*); }; struct zNPCGoalBoyWeep : zNPCGoalCommon diff --git a/src/SB/Game/zNPCHazard.cpp b/src/SB/Game/zNPCHazard.cpp index 59811c473..c6674836f 100644 --- a/src/SB/Game/zNPCHazard.cpp +++ b/src/SB/Game/zNPCHazard.cpp @@ -10,7 +10,7 @@ #include "zNPCSupport.h" #include "xMath.h" #include "xMathInlines.h" -#include "zGameExtras.h" +#include "xUtil.h" extern U32 g_hash_hazanim[3]; extern char* g_strz_hazanim[3]; @@ -40,7 +40,7 @@ static en_hazmodel g_funfrag_choices[8] = { NPC_HAZMDL_FUNFRAG_CELLPHONE, NPC_HAZMDL_FUNFRAG_SHOE, }; -static zShrapnelAsset * g_data_hazshrap[5] = { NULL, NULL, NULL, NULL, NULL }; +static zShrapnelAsset* g_data_hazshrap[5] = { NULL, NULL, NULL, NULL, NULL }; static char* g_strz_hazModel[30]; static NPCHazard g_hazards[64]; @@ -374,7 +374,8 @@ void NPCHazard::Upd_PuppyNuke(F32 dt) } } - if (this->flg_casthurt == 0 && this->npc_owner != NULL && this->flg_hazard & 0x2000 && this->pam_interp > 0.7f) + if (this->flg_casthurt == 0 && this->npc_owner != NULL && this->flg_hazard & 0x2000 && + this->pam_interp > 0.7f) { zNPCMsg_AreaNPCExplodeNoRobo(npc_owner, ball->rad_max, &this->pos_hazard); this->flg_casthurt = 1; @@ -399,7 +400,8 @@ void NPCHazard::Upd_FodBomb(F32 dt) } } - if (this->flg_casthurt == 0 && this->npc_owner != NULL && this->flg_hazard & 0x2000 && this->pam_interp > 0.7f) + if (this->flg_casthurt == 0 && this->npc_owner != NULL && this->flg_hazard & 0x2000 && + this->pam_interp > 0.7f) { zNPCMsg_AreaNPCExplodeNoRobo(npc_owner, ball->rad_max, &this->pos_hazard); this->flg_casthurt = 1; @@ -415,7 +417,7 @@ void NPCHazard::FodBombBubbles(F32 dt) static const xVec3 pos_spread = { 0.1f, 2.0f, 0.1f }; static const xVec3 pos_offsetFirst = { 0.0f, -0.5f, 0.0f }; static const xVec3 pos_offsetLater = { 0.0f, -1.0f, 0.0f }; - + if (this->flg_hazard & 0x8) { xVec3 pos_emit = this->pos_hazard; @@ -429,7 +431,7 @@ void NPCHazard::FodBombBubbles(F32 dt) xVec3 pos_emit = this->pos_hazard; pos_emit += pos_offsetLater; - zFX_SpawnBubbleSlam(&pos_emit, 0x18, PI, 4.0f * tym, tym); + zFX_SpawnBubbleSlam(&pos_emit, 0x18, PI, 4.0f * tym, tym); } } @@ -438,7 +440,8 @@ void NPCHazard::Upd_CattleProd(F32 dt) HAZCatProd* catprod = &this->custdata.catprod; catprod->rad_cur = LERP(isin(PI * this->pam_interp), catprod->rad_min, catprod->rad_max); - if (this->flg_hazard & 0x2000 && !(globals.player.DamageTimer > 0.0f) && this->tym_lifespan - this->tmr_remain > 0.25f) + if (this->flg_hazard & 0x2000 && !(globals.player.DamageTimer > 0.0f) && + this->tym_lifespan - this->tmr_remain > 0.25f) { if (ColPlyrSphere(catprod->rad_cur)) { @@ -455,7 +458,7 @@ void NPCHazard::Upd_CattleProd(F32 dt) pos_lytend.x = catprod->rad_cur; pos_lytend.y = catprod->rad_cur; pos_lytend.z = catprod->rad_cur; - + info.time = this->tmr_remain; info.start = &this->pos_hazard; @@ -470,7 +473,7 @@ void NPCHazard::Upd_CattleProd(F32 dt) xVec3AddTo(&pos_lytend, &this->pos_hazard); info.end = &pos_lytend; catprod->zap_lyta = zLightningAdd(&info); - + xVec3SubFrom(&pos_lytend, &this->pos_hazard); pos_lytend.y *= -1.0f; xVec3AddTo(&pos_lytend, &this->pos_hazard); @@ -490,20 +493,21 @@ void NPCHazard::Upd_CattleProd(F32 dt) if (tym > 0.8f && tym < 1.0f) { xVec3SMul(&pos_lytend, NPCC_faceDir(this->npc_owner), catprod->rad_cur); - xVec3AddScaled(&pos_lytend, NPCC_rightDir(this->npc_owner), (xrand() & 0x800000 ? 0.2f : 0.2f) * xurand()); + xVec3AddScaled(&pos_lytend, NPCC_rightDir(this->npc_owner), + (xrand() & 0x800000 ? 0.2f : 0.2f) * xurand()); } else { pos_lytend.x *= xurand(); pos_lytend.y *= xurand(); - pos_lytend.z *= xurand(); + pos_lytend.z *= xurand(); } } else { pos_lytend.x *= xurand(); pos_lytend.y *= xurand(); - pos_lytend.z *= xurand(); + pos_lytend.z *= xurand(); } xVec3AddTo(&pos_lytend, &this->pos_hazard); @@ -543,7 +547,7 @@ void NPCHazard::Upd_TubeletBlast(F32 dt) } static S32 moreorless = 0; - + if (--moreorless < 0) { moreorless = 3; @@ -578,7 +582,8 @@ void NPCHazard::Upd_DuploBoom(F32 dt) } } - if (this->flg_casthurt == 0 && this->npc_owner != NULL && this->flg_hazard & 0x2000 && this->pam_interp > 0.7f) + if (this->flg_casthurt == 0 && this->npc_owner != NULL && this->flg_hazard & 0x2000 && + this->pam_interp > 0.7f) { zNPCMsg_AreaNPCExplodeNoRobo(npc_owner, ball->rad_max, &this->pos_hazard); this->flg_casthurt = 1; @@ -687,7 +692,7 @@ void NPCHazard::Upd_TTFlight(F32 dt) ReconTarTar(); return; } - + MarkForRecycle(); return; } @@ -728,7 +733,9 @@ void NPCHazard::Upd_TTFlight(F32 dt) PreCollide(); } - F32 tym = this->tym_lifespan < this->tym_lifespan - this->tmr_remain ? this->tym_lifespan : this->tym_lifespan - this->tmr_remain; + F32 tym = this->tym_lifespan < this->tym_lifespan - this->tmr_remain ? + this->tym_lifespan : + this->tym_lifespan - this->tmr_remain; xParabolaEvalPos(parab, &this->pos_hazard, tym); xParabolaEvalVel(parab, &tartar->vel, tym); @@ -748,36 +755,36 @@ void NPCHazard::Upd_TTFlight(F32 dt) if (ColPlyrSphere(tartar->rad_cur)) { HurtThePlayer(); - g_data_hazshrap[2]->initCB(g_data_hazshrap[2], globals.player.ent.model, &tartar->vel, NULL); - + g_data_hazshrap[2]->initCB(g_data_hazshrap[2], globals.player.ent.model, + &tartar->vel, NULL); + xVec3 whence; xParabolaEvalVel(parab, &whence, parab->maxTime); xVec3Inv(&whence, &whence); - + TarTarSplash(&whence); MarkForRecycle(); return; } - } - StaggeredCollide(); + StaggeredCollide(); - if (this->flg_hazard & 0x8) - { - TarTarFalumpf(); - } - else - { - TarTarGunkTrail(); - } + if (this->flg_hazard & 0x8) + { + TarTarFalumpf(); + } + else + { + TarTarGunkTrail(); + } - static S32 moreorless = 0; + static S32 moreorless = 0; - if (--moreorless < 0) - { - moreorless = 4; - zFX_SpawnBubbleTrail(&this->pos_hazard, 0x6); - } + if (--moreorless < 0) + { + moreorless = 4; + zFX_SpawnBubbleTrail(&this->pos_hazard, 0x6); + } } } @@ -1551,7 +1558,8 @@ void NPCHazard::ReconSlickOil() { xVec3Copy((xVec3*)&this->mdl_hazard->Mat->up, &dir_norm); NPCC_MakePerp((xVec3*)&this->mdl_hazard->Mat->at, &dir_norm); - xVec3Cross((xVec3*)&this->mdl_hazard->Mat->right, (xVec3*)&this->mdl_hazard->Mat->up, (xVec3*)&this->mdl_hazard->Mat->at); + xVec3Cross((xVec3*)&this->mdl_hazard->Mat->right, (xVec3*)&this->mdl_hazard->Mat->up, + (xVec3*)&this->mdl_hazard->Mat->at); } xMat3x3 mat; @@ -1574,7 +1582,7 @@ void NPCHazard::OilSplash(const xVec3* dir_norm) xVec3 up; xVec3 at; xVec3 rt; - + if (dir_norm) { up = *dir_norm; @@ -1626,7 +1634,7 @@ void NPCHazard::Upd_OilOoze(F32 dt) { static F32 seg_pam[2] = { 0.15f, 0.75f }; HAZBall* ball = &this->custdata.ball; - + if (this->pam_interp <= seg_pam[0]) { ball->rad_cur = (ball->rad_max - ball->rad_min) * EASE(this->pam_interp / seg_pam[0]); @@ -1634,7 +1642,8 @@ void NPCHazard::Upd_OilOoze(F32 dt) } else if (this->pam_interp >= seg_pam[1]) { - ball->rad_cur = (ball->rad_max - ball->rad_min) * EASE(1.0f - ((this->pam_interp - seg_pam[1]) / (1.0f - seg_pam[1]))); + ball->rad_cur = (ball->rad_max - ball->rad_min) * + EASE(1.0f - ((this->pam_interp - seg_pam[1]) / (1.0f - seg_pam[1]))); ball->rad_cur += ball->rad_min; } else @@ -1667,7 +1676,8 @@ void NPCHazard::Upd_OilOoze(F32 dt) this->tmr_nextglob = -1.0f > this->tmr_nextglob - dt ? -1.0f : this->tmr_nextglob - dt; - if (this->flg_hazard & 0x2000 && !(globals.player.DamageTimer > 0.0f) && ColPlyrSphere(ball->rad_cur)) + if (this->flg_hazard & 0x2000 && !(globals.player.DamageTimer > 0.0f) && + ColPlyrSphere(ball->rad_cur)) { NPCC_Slick_MakePlayerSlip(this->npc_owner); } @@ -1689,7 +1699,7 @@ void NPCHazard::Upd_OilOoze(F32 dt) S32 NPCHazard::KickOilBurst() { NPCHazard* haz = HAZ_Acquire(); - + S32 ok; if (haz == NULL) { @@ -1719,7 +1729,7 @@ S32 NPCHazard::KickOilGlobby() { HAZBall* ball = &this->custdata.ball; NPCHazard* haz = HAZ_Acquire(); - + S32 ok; if (haz == NULL) { @@ -1783,7 +1793,7 @@ void NPCHazard::Upd_OilGlob(F32 dt) shroom->vel_rise += shroom->acc_rise * dt; if (this->flg_hazard & 0x2000 && !(globals.player.DamageTimer > 0.0f) && - ColPlyrSphere(shroom->rad_cur)) + ColPlyrSphere(shroom->rad_cur)) { NPCC_Slick_MakePlayerSlip(this->npc_owner); } @@ -1821,7 +1831,9 @@ void NPCHazard::Upd_FunFrag(F32 dt) PreCollide(); } - F32 tym = this->tym_lifespan < this->tym_lifespan - this->tmr_remain ? this->tym_lifespan : this->tym_lifespan - this->tmr_remain; + F32 tym = this->tym_lifespan < this->tym_lifespan - this->tmr_remain ? + this->tym_lifespan : + this->tym_lifespan - this->tmr_remain; xParabolaEvalPos(parab, &this->pos_hazard, tym); xParabolaEvalVel(parab, &tartar->vel, tym); @@ -1837,7 +1849,7 @@ void NPCHazard::StreakUpdate(U32 streakID, F32 rad) { xVec3 pos_left; pos_left = *(xVec3*)At() * 0.5f * rad; - + xVec3 pos_right; pos_right = *(xVec3*)Up() * rad; pos_right += pos_left; @@ -1881,7 +1893,9 @@ void NPCHazard::Upd_RoboBits(F32 dt) this->tym_lifespan = keepFlightTime; } - F32 tym = this->tym_lifespan < this->tym_lifespan - this->tmr_remain ? this->tym_lifespan : this->tym_lifespan - this->tmr_remain; + F32 tym = this->tym_lifespan < this->tym_lifespan - this->tmr_remain ? + this->tym_lifespan : + this->tym_lifespan - this->tmr_remain; xParabolaEvalPos(parab, &this->pos_hazard, tym); xParabolaEvalVel(parab, &tartar->vel, tym); @@ -1895,7 +1909,8 @@ void NPCHazard::Upd_RoboBits(F32 dt) void NPCHazard::Upd_VisSplash(F32 dt) { - this->custdata.collide.rad_cur = LERP(this->pam_interp, this->custdata.collide.rad_min, this->custdata.collide.rad_max); + this->custdata.collide.rad_cur = + LERP(this->pam_interp, this->custdata.collide.rad_min, this->custdata.collide.rad_max); if (this->flg_hazard & 0x8) { @@ -1917,7 +1932,7 @@ void NPCHazard::VisSplashSparklies() pos_emit *= rad; pos_emit += *(xVec3*)Up() * 0.2f; pos_emit += this->pos_hazard; - + xVec3 vel_emit; vel_emit = *(xVec3*)Up(); vel_emit *= 3.5f; diff --git a/src/SB/Game/zNPCSupplement.h b/src/SB/Game/zNPCSupplement.h index 97bdd1a51..dfeafc782 100644 --- a/src/SB/Game/zNPCSupplement.h +++ b/src/SB/Game/zNPCSupplement.h @@ -340,7 +340,11 @@ void NPAR_Upd_DogBreath(NPARMgmt* mgmt, F32 dt); void NPAR_Upd_Fireworks(NPARMgmt* mgmt, F32 dt); NPARMgmt* NPAR_PartySetup(en_nparptyp parType, void** userData, NPARXtraData* xtraData); void NPAR_SceneReset(); +void NPCC_RenderProjTexture(RwRaster* rast, F32 factor, xMat4x3* mat, F32 radius, F32 height, + xShadowCache* cache, S32 fillCache, xEnt* ent); static void NPCC_ShadowCacheReset(); +xShadowCache* NPCC_ShadowCacheReserve(); +void NPCC_ShadowCacheRelease(xShadowCache* shadcache); void NPAR_Timestep(F32 dt); void NPAR_EmitDroplets(en_nparmode, const xVec3*, const xVec3*); void NPCC_MakeStreakInfo(en_npcstreak styp, StreakInfo* info); diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index 0a860971e..179328e7b 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -72,7 +72,10 @@ struct NPCTarget S32 IsDead(); S32 FindNearest(S32 flg_consider, xBase* skipme, xVec3* from, F32 dst_max); S32 InCylinder(xVec3* from, F32 rad, F32 hyt, F32 off); - U32 HaveTarget(); + S32 HaveTarget() + { + return (*(S32*)this != 0); + } }; struct NPCBlinker diff --git a/src/SB/Game/zNPCTypeVillager.cpp b/src/SB/Game/zNPCTypeVillager.cpp index d4e9e9ae3..a1797dc1a 100644 --- a/src/SB/Game/zNPCTypeVillager.cpp +++ b/src/SB/Game/zNPCTypeVillager.cpp @@ -1,13 +1,16 @@ #include "zNPCTypeVillager.h" -#include "xMath3.h" -#include "xVec3.h" +#include "xBehaveMgr.h" +#include "xJaw.h" +#include "xMathInlines.h" +#include "zGameExtras.h" #include "zGlobals.h" -#include "zNPCTypeCommon.h" -#include "zNPCTypes.h" +#include "zNPCGoalVillager.h" +#include "zNPCSupplement.h" #include "zNPCGoals.h" -#include "zTaskBox.h" +#include "zRenderState.h" #include "xDebug.h" +#include "xUtil.h" #define Unknown 0 #define Idle01 1 @@ -36,110 +39,35 @@ #define Talk03 24 #define Talk04 25 -extern U32 g_hash_folkanim[26]; -extern char* g_strz_platanim[2]; -extern U32 g_hash_platanim[2]; -extern zParEmitter* g_pemit_aqualeak; -extern xParEmitterCustomSettings g_parf_aqualeak; -extern const xVec3 g_O3; +U32 g_hash_folkanim[26] = {}; -static char* g_strz_folkanim[26] = { +zParEmitter* g_pemit_aqualeak; +static xParEmitterCustomSettings g_parf_aqualeak; + +char* g_strz_folkanim[26] = { "Unknown", "Idle01", "Move01", "Hurt01", "Yawn01", "Talk01", "Flee01", "Fear01", "Pray01", "Clap01", "Special01", "Ride01", "Bump01", "Fall01", "Land01", "Weep01", "Swim01", "Idle02", "Idle03", "Idle04", "Yawn02", "Yawn03", "Yawn04", "Talk02", "Talk03", "Talk04", }; -// Taken from zNPCTypeVillager.s -// Defining these here makes the stringBase0 offsets match in the later functions. -static char* str27 = "fish_d_balloon_move"; -static char* str28 = "fish_d_balloon_hit"; -static char* str29 = "zNPCVillager"; -static char* str30 = "zNPCBallonBoy"; -static char* str31 = "zNPCSuperFriend"; -static char* str32 = "NonRandomTalkAnims"; -static char* str33 = "FAB1001"; -static char* str34 = "FAB1002"; -static char* str35 = "FAB1003"; -static char* str36 = "FAB1004"; -static char* str37 = "FAB1011"; -static char* str38 = "FAB1017"; -static char* str39 = "FAB1018"; -static char* str40 = "FAB1019"; -static char* str41 = "FAB1020"; -static char* str42 = "FAB1021"; -static char* str43 = "FAB1022"; -static char* str44 = "FAB1023"; -static char* str45 = "FAB1025"; -static char* str46 = "FAB1029"; -static char* str47 = "FAB1030"; -static char* str48 = "FAB1032"; -static char* str49 = "FAB1033"; -static char* str50 = "FAB1034"; -static char* str51 = "FAB1035"; -static char* str52 = "FAB1038"; -static char* str53 = "FAB1046"; -static char* str54 = "FAB1047"; -static char* str55 = "FAB1049"; -static char* str56 = "FAB1073"; -static char* str57 = "FAB1074"; -static char* str58 = "FAB1076"; -static char* str59 = "FAB1077"; -static char* str60 = "FAB1078"; -static char* str61 = "FAB1079"; -static char* str62 = "FAB1080"; -static char* str63 = "FAB1006"; -static char* str64 = "FAB1012"; -static char* str65 = "FAB1016"; -static char* str66 = "FAB1024"; -static char* str67 = "FAB1026"; -static char* str68 = "FAB1065"; -static char* str69 = "FAB1039_a"; -static char* str70 = "FAB1039_b"; -static char* str71 = "FAB1039_c"; -static char* str72 = "FAB1055"; -static char* str73 = "FAB1040"; -static char* str74 = "FAB1053"; -static char* str75 = "FAB1081_a"; -static char* str76 = "FAB1081_b"; -static char* str77 = "FAB1042"; -static char* str78 = "FAB1045"; -static char* str79 = "FAB1056"; -static char* str80 = "FAB1064"; -static char* str81 = "FAB1050"; -static char* str82 = "FAB1007"; -static char* str83 = "FAB1007_b"; -static char* str84 = "FAB1031"; -static char* str85 = "FAB1082_a"; -static char* str86 = "FAB1082_b"; -static char* str87 = "FAB1010"; -static char* str88 = "FAB1027"; -static char* str89 = "FAB1037"; -static char* str90 = "FAB1052"; -static char* str91 = "FAB1067"; -static char* str92 = "FAB1014"; -static char* str93 = "FAB1008"; -static char* str94 = "FAB1036"; -static char* str95 = "FAB1041_a"; -static char* str96 = "FAB1041_b"; -static char* str97 = "FAB1054"; -static char* str98 = "FAB1013"; -static char* str99 = "FAB1009"; -static char* str100 = "FAB1028"; -static char* str101 = "FAB1051"; -static char* str102 = "FAB1072"; -static char* str103 = "FAB1083"; -static char* str104 = "NPC|zNPCNewsFish|screen|on screen|x"; -static char* str105 = "NPC|zNPCNewsFish|screen|on screen|y"; -static char* str106 = "NPC|zNPCNewsFish|screen|off screen|x"; -static char* str107 = "NPC|zNPCNewsFish|screen|off screen|y"; -static char* str108 = "NPC|zNPCNewsFish|screen|size"; -static char* str109 = "NPC|zNPCNewsFish|screen|rotation"; -static char* str110 = "NPC|zNPCNewsFish|screen|appearSpeed"; -static char* str111 = "NPC|zNPCNewsFish|screen|disappearSpeed"; -static char* str112 = "shadow_balloons"; -static char* str113 = "gloss_edge"; -static char* str114 = "rainbowfilm_smooth32"; -static char* str115 = "PAREMIT_FOLK_SANDYB_LEAK"; +static U32 g_hash_platanim[2] = {}; +static char* g_strz_platanim[2] = { "fish_d_balloon_move", "fish_d_balloon_hit" }; + +xEnt* CruiseBubbleDoesBubbleBuddyToo; +static U32 bb_env_texture; +static U32 bb_fresnel_texture; +F32 g_vilg_ds2_playernear = 25.0f; +static F32 g_rad_cowercheck = 15.0f; + +// Not sure why these are declared here but the data sections want it +RwRaster* zNPCBalloonBoy::rast_shadBalloon; +U32 zNPCBubbleBuddy::aid_fresnelTxtr; +U32 zNPCBubbleBuddy::aid_enviroTxtr; +RwTexture* zNPCBubbleBuddy::txtr_fresnel; +RwTexture* zNPCBubbleBuddy::txtr_enviro; +RwRaster* zNPCBubbleBuddy::rast_fresnel; +RwRaster* zNPCBubbleBuddy::rast_enviro; +F32 zNPCBubbleBuddy::alf_currBubBud = 1.0f; void ZNPC_Villager_Startup() { @@ -178,12 +106,7 @@ void zNPCVillager_ScenePostInit() FOLK_InitEffects(); } -void zNPCVillager_SceneTimestep(xScene *xscn, F32 dt) -{ - zNPCBubbleBuddy_AlphaUpdate(dt); -} - -void zNPCVillager_SceneTimestep(F32 dt) +void zNPCVillager_SceneTimestep(xScene* xscn, F32 dt) { zNPCBubbleBuddy_AlphaUpdate(dt); } @@ -283,7 +206,11 @@ xAnimTable* ZNPC_AnimTable_Villager(xAnimTable* callerTable) xAnimTable* table = callerTable; char** names = g_strz_folkanim; - if (table == NULL) + if (callerTable != NULL) + { + table = callerTable; + } + else { table = xAnimTableNew("zNPCVillager", NULL, 0x0); } @@ -309,7 +236,7 @@ xAnimTable* ZNPC_AnimTable_Villager(xAnimTable* callerTable) xAnimTableNewState(table, names[Special01], 0x10, 0x1, 1.0f, NULL, NULL, 0.0f, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); - NPCC_BuildStandardAnimTran(table, names, ourAnims, 1, 0.2f); + NPCC_BuildStandardAnimTran(table, g_strz_folkanim, ourAnims, 1, 0.2f); xAnimTableNewTransition(table, names[Pray01], names[Fear01], NULL, NULL, 0x10, 0x0, 0.0f, 0.0f, 0, 0, 0.35f, NULL); @@ -328,7 +255,11 @@ xAnimTable* ZNPC_AnimTable_BalloonBoy(xAnimTable* callerTable) xAnimTable* table = callerTable; char** names = g_strz_folkanim; - if (table == NULL) + if (callerTable != NULL) + { + table = callerTable; + } + else { table = xAnimTableNew("zNPCBallonBoy", NULL, 0x0); } @@ -348,9 +279,9 @@ xAnimTable* ZNPC_AnimTable_BalloonBoy(xAnimTable* callerTable) xAnimTableNewState(table, names[Swim01], 0x10, 0x1, 1.0f, NULL, NULL, 0.0f, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); - NPCC_BuildStandardAnimTran(table, names, ourAnims, 1, 0.2f); + NPCC_BuildStandardAnimTran(table, g_strz_folkanim, ourAnims, 1, 0.2f); - xAnimTableNewTransition(table, names[Fall01], names[Bump01], NULL, NULL, 0x10, 0x0, 0.0f, 0.0f, + xAnimTableNewTransition(table, names[Bump01], names[Ride01], NULL, NULL, 0x10, 0x0, 0.0f, 0.0f, 0, 0, 0.35f, NULL); xAnimTableNewTransition(table, names[Land01], names[Weep01], NULL, NULL, 0x10, 0x0, 0.0f, 0.0f, 0, 0, 0.35f, NULL); @@ -367,10 +298,14 @@ xAnimTable* ZNPC_AnimTable_SuperFriend(xAnimTable* callerTable) { S32 ourAnims[10] = { Idle02, Idle03, Idle04, Yawn02, Yawn03, Yawn04, Talk02, Talk03, Talk04, Unknown }; - xAnimTable* table = callerTable; + xAnimTable* table; char** names = g_strz_folkanim; - if (table == NULL) + if (callerTable != NULL) + { + table = callerTable; + } + else { table = xAnimTableNew("zNPCSuperFriend", NULL, 0x0); } @@ -396,7 +331,7 @@ xAnimTable* ZNPC_AnimTable_SuperFriend(xAnimTable* callerTable) xAnimTableNewState(table, names[Talk04], 0x10, 0x1, 1.0f, NULL, NULL, 0.0f, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); - NPCC_BuildStandardAnimTran(table, names, ourAnims, 1, 0.35f); + NPCC_BuildStandardAnimTran(table, g_strz_folkanim, ourAnims, 1, 0.35f); xAnimTableNewTransition(table, names[Yawn02], names[Idle02], NULL, NULL, 0x10, 0x0, 0.0f, 0.0f, 0, 0, 0.35f, NULL); @@ -408,6 +343,48 @@ xAnimTable* ZNPC_AnimTable_SuperFriend(xAnimTable* callerTable) return table; } +U8 zNPCVillager::ColChkFlags() const +{ + S32 flags = 0x3E; + flags &= ~0x8; + + if (globals.sceneCur->sceneID == 'B101') // Poseidome + { + flags = 0; + } + else if (this->npcset.reduceCollide != 0) + { + flags &= ~0x6; + } + else if ((this->flg_move & 4) != 0) + { + flags &= ~0x6; + } + + return flags; +} + +U8 zNPCVillager::ColPenFlags() const +{ + S32 flags = 0x3E; + flags &= ~0x8; + + if (globals.sceneCur->sceneID == 'B101') // Poseidome + { + flags = 0; + } + else if (this->npcset.reduceCollide != 0) + { + flags &= ~0x6; + } + else if ((this->flg_move & 4) != 0) + { + flags &= ~0x6; + } + + return flags; +} + U8 zNPCVillager::PhysicsFlags() const { S32 flags = 0; @@ -432,18 +409,28 @@ void zNPCVillager::Init(xEntAsset* asset) zNPCCommon::flg_vuln = 0; } -// void zNPCVillager::Reset() //Not sure what the correct values are for the IFs -// { -// NPCConfig* cfg; -// this->zNPCCommon::Reset(); - -// if (psy_instinct != 0) -// { -// this->psy_instinct->GoalSet(NPC_GOAL_IDLE, 1); -// } -// } void zNPCVillager::Reset() { + NPCConfig* cfg; + + zNPCCommon::Reset(); + + if (this->psy_instinct != NULL) + { + this->psy_instinct->GoalSet(NPC_GOAL_IDLE, 1); + } + + cfg = this->cfg_npc; + if (cfg->dst_castShadow < 0.0f) + { + cfg->dst_castShadow = 0.25f; + } + + cfg = this->cfg_npc; + if (cfg != NULL && cfg->rad_shadowCache < 0.0f) + { + cfg->rad_shadowCache = this->GenShadCacheRad(); + } } void zNPCVillager::ParseINI() @@ -456,21 +443,38 @@ void zNPCVillager::ParseINI() void zNPCVillager::ParseNonRandTalk() { - // NPCConfig* cfg; //0x1d8 - // F32 non_choices[4]; - // S32 found; - // S32 i; - // U8 skip; - // S32 j; + NPCConfig* cfg = this->cfg_npc; + cfg->talk_filter_size = 0; + F32 non_choices[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + + S32 found = zParamGetFloatList(this->parmdata, this->pdatsize, "NonRandomTalkAnims", 4, + non_choices, non_choices); + + for (S32 i = 0; i < 4; i++) + { + U8 skip = 0; + for (S32 j = 0; j < found; j++) + { + S32 choice_val = (S32)non_choices[j] - 1; + if (choice_val == i) + { + skip = 1; + break; + } + } - // cfg = cfg_npc; - // cfg = 0; - // non_choices[0] = 0.0; - // non_choices[1] = 0.0; - // non_choices[2] = 0.0; - // non_choices[3] = 0.0; + if (!skip) + { + cfg->talk_filter[cfg->talk_filter_size] = i; + cfg->talk_filter_size++; + } + } - // + if (cfg->talk_filter_size == 0) + { + cfg->talk_filter[0] = 0; + cfg->talk_filter_size = 1; + } } void zNPCVillager::Process(xScene* xscn, F32 dt) @@ -483,173 +487,1398 @@ void zNPCVillager::Process(xScene* xscn, F32 dt) zNPCCommon::Process(xscn, dt); } -void zNPCVillager::SpeakBegin() +void zNPCVillager::ChkCheatSize() { - psy_instinct->GoalSet(NPC_GOAL_SPEAK, 1); -} + S32 cheats; -void zNPCVillager::SpeakEnd() -{ - xPsyche* psy = psy_instinct; - if ((psy->GIDInStack(NPC_GOAL_LIMBO) == 0)) + cheats = zGameExtras_CheatFlags(); + + if ((cheats & 0xd0000) == 0) { - S32 safetyGid = psy->GIDOfSafety(); - if (safetyGid != 0) + return; + } + + S32 npcType = this->SelfType(); + + switch (npcType) + { + case NPC_TYPE_PLANKNPC: + if ((cheats & 0x10000) != 0) { - psy->GoalSet(safetyGid, 1); + this->cfg_npc->scl_model.assign(2.5f); + this->flg_misc |= 4; + } + break; + + case NPC_TYPE_FISH: + case NPC_TYPE_FISH_MALE: + case NPC_TYPE_FISH_FEMALE: + case NPC_TYPE_FISH_ELDER: + case NPC_TYPE_FISH_ELDESS: + case NPC_TYPE_VILLAGER: + if ((cheats & 0x40000) != 0) + { + this->cfg_npc->scl_model.assign(0.7f); + this->flg_misc |= 4; + } + break; + + case NPC_TYPE_SQUIDWARD: + case NPC_TYPE_SQUIDWARD_MUSIC: + case NPC_TYPE_SQUIDWARD_BANDAID: + case NPC_TYPE_SANDYNPC: + case NPC_TYPE_PATNPC: + case NPC_TYPE_BOBNPC: + case NPC_TYPE_MRKRABS: + case NPC_TYPE_MSPUFFS: + case NPC_TYPE_LARRY: + case NPC_TYPE_BUBBUDDY: + case NPC_TYPE_MERMAN: + case NPC_TYPE_BARNACLEBOY: + if ((cheats & 0x80000) != 0) + { + this->cfg_npc->scl_model.assign(0.6f); + this->flg_misc |= 4; } + break; + + case NPC_TYPE_GARY: + case NPC_TYPE_SANDYBIKINI: + case NPC_TYPE_MERMANCHAIR: + break; } } - -void zNPCVillager::TossMyConverse() +void zNPCVillager::CollideReview() { - converse = 0; -} + zNPCGoalCommon* goal; + S32 goaldidit; -void zNPCFish::Reset() -{ + goaldidit = 0; + goal = (zNPCGoalCommon*)this->psy_instinct->GetCurGoal(); + if ((goal != NULL) && ((goal->flg_npcgable & 1) != 0)) + { + goal->Name(); + goaldidit = goal->CollReview(0); + } + if (goaldidit == 0) + { + zNPCCommon::CollideReview(); + } + return; } -void zNPCFish::ParseINI() +void zNPCVillager::SelfSetup() { - zNPCVillager::ParseINI(); - zNPCFish::FishSoundTables(); -} + xBehaveMgr* bmgr = xBehaveMgr_GetSelf(); + this->psy_instinct = bmgr->Subscribe(this, 0); + xPsyche* psy = this->psy_instinct; -// void zNPCFish::FishSoundTables() -// { -// S32 tempR; -// tempR = xNPCBasic::SelfType(); -// switch (tempR) -// { -// case NPC_TYPE_FISH: -// { -// } -// case NPC_TYPE_FISH_MALE: -// { -// } -// } -// } - -/* -void FOLK_InitEffects() -{ - g_pemit_aqualeak = zParEmitterFind("PAREMIT_FOLK_SANDYB_LEAK"); - g_parf_aqualeak.custom_flags = 0x300; // 0x138 - xVec3Copy((xVec3*)&g_parf_aqualeak.pos, (xVec3*)&g_O3); // 0x140 - xVec3Copy((xVec3*)&g_parf_aqualeak.vel, (xVec3*)&g_O3); // 0x14c + psy->BrainBegin(); + this->AddBaseline(psy, FOLK_grul_goAlert, FOLK_grul_goAlert, FOLK_grul_goAlert, + FOLK_grul_goAlert, NULL); + this->AddScripting(psy, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + this->AddTalking(psy, NULL, NULL, NULL, NULL); + psy->AddGoal(NPC_GOAL_HURT, NULL); + psy->BrainEnd(); + psy->SetSafety(NPC_GOAL_IDLE); } -*/ -void zNPCFish::CheckDoChat() +U32 zNPCVillager::AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* goal) { -} + S32 idx; + U32 da_anim = 0; -void zNPCMerManChair::Init(xEntAsset*) //Seems to load an extra value? -{ - zNPCVillager::Init(asset); - flg_move = 1; - flg_vuln = -1; - flg_vuln = flg_vuln & 0x9effffff; -} + switch (gid) + { + case NPC_GOAL_IDLE: + case NPC_GOAL_WAITING: + case NPC_GOAL_NOMANLAND: + case NPC_GOAL_LIMBO: + { + S32 superfolk = !strcmp("zNPCSuperFriend", this->model->Anim->Table->Name); + static S32 choices[4] = { 1, 0x11, 0x12, 0x13 }; -void zNPCNewsFish::Reset() -{ - if (!this->was_reset) + if (!superfolk) + { + idx = 1; + } + else + { + idx = xUtil_choose(choices, 4, 0); + } + break; + } + + case NPC_GOAL_WANDER: + case NPC_GOAL_PATROL: + if (gspot == 0x26) + idx = 4; + else + idx = 2; + break; + + case NPC_GOAL_FIDGET: { - this->was_reset = 1; - this->soundHandle = 0; - this->currSoundID = 0; - this->nextSoundID = 0; - this->jawData = 0; - this->jawTime = 0.0f; - this->screenLerp = 0.0f; + S32 superfolk = !strcmp("zNPCSuperFriend", this->model->Anim->Table->Name); + S32 choices[4] = { 4, 0x14, 0x15, 0x16 }; - zNPCVillager::Reset(); - zNPCNewsFish::reset_said(); - - xDebugAddTweak("NPC|zNPCNewsFish|screen|on screen|x", &this->onScreenCoords.x, -5.0f, 5.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|on screen|y", &this->onScreenCoords.y, -5.0f, 5.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|off screen|x", &this->offScreenCoords.x, -5.0f, 5.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|off screen|y", &this->offScreenCoords.y, -5.0f, 5.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|size", &this->screenSize, 0.0001f, 1000000000.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|rotation", &this->screenRot, -1000000000.0f, 1000000000.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|appearSpeed", &this->appearSpeed, 0.0f, 1000000000.0f, 0, 0, 0); - xDebugAddTweak("NPC|zNPCNewsFish|screen|disappearSpeed", &this->disappearSpeed, 0.0f, 1000000000.0f, 0, 0, 0); + if (!superfolk) + { + idx = 4; + } + else + { + idx = xUtil_choose(choices, 4, 0); + } + break; } -} -void zNPCNewsFish::SpeakStop() -{ - S32 tempvar = zNPCNewsFish::IsTalking(); - if (tempvar != 0) + case NPC_GOAL_PLAYERNEAR: { - xSndStop(soundHandle); + if (gspot == 0x23) + { + S32 superfolk = !strcmp("zNPCSuperFriend", this->model->Anim->Table->Name); + S32 choices[4] = { 4, 0x14, 0x15, 0x16 }; + + if (!superfolk) + { + idx = 4; + } + else + { + idx = xUtil_choose(choices, 4, 0); + } + } + else + { + idx = 1; + } + break; } - currSoundID = 0; - nextSoundID = 0; - soundHandle = 0; - jawData = 0; -} -S32 zNPCNewsFish::IsTalking() -{ - return (soundHandle) ? xSndIsPlayingByHandle(soundHandle) : false; -} + case NPC_GOAL_TALK: + case NPC_GOAL_CHATTER: + case NPC_GOAL_SPEAK: + { + S32 superfolk = !strcmp("zNPCSuperFriend", this->model->Anim->Table->Name); -void zNPCNewsFish::TalkOnScreen(S32 talkOnScreen) -{ - if (talkOnScreen != 0) + if (!superfolk) + { + idx = 5; + } + else + { + idx = this->current_talk_anim; + static S32 choices[4] = { 0x05, 0x17, 0x18, 0x19 }; + + if (idx < 0 || idx > 3) + { + U32 which = xrand(); + idx = choices[this->cfg_npc + ->talk_filter[(which >> 13) % this->cfg_npc->talk_filter_size]]; + } + else + { + idx = choices[idx]; + } + } + break; + } + case NPC_GOAL_CHEER: + idx = 9; + break; + case NPC_GOAL_HURT: + idx = 3; + break; + default: + idx = 1; + break; + } + + if (idx >= 0) { - newsfishFlags = newsfishFlags | 1; - return; + da_anim = g_hash_folkanim[idx]; } - newsfishFlags = newsfishFlags & 0xfffffffe; - return; -} -void zNPCNewsFish::reset_said() -{ + return da_anim; } -void zNPCSandyBikini::Reset() //100% code match +S32 zNPCVillager::NPCMessage(NPCMsg* mail) { - zNPCVillager::Reset(); - tmr_leakCycle = 0.0; -} + S32 handled; + xPsyche* psy = this->psy_instinct; + zNPCGoalCommon* curgoal; + zNPCGoalCommon* recgoal; -void zNPCSandyBikini::Process(xScene* xscn, F32 dt) //100% code match -{ - zNPCVillager::Process(xscn, dt); - zNPCSandyBikini::VFXLeakyFaucet(dt); -} + if (psy) + { + curgoal = (zNPCGoalCommon*)psy->GetCurGoal(); + if (curgoal) + { + handled = curgoal->NPCMessage(mail); + if (handled) + return handled; + } -void zNPCSandyBikini::VFXLeakyFaucet(F32 dt) -{ -} + recgoal = (zNPCGoalCommon*)psy->GetPrevRecovery(0); + if (recgoal && recgoal != curgoal) + { + handled = recgoal->NPCMessage(mail); + if (handled) + return handled; + } + } -void zNPCBalloonBoy::Init(xEntAsset* asset) -{ - zNPCFish::Init(asset); - rast_shadBalloon = 0; - cfg_npc->dst_castShadow = -1; - return; + handled = this->FolkHandleMail(mail); + if (!handled) + { + handled = zNPCCommon::NPCMessage(mail); + } - //cfg_npc 0x1d8 - //bound.type 0x84 + return handled; } -void zNPCBalloonBoy::Reset() +// non-matching: register shenanigans +S32 zNPCVillager::FolkHandleMail(NPCMsg* mail) { - zNPCFish::Reset(); - - if(!this->rast_shadBalloon) + S32 handled = 1; + + xPsyche* psy = this->psy_instinct; // not in dwarf + + switch (mail->msgid) { - this->rast_shadBalloon = NPCC_FindRWRaster("shadow_balloons"); + case 3: + { + if (psy && !psy->GIDInStack(NPC_GOAL_CHEER)) + { + if (!psy->GIDInStack(NPC_GOAL_HURT)) + { + psy->GoalPush(NPC_GOAL_HURT, 0); + } + } + break; + } + + case 1: + if (mail->sysevent.toEvent == 0x20e) + { + psy->GoalSet(NPC_GOAL_TALK, 0); + } + else if (mail->sysevent.toEvent == 0x1d9) + { + handled = zNPCCommon::NPCMessage(mail); + } + else if (mail->sysevent.toEvent == 0x1d8) + { + handled = zNPCCommon::NPCMessage(mail); + } + else + { + handled = zNPCCommon::NPCMessage(mail); + } + break; + + default: + handled = 0; + break; } + + return handled; } -void zNPCBalloonBoy::SelfSetup() //100% code match +void zNPCVillager::SpeakBegin() +{ + psy_instinct->GoalSet(NPC_GOAL_SPEAK, 1); +} + +void zNPCVillager::SpeakEnd() +{ + xPsyche* psy = psy_instinct; + if ((psy->GIDInStack(NPC_GOAL_LIMBO) == 0)) + { + S32 safetyGid = psy->GIDOfSafety(); + if (safetyGid != 0) + { + psy->GoalSet(safetyGid, 1); + } + } +} + +void zNPCVillager::SpeakStart(U32 sndid, U32 sndhandle, S32 anim) +{ + this->current_talk_anim = anim; + xGoal* goal = this->psy_instinct->GetCurGoal(); + switch (goal->GetID()) + { + case NPC_GOAL_TALK: + { + zNPCGoalTalk* talkgoal = (zNPCGoalTalk*)goal; + talkgoal->jawdata = xJaw_FindData(sndid); + talkgoal->jawtime = 0.0f; + talkgoal->tmr_cycleAnim = -1.0f; + talkgoal->tmr_minTalk = -1.0f; + break; + } + case NPC_GOAL_SPEAK: + { + zNPCGoalSpeak* talkgoal = (zNPCGoalSpeak*)goal; + talkgoal->jawdata = xJaw_FindData(sndid); + talkgoal->jawtime = 0.0f; + talkgoal->tmr_cycleAnim = -1.0f; + break; + } + } +} + +void zNPCVillager::SpeakStop() +{ + xGoal* goal = this->psy_instinct->GetCurGoal(); + + switch (goal->GetID()) + { + case NPC_GOAL_TALK: + { + zNPCGoalTalk* talkgoal = (zNPCGoalTalk*)goal; + talkgoal->jawdata = NULL; + talkgoal->jawtime = 0.0f; + break; + } + case NPC_GOAL_SPEAK: + { + zNPCGoalSpeak* talkgoal = (zNPCGoalSpeak*)goal; + talkgoal->jawdata = NULL; + talkgoal->jawtime = 0.0f; + break; + } + } +} + +S32 zNPCVillager::PlayerIsStaring() +{ + xVec3 vec; + + if (globals.player.ControlOff != 0) + { + return 0; + } + + if ((U8)this->npcset.allowDetect == 0) + { + return 0; + } + + F32 dy = 0.0f; + F32 dSq = this->XZDstSqToPlayer(&vec, &dy); + + if (dy > 5.0f) + { + return 0; + } + + if (dy < -2.0f) + { + return 0; + } + + xEntNPCAsset* npcass = this->npcass; + if (npcass->taskWidgetPrime != 0 || npcass->taskWidgetSecond != 0) + { + if (dSq > g_vilg_ds2_playernear * 4.0f) + { + return 0; + } + } + else + { + if (dSq > g_vilg_ds2_playernear) + { + return 0; + } + } + + return 1; +} + +void zNPCVillager::AddTalking(xPsyche* psy, + S32 (*eval_plyrnear)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_talking)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_chatter)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_speak)(xGoal*, void*, en_trantype*, F32, void*)) +{ + xGoal* goal; + goal = psy->AddGoal(NPC_GOAL_PLAYERNEAR, NULL); + if (eval_plyrnear) + { + goal->SetCallbacks(eval_plyrnear, NULL, NULL, NULL); + } + goal = psy->AddGoal(NPC_GOAL_TALK, NULL); + if (eval_talking) + { + goal->SetCallbacks(eval_talking, NULL, NULL, NULL); + } + goal = psy->AddGoal(NPC_GOAL_CHATTER, NULL); + if (eval_chatter) + { + goal->SetCallbacks(eval_chatter, NULL, NULL, NULL); + } + goal = psy->AddGoal(NPC_GOAL_SPEAK, NULL); + if (eval_speak) + { + goal->SetCallbacks(eval_speak, NULL, NULL, NULL); + } +} + +void zNPCVillager::FindMyConverse() +{ + xEntNPCAsset* nass = this->npcass; + if ((gCurrentPlayer == eCurrentPlayerSpongeBob) && (nass->taskWidgetPrime != 0)) + { + this->converse = (ztaskbox*)zSceneFindObject(nass->taskWidgetPrime); + if (this->converse == NULL) + { + this->converse = (ztaskbox*)zSceneFindObject((((U8*)&nass->taskWidgetPrime)[3] << 24) | + (((U8*)&nass->taskWidgetPrime)[2] << 16) | + (((U8*)&nass->taskWidgetPrime)[1] << 8) | + ((U8*)&nass->taskWidgetPrime)[0]); + } + } + else if ((gCurrentPlayer != eCurrentPlayerSpongeBob) && (nass->taskWidgetSecond != 0)) + { + this->converse = (ztaskbox*)zSceneFindObject(nass->taskWidgetSecond); + if (this->converse == NULL) + { + this->converse = (ztaskbox*)zSceneFindObject((((U8*)&nass->taskWidgetSecond)[3] << 24) | + (((U8*)&nass->taskWidgetSecond)[2] << 16) | + (((U8*)&nass->taskWidgetSecond)[1] << 8) | + ((U8*)&nass->taskWidgetSecond)[0]); + } + } + else + { + this->converse = NULL; + } +} + +void zNPCVillager::TossMyConverse() +{ + this->converse = NULL; +} + +void zNPCFish::Init(xEntAsset* asset) + +{ + zNPCVillager::Init(asset); + if (globals.sceneCur->sceneID == 'B101') // Poseidome + { + this->flg_move &= ~0x2; + this->flg_move = 0xc; + } + else + { + this->flg_move = 10; + } + this->flg_vuln = -1; + this->flg_vuln &= ~0x61000000; + return; +} + +void zNPCFish::Reset() +{ + zNPCVillager::Reset(); + this->tgt_robonear.TargetClear(); + this->tmr_robonear = -1.0f; + this->tmr_checkagain = xurand() * 60.25f; + en_NPCTYPES npc_type = (en_NPCTYPES)this->SelfType(); + if (npc_type == NPC_TYPE_MERMAN) + { + this->ModelAtomicShow(0, NULL); + this->ModelAtomicHide(1, NULL); + } + else if (npc_type == NPC_TYPE_MERMANCHAIR) + { + this->ModelAtomicShow(0, NULL); + this->ModelAtomicShow(1, NULL); + } + else if (npc_type == NPC_TYPE_SQUIDWARD) + { + this->ModelAtomicShow(1, NULL); + this->ModelAtomicHide(0, NULL); + this->ModelAtomicHide(2, NULL); + } + else if (npc_type == NPC_TYPE_SQUIDWARD_BANDAID) + { + this->ModelAtomicShow(1, NULL); + this->ModelAtomicHide(0, NULL); + this->ModelAtomicShow(2, NULL); + } + else if (npc_type == NPC_TYPE_SQUIDWARD_MUSIC) + { + this->ModelAtomicShow(1, NULL); + this->ModelAtomicShow(0, NULL); + this->ModelAtomicHide(2, NULL); + } + return; +} + +void zNPCFish::ParseINI() +{ + zNPCVillager::ParseINI(); + zNPCFish::FishSoundTables(); +} + +void zNPCFish::FishSoundTables() +{ + en_NPCTYPES npc_type = (en_NPCTYPES)this->SelfType(); + + switch (npc_type) + { + case NPC_TYPE_GARY: + case NPC_TYPE_DUTCHMAN_NSB: + case NPC_TYPE_SANDYBIKINI: + case NPC_TYPE_PLANKNPC: + case NPC_TYPE_MRKRABS: + case NPC_TYPE_MSPUFFS: + case NPC_TYPE_LARRY: + case NPC_TYPE_BUBBUDDY: + case NPC_TYPE_MERMANCHAIR: + case NPC_TYPE_MERMAN: + case NPC_TYPE_BARNACLEBOY: + this->cfg_npc->snd_trax = g_sndTrax_VillagerCoStar; + break; + case NPC_TYPE_SQUIDWARD: + case NPC_TYPE_SQUIDWARD_MUSIC: + case NPC_TYPE_SQUIDWARD_BANDAID: + this->cfg_npc->snd_trax = g_sndTrax_Squidward; + break; + case NPC_TYPE_FISH: + case NPC_TYPE_FISH_MALE: + this->cfg_npc->snd_trax = g_sndTrax_VillagerMale; + break; + case NPC_TYPE_FISH_FEMALE: + this->cfg_npc->snd_trax = g_sndTrax_VillagerFemale; + break; + case NPC_TYPE_FISH_ELDER: + this->cfg_npc->snd_trax = g_sndTrax_VillagerElder; + break; + case NPC_TYPE_FISH_ELDESS: + this->cfg_npc->snd_trax = g_sndTrax_VillagerEldess; + break; + case NPC_TYPE_FISH_BOY: + case NPC_TYPE_BALLOONBOY: + this->cfg_npc->snd_trax = g_sndTrax_VillagerBoy; + break; + case NPC_TYPE_FISH_GIRL: + this->cfg_npc->snd_trax = g_sndTrax_VillagerGirl; + break; + case NPC_TYPE_WORM: + default: + this->cfg_npc->snd_trax = NULL; + } + + NPCS_SndTablePrepare(g_sndTrax_VillagerCoStar); + NPCS_SndTablePrepare(g_sndTrax_Squidward); + NPCS_SndTablePrepare(g_sndTrax_VillagerMale); + NPCS_SndTablePrepare(g_sndTrax_VillagerFemale); + NPCS_SndTablePrepare(g_sndTrax_VillagerElder); + NPCS_SndTablePrepare(g_sndTrax_VillagerEldess); + NPCS_SndTablePrepare(g_sndTrax_VillagerBoy); + NPCS_SndTablePrepare(g_sndTrax_VillagerGirl); + return; +} + +void zNPCFish::SelfSetup() +{ + zNPCVillager* npc; // from dwarf, unused? + xBehaveMgr* bmgr = xBehaveMgr_GetSelf(); + xPsyche* psy = bmgr->Subscribe(this, 0); + this->psy_instinct = psy; + psy = this->psy_instinct; + psy->BrainBegin(); + this->AddBaseline(psy, FOLK_grul_goAlert, FOLK_grul_goAlert, FOLK_grul_goAlert, + FOLK_grul_goAlert, NULL); + this->AddScripting(psy, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + this->AddTalking(psy, NULL, NULL, NULL, NULL); + psy->AddGoal(NPC_GOAL_CHEER, NULL); + psy->AddGoal(NPC_GOAL_HURT, NULL); + psy->BrainEnd(); + psy->SetSafety(NPC_GOAL_IDLE); +} + +U32 zNPCFish::AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* rawgoal) +{ + S32 idx = -1; + U32 da_anim = 0; + + switch (gid) + { + case NPC_GOAL_IDLE: + case NPC_GOAL_WAITING: + if (!(this->tmr_robonear < 0.0f)) + { + idx = 7; + } + else + { + da_anim = zNPCVillager::AnimPick(gid, gspot, rawgoal); + } + break; + + case NPC_GOAL_WANDER: + case NPC_GOAL_PATROL: + if (!(this->tmr_robonear < 0.0f)) + { + if (gspot == 0x26) + { + idx = 7; + } + else + { + idx = 6; + } + } + else + { + da_anim = zNPCVillager::AnimPick(gid, gspot, rawgoal); + } + break; + + case NPC_GOAL_FIDGET: + if (!(this->tmr_robonear < 0.0f)) + { + idx = 8; + } + else + { + da_anim = zNPCVillager::AnimPick(gid, gspot, rawgoal); + } + break; + + default: + da_anim = zNPCVillager::AnimPick(gid, gspot, rawgoal); + break; + } + + if (idx >= 0) + { + da_anim = g_hash_folkanim[idx]; + } + + return da_anim; +} + +void zNPCFish::Process(xScene* xscn, F32 dt) +{ + this->CheckDoChat(); + if (this->IsAlive() && this->tmr_checkagain < 0.0f) + { + this->MonitorCowering(xscn, dt); + } + this->tmr_robonear = MAX(-1.0f, this->tmr_robonear - dt); + this->tmr_checkagain = MAX(-1.0f, this->tmr_checkagain - dt); + zNPCVillager::Process(xscn, dt); +} + +static S32 goalsWhichCheer[6] = { NPC_GOAL_IDLE, NPC_GOAL_WANDER, NPC_GOAL_PATROL, + NPC_GOAL_WAITING, NPC_GOAL_PLAYERNEAR, '\0' }; // null-terminated + +S32 zNPCFish::FolkHandleMail(NPCMsg* msg) +{ + S32 handled = 0; + xPsyche* psy = this->psy_instinct; + S32 cancheer; + S32 gid; + zNPCGoalCheer* cheer; + + switch (msg->msgid) + { + case NPC_MID_CELEBRATE: + case 0x14: + case 0x15: + gid = psy->GIDOfPending(); + if (gid == NPC_GOAL_CHEER || psy->GIDInStack(NPC_GOAL_CHEER) != 0) + break; + + gid = psy->GIDOfPending(); + if (gid == NPC_GOAL_HURT || psy->GIDInStack(NPC_GOAL_HURT) != 0) + break; + + if (msg->infotype == NPC_MDAT_AREANOTIFY) + { + if (msg->areadata.npc_origin == 0) + break; + if ((msg->areadata.npc_origin->SelfType() & 0xffffff00) != 'NTR\0') + break; + } + + cancheer = false; + gid = psy->GIDOfActive(); + + for (S32 i = 0; goalsWhichCheer[i] != 0; i++) + { + if (gid == goalsWhichCheer[i]) + { + cancheer = true; + break; + } + } + + if (cancheer && (cheer = (zNPCGoalCheer*)psy->FindGoal(NPC_GOAL_CHEER)) != 0) + { + cheer->LoopCountSet(3); + psy->GoalPush(NPC_GOAL_CHEER, 0); + } + + handled = 1; + this->tmr_robonear = -1.0f; + this->tmr_checkagain = -1.0f; + break; + + default: + handled = zNPCVillager::FolkHandleMail(msg); + break; + } + + return handled; +} + +void zNPCFish::MonitorCowering(xScene* xscn, F32 dt) +{ + xVec3 vec; // from dwarf, unused? + NPCTarget* tgt = &this->tgt_robonear; + NPCConfig* cfg = this->cfg_npc; + + tgt->HaveTarget(); + if (!tgt->HaveTarget()) + { + tgt->TargetClear(); + } + else if (tgt->IsDead()) + { + tgt->TargetClear(); + } + else if (!tgt->InCylinder(xEntGetPos(this), g_rad_cowercheck, cfg->hyt_detect, cfg->off_detect)) + { + tgt->TargetClear(); + } + + if (!tgt->HaveTarget()) + { + tgt->FindNearest(NPC_TGT_ENT, this, xEntGetPos(this), g_rad_cowercheck); + } + + if (tgt->HaveTarget()) + { + this->tmr_robonear = cfg->tym_alert * (0.25f * (xurand() - 0.5f)) + cfg->tym_alert; + this->tmr_checkagain = cfg->tym_alert * (0.25f * (xurand() - 0.5f)) + cfg->tym_alert; + zNPCMsg_SendMsg(NPC_MID_BECOMESCARED, *(U32*)this); + } + else + { + this->tmr_robonear = -1.0f; + this->tmr_checkagain = + cfg->tym_alert * PI * (0.25f * (xurand() - 0.5f)) + cfg->tym_alert * PI; + zNPCMsg_SendMsg(NPC_MID_NOLONGERSCARED, *(U32*)this); + } +} + +void zNPCFish::CheckDoChat() +{ +} + +void zNPCMerManChair::Init(xEntAsset* asset) +{ + zNPCVillager::Init(asset); + flg_move = 1; + flg_vuln = -1; + flg_vuln = flg_vuln & 0x9effffff; +} + +void zNPCMerManChair::Reset() +{ + zNPCVillager::Reset(); + this->npcset.allowPatrol = 0; + this->npcset.allowWander = 0; + this->flg_mermanchair = 0; + + if (globals.sceneCur->sceneID == 'BC02') // Mermalair (Main Chamber) + { + ztaskbox* pat_converse = (ztaskbox*)zSceneFindObject(this->npcass->taskWidgetSecond); + if (pat_converse != NULL && (S32)pat_converse->StatusGet() == 5) + { + this->flg_mermanchair |= 1; + } + } +} + +void zNPCMerManChair::SelfSetup() +{ + xBehaveMgr* bmgr = xBehaveMgr_GetSelf(); + xPsyche* psy = bmgr->Subscribe(this, 0); + this->psy_instinct = psy; + psy = this->psy_instinct; + psy->BrainBegin(); + xGoal* goal = psy->AddGoal(NPC_GOAL_IDLE, NULL); + goal->SetCallbacks(MERC_grul_goAlert, NULL, NULL, NULL); + psy->AddGoal(NPC_GOAL_FIDGET, NULL); + psy->AddGoal(NPC_GOAL_HURT, NULL); + this->AddTalking(psy, NULL, NULL, NULL, NULL); + psy->BrainEnd(); + psy->SetSafety(NPC_GOAL_IDLE); +} + +U32 zNPCMerManChair::AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* rawgoal) +{ + S32 idx; + U32 da_anim; + S32 superfolk; + U32 which; + static S32 choices[4] = { 0x05, 0x17, 0x18, 0x19 }; + + da_anim = 0; + idx = -1; + + switch (gid) + { + case NPC_GOAL_FIDGET: + case NPC_GOAL_IDLE: + case NPC_GOAL_HURT: + case NPC_GOAL_PLAYERNEAR: + if (flg_mermanchair & 1) + { + idx = 10; + } + else + { + da_anim = zNPCVillager::AnimPick(gid, gspot, rawgoal); + } + break; + + case NPC_GOAL_TALK: + case NPC_GOAL_CHATTER: + case NPC_GOAL_SPEAK: + superfolk = (strcmp("zNPCSuperFriend", model->Anim->Table->Name) == 0); + + if (flg_mermanchair & 1) + { + if ((current_talk_anim < 0) || (current_talk_anim > 3)) + { + idx = 10; + } + else if (!superfolk) + { + idx = 5; + } + else + { + idx = choices[current_talk_anim]; + } + } + else + { + if (!superfolk) + { + idx = 5; + } + else if ((current_talk_anim < 0) || (current_talk_anim > 3)) + { + which = xrand(); + idx = choices[cfg_npc->talk_filter[(which >> 13) % cfg_npc->talk_filter_size]]; + } + else + { + idx = choices[current_talk_anim]; + } + } + break; + + default: + da_anim = zNPCVillager::AnimPick(gid, gspot, rawgoal); + break; + } + + if (idx >= 0) + { + da_anim = g_hash_folkanim[idx]; + } + + return da_anim; +} + +void zNPCMerManChair::Process(xScene* scn, F32 dt) +{ + xModelInstance* minst; + + this->psy_instinct->Timestep(dt, NULL); + if ((this->flg_misc & 4U) != 0) + { + for (minst = this->model; minst != NULL; minst = minst->Next) + { + xVec3Copy(&minst->Scale, &this->cfg_npc->scl_model); + } + } +} + +static char* news_fish_audio[71] = { + "FAB1001", "FAB1002", "FAB1003", "FAB1004", "FAB1011", "FAB1017", "FAB1018", + "FAB1019", "FAB1020", "FAB1021", "FAB1022", "FAB1023", "FAB1025", "FAB1029", + "FAB1030", "FAB1032", "FAB1033", "FAB1034", "FAB1035", "FAB1038", "FAB1046", + "FAB1047", "FAB1049", "FAB1073", "FAB1074", "FAB1076", "FAB1077", "FAB1078", + "FAB1079", "FAB1080", "FAB1006", "FAB1012", "FAB1016", "FAB1024", "FAB1026", + "FAB1065", "FAB1039_a", "FAB1039_b", "FAB1039_c", "FAB1055", "FAB1040", "FAB1053", + "FAB1081_a", "FAB1081_b", "FAB1042", "FAB1045", "FAB1056", "FAB1064", "FAB1050", + "FAB1007", "FAB1007_b", "FAB1031", "FAB1082_a", "FAB1082_b", "FAB1010", "FAB1027", + "FAB1037", "FAB1052", "FAB1067", "FAB1014", "FAB1008", "FAB1036", "FAB1041_a", + "FAB1041_b", "FAB1054", "FAB1013", "FAB1009", "FAB1028", "FAB1051", "FAB1072", + "FAB1083" +}; + +static unsigned int news_fish_audio_hash[71]; + +// scheduling issue +void zNPCNewsFish::Init(xEntAsset* asset) +{ + zNPCVillager::Init(asset); + + this->was_reset = '\0'; + this->newsfishFlags = 0; + this->onScreenCoords.x = 0.585f; + this->onScreenCoords.y = 0.075f; + this->offScreenCoords.x = 1.0f; + this->offScreenCoords.y = 0.35f; + this->screenCoords.x = this->offScreenCoords.x; + this->screenCoords.y = this->offScreenCoords.y; + this->screenSize = 0.35f; + this->screenRot = 1.0f; + this->appearSpeed = 5.0f; + this->disappearSpeed = 1.0f; + this->screenLerp = 0.0f; + + for (S32 i = 0; i < 71; i++) + { + news_fish_audio_hash[i] = xStrHash(news_fish_audio[i]); + } +} + +void zNPCNewsFish::PostSetup() +{ + xUpdateCull_SetCB(globals.updateMgr, this, xUpdateCull_AlwaysTrueCB, NULL); +} + +void zNPCNewsFish::Process(xScene*, F32 dt) +{ + xModelInstance* minst; + + F32 lerp; + F32 invLerp; + + this->was_reset = 0; + if ((this->flg_misc & 4) != 0) + { + for (minst = this->model; minst != NULL; minst = minst->Next) + { + xVec3Copy(&minst->Scale, &this->cfg_npc->scl_model); + } + } + + xVec3 delta = {}; + + NPCC_ds2_toCam(xEntGetPos(this), &delta); + delta.y = 0.0f; + this->frame->mode |= 0x30000; + xVec3Normalize(&delta, &delta); + + xVec3Copy((xVec3*)&this->model->Mat->up, &g_Y3); + xVec3Copy((xVec3*)&this->model->Mat->at, &delta); + xVec3Cross((xVec3*)&this->model->Mat->right, &delta, &g_Y3); + + if (this->jawData != NULL) + { + this->jawTime += dt; + F32 jawVal = xJaw_EvalData(this->jawData, this->jawTime); + this->model->Anim->Single->BilinearLerp[0] = jawVal; + if (globals.cmgr != NULL) + { + this->SpeakStop(); + } + else + { + if (jawVal < 0.001f && !xSndIsPlayingByHandle(this->soundHandle)) + { + this->soundHandle = 0; + this->jawData = NULL; + this->currSoundID = 0; + if (this->nextSoundID != 0) + { + this->SpeakStart(this->nextSoundID, 0, -1); + this->nextSoundID = 0; + } + } + } + } + else + { + this->model->Anim->Single->BilinearLerp[0] = 0.0f; + } + + if ((this->newsfishFlags & 1) != 0) + { + if (this->jawData != NULL) + { + minst = this->model; + minst->Flags |= 2; + this->screenLerp += this->appearSpeed * dt; + if (this->screenLerp > 1.0f) + { + this->screenLerp = 1.0f; + } + } + else + { + this->screenLerp -= this->disappearSpeed * dt; + if (this->screenLerp < 0.0f) + { + this->screenLerp = 0.0f; + } + else + { + minst = this->model; + minst->Flags |= 2; + } + } + + invLerp = 1.0f - this->screenLerp; + + this->screenCoords.x = + (this->onScreenCoords.x * this->screenLerp) + (this->offScreenCoords.x * invLerp); + + this->screenCoords.y = + (this->onScreenCoords.y * this->screenLerp) + (this->offScreenCoords.y * invLerp); + } +} +void zNPCNewsFish::Reset() +{ + if (!this->was_reset) + { + this->was_reset = 1; + this->soundHandle = 0; + this->currSoundID = 0; + this->nextSoundID = 0; + this->jawData = 0; + this->jawTime = 0.0f; + this->screenLerp = 0.0f; + + zNPCVillager::Reset(); + zNPCNewsFish::reset_said(); + + // clang-format off + xDebugAddTweak("NPC|zNPCNewsFish|screen|on screen|x", &this->onScreenCoords.x, -5.0f, 5.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|on screen|y", &this->onScreenCoords.y, -5.0f, 5.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|off screen|x", &this->offScreenCoords.x, -5.0f, 5.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|off screen|y", &this->offScreenCoords.y, -5.0f, 5.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|size", &this->screenSize, 0.0001f, 1000000000.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|rotation", &this->screenRot, -1000000000.0f, 1000000000.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|appearSpeed", &this->appearSpeed, 0.0f, 1000000000.0f, 0, 0, 0); + xDebugAddTweak("NPC|zNPCNewsFish|screen|disappearSpeed", &this->disappearSpeed, 0.0f, 1000000000.0f, 0, 0, 0); + // clang-format on + } +} + +void zNPCNewsFish::SpeakStart(U32 sndid, U32 sndhandle, S32 anim) +{ + if (sndhandle) + { + this->SpeakStop(); + this->soundHandle = sndhandle; + this->jawTime = 0.0f; + this->jawData = xJaw_FindData(sndid); + } + else + { + if (this->IsTalking()) + { + if (this->nextSoundID != this->currSoundID) + { + this->nextSoundID = sndid; + } + } + else + { + this->soundHandle = xSndPlay(sndid, 1.0f, 0.0f, 0x80, 0, 0, SND_CAT_DIALOG, 0.0f); + this->jawTime = 0.0f; + this->jawData = xJaw_FindData(sndid); + this->currSoundID = sndid; + } + } +} + +void zNPCNewsFish::SpeakStop() +{ + S32 tempvar = zNPCNewsFish::IsTalking(); + if (tempvar != 0) + { + xSndStop(soundHandle); + } + currSoundID = 0; + nextSoundID = 0; + soundHandle = 0; + jawData = 0; +} + +S32 zNPCNewsFish::IsTalking() +{ + return (soundHandle) ? xSndIsPlayingByHandle(soundHandle) : false; +} + +void zNPCNewsFish::TalkOnScreen(S32 talkOnScreen) +{ + if (talkOnScreen != 0) + { + newsfishFlags = newsfishFlags | 1; + return; + } + newsfishFlags = newsfishFlags & 0xfffffffe; + return; +} + +void zNPCNewsFish::Render() +{ + xLightKit* lastLightKit; + _SDRenderState oldstate; + xMat4x3 oldMat; + xNPCBasic::Render(); + if (globals.cmgr == NULL || globals.cmgr->csn == NULL) + { + U32 flags = this->newsfishFlags | 1; + this->newsfishFlags = flags; + if (flags != 0) + { + lastLightKit = gLastLightKit; + xLightKit_Enable(NULL, globals.currWorld); + oldstate = zRenderStateCurrent(); + zRenderState(SDRS_Newsfish); + xMat4x3Copy(&oldMat, (const xMat4x3*)this->model->Mat); + basic_rect r = { this->screenCoords.x, this->screenCoords.y, 1.0f, 1.0f }; + xVec3 from = { 0.0f, 0.0f, 1.0f }; + xVec3 to = { 0.0f, 0.0f, 0.0f }; + xVec3Init((xVec3*)&this->model->Mat->pos, 0.0f, 0.0f, 0.0f); + xMat3x3RotZ((xMat3x3*)this->model->Mat, this->screenRot); + xVec3SMulBy((xVec3*)&this->model->Mat->right, this->screenSize); + xVec3SMulBy((xVec3*)&this->model->Mat->up, this->screenSize); + xVec3SMulBy((xVec3*)&this->model->Mat->at, this->screenSize); + xModelRender2D(*this->model->Next, r, from, to); + xModelRender2D(*this->model, r, from, to); + xMat4x3Copy((xMat4x3*)this->model->Mat, &oldMat); + zRenderState(oldstate); + xLightKit_Enable(lastLightKit, globals.currWorld); + } + } +} + +U8 zNPCNewsFish::say(say_enum s, S32 flags) +{ + U32 id = news_fish_audio_hash[s]; + + if (this->IsTalking()) + { + if (id == this->currSoundID) + { + return 0; + } + + if (flags & 1) + { + this->SpeakStop(); + } + else if (flags & 2) + { + if (this->nextSoundID != 0) + { + if (this->nextSoundID != this->currSoundID) + { + return 0; + } + } + this->nextSoundID = id; + return 1; + } + else + { + return 0; + } + } + + this->soundHandle = xSndPlay(id, 1.0f, 0.0f, 0x80, 0, 0, SND_CAT_DIALOG, 0.0f); + this->jawTime = 0.0f; + this->jawData = xJaw_FindData(id); + this->currSoundID = id; + + return 1; +} + +S32 zNPCNewsFish::say(const say_enum* s, unsigned long size, S32 flags, S32 max_say) +{ + if (size == 0) + { + return -1; + } + if (size == 1) + { + say_data* data = this->get_said(*s); + data->prev_total = data->total; + if (this->say(*s, flags)) + { + data->total++; + return 0; + } + return -1; + } + else + { + S32 min_say = 0x7fffffff; + const say_enum* it; + const say_enum* end = s + size; + + for (it = s; it != end; ++it) + { + say_data* data = this->get_said(*it); + if (data->total < min_say && data->total == data->prev_total) + { + min_say = data->total; + } + } + + if (max_say >= 0 && min_say >= max_say) + { + return -1; + } + + S32 total = 0; + { + const say_enum* it; + const say_enum* end = s + size; + for (it = s; it != end; ++it) + { + say_data* data = this->get_said(*it); + if (data->total <= min_say && data->total == data->prev_total) + { + total++; + } + } + } + + S32 played = -1; + S32 which; + + U32 r = xrand(); + which = (S32)((r >> 13) % total); + + { + const say_enum* it; + const say_enum* end = s + size; + for (it = s; it != end; ++it) + { + say_data* data = this->get_said(*it); + S32 new_total = data->total; + + U32 changed = + ((U32)(data->prev_total - new_total) | (U32)(new_total - data->prev_total)) >> + 31; + U8 last_changed = (U8)changed; + + data->prev_total = new_total; + + if (data->total <= min_say && !last_changed) + { + which--; + if (which == -1) + { + if (this->say(*it, flags)) + { + data->total++; + played = (S32)(it - s); + } + } + } + } + } + + return played; + } +} + +void zNPCNewsFish::reset_said() +{ + say_data* s = this->said; + say_data* end = s + (S32)MAX_SAY; + + for (; s != end; s++) + { + s->prev_total = 0; + s->total = 0; + } +} + +void zNPCSandyBikini::Reset() +{ + zNPCVillager::Reset(); + tmr_leakCycle = 0.0f; +} + +void zNPCSandyBikini::Process(xScene* xscn, F32 dt) +{ + zNPCVillager::Process(xscn, dt); + zNPCSandyBikini::VFXLeakyFaucet(dt); +} + +void zNPCSandyBikini::VFXLeakyFaucet(F32 dt) +{ + F32 rat_tym; + xVec3 pos_emit; + xVec3 dir_emit; + F32 dist; + static const xVec3 vec_boneOffset = { 0.05f, 0.0f, 0.0f }; + rat_tym = NPCC_TmrCycle(&this->tmr_leakCycle, dt, 0.3f); + const xVec3* bone_pos = (const xVec3*)this->BonePos(17); + pos_emit.x = bone_pos->x; + pos_emit.y = bone_pos->y; + pos_emit.z = bone_pos->z; + pos_emit += vec_boneOffset; + xMat3x3RMulVec(&pos_emit, (const xMat3x3*)this->BoneMat(0), &pos_emit); + pos_emit *= this->cfg_npc->scl_model.x; + pos_emit += *(xVec3*)this->BonePos(0); + this->XZVecToPos(&dir_emit, &pos_emit, NULL); + if (xVec3Length2(&dir_emit) > 0.0f) + { + dir_emit.invert(); + dist = xVec3Normalize(&dir_emit, &dir_emit); + dir_emit.y += 0.25f; + xVec3Normalize(&dir_emit, &dir_emit); + F32 temp_sin = isin((PI / 4.0f) * rat_tym); + xVec3SMul(&g_parf_aqualeak.vel, &dir_emit, temp_sin * dist); + xVec3Copy(&g_parf_aqualeak.pos, &pos_emit); + xParEmitterEmitCustom(g_pemit_aqualeak, dt, &g_parf_aqualeak); + } +} + +void zNPCBalloonBoy::Init(xEntAsset* asset) +{ + zNPCFish::Init(asset); + rast_shadBalloon = 0; + cfg_npc->dst_castShadow = -1; + return; +} + +void zNPCBalloonBoy::Reset() +{ + zNPCFish::Reset(); + + if (!this->rast_shadBalloon) + { + this->rast_shadBalloon = NPCC_FindRWRaster("shadow_balloons"); + } +} + +void zNPCBalloonBoy::SelfSetup() { xPsyche* psy; zNPCFish::SelfSetup(); @@ -665,6 +1894,68 @@ void zNPCBalloonBoy::Render() zNPCBalloonBoy::PlatShadRend(); } +void zNPCBalloonBoy::PlatShadRend() +{ + F32 ds2_cam; + S32 fillit; + S32 needit; + xMat4x3 mat_fake; + + if (this->rast_shadBalloon) + { + if (!plat_balloons && !shadCache) + { + return; + } + + if (!plat_balloons) + { + NPCC_ShadowCacheRelease(shadCache); + shadCache = NULL; + return; + } + + xVec3* pos = zNPCCommon::Pos(); + ds2_cam = NPCC_ds2_toCam(pos, NULL); + + static S32 takeThePain = 0; + needit = 0; + takeThePain--; + if (takeThePain < 0) + { + takeThePain = 8; + + S32 is_close = (ds2_cam < SQ(30.0f)) ? 1 : 0; + if (is_close && !shadCache) + { + shadCache = NPCC_ShadowCacheReserve(); + } + else if (!is_close && shadCache) + { + NPCC_ShadowCacheRelease(shadCache); + shadCache = NULL; + } + needit = 1; + } + + if (shadCache) + { + F32 ratio = CLAMP(ds2_cam / SQ(30.0f), 0.0f, 1.0f); + F32 alpha = CLAMP(1.0f - ratio + 0.3f, 0.0f, 1.0f); + fillit = alpha; + + mat_fake.at = g_NY3; + mat_fake.up = ((xMat4x3*)plat_balloons->model->Mat)->at; + mat_fake.right = ((xMat4x3*)plat_balloons->model->Mat)->right; + mat_fake.pos = *xEntGetCenter(plat_balloons); + + RwMatrixUpdate((RwMatrix*)&mat_fake); + NPCC_RenderProjTexture(rast_shadBalloon, alpha, &mat_fake, 0.97f, 10.0f, shadCache, + needit, plat_balloons); + } + } +} + void zNPCBalloonBoy::AddBallooning(xPsyche* psy) { psy->AddGoal(NPC_GOAL_BALLOON, NULL); @@ -674,9 +1965,149 @@ void zNPCBalloonBoy::AddBallooning(xPsyche* psy) psy->AddGoal(NPC_GOAL_BOYSWIM, NULL); } +U32 zNPCBalloonBoy::AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* rawgoal) +{ + S32 idx = -1; + U32 da_anim = 0; + + switch (gid) + { + case NPC_GOAL_BALLOON: + if (gspot == 0x20) + idx = 0xb; + else if (gspot == 0x21) + idx = 0xb; + else + idx = 0xb; + break; + case NPC_GOAL_BOYRIDE: + if (gspot == 0x20) + idx = 0xb; + else if (gspot == 0x21) + idx = 0xb; + else if (gspot == 0x24) + idx = 0xc; + else + idx = 0xb; + break; + case NPC_GOAL_BOYFALL: + if (gspot == 0x20) + idx = 0xd; + else if (gspot == 0x21) + idx = 0xd; + else if (gspot == 0x24) + idx = 0xe; + else + idx = 0xd; + break; + case NPC_GOAL_BOYWEEP: + idx = 0xf; + break; + case NPC_GOAL_BOYSWIM: + idx = 0x10; + break; + default: + da_anim = zNPCFish::AnimPick(gid, gspot, rawgoal); + break; + } + + if (idx >= 0) + { + da_anim = g_hash_folkanim[idx]; + } + return da_anim; +} + +S32 zNPCBalloonBoy::FolkHandleMail(NPCMsg* mail) +{ + S32 handled; + + switch (mail->msgid) + { + case NPC_MID_SYSEVENT: + handled = this->ParseSysEvent(&mail->sysevent); + break; + default: + if (this->IAmBallooning()) + { + handled = 1; + } + else + { + handled = 0; + } + break; + } + + if (handled == 0) + { + handled = zNPCFish::FolkHandleMail(mail); + } + + return handled; +} + +S32 zNPCBalloonBoy::ParseSysEvent(NPCSysEvent* sed) +{ + zPlatform* plat; + S32 handled = 1; + + switch (sed->toEvent) + { + case eEventNPCSpecial_PlatformSnap: + this->plat_balloons = NULL; + plat = (zPlatform*)sed->toParamWidget; + if (plat != NULL && plat->baseType == eBaseTypePlatform) + { + this->plat_balloons = plat; + } + if (this->plat_balloons == NULL) + { + plat = (zPlatform*)sed->from; + if (plat != NULL && plat->baseType == eBaseTypePlatform) + { + this->plat_balloons = plat; + } + } + if (this->plat_balloons != NULL) + { + this->psy_instinct->GoalSet(NPC_GOAL_BALLOON, 1); + } + else + { + this->psy_instinct->GoalSet(NPC_GOAL_IDLE, 1); + } + break; + + case eEventNPCSetActiveOn: + case eEventNPCSetActiveOff: + handled = 0; + break; + + case eEventNPCSpecial_PlatformFall: + break; + default: + if (this->IAmBallooning()) + { + handled = 1; + } + else + { + handled = 0; + } + break; + } + + return handled; +} + void zNPCBalloonBoy::PlatAnimSet(en_BBOY_PLATANIM platanim) { - F32 fvals[4]; + F32 fvals[4] = { (F32)(platanim + 1), 0.0f, 0.0f, 0.0f }; + if (this->plat_balloons != NULL) + { + zEntAnimEvent(this->plat_balloons, 0xC3, fvals); + } } void zNPCBalloonBoy::PlatAnimSync() @@ -684,38 +2115,65 @@ void zNPCBalloonBoy::PlatAnimSync() zNPCCommon::AnimCurState(); } +S32 zNPCBalloonBoy::IAmBallooning() +{ + S32 goals[] = { NPC_GOAL_BALLOON, NPC_GOAL_BOYRIDE, NPC_GOAL_BOYFALL, + NPC_GOAL_BOYWEEP, NPC_GOAL_BOYSWIM, 0 }; + S32 result = 0; + S32 goal_id = this->psy_instinct->GIDOfActive(); + + for (S32* i = goals; *i != 0; i++) + { + if (goal_id == *i) + { + result = 1; + break; + } + } + + return result; +} + void zNPCBubbleBuddy::Init(xEntAsset* a) { zNPCFish::Init(a); + CruiseBubbleDoesBubbleBuddyToo = this; this->aid_fresnelTxtr = 0; this->txtr_fresnel = 0; this->rast_fresnel = 0; this->aid_enviroTxtr = 0; this->txtr_enviro = 0; this->rast_enviro = 0; + this->alf_currBubBud = 1.0f; } +RpAtomic* NPC_BubBud_RenderCB(RpAtomic* atomic); + void zNPCBubbleBuddy::Setup() { zNPCCommon::Setup(); if (!this->rast_fresnel && !this->rast_enviro) { - this->aid_fresnelTxtr = xStrHash("gloss_edge"); + char* nam_fresTxtr = "gloss_edge"; + this->aid_fresnelTxtr = xStrHash(nam_fresTxtr); this->txtr_fresnel = NPCC_FindRWTexture(this->aid_fresnelTxtr); this->rast_fresnel = NPCC_FindRWRaster(this->txtr_fresnel); - this->aid_enviroTxtr = xStrHash("gloss_edge"); + this->aid_enviroTxtr = xStrHash(nam_fresTxtr); this->txtr_enviro = NPCC_FindRWTexture(this->aid_enviroTxtr); this->rast_enviro = NPCC_FindRWRaster(this->txtr_enviro); } - - this->model->PipeFlags = (this->model->PipeFlags & 0xffffffdf) | 0x10; + this->model->PipeFlags = (this->model->PipeFlags & 0xffffffcf) | 0x10; + this->model->Data->renderCallBack = NPC_BubBud_RenderCB; + if (this->model->Data->renderCallBack == NULL) + { + this->model->Data->renderCallBack = AtomicDefaultRenderCallBack; + } } -void zNPCBubbleBuddy::Reset() // possible scheduling meme? +void zNPCBubbleBuddy::Reset() { zNPCFish::Reset(); - // flags = flags | 0x40; flags |= 0x40; } @@ -723,140 +2181,125 @@ void zNPCBubbleBuddy::RenderExtra() { if (xEntIsVisible(this) && !(this->model->Flags & 0x400)) { - RwRenderStateGet(rwRENDERSTATECULLMODE, 0); + RwCullMode old_cull_mode; + RwRenderStateGet(rwRENDERSTATECULLMODE, &old_cull_mode); RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)0x3); xModelRender(this->model); RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)0x2); xModelRender(this->model); - RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)0); + RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)old_cull_mode); } } -S32 NPC_BubBud_RenderCB(RpAtomic*) -{ - return 0; -} - -S32 FOLK_grul_goAlert(xGoal* rawgoal, void* x, en_trantype* trantype, F32 f1, void* y) -{ - return 0; -} - -void FOLK_InitEffects() -{ - g_pemit_aqualeak = zParEmitterFind("PAREMIT_FOLK_SANDYB_LEAK"); - g_parf_aqualeak.custom_flags = 0x300; - xVec3Copy(&g_parf_aqualeak.pos, &g_O3); - xVec3Copy(&g_parf_aqualeak.vel, &g_O3); -} - -void FOLK_KillEffects() +void zNPCBubbleBuddy_AlphaUpdate(F32 dt) { + static F32 tmr_pulseAlpha = 0.0f; // non-matching: stfs too late + F32 angle = NPCC_TmrCycle(&tmr_pulseAlpha, dt, 1.5f) * PI; + zNPCBubbleBuddy::alf_currBubBud = LERP(MAX(0.0f, MIN(xabs(isin(angle)), 1.0f)), 0.5f, 0.5f); } -ztaskbox::callback::callback() +RpAtomic* NPC_BubBud_RenderCB(RpAtomic* atomic) { -} + bb_env_texture = xStrHash("rainbowfilm_smooth32"); + bb_fresnel_texture = xStrHash("gloss_edge"); -F32 zNPCVillager::GenShadCacheRad() -{ - return 1.5f; -} + F32 fade = zNPCBubbleBuddy::alf_currBubBud; -void zNPCBubbleBuddy::Render() -{ - this->flg_xtrarend |= 1; -} + if (zNPCBubbleBuddy::rast_fresnel != 0) + { + iModelSetMaterialAlpha(atomic, fade * 127.5f + 0.5f); + gFXSurfaceFlags = 0x10; + xFXAtomicEnvMapSetup(atomic, bb_fresnel_texture, fade); + gFXSurfaceFlags = 0; + (*gAtomicRenderCallBack)(atomic); + } -xEntDrive* zNPCFish::PRIV_GetDriverData() -{ - return &raw_drvdata; -} + if (zNPCBubbleBuddy::rast_enviro != 0) + { + iModelSetMaterialAlpha(atomic, fade * 127.5f + 0.5f); + AtomicDisableMatFX(atomic); + gFXSurfaceFlags = 0x10; + xFXAtomicEnvMapSetup(atomic, bb_env_texture, fade); + gFXSurfaceFlags = 0; + (*gAtomicRenderCallBack)(atomic); + } -U8 zNPCVillager::ColChkByFlags() const -{ - return 24; + return atomic; } -U8 zNPCVillager::ColPenByFlags() const +S32 FOLK_grul_goAlert(xGoal* rawgoal, void*, en_trantype* trantype, F32, void*) { - return 24; -} + S32 nextgoal = 0; + zNPCVillager* npc = (zNPCVillager*)rawgoal->psyche->clt_owner; + xVec3 vec; // from dwarf, unused? -void zNPCNewsFish::SelfSetup() -{ -} + if (npc->SomethingWonderful()) + { + return nextgoal; + } -U8 zNPCMerManChair::ColChkFlags() const -{ - return 0; -} + if (npc->PlayerIsStaring()) + { + *trantype = GOAL_TRAN_SET; + nextgoal = NPC_GOAL_PLAYERNEAR; + } -U8 zNPCMerManChair::ColPenFlags() const -{ - return 0; + return nextgoal; } -U8 zNPCMerManChair::PhysicsFlags() const +S32 MERC_grul_goAlert(xGoal* rawgoal, void*, en_trantype* trantype, F32, void*) { - return 0; -} + zNPCVillager* npc = (zNPCVillager*)rawgoal->psyche->clt_owner; + xVec3 dir_plyr; -void HiThere::on_talk_stop() -{ - if (this->npc) + if (npc->SomethingWonderful()) { - zNPCMsg_SendMsg(NPC_MID_TALKOFF, this->npc); + return 0; } -} -void HiThere::on_talk_start() -{ - if (this->npc) + if (!npc->PlayerIsStaring()) { - zNPCMsg_SendMsg(NPC_MID_TALKON, this->npc); + return 0; } -} -U8 zNPCNewsFishTV::ColChkFlags() const -{ - return 0; -} - -U8 zNPCNewsFishTV::ColPenFlags() const -{ - return 0; -} + if (xVec3Dot(NPCC_faceDir(npc), NPCC_faceDir(&globals.player.ent)) > -0.5f) + { + return 0; + } -U8 zNPCNewsFishTV::ColChkByFlags() const -{ - return 0; -} + F32 dst = npc->XZDstSqToPlayer(&dir_plyr, NULL); + if (dst < 0.5f) + { + return 0; + } -U8 zNPCNewsFishTV::ColPenByFlags() const -{ - return 0; -} + F32 sqrt_dst = xsqrt(dst); + xVec3SMulBy(&dir_plyr, 1.0f / sqrt_dst); -U8 zNPCNewsFishTV::PhysicsFlags() const -{ - return 0; -} + if (xVec3Dot(NPCC_faceDir(npc), &dir_plyr) < 0.5f) + { + return 0; + } -U32 NPCTarget::HaveTarget() -{ - return (*(U32*)this != 0); + *trantype = GOAL_TRAN_SET; + return NPC_GOAL_PLAYERNEAR; } -U32 ztaskbox::StatusGet() const +void FOLK_InitEffects() { - return this->state; + g_pemit_aqualeak = zParEmitterFind("PAREMIT_FOLK_SANDYB_LEAK"); + g_parf_aqualeak.custom_flags = 0x300; + xVec3Copy(&g_parf_aqualeak.pos, &g_O3); + xVec3Copy(&g_parf_aqualeak.vel, &g_O3); } -void ztaskbox::callback::on_talk_start() +void FOLK_KillEffects() { } -void ztaskbox::callback::on_talk_stop() +void __deadstripped_zNPCTypeVillager(ztaskbox::callback cb) { + // no xrefs to these exist, called to match weak .text section + cb.on_talk_stop(); + cb.on_talk_start(); } diff --git a/src/SB/Game/zNPCTypeVillager.h b/src/SB/Game/zNPCTypeVillager.h index e9c864cfd..4e13633bf 100644 --- a/src/SB/Game/zNPCTypeVillager.h +++ b/src/SB/Game/zNPCTypeVillager.h @@ -1,6 +1,7 @@ #ifndef ZNPCTYPEVILLAGER_H #define ZNPCTYPEVILLAGER_H +#include "xBehaviour.h" #include "zNPCSndLists.h" #include "zNPCSupport.h" #include "zNPCTypeCommon.h" @@ -16,8 +17,20 @@ struct HiThere : ztaskbox::callback zNPCCommon* npc; - virtual void on_talk_start(); - virtual void on_talk_stop(); + virtual void on_talk_stop() + { + if (this->npc) + { + zNPCMsg_SendMsg(NPC_MID_TALKOFF, this->npc); + } + } + virtual void on_talk_start() + { + if (this->npc) + { + zNPCMsg_SendMsg(NPC_MID_TALKON, this->npc); + } + } }; struct zNPCVillager : zNPCCommon @@ -31,8 +44,15 @@ struct zNPCVillager : zNPCCommon } void FindMyConverse(); - U8 ColPenByFlags() const; - U8 ColChkByFlags() const; + U8 ColChkByFlags() const + { + return 24; + } + U8 ColPenByFlags() const + { + return 24; + } + U8 ColChkFlags() const; U8 ColPenFlags() const; U8 PhysicsFlags() const; void Init(xEntAsset*); @@ -40,13 +60,26 @@ struct zNPCVillager : zNPCCommon void ParseINI(); void ParseNonRandTalk(); void Process(xScene* xscn, F32 dt); + void CollideReview(); void SelfSetup(); + U32 AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* goal); + S32 NPCMessage(NPCMsg* mail); void SpeakBegin(); void SpeakEnd(); + void SpeakStart(U32 sndid, U32 sndhandle, S32 anim); + void SpeakStop(); + void AddTalking(xPsyche* psy, S32 (*eval_plyrnear)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_talking)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_chatter)(xGoal*, void*, en_trantype*, F32, void*), + S32 (*eval_speak)(xGoal*, void*, en_trantype*, F32, void*)); void TossMyConverse(); S32 PlayerIsStaring(); void ChkCheatSize(); - F32 GenShadCacheRad(); + F32 GenShadCacheRad() + { + return 1.5f; + } + virtual S32 FolkHandleMail(NPCMsg* mail); }; struct zNPCFish : zNPCVillager @@ -61,12 +94,19 @@ struct zNPCFish : zNPCVillager } void Init(xEntAsset*); + void Reset(); void ParseINI(); void FishSoundTables(); - void CheckDoChat(); - void Reset(); + U32 AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* rawgoal); void SelfSetup(); - xEntDrive* PRIV_GetDriverData(); + void Process(xScene* xscn, F32 dt); + S32 FolkHandleMail(NPCMsg* mail); + void MonitorCowering(xScene* xscn, F32 dt); + void CheckDoChat(); + xEntDrive* PRIV_GetDriverData() + { + return &raw_drvdata; + } }; struct zNPCBubbleBuddy : zNPCFish @@ -79,7 +119,10 @@ struct zNPCBubbleBuddy : zNPCFish void Setup(); void Reset(); void RenderExtra(); - void Render(); + void Render() + { + this->flg_xtrarend |= 1; + } static RwRaster* rast_fresnel; static RwRaster* rast_enviro; @@ -87,6 +130,7 @@ struct zNPCBubbleBuddy : zNPCFish static RwTexture* txtr_fresnel; static U32 aid_enviroTxtr; static RwTexture* txtr_enviro; + static F32 alf_currBubBud; }; enum en_BBOY_PLATANIM @@ -114,8 +158,12 @@ struct zNPCBalloonBoy : zNPCFish void Render(); void PlatShadRend(); void AddBallooning(xPsyche* psy); + U32 AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* rawgoal); + S32 FolkHandleMail(NPCMsg* mail); + S32 ParseSysEvent(NPCSysEvent*); void PlatAnimSet(en_BBOY_PLATANIM anim); void PlatAnimSync(); + S32 IAmBallooning(); }; struct zNPCSandyBikini : zNPCVillager @@ -140,9 +188,22 @@ struct zNPCMerManChair : zNPCVillager } void Init(xEntAsset*); - U8 PhysicsFlags() const; - U8 ColPenFlags() const; - U8 ColChkFlags() const; + void Reset(); + void SelfSetup(); + U32 AnimPick(S32 gid, en_NPC_GOAL_SPOT gspot, xGoal* rawgoal); + void Process(xScene* scn, F32 dt); + U8 ColChkFlags() const + { + return 0; + } + U8 ColPenFlags() const + { + return 0; + } + U8 PhysicsFlags() const + { + return 0; + } }; struct zNPCNewsFish : zNPCVillager @@ -257,58 +318,44 @@ struct zNPCNewsFish : zNPCVillager // 0x00000000; // 0x0 // 0x00000000; // 0x4 void Init(xEntAsset*); // 0x8 zNPCNewsFish - void PostInit(); // 0xC xNPCBasic - void Setup(); // 0x10 zNPCCommon + //void PostInit(); // 0xC xNPCBasic + //void Setup(); // 0x10 zNPCCommon void PostSetup(); // 0x14 zNPCNewsFish void Reset(); // 0x18 zNPCNewsFish void Process(xScene*, F32); // 0x1C zNPCNewsFish - void BUpdate(xVec3*); // 0x20 zNPCCommon - void NewTime(xScene*, F32); // 0x24 zNPCCommon - void Move(xScene*, F32, xEntFrame*); // 0x28 zNPCCommon - S32 SysEvent(xBase*, xBase*, U32, const F32*, xBase*, S32*); // 0x2C zNPCCommon + //void BUpdate(xVec3*); // 0x20 zNPCCommon + //void NewTime(xScene*, F32); // 0x24 zNPCCommon + //void Move(xScene*, F32, xEntFrame*); // 0x28 zNPCCommon + //S32 SysEvent(xBase*, xBase*, U32, const F32*, xBase*, S32*); // 0x2C zNPCCommon void Render(); // 0x30 zNPCNewsFish - void Save(xSerial*) const; // 0x34 xNPCBasic - void Load(xSerial*); // 0x38 xNPCBasic - void CollideReview(); // 0x3C zNPCVillager - U8 ColChkFlags() const; // 0x40 zNPCVillager - U8 ColPenFlags() const; // 0x44 zNPCVillager - U8 ColChkByFlags() const; // 0x48 zNPCVillager - U8 ColPenByFlags() const; // 0x4C zNPCVillager - U8 PhysicsFlags() const; // 0x50 zNPCVillager - void Destroy(); // 0x54 zNPCCommon - S32 NPCMessage(NPCMsg*); // 0x58 zNPCVillager - void RenderExtra(); // 0x5C zNPCCommon - void RenderExtraPostParticles(); // 0x60 zNPCCommon - void ParseINI(); // 0x64 zNPCVillager - void ParseLinks(); // 0x68 zNPCCommon - void ParseProps(); // 0x6C zNPCCommon - void SelfSetup(); // 0x70 zNPCNewsFish - void SelfDestroy(); // 0x74 zNPCCommon - S32 IsHealthy(); // 0x78 zNPCCommon - S32 IsAlive(); // 0x7C zNPCCommon - void Damage(en_NPC_DAMAGE_TYPE, xBase*, const xVec3*); // 0x80 zNPCCommon - S32 Respawn(const xVec3*, zMovePoint*, zMovePoint*); // 0x84 zNPCCommon - void DuploOwner(zNPCCommon*); // 0x88 zNPCCommon - void DuploNotice(en_SM_NOTICES, void*); // 0x8C zNPCCommon - S32 CanRope(); // 0x90 zNPCCommon - void LassoNotify(en_LASSO_EVENT); // 0x94 zNPCCommon - S32 SetCarryState(en_NPC_CARRY_STATE); // 0x98 zNPCCommon - void Stun(F32); // 0x9C zNPCCommon - void SpeakBegin(); // 0xA0 zNPCVillager - void SpeakEnd(); // 0xA4 zNPCVillager + //void Save(xSerial*) const; // 0x34 xNPCBasic + //void Load(xSerial*); // 0x38 xNPCBasic + //void CollideReview(); // 0x3C zNPCVillager + //U8 ColChkFlags() const; // 0x40 zNPCVillager + //U8 ColPenFlags() const; // 0x44 zNPCVillager + //U8 ColChkByFlags() const; // 0x48 zNPCVillager + //U8 ColPenByFlags() const; // 0x4C zNPCVillager + //U8 PhysicsFlags() const; // 0x50 zNPCVillager + //void Destroy(); // 0x54 zNPCCommon + //S32 NPCMessage(NPCMsg*); // 0x58 zNPCVillager + //void RenderExtra(); // 0x5C zNPCCommon + //void RenderExtraPostParticles(); // 0x60 zNPCCommon + //void ParseINI(); // 0x64 zNPCVillager + //void ParseLinks(); // 0x68 zNPCCommon + //void ParseProps(); // 0x6C zNPCCommon + void SelfSetup() + { + } void SpeakStart(U32 sndid, U32 sndhandle, S32 anim); // 0xA8 zNPCNewsFish void SpeakStop(); // 0xAC zNPCNewsFish - U32 AnimPick(S32, en_NPC_GOAL_SPOT, xGoal*); // 0xB0 zNPCVillager - void GetParm(en_npcparm, void*); // 0xB4 zNPCCommon - S32 GetParmDefault(en_npcparm, void*); // 0xB8 zNPCCommon - F32 GenShadCacheRad(); // 0xBC zNPCVillager - xEntDrive* PRIV_GetDriverData(); // 0xC0 zNPCCommon - zNPCLassoInfo* PRIV_GetLassoData(); // 0xC4 zNPCCommon - S32 LassoSetup(); // 0xC8 zNPCCommon - void FolkHandleMail(NPCMsg*); // 0xCC zNPCVillager void TalkOnScreen(S32 talkOnScreen); - zNPCNewsFish* get_said(zNPCNewsFish::say_enum); + S32 say(say_enum const*, unsigned long, S32, S32); + U8 say(say_enum s, S32 flags); + say_data* get_said(zNPCNewsFish::say_enum say) + { + return this->said + (S32)say; + }; }; struct zNPCNewsFishTV : zNPCVillager @@ -317,11 +364,30 @@ struct zNPCNewsFishTV : zNPCVillager { } - U8 PhysicsFlags() const; - U8 ColPenByFlags() const; - U8 ColChkByFlags() const; - U8 ColPenFlags() const; - U8 ColChkFlags() const; + U8 ColChkFlags() const + { + return 0; + } + + U8 ColPenFlags() const + { + return 0; + } + + U8 ColChkByFlags() const + { + return 0; + } + + U8 ColPenByFlags() const + { + return 0; + } + + U8 PhysicsFlags() const + { + return 0; + } }; xAnimTable* ZNPC_AnimTable_Villager(); @@ -331,7 +397,8 @@ xAnimTable* ZNPC_AnimTable_BalloonBoy(); xAnimTable* ZNPC_AnimTable_BalloonBoy(xAnimTable* callerTable); xAnimTable* ZNPC_AnimTable_SuperFriend(); xAnimTable* ZNPC_AnimTable_SuperFriend(xAnimTable* callerTable); -S32 FOLK_grul_goAlert(xGoal*, void*, en_trantype*, F32, void*); +S32 FOLK_grul_goAlert(xGoal* rawgoal, void*, en_trantype* trantype, F32, void*); +S32 MERC_grul_goAlert(xGoal* rawgoal, void*, en_trantype* trantype, F32, void*); void FOLK_KillEffects(); void FOLK_InitEffects(); void zNPCVillager_ScenePostInit(); diff --git a/src/SB/Game/zTaskBox.h b/src/SB/Game/zTaskBox.h index e4cb3ca15..cfb5e6032 100644 --- a/src/SB/Game/zTaskBox.h +++ b/src/SB/Game/zTaskBox.h @@ -31,9 +31,12 @@ struct ztaskbox : xBase struct callback { - callback(); - virtual void on_talk_start(); - virtual void on_talk_stop(); + virtual void on_talk_start() + { + } + virtual void on_talk_stop() + { + } }; struct talk_callback : ztalkbox::callback @@ -107,7 +110,10 @@ struct ztaskbox : xBase static void init(); bool exists(state_enum stage); static U32 get_text(U32); - U32 StatusGet() const; + U32 StatusGet() const + { + return this->state; + } }; #endif From 744ac89447dc94a586a6038dbde00327f9b9946e Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Thu, 21 May 2026 02:23:44 -0400 Subject: [PATCH 4/8] Move .sbss data definitions --- src/SB/Game/zNPCTypeVillager.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/SB/Game/zNPCTypeVillager.cpp b/src/SB/Game/zNPCTypeVillager.cpp index a1797dc1a..a58e9c32e 100644 --- a/src/SB/Game/zNPCTypeVillager.cpp +++ b/src/SB/Game/zNPCTypeVillager.cpp @@ -53,22 +53,9 @@ char* g_strz_folkanim[26] = { static U32 g_hash_platanim[2] = {}; static char* g_strz_platanim[2] = { "fish_d_balloon_move", "fish_d_balloon_hit" }; -xEnt* CruiseBubbleDoesBubbleBuddyToo; -static U32 bb_env_texture; -static U32 bb_fresnel_texture; F32 g_vilg_ds2_playernear = 25.0f; static F32 g_rad_cowercheck = 15.0f; -// Not sure why these are declared here but the data sections want it -RwRaster* zNPCBalloonBoy::rast_shadBalloon; -U32 zNPCBubbleBuddy::aid_fresnelTxtr; -U32 zNPCBubbleBuddy::aid_enviroTxtr; -RwTexture* zNPCBubbleBuddy::txtr_fresnel; -RwTexture* zNPCBubbleBuddy::txtr_enviro; -RwRaster* zNPCBubbleBuddy::rast_fresnel; -RwRaster* zNPCBubbleBuddy::rast_enviro; -F32 zNPCBubbleBuddy::alf_currBubBud = 1.0f; - void ZNPC_Villager_Startup() { S32 i; @@ -1860,6 +1847,8 @@ void zNPCSandyBikini::VFXLeakyFaucet(F32 dt) } } +RwRaster* zNPCBalloonBoy::rast_shadBalloon = NULL; + void zNPCBalloonBoy::Init(xEntAsset* asset) { zNPCFish::Init(asset); @@ -2134,6 +2123,15 @@ S32 zNPCBalloonBoy::IAmBallooning() return result; } +U32 zNPCBubbleBuddy::aid_fresnelTxtr = 0; +U32 zNPCBubbleBuddy::aid_enviroTxtr = 0; +RwTexture* zNPCBubbleBuddy::txtr_fresnel = NULL; +RwTexture* zNPCBubbleBuddy::txtr_enviro = NULL; +RwRaster* zNPCBubbleBuddy::rast_fresnel = NULL; +RwRaster* zNPCBubbleBuddy::rast_enviro = NULL; +F32 zNPCBubbleBuddy::alf_currBubBud = 1.0f; +xEnt* CruiseBubbleDoesBubbleBuddyToo; + void zNPCBubbleBuddy::Init(xEntAsset* a) { zNPCFish::Init(a); @@ -2198,6 +2196,9 @@ void zNPCBubbleBuddy_AlphaUpdate(F32 dt) zNPCBubbleBuddy::alf_currBubBud = LERP(MAX(0.0f, MIN(xabs(isin(angle)), 1.0f)), 0.5f, 0.5f); } +static U32 bb_env_texture = 0; +static U32 bb_fresnel_texture = 0; + RpAtomic* NPC_BubBud_RenderCB(RpAtomic* atomic) { bb_env_texture = xStrHash("rainbowfilm_smooth32"); From af271f010a82edca5edd7dcb4b87b9243c991f9c Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Thu, 21 May 2026 04:54:35 -0400 Subject: [PATCH 5/8] More matches in affected files --- configure.py | 2 +- src/SB/Core/x/xutil.h | 53 ++++++++++++++++++++++++- src/SB/Game/zNPCSndTable.cpp | 75 ++++++++++++++++++------------------ src/SB/Game/zNPCSpawner.cpp | 60 +---------------------------- 4 files changed, 91 insertions(+), 99 deletions(-) diff --git a/configure.py b/configure.py index 63c5a304b..a45e7cbcf 100644 --- a/configure.py +++ b/configure.py @@ -583,7 +583,7 @@ def MatchingFor(*versions): Object(NonMatching, "SB/Game/zGoo.cpp"), Object(NonMatching, "SB/Game/zGrid.cpp"), Object(Matching, "SB/Game/zNPCGoalScript.cpp", extra_cflags=["-sym on"]), - Object(NonMatching, "SB/Game/zNPCSndTable.cpp"), + Object(NonMatching, "SB/Game/zNPCSndTable.cpp", extra_cflags=["-sym on"]), Object(Matching, "SB/Game/zNPCSndLists.cpp"), Object(NonMatching, "SB/Game/zNPCTypeDuplotron.cpp"), Object(Equivalent, "SB/Core/x/xModelBucket.cpp"), diff --git a/src/SB/Core/x/xutil.h b/src/SB/Core/x/xutil.h index 7d84322c0..20b01e152 100644 --- a/src/SB/Core/x/xutil.h +++ b/src/SB/Core/x/xutil.h @@ -12,7 +12,58 @@ U32 xUtil_crc_update(U32 crc_accum, char* data, S32 datasize); S32 xUtil_yesno(F32 wt_yes); void xUtil_wtadjust(F32* wts, S32 cnt, F32 arbref); -template static T* xUtil_select(T** arg0, S32 arg1, const F32* arg3); +template T* xUtil_select(T** data, S32 size, const F32* arg2) +{ + T* selected = NULL; + S32 selectIdx = 0; + F32 tempValue; + + if (data == NULL) + { + return NULL; + } + else if (size < 1) + { + return NULL; + } + + F32 randOffset = xurand(); + if (arg2 == NULL) + { + selectIdx = (S32)(randOffset * (F32)size); + } + else + { + F32* roundingData = (F32*)arg2; + F32 threshold = 0.0f; + S32 counter = 0; + + for (S32 i = size; i > 0; i--) + { + tempValue = threshold; + threshold += *roundingData; + if (randOffset >= tempValue && randOffset <= threshold) + { + selectIdx = counter; + break; + } + roundingData++; + counter++; + } + } + + if (selectIdx >= size) + { + selectIdx = size - 1; + } + + if (selectIdx < 0) + { + selectIdx = 0; + } + + return data[selectIdx]; +} template T xUtil_choose(T const* list, S32 size, F32 const* float_list) { diff --git a/src/SB/Game/zNPCSndTable.cpp b/src/SB/Game/zNPCSndTable.cpp index 1ad4f080f..e191e15b3 100644 --- a/src/SB/Game/zNPCSndTable.cpp +++ b/src/SB/Game/zNPCSndTable.cpp @@ -118,7 +118,6 @@ NPCSndProp* NPCS_SndFindProps(en_NPC_SOUND sndtype) en_NPC_SOUND NPCS_SndTypeFromHash(U32 aid_snd, NPCSndTrax* cust, NPCSndTrax* share) { - // non-matching en_NPC_SOUND da_type = NPC_STYP_BOGUS; NPCSndTrax* trax; @@ -149,7 +148,7 @@ en_NPC_SOUND NPCS_SndTypeFromHash(U32 aid_snd, NPCSndTrax* cust, NPCSndTrax* sha { da_type = trax->typ_sound; - return da_type; + break; } } } @@ -158,82 +157,82 @@ en_NPC_SOUND NPCS_SndTypeFromHash(U32 aid_snd, NPCSndTrax* cust, NPCSndTrax* sha return da_type; } -// WIP U32 NPCS_SndPickSimilar(en_NPC_SOUND sndtype, NPCSndTrax* cust, NPCSndTrax* share) { - S32 cnt = 0; + U32 aid_choice; + NPCSndTrax* trax; + S32 i; + S32 ingroup; S32 list[32] = {}; F32 wts[32] = { 1.0f }; + S32 cnt; + F32 use_wt; - for (S32 si = 0; si < 4; si++) - { - NPCSndTrax* trax; - F32 weight; + aid_choice = 0; + cnt = 0; - if (si == 0) + for (i = 0; i < 3; i++) + { + if (i == 0) { + use_wt = 2.0f; trax = cust; - weight = 2.0f; } - else if (si == 1) + else if (i == 1) { + use_wt = 1.5f; trax = share; - weight = 1.5f; } - else + else if (i == 2) { - if (cnt >= 5) - { - trax = NULL; - weight = 0.0f; - } - else if (si == 2) - { + use_wt = 1.0f; + trax = NULL; + if (cnt < 5) trax = g_sndTrax_General; - weight = 1.0f; - } - else - { + } + else + { + use_wt = 1.0f; + trax = NULL; + if (cnt < 5) trax = g_sndTrax_Universal; - weight = 1.0f; - } } if (trax == NULL) - { continue; - } - bool in_group = false; - for (; trax->typ_sound != NPC_STYP_LISTEND; trax++) + ingroup = 0; + + while (trax->typ_sound != NPC_STYP_LISTEND) { if (trax->typ_sound == sndtype) { - in_group = true; - if (trax->aid_sound != 0 && cnt < 32) + ingroup = 1; + + if (trax->aid_sound != 0) { - wts[cnt] = weight; + wts[cnt] = use_wt; list[cnt] = trax->aid_sound; cnt++; } } - else if (in_group) + else if (ingroup) { break; } if (cnt >= 32) - { break; - } + + trax++; } } if (cnt > 0) { xUtil_wtadjust(wts, cnt, 1.0f); - return xUtil_choose(list, cnt, wts); + aid_choice = xUtil_choose(list, cnt, wts); } - return 0; + return aid_choice; } diff --git a/src/SB/Game/zNPCSpawner.cpp b/src/SB/Game/zNPCSpawner.cpp index 7ac848e40..22c013204 100644 --- a/src/SB/Game/zNPCSpawner.cpp +++ b/src/SB/Game/zNPCSpawner.cpp @@ -8,6 +8,7 @@ #include "zGlobals.h" #include "xMathInlines.h" #include "zNPCTypeRobot.h" +#include "xUtil.h" static SMDepot g_smdepot = {}; static S32 g_drawSpawnBounds; @@ -843,62 +844,3 @@ S32 zMovePoint::IsOn() // even though a single byte is moved into the return register return (S32)this->on; } - -template T* xUtil_select(T** data, S32 size, const F32* arg2) -{ - T* selected = NULL; - S32 selectIdx = 0; - - F32 randOffset; - - if (data == NULL) - { - return NULL; - } - else if (size < 1) - { - return NULL; - } - - randOffset = xurand(); - if (arg2 == NULL) - { - selectIdx = (S32)(randOffset * (F32)size); - } - else - { - F32* roundingData = (F32*)arg2; - F32 threshold = 0.0f; - S32 counter = 0; - - // TODO: Fix float arithmetic and symbols - for (S32 i = size; i > 0; i--) - { - F32 tempValue = threshold; - threshold += *roundingData; - - if (randOffset >= threshold) - { - if (randOffset <= tempValue) - { - selectIdx = counter; - break; - } - } - roundingData++; - counter++; - } - } - - if (selectIdx >= size) - { - selectIdx = size - 1; - } - - if (selectIdx < 0) - { - selectIdx = 0; - } - - return data[selectIdx]; -} From 761e9f3ee959b6e35eadae19a26df23d2746a9e3 Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Thu, 21 May 2026 04:59:33 -0400 Subject: [PATCH 6/8] Undo dwarf file format --- dwarf/SB/Game/zNPCTypeVillager.cpp | 2438 +++++++++++----------------- 1 file changed, 978 insertions(+), 1460 deletions(-) diff --git a/dwarf/SB/Game/zNPCTypeVillager.cpp b/dwarf/SB/Game/zNPCTypeVillager.cpp index 99a0807d8..1f9b44baa 100644 --- a/dwarf/SB/Game/zNPCTypeVillager.cpp +++ b/dwarf/SB/Game/zNPCTypeVillager.cpp @@ -6,50 +6,47 @@ char buffer[16]; // size: 0x10, address: 0x0 char buffer[16]; // size: 0x10, address: 0x0 unsigned int g_hash_folkanim[26]; // size: 0x68, address: 0x5CD520 -char* g_strz_folkanim[26]; // size: 0x68, address: 0x4DF520 +char * g_strz_folkanim[26]; // size: 0x68, address: 0x4DF520 static unsigned int g_hash_platanim[2]; // size: 0x8, address: 0x50FF70 -static char* g_strz_platanim[2]; // size: 0x8, address: 0x50F038 +static char * g_strz_platanim[2]; // size: 0x8, address: 0x50F038 static signed int g_npcmsglock; // size: 0x4, address: 0x0 static class NPCMsg g_npcmsg; // size: 0x44, address: 0x0 -static class zParEmitter* g_pemit_aqualeak; // size: 0x4, address: 0x50FF78 +static class zParEmitter * g_pemit_aqualeak; // size: 0x4, address: 0x50FF78 static class xParEmitterCustomSettings g_parf_aqualeak; // size: 0x16C, address: 0x5CD590 float g_vilg_ds2_playernear; // size: 0x4, address: 0x50F040 float g_vilg_ds2_playergoing; // size: 0x4, address: 0x50F044 static signed int goalsWhichCheer[6]; // size: 0x18, address: 0x4DF650 static float g_rad_cowercheck; // size: 0x4, address: 0x50F048 -static char* news_fish_audio[71]; // size: 0x11C, address: 0x4DF680 +static char * news_fish_audio[71]; // size: 0x11C, address: 0x4DF680 static unsigned int news_fish_audio_hash[71]; // size: 0x11C, address: 0x5CD700 -class RwRaster* rast_shadBalloon; // size: 0x4, address: 0x50FF7C +class RwRaster * rast_shadBalloon; // size: 0x4, address: 0x50FF7C unsigned int aid_fresnelTxtr; // size: 0x4, address: 0x50FF84 unsigned int aid_enviroTxtr; // size: 0x4, address: 0x50FF88 -class RwTexture* txtr_fresnel; // size: 0x4, address: 0x50FF8C -class RwTexture* txtr_enviro; // size: 0x4, address: 0x50FF90 -class RwRaster* rast_fresnel; // size: 0x4, address: 0x50FF94 -class RwRaster* rast_enviro; // size: 0x4, address: 0x50FF98 +class RwTexture * txtr_fresnel; // size: 0x4, address: 0x50FF8C +class RwTexture * txtr_enviro; // size: 0x4, address: 0x50FF90 +class RwRaster * rast_fresnel; // size: 0x4, address: 0x50FF94 +class RwRaster * rast_enviro; // size: 0x4, address: 0x50FF98 float alf_currBubBud; // size: 0x4, address: 0x50F04C -class xEnt* CruiseBubbleDoesBubbleBuddyToo; // size: 0x4, address: 0x50FF9C +class xEnt * CruiseBubbleDoesBubbleBuddyToo; // size: 0x4, address: 0x50FF9C static unsigned int bb_env_texture; // size: 0x4, address: 0x50FFA4 static unsigned int bb_fresnel_texture; // size: 0x4, address: 0x50FFA8 -struct /* @anon10 */ -{ +struct /* @anon10 */ { // total size: 0xD0 } __vt__15zNPCBubbleBuddy; // size: 0xD0, address: 0x50B760 class xVec3 g_O3; // size: 0xC, address: 0x4F8D70 class zGlobals globals; // size: 0x2050, address: 0x52C8F0 float EnvMapShininess; // size: 0x4, address: 0x50E858 -class RpMaterial* MaterialSetShininess(class RpMaterial*, void*); // size: 0x0, address: 0x1EACD0 -class RpAtomic* (*gAtomicRenderCallBack)(class RpAtomic*); // size: 0x4, address: 0x50F9BC +class RpMaterial * MaterialSetShininess(class RpMaterial *, void *); // size: 0x0, address: 0x1EACD0 +class RpAtomic * (* gAtomicRenderCallBack)(class RpAtomic *); // size: 0x4, address: 0x50F9BC unsigned int gFXSurfaceFlags; // size: 0x4, address: 0x50F4D8 -class RpAtomic* AtomicDefaultRenderCallBack(class RpAtomic*); // size: 0x0, address: 0x21F4C0 -class RpAtomic* NPC_BubBud_RenderCB(class RpAtomic*); // size: 0x0, address: 0x2EB140 +class RpAtomic * AtomicDefaultRenderCallBack(class RpAtomic *); // size: 0x0, address: 0x21F4C0 +class RpAtomic * NPC_BubBud_RenderCB(class RpAtomic *); // size: 0x0, address: 0x2EB140 class xVec3 g_NY3; // size: 0xC, address: 0x4F8DC0 -class xLightKit* gLastLightKit; // size: 0x4, address: 0x50FFD4 +class xLightKit * gLastLightKit; // size: 0x4, address: 0x50FFD4 class xVec3 g_Y3; // size: 0xC, address: 0x4F8D90 -unsigned int xUpdateCull_AlwaysTrueCB(void*, void*); // size: 0x0, address: 0x329920 -signed int MERC_grul_goAlert(class xGoal*, void*, enum en_trantype*, float, - void*); // size: 0x0, address: 0x2EAED0 -signed int FOLK_grul_goAlert(class xGoal*, void*, enum en_trantype*, float, - void*); // size: 0x0, address: 0x2EB0A0 +unsigned int xUpdateCull_AlwaysTrueCB(void *, void *); // size: 0x0, address: 0x329920 +signed int MERC_grul_goAlert(class xGoal *, void *, enum en_trantype *, float, void *); // size: 0x0, address: 0x2EAED0 +signed int FOLK_grul_goAlert(class xGoal *, void *, enum en_trantype *, float, void *); // size: 0x0, address: 0x2EB0A0 class NPCSndTrax g_sndTrax_VillagerGirl[]; // size: 0x0, address: 0x4DFFF0 class NPCSndTrax g_sndTrax_VillagerBoy[]; // size: 0x0, address: 0x4DFFD0 class NPCSndTrax g_sndTrax_VillagerEldess[]; // size: 0x0, address: 0x5CF9D8 @@ -60,53 +57,41 @@ class NPCSndTrax g_sndTrax_Squidward[]; // size: 0x0, address: 0x4DFEC0 class NPCSndTrax g_sndTrax_VillagerCoStar[]; // size: 0x0, address: 0x4DFF10 class NPCSndTrax g_sndTrax_Villager[]; // size: 0x0, address: 0x4DFD70 enum _CurrentPlayer gCurrentPlayer; // size: 0x4, address: 0x50F3EC -void xAnimDefaultBeforeEnter(class xAnimPlay*, class xAnimState*); // size: 0x0, address: 0x213A90 -struct /* @anon1 */ -{ +void xAnimDefaultBeforeEnter(class xAnimPlay *, class xAnimState *); // size: 0x0, address: 0x213A90 +struct /* @anon1 */ { // total size: 0x10 } __vt__7HiThere; // size: 0x10, address: 0x50B900 -struct /* @anon9 */ -{ +struct /* @anon9 */ { // total size: 0x10 } __vt__Q28ztaskbox8callback; // size: 0x10, address: 0x50B910 -struct /* @anon5 */ -{ +struct /* @anon5 */ { // total size: 0xD0 } __vt__12zNPCVillager; // size: 0xD0, address: 0x50BD30 -struct /* @anon6 */ -{ +struct /* @anon6 */ { // total size: 0xCC } __vt__10zNPCCommon; // size: 0xCC, address: 0x50A6C0 -struct /* @anon8 */ -{ +struct /* @anon8 */ { // total size: 0x54 } __vt__9xNPCBasic; // size: 0x54, address: 0x50BE30 -struct /* @anon4 */ -{ +struct /* @anon4 */ { // total size: 0xD0 } __vt__14zNPCNewsFishTV; // size: 0xD0, address: 0x50B830 -struct /* @anon7 */ -{ +struct /* @anon7 */ { // total size: 0xD0 } __vt__12zNPCNewsFish; // size: 0xD0, address: 0x50BAC0 -struct /* @anon2 */ -{ +struct /* @anon2 */ { // total size: 0xD0 } __vt__15zNPCMerManChair; // size: 0xD0, address: 0x50BB90 -struct /* @anon3 */ -{ +struct /* @anon3 */ { // total size: 0xD0 } __vt__15zNPCSandyBikini; // size: 0xD0, address: 0x50B9F0 -struct /* @anon11 */ -{ +struct /* @anon11 */ { // total size: 0xD0 } __vt__14zNPCBalloonBoy; // size: 0xD0, address: 0x50B920 -struct /* @anon0 */ -{ +struct /* @anon0 */ { // total size: 0xD0 } __vt__8zNPCFish; // size: 0xD0, address: 0x50BC60 -class RwMatrixTag -{ +class RwMatrixTag { // total size: 0x40 public: class RwV3d right; // offset 0x0, size 0xC @@ -118,17 +103,16 @@ class RwMatrixTag class RwV3d pos; // offset 0x30, size 0xC unsigned int pad3; // offset 0x3C, size 0x4 }; -class RwCamera -{ +class RwCamera { // total size: 0x190 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 enum RwCameraProjection projectionType; // offset 0x14, size 0x4 - class RwCamera* (*beginUpdate)(class RwCamera*); // offset 0x18, size 0x4 - class RwCamera* (*endUpdate)(class RwCamera*); // offset 0x1C, size 0x4 + class RwCamera * (* beginUpdate)(class RwCamera *); // offset 0x18, size 0x4 + class RwCamera * (* endUpdate)(class RwCamera *); // offset 0x1C, size 0x4 class RwMatrixTag viewMatrix; // offset 0x20, size 0x40 - class RwRaster* frameBuffer; // offset 0x60, size 0x4 - class RwRaster* zBuffer; // offset 0x64, size 0x4 + class RwRaster * frameBuffer; // offset 0x60, size 0x4 + class RwRaster * zBuffer; // offset 0x64, size 0x4 class RwV2d viewWindow; // offset 0x68, size 0x8 class RwV2d recipViewWindow; // offset 0x70, size 0x8 class RwV2d viewOffset; // offset 0x78, size 0x8 @@ -141,50 +125,43 @@ class RwCamera class RwBBox frustumBoundBox; // offset 0x10C, size 0x18 class RwV3d frustumCorners[8]; // offset 0x124, size 0x60 }; -class xGoal : public xListItem, public xFactoryInst -{ +class xGoal : public xListItem, public xFactoryInst { // total size: 0x3C public: - class xPsyche* psyche; // offset 0x18, size 0x4 + class xPsyche * psyche; // offset 0x18, size 0x4 signed int goalID; // offset 0x1C, size 0x4 enum en_GOALSTATE stat; // offset 0x20, size 0x4 signed int flg_able; // offset 0x24, size 0x4 - signed int (*fun_process)(class xGoal*, void*, enum en_trantype*, float, - void*); // offset 0x28, size 0x4 - signed int (*fun_precalc)(class xGoal*, void*, float, void*); // offset 0x2C, size 0x4 - signed int (*fun_chkRule)(class xGoal*, void*, enum en_trantype*, float, - void*); // offset 0x30, size 0x4 - void* cbdata; // offset 0x34, size 0x4 -}; -class xAnimTable -{ + signed int (* fun_process)(class xGoal *, void *, enum en_trantype *, float, void *); // offset 0x28, size 0x4 + signed int (* fun_precalc)(class xGoal *, void *, float, void *); // offset 0x2C, size 0x4 + signed int (* fun_chkRule)(class xGoal *, void *, enum en_trantype *, float, void *); // offset 0x30, size 0x4 + void * cbdata; // offset 0x34, size 0x4 +}; +class xAnimTable { // total size: 0x1C public: - class xAnimTable* Next; // offset 0x0, size 0x4 - char* Name; // offset 0x4, size 0x4 - class xAnimTransition* TransitionList; // offset 0x8, size 0x4 - class xAnimState* StateList; // offset 0xC, size 0x4 + class xAnimTable * Next; // offset 0x0, size 0x4 + char * Name; // offset 0x4, size 0x4 + class xAnimTransition * TransitionList; // offset 0x8, size 0x4 + class xAnimState * StateList; // offset 0xC, size 0x4 unsigned int AnimIndex; // offset 0x10, size 0x4 unsigned int MorphIndex; // offset 0x14, size 0x4 unsigned int UserFlags; // offset 0x18, size 0x4 }; -class xBase -{ +class xBase { // total size: 0x10 public: unsigned int id; // offset 0x0, size 0x4 unsigned char baseType; // offset 0x4, size 0x1 unsigned char linkCount; // offset 0x5, size 0x1 unsigned short baseFlags; // offset 0x6, size 0x2 - class xLinkAsset* link; // offset 0x8, size 0x4 - signed int (*eventFunc)(class xBase*, class xBase*, unsigned int, float*, - class xBase*); // offset 0xC, size 0x4 + class xLinkAsset * link; // offset 0x8, size 0x4 + signed int (* eventFunc)(class xBase *, class xBase *, unsigned int, float *, class xBase *); // offset 0xC, size 0x4 }; -class xEnt : public xBase -{ +class xEnt : public xBase { // total size: 0xD0 public: - class xEntAsset* asset; // offset 0x10, size 0x4 + class xEntAsset * asset; // offset 0x10, size 0x4 unsigned short idx; // offset 0x14, size 0x2 unsigned short num_updates; // offset 0x16, size 0x2 unsigned char flags; // offset 0x18, size 0x1 @@ -199,50 +176,47 @@ class xEnt : public xBase unsigned char collLev; // offset 0x21, size 0x1 unsigned char chkby; // offset 0x22, size 0x1 unsigned char penby; // offset 0x23, size 0x1 - class xModelInstance* model; // offset 0x24, size 0x4 - class xModelInstance* collModel; // offset 0x28, size 0x4 - class xModelInstance* camcollModel; // offset 0x2C, size 0x4 - class xLightKit* lightKit; // offset 0x30, size 0x4 - void (*update)(class xEnt*, class xScene*, float); // offset 0x34, size 0x4 - void (*endUpdate)(class xEnt*, class xScene*, float); // offset 0x38, size 0x4 - void (*bupdate)(class xEnt*, class xVec3*); // offset 0x3C, size 0x4 - void (*move)(class xEnt*, class xScene*, float, class xEntFrame*); // offset 0x40, size 0x4 - void (*render)(class xEnt*); // offset 0x44, size 0x4 - class xEntFrame* frame; // offset 0x48, size 0x4 - class xEntCollis* collis; // offset 0x4C, size 0x4 + class xModelInstance * model; // offset 0x24, size 0x4 + class xModelInstance * collModel; // offset 0x28, size 0x4 + class xModelInstance * camcollModel; // offset 0x2C, size 0x4 + class xLightKit * lightKit; // offset 0x30, size 0x4 + void (* update)(class xEnt *, class xScene *, float); // offset 0x34, size 0x4 + void (* endUpdate)(class xEnt *, class xScene *, float); // offset 0x38, size 0x4 + void (* bupdate)(class xEnt *, class xVec3 *); // offset 0x3C, size 0x4 + void (* move)(class xEnt *, class xScene *, float, class xEntFrame *); // offset 0x40, size 0x4 + void (* render)(class xEnt *); // offset 0x44, size 0x4 + class xEntFrame * frame; // offset 0x48, size 0x4 + class xEntCollis * collis; // offset 0x4C, size 0x4 class xGridBound gridb; // offset 0x50, size 0x14 class xBound bound; // offset 0x64, size 0x4C - void (*transl)(class xEnt*, class xVec3*, class xMat4x3*); // offset 0xB0, size 0x4 - class xFFX* ffx; // offset 0xB4, size 0x4 - class xEnt* driver; // offset 0xB8, size 0x4 + void (* transl)(class xEnt *, class xVec3 *, class xMat4x3 *); // offset 0xB0, size 0x4 + class xFFX * ffx; // offset 0xB4, size 0x4 + class xEnt * driver; // offset 0xB8, size 0x4 signed int driveMode; // offset 0xBC, size 0x4 - class xShadowSimpleCache* simpShadow; // offset 0xC0, size 0x4 - class xEntShadow* entShadow; // offset 0xC4, size 0x4 - class anim_coll_data* anim_coll; // offset 0xC8, size 0x4 - void* user_data; // offset 0xCC, size 0x4 + class xShadowSimpleCache * simpShadow; // offset 0xC0, size 0x4 + class xEntShadow * entShadow; // offset 0xC4, size 0x4 + class anim_coll_data * anim_coll; // offset 0xC8, size 0x4 + void * user_data; // offset 0xCC, size 0x4 }; -class _zPortal : public xBase -{ +class _zPortal : public xBase { // total size: 0x14 public: - class xPortalAsset* passet; // offset 0x10, size 0x4 + class xPortalAsset * passet; // offset 0x10, size 0x4 }; -class zFragLightning -{ +class zFragLightning { // total size: 0x10 public: - class zFragLightningAsset* fasset; // offset 0x0, size 0x4 - class xModelInstance* startParent; // offset 0x4, size 0x4 - class xModelInstance* endParent; // offset 0x8, size 0x4 - class zLightning* lightning; // offset 0xC, size 0x4 + class zFragLightningAsset * fasset; // offset 0x0, size 0x4 + class xModelInstance * startParent; // offset 0x4, size 0x4 + class xModelInstance * endParent; // offset 0x8, size 0x4 + class zLightning * lightning; // offset 0xC, size 0x4 }; -class xParEmitter : public xBase -{ +class xParEmitter : public xBase { // total size: 0x78 public: - class xParEmitterAsset* tasset; // offset 0x10, size 0x4 - class xParGroup* group; // offset 0x14, size 0x4 - class xParEmitterPropsAsset* prop; // offset 0x18, size 0x4 + class xParEmitterAsset * tasset; // offset 0x10, size 0x4 + class xParGroup * group; // offset 0x14, size 0x4 + class xParEmitterPropsAsset * prop; // offset 0x18, size 0x4 unsigned char rate_mode; // offset 0x1C, size 0x1 float rate; // offset 0x20, size 0x4 float rate_time; // offset 0x24, size 0x4 @@ -254,20 +228,19 @@ class xParEmitter : public xBase class xModelTag tag; // offset 0x38, size 0x20 float oocull_distance_sqr; // offset 0x58, size 0x4 float distance_to_cull_sqr; // offset 0x5C, size 0x4 - void* attachTo; // offset 0x60, size 0x4 - class xParSys* parSys; // offset 0x64, size 0x4 - void* emit_volume; // offset 0x68, size 0x4 + void * attachTo; // offset 0x60, size 0x4 + class xParSys * parSys; // offset 0x64, size 0x4 + void * emit_volume; // offset 0x68, size 0x4 class xVec3 last_attach_loc; // offset 0x6C, size 0xC }; -class xModelInstance -{ +class xModelInstance { // total size: 0x6C public: - class xModelInstance* Next; // offset 0x0, size 0x4 - class xModelInstance* Parent; // offset 0x4, size 0x4 - class xModelPool* Pool; // offset 0x8, size 0x4 - class xAnimPlay* Anim; // offset 0xC, size 0x4 - class RpAtomic* Data; // offset 0x10, size 0x4 + class xModelInstance * Next; // offset 0x0, size 0x4 + class xModelInstance * Parent; // offset 0x4, size 0x4 + class xModelPool * Pool; // offset 0x8, size 0x4 + class xAnimPlay * Anim; // offset 0xC, size 0x4 + class RpAtomic * Data; // offset 0x10, size 0x4 unsigned int PipeFlags; // offset 0x14, size 0x4 float RedMultiplier; // offset 0x18, size 0x4 float GreenMultiplier; // offset 0x1C, size 0x4 @@ -275,85 +248,79 @@ class xModelInstance float Alpha; // offset 0x24, size 0x4 float FadeStart; // offset 0x28, size 0x4 float FadeEnd; // offset 0x2C, size 0x4 - class xSurface* Surf; // offset 0x30, size 0x4 - class xModelBucket** Bucket; // offset 0x34, size 0x4 - class xModelInstance* BucketNext; // offset 0x38, size 0x4 - class xLightKit* LightKit; // offset 0x3C, size 0x4 - void* Object; // offset 0x40, size 0x4 + class xSurface * Surf; // offset 0x30, size 0x4 + class xModelBucket * * Bucket; // offset 0x34, size 0x4 + class xModelInstance * BucketNext; // offset 0x38, size 0x4 + class xLightKit * LightKit; // offset 0x3C, size 0x4 + void * Object; // offset 0x40, size 0x4 unsigned short Flags; // offset 0x44, size 0x2 unsigned char BoneCount; // offset 0x46, size 0x1 unsigned char BoneIndex; // offset 0x47, size 0x1 - unsigned char* BoneRemap; // offset 0x48, size 0x4 - class RwMatrixTag* Mat; // offset 0x4C, size 0x4 + unsigned char * BoneRemap; // offset 0x48, size 0x4 + class RwMatrixTag * Mat; // offset 0x4C, size 0x4 class xVec3 Scale; // offset 0x50, size 0xC unsigned int modelID; // offset 0x5C, size 0x4 unsigned int shadowID; // offset 0x60, size 0x4 - class RpAtomic* shadowmapAtomic; // offset 0x64, size 0x4 - class /* @class */ - { + class RpAtomic * shadowmapAtomic; // offset 0x64, size 0x4 + class /* @class */ { // total size: 0x4 public: - class xVec3* verts; // offset 0x0, size 0x4 + class xVec3 * verts; // offset 0x0, size 0x4 } anim_coll; // offset 0x68, size 0x4 }; -class RwLLLink -{ +class RwLLLink { // total size: 0x8 public: - class RwLLLink* next; // offset 0x0, size 0x4 - class RwLLLink* prev; // offset 0x4, size 0x4 + class RwLLLink * next; // offset 0x0, size 0x4 + class RwLLLink * prev; // offset 0x4, size 0x4 }; -class ztaskbox : public xBase -{ +class ztaskbox : public xBase { // total size: 0x24 public: - class /* @class */ - { + class /* @class */ { // total size: 0x4 public: unsigned char enabled : 8; // offset 0x0, size 0x1 unsigned int dummy : 24; // offset 0x0, size 0x4 } flag; // offset 0x10, size 0x4 - class asset_type* asset; // offset 0x14, size 0x4 + class asset_type * asset; // offset 0x14, size 0x4 enum state_enum state; // offset 0x18, size 0x4 - class callback* cb; // offset 0x1C, size 0x4 - class ztaskbox* current; // offset 0x20, size 0x4 + class callback * cb; // offset 0x1C, size 0x4 + class ztaskbox * current; // offset 0x20, size 0x4 }; -class zNPCCommon : public xNPCBasic -{ +class zNPCCommon : public xNPCBasic { // total size: 0x2A0 public: - class xEntAsset* entass; // offset 0x1BC, size 0x4 - class xEntNPCAsset* npcass; // offset 0x1C0, size 0x4 - class zNPCSettings* npcsetass; // offset 0x1C4, size 0x4 + class xEntAsset * entass; // offset 0x1BC, size 0x4 + class xEntNPCAsset * npcass; // offset 0x1C0, size 0x4 + class zNPCSettings * npcsetass; // offset 0x1C4, size 0x4 signed int flg_vuln; // offset 0x1C8, size 0x4 signed int flg_move; // offset 0x1CC, size 0x4 signed int flg_misc; // offset 0x1D0, size 0x4 signed int flg_able; // offset 0x1D4, size 0x4 - class NPCConfig* cfg_npc; // offset 0x1D8, size 0x4 + class NPCConfig * cfg_npc; // offset 0x1D8, size 0x4 class zNPCSettings npcset; // offset 0x1DC, size 0x2C - class zMovePoint* nav_past; // offset 0x208, size 0x4 - class zMovePoint* nav_curr; // offset 0x20C, size 0x4 - class zMovePoint* nav_dest; // offset 0x210, size 0x4 - class zMovePoint* nav_lead; // offset 0x214, size 0x4 - class xSpline3* spl_mvptspline; // offset 0x218, size 0x4 + class zMovePoint * nav_past; // offset 0x208, size 0x4 + class zMovePoint * nav_curr; // offset 0x20C, size 0x4 + class zMovePoint * nav_dest; // offset 0x210, size 0x4 + class zMovePoint * nav_lead; // offset 0x214, size 0x4 + class xSpline3 * spl_mvptspline; // offset 0x218, size 0x4 float len_mvptspline; // offset 0x21C, size 0x4 float dst_curspline; // offset 0x220, size 0x4 - class xEntDrive* drv_data; // offset 0x224, size 0x4 - class xPsyche* psy_instinct; // offset 0x228, size 0x4 - class zNPCCommon* npc_duplodude; // offset 0x22C, size 0x4 + class xEntDrive * drv_data; // offset 0x224, size 0x4 + class xPsyche * psy_instinct; // offset 0x228, size 0x4 + class zNPCCommon * npc_duplodude; // offset 0x22C, size 0x4 float spd_throttle; // offset 0x230, size 0x4 signed int flg_xtrarend; // offset 0x234, size 0x4 float tmr_fidget; // offset 0x238, size 0x4 float tmr_invuln; // offset 0x23C, size 0x4 - class zShrapnelAsset* explosion; // offset 0x240, size 0x4 - class xModelAssetParam* parmdata; // offset 0x244, size 0x4 + class zShrapnelAsset * explosion; // offset 0x240, size 0x4 + class xModelAssetParam * parmdata; // offset 0x244, size 0x4 unsigned int pdatsize; // offset 0x248, size 0x4 - class zNPCLassoInfo* lassdata; // offset 0x24C, size 0x4 + class zNPCLassoInfo * lassdata; // offset 0x24C, size 0x4 class NPCSndQueue snd_queue[4]; // offset 0x250, size 0x50 }; -class xEntAsset : public xBaseAsset -{ +class xEntAsset : public xBaseAsset { // total size: 0x54 public: unsigned char flags; // offset 0x8, size 0x1 @@ -373,92 +340,81 @@ class xEntAsset : public xBaseAsset unsigned int modelInfoID; // offset 0x4C, size 0x4 unsigned int animListID; // offset 0x50, size 0x4 }; -class zNPCBalloonBoy : public zNPCFish -{ +class zNPCBalloonBoy : public zNPCFish { // total size: 0x354 public: signed int specialBalloon; // offset 0x348, size 0x4 - class zPlatform* plat_balloons; // offset 0x34C, size 0x4 - class xShadowCache* shadCache; // offset 0x350, size 0x4 + class zPlatform * plat_balloons; // offset 0x34C, size 0x4 + class xShadowCache * shadCache; // offset 0x350, size 0x4 }; -class RwTexture -{ +class RwTexture { // total size: 0x58 public: - class RwRaster* raster; // offset 0x0, size 0x4 - class RwTexDictionary* dict; // offset 0x4, size 0x4 + class RwRaster * raster; // offset 0x0, size 0x4 + class RwTexDictionary * dict; // offset 0x4, size 0x4 class RwLLLink lInDictionary; // offset 0x8, size 0x8 char name[32]; // offset 0x10, size 0x20 char mask[32]; // offset 0x30, size 0x20 unsigned int filterAddressing; // offset 0x50, size 0x4 signed int refCount; // offset 0x54, size 0x4 }; -class zNPCVillager : public zNPCCommon -{ +class zNPCVillager : public zNPCCommon { // total size: 0x2B0 public: class HiThere hithere; // offset 0x2A0, size 0x8 - class ztaskbox* converse; // offset 0x2A8, size 0x4 + class ztaskbox * converse; // offset 0x2A8, size 0x4 signed int current_talk_anim; // offset 0x2AC, size 0x4 }; -class zFragBone -{ +class zFragBone { // total size: 0x10 public: signed int index; // offset 0x0, size 0x4 class xVec3 offset; // offset 0x4, size 0xC }; -class RpWorld -{ +class RpWorld { // total size: 0x70 public: class RwObject object; // offset 0x0, size 0x8 unsigned int flags; // offset 0x8, size 0x4 enum RpWorldRenderOrder renderOrder; // offset 0xC, size 0x4 class RpMaterialList matList; // offset 0x10, size 0xC - class RpSector* rootSector; // offset 0x1C, size 0x4 + class RpSector * rootSector; // offset 0x1C, size 0x4 signed int numTexCoordSets; // offset 0x20, size 0x4 signed int numClumpsInWorld; // offset 0x24, size 0x4 - class RwLLLink* currentClumpLink; // offset 0x28, size 0x4 + class RwLLLink * currentClumpLink; // offset 0x28, size 0x4 class RwLinkList clumpList; // offset 0x2C, size 0x8 class RwLinkList lightList; // offset 0x34, size 0x8 class RwLinkList directionalLightList; // offset 0x3C, size 0x8 class RwV3d worldOrigin; // offset 0x44, size 0xC class RwBBox boundingBox; // offset 0x50, size 0x18 - class RpWorldSector* (*renderCallBack)(class RpWorldSector*); // offset 0x68, size 0x4 - class RxPipeline* pipeline; // offset 0x6C, size 0x4 + class RpWorldSector * (* renderCallBack)(class RpWorldSector *); // offset 0x68, size 0x4 + class RxPipeline * pipeline; // offset 0x6C, size 0x4 }; -class RxNodeMethods -{ +class RxNodeMethods { // total size: 0x1C public: - signed int (*nodeBody)(class RxPipelineNode*, - class RxPipelineNodeParam*); // offset 0x0, size 0x4 - signed int (*nodeInit)(class RxNodeDefinition*); // offset 0x4, size 0x4 - void (*nodeTerm)(class RxNodeDefinition*); // offset 0x8, size 0x4 - signed int (*pipelineNodeInit)(class RxPipelineNode*); // offset 0xC, size 0x4 - void (*pipelineNodeTerm)(class RxPipelineNode*); // offset 0x10, size 0x4 - signed int (*pipelineNodeConfig)(class RxPipelineNode*, - class RxPipeline*); // offset 0x14, size 0x4 - unsigned int (*configMsgHandler)(class RxPipelineNode*, unsigned int, unsigned int, - void*); // offset 0x18, size 0x4 -}; -class xMemPool -{ + signed int (* nodeBody)(class RxPipelineNode *, class RxPipelineNodeParam *); // offset 0x0, size 0x4 + signed int (* nodeInit)(class RxNodeDefinition *); // offset 0x4, size 0x4 + void (* nodeTerm)(class RxNodeDefinition *); // offset 0x8, size 0x4 + signed int (* pipelineNodeInit)(class RxPipelineNode *); // offset 0xC, size 0x4 + void (* pipelineNodeTerm)(class RxPipelineNode *); // offset 0x10, size 0x4 + signed int (* pipelineNodeConfig)(class RxPipelineNode *, class RxPipeline *); // offset 0x14, size 0x4 + unsigned int (* configMsgHandler)(class RxPipelineNode *, unsigned int, unsigned int, void *); // offset 0x18, size 0x4 +}; +class xMemPool { // total size: 0x1C public: - void* FreeList; // offset 0x0, size 0x4 + void * FreeList; // offset 0x0, size 0x4 unsigned short NextOffset; // offset 0x4, size 0x2 unsigned short Flags; // offset 0x6, size 0x2 - void* UsedList; // offset 0x8, size 0x4 - void (*InitCB)(class xMemPool*, void*); // offset 0xC, size 0x4 - void* Buffer; // offset 0x10, size 0x4 + void * UsedList; // offset 0x8, size 0x4 + void (* InitCB)(class xMemPool *, void *); // offset 0xC, size 0x4 + void * Buffer; // offset 0x10, size 0x4 unsigned short Size; // offset 0x14, size 0x2 unsigned short NumRealloc; // offset 0x16, size 0x2 unsigned int Total; // offset 0x18, size 0x4 }; -class zNPCNewsFish : public zNPCVillager -{ +class zNPCNewsFish : public zNPCVillager { // total size: 0x530 public: class say_data said[71]; // offset 0x2B0, size 0x238 @@ -467,7 +423,7 @@ class zNPCNewsFish : public zNPCVillager unsigned int currSoundID; // offset 0x4F0, size 0x4 unsigned int nextSoundID; // offset 0x4F4, size 0x4 float jawTime; // offset 0x4F8, size 0x4 - void* jawData; // offset 0x4FC, size 0x4 + void * jawData; // offset 0x4FC, size 0x4 unsigned int newsfishFlags; // offset 0x500, size 0x4 class xVec2 onScreenCoords; // offset 0x504, size 0x8 class xVec2 offScreenCoords; // offset 0x50C, size 0x8 @@ -478,19 +434,17 @@ class zNPCNewsFish : public zNPCVillager float disappearSpeed; // offset 0x528, size 0x4 float screenLerp; // offset 0x52C, size 0x4 }; -class _tagPadAnalog -{ +class _tagPadAnalog { // total size: 0x2 public: signed char x; // offset 0x0, size 0x1 signed char y; // offset 0x1, size 0x1 }; -class xNPCBasic : public xEnt, public xFactoryInst -{ +class xNPCBasic : public xEnt, public xFactoryInst { // total size: 0x1BC public: - void (*f_setup)(class xEnt*); // offset 0xDC, size 0x4 - void (*f_reset)(class xEnt*); // offset 0xE0, size 0x4 + void (* f_setup)(class xEnt *); // offset 0xDC, size 0x4 + void (* f_reset)(class xEnt *); // offset 0xE0, size 0x4 signed int flg_basenpc : 16; // offset 0xE4, size 0x4 signed int inUpdate : 8; // offset 0xE4, size 0x4 signed int flg_upward : 8; // offset 0xE4, size 0x4 @@ -503,8 +457,7 @@ class xNPCBasic : public xEnt, public xFactoryInst class xEntShadow entShadow_embedded; // offset 0xF8, size 0x28 class xShadowSimpleCache simpShadow_embedded; // offset 0x120, size 0x98 }; -class zFragLightningAsset : public zFragAsset -{ +class zFragLightningAsset : public zFragAsset { // total size: 0x68 public: class zFragLocation start; // offset 0x18, size 0x24 @@ -512,23 +465,20 @@ class zFragLightningAsset : public zFragAsset unsigned int startParentID; // offset 0x60, size 0x4 unsigned int endParentID; // offset 0x64, size 0x4 }; -class xSFX : public xBase -{ +class xSFX : public xBase { // total size: 0x1C public: - class xSFXAsset* asset; // offset 0x10, size 0x4 + class xSFXAsset * asset; // offset 0x10, size 0x4 unsigned int sndID; // offset 0x14, size 0x4 float cachedOuterDistSquared; // offset 0x18, size 0x4 }; -class NPCAreaInfo -{ +class NPCAreaInfo { // total size: 0x10 public: - class zNPCCommon* npc_origin; // offset 0x0, size 0x4 + class zNPCCommon * npc_origin; // offset 0x0, size 0x4 class xVec3 pos_origin; // offset 0x4, size 0xC }; -class RwFrame -{ +class RwFrame { // total size: 0xB0 public: class RwObject object; // offset 0x0, size 0x8 @@ -536,45 +486,39 @@ class RwFrame class RwMatrixTag modelling; // offset 0x10, size 0x40 class RwMatrixTag ltm; // offset 0x50, size 0x40 class RwLinkList objectList; // offset 0x90, size 0x8 - class RwFrame* child; // offset 0x98, size 0x4 - class RwFrame* next; // offset 0x9C, size 0x4 - class RwFrame* root; // offset 0xA0, size 0x4 + class RwFrame * child; // offset 0x98, size 0x4 + class RwFrame * next; // offset 0x9C, size 0x4 + class RwFrame * root; // offset 0xA0, size 0x4 }; -class RxPipelineCluster -{ +class RxPipelineCluster { // total size: 0x8 public: - class RxClusterDefinition* clusterRef; // offset 0x0, size 0x4 + class RxClusterDefinition * clusterRef; // offset 0x0, size 0x4 unsigned int creationAttributes; // offset 0x4, size 0x4 }; -class RxOutputSpec -{ +class RxOutputSpec { // total size: 0xC public: - char* name; // offset 0x0, size 0x4 - enum RxClusterValid* outputClusters; // offset 0x4, size 0x4 + char * name; // offset 0x0, size 0x4 + enum RxClusterValid * outputClusters; // offset 0x4, size 0x4 enum RxClusterValid allOtherClusters; // offset 0x8, size 0x4 }; -class xAnimMultiFileEntry -{ +class xAnimMultiFileEntry { // total size: 0x8 public: unsigned int ID; // offset 0x0, size 0x4 - class xAnimFile* File; // offset 0x4, size 0x4 + class xAnimFile * File; // offset 0x4, size 0x4 }; -class xAnimActiveEffect -{ +class xAnimActiveEffect { // total size: 0x8 public: - class xAnimEffect* Effect; // offset 0x0, size 0x4 + class xAnimEffect * Effect; // offset 0x0, size 0x4 unsigned int Handle; // offset 0x4, size 0x4 }; -class zMovePoint : public xMovePoint -{ +class zMovePoint : public xMovePoint { // total size: 0x30 }; -class xPortalAsset : public xBaseAsset -{ +class xPortalAsset : public xBaseAsset { // total size: 0x18 public: unsigned int assetCameraID; // offset 0x8, size 0x4 @@ -582,8 +526,7 @@ class xPortalAsset : public xBaseAsset float ang; // offset 0x10, size 0x4 unsigned int sceneID; // offset 0x14, size 0x4 }; -class xEntCollis -{ +class xEntCollis { // total size: 0x5B4 public: unsigned char chk; // offset 0x0, size 0x1 @@ -598,48 +541,43 @@ class xEntCollis unsigned char stat_eidx; // offset 0x9, size 0x1 unsigned char idx; // offset 0xA, size 0x1 class xCollis colls[18]; // offset 0xC, size 0x5A0 - void (*post)(class xEnt*, class xScene*, float, class xEntCollis*); // offset 0x5AC, size 0x4 - unsigned int (*depenq)(class xEnt*, class xEnt*, class xScene*, float, - class xCollis*); // offset 0x5B0, size 0x4 + void (* post)(class xEnt *, class xScene *, float, class xEntCollis *); // offset 0x5AC, size 0x4 + unsigned int (* depenq)(class xEnt *, class xEnt *, class xScene *, float, class xCollis *); // offset 0x5B0, size 0x4 }; -class xVec3 -{ +class xVec3 { // total size: 0xC public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 float z; // offset 0x8, size 0x4 }; -class xPsyche : public RyzMemData -{ +class xPsyche : public RyzMemData { // total size: 0x68 public: - class xBase* clt_owner; // offset 0x0, size 0x4 - class xPSYNote* cb_notice; // offset 0x4, size 0x4 + class xBase * clt_owner; // offset 0x0, size 0x4 + class xPSYNote * cb_notice; // offset 0x4, size 0x4 signed int flg_psyche; // offset 0x8, size 0x4 - class xGoal* goallist; // offset 0xC, size 0x4 - class xGoal* goalstak[5]; // offset 0x10, size 0x14 + class xGoal * goallist; // offset 0xC, size 0x4 + class xGoal * goalstak[5]; // offset 0x10, size 0x14 float tmr_stack[5][1]; // offset 0x24, size 0x14 signed int staktop; // offset 0x38, size 0x4 - class xGoal* pendgoal; // offset 0x3C, size 0x4 + class xGoal * pendgoal; // offset 0x3C, size 0x4 enum en_pendtype pendtype; // offset 0x40, size 0x4 signed int gid_safegoal; // offset 0x44, size 0x4 - void (*fun_remap)(signed int*, enum en_trantype*); // offset 0x48, size 0x4 - void* userContext; // offset 0x4C, size 0x4 + void (* fun_remap)(signed int *, enum en_trantype *); // offset 0x48, size 0x4 + void * userContext; // offset 0x4C, size 0x4 signed int cnt_transLastTimestep; // offset 0x50, size 0x4 enum PSY_BRAIN_STATUS psystat; // offset 0x54, size 0x4 class xBase fakebase; // offset 0x58, size 0x10 }; -class xParEmitterAsset : public xBaseAsset -{ +class xParEmitterAsset : public xBaseAsset { // total size: 0x54 public: unsigned char emit_flags; // offset 0x8, size 0x1 unsigned char emit_type; // offset 0x9, size 0x1 unsigned short pad; // offset 0xA, size 0x2 unsigned int propID; // offset 0xC, size 0x4 - union - { // inferred + union { // inferred class xPECircle e_circle; // offset 0x10, size 0x14 class _tagEmitSphere e_sphere; // offset 0x10, size 0x4 class _tagEmitRect e_rect; // offset 0x10, size 0x8 @@ -657,17 +595,15 @@ class xParEmitterAsset : public xBaseAsset unsigned int cull_mode; // offset 0x4C, size 0x4 float cull_dist_sqr; // offset 0x50, size 0x4 }; -struct /* @anon0 */ -{ +struct /* @anon0 */ { // total size: 0xD0 }; -class RwRaster -{ +class RwRaster { // total size: 0x34 public: - class RwRaster* parent; // offset 0x0, size 0x4 - unsigned char* cpPixels; // offset 0x4, size 0x4 - unsigned char* palette; // offset 0x8, size 0x4 + class RwRaster * parent; // offset 0x0, size 0x4 + unsigned char * cpPixels; // offset 0x4, size 0x4 + unsigned char * palette; // offset 0x8, size 0x4 signed int width; // offset 0xC, size 0x4 signed int height; // offset 0x10, size 0x4 signed int depth; // offset 0x14, size 0x4 @@ -678,59 +614,53 @@ class RwRaster unsigned char cFlags; // offset 0x21, size 0x1 unsigned char privateFlags; // offset 0x22, size 0x1 unsigned char cFormat; // offset 0x23, size 0x1 - unsigned char* originalPixels; // offset 0x24, size 0x4 + unsigned char * originalPixels; // offset 0x24, size 0x4 signed int originalWidth; // offset 0x28, size 0x4 signed int originalHeight; // offset 0x2C, size 0x4 signed int originalStride; // offset 0x30, size 0x4 }; -class xCutsceneZbufferHack -{ +class xCutsceneZbufferHack { // total size: 0x44 public: - char* name; // offset 0x0, size 0x4 + char * name; // offset 0x0, size 0x4 class xCutsceneZbuffer times[4]; // offset 0x4, size 0x40 }; -class xUpdateCullMgr -{ +class xUpdateCullMgr { // total size: 0x2C public: unsigned int entCount; // offset 0x0, size 0x4 unsigned int entActive; // offset 0x4, size 0x4 - void** ent; // offset 0x8, size 0x4 - class xUpdateCullEnt** mgr; // offset 0xC, size 0x4 + void * * ent; // offset 0x8, size 0x4 + class xUpdateCullEnt * * mgr; // offset 0xC, size 0x4 unsigned int mgrCount; // offset 0x10, size 0x4 unsigned int mgrCurr; // offset 0x14, size 0x4 - class xUpdateCullEnt* mgrList; // offset 0x18, size 0x4 + class xUpdateCullEnt * mgrList; // offset 0x18, size 0x4 unsigned int grpCount; // offset 0x1C, size 0x4 - class xUpdateCullGroup* grpList; // offset 0x20, size 0x4 - void (*activateCB)(void*); // offset 0x24, size 0x4 - void (*deactivateCB)(void*); // offset 0x28, size 0x4 + class xUpdateCullGroup * grpList; // offset 0x20, size 0x4 + void (* activateCB)(void *); // offset 0x24, size 0x4 + void (* deactivateCB)(void *); // offset 0x28, size 0x4 }; -class xMat4x3 : public xMat3x3 -{ +class xMat4x3 : public xMat3x3 { // total size: 0x40 public: class xVec3 pos; // offset 0x30, size 0xC unsigned int pad3; // offset 0x3C, size 0x4 }; -class NPCSndTrax -{ +class NPCSndTrax { // total size: 0xC public: enum en_NPC_SOUND typ_sound; // offset 0x0, size 0x4 - char* nam_sound; // offset 0x4, size 0x4 + char * nam_sound; // offset 0x4, size 0x4 unsigned int aid_sound; // offset 0x8, size 0x4 }; -class NPCMsg -{ +class NPCMsg { // total size: 0x44 public: enum en_NPC_MSG_ID msgid; // offset 0x0, size 0x4 unsigned int sendto; // offset 0x4, size 0x4 unsigned int from; // offset 0x8, size 0x4 enum en_NPC_MSG_DATA infotype; // offset 0xC, size 0x4 - union - { // inferred + union { // inferred class NPCSysEvent sysevent; // offset 0x10, size 0x28 class NPCBlastInfo blastarea; // offset 0x10, size 0x14 class NPCChatInfo chatter; // offset 0x10, size 0x10 @@ -742,12 +672,11 @@ class NPCMsg class NPCMountInfo mountdata; // offset 0x10, size 0x8 class NPCAreaInfo areadata; // offset 0x10, size 0x10 }; - void* attached; // offset 0x38, size 0x4 - class NPCMsg* next; // offset 0x3C, size 0x4 + void * attached; // offset 0x38, size 0x4 + class NPCMsg * next; // offset 0x3C, size 0x4 float tmr_delay; // offset 0x40, size 0x4 }; -class zFrag -{ +class zFrag { // total size: 0x84 public: enum zFragType type; // offset 0x0, size 0x4 @@ -755,35 +684,32 @@ class zFrag float delay; // offset 0x64, size 0x4 float alivetime; // offset 0x68, size 0x4 float lifetime; // offset 0x6C, size 0x4 - void (*update)(class zFrag*, float); // offset 0x70, size 0x4 - class xModelInstance* parent[2]; // offset 0x74, size 0x8 - class zFrag* prev; // offset 0x7C, size 0x4 - class zFrag* next; // offset 0x80, size 0x4 + void (* update)(class zFrag *, float); // offset 0x70, size 0x4 + class xModelInstance * parent[2]; // offset 0x74, size 0x8 + class zFrag * prev; // offset 0x7C, size 0x4 + class zFrag * next; // offset 0x80, size 0x4 }; -struct /* @anon1 */ -{ +struct /* @anon1 */ { // total size: 0x10 }; -class RpAtomic -{ +class RpAtomic { // total size: 0x70 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 - class RwResEntry* repEntry; // offset 0x14, size 0x4 - class RpGeometry* geometry; // offset 0x18, size 0x4 + class RwResEntry * repEntry; // offset 0x14, size 0x4 + class RpGeometry * geometry; // offset 0x18, size 0x4 class RwSphere boundingSphere; // offset 0x1C, size 0x10 class RwSphere worldBoundingSphere; // offset 0x2C, size 0x10 - class RpClump* clump; // offset 0x3C, size 0x4 + class RpClump * clump; // offset 0x3C, size 0x4 class RwLLLink inClumpLink; // offset 0x40, size 0x8 - class RpAtomic* (*renderCallBack)(class RpAtomic*); // offset 0x48, size 0x4 + class RpAtomic * (* renderCallBack)(class RpAtomic *); // offset 0x48, size 0x4 class RpInterpolator interpolator; // offset 0x4C, size 0x14 unsigned short renderFrame; // offset 0x60, size 0x2 unsigned short pad; // offset 0x62, size 0x2 class RwLinkList llWorldSectorsInAtomic; // offset 0x64, size 0x8 - class RxPipeline* pipeline; // offset 0x6C, size 0x4 + class RxPipeline * pipeline; // offset 0x6C, size 0x4 }; -class RwFrustumPlane -{ +class RwFrustumPlane { // total size: 0x14 public: class RwPlane plane; // offset 0x0, size 0x10 @@ -792,34 +718,30 @@ class RwFrustumPlane unsigned char closestZ; // offset 0x12, size 0x1 unsigned char pad; // offset 0x13, size 0x1 }; -class xParGroup -{ +class xParGroup { // total size: 0x0 }; -class RwTexDictionary -{ +class RwTexDictionary { // total size: 0x18 public: class RwObject object; // offset 0x0, size 0x8 class RwLinkList texturesInDict; // offset 0x8, size 0x8 class RwLLLink lInInstance; // offset 0x10, size 0x8 }; -class xGridBound -{ +class xGridBound { // total size: 0x14 public: - void* data; // offset 0x0, size 0x4 + void * data; // offset 0x0, size 0x4 unsigned short gx; // offset 0x4, size 0x2 unsigned short gz; // offset 0x6, size 0x2 unsigned char ingrid; // offset 0x8, size 0x1 unsigned char oversize; // offset 0x9, size 0x1 unsigned char deleted; // offset 0xA, size 0x1 unsigned char gpad; // offset 0xB, size 0x1 - class xGridBound** head; // offset 0xC, size 0x4 - class xGridBound* next; // offset 0x10, size 0x4 + class xGridBound * * head; // offset 0xC, size 0x4 + class xGridBound * next; // offset 0x10, size 0x4 }; -class xEntDrive -{ +class xEntDrive { // total size: 0x7C public: unsigned int flags; // offset 0x0, size 0x4 @@ -829,9 +751,9 @@ class xEntDrive float tm; // offset 0x10, size 0x4 float tmr; // offset 0x14, size 0x4 float s; // offset 0x18, size 0x4 - class xEnt* odriver; // offset 0x1C, size 0x4 - class xEnt* driver; // offset 0x20, size 0x4 - class xEnt* driven; // offset 0x24, size 0x4 + class xEnt * odriver; // offset 0x1C, size 0x4 + class xEnt * driver; // offset 0x20, size 0x4 + class xEnt * driven; // offset 0x24, size 0x4 class xVec3 op; // offset 0x28, size 0xC class xVec3 p; // offset 0x34, size 0xC class xVec3 q; // offset 0x40, size 0xC @@ -839,8 +761,7 @@ class xEntDrive class xVec3 dloc; // offset 0x50, size 0xC class tri_data tri; // offset 0x5C, size 0x20 }; -class zFragAsset -{ +class zFragAsset { // total size: 0x18 public: enum zFragType type; // offset 0x0, size 0x4 @@ -849,43 +770,39 @@ class zFragAsset float lifetime; // offset 0x10, size 0x4 float delay; // offset 0x14, size 0x4 }; -class RxNodeDefinition -{ +class RxNodeDefinition { // total size: 0x40 public: - char* name; // offset 0x0, size 0x4 + char * name; // offset 0x0, size 0x4 class RxNodeMethods nodeMethods; // offset 0x4, size 0x1C class RxIoSpec io; // offset 0x20, size 0x14 unsigned int pipelineNodePrivateDataSize; // offset 0x34, size 0x4 enum RxNodeDefEditable editable; // offset 0x38, size 0x4 signed int InputPipesCnt; // offset 0x3C, size 0x4 }; -class RwResEntry -{ +class RwResEntry { // total size: 0x18 public: class RwLLLink link; // offset 0x0, size 0x8 signed int size; // offset 0x8, size 0x4 - void* owner; // offset 0xC, size 0x4 - class RwResEntry** ownerRef; // offset 0x10, size 0x4 - void (*destroyNotify)(class RwResEntry*); // offset 0x14, size 0x4 + void * owner; // offset 0xC, size 0x4 + class RwResEntry * * ownerRef; // offset 0x10, size 0x4 + void (* destroyNotify)(class RwResEntry *); // offset 0x14, size 0x4 }; -class xAnimFile -{ +class xAnimFile { // total size: 0x20 public: - class xAnimFile* Next; // offset 0x0, size 0x4 - char* Name; // offset 0x4, size 0x4 + class xAnimFile * Next; // offset 0x0, size 0x4 + char * Name; // offset 0x4, size 0x4 unsigned int ID; // offset 0x8, size 0x4 unsigned int FileFlags; // offset 0xC, size 0x4 float Duration; // offset 0x10, size 0x4 float TimeOffset; // offset 0x14, size 0x4 unsigned short BoneCount; // offset 0x18, size 0x2 unsigned char NumAnims[2]; // offset 0x1A, size 0x2 - void** RawData; // offset 0x1C, size 0x4 + void * * RawData; // offset 0x1C, size 0x4 }; -enum en_trantype -{ +enum en_trantype { GOAL_TRAN_NONE = 0, GOAL_TRAN_SET = 1, GOAL_TRAN_PUSH = 2, @@ -898,8 +815,7 @@ enum en_trantype GOAL_TRAN_NOMORE = 9, GOAL_TRAN_FORCE = 2147483647, }; -enum en_NPC_MSG_DATA -{ +enum en_NPC_MSG_DATA { NPC_MDAT_BLANK = 0, NPC_MDAT_SYSEVENT = 1, NPC_MDAT_BLAST = 2, @@ -914,25 +830,21 @@ enum en_NPC_MSG_DATA NPC_MDAT_NOMORE = 11, NPC_MDAT_FORCE = 2147483647, }; -class asset_type -{ +class asset_type { // total size: 0x0 }; -class xEntMotionMPData -{ +class xEntMotionMPData { // total size: 0xC public: unsigned int flags; // offset 0x0, size 0x4 unsigned int mp_id; // offset 0x4, size 0x4 float speed; // offset 0x8, size 0x4 }; -class xParEmitterPropsAsset : public xBaseAsset -{ +class xParEmitterPropsAsset : public xBaseAsset { // total size: 0x138 public: unsigned int parSysID; // offset 0x8, size 0x4 - union - { // inferred + union { // inferred class xParInterp rate; // offset 0xC, size 0x14 class xParInterp value[1]; // offset 0xC, size 0x14 }; @@ -947,21 +859,18 @@ class xParEmitterPropsAsset : public xBaseAsset unsigned int emit_limit; // offset 0x130, size 0x4 float emit_limit_reset_time; // offset 0x134, size 0x4 }; -class RwPlane -{ +class RwPlane { // total size: 0x10 public: class RwV3d normal; // offset 0x0, size 0xC float distance; // offset 0xC, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x4 public: - class xVec3* verts; // offset 0x0, size 0x4 + class xVec3 * verts; // offset 0x0, size 0x4 }; -class xEntERData -{ +class xEntERData { // total size: 0x44 public: class xVec3 a; // offset 0x0, size 0xC @@ -976,27 +885,23 @@ class xEntERData float ert; // offset 0x3C, size 0x4 signed int state; // offset 0x40, size 0x4 }; -class xJSPHeader -{ +class xJSPHeader { // total size: 0x18 public: char idtag[4]; // offset 0x0, size 0x4 unsigned int version; // offset 0x4, size 0x4 unsigned int jspNodeCount; // offset 0x8, size 0x4 - class RpClump* clump; // offset 0xC, size 0x4 - class xClumpCollBSPTree* colltree; // offset 0x10, size 0x4 - class xJSPNodeInfo* jspNodeList; // offset 0x14, size 0x4 + class RpClump * clump; // offset 0xC, size 0x4 + class xClumpCollBSPTree * colltree; // offset 0x10, size 0x4 + class xJSPNodeInfo * jspNodeList; // offset 0x14, size 0x4 }; -class zLightning -{ +class zLightning { // total size: 0x234 public: unsigned int type; // offset 0x0, size 0x4 unsigned int flags; // offset 0x4, size 0x4 - union - { // inferred - class /* @class */ - { + union { // inferred + class /* @class */ { // total size: 0x220 public: class xVec3 base_point[16]; // offset 0x0, size 0xC0 @@ -1006,16 +911,14 @@ class zLightning float arc_height; // offset 0x184, size 0x4 class xVec3 arc_normal; // offset 0x188, size 0xC float thickness[16]; // offset 0x194, size 0x40 - union - { // inferred + union { // inferred class _tagLightningLine line; // offset 0x1D4, size 0x4 class _tagLightningRot rot; // offset 0x1D4, size 0x48 class _tagLightningZeus zeus; // offset 0x1D4, size 0xC }; float rand_radius; // offset 0x21C, size 0x4 } legacy; // offset 0x8, size 0x220 - class /* @class */ - { + class /* @class */ { // total size: 0x58 public: class xVec3 endPoint[2]; // offset 0x0, size 0x18 @@ -1034,28 +937,26 @@ class zLightning float time_left; // offset 0x22C, size 0x4 float time_total; // offset 0x230, size 0x4 }; -class xAnimSingle -{ +class xAnimSingle { // total size: 0x40 public: unsigned int SingleFlags; // offset 0x0, size 0x4 - class xAnimState* State; // offset 0x4, size 0x4 + class xAnimState * State; // offset 0x4, size 0x4 float Time; // offset 0x8, size 0x4 float CurrentSpeed; // offset 0xC, size 0x4 float BilinearLerp[2]; // offset 0x10, size 0x8 - class xAnimEffect* Effect; // offset 0x18, size 0x4 + class xAnimEffect * Effect; // offset 0x18, size 0x4 unsigned int ActiveCount; // offset 0x1C, size 0x4 float LastTime; // offset 0x20, size 0x4 - class xAnimActiveEffect* ActiveList; // offset 0x24, size 0x4 - class xAnimPlay* Play; // offset 0x28, size 0x4 - class xAnimTransition* Sync; // offset 0x2C, size 0x4 - class xAnimTransition* Tran; // offset 0x30, size 0x4 - class xAnimSingle* Blend; // offset 0x34, size 0x4 + class xAnimActiveEffect * ActiveList; // offset 0x24, size 0x4 + class xAnimPlay * Play; // offset 0x28, size 0x4 + class xAnimTransition * Sync; // offset 0x2C, size 0x4 + class xAnimTransition * Tran; // offset 0x30, size 0x4 + class xAnimSingle * Blend; // offset 0x34, size 0x4 float BlendFactor; // offset 0x38, size 0x4 unsigned int pad; // offset 0x3C, size 0x4 }; -class xLinkAsset -{ +class xLinkAsset { // total size: 0x20 public: unsigned short srcEvent; // offset 0x0, size 0x2 @@ -1065,30 +966,27 @@ class xLinkAsset unsigned int paramWidgetAssetID; // offset 0x18, size 0x4 unsigned int chkAssetID; // offset 0x1C, size 0x4 }; -class RxPipelineNode -{ +class RxPipelineNode { // total size: 0x28 public: - class RxNodeDefinition* nodeDef; // offset 0x0, size 0x4 + class RxNodeDefinition * nodeDef; // offset 0x0, size 0x4 unsigned int numOutputs; // offset 0x4, size 0x4 - unsigned int* outputs; // offset 0x8, size 0x4 - class RxPipelineCluster** slotClusterRefs; // offset 0xC, size 0x4 - unsigned int* slotsContinue; // offset 0x10, size 0x4 - void* privateData; // offset 0x14, size 0x4 - unsigned int* inputToClusterSlot; // offset 0x18, size 0x4 - class RxPipelineNodeTopSortData* topSortData; // offset 0x1C, size 0x4 - void* initializationData; // offset 0x20, size 0x4 + unsigned int * outputs; // offset 0x8, size 0x4 + class RxPipelineCluster * * slotClusterRefs; // offset 0xC, size 0x4 + unsigned int * slotsContinue; // offset 0x10, size 0x4 + void * privateData; // offset 0x14, size 0x4 + unsigned int * inputToClusterSlot; // offset 0x18, size 0x4 + class RxPipelineNodeTopSortData * topSortData; // offset 0x1C, size 0x4 + void * initializationData; // offset 0x20, size 0x4 unsigned int initializationDataSize; // offset 0x24, size 0x4 }; -class xGroupAsset : public xBaseAsset -{ +class xGroupAsset : public xBaseAsset { // total size: 0xC public: unsigned short itemCount; // offset 0x8, size 0x2 unsigned short groupFlags; // offset 0xA, size 0x2 }; -class RpVertexNormal -{ +class RpVertexNormal { // total size: 0x4 public: signed char x; // offset 0x0, size 0x1 @@ -1096,16 +994,14 @@ class RpVertexNormal signed char z; // offset 0x2, size 0x1 unsigned char pad; // offset 0x3, size 0x1 }; -class tri_data -{ +class tri_data { // total size: 0xC public: unsigned int index; // offset 0x0, size 0x4 float r; // offset 0x4, size 0x4 float d; // offset 0x8, size 0x4 }; -class RpLight -{ +class RpLight { // total size: 0x40 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 @@ -1117,25 +1013,21 @@ class RpLight unsigned short lightFrame; // offset 0x3C, size 0x2 unsigned short pad; // offset 0x3E, size 0x2 }; -class callback -{ +class callback { // total size: 0x4 }; -class _tagiPad -{ +class _tagiPad { // total size: 0x4 public: signed int port; // offset 0x0, size 0x4 }; -class NPCChatInfo -{ +class NPCChatInfo { // total size: 0x10 public: class xVec3 pos_chat; // offset 0x0, size 0xC float tym_chat; // offset 0xC, size 0x4 }; -class zNPCFish : public zNPCVillager -{ +class zNPCFish : public zNPCVillager { // total size: 0x348 public: class NPCTarget tgt_robonear; // offset 0x2B0, size 0x14 @@ -1143,8 +1035,7 @@ class zNPCFish : public zNPCVillager float tmr_checkagain; // offset 0x2C8, size 0x4 class xEntDrive raw_drvdata; // offset 0x2CC, size 0x7C }; -class zNPCGoalCommon : public xGoal -{ +class zNPCGoalCommon : public xGoal { // total size: 0x4C public: signed int flg_npcgauto; // offset 0x3C, size 0x4 @@ -1153,87 +1044,78 @@ class zNPCGoalCommon : public xGoal signed int flg_info : 16; // offset 0x48, size 0x4 signed int flg_user : 16; // offset 0x48, size 0x4 }; -class xAnimState -{ +class xAnimState { // total size: 0x4C public: - class xAnimState* Next; // offset 0x0, size 0x4 - char* Name; // offset 0x4, size 0x4 + class xAnimState * Next; // offset 0x0, size 0x4 + char * Name; // offset 0x4, size 0x4 unsigned int ID; // offset 0x8, size 0x4 unsigned int Flags; // offset 0xC, size 0x4 unsigned int UserFlags; // offset 0x10, size 0x4 float Speed; // offset 0x14, size 0x4 - class xAnimFile* Data; // offset 0x18, size 0x4 - class xAnimEffect* Effects; // offset 0x1C, size 0x4 - class xAnimTransitionList* Default; // offset 0x20, size 0x4 - class xAnimTransitionList* List; // offset 0x24, size 0x4 - float* BoneBlend; // offset 0x28, size 0x4 - float* TimeSnap; // offset 0x2C, size 0x4 + class xAnimFile * Data; // offset 0x18, size 0x4 + class xAnimEffect * Effects; // offset 0x1C, size 0x4 + class xAnimTransitionList * Default; // offset 0x20, size 0x4 + class xAnimTransitionList * List; // offset 0x24, size 0x4 + float * BoneBlend; // offset 0x28, size 0x4 + float * TimeSnap; // offset 0x2C, size 0x4 float FadeRecip; // offset 0x30, size 0x4 - unsigned short* FadeOffset; // offset 0x34, size 0x4 - void* CallbackData; // offset 0x38, size 0x4 - class xAnimMultiFile* MultiFile; // offset 0x3C, size 0x4 - void (*BeforeEnter)(class xAnimPlay*, class xAnimState*); // offset 0x40, size 0x4 - void (*StateCallback)(class xAnimState*, class xAnimSingle*, void*); // offset 0x44, size 0x4 - void (*BeforeAnimMatrices)(class xAnimPlay*, class xQuat*, class xVec3*, - signed int); // offset 0x48, size 0x4 -}; -class zShrapnelAsset -{ + unsigned short * FadeOffset; // offset 0x34, size 0x4 + void * CallbackData; // offset 0x38, size 0x4 + class xAnimMultiFile * MultiFile; // offset 0x3C, size 0x4 + void (* BeforeEnter)(class xAnimPlay *, class xAnimState *); // offset 0x40, size 0x4 + void (* StateCallback)(class xAnimState *, class xAnimSingle *, void *); // offset 0x44, size 0x4 + void (* BeforeAnimMatrices)(class xAnimPlay *, class xQuat *, class xVec3 *, signed int); // offset 0x48, size 0x4 +}; +class zShrapnelAsset { // total size: 0xC public: signed int fassetCount; // offset 0x0, size 0x4 unsigned int shrapnelID; // offset 0x4, size 0x4 - void (*initCB)(class zShrapnelAsset*, class xModelInstance*, class xVec3*, - void (*)(class zFrag*, class zFragAsset*)); // offset 0x8, size 0x4 + void (* initCB)(class zShrapnelAsset *, class xModelInstance *, class xVec3 *, void (*)(class zFrag *, class zFragAsset *)); // offset 0x8, size 0x4 }; -class RxCluster -{ +class RxCluster { // total size: 0x1C public: unsigned short flags; // offset 0x0, size 0x2 unsigned short stride; // offset 0x2, size 0x2 - void* data; // offset 0x4, size 0x4 - void* currentData; // offset 0x8, size 0x4 + void * data; // offset 0x4, size 0x4 + void * currentData; // offset 0x8, size 0x4 unsigned int numAlloced; // offset 0xC, size 0x4 unsigned int numUsed; // offset 0x10, size 0x4 - class RxPipelineCluster* clusterRef; // offset 0x14, size 0x4 + class RxPipelineCluster * clusterRef; // offset 0x14, size 0x4 unsigned int attributes; // offset 0x18, size 0x4 }; -class RxPipeline -{ +class RxPipeline { // total size: 0x34 public: signed int locked; // offset 0x0, size 0x4 unsigned int numNodes; // offset 0x4, size 0x4 - class RxPipelineNode* nodes; // offset 0x8, size 0x4 + class RxPipelineNode * nodes; // offset 0x8, size 0x4 unsigned int packetNumClusterSlots; // offset 0xC, size 0x4 enum rxEmbeddedPacketState embeddedPacketState; // offset 0x10, size 0x4 - class RxPacket* embeddedPacket; // offset 0x14, size 0x4 + class RxPacket * embeddedPacket; // offset 0x14, size 0x4 unsigned int numInputRequirements; // offset 0x18, size 0x4 - class RxPipelineRequiresCluster* inputRequirements; // offset 0x1C, size 0x4 - void* superBlock; // offset 0x20, size 0x4 + class RxPipelineRequiresCluster * inputRequirements; // offset 0x1C, size 0x4 + void * superBlock; // offset 0x20, size 0x4 unsigned int superBlockSize; // offset 0x24, size 0x4 unsigned int entryPoint; // offset 0x28, size 0x4 unsigned int pluginId; // offset 0x2C, size 0x4 unsigned int pluginData; // offset 0x30, size 0x4 }; -class xFactoryInst : public RyzMemData -{ +class xFactoryInst : public RyzMemData { // total size: 0xC public: signed int itemType; // offset 0x0, size 0x4 - class xFactoryInst* nextprod; // offset 0x4, size 0x4 - class xFactoryInst* prevprod; // offset 0x8, size 0x4 + class xFactoryInst * nextprod; // offset 0x4, size 0x4 + class xFactoryInst * prevprod; // offset 0x8, size 0x4 }; -class _tagEmitOffsetPoint -{ +class _tagEmitOffsetPoint { // total size: 0xC public: class xVec3 offset; // offset 0x0, size 0xC }; -class xScene -{ +class xScene { // total size: 0x70 public: unsigned int sceneID; // offset 0x0, size 0x4 @@ -1253,30 +1135,28 @@ class xScene unsigned short num_stats_allocd; // offset 0x24, size 0x2 unsigned short num_dyns_allocd; // offset 0x26, size 0x2 unsigned short num_npcs_allocd; // offset 0x28, size 0x2 - class xEnt** trigs; // offset 0x2C, size 0x4 - class xEnt** stats; // offset 0x30, size 0x4 - class xEnt** dyns; // offset 0x34, size 0x4 - class xEnt** npcs; // offset 0x38, size 0x4 - class xEnt** act_ents; // offset 0x3C, size 0x4 - class xEnt** nact_ents; // offset 0x40, size 0x4 - class xEnv* env; // offset 0x44, size 0x4 + class xEnt * * trigs; // offset 0x2C, size 0x4 + class xEnt * * stats; // offset 0x30, size 0x4 + class xEnt * * dyns; // offset 0x34, size 0x4 + class xEnt * * npcs; // offset 0x38, size 0x4 + class xEnt * * act_ents; // offset 0x3C, size 0x4 + class xEnt * * nact_ents; // offset 0x40, size 0x4 + class xEnv * env; // offset 0x44, size 0x4 class xMemPool mempool; // offset 0x48, size 0x1C - class xBase* (*resolvID)(unsigned int); // offset 0x64, size 0x4 - char* (*base2Name)(class xBase*); // offset 0x68, size 0x4 - char* (*id2Name)(unsigned int); // offset 0x6C, size 0x4 + class xBase * (* resolvID)(unsigned int); // offset 0x64, size 0x4 + char * (* base2Name)(class xBase *); // offset 0x68, size 0x4 + char * (* id2Name)(unsigned int); // offset 0x6C, size 0x4 }; -class xEntShadow -{ +class xEntShadow { // total size: 0x28 public: class xVec3 pos; // offset 0x0, size 0xC class xVec3 vec; // offset 0xC, size 0xC - class RpAtomic* shadowModel; // offset 0x18, size 0x4 + class RpAtomic * shadowModel; // offset 0x18, size 0x4 float dst_cast; // offset 0x1C, size 0x4 float radius[2]; // offset 0x20, size 0x8 }; -class xSFXAsset : public xBaseAsset -{ +class xSFXAsset : public xBaseAsset { // total size: 0x30 public: unsigned short flagsSFX; // offset 0x8, size 0x2 @@ -1292,32 +1172,27 @@ class xSFXAsset : public xBaseAsset float innerRadius; // offset 0x28, size 0x4 float outerRadius; // offset 0x2C, size 0x4 }; -class RxPipelineNodeParam -{ +class RxPipelineNodeParam { // total size: 0x8 public: - void* dataParam; // offset 0x0, size 0x4 - class RxHeap* heap; // offset 0x4, size 0x4 + void * dataParam; // offset 0x0, size 0x4 + class RxHeap * heap; // offset 0x4, size 0x4 }; -class xCutsceneBreak -{ +class xCutsceneBreak { // total size: 0x8 public: float Time; // offset 0x0, size 0x4 signed int Index; // offset 0x4, size 0x4 }; -class zFragLocInfo -{ +class zFragLocInfo { // total size: 0x20 public: - union - { // inferred + union { // inferred class zFragBone bone; // offset 0x0, size 0x10 class xModelTag tag; // offset 0x0, size 0x20 }; }; -enum say_enum -{ +enum say_enum { INVALID_SAY = -1, SAY_B101_01 = 0, SAY_B101_02 = 1, @@ -1392,50 +1267,45 @@ enum say_enum SAY_HIT_LAST = 70, MAX_SAY = 71, }; -class xMovePoint : public xBase -{ +class xMovePoint : public xBase { // total size: 0x30 public: - class xMovePointAsset* asset; // offset 0x10, size 0x4 - class xVec3* pos; // offset 0x14, size 0x4 - class xMovePoint** nodes; // offset 0x18, size 0x4 - class xMovePoint* prev; // offset 0x1C, size 0x4 + class xMovePointAsset * asset; // offset 0x10, size 0x4 + class xVec3 * pos; // offset 0x14, size 0x4 + class xMovePoint * * nodes; // offset 0x18, size 0x4 + class xMovePoint * prev; // offset 0x1C, size 0x4 unsigned int node_wt_sum; // offset 0x20, size 0x4 unsigned char on; // offset 0x24, size 0x1 unsigned char pad[2]; // offset 0x25, size 0x2 float delay; // offset 0x28, size 0x4 - class xSpline3* spl; // offset 0x2C, size 0x4 + class xSpline3 * spl; // offset 0x2C, size 0x4 }; -class xBehaveMgr : public RyzMemData -{ +class xBehaveMgr : public RyzMemData { // total size: 0x18 public: - class xFactory* goalFactory; // offset 0x0, size 0x4 - class xPsyche* psypool; // offset 0x4, size 0x4 + class xFactory * goalFactory; // offset 0x0, size 0x4 + class xPsyche * psypool; // offset 0x4, size 0x4 class st_XORDEREDARRAY psylist; // offset 0x8, size 0x10 }; -class RxPacket -{ +class RxPacket { // total size: 0x30 public: unsigned short flags; // offset 0x0, size 0x2 unsigned short numClusters; // offset 0x2, size 0x2 - class RxPipeline* pipeline; // offset 0x4, size 0x4 - unsigned int* inputToClusterSlot; // offset 0x8, size 0x4 - unsigned int* slotsContinue; // offset 0xC, size 0x4 - class RxPipelineCluster** slotClusterRefs; // offset 0x10, size 0x4 + class RxPipeline * pipeline; // offset 0x4, size 0x4 + unsigned int * inputToClusterSlot; // offset 0x8, size 0x4 + unsigned int * slotsContinue; // offset 0xC, size 0x4 + class RxPipelineCluster * * slotClusterRefs; // offset 0x10, size 0x4 class RxCluster clusters[1]; // offset 0x14, size 0x1C }; -class tri_data : public tri_data -{ +class tri_data : public tri_data { // total size: 0x20 public: class xVec3 loc; // offset 0xC, size 0xC float yaw; // offset 0x18, size 0x4 - class xCollis* coll; // offset 0x1C, size 0x4 + class xCollis * coll; // offset 0x1C, size 0x4 }; -enum en_NPC_GOAL_SPOT -{ +enum en_NPC_GOAL_SPOT { NPC_GSPOT_START = 32, NPC_GSPOT_RESUME = 33, NPC_GSPOT_FINISH = 34, @@ -1446,8 +1316,7 @@ enum en_NPC_GOAL_SPOT NPC_GSPOT_NOMORE = 39, NPC_GSPOT_FORCEINT = 2147483647, }; -class RpInterpolator -{ +class RpInterpolator { // total size: 0x14 public: signed int flags; // offset 0x0, size 0x4 @@ -1457,24 +1326,20 @@ class RpInterpolator float recipTime; // offset 0xC, size 0x4 float position; // offset 0x10, size 0x4 }; -class xAnimMultiFileBase -{ +class xAnimMultiFileBase { // total size: 0x4 public: unsigned int Count; // offset 0x0, size 0x4 }; -class zNPCMerManChair : public zNPCVillager -{ +class zNPCMerManChair : public zNPCVillager { // total size: 0x2B4 public: signed int flg_mermanchair; // offset 0x2B0, size 0x4 }; -class zNPCGoalCheer : public zNPCGoalLoopAnim -{ +class zNPCGoalCheer : public zNPCGoalLoopAnim { // total size: 0x6C }; -class zJumpParam -{ +class zJumpParam { // total size: 0x10 public: float PeakHeight; // offset 0x0, size 0x4 @@ -1482,8 +1347,7 @@ class zJumpParam float TimeHold; // offset 0x8, size 0x4 float ImpulseVel; // offset 0xC, size 0x4 }; -class xMovePointAsset : public xBaseAsset -{ +class xMovePointAsset : public xBaseAsset { // total size: 0x28 public: class xVec3 pos; // offset 0x8, size 0xC @@ -1497,46 +1361,39 @@ class xMovePointAsset : public xBaseAsset float zoneRadius; // offset 0x20, size 0x4 float arenaRadius; // offset 0x24, size 0x4 }; -class zFragSound -{ +class zFragSound { // total size: 0x14 public: - class zFragSoundAsset* fasset; // offset 0x0, size 0x4 + class zFragSoundAsset * fasset; // offset 0x0, size 0x4 class xVec3 location; // offset 0x4, size 0xC unsigned int soundID; // offset 0x10, size 0x4 }; -class xAnimEffect -{ +class xAnimEffect { // total size: 0x14 public: - class xAnimEffect* Next; // offset 0x0, size 0x4 + class xAnimEffect * Next; // offset 0x0, size 0x4 unsigned int Flags; // offset 0x4, size 0x4 float StartTime; // offset 0x8, size 0x4 float EndTime; // offset 0xC, size 0x4 - unsigned int (*Callback)(unsigned int, class xAnimActiveEffect*, class xAnimSingle*, - void*); // offset 0x10, size 0x4 + unsigned int (* Callback)(unsigned int, class xAnimActiveEffect *, class xAnimSingle *, void *); // offset 0x10, size 0x4 }; -class zNPCLassoInfo -{ +class zNPCLassoInfo { // total size: 0x18 public: enum en_LASSO_STATUS stage; // offset 0x0, size 0x4 - class xEnt* lassoee; // offset 0x4, size 0x4 - class xAnimState* holdGuideAnim; // offset 0x8, size 0x4 - class xModelInstance* holdGuideModel; // offset 0xC, size 0x4 - class xAnimState* grabGuideAnim; // offset 0x10, size 0x4 - class xModelInstance* grabGuideModel; // offset 0x14, size 0x4 -}; -class xAnimTransition -{ + class xEnt * lassoee; // offset 0x4, size 0x4 + class xAnimState * holdGuideAnim; // offset 0x8, size 0x4 + class xModelInstance * holdGuideModel; // offset 0xC, size 0x4 + class xAnimState * grabGuideAnim; // offset 0x10, size 0x4 + class xModelInstance * grabGuideModel; // offset 0x14, size 0x4 +}; +class xAnimTransition { // total size: 0x2C public: - class xAnimTransition* Next; // offset 0x0, size 0x4 - class xAnimState* Dest; // offset 0x4, size 0x4 - unsigned int (*Conditional)(class xAnimTransition*, class xAnimSingle*, - void*); // offset 0x8, size 0x4 - unsigned int (*Callback)(class xAnimTransition*, class xAnimSingle*, - void*); // offset 0xC, size 0x4 + class xAnimTransition * Next; // offset 0x0, size 0x4 + class xAnimState * Dest; // offset 0x4, size 0x4 + unsigned int (* Conditional)(class xAnimTransition *, class xAnimSingle *, void *); // offset 0x8, size 0x4 + unsigned int (* Callback)(class xAnimTransition *, class xAnimSingle *, void *); // offset 0xC, size 0x4 unsigned int Flags; // offset 0x10, size 0x4 unsigned int UserFlags; // offset 0x14, size 0x4 float SrcTime; // offset 0x18, size 0x4 @@ -1544,18 +1401,16 @@ class xAnimTransition unsigned short Priority; // offset 0x20, size 0x2 unsigned short QueuePriority; // offset 0x22, size 0x2 float BlendRecip; // offset 0x24, size 0x4 - unsigned short* BlendOffset; // offset 0x28, size 0x4 + unsigned short * BlendOffset; // offset 0x28, size 0x4 }; -class RxPipelineRequiresCluster -{ +class RxPipelineRequiresCluster { // total size: 0xC public: - class RxClusterDefinition* clusterDef; // offset 0x0, size 0x4 + class RxClusterDefinition * clusterDef; // offset 0x0, size 0x4 enum RxClusterValidityReq rqdOrOpt; // offset 0x4, size 0x4 unsigned int slotIndex; // offset 0x8, size 0x4 }; -enum en_pendtype -{ +enum en_pendtype { PEND_TRAN_NONE = 0, PEND_TRAN_SET = 1, PEND_TRAN_PUSH = 2, @@ -1566,16 +1421,14 @@ enum en_pendtype PEND_TRAN_INPROG = 7, PEND_TRAN_NOMORE = 8, }; -enum RwFogType -{ +enum RwFogType { rwFOGTYPENAFOGTYPE = 0, rwFOGTYPELINEAR = 1, rwFOGTYPEEXPONENTIAL = 2, rwFOGTYPEEXPONENTIAL2 = 3, rwFOGTYPEFORCEENUMSIZEINT = 2147483647, }; -class /* @class */ -{ +class /* @class */ { // total size: 0x220 public: class xVec3 base_point[16]; // offset 0x0, size 0xC0 @@ -1585,50 +1438,44 @@ class /* @class */ float arc_height; // offset 0x184, size 0x4 class xVec3 arc_normal; // offset 0x188, size 0xC float thickness[16]; // offset 0x194, size 0x40 - union - { // inferred + union { // inferred class _tagLightningLine line; // offset 0x1D4, size 0x4 class _tagLightningRot rot; // offset 0x1D4, size 0x48 class _tagLightningZeus zeus; // offset 0x1D4, size 0xC }; float rand_radius; // offset 0x21C, size 0x4 }; -class XCSNNosey -{ +class XCSNNosey { // total size: 0xC public: - void* userdata; // offset 0x4, size 0x4 + void * userdata; // offset 0x4, size 0x4 signed int flg_nosey; // offset 0x8, size 0x4 }; -class xCutsceneMgr : public xBase -{ +class xCutsceneMgr : public xBase { // total size: 0x24 public: - class xCutsceneMgrAsset* tasset; // offset 0x10, size 0x4 - class xCutscene* csn; // offset 0x14, size 0x4 + class xCutsceneMgrAsset * tasset; // offset 0x10, size 0x4 + class xCutscene * csn; // offset 0x14, size 0x4 unsigned int stop; // offset 0x18, size 0x4 - class xCutsceneZbufferHack* zhack; // offset 0x1C, size 0x4 + class xCutsceneZbufferHack * zhack; // offset 0x1C, size 0x4 float oldfov; // offset 0x20, size 0x4 }; -class xSurface : public xBase -{ +class xSurface : public xBase { // total size: 0x28 public: unsigned int idx; // offset 0x10, size 0x4 unsigned int type; // offset 0x14, size 0x4 - union - { // inferred + union { // inferred unsigned int mat_idx; // offset 0x18, size 0x4 - class xEnt* ent; // offset 0x18, size 0x4 - void* obj; // offset 0x18, size 0x4 + class xEnt * ent; // offset 0x18, size 0x4 + void * obj; // offset 0x18, size 0x4 }; float friction; // offset 0x1C, size 0x4 unsigned char state; // offset 0x20, size 0x1 unsigned char pad[3]; // offset 0x21, size 0x3 - void* moprops; // offset 0x24, size 0x4 + void * moprops; // offset 0x24, size 0x4 }; -class iColor_tag -{ +class iColor_tag { // total size: 0x4 public: unsigned char r; // offset 0x0, size 0x1 @@ -1636,31 +1483,28 @@ class iColor_tag unsigned char b; // offset 0x2, size 0x1 unsigned char a; // offset 0x3, size 0x1 }; -class zFragProjectileAsset : public zFragAsset -{ +class zFragProjectileAsset : public zFragAsset { // total size: 0x90 public: unsigned int modelInfoID; // offset 0x18, size 0x4 - class RpAtomic* modelFile; // offset 0x1C, size 0x4 + class RpAtomic * modelFile; // offset 0x1C, size 0x4 class zFragLocation launch; // offset 0x20, size 0x24 class zFragLocation vel; // offset 0x44, size 0x24 float bounce; // offset 0x68, size 0x4 signed int maxBounces; // offset 0x6C, size 0x4 unsigned int flags; // offset 0x70, size 0x4 unsigned int childID; // offset 0x74, size 0x4 - class zShrapnelAsset* child; // offset 0x78, size 0x4 + class zShrapnelAsset * child; // offset 0x78, size 0x4 float minScale; // offset 0x7C, size 0x4 float maxScale; // offset 0x80, size 0x4 unsigned int scaleCurveID; // offset 0x84, size 0x4 - class xCurveAsset* scaleCurve; // offset 0x88, size 0x4 + class xCurveAsset * scaleCurve; // offset 0x88, size 0x4 float gravity; // offset 0x8C, size 0x4 }; -struct /* @anon2 */ -{ +struct /* @anon2 */ { // total size: 0xD0 }; -class zFragSoundAsset : public zFragAsset -{ +class zFragSoundAsset : public zFragAsset { // total size: 0x4C public: unsigned int assetID; // offset 0x18, size 0x4 @@ -1669,23 +1513,20 @@ class zFragSoundAsset : public zFragAsset float innerRadius; // offset 0x44, size 0x4 float outerRadius; // offset 0x48, size 0x4 }; -class xCollis -{ +class xCollis { // total size: 0x50 public: unsigned int flags; // offset 0x0, size 0x4 unsigned int oid; // offset 0x4, size 0x4 - void* optr; // offset 0x8, size 0x4 - class xModelInstance* mptr; // offset 0xC, size 0x4 + void * optr; // offset 0x8, size 0x4 + class xModelInstance * mptr; // offset 0xC, size 0x4 float dist; // offset 0x10, size 0x4 class xVec3 norm; // offset 0x14, size 0xC class xVec3 tohit; // offset 0x20, size 0xC class xVec3 depen; // offset 0x2C, size 0xC class xVec3 hdng; // offset 0x38, size 0xC - union - { // inferred - class /* @class */ - { + union { // inferred + class /* @class */ { // total size: 0xC public: float t; // offset 0x0, size 0x4 @@ -1695,12 +1536,10 @@ class xCollis class tri_data tri; // offset 0x44, size 0xC }; }; -class zEntHangable -{ +class zEntHangable { // total size: 0x0 }; -class RwRGBAReal -{ +class RwRGBAReal { // total size: 0x10 public: float red; // offset 0x0, size 0x4 @@ -1708,12 +1547,10 @@ class RwRGBAReal float blue; // offset 0x8, size 0x4 float alpha; // offset 0xC, size 0x4 }; -class zParEmitter : public xParEmitter -{ +class zParEmitter : public xParEmitter { // total size: 0x78 }; -class xEntMotionMechData -{ +class xEntMotionMechData { // total size: 0x2C public: unsigned char type; // offset 0x0, size 0x1 @@ -1731,16 +1568,14 @@ class xEntMotionMechData float ret_delay; // offset 0x24, size 0x4 float post_ret_delay; // offset 0x28, size 0x4 }; -class RwObjectHasFrame -{ +class RwObjectHasFrame { // total size: 0x14 public: class RwObject object; // offset 0x0, size 0x8 class RwLLLink lFrame; // offset 0x8, size 0x8 - class RwObjectHasFrame* (*sync)(class RwObjectHasFrame*); // offset 0x10, size 0x4 + class RwObjectHasFrame * (* sync)(class RwObjectHasFrame *); // offset 0x10, size 0x4 }; -class xCutsceneMgrAsset : public xBaseAsset -{ +class xCutsceneMgrAsset : public xBaseAsset { // total size: 0xC8 public: unsigned int cutsceneAssetID; // offset 0x8, size 0x4 @@ -1750,58 +1585,52 @@ class xCutsceneMgrAsset : public xBaseAsset float endTime[15]; // offset 0x50, size 0x3C unsigned int emitID[15]; // offset 0x8C, size 0x3C }; -class xListItem -{ +class xListItem { // total size: 0xC public: signed int flg_travFilter; // offset 0x0, size 0x4 - class xGoal* next; // offset 0x4, size 0x4 - class xGoal* prev; // offset 0x8, size 0x4 + class xGoal * next; // offset 0x4, size 0x4 + class xGoal * prev; // offset 0x8, size 0x4 }; -enum en_NPC_CARRY_STATE -{ +enum en_NPC_CARRY_STATE { zNPCCARRY_NONE = 0, zNPCCARRY_PICKUP = 1, zNPCCARRY_THROW = 2, zNPCCARRY_ATTEMPTPICKUP = 3, zNPCCARRY_FORCEINT = 2147483647, }; -class NPCSpawnInfo -{ +class NPCSpawnInfo { // total size: 0x18 public: class xVec3 pos_spawn; // offset 0x0, size 0xC - class zMovePoint* nav_firstMovepoint; // offset 0xC, size 0x4 - class zMovePoint* nav_spawnReference; // offset 0x10, size 0x4 + class zMovePoint * nav_firstMovepoint; // offset 0xC, size 0x4 + class zMovePoint * nav_spawnReference; // offset 0x10, size 0x4 signed int spawnSuccess; // offset 0x14, size 0x4 }; -class xFFX -{ +class xFFX { // total size: 0x0 }; -class RpPolygon -{ +class RpPolygon { // total size: 0x8 public: unsigned short matIndex; // offset 0x0, size 0x2 unsigned short vertIndex[3]; // offset 0x2, size 0x6 }; -class xCutscene -{ +class xCutscene { // total size: 0x138 public: - class xCutsceneInfo* Info; // offset 0x0, size 0x4 - class xCutsceneData* Data; // offset 0x4, size 0x4 - unsigned int* TimeChunkOffs; // offset 0x8, size 0x4 - unsigned int* Visibility; // offset 0xC, size 0x4 - class xCutsceneBreak* BreakList; // offset 0x10, size 0x4 - class xCutsceneTime* Play; // offset 0x14, size 0x4 - class xCutsceneTime* Stream; // offset 0x18, size 0x4 + class xCutsceneInfo * Info; // offset 0x0, size 0x4 + class xCutsceneData * Data; // offset 0x4, size 0x4 + unsigned int * TimeChunkOffs; // offset 0x8, size 0x4 + unsigned int * Visibility; // offset 0xC, size 0x4 + class xCutsceneBreak * BreakList; // offset 0x10, size 0x4 + class xCutsceneTime * Play; // offset 0x14, size 0x4 + class xCutsceneTime * Stream; // offset 0x18, size 0x4 unsigned int Waiting; // offset 0x1C, size 0x4 unsigned int BadReadPause; // offset 0x20, size 0x4 float BadReadSpeed; // offset 0x24, size 0x4 - void* RawBuf; // offset 0x28, size 0x4 - void* AlignBuf; // offset 0x2C, size 0x4 + void * RawBuf; // offset 0x28, size 0x4 + void * AlignBuf; // offset 0x2C, size 0x4 float Time; // offset 0x30, size 0x4 float CamTime; // offset 0x34, size 0x4 unsigned int PlayIndex; // offset 0x38, size 0x4 @@ -1813,192 +1642,169 @@ class xCutscene unsigned int Opened; // offset 0x50, size 0x4 class tag_xFile File; // offset 0x54, size 0xB4 signed int AsyncID; // offset 0x108, size 0x4 - void* MemBuf; // offset 0x10C, size 0x4 - void* MemCurr; // offset 0x110, size 0x4 + void * MemBuf; // offset 0x10C, size 0x4 + void * MemCurr; // offset 0x110, size 0x4 unsigned int SndStarted; // offset 0x114, size 0x4 unsigned int SndNumChannel; // offset 0x118, size 0x4 unsigned int SndChannelReq[2]; // offset 0x11C, size 0x8 unsigned int SndAssetID[2]; // offset 0x124, size 0x8 unsigned int SndHandle[2]; // offset 0x12C, size 0x8 - class XCSNNosey* cb_nosey; // offset 0x134, size 0x4 + class XCSNNosey * cb_nosey; // offset 0x134, size 0x4 }; -class xPEVCyl -{ +class xPEVCyl { // total size: 0xC public: float height; // offset 0x0, size 0x4 float radius; // offset 0x4, size 0x4 float deflection; // offset 0x8, size 0x4 }; -class RwLinkList -{ +class RwLinkList { // total size: 0x8 public: class RwLLLink link; // offset 0x0, size 0x8 }; -struct /* @anon3 */ -{ +struct /* @anon3 */ { // total size: 0xD0 }; -enum RwCullMode -{ +enum RwCullMode { rwCULLMODENACULLMODE = 0, rwCULLMODECULLNONE = 1, rwCULLMODECULLBACK = 2, rwCULLMODECULLFRONT = 3, rwCULLMODEFORCEENUMSIZEINT = 2147483647, }; -class xAnimPlay -{ +class xAnimPlay { // total size: 0x20 public: - class xAnimPlay* Next; // offset 0x0, size 0x4 + class xAnimPlay * Next; // offset 0x0, size 0x4 unsigned short NumSingle; // offset 0x4, size 0x2 unsigned short BoneCount; // offset 0x6, size 0x2 - class xAnimSingle* Single; // offset 0x8, size 0x4 - void* Object; // offset 0xC, size 0x4 - class xAnimTable* Table; // offset 0x10, size 0x4 - class xMemPool* Pool; // offset 0x14, size 0x4 - class xModelInstance* ModelInst; // offset 0x18, size 0x4 - void (*BeforeAnimMatrices)(class xAnimPlay*, class xQuat*, class xVec3*, - signed int); // offset 0x1C, size 0x4 -}; -class xEntPenData -{ + class xAnimSingle * Single; // offset 0x8, size 0x4 + void * Object; // offset 0xC, size 0x4 + class xAnimTable * Table; // offset 0x10, size 0x4 + class xMemPool * Pool; // offset 0x14, size 0x4 + class xModelInstance * ModelInst; // offset 0x18, size 0x4 + void (* BeforeAnimMatrices)(class xAnimPlay *, class xQuat *, class xVec3 *, signed int); // offset 0x1C, size 0x4 +}; +class xEntPenData { // total size: 0x50 public: class xVec3 top; // offset 0x0, size 0xC float w; // offset 0xC, size 0x4 class xMat4x3 omat; // offset 0x10, size 0x40 }; -class zPlatform : public zEnt -{ +class zPlatform : public zEnt { // total size: 0x210 public: - class xPlatformAsset* passet; // offset 0xD4, size 0x4 + class xPlatformAsset * passet; // offset 0xD4, size 0x4 class xEntMotion motion; // offset 0xE0, size 0x80 unsigned short state; // offset 0x160, size 0x2 unsigned short plat_flags; // offset 0x162, size 0x2 float tmr; // offset 0x164, size 0x4 signed int ctr; // offset 0x168, size 0x4 - class xMovePoint* src; // offset 0x16C, size 0x4 - class xModelInstance* am; // offset 0x170, size 0x4 - class xModelInstance* bm; // offset 0x174, size 0x4 + class xMovePoint * src; // offset 0x16C, size 0x4 + class xModelInstance * am; // offset 0x170, size 0x4 + class xModelInstance * bm; // offset 0x174, size 0x4 signed int moving; // offset 0x178, size 0x4 class xEntDrive drv; // offset 0x17C, size 0x7C - class zPlatFMRunTime* fmrt; // offset 0x1F8, size 0x4 + class zPlatFMRunTime * fmrt; // offset 0x1F8, size 0x4 float pauseMult; // offset 0x1FC, size 0x4 float pauseDelta; // offset 0x200, size 0x4 }; -class zCutsceneMgr : public xCutsceneMgr -{ +class zCutsceneMgr : public xCutsceneMgr { // total size: 0x24 }; -class _tagxRumble -{ +class _tagxRumble { // total size: 0x10 public: enum _tagRumbleType type; // offset 0x0, size 0x4 float seconds; // offset 0x4, size 0x4 - class _tagxRumble* next; // offset 0x8, size 0x4 + class _tagxRumble * next; // offset 0x8, size 0x4 signed short active; // offset 0xC, size 0x2 unsigned short fxflags; // offset 0xE, size 0x2 }; -class /* @class */ -{ +class /* @class */ { // total size: 0xC public: float t; // offset 0x0, size 0x4 float u; // offset 0x4, size 0x4 float v; // offset 0x8, size 0x4 }; -class xCoef3 -{ +class xCoef3 { // total size: 0x30 public: class xCoef x; // offset 0x0, size 0x10 class xCoef y; // offset 0x10, size 0x10 class xCoef z; // offset 0x20, size 0x10 }; -class zGlobals : public xGlobals -{ +class zGlobals : public xGlobals { // total size: 0x2050 public: class zPlayerGlobals player; // offset 0x700, size 0x1940 - class zAssetPickupTable* pickupTable; // offset 0x2040, size 0x4 - class zCutsceneMgr* cmgr; // offset 0x2044, size 0x4 - class zScene* sceneCur; // offset 0x2048, size 0x4 - class zScene* scenePreload; // offset 0x204C, size 0x4 + class zAssetPickupTable * pickupTable; // offset 0x2040, size 0x4 + class zCutsceneMgr * cmgr; // offset 0x2044, size 0x4 + class zScene * sceneCur; // offset 0x2048, size 0x4 + class zScene * scenePreload; // offset 0x204C, size 0x4 }; -class RpMaterialList -{ +class RpMaterialList { // total size: 0xC public: - class RpMaterial** materials; // offset 0x0, size 0x4 + class RpMaterial * * materials; // offset 0x0, size 0x4 signed int numMaterials; // offset 0x4, size 0x4 signed int space; // offset 0x8, size 0x4 }; -class xLightKit -{ +class xLightKit { // total size: 0x10 public: unsigned int tagID; // offset 0x0, size 0x4 unsigned int groupID; // offset 0x4, size 0x4 unsigned int lightCount; // offset 0x8, size 0x4 - class xLightKitLight* lightList; // offset 0xC, size 0x4 + class xLightKitLight * lightList; // offset 0xC, size 0x4 }; -class zFragLocation -{ +class zFragLocation { // total size: 0x24 public: enum zFragLocType type; // offset 0x0, size 0x4 class zFragLocInfo info; // offset 0x4, size 0x20 }; -class xDynAsset : public xBaseAsset -{ +class xDynAsset : public xBaseAsset { // total size: 0x10 public: unsigned int type; // offset 0x8, size 0x4 unsigned short version; // offset 0xC, size 0x2 unsigned short handle; // offset 0xE, size 0x2 }; -class zNPCSandyBikini : public zNPCVillager -{ +class zNPCSandyBikini : public zNPCVillager { // total size: 0x2B4 public: float tmr_leakCycle; // offset 0x2B0, size 0x4 }; -class xAnimMultiFile : public xAnimMultiFileBase -{ +class xAnimMultiFile : public xAnimMultiFileBase { // total size: 0xC public: class xAnimMultiFileEntry Files[1]; // offset 0x4, size 0x8 }; -class RpMaterial -{ +class RpMaterial { // total size: 0x1C public: - class RwTexture* texture; // offset 0x0, size 0x4 + class RwTexture * texture; // offset 0x0, size 0x4 class RwRGBA color; // offset 0x4, size 0x4 - class RxPipeline* pipeline; // offset 0x8, size 0x4 + class RxPipeline * pipeline; // offset 0x8, size 0x4 class RwSurfaceProperties surfaceProps; // offset 0xC, size 0xC signed short refCount; // offset 0x18, size 0x2 signed short pad; // offset 0x1A, size 0x2 }; -class zAssetPickupTable -{ +class zAssetPickupTable { // total size: 0x0 }; -class xModelPool -{ +class xModelPool { // total size: 0xC public: - class xModelPool* Next; // offset 0x0, size 0x4 + class xModelPool * Next; // offset 0x0, size 0x4 unsigned int NumMatrices; // offset 0x4, size 0x4 - class xModelInstance* List; // offset 0x8, size 0x4 + class xModelInstance * List; // offset 0x8, size 0x4 }; -class zGlobalSettings -{ +class zGlobalSettings { // total size: 0x150 public: unsigned short AnalogMin; // offset 0x0, size 0x2 @@ -2088,8 +1894,7 @@ class zGlobalSettings unsigned char PowerUp[2]; // offset 0x149, size 0x2 unsigned char InitialPowerUp[2]; // offset 0x14B, size 0x2 }; -class xParInterp -{ +class xParInterp { // total size: 0x14 public: float val[2]; // offset 0x0, size 0x8 @@ -2097,48 +1902,42 @@ class xParInterp float freq; // offset 0xC, size 0x4 float oofreq; // offset 0x10, size 0x4 }; -class rxHeapFreeBlock -{ +class rxHeapFreeBlock { // total size: 0x8 public: unsigned int size; // offset 0x0, size 0x4 - class rxHeapBlockHeader* ptr; // offset 0x4, size 0x4 + class rxHeapBlockHeader * ptr; // offset 0x4, size 0x4 }; -class xSpline3 -{ +class xSpline3 { // total size: 0x2C public: unsigned short type; // offset 0x0, size 0x2 unsigned short flags; // offset 0x2, size 0x2 unsigned int N; // offset 0x4, size 0x4 unsigned int allocN; // offset 0x8, size 0x4 - class xVec3* points; // offset 0xC, size 0x4 - float* time; // offset 0x10, size 0x4 - class xVec3* p12; // offset 0x14, size 0x4 - class xVec3* bctrl; // offset 0x18, size 0x4 - float* knot; // offset 0x1C, size 0x4 - class xCoef3* coef; // offset 0x20, size 0x4 + class xVec3 * points; // offset 0xC, size 0x4 + float * time; // offset 0x10, size 0x4 + class xVec3 * p12; // offset 0x14, size 0x4 + class xVec3 * bctrl; // offset 0x18, size 0x4 + float * knot; // offset 0x1C, size 0x4 + class xCoef3 * coef; // offset 0x20, size 0x4 unsigned int arcSample; // offset 0x24, size 0x4 - float* arcLength; // offset 0x28, size 0x4 + float * arcLength; // offset 0x28, size 0x4 }; -struct /* @anon4 */ -{ +struct /* @anon4 */ { // total size: 0xD0 }; -class xParSys -{ +class xParSys { // total size: 0x0 }; -class RxPipelineNodeTopSortData -{ +class RxPipelineNodeTopSortData { // total size: 0xC public: unsigned int numIns; // offset 0x0, size 0x4 unsigned int numInsVisited; // offset 0x4, size 0x4 - class rxReq* req; // offset 0x8, size 0x4 + class rxReq * req; // offset 0x8, size 0x4 }; -class _tagxPad -{ +class _tagxPad { // total size: 0x148 public: unsigned char value[22]; // offset 0x0, size 0x16 @@ -2161,19 +1960,16 @@ class _tagxPad float down_tmr[22]; // offset 0xC0, size 0x58 class analog_data analog[2]; // offset 0x118, size 0x30 }; -class RwV2d -{ +class RwV2d { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class RyzMemData -{ +class RyzMemData { // total size: 0x1 }; -class xEntOrbitData -{ +class xEntOrbitData { // total size: 0x28 public: class xVec3 orig; // offset 0x0, size 0xC @@ -2183,28 +1979,24 @@ class xEntOrbitData float p; // offset 0x20, size 0x4 float w; // offset 0x24, size 0x4 }; -class xClumpCollBSPTree -{ +class xClumpCollBSPTree { // total size: 0x10 public: unsigned int numBranchNodes; // offset 0x0, size 0x4 - class xClumpCollBSPBranchNode* branchNodes; // offset 0x4, size 0x4 + class xClumpCollBSPBranchNode * branchNodes; // offset 0x4, size 0x4 unsigned int numTriangles; // offset 0x8, size 0x4 - class xClumpCollBSPTriangle* triangles; // offset 0xC, size 0x4 + class xClumpCollBSPTriangle * triangles; // offset 0xC, size 0x4 }; -class zNPCBubbleBuddy : public zNPCFish -{ +class zNPCBubbleBuddy : public zNPCFish { // total size: 0x348 }; -class xEntBoulder -{ +class xEntBoulder { // total size: 0x0 }; -class zFragShockwave -{ +class zFragShockwave { // total size: 0x38 public: - class zFragShockwaveAsset* fasset; // offset 0x0, size 0x4 + class zFragShockwaveAsset * fasset; // offset 0x0, size 0x4 float currSize; // offset 0x4, size 0x4 float currVelocity; // offset 0x8, size 0x4 float deltVelocity; // offset 0xC, size 0x4 @@ -2213,84 +2005,74 @@ class zFragShockwave float currColor[4]; // offset 0x18, size 0x10 float deltColor[4]; // offset 0x28, size 0x10 }; -class xFactory : public RyzMemData -{ +class xFactory : public RyzMemData { // total size: 0x34 public: - class XGOFTypeInfo* infopool; // offset 0x0, size 0x4 + class XGOFTypeInfo * infopool; // offset 0x0, size 0x4 class st_XORDEREDARRAY infolist; // offset 0x4, size 0x10 - class xFactoryInst* products; // offset 0x14, size 0x4 + class xFactoryInst * products; // offset 0x14, size 0x4 class RyzMemGrow growContextData; // offset 0x18, size 0x1C }; -class zPlayerLassoInfo -{ +class zPlayerLassoInfo { // total size: 0x120 public: - class xEnt* target; // offset 0x0, size 0x4 + class xEnt * target; // offset 0x0, size 0x4 float dist; // offset 0x4, size 0x4 unsigned char destroy; // offset 0x8, size 0x1 unsigned char targetGuide; // offset 0x9, size 0x1 float lassoRot; // offset 0xC, size 0x4 - class xEnt* swingTarget; // offset 0x10, size 0x4 - class xEnt* releasedSwing; // offset 0x14, size 0x4 + class xEnt * swingTarget; // offset 0x10, size 0x4 + class xEnt * releasedSwing; // offset 0x14, size 0x4 float copterTime; // offset 0x18, size 0x4 signed int canCopter; // offset 0x1C, size 0x4 class zLasso lasso; // offset 0x20, size 0xFC - class xAnimState* zeroAnim; // offset 0x11C, size 0x4 + class xAnimState * zeroAnim; // offset 0x11C, size 0x4 }; -class xModelAssetParam -{ +class xModelAssetParam { // total size: 0x0 }; -class zScene : public xScene -{ +class zScene : public xScene { // total size: 0x2C8 public: - class _zPortal* pendingPortal; // offset 0x70, size 0x4 - union - { // inferred + class _zPortal * pendingPortal; // offset 0x70, size 0x4 + union { // inferred unsigned int num_ents; // offset 0x74, size 0x4 unsigned int num_base; // offset 0x74, size 0x4 }; - union - { // inferred - class xBase** base; // offset 0x78, size 0x4 - class zEnt** ents; // offset 0x78, size 0x4 + union { // inferred + class xBase * * base; // offset 0x78, size 0x4 + class zEnt * * ents; // offset 0x78, size 0x4 }; unsigned int num_update_base; // offset 0x7C, size 0x4 - class xBase** update_base; // offset 0x80, size 0x4 + class xBase * * update_base; // offset 0x80, size 0x4 unsigned int baseCount[72]; // offset 0x84, size 0x120 - class xBase* baseList[72]; // offset 0x1A4, size 0x120 - class _zEnv* zen; // offset 0x2C4, size 0x4 + class xBase * baseList[72]; // offset 0x1A4, size 0x120 + class _zEnv * zen; // offset 0x2C4, size 0x4 }; -class _tagLightningLine -{ +class _tagLightningLine { // total size: 0x4 public: float unused; // offset 0x0, size 0x4 }; -class rxHeapSuperBlockDescriptor -{ +class rxHeapSuperBlockDescriptor { // total size: 0xC public: - void* start; // offset 0x0, size 0x4 + void * start; // offset 0x0, size 0x4 unsigned int size; // offset 0x4, size 0x4 - class rxHeapSuperBlockDescriptor* next; // offset 0x8, size 0x4 + class rxHeapSuperBlockDescriptor * next; // offset 0x8, size 0x4 }; -class RyzMemGrow -{ +class RyzMemGrow { // total size: 0x1C public: signed int flg_grow; // offset 0x0, size 0x4 signed int amt; // offset 0x4, size 0x4 - char* ptr; // offset 0x8, size 0x4 - class xBase* user; // offset 0xC, size 0x4 + char * ptr; // offset 0x8, size 0x4 + class xBase * user; // offset 0xC, size 0x4 signed int amt_last; // offset 0x10, size 0x4 - char* ptr_last; // offset 0x14, size 0x4 - class xBase* user_last; // offset 0x18, size 0x4 + char * ptr_last; // offset 0x14, size 0x4 + class xBase * user_last; // offset 0x18, size 0x4 }; -class tag_iFile -{ +class tag_iFile { // total size: 0x90 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2299,8 +2081,7 @@ class tag_iFile signed int offset; // offset 0x88, size 0x4 signed int length; // offset 0x8C, size 0x4 }; -class RpClump -{ +class RpClump { // total size: 0x2C public: class RwObject object; // offset 0x0, size 0x8 @@ -2308,10 +2089,9 @@ class RpClump class RwLinkList lightList; // offset 0x10, size 0x8 class RwLinkList cameraList; // offset 0x18, size 0x8 class RwLLLink inWorldLink; // offset 0x20, size 0x8 - class RpClump* (*callback)(class RpClump*, void*); // offset 0x28, size 0x4 + class RpClump * (* callback)(class RpClump *, void *); // offset 0x28, size 0x4 }; -class NPCSndQueue -{ +class NPCSndQueue { // total size: 0x14 public: unsigned int sndDirect; // offset 0x0, size 0x4 @@ -2320,8 +2100,7 @@ class NPCSndQueue float tmr_delay; // offset 0xC, size 0x4 float radius; // offset 0x10, size 0x4 }; -class zFragShockwaveAsset : public zFragAsset -{ +class zFragShockwaveAsset : public zFragAsset { // total size: 0x54 public: unsigned int modelInfoID; // offset 0x18, size 0x4 @@ -2334,8 +2113,7 @@ class zFragShockwaveAsset : public zFragAsset float birthColor[4]; // offset 0x34, size 0x10 float deathColor[4]; // offset 0x44, size 0x10 }; -class RpGeometry -{ +class RpGeometry { // total size: 0x60 public: class RwObject object; // offset 0x0, size 0x8 @@ -2347,38 +2125,35 @@ class RpGeometry signed int numMorphTargets; // offset 0x18, size 0x4 signed int numTexCoordSets; // offset 0x1C, size 0x4 class RpMaterialList matList; // offset 0x20, size 0xC - class RpTriangle* triangles; // offset 0x2C, size 0x4 - class RwRGBA* preLitLum; // offset 0x30, size 0x4 - class RwTexCoords* texCoords[8]; // offset 0x34, size 0x20 - class RpMeshHeader* mesh; // offset 0x54, size 0x4 - class RwResEntry* repEntry; // offset 0x58, size 0x4 - class RpMorphTarget* morphTarget; // offset 0x5C, size 0x4 -}; -class xGroup : public xBase -{ + class RpTriangle * triangles; // offset 0x2C, size 0x4 + class RwRGBA * preLitLum; // offset 0x30, size 0x4 + class RwTexCoords * texCoords[8]; // offset 0x34, size 0x20 + class RpMeshHeader * mesh; // offset 0x54, size 0x4 + class RwResEntry * repEntry; // offset 0x58, size 0x4 + class RpMorphTarget * morphTarget; // offset 0x5C, size 0x4 +}; +class xGroup : public xBase { // total size: 0x20 public: - class xGroupAsset* asset; // offset 0x10, size 0x4 - class xBase** item; // offset 0x14, size 0x4 + class xGroupAsset * asset; // offset 0x10, size 0x4 + class xBase * * item; // offset 0x14, size 0x4 unsigned int last_index; // offset 0x18, size 0x4 signed int flg_group; // offset 0x1C, size 0x4 }; -class xClumpCollBSPVertInfo -{ +class xClumpCollBSPVertInfo { // total size: 0x4 public: unsigned short atomIndex; // offset 0x0, size 0x2 unsigned short meshVertIndex; // offset 0x2, size 0x2 }; -class zLedgeGrabParams -{ +class zLedgeGrabParams { // total size: 0x380 public: float animGrab; // offset 0x0, size 0x4 float zdist; // offset 0x4, size 0x4 class xVec3 tranTable[60]; // offset 0x8, size 0x2D0 signed int tranCount; // offset 0x2D8, size 0x4 - class xEnt* optr; // offset 0x2DC, size 0x4 + class xEnt * optr; // offset 0x2DC, size 0x4 class xMat4x3 omat; // offset 0x2E0, size 0x40 float y0det; // offset 0x320, size 0x4 float dydet; // offset 0x324, size 0x4 @@ -2396,18 +2171,16 @@ class zLedgeGrabParams float startrot; // offset 0x36C, size 0x4 float endrot; // offset 0x370, size 0x4 }; -class xUpdateCullEnt -{ +class xUpdateCullEnt { // total size: 0x10 public: unsigned short index; // offset 0x0, size 0x2 signed short groupIndex; // offset 0x2, size 0x2 - unsigned int (*cb)(void*, void*); // offset 0x4, size 0x4 - void* cbdata; // offset 0x8, size 0x4 - class xUpdateCullEnt* nextInGroup; // offset 0xC, size 0x4 + unsigned int (* cb)(void *, void *); // offset 0x4, size 0x4 + void * cbdata; // offset 0x8, size 0x4 + class xUpdateCullEnt * nextInGroup; // offset 0xC, size 0x4 }; -class xPEEntBone -{ +class xPEEntBone { // total size: 0x18 public: unsigned char flags; // offset 0x0, size 0x1 @@ -2418,8 +2191,7 @@ class xPEEntBone float radius; // offset 0x10, size 0x4 float deflection; // offset 0x14, size 0x4 }; -class xEntNPCAsset -{ +class xEntNPCAsset { // total size: 0x18 public: signed int npcFlags; // offset 0x0, size 0x4 @@ -2429,31 +2201,29 @@ class xEntNPCAsset unsigned int taskWidgetPrime; // offset 0x10, size 0x4 unsigned int taskWidgetSecond; // offset 0x14, size 0x4 }; -class RpWorldSector -{ +class RpWorldSector { // total size: 0x90 public: signed int type; // offset 0x0, size 0x4 - class RpPolygon* polygons; // offset 0x4, size 0x4 - class RwV3d* vertices; // offset 0x8, size 0x4 - class RpVertexNormal* normals; // offset 0xC, size 0x4 - class RwTexCoords* texCoords[8]; // offset 0x10, size 0x20 - class RwRGBA* preLitLum; // offset 0x30, size 0x4 - class RwResEntry* repEntry; // offset 0x34, size 0x4 + class RpPolygon * polygons; // offset 0x4, size 0x4 + class RwV3d * vertices; // offset 0x8, size 0x4 + class RpVertexNormal * normals; // offset 0xC, size 0x4 + class RwTexCoords * texCoords[8]; // offset 0x10, size 0x20 + class RwRGBA * preLitLum; // offset 0x30, size 0x4 + class RwResEntry * repEntry; // offset 0x34, size 0x4 class RwLinkList collAtomicsInWorldSector; // offset 0x38, size 0x8 class RwLinkList noCollAtomicsInWorldSector; // offset 0x40, size 0x8 class RwLinkList lightsInWorldSector; // offset 0x48, size 0x8 class RwBBox boundingBox; // offset 0x50, size 0x18 class RwBBox tightBoundingBox; // offset 0x68, size 0x18 - class RpMeshHeader* mesh; // offset 0x80, size 0x4 - class RxPipeline* pipeline; // offset 0x84, size 0x4 + class RpMeshHeader * mesh; // offset 0x80, size 0x4 + class RxPipeline * pipeline; // offset 0x84, size 0x4 unsigned short matListWindowBase; // offset 0x88, size 0x2 unsigned short numVertices; // offset 0x8A, size 0x2 unsigned short numPolygons; // offset 0x8C, size 0x2 unsigned short pad; // offset 0x8E, size 0x2 }; -class zPlatFMRunTime -{ +class zPlatFMRunTime { // total size: 0x124 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2464,14 +2234,12 @@ class zPlatFMRunTime float vms[12]; // offset 0xC4, size 0x30 float dss[12]; // offset 0xF4, size 0x30 }; -class zEnt : public xEnt -{ +class zEnt : public xEnt { // total size: 0xD4 public: - class xAnimTable* atbl; // offset 0xD0, size 0x4 + class xAnimTable * atbl; // offset 0xD0, size 0x4 }; -enum en_NPC_MSG_ID -{ +enum en_NPC_MSG_ID { NPC_MID_NONE = 0, NPC_MID_SYSEVENT = 1, NPC_MID_RESPAWN = 2, @@ -2508,8 +2276,7 @@ enum en_NPC_MSG_ID NPC_MID_NOMORE = 33, NPC_MID_FORCE = 2147483647, }; -class xClumpCollBSPBranchNode -{ +class xClumpCollBSPBranchNode { // total size: 0x10 public: unsigned int leftInfo; // offset 0x0, size 0x4 @@ -2517,8 +2284,7 @@ class xClumpCollBSPBranchNode float leftValue; // offset 0x8, size 0x4 float rightValue; // offset 0xC, size 0x4 }; -enum zFragType -{ +enum zFragType { eFragInactive = 0, eFragGroup = 1, eFragShrapnel = 2, @@ -2530,19 +2296,17 @@ enum zFragType eFragCount = 8, eFragForceSize = 2147483647, }; -class xEntMotion -{ +class xEntMotion { // total size: 0x80 public: - class xEntMotionAsset* asset; // offset 0x0, size 0x4 + class xEntMotionAsset * asset; // offset 0x0, size 0x4 unsigned char type; // offset 0x4, size 0x1 unsigned char pad; // offset 0x5, size 0x1 unsigned short flags; // offset 0x6, size 0x2 float t; // offset 0x8, size 0x4 float tmr; // offset 0xC, size 0x4 float d; // offset 0x10, size 0x4 - union - { // inferred + union { // inferred class xEntERData er; // offset 0x20, size 0x44 class xEntOrbitData orb; // offset 0x20, size 0x28 class xEntSplineData spl; // offset 0x20, size 0x4 @@ -2550,23 +2314,20 @@ class xEntMotion class xEntMechData mech; // offset 0x20, size 0x4C class xEntPenData pen; // offset 0x20, size 0x50 }; - class xEnt* owner; // offset 0x70, size 0x4 - class xEnt* target; // offset 0x74, size 0x4 + class xEnt * owner; // offset 0x70, size 0x4 + class xEnt * target; // offset 0x74, size 0x4 }; -class tag_xFile -{ +class tag_xFile { // total size: 0xB4 public: char relname[32]; // offset 0x0, size 0x20 class tag_iFile ps; // offset 0x20, size 0x90 - void* user_data; // offset 0xB0, size 0x4 + void * user_data; // offset 0xB0, size 0x4 }; -class xPSYNote -{ +class xPSYNote { // total size: 0x4 }; -class zNPCSettings : public xDynAsset -{ +class zNPCSettings : public xDynAsset { // total size: 0x2C public: enum en_npcbtyp basisType; // offset 0x10, size 0x4 @@ -2584,31 +2345,27 @@ class zNPCSettings : public xDynAsset float duploSpawnDelay; // offset 0x24, size 0x4 signed int duploSpawnLifeMax; // offset 0x28, size 0x4 }; -class RxHeap -{ +class RxHeap { // total size: 0x1C public: unsigned int superBlockSize; // offset 0x0, size 0x4 - class rxHeapSuperBlockDescriptor* head; // offset 0x4, size 0x4 - class rxHeapBlockHeader* headBlock; // offset 0x8, size 0x4 - class rxHeapFreeBlock* freeBlocks; // offset 0xC, size 0x4 + class rxHeapSuperBlockDescriptor * head; // offset 0x4, size 0x4 + class rxHeapBlockHeader * headBlock; // offset 0x8, size 0x4 + class rxHeapFreeBlock * freeBlocks; // offset 0xC, size 0x4 unsigned int entriesAlloced; // offset 0x10, size 0x4 unsigned int entriesUsed; // offset 0x14, size 0x4 signed int dirty; // offset 0x18, size 0x4 }; -class xPlatformAsset -{ +class xPlatformAsset { // total size: 0x0 }; -class RwBBox -{ +class RwBBox { // total size: 0x18 public: class RwV3d sup; // offset 0x0, size 0xC class RwV3d inf; // offset 0xC, size 0xC }; -class RwRGBA -{ +class RwRGBA { // total size: 0x4 public: unsigned char red; // offset 0x0, size 0x1 @@ -2616,33 +2373,28 @@ class RwRGBA unsigned char blue; // offset 0x2, size 0x1 unsigned char alpha; // offset 0x3, size 0x1 }; -class xClumpCollBSPTriangle -{ +class xClumpCollBSPTriangle { // total size: 0x8 public: - class /* @class */ - { + class /* @class */ { // total size: 0x4 public: - union - { // inferred + union { // inferred class xClumpCollBSPVertInfo i; // offset 0x0, size 0x4 - class RwV3d* p; // offset 0x0, size 0x4 + class RwV3d * p; // offset 0x0, size 0x4 }; } v; // offset 0x0, size 0x4 unsigned char flags; // offset 0x4, size 0x1 unsigned char platData; // offset 0x5, size 0x1 unsigned short matIndex; // offset 0x6, size 0x2 }; -class xEntMotionAsset -{ +class xEntMotionAsset { // total size: 0x30 public: unsigned char type; // offset 0x0, size 0x1 unsigned char use_banking; // offset 0x1, size 0x1 unsigned short flags; // offset 0x2, size 0x2 - union - { // inferred + union { // inferred class xEntMotionERData er; // offset 0x4, size 0x28 class xEntMotionOrbitData orb; // offset 0x4, size 0x18 class xEntMotionSplineData spl; // offset 0x4, size 0x4 @@ -2651,57 +2403,49 @@ class xEntMotionAsset class xEntMotionPenData pen; // offset 0x4, size 0x14 }; }; -class RpMorphTarget -{ +class RpMorphTarget { // total size: 0x1C public: - class RpGeometry* parentGeom; // offset 0x0, size 0x4 + class RpGeometry * parentGeom; // offset 0x0, size 0x4 class RwSphere boundingSphere; // offset 0x4, size 0x10 - class RwV3d* verts; // offset 0x14, size 0x4 - class RwV3d* normals; // offset 0x18, size 0x4 + class RwV3d * verts; // offset 0x14, size 0x4 + class RwV3d * normals; // offset 0x18, size 0x4 }; -class NPCTargetInfo -{ +class NPCTargetInfo { // total size: 0x10 public: - class xBase* bas_tgt; // offset 0x0, size 0x4 + class xBase * bas_tgt; // offset 0x0, size 0x4 class xVec3 pos_tgt; // offset 0x4, size 0xC }; -enum _zPlayerWallJumpState -{ +enum _zPlayerWallJumpState { k_WALLJUMP_NOT = 0, k_WALLJUMP_LAUNCH = 1, k_WALLJUMP_FLIGHT = 2, k_WALLJUMP_LAND = 3, }; -class xCurveAsset -{ +class xCurveAsset { // total size: 0x0 }; -class xQuat -{ +class xQuat { // total size: 0x10 public: class xVec3 v; // offset 0x0, size 0xC float s; // offset 0xC, size 0x4 }; -class RwV3d -{ +class RwV3d { // total size: 0xC public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 float z; // offset 0x8, size 0x4 }; -class RwTexCoords -{ +class RwTexCoords { // total size: 0x8 public: float u; // offset 0x0, size 0x4 float v; // offset 0x4, size 0x4 }; -class zNPCGoalLoopAnim : public zNPCGoalCommon -{ +class zNPCGoalLoopAnim : public zNPCGoalCommon { // total size: 0x6C public: signed int flg_loopanim; // offset 0x4C, size 0x4 @@ -2711,18 +2455,16 @@ class zNPCGoalLoopAnim : public zNPCGoalCommon unsigned int origAnimFlags; // offset 0x64, size 0x4 unsigned int animWeMolested; // offset 0x68, size 0x4 }; -class rxHeapBlockHeader -{ +class rxHeapBlockHeader { // total size: 0x20 public: - class rxHeapBlockHeader* prev; // offset 0x0, size 0x4 - class rxHeapBlockHeader* next; // offset 0x4, size 0x4 + class rxHeapBlockHeader * prev; // offset 0x0, size 0x4 + class rxHeapBlockHeader * next; // offset 0x4, size 0x4 unsigned int size; // offset 0x8, size 0x4 - class rxHeapFreeBlock* freeEntry; // offset 0xC, size 0x4 + class rxHeapFreeBlock * freeEntry; // offset 0xC, size 0x4 unsigned int pad[4]; // offset 0x10, size 0x10 }; -class xEnvAsset : public xBaseAsset -{ +class xEnvAsset : public xBaseAsset { // total size: 0x44 public: unsigned int bspAssetID; // offset 0x8, size 0x4 @@ -2741,12 +2483,10 @@ class xEnvAsset : public xBaseAsset unsigned int bspMapperFXID; // offset 0x3C, size 0x4 float loldHeight; // offset 0x40, size 0x4 }; -struct /* @anon5 */ -{ +struct /* @anon5 */ { // total size: 0xD0 }; -enum PSY_BRAIN_STATUS -{ +enum PSY_BRAIN_STATUS { PSY_STAT_BLANK = 0, PSY_STAT_GROW = 1, PSY_STAT_EXTEND = 2, @@ -2754,20 +2494,17 @@ enum PSY_BRAIN_STATUS PSY_STAT_NOMORE = 4, PSY_STAT_FORCE = 2147483647, }; -struct /* @anon6 */ -{ +struct /* @anon6 */ { // total size: 0xCC }; -class _tagLightningRot -{ +class _tagLightningRot { // total size: 0x48 public: float deg[16]; // offset 0x0, size 0x40 float degrees; // offset 0x40, size 0x4 float height; // offset 0x44, size 0x4 }; -class xEntFrame -{ +class xEntFrame { // total size: 0xF0 public: class xMat4x3 mat; // offset 0x0, size 0x40 @@ -2781,12 +2518,10 @@ class xEntFrame class xVec3 vel; // offset 0xD4, size 0xC unsigned int mode; // offset 0xE0, size 0x4 }; -struct /* @anon7 */ -{ +struct /* @anon7 */ { // total size: 0xD0 }; -class NPCConfig : public xListItem -{ +class NPCConfig : public xListItem { // total size: 0x3B0 public: unsigned int modelID; // offset 0xC, size 0x4 @@ -2822,14 +2557,13 @@ class NPCConfig : public xListItem class xVec3 animFrameRange[9]; // offset 0x318, size 0x6C signed int cnt_esteem[5]; // offset 0x384, size 0x14 float rad_sound; // offset 0x398, size 0x4 - class NPCSndTrax* snd_trax; // offset 0x39C, size 0x4 - class NPCSndTrax* snd_traxShare; // offset 0x3A0, size 0x4 + class NPCSndTrax * snd_trax; // offset 0x39C, size 0x4 + class NPCSndTrax * snd_traxShare; // offset 0x3A0, size 0x4 signed int test_count; // offset 0x3A4, size 0x4 unsigned char talk_filter[4]; // offset 0x3A8, size 0x4 unsigned char talk_filter_size; // offset 0x3AC, size 0x1 }; -enum en_NPC_SOUND -{ +enum en_NPC_SOUND { NPC_STYP_BOGUS = -2, NPC_STYP_LISTEND = 0, NPC_STYP_ENCOUNTER = 1, @@ -2860,8 +2594,7 @@ enum en_NPC_SOUND NPC_STYP_NOMORE = 26, NPC_STYP_FORCE = 2147483647, }; -enum en_GOALSTATE -{ +enum en_GOALSTATE { GOAL_STAT_UNKNOWN = 0, GOAL_STAT_PROCESS = 1, GOAL_STAT_ENTER = 2, @@ -2873,8 +2606,7 @@ enum en_GOALSTATE GOAL_STAT_NOMORE = 8, GOAL_STAT_FORCE = 2147483647, }; -enum _tagRumbleType -{ +enum _tagRumbleType { eRumble_Off = 0, eRumble_Hi = 1, eRumble_VeryLightHi = 2, @@ -2890,43 +2622,37 @@ enum _tagRumbleType eRumble_Total = 12, eRumbleForceU32 = 2147483647, }; -class HiThere : public callback -{ +class HiThere : public callback { // total size: 0x8 public: - class zNPCCommon* npc; // offset 0x4, size 0x4 + class zNPCCommon * npc; // offset 0x4, size 0x4 }; -enum _zPlayerType -{ +enum _zPlayerType { ePlayer_SB = 0, ePlayer_Patrick = 1, ePlayer_Sandy = 2, ePlayer_MAXTYPES = 3, }; -class xEnv -{ +class xEnv { // total size: 0x50 public: - class iEnv* geom; // offset 0x0, size 0x4 + class iEnv * geom; // offset 0x0, size 0x4 class iEnv ienv; // offset 0x10, size 0x30 - class xLightKit* lightKit; // offset 0x40, size 0x4 + class xLightKit * lightKit; // offset 0x40, size 0x4 }; -class xEntSplineData -{ +class xEntSplineData { // total size: 0x4 public: signed int unknown; // offset 0x0, size 0x4 }; -class xPECircle -{ +class xPECircle { // total size: 0x14 public: float radius; // offset 0x0, size 0x4 float deflection; // offset 0x4, size 0x4 class xVec3 dir; // offset 0x8, size 0xC }; -class RpMeshHeader -{ +class RpMeshHeader { // total size: 0x10 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2935,20 +2661,18 @@ class RpMeshHeader unsigned int totalIndicesInMesh; // offset 0x8, size 0x4 unsigned int firstMeshOffset; // offset 0xC, size 0x4 }; -class NPCSysEvent -{ +class NPCSysEvent { // total size: 0x28 public: signed int doLinkEvents; // offset 0x0, size 0x4 signed int handled; // offset 0x4, size 0x4 - class xBase* from; // offset 0x8, size 0x4 - class xBase* to; // offset 0xC, size 0x4 + class xBase * from; // offset 0x8, size 0x4 + class xBase * to; // offset 0xC, size 0x4 unsigned int toEvent; // offset 0x10, size 0x4 float toParam[4]; // offset 0x14, size 0x10 - class xBase* toParamWidget; // offset 0x24, size 0x4 + class xBase * toParamWidget; // offset 0x24, size 0x4 }; -class zLasso -{ +class zLasso { // total size: 0xFC public: unsigned int flags; // offset 0x0, size 0x4 @@ -2975,10 +2699,9 @@ class zLasso unsigned char reindex[5]; // offset 0xC4, size 0x5 class xVec3 anchor; // offset 0xCC, size 0xC class xModelTag tag; // offset 0xD8, size 0x20 - class xModelInstance* model; // offset 0xF8, size 0x4 + class xModelInstance * model; // offset 0xF8, size 0x4 }; -class analog_data -{ +class analog_data { // total size: 0x18 public: class xVec2 offset; // offset 0x0, size 0x8 @@ -2986,8 +2709,7 @@ class analog_data float mag; // offset 0x10, size 0x4 float ang; // offset 0x14, size 0x4 }; -class xEntMotionPenData -{ +class xEntMotionPenData { // total size: 0x14 public: unsigned char flags; // offset 0x0, size 0x1 @@ -2998,48 +2720,41 @@ class xEntMotionPenData float period; // offset 0xC, size 0x4 float phase; // offset 0x10, size 0x4 }; -class NPCDamageInfo -{ +class NPCDamageInfo { // total size: 0x14 public: enum en_NPC_DAMAGE_TYPE dmg_type; // offset 0x0, size 0x4 - class xBase* dmg_from; // offset 0x4, size 0x4 + class xBase * dmg_from; // offset 0x4, size 0x4 class xVec3 vec_dmghit; // offset 0x8, size 0xC }; -class xShadowSimplePoly -{ +class xShadowSimplePoly { // total size: 0x30 public: class xVec3 vert[3]; // offset 0x0, size 0x24 class xVec3 norm; // offset 0x24, size 0xC }; -class xUpdateCullGroup -{ +class xUpdateCullGroup { // total size: 0xC public: unsigned int active; // offset 0x0, size 0x4 unsigned short startIndex; // offset 0x4, size 0x2 unsigned short endIndex; // offset 0x6, size 0x2 - class xGroup* groupObject; // offset 0x8, size 0x4 + class xGroup * groupObject; // offset 0x8, size 0x4 }; -class zFragGroup -{ +class zFragGroup { // total size: 0x54 public: - class zFrag* list[21]; // offset 0x0, size 0x54 + class zFrag * list[21]; // offset 0x0, size 0x54 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x4 public: - union - { // inferred + union { // inferred class xClumpCollBSPVertInfo i; // offset 0x0, size 0x4 - class RwV3d* p; // offset 0x0, size 0x4 + class RwV3d * p; // offset 0x0, size 0x4 }; }; -class xVec4 -{ +class xVec4 { // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -3047,16 +2762,14 @@ class xVec4 float z; // offset 0x8, size 0x4 float w; // offset 0xC, size 0x4 }; -class RwSurfaceProperties -{ +class RwSurfaceProperties { // total size: 0xC public: float ambient; // offset 0x0, size 0x4 float specular; // offset 0x4, size 0x4 float diffuse; // offset 0x8, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x58 public: class xVec3 endPoint[2]; // offset 0x0, size 0x18 @@ -3070,12 +2783,10 @@ class /* @class */ float arc_height; // offset 0x48, size 0x4 class xVec3 arc_normal; // offset 0x4C, size 0xC }; -class zFragInfo -{ +class zFragInfo { // total size: 0x60 public: - union - { // inferred + union { // inferred class zFragGroup group; // offset 0x0, size 0x54 class zFragParticle particle; // offset 0x0, size 0x4 class zFragProjectile projectile; // offset 0x0, size 0x60 @@ -3084,29 +2795,26 @@ class zFragInfo class zFragShockwave shockwave; // offset 0x0, size 0x38 }; }; -class zNPCGoalTalk : public zNPCGoalCommon -{ +class zNPCGoalTalk : public zNPCGoalCommon { // total size: 0x78 public: float tmr_cycleAnim; // offset 0x4C, size 0x4 float tmr_minTalk; // offset 0x50, size 0x4 signed int stopTalking; // offset 0x54, size 0x4 signed int killAndExit; // offset 0x58, size 0x4 - class xSFX* sfx_curTalk; // offset 0x5C, size 0x4 + class xSFX * sfx_curTalk; // offset 0x5C, size 0x4 unsigned int aid_curSound; // offset 0x60, size 0x4 class xVec3 pos_maintain; // offset 0x64, size 0xC - void* jawdata; // offset 0x70, size 0x4 + void * jawdata; // offset 0x70, size 0x4 float jawtime; // offset 0x74, size 0x4 }; -class RpTriangle -{ +class RpTriangle { // total size: 0x8 public: unsigned short vertIndex[3]; // offset 0x0, size 0x6 signed short matIndex; // offset 0x6, size 0x2 }; -class xCutsceneInfo -{ +class xCutsceneInfo { // total size: 0x50 public: unsigned int Magic; // offset 0x0, size 0x4 @@ -3124,55 +2832,50 @@ class xCutsceneInfo char SoundLeft[16]; // offset 0x30, size 0x10 char SoundRight[16]; // offset 0x40, size 0x10 }; -class xListItem -{ +class xListItem { // total size: 0xC public: signed int flg_travFilter; // offset 0x0, size 0x4 - class NPCConfig* next; // offset 0x4, size 0x4 - class NPCConfig* prev; // offset 0x8, size 0x4 + class NPCConfig * next; // offset 0x4, size 0x4 + class NPCConfig * prev; // offset 0x8, size 0x4 }; -class rxReq -{ +class rxReq { // total size: 0x0 }; -class zCheckPoint -{ +class zCheckPoint { // total size: 0x14 public: class xVec3 pos; // offset 0x0, size 0xC float rot; // offset 0xC, size 0x4 unsigned int initCamID; // offset 0x10, size 0x4 }; -class xEntMPData -{ +class xEntMPData { // total size: 0x40 public: float curdist; // offset 0x0, size 0x4 float speed; // offset 0x4, size 0x4 - class xMovePoint* dest; // offset 0x8, size 0x4 - class xMovePoint* src; // offset 0xC, size 0x4 - class xSpline3* spl; // offset 0x10, size 0x4 + class xMovePoint * dest; // offset 0x8, size 0x4 + class xMovePoint * src; // offset 0xC, size 0x4 + class xSpline3 * spl; // offset 0x10, size 0x4 float dist; // offset 0x14, size 0x4 unsigned int padalign; // offset 0x18, size 0x4 class xQuat aquat; // offset 0x20, size 0x10 class xQuat bquat; // offset 0x30, size 0x10 }; -class zPlayerGlobals -{ +class zPlayerGlobals { // total size: 0x1940 public: class zEnt ent; // offset 0x0, size 0xD4 class xEntShadow entShadow_embedded; // offset 0xD4, size 0x28 class xShadowSimpleCache simpShadow_embedded; // offset 0xFC, size 0x98 class zGlobalSettings g; // offset 0x194, size 0x150 - class zPlayerSettings* s; // offset 0x2E4, size 0x4 + class zPlayerSettings * s; // offset 0x2E4, size 0x4 class zPlayerSettings sb; // offset 0x2F0, size 0x460 class zPlayerSettings patrick; // offset 0x750, size 0x460 class zPlayerSettings sandy; // offset 0xBB0, size 0x460 - class xModelInstance* model_spongebob; // offset 0x1010, size 0x4 - class xModelInstance* model_patrick; // offset 0x1014, size 0x4 - class xModelInstance* model_sandy; // offset 0x1018, size 0x4 + class xModelInstance * model_spongebob; // offset 0x1010, size 0x4 + class xModelInstance * model_patrick; // offset 0x1014, size 0x4 + class xModelInstance * model_sandy; // offset 0x1018, size 0x4 unsigned int Visible; // offset 0x101C, size 0x4 unsigned int Health; // offset 0x1020, size 0x4 signed int Speed; // offset 0x1024, size 0x4 @@ -3194,7 +2897,7 @@ class zPlayerGlobals float HotsauceTimer; // offset 0x1064, size 0x4 float LeanLerp; // offset 0x1068, size 0x4 float ScareTimer; // offset 0x106C, size 0x4 - class xBase* ScareSource; // offset 0x1070, size 0x4 + class xBase * ScareSource; // offset 0x1070, size 0x4 float CowerTimer; // offset 0x1074, size 0x4 float DamageTimer; // offset 0x1078, size 0x4 float SundaeTimer; // offset 0x107C, size 0x4 @@ -3206,7 +2909,7 @@ class zPlayerGlobals float HeadbuttVel; // offset 0x1094, size 0x4 float HeadbuttTimer; // offset 0x1098, size 0x4 unsigned int SpecialReceived; // offset 0x109C, size 0x4 - class xEnt* MountChimney; // offset 0x10A0, size 0x4 + class xEnt * MountChimney; // offset 0x10A0, size 0x4 float MountChimOldY; // offset 0x10A4, size 0x4 unsigned int MaxHealth; // offset 0x10A8, size 0x4 unsigned int DoMeleeCheck; // offset 0x10AC, size 0x4 @@ -3227,24 +2930,24 @@ class zPlayerGlobals float IdleMajorTimer; // offset 0x10E8, size 0x4 float IdleSitTimer; // offset 0x10EC, size 0x4 signed int Transparent; // offset 0x10F0, size 0x4 - class zEnt* FireTarget; // offset 0x10F4, size 0x4 + class zEnt * FireTarget; // offset 0x10F4, size 0x4 unsigned int ControlOff; // offset 0x10F8, size 0x4 unsigned int ControlOnEvent; // offset 0x10FC, size 0x4 unsigned int AutoMoveSpeed; // offset 0x1100, size 0x4 float AutoMoveDist; // offset 0x1104, size 0x4 class xVec3 AutoMoveTarget; // offset 0x1108, size 0xC - class xBase* AutoMoveObject; // offset 0x1114, size 0x4 - class zEnt* Diggable; // offset 0x1118, size 0x4 + class xBase * AutoMoveObject; // offset 0x1114, size 0x4 + class zEnt * Diggable; // offset 0x1118, size 0x4 float DigTimer; // offset 0x111C, size 0x4 class zPlayerCarryInfo carry; // offset 0x1120, size 0xE0 class zPlayerLassoInfo lassoInfo; // offset 0x1200, size 0x120 class xModelTag BubbleWandTag[2]; // offset 0x1320, size 0x40 - class xModelInstance* model_wand; // offset 0x1360, size 0x4 - class xEntBoulder* bubblebowl; // offset 0x1364, size 0x4 + class xModelInstance * model_wand; // offset 0x1360, size 0x4 + class xEntBoulder * bubblebowl; // offset 0x1364, size 0x4 float bbowlInitVel; // offset 0x1368, size 0x4 - class zEntHangable* HangFound; // offset 0x136C, size 0x4 - class zEntHangable* HangEnt; // offset 0x1370, size 0x4 - class zEntHangable* HangEntLast; // offset 0x1374, size 0x4 + class zEntHangable * HangFound; // offset 0x136C, size 0x4 + class zEntHangable * HangEnt; // offset 0x1370, size 0x4 + class zEntHangable * HangEntLast; // offset 0x1374, size 0x4 class xVec3 HangPivot; // offset 0x1378, size 0xC class xVec3 HangVel; // offset 0x1384, size 0xC float HangLength; // offset 0x1390, size 0x4 @@ -3259,7 +2962,7 @@ class zPlayerGlobals signed int Jump_CanDouble; // offset 0x1438, size 0x4 signed int Jump_CanFloat; // offset 0x143C, size 0x4 signed int Jump_SpringboardStart; // offset 0x1440, size 0x4 - class zPlatform* Jump_Springboard; // offset 0x1444, size 0x4 + class zPlatform * Jump_Springboard; // offset 0x1444, size 0x4 signed int CanJump; // offset 0x1448, size 0x4 signed int CanBubbleSpin; // offset 0x144C, size 0x4 signed int CanBubbleBounce; // offset 0x1450, size 0x4 @@ -3284,7 +2987,7 @@ class zPlayerGlobals unsigned int Inv_PatsSock_Total; // offset 0x1544, size 0x4 class xModelTag BubbleTag; // offset 0x1548, size 0x20 class xEntDrive drv; // offset 0x1568, size 0x7C - class xSurface* floor_surf; // offset 0x15E4, size 0x4 + class xSurface * floor_surf; // offset 0x15E4, size 0x4 class xVec3 floor_norm; // offset 0x15E8, size 0xC signed int slope; // offset 0x15F4, size 0x4 class xCollis earc_coll; // offset 0x15F8, size 0x50 @@ -3297,7 +3000,7 @@ class zPlayerGlobals class zCheckPoint cp; // offset 0x16B8, size 0x14 unsigned int SlideTrackSliding; // offset 0x16CC, size 0x4 unsigned int SlideTrackCount; // offset 0x16D0, size 0x4 - class xEnt* SlideTrackEnt[111]; // offset 0x16D4, size 0x1BC + class xEnt * SlideTrackEnt[111]; // offset 0x16D4, size 0x1BC unsigned int SlideNotGroundedSinceSlide; // offset 0x1890, size 0x4 class xVec3 SlideTrackDir; // offset 0x1894, size 0xC class xVec3 SlideTrackVel; // offset 0x18A0, size 0xC @@ -3305,7 +3008,7 @@ class zPlayerGlobals float SlideTrackLean; // offset 0x18B0, size 0x4 float SlideTrackLand; // offset 0x18B4, size 0x4 unsigned char sb_model_indices[14]; // offset 0x18B8, size 0xE - class xModelInstance* sb_models[14]; // offset 0x18C8, size 0x38 + class xModelInstance * sb_models[14]; // offset 0x18C8, size 0x38 unsigned int currentPlayer; // offset 0x1900, size 0x4 class xVec3 PredictRotate; // offset 0x1904, size 0xC class xVec3 PredictTranslate; // offset 0x1910, size 0xC @@ -3315,15 +3018,13 @@ class zPlayerGlobals float KnockBackTimer; // offset 0x1930, size 0x4 float KnockIntoAirTimer; // offset 0x1934, size 0x4 }; -enum RxClusterValidityReq -{ +enum RxClusterValidityReq { rxCLREQ_DONTWANT = 0, rxCLREQ_REQUIRED = 1, rxCLREQ_OPTIONAL = 2, rxCLUSTERVALIDITYREQFORCEENUMSIZEINT = 2147483647, }; -enum en_npcbtyp -{ +enum en_npcbtyp { NPCP_BASIS_NONE = 0, NPCP_BASIS_EVILROBOT = 1, NPCP_BASIS_FRIENDLYROBOT = 2, @@ -3332,16 +3033,14 @@ enum en_npcbtyp NPCP_BASIS_NOMORE = 5, NPCP_BASIS_FORCE = 2147483647, }; -class _tagLightningZeus -{ +class _tagLightningZeus { // total size: 0xC public: float normal_offset; // offset 0x0, size 0x4 float back_offset; // offset 0x4, size 0x4 float side_offset; // offset 0x8, size 0x4 }; -class xBaseAsset -{ +class xBaseAsset { // total size: 0x8 public: unsigned int id; // offset 0x0, size 0x4 @@ -3349,30 +3048,26 @@ class xBaseAsset unsigned char linkCount; // offset 0x5, size 0x1 unsigned short baseFlags; // offset 0x6, size 0x2 }; -class xShadowPoly -{ +class xShadowPoly { // total size: 0x30 public: class xVec3 vert[3]; // offset 0x0, size 0x24 class xVec3 norm; // offset 0x24, size 0xC }; -class zNPCGoalSpeak : public zNPCGoalCommon -{ +class zNPCGoalSpeak : public zNPCGoalCommon { // total size: 0x64 public: float tmr_cycleAnim; // offset 0x4C, size 0x4 class xVec3 pos_maintain; // offset 0x50, size 0xC - void* jawdata; // offset 0x5C, size 0x4 + void * jawdata; // offset 0x5C, size 0x4 float jawtime; // offset 0x60, size 0x4 }; -class _tagEmitSphere -{ +class _tagEmitSphere { // total size: 0x4 public: float radius; // offset 0x0, size 0x4 }; -enum en_npctgt -{ +enum en_npctgt { NPC_TGT_NONE = 0, NPC_TGT_PLYR = 1, NPC_TGT_ENT = 2, @@ -3382,8 +3077,7 @@ enum en_npctgt NPC_TGT_NOMORE = 6, NPC_TGT_FORCEINT = 2147483647, }; -class xLightKitLight -{ +class xLightKitLight { // total size: 0x60 public: unsigned int type; // offset 0x0, size 0x4 @@ -3391,30 +3085,28 @@ class xLightKitLight float matrix[16]; // offset 0x14, size 0x40 float radius; // offset 0x54, size 0x4 float angle; // offset 0x58, size 0x4 - class RpLight* platLight; // offset 0x5C, size 0x4 + class RpLight * platLight; // offset 0x5C, size 0x4 }; -class iEnv -{ +class iEnv { // total size: 0x30 public: - class RpWorld* world; // offset 0x0, size 0x4 - class RpWorld* collision; // offset 0x4, size 0x4 - class RpWorld* fx; // offset 0x8, size 0x4 - class RpWorld* camera; // offset 0xC, size 0x4 - class xJSPHeader* jsp; // offset 0x10, size 0x4 - class RpLight* light[2]; // offset 0x14, size 0x8 - class RwFrame* light_frame[2]; // offset 0x1C, size 0x8 + class RpWorld * world; // offset 0x0, size 0x4 + class RpWorld * collision; // offset 0x4, size 0x4 + class RpWorld * fx; // offset 0x8, size 0x4 + class RpWorld * camera; // offset 0xC, size 0x4 + class xJSPHeader * jsp; // offset 0x10, size 0x4 + class RpLight * light[2]; // offset 0x14, size 0x8 + class RwFrame * light_frame[2]; // offset 0x1C, size 0x8 signed int memlvl; // offset 0x24, size 0x4 }; -class zPlayerCarryInfo -{ +class zPlayerCarryInfo { // total size: 0xE0 public: - class xEnt* grabbed; // offset 0x0, size 0x4 + class xEnt * grabbed; // offset 0x0, size 0x4 unsigned int grabbedModelID; // offset 0x4, size 0x4 class xMat4x3 spin; // offset 0x10, size 0x40 - class xEnt* throwTarget; // offset 0x50, size 0x4 - class xEnt* flyingToTarget; // offset 0x54, size 0x4 + class xEnt * throwTarget; // offset 0x50, size 0x4 + class xEnt * flyingToTarget; // offset 0x54, size 0x4 float minDist; // offset 0x58, size 0x4 float maxDist; // offset 0x5C, size 0x4 float minHeight; // offset 0x60, size 0x4 @@ -3444,24 +3136,21 @@ class zPlayerCarryInfo float fruitCeilingBounce; // offset 0xC8, size 0x4 float fruitWallBounce; // offset 0xCC, size 0x4 float fruitLifetime; // offset 0xD0, size 0x4 - class xEnt* patLauncher; // offset 0xD4, size 0x4 + class xEnt * patLauncher; // offset 0xD4, size 0x4 }; -class XGOFTypeInfo -{ +class XGOFTypeInfo { // total size: 0xC public: signed int tid; // offset 0x0, size 0x4 - class xFactoryInst* (*creator)(signed int, class RyzMemGrow*, void*); // offset 0x4, size 0x4 - void (*destroyer)(class xFactoryInst*); // offset 0x8, size 0x4 + class xFactoryInst * (* creator)(signed int, class RyzMemGrow *, void *); // offset 0x4, size 0x4 + void (* destroyer)(class xFactoryInst *); // offset 0x8, size 0x4 }; -class zFragParticle -{ +class zFragParticle { // total size: 0x4 public: - class zFragParticleAsset* fasset; // offset 0x0, size 0x4 + class zFragParticleAsset * fasset; // offset 0x0, size 0x4 }; -class xShadowSimpleCache -{ +class xShadowSimpleCache { // total size: 0x98 public: unsigned short flags; // offset 0x0, size 0x2 @@ -3470,7 +3159,7 @@ class xShadowSimpleCache unsigned int collPriority; // offset 0x4, size 0x4 class xVec3 pos; // offset 0x8, size 0xC class xVec3 at; // offset 0x14, size 0xC - class xEnt* castOnEnt; // offset 0x20, size 0x4 + class xEnt * castOnEnt; // offset 0x20, size 0x4 class xShadowSimplePoly poly; // offset 0x24, size 0x30 float envHeight; // offset 0x54, size 0x4 float shadowHeight; // offset 0x58, size 0x4 @@ -3479,8 +3168,7 @@ class xShadowSimpleCache float dydz; // offset 0x64, size 0x4 class xVec3 corner[4]; // offset 0x68, size 0x30 }; -class zPlayerSettings -{ +class zPlayerSettings { // total size: 0x460 public: enum _zPlayerType pcType; // offset 0x0, size 0x4 @@ -3507,14 +3195,12 @@ class zPlayerSettings unsigned char talk_filter_size; // offset 0x459, size 0x1 unsigned char talk_filter[4]; // offset 0x45A, size 0x4 }; -enum RxNodeDefEditable -{ +enum RxNodeDefEditable { rxNODEDEFCONST = 0, rxNODEDEFEDITABLE = 1, rxNODEDEFEDITABLEFORCEENUMSIZEINT = 2147483647, }; -class xCutsceneTime -{ +class xCutsceneTime { // total size: 0x10 public: float StartTime; // offset 0x0, size 0x4 @@ -3522,22 +3208,19 @@ class xCutsceneTime unsigned int NumData; // offset 0x8, size 0x4 unsigned int ChunkIndex; // offset 0xC, size 0x4 }; -enum RxClusterValid -{ +enum RxClusterValid { rxCLVALID_NOCHANGE = 0, rxCLVALID_VALID = 1, rxCLVALID_INVALID = 2, rxCLUSTERVALIDFORCEENUMSIZEINT = 2147483647, }; -class xAnimTransitionList -{ +class xAnimTransitionList { // total size: 0x8 public: - class xAnimTransitionList* Next; // offset 0x0, size 0x4 - class xAnimTransition* T; // offset 0x4, size 0x4 + class xAnimTransitionList * Next; // offset 0x0, size 0x4 + class xAnimTransition * T; // offset 0x4, size 0x4 }; -class xEntMotionERData -{ +class xEntMotionERData { // total size: 0x28 public: class xVec3 ret_pos; // offset 0x0, size 0xC @@ -3547,74 +3230,64 @@ class xEntMotionERData float ret_tm; // offset 0x20, size 0x4 float ret_wait_tm; // offset 0x24, size 0x4 }; -class NPCStunInfo -{ +class NPCStunInfo { // total size: 0xC public: float tym_stuntime; // offset 0x0, size 0x4 enum en_NPC_CARRY_STATE carrystate; // offset 0x4, size 0x4 signed int allowStun; // offset 0x8, size 0x4 }; -class say_data -{ +class say_data { // total size: 0x8 public: signed int total; // offset 0x0, size 0x4 signed int prev_total; // offset 0x4, size 0x4 }; -class xJSPNodeInfo -{ +class xJSPNodeInfo { // total size: 0x8 public: signed int originalMatIndex; // offset 0x0, size 0x4 signed int nodeFlags; // offset 0x4, size 0x4 }; -class zFragParticleAsset : public zFragAsset -{ +class zFragParticleAsset : public zFragAsset { // total size: 0x1D4 public: class zFragLocation source; // offset 0x18, size 0x24 class zFragLocation vel; // offset 0x3C, size 0x24 class xParEmitterCustomSettings emit; // offset 0x60, size 0x16C unsigned int parEmitterID; // offset 0x1CC, size 0x4 - class zParEmitter* parEmitter; // offset 0x1D0, size 0x4 + class zParEmitter * parEmitter; // offset 0x1D0, size 0x4 }; -class xModelTag -{ +class xModelTag { // total size: 0x20 public: class xVec3 v; // offset 0x0, size 0xC unsigned int matidx; // offset 0xC, size 0x4 float wt[4]; // offset 0x10, size 0x10 }; -class xRot -{ +class xRot { // total size: 0x10 public: class xVec3 axis; // offset 0x0, size 0xC float angle; // offset 0xC, size 0x4 }; -class xCoef -{ +class xCoef { // total size: 0x10 public: float a[4]; // offset 0x0, size 0x10 }; -class xCutsceneData -{ +class xCutsceneData { // total size: 0x10 public: unsigned int DataType; // offset 0x0, size 0x4 unsigned int AssetID; // offset 0x4, size 0x4 unsigned int ChunkSize; // offset 0x8, size 0x4 - union - { // inferred + union { // inferred unsigned int FileOffset; // offset 0xC, size 0x4 - void* DataPtr; // offset 0xC, size 0x4 + void * DataPtr; // offset 0xC, size 0x4 }; }; -enum state_enum -{ +enum state_enum { STATE_INVALID = -1, STATE_BEGIN = 0, STATE_DESCRIPTION = 1, @@ -3624,34 +3297,29 @@ enum state_enum STATE_END = 5, MAX_STATE = 6, }; -struct /* @anon8 */ -{ +struct /* @anon8 */ { // total size: 0x54 }; -enum rxEmbeddedPacketState -{ +enum rxEmbeddedPacketState { rxPKST_PACKETLESS = 0, rxPKST_UNUSED = 1, rxPKST_INUSE = 2, rxPKST_PENDING = 3, rxEMBEDDEDPACKETSTATEFORCEENUMSIZEINT = 2147483647, }; -class _tagEmitRect -{ +class _tagEmitRect { // total size: 0x8 public: float x_len; // offset 0x0, size 0x4 float z_len; // offset 0x4, size 0x4 }; -class xSphere -{ +class xSphere { // total size: 0x10 public: class xVec3 center; // offset 0x0, size 0xC float r; // offset 0xC, size 0x4 }; -class xShadowCache -{ +class xShadowCache { // total size: 0x3070 public: class xVec3 pos; // offset 0x0, size 0xC @@ -3661,23 +3329,22 @@ class xShadowCache float polyRayDepth[5]; // offset 0x18, size 0x14 unsigned short castOnEnt; // offset 0x2C, size 0x2 unsigned short castOnPoly; // offset 0x2E, size 0x2 - class xEnt* ent[16]; // offset 0x30, size 0x40 + class xEnt * ent[16]; // offset 0x30, size 0x40 class xShadowPoly poly[256]; // offset 0x70, size 0x3000 }; -class xCamera : public xBase -{ +class xCamera : public xBase { // total size: 0x330 public: - class RwCamera* lo_cam; // offset 0x10, size 0x4 + class RwCamera * lo_cam; // offset 0x10, size 0x4 class xMat4x3 mat; // offset 0x20, size 0x40 class xMat4x3 omat; // offset 0x60, size 0x40 class xMat3x3 mbasis; // offset 0xA0, size 0x30 class xBound bound; // offset 0xD0, size 0x4C - class xMat4x3* tgt_mat; // offset 0x11C, size 0x4 - class xMat4x3* tgt_omat; // offset 0x120, size 0x4 - class xBound* tgt_bound; // offset 0x124, size 0x4 + class xMat4x3 * tgt_mat; // offset 0x11C, size 0x4 + class xMat4x3 * tgt_omat; // offset 0x120, size 0x4 + class xBound * tgt_bound; // offset 0x124, size 0x4 class xVec3 focus; // offset 0x128, size 0xC - class xScene* sc; // offset 0x134, size 0x4 + class xScene * sc; // offset 0x134, size 0x4 class xVec3 tran_accum; // offset 0x138, size 0xC float fov; // offset 0x144, size 0x4 unsigned int flags; // offset 0x148, size 0x4 @@ -3745,66 +3412,56 @@ class xCamera : public xBase float roll_csv; // offset 0x264, size 0x4 class xVec4 frustplane[12]; // offset 0x270, size 0xC0 }; -class xBound -{ +class xBound { // total size: 0x4C public: class xQCData qcd; // offset 0x0, size 0x20 unsigned char type; // offset 0x20, size 0x1 unsigned char pad[3]; // offset 0x21, size 0x3 - union - { // inferred + union { // inferred class xSphere sph; // offset 0x24, size 0x10 class xBBox box; // offset 0x24, size 0x24 class xCylinder cyl; // offset 0x24, size 0x14 }; - class xMat4x3* mat; // offset 0x48, size 0x4 + class xMat4x3 * mat; // offset 0x48, size 0x4 }; -enum RwCameraProjection -{ +enum RwCameraProjection { rwNACAMERAPROJECTION = 0, rwPERSPECTIVE = 1, rwPARALLEL = 2, rwCAMERAPROJECTIONFORCEENUMSIZEINT = 2147483647, }; -enum RpWorldRenderOrder -{ +enum RpWorldRenderOrder { rpWORLDRENDERNARENDERORDER = 0, rpWORLDRENDERFRONT2BACK = 1, rpWORLDRENDERBACK2FRONT = 2, rpWORLDRENDERORDERFORCEENUMSIZEINT = 2147483647, }; -struct /* @anon9 */ -{ +struct /* @anon9 */ { // total size: 0x10 }; -enum RxClusterForcePresent -{ +enum RxClusterForcePresent { rxCLALLOWABSENT = 0, rxCLFORCEPRESENT = 1, rxCLUSTERFORCEPRESENTFORCEENUMSIZEINT = 2147483647, }; -enum en_dupowavmod -{ +enum en_dupowavmod { NPCP_DUPOWAVE_CONTINUOUS = 0, NPCP_DUPOWAVE_DISCREET = 1, NPCP_DUPOWAVE_NOMORE = 2, NPCP_DUPOWAVE_FORCE = 2147483647, }; -struct /* @anon10 */ -{ +struct /* @anon10 */ { // total size: 0xD0 }; -class xCylinder -{ +class xCylinder { // total size: 0x14 public: class xVec3 center; // offset 0x0, size 0xC float r; // offset 0xC, size 0x4 float h; // offset 0x10, size 0x4 }; -enum en_LASSO_STATUS -{ +enum en_LASSO_STATUS { LASS_STAT_DONE = 0, LASS_STAT_PENDING = 1, LASS_STAT_GRABBING = 2, @@ -3812,12 +3469,11 @@ enum en_LASSO_STATUS LASS_STAT_NOMORE = 4, LASS_STAT_FORCEINT = 2147483647, }; -class zFragProjectile -{ +class zFragProjectile { // total size: 0x60 public: - class zFragProjectileAsset* fasset; // offset 0x0, size 0x4 - class xModelInstance* model; // offset 0x4, size 0x4 + class zFragProjectileAsset * fasset; // offset 0x0, size 0x4 + class xModelInstance * model; // offset 0x4, size 0x4 class xParabola path; // offset 0x8, size 0x24 float angVel; // offset 0x2C, size 0x4 float t; // offset 0x30, size 0x4 @@ -3829,8 +3485,7 @@ class zFragProjectile class xVec3 N; // offset 0x48, size 0xC class xVec3 axis; // offset 0x54, size 0xC }; -class xParabola -{ +class xParabola { // total size: 0x24 public: class xVec3 initPos; // offset 0x0, size 0xC @@ -3839,8 +3494,7 @@ class xParabola float minTime; // offset 0x1C, size 0x4 float maxTime; // offset 0x20, size 0x4 }; -class xParEmitterCustomSettings : public xParEmitterPropsAsset -{ +class xParEmitterCustomSettings : public xParEmitterPropsAsset { // total size: 0x16C public: unsigned int custom_flags; // offset 0x138, size 0x4 @@ -3852,40 +3506,35 @@ class xParEmitterCustomSettings : public xParEmitterPropsAsset unsigned char padding; // offset 0x15F, size 0x1 float radius; // offset 0x160, size 0x4 float emit_interval_current; // offset 0x164, size 0x4 - void* emit_volume; // offset 0x168, size 0x4 + void * emit_volume; // offset 0x168, size 0x4 }; -enum _CurrentPlayer -{ +enum _CurrentPlayer { eCurrentPlayerSpongeBob = 0, eCurrentPlayerPatrick = 1, eCurrentPlayerSandy = 2, eCurrentPlayerCount = 3, }; -class xVec2 -{ +class xVec2 { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class xBox -{ +class xBox { // total size: 0x18 public: class xVec3 upper; // offset 0x0, size 0xC class xVec3 lower; // offset 0xC, size 0xC }; -class RxClusterDefinition -{ +class RxClusterDefinition { // total size: 0x10 public: - char* name; // offset 0x0, size 0x4 + char * name; // offset 0x0, size 0x4 unsigned int defaultStride; // offset 0x4, size 0x4 unsigned int defaultAttributes; // offset 0x8, size 0x4 - char* attributeSet; // offset 0xC, size 0x4 + char * attributeSet; // offset 0xC, size 0x4 }; -class xQCData -{ +class xQCData { // total size: 0x20 public: signed char xmin; // offset 0x0, size 0x1 @@ -3899,46 +3548,40 @@ class xQCData class xVec3 min; // offset 0x8, size 0xC class xVec3 max; // offset 0x14, size 0xC }; -class NPCScriptInfo -{ +class NPCScriptInfo { // total size: 0x4 public: unsigned int aid_playanim; // offset 0x0, size 0x4 }; -class RpSector -{ +class RpSector { // total size: 0x4 public: signed int type; // offset 0x0, size 0x4 }; -class xModelBucket -{ +class xModelBucket { // total size: 0x14 public: - class RpAtomic* Data; // offset 0x0, size 0x4 - class RpAtomic* OriginalData; // offset 0x4, size 0x4 - class xModelInstance* List; // offset 0x8, size 0x4 + class RpAtomic * Data; // offset 0x0, size 0x4 + class RpAtomic * OriginalData; // offset 0x4, size 0x4 + class xModelInstance * List; // offset 0x8, size 0x4 signed int ClipFlags; // offset 0xC, size 0x4 unsigned int PipeFlags; // offset 0x10, size 0x4 }; -class st_XORDEREDARRAY -{ +class st_XORDEREDARRAY { // total size: 0x10 public: - void** list; // offset 0x0, size 0x4 + void * * list; // offset 0x0, size 0x4 signed int cnt; // offset 0x4, size 0x4 signed int max; // offset 0x8, size 0x4 signed int warnlvl; // offset 0xC, size 0x4 }; -class xBBox -{ +class xBBox { // total size: 0x24 public: class xVec3 center; // offset 0x0, size 0xC class xBox box; // offset 0xC, size 0x18 }; -enum en_NPC_DAMAGE_TYPE -{ +enum en_NPC_DAMAGE_TYPE { DMGTYP_UNDECIDED = 0, DMGTYP_ABOVE = 1, DMGTYP_BELOW = 2, @@ -3959,12 +3602,10 @@ enum en_NPC_DAMAGE_TYPE DMGTYP_NOMORE = 17, DMGTYP_FORCEINT = 2147483647, }; -struct /* @anon11 */ -{ +struct /* @anon11 */ { // total size: 0xD0 }; -class xPEEntBound -{ +class xPEEntBound { // total size: 0xC public: unsigned char flags; // offset 0x0, size 0x1 @@ -3974,8 +3615,7 @@ class xPEEntBound float expand; // offset 0x4, size 0x4 float deflection; // offset 0x8, size 0x4 }; -enum zFragLocType -{ +enum zFragLocType { eFragLocBone = 0, eFragLocBoneUpdated = 1, eFragLocBoneLocal = 2, @@ -3985,8 +3625,7 @@ enum zFragLocType eFragLocCount = 6, eFragLocForceSize = 2147483647, }; -class xEntMotionOrbitData -{ +class xEntMotionOrbitData { // total size: 0x18 public: class xVec3 center; // offset 0x0, size 0xC @@ -3994,29 +3633,25 @@ class xEntMotionOrbitData float h; // offset 0x10, size 0x4 float period; // offset 0x14, size 0x4 }; -class _tagEmitLine -{ +class _tagEmitLine { // total size: 0x1C public: class xVec3 pos1; // offset 0x0, size 0xC class xVec3 pos2; // offset 0xC, size 0xC float radius; // offset 0x18, size 0x4 }; -class RwSphere -{ +class RwSphere { // total size: 0x10 public: class RwV3d center; // offset 0x0, size 0xC float radius; // offset 0xC, size 0x4 }; -class _zEnv : public xBase -{ +class _zEnv : public xBase { // total size: 0x14 public: - class xEnvAsset* easset; // offset 0x10, size 0x4 + class xEnvAsset * easset; // offset 0x10, size 0x4 }; -class iFogParams -{ +class iFogParams { // total size: 0x1C public: enum RwFogType type; // offset 0x0, size 0x4 @@ -4025,43 +3660,37 @@ class iFogParams float density; // offset 0xC, size 0x4 class RwRGBA fogcolor; // offset 0x10, size 0x4 class RwRGBA bgcolor; // offset 0x14, size 0x4 - unsigned char* table; // offset 0x18, size 0x4 + unsigned char * table; // offset 0x18, size 0x4 }; -enum _tagPadState -{ +enum _tagPadState { ePad_Disabled = 0, ePad_DisabledError = 1, ePad_Enabled = 2, ePad_Missing = 3, ePad_Total = 4, }; -class NPCTarget -{ +class NPCTarget { // total size: 0x14 public: enum en_npctgt typ_target; // offset 0x0, size 0x4 - union - { // inferred - class xEnt* ent_target; // offset 0x4, size 0x4 - class xBase* bas_target; // offset 0x4, size 0x4 + union { // inferred + class xEnt * ent_target; // offset 0x4, size 0x4 + class xBase * bas_target; // offset 0x4, size 0x4 class xVec3 pos_target; // offset 0x4, size 0xC - class zMovePoint* nav_target; // offset 0x4, size 0x4 + class zMovePoint * nav_target; // offset 0x4, size 0x4 }; - class zNPCCommon* npc_owner; // offset 0x10, size 0x4 + class zNPCCommon * npc_owner; // offset 0x10, size 0x4 }; -class anim_coll_data -{ +class anim_coll_data { // total size: 0x0 }; -class NPCMountInfo -{ +class NPCMountInfo { // total size: 0x8 public: - class xEnt* ent_toMount; // offset 0x0, size 0x4 - class xCollis* col_forMount; // offset 0x4, size 0x4 + class xEnt * ent_toMount; // offset 0x0, size 0x4 + class xCollis * col_forMount; // offset 0x4, size 0x4 }; -enum _SDRenderState -{ +enum _SDRenderState { SDRS_Unknown = 0, SDRS_Default = 1, SDRS_OpaqueModels = 2, @@ -4087,8 +3716,7 @@ enum _SDRenderState SDRS_DiscoFloorGlow = 22, SDRS_Total = -1, }; -class xCutsceneZbuffer -{ +class xCutsceneZbuffer { // total size: 0x10 public: float start; // offset 0x0, size 0x4 @@ -4096,8 +3724,7 @@ class xCutsceneZbuffer float nearPlane; // offset 0x8, size 0x4 float farPlane; // offset 0xC, size 0x4 }; -class basic_rect -{ +class basic_rect { // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -4105,21 +3732,20 @@ class basic_rect float w; // offset 0x8, size 0x4 float h; // offset 0xC, size 0x4 }; -class xGlobals -{ +class xGlobals { // total size: 0x700 public: class xCamera camera; // offset 0x0, size 0x330 - class _tagxPad* pad0; // offset 0x330, size 0x4 - class _tagxPad* pad1; // offset 0x334, size 0x4 - class _tagxPad* pad2; // offset 0x338, size 0x4 - class _tagxPad* pad3; // offset 0x33C, size 0x4 + class _tagxPad * pad0; // offset 0x330, size 0x4 + class _tagxPad * pad1; // offset 0x334, size 0x4 + class _tagxPad * pad2; // offset 0x338, size 0x4 + class _tagxPad * pad3; // offset 0x33C, size 0x4 signed int profile; // offset 0x340, size 0x4 char profFunc[6][128]; // offset 0x344, size 0x300 - class xUpdateCullMgr* updateMgr; // offset 0x644, size 0x4 + class xUpdateCullMgr * updateMgr; // offset 0x644, size 0x4 signed int sceneFirst; // offset 0x648, size 0x4 char sceneStart[32]; // offset 0x64C, size 0x20 - class RpWorld* currWorld; // offset 0x66C, size 0x4 + class RpWorld * currWorld; // offset 0x66C, size 0x4 class iFogParams fog; // offset 0x670, size 0x1C class iFogParams fogA; // offset 0x68C, size 0x1C class iFogParams fogB; // offset 0x6A8, size 0x1C @@ -4136,8 +3762,7 @@ class xGlobals unsigned char dontShowPadMessageDuringLoadingOrCutScene; // offset 0x6F0, size 0x1 unsigned char autoSaveFeature; // offset 0x6F1, size 0x1 }; -class xMat3x3 -{ +class xMat3x3 { // total size: 0x30 public: class xVec3 right; // offset 0x0, size 0xC @@ -4147,48 +3772,42 @@ class xMat3x3 class xVec3 at; // offset 0x20, size 0xC unsigned int pad2; // offset 0x2C, size 0x4 }; -class RxClusterRef -{ +class RxClusterRef { // total size: 0xC public: - class RxClusterDefinition* clusterDef; // offset 0x0, size 0x4 + class RxClusterDefinition * clusterDef; // offset 0x0, size 0x4 enum RxClusterForcePresent forcePresent; // offset 0x4, size 0x4 unsigned int reserved; // offset 0x8, size 0x4 }; -enum en_BBOY_PLATANIM -{ +enum en_BBOY_PLATANIM { BBOY_PLATANIM_MOVE = 0, BBOY_PLATANIM_HIT = 1, BBOY_PLATANIM_NOMORE = 2, BBOY_PLATANIM_FORCE = 2147483647, }; -class RwObject -{ +class RwObject { // total size: 0x8 public: unsigned char type; // offset 0x0, size 0x1 unsigned char subType; // offset 0x1, size 0x1 unsigned char flags; // offset 0x2, size 0x1 unsigned char privateFlags; // offset 0x3, size 0x1 - void* parent; // offset 0x4, size 0x4 + void * parent; // offset 0x4, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x4 public: unsigned char enabled : 8; // offset 0x0, size 0x1 unsigned int dummy : 24; // offset 0x0, size 0x4 }; -class NPCBlastInfo -{ +class NPCBlastInfo { // total size: 0x14 public: class xVec3 pos_blast; // offset 0x0, size 0xC float rad_blast; // offset 0xC, size 0x4 float spd_expand; // offset 0x10, size 0x4 }; -class xEntMechData -{ +class xEntMechData { // total size: 0x4C public: class xVec3 apos; // offset 0x0, size 0xC @@ -4203,26 +3822,23 @@ class xEntMechData float trfd; // offset 0x3C, size 0x4 float tsbd; // offset 0x40, size 0x4 float trbd; // offset 0x44, size 0x4 - float* rotptr; // offset 0x48, size 0x4 + float * rotptr; // offset 0x48, size 0x4 }; -class RxIoSpec -{ +class RxIoSpec { // total size: 0x14 public: unsigned int numClustersOfInterest; // offset 0x0, size 0x4 - class RxClusterRef* clustersOfInterest; // offset 0x4, size 0x4 - enum RxClusterValidityReq* inputRequirements; // offset 0x8, size 0x4 + class RxClusterRef * clustersOfInterest; // offset 0x4, size 0x4 + enum RxClusterValidityReq * inputRequirements; // offset 0x8, size 0x4 unsigned int numOutputs; // offset 0xC, size 0x4 - class RxOutputSpec* outputs; // offset 0x10, size 0x4 + class RxOutputSpec * outputs; // offset 0x10, size 0x4 }; -class xEntMotionSplineData -{ +class xEntMotionSplineData { // total size: 0x4 public: signed int unknown; // offset 0x0, size 0x4 }; -class _tagEmitVolume -{ +class _tagEmitVolume { // total size: 0x4 public: unsigned int emit_volumeID; // offset 0x0, size 0x4 @@ -4235,13 +3851,11 @@ class _tagEmitVolume Code range: 0x002EAED0 -> 0x002EB094 */ // Range: 0x2EAED0 -> 0x2EB094 -static signed int MERC_grul_goAlert(class xGoal* rawgoal /* r2 */, - enum en_trantype* trantype /* r16 */) -{ +static signed int MERC_grul_goAlert(class xGoal * rawgoal /* r2 */, enum en_trantype * trantype /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EAED0 -> 0x2EB094 - class zNPCVillager* npc; // r17 + class zNPCVillager * npc; // r17 class xVec3 dir_plyr; // r29+0x40 } } @@ -4253,14 +3867,12 @@ static signed int MERC_grul_goAlert(class xGoal* rawgoal /* r2 */, Code range: 0x002EB0A0 -> 0x002EB140 */ // Range: 0x2EB0A0 -> 0x2EB140 -static signed int FOLK_grul_goAlert(class xGoal* rawgoal /* r2 */, - enum en_trantype* trantype /* r16 */) -{ +static signed int FOLK_grul_goAlert(class xGoal * rawgoal /* r2 */, enum en_trantype * trantype /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EB0A0 -> 0x2EB140 signed int nextgoal; // r18 - class zNPCVillager* npc; // r17 + class zNPCVillager * npc; // r17 class xVec3 vec; // r29+0x40 } } @@ -4272,8 +3884,7 @@ static signed int FOLK_grul_goAlert(class xGoal* rawgoal /* r2 */, Code range: 0x002EB140 -> 0x002EB2C8 */ // Range: 0x2EB140 -> 0x2EB2C8 -class RpAtomic* NPC_BubBud_RenderCB(class RpAtomic* atomic /* r16 */) -{ +class RpAtomic * NPC_BubBud_RenderCB(class RpAtomic * atomic /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EB140 -> 0x2EB2C8 @@ -4288,8 +3899,7 @@ class RpAtomic* NPC_BubBud_RenderCB(class RpAtomic* atomic /* r16 */) Code range: 0x002EB2D0 -> 0x002EB358 */ // Range: 0x2EB2D0 -> 0x2EB358 -void RenderExtra(class zNPCBubbleBuddy* this /* r16 */) -{ +void RenderExtra(class zNPCBubbleBuddy * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EB2D0 -> 0x2EB358 @@ -4304,8 +3914,7 @@ void RenderExtra(class zNPCBubbleBuddy* this /* r16 */) Code range: 0x002EB360 -> 0x002EB390 */ // Range: 0x2EB360 -> 0x2EB390 -void Reset(class zNPCBubbleBuddy* this /* r16 */) -{ +void Reset(class zNPCBubbleBuddy * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EB360 -> 0x2EB390 @@ -4319,12 +3928,11 @@ void Reset(class zNPCBubbleBuddy* this /* r16 */) Code range: 0x002EB390 -> 0x002EB474 */ // Range: 0x2EB390 -> 0x2EB474 -void Setup(class zNPCBubbleBuddy* this /* r16 */) -{ +void Setup(class zNPCBubbleBuddy * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EB390 -> 0x2EB474 - char* nam_fresTxtr; // r17 + char * nam_fresTxtr; // r17 } } @@ -4335,8 +3943,7 @@ void Setup(class zNPCBubbleBuddy* this /* r16 */) Code range: 0x002EB480 -> 0x002EB530 */ // Range: 0x2EB480 -> 0x2EB530 -void Init(class zNPCBubbleBuddy* this /* r16 */, class xEntAsset* asset /* r2 */) -{ +void Init(class zNPCBubbleBuddy * this /* r16 */, class xEntAsset * asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EB480 -> 0x2EB530 @@ -4350,8 +3957,7 @@ void Init(class zNPCBubbleBuddy* this /* r16 */, class xEntAsset* asset /* r2 */ Code range: 0x002EB530 -> 0x002EB538 */ // Range: 0x2EB530 -> 0x2EB538 -void PlatAnimSync(class zNPCBalloonBoy* this /* r2 */) -{ +void PlatAnimSync(class zNPCBalloonBoy * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EB530 -> 0x2EB538 @@ -4365,8 +3971,7 @@ void PlatAnimSync(class zNPCBalloonBoy* this /* r2 */) Code range: 0x002EB540 -> 0x002EB5A4 */ // Range: 0x2EB540 -> 0x2EB5A4 -void PlatAnimSet(class zNPCBalloonBoy* this /* r2 */, enum en_BBOY_PLATANIM platanim /* r2 */) -{ +void PlatAnimSet(class zNPCBalloonBoy * this /* r2 */, enum en_BBOY_PLATANIM platanim /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EB540 -> 0x2EB5A4 @@ -4381,13 +3986,12 @@ void PlatAnimSet(class zNPCBalloonBoy* this /* r2 */, enum en_BBOY_PLATANIM plat Code range: 0x002EB5B0 -> 0x002EB72C */ // Range: 0x2EB5B0 -> 0x2EB72C -signed int ParseSysEvent(class zNPCBalloonBoy* this /* r2 */, class NPCSysEvent* sed /* r2 */) -{ +signed int ParseSysEvent(class zNPCBalloonBoy * this /* r2 */, class NPCSysEvent * sed /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EB5B0 -> 0x2EB72C signed int handled; // r16 - class zPlatform* plat; // r6 + class zPlatform * plat; // r6 } } @@ -4398,8 +4002,7 @@ signed int ParseSysEvent(class zNPCBalloonBoy* this /* r2 */, class NPCSysEvent* Code range: 0x002EB730 -> 0x002EB810 */ // Range: 0x2EB730 -> 0x2EB810 -signed int FolkHandleMail(class zNPCBalloonBoy* this /* r18 */, class NPCMsg* mail /* r17 */) -{ +signed int FolkHandleMail(class zNPCBalloonBoy * this /* r18 */, class NPCMsg * mail /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EB730 -> 0x2EB810 @@ -4414,9 +4017,7 @@ signed int FolkHandleMail(class zNPCBalloonBoy* this /* r18 */, class NPCMsg* ma Code range: 0x002EB810 -> 0x002EB968 */ // Range: 0x2EB810 -> 0x2EB968 -unsigned int AnimPick(class zNPCBalloonBoy* this /* r2 */, signed int gid /* r2 */, - enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal* rawgoal /* r2 */) -{ +unsigned int AnimPick(class zNPCBalloonBoy * this /* r2 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal * rawgoal /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EB810 -> 0x2EB968 @@ -4432,8 +4033,7 @@ unsigned int AnimPick(class zNPCBalloonBoy* this /* r2 */, signed int gid /* r2 Code range: 0x002EB970 -> 0x002EBC18 */ // Range: 0x2EB970 -> 0x2EBC18 -void PlatShadRend(class zNPCBalloonBoy* this /* r17 */) -{ +void PlatShadRend(class zNPCBalloonBoy * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EB970 -> 0x2EBC18 @@ -4452,8 +4052,7 @@ void PlatShadRend(class zNPCBalloonBoy* this /* r17 */) Code range: 0x002EBC20 -> 0x002EBC4C */ // Range: 0x2EBC20 -> 0x2EBC4C -void Render(class zNPCBalloonBoy* this /* r16 */) -{ +void Render(class zNPCBalloonBoy * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EBC20 -> 0x2EBC4C @@ -4467,12 +4066,11 @@ void Render(class zNPCBalloonBoy* this /* r16 */) Code range: 0x002EBC50 -> 0x002EBCEC */ // Range: 0x2EBC50 -> 0x2EBCEC -void SelfSetup(class zNPCBalloonBoy* this /* r16 */) -{ +void SelfSetup(class zNPCBalloonBoy * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EBC50 -> 0x2EBCEC - class xPsyche* psy; // r16 + class xPsyche * psy; // r16 } } @@ -4483,12 +4081,11 @@ void SelfSetup(class zNPCBalloonBoy* this /* r16 */) Code range: 0x002EBCF0 -> 0x002EBD24 */ // Range: 0x2EBCF0 -> 0x2EBD24 -void Reset(class zNPCBalloonBoy* this /* r2 */) -{ +void Reset(class zNPCBalloonBoy * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EBCF0 -> 0x2EBD24 - char* nam_texture; // r2 + char * nam_texture; // r2 } } @@ -4499,8 +4096,7 @@ void Reset(class zNPCBalloonBoy* this /* r2 */) Code range: 0x002EBD30 -> 0x002EBDCC */ // Range: 0x2EBD30 -> 0x2EBDCC -void Init(class zNPCBalloonBoy* this /* r16 */, class xEntAsset* asset /* r2 */) -{ +void Init(class zNPCBalloonBoy * this /* r16 */, class xEntAsset * asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EBD30 -> 0x2EBDCC @@ -4514,8 +4110,7 @@ void Init(class zNPCBalloonBoy* this /* r16 */, class xEntAsset* asset /* r2 */) Code range: 0x002EBDD0 -> 0x002EC0B4 */ // Range: 0x2EBDD0 -> 0x2EC0B4 -void VFXLeakyFaucet(class zNPCSandyBikini* this /* r18 */, float dt /* r23 */) -{ +void VFXLeakyFaucet(class zNPCSandyBikini * this /* r18 */, float dt /* r23 */) { // Blocks /* anonymous block */ { // Range: 0x2EBDD0 -> 0x2EC0B4 @@ -4534,9 +4129,7 @@ void VFXLeakyFaucet(class zNPCSandyBikini* this /* r18 */, float dt /* r23 */) Code range: 0x002EC0C0 -> 0x002EC12C */ // Range: 0x2EC0C0 -> 0x2EC12C -void Process(class zNPCSandyBikini* this /* r17 */, class xScene* xscn /* r16 */, - float dt /* r20 */) -{ +void Process(class zNPCSandyBikini * this /* r17 */, class xScene * xscn /* r16 */, float dt /* r20 */) { // Blocks /* anonymous block */ { // Range: 0x2EC0C0 -> 0x2EC12C @@ -4550,8 +4143,7 @@ void Process(class zNPCSandyBikini* this /* r17 */, class xScene* xscn /* r16 */ Code range: 0x002EC130 -> 0x002EC1D8 */ // Range: 0x2EC130 -> 0x2EC1D8 -void Reset(class zNPCSandyBikini* this /* r17 */) -{ +void Reset(class zNPCSandyBikini * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EC130 -> 0x2EC1D8 @@ -4565,22 +4157,20 @@ void Reset(class zNPCSandyBikini* this /* r17 */) Code range: 0x002EC1E0 -> 0x002EC430 */ // Range: 0x2EC1E0 -> 0x2EC430 -signed int say(class zNPCNewsFish* this /* r22 */, enum say_enum* s /* r21 */, - unsigned int size /* r2 */, signed int flags /* r23 */, signed int max_say /* r2 */) -{ +signed int say(class zNPCNewsFish * this /* r22 */, enum say_enum * s /* r21 */, unsigned int size /* r2 */, signed int flags /* r23 */, signed int max_say /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EC1E0 -> 0x2EC430 signed int min_say; // r30 - enum say_enum* it; // r5 - enum say_enum* end; // r20 + enum say_enum * it; // r5 + enum say_enum * end; // r20 signed int total; // r16 - enum say_enum* it; // r5 - enum say_enum* end; // r2 + enum say_enum * it; // r5 + enum say_enum * end; // r2 signed int played; // r19 signed int which; // r18 - enum say_enum* it; // r17 - enum say_enum* end; // r2 + enum say_enum * it; // r17 + enum say_enum * end; // r2 unsigned char last_changed; // r2 } } @@ -4592,9 +4182,7 @@ signed int say(class zNPCNewsFish* this /* r22 */, enum say_enum* s /* r21 */, Code range: 0x002EC430 -> 0x002EC568 */ // Range: 0x2EC430 -> 0x2EC568 -unsigned char say(class zNPCNewsFish* this /* r18 */, enum say_enum s /* r2 */, - signed int flags /* r17 */) -{ +unsigned char say(class zNPCNewsFish * this /* r18 */, enum say_enum s /* r2 */, signed int flags /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EC430 -> 0x2EC568 @@ -4609,12 +4197,11 @@ unsigned char say(class zNPCNewsFish* this /* r18 */, enum say_enum s /* r2 */, Code range: 0x002EC570 -> 0x002EC780 */ // Range: 0x2EC570 -> 0x2EC780 -void Render(class zNPCNewsFish* this /* r18 */) -{ +void Render(class zNPCNewsFish * this /* r18 */) { // Blocks /* anonymous block */ { // Range: 0x2EC570 -> 0x2EC780 - class xLightKit* lastLightKit; // r17 + class xLightKit * lastLightKit; // r17 enum _SDRenderState oldstate; // r16 class xMat4x3 oldMat; // r29+0x50 class basic_rect r; // r29+0x40 @@ -4630,8 +4217,7 @@ void Render(class zNPCNewsFish* this /* r18 */) Code range: 0x002EC780 -> 0x002EC7B0 */ // Range: 0x2EC780 -> 0x2EC7B0 -void TalkOnScreen(class zNPCNewsFish* this /* r2 */, signed int talkOnScreen /* r2 */) -{ +void TalkOnScreen(class zNPCNewsFish * this /* r2 */, signed int talkOnScreen /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EC780 -> 0x2EC7B0 @@ -4645,8 +4231,7 @@ void TalkOnScreen(class zNPCNewsFish* this /* r2 */, signed int talkOnScreen /* Code range: 0x002EC7B0 -> 0x002EC818 */ // Range: 0x2EC7B0 -> 0x2EC818 -void SpeakStop(class zNPCNewsFish* this /* r16 */) -{ +void SpeakStop(class zNPCNewsFish * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EC7B0 -> 0x2EC818 @@ -4660,9 +4245,7 @@ void SpeakStop(class zNPCNewsFish* this /* r16 */) Code range: 0x002EC820 -> 0x002EC910 */ // Range: 0x2EC820 -> 0x2EC910 -void SpeakStart(class zNPCNewsFish* this /* r18 */, unsigned int sndid /* r17 */, - unsigned int sndhandle /* r16 */) -{ +void SpeakStart(class zNPCNewsFish * this /* r18 */, unsigned int sndid /* r17 */, unsigned int sndhandle /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EC820 -> 0x2EC910 @@ -4676,8 +4259,7 @@ void SpeakStart(class zNPCNewsFish* this /* r18 */, unsigned int sndid /* r17 */ Code range: 0x002EC910 -> 0x002ECA04 */ // Range: 0x2EC910 -> 0x2ECA04 -void Reset(class zNPCNewsFish* this /* r16 */) -{ +void Reset(class zNPCNewsFish * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EC910 -> 0x2ECA04 @@ -4691,12 +4273,11 @@ void Reset(class zNPCNewsFish* this /* r16 */) Code range: 0x002ECA10 -> 0x002ECD5C */ // Range: 0x2ECA10 -> 0x2ECD5C -void Process(class zNPCNewsFish* this /* r16 */, float dt /* r20 */) -{ +void Process(class zNPCNewsFish * this /* r16 */, float dt /* r20 */) { // Blocks /* anonymous block */ { // Range: 0x2ECA10 -> 0x2ECD5C - class xModelInstance* minst; // r3 + class xModelInstance * minst; // r3 class xVec3 delta; // r29+0x30 float lerp; // r29+0x40 float invLerp; // r4 @@ -4710,8 +4291,7 @@ void Process(class zNPCNewsFish* this /* r16 */, float dt /* r20 */) Code range: 0x002ECD60 -> 0x002ECD7C */ // Range: 0x2ECD60 -> 0x2ECD7C -void PostSetup(class zNPCNewsFish* this /* r2 */) -{ +void PostSetup(class zNPCNewsFish * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2ECD60 -> 0x2ECD7C @@ -4725,8 +4305,7 @@ void PostSetup(class zNPCNewsFish* this /* r2 */) Code range: 0x002ECD80 -> 0x002ECE5C */ // Range: 0x2ECD80 -> 0x2ECE5C -void Init(class zNPCNewsFish* this /* r16 */, class xEntAsset* asset /* r2 */) -{ +void Init(class zNPCNewsFish * this /* r16 */, class xEntAsset * asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2ECD80 -> 0x2ECE5C @@ -4741,12 +4320,11 @@ void Init(class zNPCNewsFish* this /* r16 */, class xEntAsset* asset /* r2 */) Code range: 0x002ECE60 -> 0x002ECED0 */ // Range: 0x2ECE60 -> 0x2ECED0 -void Process(class zNPCMerManChair* this /* r16 */, float dt /* r29+0x20 */) -{ +void Process(class zNPCMerManChair * this /* r16 */, float dt /* r29+0x20 */) { // Blocks /* anonymous block */ { // Range: 0x2ECE60 -> 0x2ECED0 - class xModelInstance* minst; // r4 + class xModelInstance * minst; // r4 } } @@ -4757,9 +4335,7 @@ void Process(class zNPCMerManChair* this /* r16 */, float dt /* r29+0x20 */) Code range: 0x002ECED0 -> 0x002ED0A4 */ // Range: 0x2ECED0 -> 0x2ED0A4 -unsigned int AnimPick(class zNPCMerManChair* this /* r18 */, signed int gid /* r2 */, - enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal* rawgoal /* r2 */) -{ +unsigned int AnimPick(class zNPCMerManChair * this /* r18 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal * rawgoal /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2ECED0 -> 0x2ED0A4 @@ -4778,14 +4354,13 @@ unsigned int AnimPick(class zNPCMerManChair* this /* r18 */, signed int gid /* r Code range: 0x002ED0B0 -> 0x002ED180 */ // Range: 0x2ED0B0 -> 0x2ED180 -void SelfSetup(class zNPCMerManChair* this /* r17 */) -{ +void SelfSetup(class zNPCMerManChair * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2ED0B0 -> 0x2ED180 - class xBehaveMgr* bmgr; // r2 - class xPsyche* psy; // r16 - class xGoal* goal; // r2 + class xBehaveMgr * bmgr; // r2 + class xPsyche * psy; // r16 + class xGoal * goal; // r2 } } @@ -4796,12 +4371,11 @@ void SelfSetup(class zNPCMerManChair* this /* r17 */) Code range: 0x002ED180 -> 0x002ED27C */ // Range: 0x2ED180 -> 0x2ED27C -void Reset(class zNPCMerManChair* this /* r16 */) -{ +void Reset(class zNPCMerManChair * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2ED180 -> 0x2ED27C - class ztaskbox* pat_converse; // r2 + class ztaskbox * pat_converse; // r2 } } @@ -4812,8 +4386,7 @@ void Reset(class zNPCMerManChair* this /* r16 */) Code range: 0x002ED280 -> 0x002ED2D4 */ // Range: 0x2ED280 -> 0x2ED2D4 -void Init(class zNPCMerManChair* this /* r16 */, class xEntAsset* asset /* r2 */) -{ +void Init(class zNPCMerManChair * this /* r16 */, class xEntAsset * asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2ED280 -> 0x2ED2D4 @@ -4827,14 +4400,13 @@ void Init(class zNPCMerManChair* this /* r16 */, class xEntAsset* asset /* r2 */ Code range: 0x002ED2E0 -> 0x002ED4C4 */ // Range: 0x2ED2E0 -> 0x2ED4C4 -void MonitorCowering(class zNPCFish* this /* r18 */) -{ +void MonitorCowering(class zNPCFish * this /* r18 */) { // Blocks /* anonymous block */ { // Range: 0x2ED2E0 -> 0x2ED4C4 class xVec3 vec; // r29+0x50 - class NPCTarget* tgt; // r17 - class NPCConfig* cfg; // r16 + class NPCTarget * tgt; // r17 + class NPCConfig * cfg; // r16 } } @@ -4845,16 +4417,15 @@ void MonitorCowering(class zNPCFish* this /* r18 */) Code range: 0x002ED4D0 -> 0x002ED670 */ // Range: 0x2ED4D0 -> 0x2ED670 -signed int FolkHandleMail(class zNPCFish* this /* r19 */, class NPCMsg* msg /* r18 */) -{ +signed int FolkHandleMail(class zNPCFish * this /* r19 */, class NPCMsg * msg /* r18 */) { // Blocks /* anonymous block */ { // Range: 0x2ED4D0 -> 0x2ED670 signed int handled; // r17 - class xPsyche* psy; // r16 + class xPsyche * psy; // r16 signed int cancheer; // r17 signed int gid; // r2 - class zNPCGoalCheer* cheer; // r2 + class zNPCGoalCheer * cheer; // r2 } } @@ -4865,8 +4436,7 @@ signed int FolkHandleMail(class zNPCFish* this /* r19 */, class NPCMsg* msg /* r Code range: 0x002ED670 -> 0x002ED770 */ // Range: 0x2ED670 -> 0x2ED770 -void Process(class zNPCFish* this /* r17 */, class xScene* xscn /* r16 */, float dt /* r20 */) -{ +void Process(class zNPCFish * this /* r17 */, class xScene * xscn /* r16 */, float dt /* r20 */) { // Blocks /* anonymous block */ { // Range: 0x2ED670 -> 0x2ED770 @@ -4880,9 +4450,7 @@ void Process(class zNPCFish* this /* r17 */, class xScene* xscn /* r16 */, float Code range: 0x002ED770 -> 0x002ED8D0 */ // Range: 0x2ED770 -> 0x2ED8D0 -unsigned int AnimPick(class zNPCFish* this /* r2 */, signed int gid /* r2 */, - enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal* rawgoal /* r2 */) -{ +unsigned int AnimPick(class zNPCFish * this /* r2 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */, class xGoal * rawgoal /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2ED770 -> 0x2ED8D0 @@ -4898,14 +4466,13 @@ unsigned int AnimPick(class zNPCFish* this /* r2 */, signed int gid /* r2 */, Code range: 0x002ED8D0 -> 0x002ED9C0 */ // Range: 0x2ED8D0 -> 0x2ED9C0 -void SelfSetup(class zNPCFish* this /* r17 */) -{ +void SelfSetup(class zNPCFish * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2ED8D0 -> 0x2ED9C0 - class zNPCVillager* npc; // r2 - class xBehaveMgr* bmgr; // r2 - class xPsyche* psy; // r16 + class zNPCVillager * npc; // r2 + class xBehaveMgr * bmgr; // r2 + class xPsyche * psy; // r16 } } @@ -4916,8 +4483,7 @@ void SelfSetup(class zNPCFish* this /* r17 */) Code range: 0x002ED9C0 -> 0x002EDB34 */ // Range: 0x2ED9C0 -> 0x2EDB34 -void FishSoundTables(class zNPCFish* this /* r2 */) -{ +void FishSoundTables(class zNPCFish * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2ED9C0 -> 0x2EDB34 @@ -4931,8 +4497,7 @@ void FishSoundTables(class zNPCFish* this /* r2 */) Code range: 0x002EDB40 -> 0x002EDB88 */ // Range: 0x2EDB40 -> 0x2EDB88 -void ParseINI(class zNPCFish* this /* r16 */) -{ +void ParseINI(class zNPCFish * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EDB40 -> 0x2EDB88 @@ -4946,8 +4511,7 @@ void ParseINI(class zNPCFish* this /* r16 */) Code range: 0x002EDB90 -> 0x002EDD9C */ // Range: 0x2EDB90 -> 0x2EDD9C -void Reset(class zNPCFish* this /* r16 */) -{ +void Reset(class zNPCFish * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EDB90 -> 0x2EDD9C @@ -4961,8 +4525,7 @@ void Reset(class zNPCFish* this /* r16 */) Code range: 0x002EDDA0 -> 0x002EDE2C */ // Range: 0x2EDDA0 -> 0x2EDE2C -void Init(class zNPCFish* this /* r16 */, class xEntAsset* asset /* r2 */) -{ +void Init(class zNPCFish * this /* r16 */, class xEntAsset * asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EDDA0 -> 0x2EDE2C @@ -4976,8 +4539,7 @@ void Init(class zNPCFish* this /* r16 */, class xEntAsset* asset /* r2 */) Code range: 0x002EDE30 -> 0x002EDE38 */ // Range: 0x2EDE30 -> 0x2EDE38 -void TossMyConverse(class zNPCVillager* this /* r2 */) -{ +void TossMyConverse(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EDE30 -> 0x2EDE38 @@ -4991,12 +4553,11 @@ void TossMyConverse(class zNPCVillager* this /* r2 */) Code range: 0x002EDE40 -> 0x002EDEB8 */ // Range: 0x2EDE40 -> 0x2EDEB8 -void FindMyConverse(class zNPCVillager* this /* r16 */) -{ +void FindMyConverse(class zNPCVillager * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EDE40 -> 0x2EDEB8 - class xEntNPCAsset* nass; // r5 + class xEntNPCAsset * nass; // r5 } } @@ -5007,17 +4568,11 @@ void FindMyConverse(class zNPCVillager* this /* r16 */) Code range: 0x002EDEC0 -> 0x002EDFD0 */ // Range: 0x2EDEC0 -> 0x2EDFD0 -void AddTalking( - class xPsyche* psy /* r16 */, - signed int (*eval_plyrnear)(class xGoal*, void*, enum en_trantype*, float, void*) /* r20 */, - signed int (*eval_talking)(class xGoal*, void*, enum en_trantype*, float, void*) /* r19 */, - signed int (*eval_chatter)(class xGoal*, void*, enum en_trantype*, float, void*) /* r18 */, - signed int (*eval_speak)(class xGoal*, void*, enum en_trantype*, float, void*) /* r17 */) -{ +void AddTalking(class xPsyche * psy /* r16 */, signed int (* eval_plyrnear)(class xGoal *, void *, enum en_trantype *, float, void *) /* r20 */, signed int (* eval_talking)(class xGoal *, void *, enum en_trantype *, float, void *) /* r19 */, signed int (* eval_chatter)(class xGoal *, void *, enum en_trantype *, float, void *) /* r18 */, signed int (* eval_speak)(class xGoal *, void *, enum en_trantype *, float, void *) /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EDEC0 -> 0x2EDFD0 - class xGoal* goal; // r2 + class xGoal * goal; // r2 } } @@ -5028,8 +4583,7 @@ void AddTalking( Code range: 0x002EDFD0 -> 0x002EE120 */ // Range: 0x2EDFD0 -> 0x2EE120 -signed int PlayerIsStaring(class zNPCVillager* this /* r2 */) -{ +signed int PlayerIsStaring(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EDFD0 -> 0x2EE120 @@ -5045,14 +4599,13 @@ signed int PlayerIsStaring(class zNPCVillager* this /* r2 */) Code range: 0x002EE120 -> 0x002EE17C */ // Range: 0x2EE120 -> 0x2EE17C -void SpeakStop(class zNPCVillager* this /* r2 */) -{ +void SpeakStop(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EE120 -> 0x2EE17C - class xGoal* goal; // r2 - class zNPCGoalTalk* talkgoal; // r2 - class zNPCGoalSpeak* talkgoal; // r2 + class xGoal * goal; // r2 + class zNPCGoalTalk * talkgoal; // r2 + class zNPCGoalSpeak * talkgoal; // r2 } } @@ -5063,15 +4616,13 @@ void SpeakStop(class zNPCVillager* this /* r2 */) Code range: 0x002EE180 -> 0x002EE214 */ // Range: 0x2EE180 -> 0x2EE214 -void SpeakStart(class zNPCVillager* this /* r2 */, unsigned int sndid /* r17 */, - signed int anim /* r2 */) -{ +void SpeakStart(class zNPCVillager * this /* r2 */, unsigned int sndid /* r17 */, signed int anim /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EE180 -> 0x2EE214 - class xGoal* goal; // r16 - class zNPCGoalTalk* talkgoal; // r2 - class zNPCGoalSpeak* talkgoal; // r2 + class xGoal * goal; // r16 + class zNPCGoalTalk * talkgoal; // r2 + class zNPCGoalSpeak * talkgoal; // r2 } } @@ -5082,12 +4633,11 @@ void SpeakStart(class zNPCVillager* this /* r2 */, unsigned int sndid /* r17 */, Code range: 0x002EE220 -> 0x002EE270 */ // Range: 0x2EE220 -> 0x2EE270 -void SpeakEnd(class zNPCVillager* this /* r2 */) -{ +void SpeakEnd(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EE220 -> 0x2EE270 - class xPsyche* psy; // r16 + class xPsyche * psy; // r16 } } @@ -5098,8 +4648,7 @@ void SpeakEnd(class zNPCVillager* this /* r2 */) Code range: 0x002EE270 -> 0x002EE284 */ // Range: 0x2EE270 -> 0x2EE284 -void SpeakBegin(class zNPCVillager* this /* r2 */) -{ +void SpeakBegin(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EE270 -> 0x2EE284 @@ -5113,8 +4662,7 @@ void SpeakBegin(class zNPCVillager* this /* r2 */) Code range: 0x002EE290 -> 0x002EE390 */ // Range: 0x2EE290 -> 0x2EE390 -signed int FolkHandleMail(class zNPCVillager* this /* r2 */, class NPCMsg* mail /* r2 */) -{ +signed int FolkHandleMail(class zNPCVillager * this /* r2 */, class NPCMsg * mail /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EE290 -> 0x2EE390 @@ -5129,14 +4677,13 @@ signed int FolkHandleMail(class zNPCVillager* this /* r2 */, class NPCMsg* mail Code range: 0x002EE390 -> 0x002EE474 */ // Range: 0x2EE390 -> 0x2EE474 -signed int NPCMessage(class zNPCVillager* this /* r19 */, class NPCMsg* mail /* r18 */) -{ +signed int NPCMessage(class zNPCVillager * this /* r19 */, class NPCMsg * mail /* r18 */) { // Blocks /* anonymous block */ { // Range: 0x2EE390 -> 0x2EE474 - class zNPCGoalCommon* curgoal; // r17 - class zNPCGoalCommon* recgoal; // r2 - class xPsyche* psy; // r16 + class zNPCGoalCommon * curgoal; // r17 + class zNPCGoalCommon * recgoal; // r2 + class xPsyche * psy; // r16 signed int handled; // r2 } } @@ -5148,9 +4695,7 @@ signed int NPCMessage(class zNPCVillager* this /* r19 */, class NPCMsg* mail /* Code range: 0x002EE480 -> 0x002EE848 */ // Range: 0x2EE480 -> 0x2EE848 -unsigned int AnimPick(class zNPCVillager* this /* r17 */, signed int gid /* r2 */, - enum en_NPC_GOAL_SPOT gspot /* r2 */) -{ +unsigned int AnimPick(class zNPCVillager * this /* r17 */, signed int gid /* r2 */, enum en_NPC_GOAL_SPOT gspot /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EE480 -> 0x2EE848 @@ -5175,13 +4720,12 @@ unsigned int AnimPick(class zNPCVillager* this /* r17 */, signed int gid /* r2 * Code range: 0x002EE850 -> 0x002EE92C */ // Range: 0x2EE850 -> 0x2EE92C -void SelfSetup(class zNPCVillager* this /* r17 */) -{ +void SelfSetup(class zNPCVillager * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EE850 -> 0x2EE92C - class xBehaveMgr* bmgr; // r2 - class xPsyche* psy; // r16 + class xBehaveMgr * bmgr; // r2 + class xPsyche * psy; // r16 } } @@ -5192,12 +4736,11 @@ void SelfSetup(class zNPCVillager* this /* r17 */) Code range: 0x002EE930 -> 0x002EE9A4 */ // Range: 0x2EE930 -> 0x2EE9A4 -void CollideReview(class zNPCVillager* this /* r17 */) -{ +void CollideReview(class zNPCVillager * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EE930 -> 0x2EE9A4 - class zNPCGoalCommon* goal; // r2 + class zNPCGoalCommon * goal; // r2 signed int goaldidit; // r16 } } @@ -5209,8 +4752,7 @@ void CollideReview(class zNPCVillager* this /* r17 */) Code range: 0x002EE9B0 -> 0x002EEB90 */ // Range: 0x2EE9B0 -> 0x2EEB90 -void ChkCheatSize(class zNPCVillager* this /* r16 */) -{ +void ChkCheatSize(class zNPCVillager * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EE9B0 -> 0x2EEB90 @@ -5225,8 +4767,7 @@ void ChkCheatSize(class zNPCVillager* this /* r16 */) Code range: 0x002EEB90 -> 0x002EEBF0 */ // Range: 0x2EEB90 -> 0x2EEBF0 -void Process(class zNPCVillager* this /* r17 */, class xScene* xscn /* r16 */, float dt /* r20 */) -{ +void Process(class zNPCVillager * this /* r17 */, class xScene * xscn /* r16 */, float dt /* r20 */) { // Blocks /* anonymous block */ { // Range: 0x2EEB90 -> 0x2EEBF0 @@ -5240,12 +4781,11 @@ void Process(class zNPCVillager* this /* r17 */, class xScene* xscn /* r16 */, f Code range: 0x002EEBF0 -> 0x002EECF8 */ // Range: 0x2EEBF0 -> 0x2EECF8 -void ParseNonRandTalk(class zNPCVillager* this /* r5 */) -{ +void ParseNonRandTalk(class zNPCVillager * this /* r5 */) { // Blocks /* anonymous block */ { // Range: 0x2EEBF0 -> 0x2EECF8 - class NPCConfig* cfg; // r16 + class NPCConfig * cfg; // r16 float non_choices[4]; // r29+0x20 signed int found; // r2 signed int i; // r7 @@ -5261,8 +4801,7 @@ void ParseNonRandTalk(class zNPCVillager* this /* r5 */) Code range: 0x002EED00 -> 0x002EED40 */ // Range: 0x2EED00 -> 0x2EED40 -void ParseINI(class zNPCVillager* this /* r16 */) -{ +void ParseINI(class zNPCVillager * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x2EED00 -> 0x2EED40 @@ -5276,12 +4815,11 @@ void ParseINI(class zNPCVillager* this /* r16 */) Code range: 0x002EED40 -> 0x002EEDE4 */ // Range: 0x2EED40 -> 0x2EEDE4 -void Reset(class zNPCVillager* this /* r17 */) -{ +void Reset(class zNPCVillager * this /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x2EED40 -> 0x2EEDE4 - class NPCConfig* cfg; // r16 + class NPCConfig * cfg; // r16 } } @@ -5292,8 +4830,7 @@ void Reset(class zNPCVillager* this /* r17 */) Code range: 0x002EEDF0 -> 0x002EEE20 */ // Range: 0x2EEDF0 -> 0x2EEE20 -void Init(class zNPCVillager* this /* r16 */, class xEntAsset* asset /* r2 */) -{ +void Init(class zNPCVillager * this /* r16 */, class xEntAsset * asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EEDF0 -> 0x2EEE20 @@ -5307,8 +4844,7 @@ void Init(class zNPCVillager* this /* r16 */, class xEntAsset* asset /* r2 */) Code range: 0x002EEE20 -> 0x002EEE68 */ // Range: 0x2EEE20 -> 0x2EEE68 -unsigned char PhysicsFlags(class zNPCVillager* this /* r2 */) -{ +unsigned char PhysicsFlags(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EEE20 -> 0x2EEE68 @@ -5323,8 +4859,7 @@ unsigned char PhysicsFlags(class zNPCVillager* this /* r2 */) Code range: 0x002EEE70 -> 0x002EEED8 */ // Range: 0x2EEE70 -> 0x2EEED8 -unsigned char ColPenFlags(class zNPCVillager* this /* r2 */) -{ +unsigned char ColPenFlags(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EEE70 -> 0x2EEED8 @@ -5339,8 +4874,7 @@ unsigned char ColPenFlags(class zNPCVillager* this /* r2 */) Code range: 0x002EEEE0 -> 0x002EEF48 */ // Range: 0x2EEEE0 -> 0x2EEF48 -unsigned char ColChkFlags(class zNPCVillager* this /* r2 */) -{ +unsigned char ColChkFlags(class zNPCVillager * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EEEE0 -> 0x2EEF48 @@ -5355,13 +4889,12 @@ unsigned char ColChkFlags(class zNPCVillager* this /* r2 */) Code range: 0x002EEF50 -> 0x002EF31C */ // Range: 0x2EEF50 -> 0x2EF31C -class xAnimTable* ZNPC_AnimTable_SuperFriend(class xAnimTable* callerTable /* r2 */) -{ +class xAnimTable * ZNPC_AnimTable_SuperFriend(class xAnimTable * callerTable /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EEF50 -> 0x2EF31C - class xAnimTable* table; // r17 - char** names; // r16 + class xAnimTable * table; // r17 + char * * names; // r16 signed int ourAnims[10]; // r29+0x50 } } @@ -5373,8 +4906,7 @@ class xAnimTable* ZNPC_AnimTable_SuperFriend(class xAnimTable* callerTable /* r2 Code range: 0x002EF320 -> 0x002EF328 */ // Range: 0x2EF320 -> 0x2EF328 -class xAnimTable* ZNPC_AnimTable_SuperFriend() -{ +class xAnimTable * ZNPC_AnimTable_SuperFriend() { // Blocks /* anonymous block */ { // Range: 0x2EF320 -> 0x2EF328 @@ -5388,13 +4920,12 @@ class xAnimTable* ZNPC_AnimTable_SuperFriend() Code range: 0x002EF330 -> 0x002EF5F0 */ // Range: 0x2EF330 -> 0x2EF5F0 -class xAnimTable* ZNPC_AnimTable_BalloonBoy(class xAnimTable* callerTable /* r2 */) -{ +class xAnimTable * ZNPC_AnimTable_BalloonBoy(class xAnimTable * callerTable /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EF330 -> 0x2EF5F0 - class xAnimTable* table; // r17 - char** names; // r16 + class xAnimTable * table; // r17 + char * * names; // r16 signed int ourAnims[7]; // r29+0x50 } } @@ -5406,8 +4937,7 @@ class xAnimTable* ZNPC_AnimTable_BalloonBoy(class xAnimTable* callerTable /* r2 Code range: 0x002EF5F0 -> 0x002EF5F8 */ // Range: 0x2EF5F0 -> 0x2EF5F8 -class xAnimTable* ZNPC_AnimTable_BalloonBoy() -{ +class xAnimTable * ZNPC_AnimTable_BalloonBoy() { // Blocks /* anonymous block */ { // Range: 0x2EF5F0 -> 0x2EF5F8 @@ -5421,13 +4951,12 @@ class xAnimTable* ZNPC_AnimTable_BalloonBoy() Code range: 0x002EF600 -> 0x002EF98C */ // Range: 0x2EF600 -> 0x2EF98C -class xAnimTable* ZNPC_AnimTable_Villager(class xAnimTable* callerTable /* r2 */) -{ +class xAnimTable * ZNPC_AnimTable_Villager(class xAnimTable * callerTable /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EF600 -> 0x2EF98C - class xAnimTable* table; // r17 - char** names; // r16 + class xAnimTable * table; // r17 + char * * names; // r16 signed int ourAnims[11]; // r29+0x50 } } @@ -5439,8 +4968,7 @@ class xAnimTable* ZNPC_AnimTable_Villager(class xAnimTable* callerTable /* r2 */ Code range: 0x002EF990 -> 0x002EF998 */ // Range: 0x2EF990 -> 0x2EF998 -class xAnimTable* ZNPC_AnimTable_Villager() -{ +class xAnimTable * ZNPC_AnimTable_Villager() { // Blocks /* anonymous block */ { // Range: 0x2EF990 -> 0x2EF998 @@ -5454,8 +4982,7 @@ class xAnimTable* ZNPC_AnimTable_Villager() Code range: 0x002EF9A0 -> 0x002EF9C4 */ // Range: 0x2EF9A0 -> 0x2EF9C4 -void ZNPC_Destroy_Villager(class xFactoryInst* inst /* r2 */) -{ +void ZNPC_Destroy_Villager(class xFactoryInst * inst /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EF9A0 -> 0x2EF9C4 @@ -5469,13 +4996,11 @@ void ZNPC_Destroy_Villager(class xFactoryInst* inst /* r2 */) Code range: 0x002EF9D0 -> 0x002EFF60 */ // Range: 0x2EF9D0 -> 0x2EFF60 -class xFactoryInst* ZNPC_Create_Villager(signed int who /* r16 */, - class RyzMemGrow* growCtxt /* r2 */) -{ +class xFactoryInst * ZNPC_Create_Villager(signed int who /* r16 */, class RyzMemGrow * growCtxt /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x2EF9D0 -> 0x2EFF60 - class zNPCVillager* vil; // r2 + class zNPCVillager * vil; // r2 } } @@ -5486,8 +5011,7 @@ class xFactoryInst* ZNPC_Create_Villager(signed int who /* r16 */, Code range: 0x002EFF60 -> 0x002F0078 */ // Range: 0x2EFF60 -> 0x2F0078 -void zNPCVillager_SceneTimestep(float dt /* r29+0x20 */) -{ +void zNPCVillager_SceneTimestep(float dt /* r29+0x20 */) { // Blocks /* anonymous block */ { // Range: 0x2EFF60 -> 0x2F0078 @@ -5501,8 +5025,7 @@ void zNPCVillager_SceneTimestep(float dt /* r29+0x20 */) Code range: 0x002F0080 -> 0x002F00F8 */ // Range: 0x2F0080 -> 0x2F00F8 -void zNPCVillager_ScenePostInit() -{ +void zNPCVillager_ScenePostInit() { // Blocks /* anonymous block */ { // Range: 0x2F0080 -> 0x2F00F8 @@ -5516,8 +5039,7 @@ void zNPCVillager_ScenePostInit() Code range: 0x002F0100 -> 0x002F0108 */ // Range: 0x2F0100 -> 0x2F0108 -void zNPCVillager_SceneReset() -{ +void zNPCVillager_SceneReset() { // Blocks /* anonymous block */ { // Range: 0x2F0100 -> 0x2F0108 @@ -5531,8 +5053,7 @@ void zNPCVillager_SceneReset() Code range: 0x002F0110 -> 0x002F0118 */ // Range: 0x2F0110 -> 0x2F0118 -void zNPCVillager_SceneFinish() -{ +void zNPCVillager_SceneFinish() { // Blocks /* anonymous block */ { // Range: 0x2F0110 -> 0x2F0118 @@ -5546,8 +5067,7 @@ void zNPCVillager_SceneFinish() Code range: 0x002F0120 -> 0x002F0128 */ // Range: 0x2F0120 -> 0x2F0128 -void zNPCVillager_ScenePrepare() -{ +void zNPCVillager_ScenePrepare() { // Blocks /* anonymous block */ { // Range: 0x2F0120 -> 0x2F0128 @@ -5561,8 +5081,7 @@ void zNPCVillager_ScenePrepare() Code range: 0x002F0130 -> 0x002F0138 */ // Range: 0x2F0130 -> 0x2F0138 -void ZNPC_Villager_Shutdown() -{ +void ZNPC_Villager_Shutdown() { // Blocks /* anonymous block */ { // Range: 0x2F0130 -> 0x2F0138 @@ -5576,8 +5095,7 @@ void ZNPC_Villager_Shutdown() Code range: 0x002F0140 -> 0x002F01D0 */ // Range: 0x2F0140 -> 0x2F01D0 -void ZNPC_Villager_Startup() -{ +void ZNPC_Villager_Startup() { // Blocks /* anonymous block */ { // Range: 0x2F0140 -> 0x2F01D0 From 3b8c979a470be52a250ce4587915d8592f66e775 Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Thu, 21 May 2026 05:00:50 -0400 Subject: [PATCH 7/8] Undo dwarf file format for real this time --- dwarf/SB/Game/zNPCTypeVillager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dwarf/SB/Game/zNPCTypeVillager.cpp b/dwarf/SB/Game/zNPCTypeVillager.cpp index 1f9b44baa..2e7b9ba09 100644 --- a/dwarf/SB/Game/zNPCTypeVillager.cpp +++ b/dwarf/SB/Game/zNPCTypeVillager.cpp @@ -5101,4 +5101,4 @@ void ZNPC_Villager_Startup() { // Range: 0x2F0140 -> 0x2F01D0 signed int i; // r18 } -} +} \ No newline at end of file From 75ecbb4e35100956e62acfd5e2941ec0b3718dba Mon Sep 17 00:00:00 2001 From: bluisblu <53455507+bluisblu@users.noreply.github.com> Date: Thu, 21 May 2026 05:04:44 -0400 Subject: [PATCH 8/8] Restore zNPCTypeVillager dwarf --- dwarf/SB/Game/zNPCTypeVillager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dwarf/SB/Game/zNPCTypeVillager.cpp b/dwarf/SB/Game/zNPCTypeVillager.cpp index 2e7b9ba09..76e5973a0 100644 --- a/dwarf/SB/Game/zNPCTypeVillager.cpp +++ b/dwarf/SB/Game/zNPCTypeVillager.cpp @@ -5101,4 +5101,5 @@ void ZNPC_Villager_Startup() { // Range: 0x2F0140 -> 0x2F01D0 signed int i; // r18 } -} \ No newline at end of file +} +