From b79fc690ecc149e209ae4677ae618082cfa941fb Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 21 Dec 2025 17:46:55 -0500 Subject: [PATCH 01/13] Matched 10 small functions --- src/SB/Game/zTalkBox.cpp | 55 ++++++++++++++++++++++++++++++++++++++++ src/SB/Game/zTalkBox.h | 19 ++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 0bca75d7..1dac5dff 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -365,3 +365,58 @@ void ztalkbox::permit(U32 add_flags, U32 remove_flags) shared.permit &= ~remove_flags; shared.permit |= add_flags; } + +namespace +{ + + static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) + { + + } + + static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) + { + + } + + static unsigned char trigger_pause(const xtextbox::jot&) + { + return 1; + } +} + +void start_state_type::stop() +{ +} + +signed char start_state_type::update(xScene&, float) +{ + return 2; +} + +void next_state_type::stop() +{ + +} + +void stop_state_type::start() +{ + +} + +void stop_state_type::stop() +{ + +} + +signed char stop_state_type::update(xScene&, float) +{ + return -1; +} + +void wait_context::reset_type() +{ + + *(U16*)&this->type = 0; + +} diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 8c7c3172..a94a7feb 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -155,6 +155,24 @@ namespace void stop(); }; + struct next_state_type + { + void stop(); + }; + + struct start_state_type + { + void stop(); + signed char update(xScene&, float); + }; + + struct stop_state_type + { + void start(); + void stop(); + signed char update(xScene&, float); + }; + struct jot; struct callback { @@ -252,6 +270,7 @@ namespace F32 delay; U32 event_mask; query_enum query; + void reset_type(); }; struct trigger_pair From 1c483854b405e00969a300d6f54291cb9bf7aa9a Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 21 Dec 2025 20:04:20 -0500 Subject: [PATCH 02/13] ztalkbox load and state_type update --- src/SB/Game/zTalkBox.cpp | 11 +++++++++++ src/SB/Game/zTalkBox.h | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 1dac5dff..b65adb50 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -366,6 +366,11 @@ void ztalkbox::permit(U32 add_flags, U32 remove_flags) shared.permit |= add_flags; } +void ztalkbox::load(xBase& data, xDynAsset& asset, unsigned long) +{ + ((ztalkbox&)data).load((const ztalkbox::asset_type&)asset); +} + namespace { @@ -383,6 +388,12 @@ namespace { return 1; } + + state_type::state_type(state_enum t) + { + type = t; + } + } void start_state_type::stop() diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index a94a7feb..9d0b8e04 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -150,9 +150,10 @@ namespace struct state_type { state_enum type; - - void start(); - void stop(); + + state_type(state_enum t); + virtual void start(); + virtual void stop(); }; struct next_state_type From 9ef4f04493dba6af7a215db25eafeb2d4404c97e Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 21 Dec 2025 21:43:14 -0500 Subject: [PATCH 03/13] Made suggested changes for primative types and updated variables. also used code formmatting tool --- src/SB/Game/zTalkBox.cpp | 22 ++++++++-------------- src/SB/Game/zTalkBox.h | 11 +++-------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index b65adb50..9e54f6fa 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -373,18 +373,17 @@ void ztalkbox::load(xBase& data, xDynAsset& asset, unsigned long) namespace { - - static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) + static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, + const xtextbox::split_tag&) { - } - static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) + static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, + const xtextbox::split_tag&) { - } - static unsigned char trigger_pause(const xtextbox::jot&) + U8 trigger_pause(const xtextbox::jot&) { return 1; } @@ -394,40 +393,35 @@ namespace type = t; } -} +} // namespace void start_state_type::stop() { } -signed char start_state_type::update(xScene&, float) +S8 start_state_type::update(xScene& scn, F32 dt) { return 2; } void next_state_type::stop() { - } void stop_state_type::start() { - } void stop_state_type::stop() { - } -signed char stop_state_type::update(xScene&, float) +S8 stop_state_type::update(xScene& scn, F32 dt) { return -1; } void wait_context::reset_type() { - *(U16*)&this->type = 0; - } diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 9d0b8e04..879f4458 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -61,27 +61,22 @@ struct ztalkbox : xBase { callback() { - } virtual void on_signal(U32) { - } virtual void on_start() { - } virtual void on_stop() { - } virtual void on_answer(answer_enum answer) { - } }; @@ -164,14 +159,14 @@ namespace struct start_state_type { void stop(); - signed char update(xScene&, float); + S8 update(xScene& scn, F32 dt); }; struct stop_state_type { void start(); void stop(); - signed char update(xScene&, float); + S8 update(xScene& scn, F32 dt); }; struct jot; @@ -310,6 +305,6 @@ namespace zNPCCommon* speak_npc; // 0x8694 U32 speak_player; // 0x8698 }; -} +} // namespace #endif From da22f62e4199fa1ddd6c8e55ed36ce2414f20f80 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 4 Jan 2026 15:33:57 -0500 Subject: [PATCH 04/13] Update --- src/SB/Game/zTalkBox.cpp | 194 +++++++++++++++++++++++++++++++++++++-- src/SB/Game/zTalkBox.h | 58 ++++++++++-- 2 files changed, 235 insertions(+), 17 deletions(-) diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 9e54f6fa..81fb3684 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -1,6 +1,7 @@ #include "xstransvc.h" #include "zTalkBox.h" - +#include "xDebug.h" +#include "zEntPlayer.h" #include namespace @@ -105,10 +106,6 @@ namespace { } - void reset_auto_wait() - { - } - void deactivate() { stop_audio_effect(); @@ -366,33 +363,203 @@ void ztalkbox::permit(U32 add_flags, U32 remove_flags) shared.permit |= add_flags; } -void ztalkbox::load(xBase& data, xDynAsset& asset, unsigned long) +void ztalkbox::load(xBase& data, xDynAsset& asset, size_t) { ((ztalkbox&)data).load((const ztalkbox::asset_type&)asset); } +void ztalkbox::load_settings(xIniFile& ini) //TODO +{ + shared.volume = xIniGetFloat(&ini, "talk_box.volume", 2.0f); + xDebugAddTweak("Talk Box|\u{1}Globals|volume", &shared.volume, 0.1f, 10.0f, NULL, NULL, 0); +} + namespace { + static U8 read_bool(const substr& s, bool def) //TODO 99% + { + extern const substr negative[6]; + extern const substr positive[6]; + if (def) + { + for (U32 i = 0; i < 6; ++i) + { + if (icompare(s, negative[i]) == 0) + return 0; + } + return 1; + } + else + for (U32 i = 0; i < 6; ++i) + { + if (icompare(s, positive[i]) == 0) + return 1; + } + return 0; + } static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) { } + static void parse_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox&, + const xtextbox::split_tag& ti) //TODO 99% + { + U8 c = 0; + + if (ti.action.size == 1 && ti.action.text[0] == '=') + { + if (read_bool(ti.value, 1) != 0) + { + c = 1; + } + } + + *(U8*)&j.context = c; + } + static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, - const xtextbox::split_tag&) + const xtextbox::split_tag&) //DONE { } + static void reset_tag_sound(xtextbox::jot& j, const xtextbox&, const xtextbox& tb, + const xtextbox::split_tag&) //DONE + { + if (!shared.active) + { + return; + } + + if (&shared.active->dialog_box->tb != &tb) + { + return; + } + + sound_context& c = *(sound_context*)j.context; + + j.context_size = 24; + + c.id = 0; + c.action = sound_context::ACTION_SET; + } + static void reset_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, + const xtextbox::split_tag&) //DONE + { + if (!shared.active) + { + return; + } + + if (&shared.active->dialog_box->tb != &ctb) + { + return; + } + + *(bool*)&j.context = (shared.active->asset->trap != 0); + } + + static void reset_tag_allow_quit(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, + const xtextbox::split_tag&) //DONE + { + if (!shared.active) + { + return; + } + + if (&shared.active->dialog_box->tb != &ctb) + { + return; + } + + *(bool*)&j.context = (shared.active->asset->allow_quit != 0); + } U8 trigger_pause(const xtextbox::jot&) { return 1; } + U8 trigger_allow_quit(const xtextbox::jot& j) //DONE + { + shared.allow_quit = (j.context != NULL); + + return 1; + } + U8 trigger_auto_wait(const xtextbox::jot& j) //DONE + { + shared.auto_wait = *(const wait_context*)j.context; + + return 1; + } state_type::state_type(state_enum t) { type = t; } + wait_context& wait_context::operator=(const wait_context& rhs) //FIXME + { + type = rhs.type; + need = rhs.need; + delay = rhs.delay; + event_mask = rhs.event_mask; + query = rhs.query; + return *this; + } + + void stop_audio_effect() //TODO + { + if (!shared.active) + { + return; + } + + if (shared.active->asset == 0) + { + return; + } + } + static void reset_auto_wait() //DONE + { + const ztalkbox::asset_type* a = shared.active->asset; + + shared.auto_wait.type.time = a->auto_wait.type.time; + shared.auto_wait.type.prompt = a->auto_wait.type.prompt; + shared.auto_wait.type.sound = a->auto_wait.type.sound; + shared.auto_wait.type.event = a->auto_wait.type.event; + + shared.auto_wait.delay = a->auto_wait.delay; + + shared.auto_wait.need = 0; + + if (a->auto_wait.which_event <= 0 || a->auto_wait.which_event >= 32) + { + shared.auto_wait.event_mask = -1; + } + else + { + shared.auto_wait.event_mask = 1u << a->auto_wait.which_event; + } + + shared.auto_wait.query = Q_SKIP; + } + static void reset_tag_auto_wait(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, + const xtextbox::split_tag&) //DONE + { + if (!shared.active) + { + return; + } + if (&shared.active->dialog_box->tb != &ctb) + { + return; + } + + wait_context& c = *(wait_context*)j.context; + j.context_size = sizeof(wait_context); + reset_auto_wait(); + c = shared.auto_wait; + } + } // namespace void start_state_type::stop() @@ -425,3 +592,16 @@ void wait_context::reset_type() { *(U16*)&this->type = 0; } + +static U8 trigger_trap(const xtextbox::jot& j) //DONE +{ + if (j.context != 0) + { + zEntPlayerControlOff(CONTROL_OWNER_TALK_BOX); + } + else + { + zEntPlayerControlOn(CONTROL_OWNER_TALK_BOX); + } + return 1; +} diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 879f4458..0ce65c73 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -34,8 +34,8 @@ struct ztalkbox : xBase bool sound : 8; bool event : 8; } type; - F32 delay; - S32 which_event; + F32 delay; //Offset 8d3c + S32 which_event; //Offset 0x8d40 } auto_wait; struct { @@ -85,9 +85,9 @@ struct ztalkbox : xBase bool visible : 1; } flag; const asset_type* asset; - ztextbox* dialog_box; - ztextbox* prompt_box; - ztextbox* quit_box; + ztextbox* dialog_box; //Offset 0x18 + ztextbox* prompt_box; //Offset 0x1c + ztextbox* quit_box; //Offset 0x20 struct { const char* skip; @@ -145,7 +145,7 @@ namespace struct state_type { state_enum type; - + state_type(state_enum t); virtual void start(); virtual void stop(); @@ -262,11 +262,12 @@ namespace U8 event : 1; U16 pad : 12; } type; - U8 need; + U8 need; //Offset 08d3a F32 delay; - U32 event_mask; - query_enum query; + U32 event_mask; //Offset 08d40 + query_enum query; //Offset 08d44 void reset_type(); + wait_context& operator=(const wait_context& rhs); }; struct trigger_pair @@ -277,7 +278,7 @@ namespace struct shared_type { - S32 flags; + S32 flags; U32 permit; ztalkbox* active; // 0x8 state_type* state; // 0xC @@ -305,6 +306,43 @@ namespace zNPCCommon* speak_npc; // 0x8694 U32 speak_player; // 0x8698 }; + + struct sound_context + { + // total size: 0x18 + U32 id; // offset 0x0, size 0x4 + enum + { + ACTION_SET = 0, + ACTION_PUSH = 1, + ACTION_POP = 2, + } action : 8; // offset 0x4, size 0x4 + enum + { + TYPE_INVALID = 0, + TYPE_VOLUME = 1, + TYPE_TARGET = 2, + TYPE_ORIGIN = 3, + } type : 8; // offset 0x4, size 0x4 + enum + { + SOURCE_MEMORY = 0, + SOURCE_STREAM = 1, + } source : 8; // offset 0x4, size 0x4 + U8 anim; // offset 0x7, size 0x1 + union + { // inferred + struct + { + // total size: 0x8 + float left; // offset 0x0, size 0x4 + float right; // offset 0x4, size 0x4 + } volume; // offset 0x8, size 0x8 + unsigned int target; // offset 0x8, size 0x4 + class xVec3 origin; // offset 0x8, size 0xC + }; + U32 speaker; // offset 0x14, size 0x4 + }; } // namespace #endif From 9785b64ea93abe6c13c34259b18cc36d73c956f2 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 4 Jan 2026 22:52:57 -0500 Subject: [PATCH 05/13] Made suggested updates --- src/SB/Game/zTalkBox.cpp | 40 +++++++++++++++++++++------------------- src/SB/Game/zTalkBox.h | 18 +++++++++--------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 81fb3684..c3d3b7e8 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -363,23 +363,23 @@ void ztalkbox::permit(U32 add_flags, U32 remove_flags) shared.permit |= add_flags; } -void ztalkbox::load(xBase& data, xDynAsset& asset, size_t) +void ztalkbox::load(xBase& data, xDynAsset& asset, u32) { ((ztalkbox&)data).load((const ztalkbox::asset_type&)asset); } -void ztalkbox::load_settings(xIniFile& ini) //TODO +void ztalkbox::load_settings(xIniFile& ini) { shared.volume = xIniGetFloat(&ini, "talk_box.volume", 2.0f); - xDebugAddTweak("Talk Box|\u{1}Globals|volume", &shared.volume, 0.1f, 10.0f, NULL, NULL, 0); + xDebugAddTweak("Talk Box|\01GlobalsGlobals|volume", &shared.volume, 0.1f, 10.0f, NULL, NULL, 0); } namespace { - static U8 read_bool(const substr& s, bool def) //TODO 99% + static U8 read_bool(const substr& s, bool def) { - extern const substr negative[6]; - extern const substr positive[6]; + const substr negative[6] = {}; + const substr positive[6] = {}; if (def) { for (U32 i = 0; i < 6; ++i) @@ -390,11 +390,13 @@ namespace return 1; } else + { for (U32 i = 0; i < 6; ++i) { if (icompare(s, positive[i]) == 0) return 1; } + } return 0; } static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, @@ -403,9 +405,9 @@ namespace } static void parse_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox&, - const xtextbox::split_tag& ti) //TODO 99% + const xtextbox::split_tag& ti) { - U8 c = 0; + bool c = 0; if (ti.action.size == 1 && ti.action.text[0] == '=') { @@ -415,15 +417,15 @@ namespace } } - *(U8*)&j.context = c; + *(bool*)&j.context = c; } static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, - const xtextbox::split_tag&) //DONE + const xtextbox::split_tag&) { } static void reset_tag_sound(xtextbox::jot& j, const xtextbox&, const xtextbox& tb, - const xtextbox::split_tag&) //DONE + const xtextbox::split_tag&) { if (!shared.active) { @@ -443,7 +445,7 @@ namespace c.action = sound_context::ACTION_SET; } static void reset_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) //DONE + const xtextbox::split_tag&) { if (!shared.active) { @@ -459,7 +461,7 @@ namespace } static void reset_tag_allow_quit(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) //DONE + const xtextbox::split_tag&) { if (!shared.active) { @@ -479,13 +481,13 @@ namespace return 1; } - U8 trigger_allow_quit(const xtextbox::jot& j) //DONE + U8 trigger_allow_quit(const xtextbox::jot& j) { shared.allow_quit = (j.context != NULL); return 1; } - U8 trigger_auto_wait(const xtextbox::jot& j) //DONE + U8 trigger_auto_wait(const xtextbox::jot& j) { shared.auto_wait = *(const wait_context*)j.context; @@ -506,7 +508,7 @@ namespace return *this; } - void stop_audio_effect() //TODO + void stop_audio_effect() { if (!shared.active) { @@ -518,7 +520,7 @@ namespace return; } } - static void reset_auto_wait() //DONE + static void reset_auto_wait() { const ztalkbox::asset_type* a = shared.active->asset; @@ -543,7 +545,7 @@ namespace shared.auto_wait.query = Q_SKIP; } static void reset_tag_auto_wait(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) //DONE + const xtextbox::split_tag&) { if (!shared.active) { @@ -593,7 +595,7 @@ void wait_context::reset_type() *(U16*)&this->type = 0; } -static U8 trigger_trap(const xtextbox::jot& j) //DONE +static U8 trigger_trap(const xtextbox::jot& j) { if (j.context != 0) { diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 0ce65c73..93b33b16 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -313,21 +313,21 @@ namespace U32 id; // offset 0x0, size 0x4 enum { - ACTION_SET = 0, - ACTION_PUSH = 1, - ACTION_POP = 2, + ACTION_SET, + ACTION_PUSH, + ACTION_POP, } action : 8; // offset 0x4, size 0x4 enum { - TYPE_INVALID = 0, - TYPE_VOLUME = 1, - TYPE_TARGET = 2, - TYPE_ORIGIN = 3, + TYPE_INVALID, + TYPE_VOLUME, + TYPE_TARGET, + TYPE_ORIGIN, } type : 8; // offset 0x4, size 0x4 enum { - SOURCE_MEMORY = 0, - SOURCE_STREAM = 1, + SOURCE_MEMORY, + SOURCE_STREAM, } source : 8; // offset 0x4, size 0x4 U8 anim; // offset 0x7, size 0x1 union From ae0fe8a52920dc9c5f0778c4245ceb95fea19a0f Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 4 Jan 2026 23:52:39 -0500 Subject: [PATCH 06/13] Reverted read_bool back to the state it was at --- src/SB/Game/zTalkBox.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index c3d3b7e8..3e9ac625 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -378,8 +378,8 @@ namespace { static U8 read_bool(const substr& s, bool def) { - const substr negative[6] = {}; - const substr positive[6] = {}; + extern const substr negative[6]; + extern const substr positive[6]; if (def) { for (U32 i = 0; i < 6; ++i) From eca2e2ed5e3418f82437122f54d41fa9ba2fdcd8 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sat, 28 Feb 2026 20:12:54 -0500 Subject: [PATCH 07/13] 13 functions in zTalkBox.cpp missing 100% match All other functions in zTalkBox.cpp have a 100% match Made sure all functions use DWARF local variables when possible Reordered functions in zTalkBox to try to match objdiff, not all are in the correct order but most are Completed .bss (8f38) with 100% match Completed .ctors (4) with 100% match Completed .data (118) with 100% match Completed .rodata (1c8) with 100% match Completed .sbss (20) with 100% match Completed .sbss2 (8) with 100% match Completed .sdata (10) with 100% match Completed .sdata2 (20) with 100% match but [.sdata2-0] is still at 85% .text (3434) is at a 98% match .text (224) is at a 96% match .text (1bc) has 4 100% macthes and one 73% match --- dwarf/SB/Game/zTalkBox.cpp | 2338 +++++++++++++++++++++--------------- src/SB/Core/x/containers.h | 117 +- src/SB/Core/x/xEnt.h | 10 +- src/SB/Core/x/xFont.h | 11 +- src/SB/Core/x/xSnd.h | 68 ++ src/SB/Game/zTalkBox.cpp | 2038 ++++++++++++++++++++++++++----- src/SB/Game/zTalkBox.h | 160 ++- src/SB/Game/zTextBox.h | 8 +- 8 files changed, 3437 insertions(+), 1313 deletions(-) diff --git a/dwarf/SB/Game/zTalkBox.cpp b/dwarf/SB/Game/zTalkBox.cpp index e30593a5..cebbdcce 100644 --- a/dwarf/SB/Game/zTalkBox.cpp +++ b/dwarf/SB/Game/zTalkBox.cpp @@ -15,45 +15,56 @@ static unsigned int new_tags_size; // size: 0x4, address: 0x50F094 static float music_fade; // size: 0x4, address: 0x50F098 static float music_fade_delay; // size: 0x4, address: 0x50F09C class zGlobals globals; // size: 0x2050, address: 0x52C8F0 -struct /* @anon2 */ { +struct /* @anon2 */ +{ // total size: 0x14 -} __vt__Q222@unnamed@zTalkBox_cpp@15stop_state_type; // size: 0x14, address: 0x50C320 -struct /* @anon3 */ { +} __vt__Q222 @unnamed @zTalkBox_cpp @15stop_state_type; // size: 0x14, address: 0x50C320 +struct /* @anon3 */ +{ // total size: 0x14 -} __vt__Q222@unnamed@zTalkBox_cpp@10state_type; // size: 0x14, address: 0x0 -struct /* @anon4 */ { +} __vt__Q222 @unnamed @zTalkBox_cpp @10state_type; // size: 0x14, address: 0x0 +struct /* @anon4 */ +{ // total size: 0x14 -} __vt__Q222@unnamed@zTalkBox_cpp@15wait_state_type; // size: 0x14, address: 0x50C340 -struct /* @anon1 */ { +} __vt__Q222 @unnamed @zTalkBox_cpp @15wait_state_type; // size: 0x14, address: 0x50C340 +struct /* @anon1 */ +{ // total size: 0x14 -} __vt__Q222@unnamed@zTalkBox_cpp@15next_state_type; // size: 0x14, address: 0x50C360 -struct /* @anon0 */ { +} __vt__Q222 @unnamed @zTalkBox_cpp @15next_state_type; // size: 0x14, address: 0x50C360 +struct /* @anon0 */ +{ // total size: 0x14 -} __vt__Q222@unnamed@zTalkBox_cpp@16start_state_type; // size: 0x14, address: 0x50C380 -signed int cb_dispatch(class xBase *, class xBase *, unsigned int, float *, class xBase *); // size: 0x0, address: 0x31EB20 -void parse_tag_wait(class jot &, class xtextbox &, class xtextbox &, class split_tag &); // size: 0x0, address: 0x31F6A0 -class RxPacket { +} __vt__Q222 @unnamed @zTalkBox_cpp @16start_state_type; // size: 0x14, address: 0x50C380 +signed int cb_dispatch(class xBase*, class xBase*, unsigned int, float*, + class xBase*); // size: 0x0, address: 0x31EB20 +void parse_tag_wait(class jot&, class xtextbox&, class xtextbox&, + class split_tag&); // size: 0x0, address: 0x31F6A0 +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 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 xScene { +class xScene +{ // total size: 0x70 public: unsigned int sceneID; // offset 0x0, size 0x4 @@ -73,85 +84,95 @@ 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 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 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 ztalkbox : public xBase { +class ztalkbox : public xBase +{ // total size: 0x3C public: - class /* @class */ { + class /* @class */ + { // total size: 0x1 public: unsigned char visible : 1; // offset 0x0, size 0x1 } flag; // offset 0x10, size 0x1 - class asset_type * asset; // offset 0x14, size 0x4 - class ztextbox * dialog_box; // offset 0x18, size 0x4 - class ztextbox * prompt_box; // offset 0x1C, size 0x4 - class ztextbox * quit_box; // offset 0x20, size 0x4 - class /* @class */ { + class asset_type* asset; // offset 0x14, size 0x4 + class ztextbox* dialog_box; // offset 0x18, size 0x4 + class ztextbox* prompt_box; // offset 0x1C, size 0x4 + class ztextbox* quit_box; // offset 0x20, size 0x4 + class /* @class */ + { // total size: 0x14 public: - char * skip; // offset 0x0, size 0x4 - char * noskip; // offset 0x4, size 0x4 - char * quit; // offset 0x8, size 0x4 - char * noquit; // offset 0xC, size 0x4 - char * yesno; // offset 0x10, size 0x4 + char* skip; // offset 0x0, size 0x4 + char* noskip; // offset 0x4, size 0x4 + char* quit; // offset 0x8, size 0x4 + char* noquit; // offset 0xC, size 0x4 + char* yesno; // offset 0x10, size 0x4 } prompt; // offset 0x24, size 0x14 - class zNPCCommon * npc; // offset 0x38, size 0x4 + class zNPCCommon* npc; // offset 0x38, 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 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 xAnimTransition { +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 @@ -159,9 +180,10 @@ 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 zPlayerSettings { +class zPlayerSettings +{ // total size: 0x460 public: enum _zPlayerType pcType; // offset 0x0, size 0x4 @@ -188,11 +210,13 @@ class zPlayerSettings { unsigned char talk_filter_size; // offset 0x459, size 0x1 unsigned char talk_filter[4]; // offset 0x45A, size 0x4 }; -enum query_enum { +enum query_enum +{ Q_SKIP = 0, Q_YESNO = 1, }; -class xMovePointAsset : public xBaseAsset { +class xMovePointAsset : public xBaseAsset +{ // total size: 0x28 public: class xVec3 pos; // offset 0x8, size 0xC @@ -206,16 +230,18 @@ class xMovePointAsset : public xBaseAsset { float zoneRadius; // offset 0x20, size 0x4 float arenaRadius; // offset 0x24, 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 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 @@ -230,32 +256,34 @@ 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 wait_context { +class wait_context +{ // total size: 0x10 public: - class /* @class */ { + class /* @class */ + { // total size: 0x2 public: unsigned char time : 1; // offset 0x0, size 0x1 @@ -269,7 +297,8 @@ class wait_context { unsigned int event_mask; // offset 0x8, size 0x4 enum query_enum query; // offset 0xC, size 0x4 }; -class RwFrame { +class RwFrame +{ // total size: 0xB0 public: class RwObject object; // offset 0x0, size 0x8 @@ -277,52 +306,58 @@ 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 xShadowSimplePoly { +class xShadowSimplePoly +{ // total size: 0x30 public: class xVec3 vert[3]; // offset 0x0, size 0x24 class xVec3 norm; // offset 0x24, size 0xC }; -enum trigger_pads_enum { +enum trigger_pads_enum +{ TP_NEVER = 0, TP_TRAPPED = 1, TP_ACTIVE = 2, }; -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 zFragBone { +class zFragBone +{ // total size: 0x10 public: signed int index; // offset 0x0, size 0x4 class xVec3 offset; // offset 0x4, size 0xC }; -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 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 @@ -330,44 +365,47 @@ 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 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 }; -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 @@ -435,12 +473,14 @@ class xCamera : public xBase { float roll_csv; // offset 0x264, size 0x4 class xVec4 frustplane[12]; // offset 0x270, size 0xC0 }; -class RpSector { +class RpSector +{ // total size: 0x4 public: signed int type; // offset 0x0, size 0x4 }; -class zFragLightningAsset : public zFragAsset { +class zFragLightningAsset : public zFragAsset +{ // total size: 0x68 public: class zFragLocation start; // offset 0x18, size 0x24 @@ -448,93 +488,104 @@ class zFragLightningAsset : public zFragAsset { unsigned int startParentID; // offset 0x60, size 0x4 unsigned int endParentID; // offset 0x64, size 0x4 }; -class _tagEmitSphere { +class _tagEmitSphere +{ // total size: 0x4 public: float radius; // offset 0x0, 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 }; -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 }; -enum RwFogType { +enum RwFogType +{ rwFOGTYPENAFOGTYPE = 0, rwFOGTYPELINEAR = 1, rwFOGTYPEEXPONENTIAL = 2, rwFOGTYPEEXPONENTIAL2 = 3, rwFOGTYPEFORCEENUMSIZEINT = 2147483647, }; -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 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 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 xIniSection { + 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 xIniSection +{ // total size: 0xC public: - char * sec; // offset 0x0, size 0x4 + char* sec; // offset 0x0, size 0x4 signed int first; // offset 0x4, size 0x4 signed int count; // offset 0x8, size 0x4 }; -class RwMatrixTag { +class RwMatrixTag +{ // total size: 0x40 public: class RwV3d right; // offset 0x0, size 0xC @@ -546,7 +597,8 @@ class RwMatrixTag { class RwV3d pos; // offset 0x30, size 0xC unsigned int pad3; // offset 0x3C, size 0x4 }; -class iColor_tag { +class iColor_tag +{ // total size: 0x4 public: unsigned char r; // offset 0x0, size 0x1 @@ -554,26 +606,30 @@ class iColor_tag { unsigned char b; // offset 0x2, size 0x1 unsigned char a; // offset 0x3, size 0x1 }; -class asset_type : public xDynAsset { +class asset_type : public xDynAsset +{ // total size: 0x64 public: unsigned int text; // offset 0x10, size 0x4 class basic_rect bounds; // offset 0x14, size 0x10 unsigned int font; // offset 0x24, size 0x4 - class /* @class */ { + class /* @class */ + { // total size: 0x8 public: float width; // offset 0x0, size 0x4 float height; // offset 0x4, size 0x4 } size; // offset 0x28, size 0x8 - class /* @class */ { + class /* @class */ + { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 } space; // offset 0x30, size 0x8 class color_type color; // offset 0x38, size 0x4 - class /* @class */ { + class /* @class */ + { // total size: 0x10 public: float left; // offset 0x0, size 0x4 @@ -581,19 +637,22 @@ class asset_type : public xDynAsset { float right; // offset 0x8, size 0x4 float bottom; // offset 0xC, size 0x4 } inset; // offset 0x3C, size 0x10 - enum /* @enum */ { + enum /* @enum */ + { XJ_LEFT = 0, XJ_CENTER = 1, XJ_RIGHT = 2, } xjustify; // offset 0x4C, size 0x4 - enum /* @enum */ { + enum /* @enum */ + { EX_UP = 0, EX_CENTER = 1, EX_DOWN = 2, MAX_EX = 3, } expand; // offset 0x50, size 0x4 float max_height; // offset 0x54, size 0x4 - class /* @class */ { + class /* @class */ + { // total size: 0xC public: unsigned int type; // offset 0x0, size 0x4 @@ -601,27 +660,31 @@ class asset_type : public xDynAsset { unsigned int texture; // offset 0x8, size 0x4 } backdrop; // offset 0x58, size 0xC }; -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 location_asset : public xDynAsset { +class location_asset : public xDynAsset +{ // total size: 0x1C public: class xVec3 loc; // offset 0x10, size 0xC }; -class tag_entry { +class tag_entry +{ // total size: 0x14 public: class substr name; // offset 0x0, size 0x8 char op; // offset 0x8, size 0x1 - class substr * args; // offset 0xC, size 0x4 + class substr* args; // offset 0xC, size 0x4 unsigned int args_size; // offset 0x10, size 0x4 }; -class RwRGBAReal { +class RwRGBAReal +{ // total size: 0x10 public: float red; // offset 0x0, size 0x4 @@ -629,28 +692,34 @@ class RwRGBAReal { float blue; // offset 0x8, size 0x4 float alpha; // offset 0xC, size 0x4 }; -class sound_context { +class sound_context +{ // total size: 0x18 public: unsigned int id; // offset 0x0, size 0x4 - enum /* @enum */ { + enum /* @enum */ + { ACTION_SET = 0, ACTION_PUSH = 1, ACTION_POP = 2, } action : 8; // offset 0x4, size 0x4 - enum /* @enum */ { + enum /* @enum */ + { TYPE_INVALID = 0, TYPE_VOLUME = 1, TYPE_TARGET = 2, TYPE_ORIGIN = 3, } type : 8; // offset 0x4, size 0x4 - enum /* @enum */ { + enum /* @enum */ + { SOURCE_MEMORY = 0, SOURCE_STREAM = 1, } source : 8; // offset 0x4, size 0x4 unsigned char anim; // offset 0x7, size 0x1 - union { // inferred - class /* @class */ { + union + { // inferred + class /* @class */ + { // total size: 0x8 public: float left; // offset 0x0, size 0x4 @@ -661,7 +730,8 @@ class sound_context { }; unsigned int speaker; // offset 0x14, size 0x4 }; -class zFrag { +class zFrag +{ // total size: 0x84 public: enum zFragType type; // offset 0x0, size 0x4 @@ -669,21 +739,22 @@ 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 }; -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 @@ -696,7 +767,8 @@ class RwCamera { class RwBBox frustumBoundBox; // offset 0x10C, size 0x18 class RwV3d frustumCorners[8]; // offset 0x124, size 0x60 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x2 public: unsigned char time : 1; // offset 0x0, size 0x1 @@ -705,20 +777,23 @@ class /* @class */ { unsigned char event : 1; // offset 0x0, size 0x1 unsigned short pad : 12; // offset 0x0, size 0x2 }; -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 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 zFragAsset { +class zFragAsset +{ // total size: 0x18 public: enum zFragType type; // offset 0x0, size 0x4 @@ -727,44 +802,51 @@ class zFragAsset { float lifetime; // offset 0x10, size 0x4 float delay; // offset 0x14, 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 wait_state_type : public state_type { +class wait_state_type : public state_type +{ // total size: 0xC public: unsigned char answer_yes; // offset 0x8, size 0x1 }; -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 RwLinkList { +class RwLinkList +{ // total size: 0x8 public: class RwLLLink link; // offset 0x0, size 0x8 }; -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 @@ -774,14 +856,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 @@ -800,15 +884,17 @@ class zLightning { float time_left; // offset 0x22C, size 0x4 float time_total; // offset 0x230, size 0x4 }; -class xGroup : public xBase { +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 xEntMechData { +class xEntMechData +{ // total size: 0x4C public: class xVec3 apos; // offset 0x0, size 0xC @@ -823,94 +909,107 @@ 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 }; -struct /* @anon0 */ { +struct /* @anon0 */ +{ // total size: 0x14 }; -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 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 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 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 substr { +class substr +{ // total size: 0x8 public: - char * text; // offset 0x0, size 0x4 + char* text; // offset 0x0, size 0x4 unsigned int size; // offset 0x4, size 0x4 }; -class xEntMotionSplineData { +class xEntMotionSplineData +{ // total size: 0x4 public: signed int unknown; // offset 0x0, 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 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 zShrapnelAsset { +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 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 xLightKitLight { +class xLightKitLight +{ // total size: 0x60 public: unsigned int type; // offset 0x0, size 0x4 @@ -918,100 +1017,110 @@ 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 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 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 }; -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 /* @class */ { +class /* @class */ +{ // total size: 0x4 public: - class xVec3 * verts; // offset 0x0, size 0x4 + class xVec3* verts; // offset 0x0, 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 /* @enum */ { +enum /* @enum */ +{ ACTION_SET = 0, ACTION_PUSH = 1, ACTION_POP = 2, }; -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 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 }; }; -class xShadowSimpleCache { +class xShadowSimpleCache +{ // total size: 0x98 public: unsigned short flags; // offset 0x0, size 0x2 @@ -1020,7 +1129,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 @@ -1029,10 +1138,12 @@ class xShadowSimpleCache { float dydz; // offset 0x64, size 0x4 class xVec3 corner[4]; // offset 0x68, size 0x30 }; -class ztextbox : public xBase { +class ztextbox : public xBase +{ // total size: 0xD0 public: - class /* @class */ { + class /* @class */ + { // total size: 0x1 public: unsigned char active : 1; // offset 0x0, size 0x1 @@ -1041,20 +1152,21 @@ class ztextbox : public xBase { unsigned char visible : 1; // offset 0x0, size 0x1 unsigned char hack_invisible : 1; // offset 0x0, size 0x1 } flag; // offset 0x10, size 0x1 - class asset_type * asset; // offset 0x14, size 0x4 + class asset_type* asset; // offset 0x14, size 0x4 class xtextbox tb; // offset 0x18, size 0x68 - char * segments[16]; // offset 0x80, size 0x40 + char* segments[16]; // offset 0x80, size 0x40 unsigned int segments_size; // offset 0xC0, size 0x4 - class ztextbox * next; // offset 0xC4, size 0x4 - class ztextbox * prev; // offset 0xC8, size 0x4 - class RwRaster * bgtex; // offset 0xCC, size 0x4 + class ztextbox* next; // offset 0xC4, size 0x4 + class ztextbox* prev; // offset 0xC8, size 0x4 + class RwRaster* bgtex; // offset 0xCC, size 0x4 }; -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 @@ -1065,12 +1177,13 @@ 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 RpVertexNormal { +class RpVertexNormal +{ // total size: 0x4 public: signed char x; // offset 0x0, size 0x1 @@ -1078,7 +1191,8 @@ class RpVertexNormal { signed char z; // offset 0x2, size 0x1 unsigned char pad; // offset 0x3, size 0x1 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x14 public: unsigned int skip; // offset 0x0, size 0x4 @@ -1087,26 +1201,30 @@ class /* @class */ { unsigned int noquit; // offset 0xC, size 0x4 unsigned int yesno; // offset 0x10, size 0x4 }; -class _tagEmitRect { +class _tagEmitRect +{ // total size: 0x8 public: float x_len; // offset 0x0, size 0x4 float z_len; // offset 0x4, size 0x4 }; -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 RwV2d { +class RwV2d +{ // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class xEntCollis { +class xEntCollis +{ // total size: 0x5B4 public: unsigned char chk; // offset 0x0, size 0x1 @@ -1121,29 +1239,32 @@ 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 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 color_type { +class color_type +{ // total size: 0x4 public: unsigned char r; // offset 0x0, size 0x1 @@ -1151,11 +1272,13 @@ class color_type { unsigned char b; // offset 0x2, size 0x1 unsigned char a; // offset 0x3, size 0x1 }; -class jot { +class jot +{ // total size: 0x38 public: class substr s; // offset 0x0, size 0x8 - class /* @class */ { + class /* @class */ + { // total size: 0x2 public: unsigned char invisible : 1; // offset 0x0, size 0x1 @@ -1173,81 +1296,89 @@ class jot { unsigned short dummy : 4; // offset 0x0, size 0x2 } flag; // offset 0x8, size 0x2 unsigned short context_size; // offset 0xA, size 0x2 - void * context; // offset 0xC, size 0x4 + void* context; // offset 0xC, size 0x4 class basic_rect bounds; // offset 0x10, size 0x10 class basic_rect render_bounds; // offset 0x20, size 0x10 - class callback * cb; // offset 0x30, size 0x4 - class tag_type * tag; // offset 0x34, size 0x4 + class callback* cb; // offset 0x30, size 0x4 + class tag_type* tag; // offset 0x34, 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 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 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 stop_state_type : public state_type { +class stop_state_type : public state_type +{ // total size: 0x8 }; -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 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 }; -class iFogParams { +class iFogParams +{ // total size: 0x1C public: enum RwFogType type; // offset 0x0, size 0x4 @@ -1256,17 +1387,19 @@ 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 }; -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 NPCSndQueue { +class NPCSndQueue +{ // total size: 0x14 public: unsigned int sndDirect; // offset 0x0, size 0x4 @@ -1275,14 +1408,16 @@ class NPCSndQueue { float tmr_delay; // offset 0xC, size 0x4 float radius; // offset 0x10, 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 xtextbox { +class xtextbox +{ // total size: 0x68 public: class xfont font; // offset 0x0, size 0x24 @@ -1292,30 +1427,34 @@ class xtextbox { float tab_stop; // offset 0x3C, size 0x4 float left_indent; // offset 0x40, size 0x4 float right_indent; // offset 0x44, size 0x4 - class callback * cb; // offset 0x48, size 0x4 - void * context; // offset 0x4C, size 0x4 - char * * texts; // offset 0x50, size 0x4 - unsigned int * text_sizes; // offset 0x54, size 0x4 + class callback* cb; // offset 0x48, size 0x4 + void* context; // offset 0x4C, size 0x4 + char** texts; // offset 0x50, size 0x4 + unsigned int* text_sizes; // offset 0x54, size 0x4 unsigned int texts_size; // offset 0x58, size 0x4 class substr text; // offset 0x5C, size 0x8 unsigned int text_hash; // offset 0x64, 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 zMovePoint : public xMovePoint { +class zMovePoint : public xMovePoint +{ // total size: 0x30 }; -class xTextAsset { +class xTextAsset +{ // total size: 0x4 public: unsigned int len; // offset 0x0, size 0x4 }; -class split_tag { +class split_tag +{ // total size: 0x20 public: class substr tag; // offset 0x0, size 0x8 @@ -1323,13 +1462,15 @@ class split_tag { class substr action; // offset 0x10, size 0x8 class substr value; // offset 0x18, size 0x8 }; -class tag_entry_list { +class tag_entry_list +{ // total size: 0x8 public: - class tag_entry * entries; // offset 0x0, size 0x4 + class tag_entry* entries; // offset 0x0, size 0x4 unsigned int size; // offset 0x4, size 0x4 }; -class xClumpCollBSPBranchNode { +class xClumpCollBSPBranchNode +{ // total size: 0x10 public: unsigned int leftInfo; // offset 0x0, size 0x4 @@ -1337,7 +1478,8 @@ class xClumpCollBSPBranchNode { float leftValue; // offset 0x8, size 0x4 float rightValue; // offset 0xC, size 0x4 }; -class xLinkAsset { +class xLinkAsset +{ // total size: 0x20 public: unsigned short srcEvent; // offset 0x0, size 0x2 @@ -1347,25 +1489,27 @@ class xLinkAsset { unsigned int paramWidgetAssetID; // offset 0x18, size 0x4 unsigned int chkAssetID; // offset 0x1C, size 0x4 }; -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 }; -class xEntFrame { +class xEntFrame +{ // total size: 0xF0 public: class xMat4x3 mat; // offset 0x0, size 0x40 @@ -1379,25 +1523,30 @@ class xEntFrame { class xVec3 vel; // offset 0xD4, size 0xC unsigned int mode; // offset 0xE0, size 0x4 }; -class xIniValue { +class xIniValue +{ // total size: 0x8 public: - char * tok; // offset 0x0, size 0x4 - char * val; // offset 0x4, size 0x4 + char* tok; // offset 0x0, size 0x4 + char* val; // offset 0x4, size 0x4 }; -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 RpLight { + 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 RpLight +{ // total size: 0x40 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 @@ -1409,7 +1558,8 @@ class RpLight { unsigned short lightFrame; // offset 0x3C, size 0x2 unsigned short pad; // offset 0x3E, size 0x2 }; -class zFragSoundAsset : public zFragAsset { +class zFragSoundAsset : public zFragAsset +{ // total size: 0x4C public: unsigned int assetID; // offset 0x18, size 0x4 @@ -1418,7 +1568,8 @@ class zFragSoundAsset : public zFragAsset { float innerRadius; // offset 0x44, size 0x4 float outerRadius; // offset 0x48, size 0x4 }; -class RpInterpolator { +class RpInterpolator +{ // total size: 0x14 public: signed int flags; // offset 0x0, size 0x4 @@ -1428,37 +1579,45 @@ class RpInterpolator { float recipTime; // offset 0xC, size 0x4 float position; // offset 0x10, size 0x4 }; -class st_PACKER_ASSETTYPE { +class st_PACKER_ASSETTYPE +{ // total size: 0x28 public: unsigned int typetag; // offset 0x0, size 0x4 unsigned int tflags; // offset 0x4, size 0x4 signed int typalign; // offset 0x8, size 0x4 - void * (* readXForm)(void *, unsigned int, void *, unsigned int, unsigned int *); // offset 0xC, size 0x4 - void * (* writeXForm)(void *, unsigned int, void *, void *, unsigned int, unsigned int *); // offset 0x10, size 0x4 - signed int (* assetLoaded)(void *, unsigned int, void *, signed int); // offset 0x14, size 0x4 - void * (* makeData)(void *, unsigned int, void *, signed int *, signed int *); // offset 0x18, size 0x4 - void (* cleanup)(void *, unsigned int, void *); // offset 0x1C, size 0x4 - void (* assetUnloaded)(void *, unsigned int); // offset 0x20, size 0x4 - void (* writePeek)(void *, unsigned int, void *, char *); // offset 0x24, size 0x4 -}; -class xEntMotionMPData { + void* (*readXForm)(void*, unsigned int, void*, unsigned int, + unsigned int*); // offset 0xC, size 0x4 + void* (*writeXForm)(void*, unsigned int, void*, void*, unsigned int, + unsigned int*); // offset 0x10, size 0x4 + signed int (*assetLoaded)(void*, unsigned int, void*, signed int); // offset 0x14, size 0x4 + void* (*makeData)(void*, unsigned int, void*, signed int*, + signed int*); // offset 0x18, size 0x4 + void (*cleanup)(void*, unsigned int, void*); // offset 0x1C, size 0x4 + void (*assetUnloaded)(void*, unsigned int); // offset 0x20, size 0x4 + void (*writePeek)(void*, unsigned int, void*, char*); // offset 0x24, size 0x4 +}; +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 callback { +class callback +{ // total 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 xEntERData { +class xEntERData +{ // total size: 0x44 public: class xVec3 a; // offset 0x0, size 0xC @@ -1473,7 +1632,8 @@ class xEntERData { float ert; // offset 0x3C, size 0x4 signed int state; // offset 0x40, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x220 public: class xVec3 base_point[16]; // offset 0x0, size 0xC0 @@ -1483,20 +1643,23 @@ 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 }; -enum /* @enum */ { +enum /* @enum */ +{ TYPE_INVALID = 0, TYPE_VOLUME = 1, TYPE_TARGET = 2, TYPE_ORIGIN = 3, }; -class xParEmitterCustomSettings : public xParEmitterPropsAsset { +class xParEmitterCustomSettings : public xParEmitterPropsAsset +{ // total size: 0x16C public: unsigned int custom_flags; // offset 0x138, size 0x4 @@ -1508,31 +1671,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 }; -class xAnimMultiFileBase { +class xAnimMultiFileBase +{ // total size: 0x4 public: unsigned int Count; // offset 0x0, 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 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 @@ -1540,30 +1707,34 @@ class RwRGBA { unsigned char blue; // offset 0x2, size 0x1 unsigned char alpha; // offset 0x3, size 0x1 }; -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 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 @@ -1573,56 +1744,66 @@ class xCollis { class tri_data tri; // offset 0x44, size 0xC }; }; -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 xQuat { +class xQuat +{ // total size: 0x10 public: class xVec3 v; // offset 0x0, size 0xC float s; // offset 0xC, size 0x4 }; -class state_type { +class state_type +{ // total size: 0x8 public: enum state_enum type; // offset 0x0, 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 zFragLocation { +class zFragLocation +{ // total size: 0x24 public: enum zFragLocType type; // offset 0x0, size 0x4 class zFragLocInfo info; // offset 0x4, size 0x20 }; -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 xEntBoulder { +class xEntBoulder +{ // total size: 0x0 }; -class RwTexCoords { +class RwTexCoords +{ // total size: 0x8 public: float u; // offset 0x0, size 0x4 float v; // offset 0x4, size 0x4 }; -class xPEEntBound { +class xPEEntBound +{ // total size: 0xC public: unsigned char flags; // offset 0x0, size 0x1 @@ -1632,45 +1813,52 @@ class xPEEntBound { float expand; // offset 0x4, size 0x4 float deflection; // offset 0x8, 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 }; -enum _tagPadState { +enum _tagPadState +{ ePad_Disabled = 0, ePad_DisabledError = 1, ePad_Enabled = 2, ePad_Missing = 3, ePad_Total = 4, }; -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 _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 xVec2 { +class xVec2 +{ // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -enum en_NPC_SOUND { +enum en_NPC_SOUND +{ NPC_STYP_BOGUS = -2, NPC_STYP_LISTEND = 0, NPC_STYP_ENCOUNTER = 1, @@ -1701,15 +1889,18 @@ enum en_NPC_SOUND { NPC_STYP_NOMORE = 26, NPC_STYP_FORCE = 2147483647, }; -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 zEntHangable { +class zEntHangable +{ // total size: 0x0 }; -class RpClump { +class RpClump +{ // total size: 0x2C public: class RwObject object; // offset 0x0, size 0x8 @@ -1717,55 +1908,61 @@ 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 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 zNPCLassoInfo { + 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 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 /* @class */ { + 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 /* @class */ +{ // total size: 0x8 public: float width; // offset 0x0, size 0x4 float height; // offset 0x4, size 0x4 }; -enum /* @enum */ { +enum /* @enum */ +{ SOURCE_MEMORY = 0, SOURCE_STREAM = 1, }; -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 @@ -1782,25 +1979,28 @@ class xGlobals { unsigned char dontShowPadMessageDuringLoadingOrCutScene; // offset 0x6F0, size 0x1 unsigned char autoSaveFeature; // offset 0x6F1, size 0x1 }; -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 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 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 @@ -1809,14 +2009,16 @@ class zFragShockwave { float currColor[4]; // offset 0x18, size 0x10 float deltColor[4]; // offset 0x28, size 0x10 }; -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 xEntAsset : public xBaseAsset { +class xEntAsset : public xBaseAsset +{ // total size: 0x54 public: unsigned char flags; // offset 0x8, size 0x1 @@ -1836,7 +2038,8 @@ class xEntAsset : public xBaseAsset { unsigned int modelInfoID; // offset 0x4C, size 0x4 unsigned int animListID; // offset 0x50, size 0x4 }; -class xEntMotionMechData { +class xEntMotionMechData +{ // total size: 0x2C public: unsigned char type; // offset 0x0, size 0x1 @@ -1854,12 +2057,14 @@ class xEntMotionMechData { float ret_delay; // offset 0x24, size 0x4 float post_ret_delay; // offset 0x28, size 0x4 }; -class xAnimMultiFile : public xAnimMultiFileBase { +class xAnimMultiFile : public xAnimMultiFileBase +{ // total size: 0xC public: class xAnimMultiFileEntry Files[1]; // offset 0x4, size 0x8 }; -enum en_trantype { +enum en_trantype +{ GOAL_TRAN_NONE = 0, GOAL_TRAN_SET = 1, GOAL_TRAN_PUSH = 2, @@ -1872,17 +2077,19 @@ enum en_trantype { GOAL_TRAN_NOMORE = 9, GOAL_TRAN_FORCE = 2147483647, }; -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 /* @class */ { +class /* @class */ +{ // total size: 0x2 public: unsigned char invisible : 1; // offset 0x0, size 0x1 @@ -1899,7 +2106,8 @@ class /* @class */ { unsigned char stateful : 1; // offset 0x1, size 0x1 unsigned short dummy : 4; // offset 0x0, size 0x2 }; -class zFragShockwaveAsset : public zFragAsset { +class zFragShockwaveAsset : public zFragAsset +{ // total size: 0x54 public: unsigned int modelInfoID; // offset 0x18, size 0x4 @@ -1912,7 +2120,8 @@ class zFragShockwaveAsset : public zFragAsset { float birthColor[4]; // offset 0x34, size 0x10 float deathColor[4]; // offset 0x44, size 0x10 }; -class xEnvAsset : public xBaseAsset { +class xEnvAsset : public xBaseAsset +{ // total size: 0x44 public: unsigned int bspAssetID; // offset 0x8, size 0x4 @@ -1931,7 +2140,8 @@ class xEnvAsset : public xBaseAsset { unsigned int bspMapperFXID; // offset 0x3C, size 0x4 float loldHeight; // offset 0x40, size 0x4 }; -class _tagxPad { +class _tagxPad +{ // total size: 0x148 public: unsigned char value[22]; // offset 0x0, size 0x16 @@ -1954,7 +2164,8 @@ class _tagxPad { float down_tmr[22]; // offset 0xC0, size 0x58 class analog_data analog[2]; // offset 0x118, size 0x30 }; -enum en_pendtype { +enum en_pendtype +{ PEND_TRAN_NONE = 0, PEND_TRAN_SET = 1, PEND_TRAN_PUSH = 2, @@ -1965,7 +2176,8 @@ enum en_pendtype { PEND_TRAN_INPROG = 7, PEND_TRAN_NOMORE = 8, }; -class xEntNPCAsset { +class xEntNPCAsset +{ // total size: 0x18 public: signed int npcFlags; // offset 0x0, size 0x4 @@ -1975,27 +2187,31 @@ class xEntNPCAsset { unsigned int taskWidgetPrime; // offset 0x10, size 0x4 unsigned int taskWidgetSecond; // offset 0x14, size 0x4 }; -class xBBox { +class xBBox +{ // total size: 0x24 public: class xVec3 center; // offset 0x0, size 0xC class xBox box; // offset 0xC, size 0x18 }; -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 _tagLightningLine { +class _tagLightningLine +{ // total size: 0x4 public: float unused; // offset 0x0, size 0x4 }; -class xEntDrive { +class xEntDrive +{ // total size: 0x7C public: unsigned int flags; // offset 0x0, size 0x4 @@ -2005,9 +2221,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 @@ -2015,14 +2231,16 @@ class xEntDrive { class xVec3 dloc; // offset 0x50, size 0xC class tri_data tri; // offset 0x5C, size 0x20 }; -class xEntPenData { +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 }; -enum zFragType { +enum zFragType +{ eFragInactive = 0, eFragGroup = 1, eFragShrapnel = 2, @@ -2034,14 +2252,16 @@ enum zFragType { eFragCount = 8, eFragForceSize = 2147483647, }; -class sound_queue { +class sound_queue +{ // total size: 0x1C public: unsigned int _playing[5]; // offset 0x0, size 0x14 signed int head; // offset 0x14, size 0x4 signed int tail; // offset 0x18, size 0x4 }; -class zNPCSettings : public xDynAsset { +class zNPCSettings : public xDynAsset +{ // total size: 0x2C public: enum en_npcbtyp basisType; // offset 0x10, size 0x4 @@ -2059,7 +2279,8 @@ class zNPCSettings : public xDynAsset { float duploSpawnDelay; // offset 0x24, size 0x4 signed int duploSpawnLifeMax; // offset 0x28, size 0x4 }; -class xVec4 { +class xVec4 +{ // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -2067,10 +2288,12 @@ class xVec4 { float z; // offset 0x8, size 0x4 float w; // offset 0xC, size 0x4 }; -class anim_coll_data { +class anim_coll_data +{ // total size: 0x0 }; -class RpGeometry { +class RpGeometry +{ // total size: 0x60 public: class RwObject object; // offset 0x0, size 0x8 @@ -2082,69 +2305,78 @@ 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 RwSurfaceProperties { + 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 RwSurfaceProperties +{ // total size: 0xC public: float ambient; // offset 0x0, size 0x4 float specular; // offset 0x4, size 0x4 float diffuse; // offset 0x8, size 0x4 }; -class RyzMemData { +class RyzMemData +{ // total size: 0x1 }; -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 xCurveAsset { +class xCurveAsset +{ // total size: 0x0 }; -class signal_context { +class signal_context +{ // total size: 0x4 public: unsigned int flags; // offset 0x0, 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 _tagPadAnalog { +class _tagPadAnalog +{ // total size: 0x2 public: signed char x; // offset 0x0, size 0x1 signed char y; // offset 0x1, size 0x1 }; -class rxReq { +class rxReq +{ // total size: 0x0 }; -class basic_rect { +class basic_rect +{ // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -2152,32 +2384,37 @@ class basic_rect { float w; // offset 0x8, size 0x4 float h; // offset 0xC, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class _tagEmitVolume { +class _tagEmitVolume +{ // total size: 0x4 public: unsigned int emit_volumeID; // offset 0x0, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x8 public: float left; // offset 0x0, size 0x4 float right; // offset 0x4, size 0x4 }; -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 xEntOrbitData { +class xEntOrbitData +{ // total size: 0x28 public: class xVec3 orig; // offset 0x0, size 0xC @@ -2187,18 +2424,21 @@ class xEntOrbitData { float p; // offset 0x20, size 0x4 float w; // offset 0x24, size 0x4 }; -class _tagiPad { +class _tagiPad +{ // total size: 0x4 public: signed int port; // offset 0x0, size 0x4 }; -enum RxClusterValidityReq { +enum RxClusterValidityReq +{ rxCLREQ_DONTWANT = 0, rxCLREQ_REQUIRED = 1, rxCLREQ_OPTIONAL = 2, rxCLUSTERVALIDITYREQFORCEENUMSIZEINT = 2147483647, }; -class NPCConfig : public xListItem { +class NPCConfig : public xListItem +{ // total size: 0x3B0 public: unsigned int modelID; // offset 0xC, size 0x4 @@ -2234,36 +2474,39 @@ 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 }; -class xAnimTable { +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 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 }; -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 @@ -2275,12 +2518,13 @@ 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 zJumpParam { +class zJumpParam +{ // total size: 0x10 public: float PeakHeight; // offset 0x0, size 0x4 @@ -2288,26 +2532,28 @@ class zJumpParam { float TimeHold; // offset 0x8, size 0x4 float ImpulseVel; // offset 0xC, size 0x4 }; -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 pointer_asset : public xDynAsset { +class pointer_asset : public xDynAsset +{ // total size: 0x28 public: class xVec3 loc; // offset 0x10, size 0xC @@ -2315,7 +2561,8 @@ class pointer_asset : public xDynAsset { float pitch; // offset 0x20, size 0x4 float roll; // offset 0x24, size 0x4 }; -class zPlatFMRunTime { +class zPlatFMRunTime +{ // total size: 0x124 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2326,37 +2573,41 @@ class zPlatFMRunTime { float vms[12]; // offset 0xC4, size 0x30 float dss[12]; // offset 0xF4, size 0x30 }; -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 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 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 @@ -2364,10 +2615,11 @@ 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 xBaseAsset { +class xBaseAsset +{ // total size: 0x8 public: unsigned int id; // offset 0x0, size 0x4 @@ -2375,14 +2627,16 @@ class xBaseAsset { unsigned char linkCount; // offset 0x5, size 0x1 unsigned short baseFlags; // offset 0x6, size 0x2 }; -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 @@ -2400,15 +2654,18 @@ class xParEmitterAsset : public xBaseAsset { unsigned int cull_mode; // offset 0x4C, size 0x4 float cull_dist_sqr; // offset 0x50, size 0x4 }; -class xPlatformAsset { +class xPlatformAsset +{ // total size: 0x0 }; -enum RxNodeDefEditable { +enum RxNodeDefEditable +{ rxNODEDEFCONST = 0, rxNODEDEFEDITABLE = 1, rxNODEDEFEDITABLEFORCEENUMSIZEINT = 2147483647, }; -class teleport_context { +class teleport_context +{ // total size: 0x14 public: unsigned char use_loc; // offset 0x0, size 0x1 @@ -2416,13 +2673,15 @@ class teleport_context { class xVec3 loc; // offset 0x4, size 0xC float yaw; // offset 0x10, size 0x4 }; -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 @@ -2431,34 +2690,41 @@ class xEntMotionAsset { class xEntMotionPenData pen; // offset 0x4, size 0x14 }; }; -enum RxClusterValid { +enum RxClusterValid +{ rxCLVALID_NOCHANGE = 0, rxCLVALID_VALID = 1, rxCLVALID_INVALID = 2, rxCLUSTERVALIDFORCEENUMSIZEINT = 2147483647, }; -class xParGroup { +class xParGroup +{ // total size: 0x0 }; -class xModelAssetParam { +class xModelAssetParam +{ // total size: 0x0 }; -class xRot { +class xRot +{ // total size: 0x10 public: class xVec3 axis; // offset 0x0, size 0xC float angle; // offset 0xC, 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 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 }; @@ -2473,7 +2739,8 @@ class xParEmitterPropsAsset : public xBaseAsset { unsigned int emit_limit; // offset 0x130, size 0x4 float emit_limit_reset_time; // offset 0x134, size 0x4 }; -class RpMeshHeader { +class RpMeshHeader +{ // total size: 0x10 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2482,35 +2749,39 @@ class RpMeshHeader { unsigned int totalIndicesInMesh; // offset 0x8, size 0x4 unsigned int firstMeshOffset; // offset 0xC, size 0x4 }; -class xPSYNote { +class xPSYNote +{ // total size: 0x4 }; -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 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 /* @class */ { +class /* @class */ +{ // total size: 0x10 public: float left; // offset 0x0, size 0x4 @@ -2518,22 +2789,26 @@ class /* @class */ { float right; // offset 0x8, size 0x4 float bottom; // offset 0xC, size 0x4 }; -class _tagEmitOffsetPoint { +class _tagEmitOffsetPoint +{ // total size: 0xC public: class xVec3 offset; // offset 0x0, size 0xC }; -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 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 @@ -2542,20 +2817,22 @@ class zFragInfo { class zFragShockwave shockwave; // offset 0x0, size 0x38 }; }; -class xMemPool { +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 /* @class */ { +class /* @class */ +{ // total size: 0x58 public: class xVec3 endPoint[2]; // offset 0x0, size 0x18 @@ -2569,36 +2846,42 @@ class /* @class */ { float arc_height; // offset 0x48, size 0x4 class xVec3 arc_normal; // offset 0x4C, size 0xC }; -enum rxEmbeddedPacketState { +enum rxEmbeddedPacketState +{ rxPKST_PACKETLESS = 0, rxPKST_UNUSED = 1, rxPKST_INUSE = 2, rxPKST_PENDING = 3, rxEMBEDDEDPACKETSTATEFORCEENUMSIZEINT = 2147483647, }; -class xSphere { +class xSphere +{ // total size: 0x10 public: class xVec3 center; // offset 0x0, size 0xC float r; // offset 0xC, size 0x4 }; -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 }; -class zCutsceneMgr { +class zCutsceneMgr +{ // total size: 0x0 }; -class trigger_pair { +class trigger_pair +{ // total size: 0x8 public: - class ztalkbox * origin; // offset 0x0, size 0x4 + class ztalkbox* origin; // offset 0x0, size 0x4 unsigned int event; // offset 0x4, size 0x4 }; -enum en_npcbtyp { +enum en_npcbtyp +{ NPCP_BASIS_NONE = 0, NPCP_BASIS_EVILROBOT = 1, NPCP_BASIS_FRIENDLYROBOT = 2, @@ -2607,42 +2890,49 @@ enum en_npcbtyp { NPCP_BASIS_NOMORE = 5, NPCP_BASIS_FORCE = 2147483647, }; -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 RpTriangle { +class RpTriangle +{ // total size: 0x8 public: unsigned short vertIndex[3]; // offset 0x0, size 0x6 signed short matIndex; // offset 0x6, size 0x2 }; -class xEntSplineData { +class xEntSplineData +{ // total size: 0x4 public: signed int unknown; // offset 0x0, size 0x4 }; -enum RwCameraProjection { +enum RwCameraProjection +{ rwNACAMERAPROJECTION = 0, rwPERSPECTIVE = 1, rwPARALLEL = 2, rwCAMERAPROJECTIONFORCEENUMSIZEINT = 2147483647, }; -enum PSY_BRAIN_STATUS { +enum PSY_BRAIN_STATUS +{ PSY_STAT_BLANK = 0, PSY_STAT_GROW = 1, PSY_STAT_EXTEND = 2, @@ -2650,31 +2940,36 @@ enum PSY_BRAIN_STATUS { PSY_STAT_NOMORE = 4, PSY_STAT_FORCE = 2147483647, }; -enum RxClusterForcePresent { +enum RxClusterForcePresent +{ rxCLALLOWABSENT = 0, rxCLFORCEPRESENT = 1, rxCLUSTERFORCEPRESENTFORCEENUMSIZEINT = 2147483647, }; -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 }; -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 zAssetPickupTable { +class zAssetPickupTable +{ // total size: 0x0 }; -class jot_line { +class jot_line +{ // total size: 0x20 public: class basic_rect bounds; // offset 0x0, size 0x10 @@ -2683,25 +2978,28 @@ class jot_line { unsigned int last; // offset 0x18, size 0x4 unsigned char page_break; // offset 0x1C, size 0x1 }; -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 xIniFile { +class xIniFile +{ // total size: 0x214 public: signed int NumValues; // offset 0x0, size 0x4 signed int NumSections; // offset 0x4, size 0x4 - class xIniValue * Values; // offset 0x8, size 0x4 - class xIniSection * Sections; // offset 0xC, size 0x4 - void * mem; // offset 0x10, size 0x4 + class xIniValue* Values; // offset 0x8, size 0x4 + class xIniSection* Sections; // offset 0xC, size 0x4 + void* mem; // offset 0x10, size 0x4 char name[256]; // offset 0x14, size 0x100 char pathname[256]; // offset 0x114, size 0x100 }; -class zGlobalSettings { +class zGlobalSettings +{ // total size: 0x150 public: unsigned short AnalogMin; // offset 0x0, size 0x2 @@ -2791,7 +3089,8 @@ class zGlobalSettings { unsigned char PowerUp[2]; // offset 0x149, size 0x2 unsigned char InitialPowerUp[2]; // offset 0x14B, size 0x2 }; -class xEntMotionPenData { +class xEntMotionPenData +{ // total size: 0x14 public: unsigned char flags; // offset 0x0, size 0x1 @@ -2802,30 +3101,34 @@ class xEntMotionPenData { float period; // offset 0xC, size 0x4 float phase; // offset 0x10, 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 zFragParticle { +class zFragParticle +{ // total size: 0x4 public: - class zFragParticleAsset * fasset; // offset 0x0, size 0x4 + class zFragParticleAsset* fasset; // offset 0x0, size 0x4 }; -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 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 @@ -2838,7 +3141,8 @@ class xNPCBasic : public xEnt, public xFactoryInst { class xEntShadow entShadow_embedded; // offset 0xF8, size 0x28 class xShadowSimpleCache simpShadow_embedded; // offset 0x120, size 0x98 }; -class layout { +class layout +{ // total size: 0x84F8 public: class xtextbox tb; // offset 0x0, size 0x68 @@ -2851,7 +3155,8 @@ class layout { unsigned short dynamics[64]; // offset 0x8474, size 0x80 unsigned int dynamics_size; // offset 0x84F4, size 0x4 }; -enum state_enum { +enum state_enum +{ STATE_INVALID = -1, BEGIN_STATE = 0, STATE_START = 1, @@ -2861,48 +3166,54 @@ enum state_enum { END_STATE = 5, MAX_STATE = 5, }; -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 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 }; -enum /* @enum */ { +enum /* @enum */ +{ XJ_LEFT = 0, XJ_CENTER = 1, XJ_RIGHT = 2, }; -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 xCoef { +class xCoef +{ // total size: 0x10 public: float a[4]; // offset 0x0, size 0x10 }; -class xPortalAsset : public xBaseAsset { +class xPortalAsset : public xBaseAsset +{ // total size: 0x18 public: unsigned int assetCameraID; // offset 0x8, size 0x4 @@ -2910,14 +3221,15 @@ class xPortalAsset : public xBaseAsset { float ang; // offset 0x10, size 0x4 unsigned int sceneID; // offset 0x14, size 0x4 }; -class shared_type { +class shared_type +{ // total size: 0x869C public: signed int flags; // offset 0x0, size 0x4 unsigned int permit; // offset 0x4, size 0x4 - class ztalkbox * active; // offset 0x8, size 0x4 - class state_type * state; // offset 0xC, size 0x4 - class state_type * states[5]; // offset 0x10, size 0x14 + class ztalkbox* active; // offset 0x8, size 0x4 + class state_type* state; // offset 0xC, size 0x4 + class state_type* states[5]; // offset 0x10, size 0x14 class layout lt; // offset 0x24, size 0x84F8 signed int begin_jot; // offset 0x851C, size 0x4 signed int end_jot; // offset 0x8520, size 0x4 @@ -2935,20 +3247,22 @@ class shared_type { unsigned char allow_quit; // offset 0x8578, size 0x1 unsigned char quitting; // offset 0x8579, size 0x1 unsigned char delay_events; // offset 0x857A, size 0x1 - class callback * cb; // offset 0x857C, size 0x4 + class callback* cb; // offset 0x857C, size 0x4 class fixed_queue triggered; // offset 0x8580, size 0x110 float volume; // offset 0x8690, size 0x4 - class zNPCCommon * speak_npc; // offset 0x8694, size 0x4 + class zNPCCommon* speak_npc; // offset 0x8694, size 0x4 unsigned int speak_player; // offset 0x8698, size 0x4 }; -class fixed_queue { +class fixed_queue +{ // total size: 0x110 public: unsigned int _first; // offset 0x0, size 0x4 unsigned int _last; // offset 0x4, size 0x4 class trigger_pair _buffer[33]; // offset 0x8, size 0x108 }; -enum en_GOALSTATE { +enum en_GOALSTATE +{ GOAL_STAT_UNKNOWN = 0, GOAL_STAT_PROCESS = 1, GOAL_STAT_ENTER = 2, @@ -2960,37 +3274,40 @@ enum en_GOALSTATE { GOAL_STAT_NOMORE = 8, GOAL_STAT_FORCE = 2147483647, }; -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 st_PKR_ASSET_TOCINFO { +class st_PKR_ASSET_TOCINFO +{ // total size: 0x18 public: unsigned int aid; // offset 0x0, size 0x4 - class st_PACKER_ASSETTYPE * typeref; // offset 0x4, size 0x4 + class st_PACKER_ASSETTYPE* typeref; // offset 0x4, size 0x4 unsigned int sector; // offset 0x8, size 0x4 unsigned int plus_offset; // offset 0xC, size 0x4 unsigned int size; // offset 0x10, size 0x4 - void * mempos; // offset 0x14, size 0x4 + void* mempos; // offset 0x14, size 0x4 }; -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 @@ -3008,7 +3325,8 @@ class zLedgeGrabParams { float startrot; // offset 0x36C, size 0x4 float endrot; // offset 0x370, size 0x4 }; -class xParInterp { +class xParInterp +{ // total size: 0x14 public: float val[2]; // offset 0x0, size 0x8 @@ -3016,84 +3334,100 @@ class xParInterp { float freq; // offset 0xC, size 0x4 float oofreq; // offset 0x10, size 0x4 }; -class RwSphere { +class RwSphere +{ // total size: 0x10 public: class RwV3d center; // offset 0x0, size 0xC float radius; // offset 0xC, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x1 public: unsigned char visible : 1; // offset 0x0, size 0x1 }; -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 callback { +class callback +{ // total size: 0xC public: - void (* render)(class jot &, class xtextbox &, float, float); // offset 0x0, size 0x4 - void (* layout_update)(class jot &, class xtextbox &, class xtextbox &); // offset 0x4, size 0x4 - void (* render_update)(class jot &, class xtextbox &, class xtextbox &); // offset 0x8, size 0x4 + void (*render)(class jot&, class xtextbox&, float, float); // offset 0x0, size 0x4 + void (*layout_update)(class jot&, class xtextbox&, class xtextbox&); // offset 0x4, size 0x4 + void (*render_update)(class jot&, class xtextbox&, class xtextbox&); // offset 0x8, size 0x4 }; -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 }; -struct /* @anon1 */ { +struct /* @anon1 */ +{ // total size: 0x14 }; -class xParSys { +class xParSys +{ // total size: 0x0 }; -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 }; -enum en_dupowavmod { +enum en_dupowavmod +{ NPCP_DUPOWAVE_CONTINUOUS = 0, NPCP_DUPOWAVE_DISCREET = 1, NPCP_DUPOWAVE_NOMORE = 2, NPCP_DUPOWAVE_FORCE = 2147483647, }; -class tag_type { +class tag_type +{ // total size: 0x14 public: class substr name; // offset 0x0, size 0x8 - void (* parse_tag)(class jot &, class xtextbox &, class xtextbox &, class split_tag &); // offset 0x8, size 0x4 - void (* reset_tag)(class jot &, class xtextbox &, class xtextbox &, class split_tag &); // offset 0xC, size 0x4 - void * context; // offset 0x10, size 0x4 -}; -class RxOutputSpec { + void (*parse_tag)(class jot&, class xtextbox&, class xtextbox&, + class split_tag&); // offset 0x8, size 0x4 + void (*reset_tag)(class jot&, class xtextbox&, class xtextbox&, + class split_tag&); // offset 0xC, size 0x4 + void* context; // offset 0x10, size 0x4 +}; +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 }; -enum _zPlayerWallJumpState { +enum _zPlayerWallJumpState +{ k_WALLJUMP_NOT = 0, k_WALLJUMP_LAUNCH = 1, k_WALLJUMP_FLIGHT = 2, k_WALLJUMP_LAND = 3, }; -enum /* @enum */ { +enum /* @enum */ +{ EX_UP = 0, EX_CENTER = 1, EX_DOWN = 2, MAX_EX = 3, }; -enum en_LASSO_STATUS { +enum en_LASSO_STATUS +{ LASS_STAT_DONE = 0, LASS_STAT_PENDING = 1, LASS_STAT_GRABBING = 2, @@ -3101,11 +3435,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 @@ -3117,7 +3452,8 @@ class zFragProjectile { class xVec3 N; // offset 0x48, size 0xC class xVec3 axis; // offset 0x54, size 0xC }; -class xMat3x3 { +class xMat3x3 +{ // total size: 0x30 public: class xVec3 right; // offset 0x0, size 0xC @@ -3127,7 +3463,8 @@ class xMat3x3 { class xVec3 at; // offset 0x20, size 0xC unsigned int pad2; // offset 0x2C, size 0x4 }; -class xParabola { +class xParabola +{ // total size: 0x24 public: class xVec3 initPos; // offset 0x0, size 0xC @@ -3136,7 +3473,8 @@ class xParabola { float minTime; // offset 0x1C, size 0x4 float maxTime; // offset 0x20, size 0x4 }; -class xPEEntBone { +class xPEEntBone +{ // total size: 0x18 public: unsigned char flags; // offset 0x0, size 0x1 @@ -3147,7 +3485,8 @@ class xPEEntBone { float radius; // offset 0x10, size 0x4 float deflection; // offset 0x14, size 0x4 }; -class xEntMotionERData { +class xEntMotionERData +{ // total size: 0x28 public: class xVec3 ret_pos; // offset 0x0, size 0xC @@ -3157,44 +3496,52 @@ class xEntMotionERData { float ret_tm; // offset 0x20, size 0x4 float ret_wait_tm; // offset 0x24, size 0x4 }; -enum RpWorldRenderOrder { +enum RpWorldRenderOrder +{ rpWORLDRENDERNARENDERORDER = 0, rpWORLDRENDERFRONT2BACK = 1, rpWORLDRENDERBACK2FRONT = 2, rpWORLDRENDERORDERFORCEENUMSIZEINT = 2147483647, }; -struct /* @anon2 */ { +struct /* @anon2 */ +{ // total size: 0x14 }; -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 }; -struct /* @anon3 */ { +struct /* @anon3 */ +{ // total size: 0x14 }; -class xClumpCollBSPVertInfo { +class xClumpCollBSPVertInfo +{ // total size: 0x4 public: unsigned short atomIndex; // offset 0x0, size 0x2 unsigned short meshVertIndex; // offset 0x2, size 0x2 }; -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 }; -struct /* @anon4 */ { +struct /* @anon4 */ +{ // total size: 0x14 }; -class asset_type : public xDynAsset { +class asset_type : public xDynAsset +{ // total size: 0x48 public: unsigned int dialog_box; // offset 0x10, size 0x4 @@ -3209,10 +3556,12 @@ class asset_type : public xDynAsset { unsigned char hide : 8; // offset 0x22, size 0x1 unsigned char audio_effect : 8; // offset 0x23, size 0x1 unsigned int teleport; // offset 0x24, size 0x4 - class /* @class */ { + class /* @class */ + { // total size: 0xC public: - class /* @class */ { + class /* @class */ + { // total size: 0x4 public: unsigned char time : 8; // offset 0x0, size 0x1 @@ -3223,7 +3572,8 @@ class asset_type : public xDynAsset { float delay; // offset 0x4, size 0x4 signed int which_event; // offset 0x8, size 0x4 } auto_wait; // offset 0x28, size 0xC - class /* @class */ { + class /* @class */ + { // total size: 0x14 public: unsigned int skip; // offset 0x0, size 0x4 @@ -3233,22 +3583,26 @@ class asset_type : public xDynAsset { unsigned int yesno; // offset 0x10, size 0x4 } prompt; // offset 0x34, size 0x14 }; -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 xfont { +class xfont +{ // total size: 0x24 public: unsigned int id; // offset 0x0, size 0x4 @@ -3258,7 +3612,8 @@ class xfont { class iColor_tag color; // offset 0x10, size 0x4 class basic_rect clip; // offset 0x14, size 0x10 }; -class zLasso { +class zLasso +{ // total size: 0xFC public: unsigned int flags; // offset 0x0, size 0x4 @@ -3285,18 +3640,20 @@ 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 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 }; -enum _tagRumbleType { +enum _tagRumbleType +{ eRumble_Off = 0, eRumble_Hi = 1, eRumble_VeryLightHi = 2, @@ -3312,7 +3669,8 @@ enum _tagRumbleType { eRumble_Total = 12, eRumbleForceU32 = 2147483647, }; -enum zFragLocType { +enum zFragLocType +{ eFragLocBone = 0, eFragLocBoneUpdated = 1, eFragLocBoneLocal = 2, @@ -3322,24 +3680,27 @@ enum zFragLocType { eFragLocCount = 6, eFragLocForceSize = 2147483647, }; -enum _zPlayerType { +enum _zPlayerType +{ ePlayer_SB = 0, ePlayer_Patrick = 1, ePlayer_Sandy = 2, ePlayer_MAXTYPES = 3, }; -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 xQCData { +class xQCData +{ // total size: 0x20 public: signed char xmin; // offset 0x0, size 0x1 @@ -3353,16 +3714,18 @@ class xQCData { class xVec3 min; // offset 0x8, size 0xC class xVec3 max; // offset 0x14, size 0xC }; -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 /* @class */ { +class /* @class */ +{ // total size: 0x1 public: unsigned char active : 1; // offset 0x0, size 0x1 @@ -3371,10 +3734,12 @@ class /* @class */ { unsigned char visible : 1; // offset 0x0, size 0x1 unsigned char hack_invisible : 1; // offset 0x0, size 0x1 }; -class /* @class */ { +class /* @class */ +{ // total size: 0xC public: - class /* @class */ { + class /* @class */ + { // total size: 0x4 public: unsigned char time : 8; // offset 0x0, size 0x1 @@ -3385,18 +3750,23 @@ class /* @class */ { float delay; // offset 0x4, size 0x4 signed int which_event; // offset 0x8, 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 analog_data { + 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 analog_data +{ // total size: 0x18 public: class xVec2 offset; // offset 0x0, size 0x8 @@ -3404,13 +3774,16 @@ class analog_data { float mag; // offset 0x10, size 0x4 float ang; // offset 0x14, size 0x4 }; -class start_state_type : public state_type { +class start_state_type : public state_type +{ // total size: 0x8 }; -class zParEmitter : public xParEmitter { +class zParEmitter : public xParEmitter +{ // total size: 0x78 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x4 public: unsigned char time : 8; // offset 0x0, size 0x1 @@ -3418,19 +3791,22 @@ class /* @class */ { unsigned char sound : 8; // offset 0x2, size 0x1 unsigned char event : 8; // offset 0x3, size 0x1 }; -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 _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 RwFrustumPlane { +class RwFrustumPlane +{ // total size: 0x14 public: class RwPlane plane; // offset 0x0, size 0x10 @@ -3439,35 +3815,38 @@ class RwFrustumPlane { unsigned char closestZ; // offset 0x12, size 0x1 unsigned char pad; // offset 0x13, size 0x1 }; -class /* @class */ { +class /* @class */ +{ // total size: 0x14 public: - char * skip; // offset 0x0, size 0x4 - char * noskip; // offset 0x4, size 0x4 - char * quit; // offset 0x8, size 0x4 - char * noquit; // offset 0xC, size 0x4 - char * yesno; // offset 0x10, size 0x4 + char* skip; // offset 0x0, size 0x4 + char* noskip; // offset 0x4, size 0x4 + char* quit; // offset 0x8, size 0x4 + char* noquit; // offset 0xC, size 0x4 + char* yesno; // offset 0x10, size 0x4 }; -class RwPlane { +class RwPlane +{ // total size: 0x10 public: class RwV3d normal; // offset 0x0, size 0xC float distance; // offset 0xC, size 0x4 }; -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 @@ -3489,7 +3868,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 @@ -3501,7 +3880,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 @@ -3522,24 +3901,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 @@ -3554,7 +3933,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 @@ -3579,7 +3958,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 @@ -3592,7 +3971,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 @@ -3600,7 +3979,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 @@ -3610,33 +3989,37 @@ class zPlayerGlobals { float KnockBackTimer; // offset 0x1930, size 0x4 float KnockIntoAirTimer; // offset 0x1934, size 0x4 }; -class /* @class */ { +class /* @class */ +{ // total size: 0xC public: unsigned int type; // offset 0x0, size 0x4 class color_type color; // offset 0x4, size 0x4 unsigned int texture; // offset 0x8, size 0x4 }; -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 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 xEntMotionOrbitData { +class xEntMotionOrbitData +{ // total size: 0x18 public: class xVec3 center; // offset 0x0, size 0xC @@ -3644,22 +4027,25 @@ class xEntMotionOrbitData { float h; // offset 0x10, size 0x4 float period; // offset 0x14, size 0x4 }; -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 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 @@ -3689,9 +4075,10 @@ 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 next_state_type : public state_type { +class next_state_type : public state_type +{ // total size: 0xC public: signed int prev_wait_jot; // offset 0x8, size 0x4 @@ -3704,7 +4091,8 @@ class next_state_type : public state_type { Code range: 0x0031D6F0 -> 0x0031D720 */ // Range: 0x31D6F0 -> 0x31D720 -void permit(unsigned int add_flags /* r2 */, unsigned int remove_flags /* r2 */) { +void permit(unsigned int add_flags /* r2 */, unsigned int remove_flags /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31D6F0 -> 0x31D720 @@ -3718,7 +4106,8 @@ void permit(unsigned int add_flags /* r2 */, unsigned int remove_flags /* r2 */) Code range: 0x0031D720 -> 0x0031D72C */ // Range: 0x31D720 -> 0x31D72C -class ztalkbox * get_active() { +class ztalkbox* get_active() +{ // Blocks /* anonymous block */ { // Range: 0x31D720 -> 0x31D72C @@ -3732,7 +4121,8 @@ class ztalkbox * get_active() { Code range: 0x0031D730 -> 0x0031D7B0 */ // Range: 0x31D730 -> 0x31D7B0 -void reset_all() { +void reset_all() +{ // Blocks /* anonymous block */ { // Range: 0x31D730 -> 0x31D7B0 @@ -3746,11 +4136,12 @@ void reset_all() { Code range: 0x0031D7B0 -> 0x0031D860 */ // Range: 0x31D7B0 -> 0x31D860 -void render_all() { +void render_all() +{ // Blocks /* anonymous block */ { // Range: 0x31D7B0 -> 0x31D860 - class ztextbox & d; // r16 + class ztextbox& d; // r16 } } @@ -3761,7 +4152,8 @@ void render_all() { Code range: 0x0031D860 -> 0x0031DC08 */ // Range: 0x31D860 -> 0x31DC08 -void update_all(class xScene & s /* r21 */, float dt /* r20 */) { +void update_all(class xScene& s /* r21 */, float dt /* r20 */) +{ // Blocks /* anonymous block */ { // Range: 0x31D860 -> 0x31DC08 @@ -3777,7 +4169,8 @@ void update_all(class xScene & s /* r21 */, float dt /* r20 */) { Code range: 0x0031DCA0 -> 0x0031DCA8 */ // Range: 0x31DCA0 -> 0x31DCA8 -void load(class xBase & data /* r2 */, class xDynAsset & asset /* r2 */) { +void load(class xBase& data /* r2 */, class xDynAsset& asset /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31DCA0 -> 0x31DCA8 @@ -3791,7 +4184,8 @@ void load(class xBase & data /* r2 */, class xDynAsset & asset /* r2 */) { Code range: 0x0031DCB0 -> 0x0031DE30 */ // Range: 0x31DCB0 -> 0x31DE30 -void init() { +void init() +{ // Blocks /* anonymous block */ { // Range: 0x31DCB0 -> 0x31DE30 @@ -3813,7 +4207,8 @@ void init() { Code range: 0x0031DE30 -> 0x0031DE60 */ // Range: 0x31DE30 -> 0x31DE60 -void load_settings(class xIniFile & ini /* r2 */) { +void load_settings(class xIniFile& ini /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31DE30 -> 0x31DE60 @@ -3827,15 +4222,17 @@ void load_settings(class xIniFile & ini /* r2 */) { Code range: 0x0031DE60 -> 0x0031DF50 */ // Range: 0x31DE60 -> 0x31DF50 -void MasterLoveSlave(class ztalkbox * this /* r17 */, class xBase * slave /* r2 */, signed int starting /* r16 */) { +void MasterLoveSlave(class ztalkbox* this /* r17 */, class xBase* slave /* r2 */, + signed int starting /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x31DE60 -> 0x31DF50 - class xGroup * grp; // r20 + class xGroup* grp; // r20 signed int cnt; // r19 signed int i; // r18 - class xBase * grpitem; // r2 - class zNPCCommon * npc; // r2 + class xBase* grpitem; // r2 + class zNPCCommon* npc; // r2 } } @@ -3846,13 +4243,14 @@ void MasterLoveSlave(class ztalkbox * this /* r17 */, class xBase * slave /* r2 Code range: 0x0031DF50 -> 0x0031E010 */ // Range: 0x31DF50 -> 0x31E010 -void MasterTellSlaves(class ztalkbox * this /* r19 */, signed int isBeginning /* r18 */) { +void MasterTellSlaves(class ztalkbox* this /* r19 */, signed int isBeginning /* r18 */) +{ // Blocks /* anonymous block */ { // Range: 0x31DF50 -> 0x31E010 signed int i; // r17 - class xLinkAsset * link; // r20 - class xBase * mychild; // r2 + class xLinkAsset* link; // r20 + class xBase* mychild; // r2 } } @@ -3863,7 +4261,8 @@ void MasterTellSlaves(class ztalkbox * this /* r19 */, signed int isBeginning /* Code range: 0x0031E010 -> 0x0031E0C4 */ // Range: 0x31E010 -> 0x31E0C4 -void stop_talk(class ztalkbox * this /* r2 */) { +void stop_talk(class ztalkbox* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31E010 -> 0x31E0C4 @@ -3877,11 +4276,13 @@ void stop_talk(class ztalkbox * this /* r2 */) { Code range: 0x0031E0D0 -> 0x0031E148 */ // Range: 0x31E0D0 -> 0x31E148 -void start_talk(class ztalkbox * this /* r18 */, unsigned int text_id /* r2 */, class callback * cb /* r17 */, class zNPCCommon * npc /* r16 */) { +void start_talk(class ztalkbox* this /* r18 */, unsigned int text_id /* r2 */, + class callback* cb /* r17 */, class zNPCCommon* npc /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x31E0D0 -> 0x31E148 - class xTextAsset * ta; // r2 + class xTextAsset* ta; // r2 } } @@ -3892,11 +4293,13 @@ void start_talk(class ztalkbox * this /* r18 */, unsigned int text_id /* r2 */, Code range: 0x0031E150 -> 0x0031E654 */ // Range: 0x31E150 -> 0x31E654 -void start_talk(class ztalkbox * this /* r18 */, char * s /* r17 */, class callback * cb /* r16 */, class zNPCCommon * npc /* r2 */) { +void start_talk(class ztalkbox* this /* r18 */, char* s /* r17 */, class callback* cb /* r16 */, + class zNPCCommon* npc /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31E150 -> 0x31E654 - class ztextbox & d; // r18 + class ztextbox& d; // r18 unsigned char registered; // @ 0x0051009C } } @@ -3908,11 +4311,12 @@ void start_talk(class ztalkbox * this /* r18 */, char * s /* r17 */, class callb Code range: 0x0031E660 -> 0x0031E6B8 */ // Range: 0x31E660 -> 0x31E6B8 -void set_text(class ztalkbox * this /* r16 */, unsigned int id /* r2 */) { +void set_text(class ztalkbox* this /* r16 */, unsigned int id /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31E660 -> 0x31E6B8 - class xTextAsset * ta; // r2 + class xTextAsset* ta; // r2 } } @@ -3923,11 +4327,12 @@ void set_text(class ztalkbox * this /* r16 */, unsigned int id /* r2 */) { Code range: 0x0031E6C0 -> 0x0031E88C */ // Range: 0x31E6C0 -> 0x31E88C -void set_text(class ztalkbox * this /* r17 */, char * s /* r2 */) { +void set_text(class ztalkbox* this /* r17 */, char* s /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31E6C0 -> 0x31E88C - class ztextbox & d; // r16 + class ztextbox& d; // r16 } } @@ -3938,7 +4343,8 @@ void set_text(class ztalkbox * this /* r17 */, char * s /* r2 */) { Code range: 0x0031E890 -> 0x0031EB14 */ // Range: 0x31E890 -> 0x31EB14 -void load(class ztalkbox * this /* r17 */, class asset_type & a /* r16 */) { +void load(class ztalkbox* this /* r17 */, class asset_type& a /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x31E890 -> 0x31EB14 @@ -3952,11 +4358,13 @@ void load(class ztalkbox * this /* r17 */, class asset_type & a /* r16 */) { Code range: 0x0031EB20 -> 0x0031F268 */ // Range: 0x31EB20 -> 0x31F268 -static signed int cb_dispatch(class xBase * to /* r2 */, unsigned int event /* r2 */, float * argf /* r2 */) { +static signed int cb_dispatch(class xBase* to /* r2 */, unsigned int event /* r2 */, + float* argf /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31EB20 -> 0x31F268 - class ztalkbox & e; // r16 + class ztalkbox& e; // r16 } } @@ -3967,7 +4375,9 @@ static signed int cb_dispatch(class xBase * to /* r2 */, unsigned int event /* r Code range: 0x0031F270 -> 0x0031F330 */ // Range: 0x31F270 -> 0x31F330 -static void stop_wait(class ztalkbox & e /* r2 */, float * args /* r2 */, unsigned int args_size /* r2 */) { +static void stop_wait(class ztalkbox& e /* r2 */, float* args /* r2 */, + unsigned int args_size /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F270 -> 0x31F330 @@ -3984,11 +4394,12 @@ static void stop_wait(class ztalkbox & e /* r2 */, float * args /* r2 */, unsign Code range: 0x0031F330 -> 0x0031F380 */ // Range: 0x31F330 -> 0x31F380 -static void hide_prompts() { +static void hide_prompts() +{ // Blocks /* anonymous block */ { // Range: 0x31F330 -> 0x31F380 - class ztalkbox & active; // r16 + class ztalkbox& active; // r16 } } @@ -3999,13 +4410,14 @@ static void hide_prompts() { Code range: 0x0031F380 -> 0x0031F518 */ // Range: 0x31F380 -> 0x31F518 -static void refresh_prompts() { +static void refresh_prompts() +{ // Blocks /* anonymous block */ { // Range: 0x31F380 -> 0x31F518 - class ztalkbox & active; // r16 - char * message; // r2 - char * queries[2]; // r29+0x28 + class ztalkbox& active; // r16 + char* message; // r2 + char* queries[2]; // r29+0x28 } } @@ -4016,7 +4428,8 @@ static void refresh_prompts() { Code range: 0x0031F520 -> 0x0031F55C */ // Range: 0x31F520 -> 0x31F55C -static void unlock_stream() { +static void unlock_stream() +{ // Blocks /* anonymous block */ { // Range: 0x31F520 -> 0x31F55C @@ -4030,7 +4443,8 @@ static void unlock_stream() { Code range: 0x0031F560 -> 0x0031F610 */ // Range: 0x31F560 -> 0x31F610 -static void deactivate() { +static void deactivate() +{ // Blocks /* anonymous block */ { // Range: 0x31F560 -> 0x31F610 @@ -4044,11 +4458,12 @@ static void deactivate() { Code range: 0x0031F610 -> 0x0031F698 */ // Range: 0x31F610 -> 0x31F698 -static unsigned char trigger_wait(class jot & j /* r2 */) { +static unsigned char trigger_wait(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F610 -> 0x31F698 - class wait_context & c; // r5 + class wait_context& c; // r5 } } @@ -4059,11 +4474,13 @@ static unsigned char trigger_wait(class jot & j /* r2 */) { Code range: 0x0031F6A0 -> 0x0031F780 */ // Range: 0x31F6A0 -> 0x31F780 -static void parse_tag_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { +static void parse_tag_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, + class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F6A0 -> 0x31F780 - class wait_context & c; // r16 + class wait_context& c; // r16 class tag_entry_list el; // r29+0x28 } } @@ -4075,7 +4492,8 @@ static void parse_tag_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */ Code range: 0x0031F780 -> 0x0031F7C0 */ // Range: 0x31F780 -> 0x31F7C0 -static unsigned char trigger_trap(class jot & j /* r2 */) { +static unsigned char trigger_trap(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F780 -> 0x31F7C0 @@ -4089,7 +4507,8 @@ static unsigned char trigger_trap(class jot & j /* r2 */) { Code range: 0x0031F7C0 -> 0x0031F7F8 */ // Range: 0x31F7C0 -> 0x31F7F8 -static void reset_tag_trap(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { +static void reset_tag_trap(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F7C0 -> 0x31F7F8 @@ -4103,11 +4522,12 @@ static void reset_tag_trap(class jot & j /* r2 */, class xtextbox & ctb /* r2 */ Code range: 0x0031F800 -> 0x0031F858 */ // Range: 0x31F800 -> 0x31F858 -static void parse_tag_trap(class jot & j /* r2 */, class split_tag & ti /* r2 */) { +static void parse_tag_trap(class jot& j /* r2 */, class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F800 -> 0x31F858 - unsigned char & c; // r16 + unsigned char& c; // r16 } } @@ -4118,11 +4538,12 @@ static void parse_tag_trap(class jot & j /* r2 */, class split_tag & ti /* r2 */ Code range: 0x0031F860 -> 0x0031F92C */ // Range: 0x31F860 -> 0x31F92C -static unsigned char trigger_teleport(class jot & j /* r2 */) { +static unsigned char trigger_teleport(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F860 -> 0x31F92C - class teleport_context & c; // r4 + class teleport_context& c; // r4 } } @@ -4133,15 +4554,16 @@ static unsigned char trigger_teleport(class jot & j /* r2 */) { Code range: 0x0031F930 -> 0x0031FA84 */ // Range: 0x31F930 -> 0x31FA84 -static void parse_tag_teleport(class jot & j /* r18 */, class split_tag & ti /* r2 */) { +static void parse_tag_teleport(class jot& j /* r18 */, class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31F930 -> 0x31FA84 - class teleport_context & c; // r17 + class teleport_context& c; // r17 unsigned int id; // r2 - class xDynAsset * a; // r16 - class location_asset & ta; // r2 - class pointer_asset & ta; // r2 + class xDynAsset* a; // r16 + class location_asset& ta; // r2 + class pointer_asset& ta; // r2 } } @@ -4152,7 +4574,8 @@ static void parse_tag_teleport(class jot & j /* r18 */, class split_tag & ti /* Code range: 0x0031FA90 -> 0x0031FAA8 */ // Range: 0x31FA90 -> 0x31FAA8 -static unsigned char trigger_allow_quit(class jot & j /* r2 */) { +static unsigned char trigger_allow_quit(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31FA90 -> 0x31FAA8 @@ -4166,7 +4589,8 @@ static unsigned char trigger_allow_quit(class jot & j /* r2 */) { Code range: 0x0031FAB0 -> 0x0031FAE8 */ // Range: 0x31FAB0 -> 0x31FAE8 -static void reset_tag_allow_quit(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { +static void reset_tag_allow_quit(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31FAB0 -> 0x31FAE8 @@ -4180,11 +4604,12 @@ static void reset_tag_allow_quit(class jot & j /* r2 */, class xtextbox & ctb /* Code range: 0x0031FAF0 -> 0x0031FB48 */ // Range: 0x31FAF0 -> 0x31FB48 -static void parse_tag_allow_quit(class jot & j /* r2 */, class split_tag & ti /* r2 */) { +static void parse_tag_allow_quit(class jot& j /* r2 */, class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31FAF0 -> 0x31FB48 - unsigned char & c; // r16 + unsigned char& c; // r16 } } @@ -4195,7 +4620,8 @@ static void parse_tag_allow_quit(class jot & j /* r2 */, class split_tag & ti /* Code range: 0x0031FB50 -> 0x0031FB58 */ // Range: 0x31FB50 -> 0x31FB58 -static unsigned char trigger_pause() { +static unsigned char trigger_pause() +{ // Blocks /* anonymous block */ { // Range: 0x31FB50 -> 0x31FB58 @@ -4209,7 +4635,8 @@ static unsigned char trigger_pause() { Code range: 0x0031FB60 -> 0x0031FB68 */ // Range: 0x31FB60 -> 0x31FB68 -static void reset_tag_pause() { +static void reset_tag_pause() +{ // Blocks /* anonymous block */ { // Range: 0x31FB60 -> 0x31FB68 @@ -4223,7 +4650,8 @@ static void reset_tag_pause() { Code range: 0x0031FB70 -> 0x0031FB78 */ // Range: 0x31FB70 -> 0x31FB78 -static void parse_tag_pause() { +static void parse_tag_pause() +{ // Blocks /* anonymous block */ { // Range: 0x31FB70 -> 0x31FB78 @@ -4237,18 +4665,19 @@ static void parse_tag_pause() { Code range: 0x0031FB80 -> 0x003200A8 */ // Range: 0x31FB80 -> 0x3200A8 -static unsigned char trigger_sound(class jot & j /* r2 */) { +static unsigned char trigger_sound(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x31FB80 -> 0x3200A8 - class sound_context & c; // r16 - class ztalkbox & talk; // r5 - class zNPCCommon * npc; // r20 - class xEnt * player; // r19 - class xBase * obj; // r29+0x6C + class sound_context& c; // r16 + class ztalkbox& talk; // r5 + class zNPCCommon* npc; // r20 + class xEnt* player; // r19 + class xBase* obj; // r29+0x6C unsigned int i; // r18 unsigned int size; // r17 - class xBase * entry; // r2 + class xBase* entry; // r2 } } @@ -4259,11 +4688,12 @@ static unsigned char trigger_sound(class jot & j /* r2 */) { Code range: 0x003200B0 -> 0x003200F0 */ // Range: 0x3200B0 -> 0x3200F0 -static void reset_tag_sound(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { +static void reset_tag_sound(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x3200B0 -> 0x3200F0 - class sound_context & c; // r5 + class sound_context& c; // r5 } } @@ -4274,15 +4704,17 @@ static void reset_tag_sound(class jot & j /* r2 */, class xtextbox & ctb /* r2 * Code range: 0x003200F0 -> 0x003205E8 */ // Range: 0x3200F0 -> 0x3205E8 -static void parse_tag_sound(class jot & j /* r18 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { +static void parse_tag_sound(class jot& j /* r18 */, class xtextbox& ctb /* r2 */, + class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x3200F0 -> 0x3205E8 - class sound_context & c; // r17 - class tag_entry * e; // r2 + class sound_context& c; // r17 + class tag_entry* e; // r2 class tag_entry_list el; // r29+0xE0 - class substr & action; // r16 - class substr & action; // r16 + class substr& action; // r16 + class substr& action; // r16 signed int anim; // r29+0xEC class st_PKR_ASSET_TOCINFO ainfo; // r29+0x40 unsigned int source; // r5 @@ -4296,11 +4728,12 @@ static void parse_tag_sound(class jot & j /* r18 */, class xtextbox & ctb /* r2 Code range: 0x003205F0 -> 0x00320780 */ // Range: 0x3205F0 -> 0x320780 -static unsigned char trigger_signal(class jot & j /* r2 */) { +static unsigned char trigger_signal(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x3205F0 -> 0x320780 - class signal_context & c; // r20 + class signal_context& c; // r20 unsigned int i; // r19 unsigned int signals[20]; // @ 0x005009B0 } @@ -4313,12 +4746,14 @@ static unsigned char trigger_signal(class jot & j /* r2 */) { Code range: 0x00320780 -> 0x00320918 */ // Range: 0x320780 -> 0x320918 -static void parse_tag_signal(class jot & j /* r2 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { +static void parse_tag_signal(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, + class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x320780 -> 0x320918 - class signal_context & c; // r16 - class tag_entry * e; // r2 + class signal_context& c; // r16 + class tag_entry* e; // r2 class tag_entry_list el; // r29+0x88 signed int v[20]; // r29+0x20 unsigned int r; // r2 @@ -4333,7 +4768,8 @@ static void parse_tag_signal(class jot & j /* r2 */, class xtextbox & ctb /* r2 Code range: 0x00320920 -> 0x0032096C */ // Range: 0x320920 -> 0x32096C -static unsigned char trigger_auto_wait(class jot & j /* r2 */) { +static unsigned char trigger_auto_wait(class jot& j /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x320920 -> 0x32096C @@ -4347,11 +4783,12 @@ static unsigned char trigger_auto_wait(class jot & j /* r2 */) { Code range: 0x00320970 -> 0x00320A00 */ // Range: 0x320970 -> 0x320A00 -static void reset_tag_auto_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { +static void reset_tag_auto_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x320970 -> 0x320A00 - class wait_context & c; // r16 + class wait_context& c; // r16 } } @@ -4362,13 +4799,15 @@ static void reset_tag_auto_wait(class jot & j /* r2 */, class xtextbox & ctb /* Code range: 0x00320A00 -> 0x00320B18 */ // Range: 0x320A00 -> 0x320B18 -static void parse_tag_auto_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { +static void parse_tag_auto_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, + class split_tag& ti /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x320A00 -> 0x320B18 - class wait_context & c; // r16 + class wait_context& c; // r16 class tag_entry_list el; // r29+0x28 - class tag_entry & e; // r4 + class tag_entry& e; // r4 } } @@ -4379,12 +4818,13 @@ static void parse_tag_auto_wait(class jot & j /* r2 */, class xtextbox & ctb /* Code range: 0x00320B20 -> 0x00320EF8 */ // Range: 0x320B20 -> 0x320EF8 -static void load_wait_context(class wait_context & c /* r18 */, class tag_entry_list & el /* r17 */) { +static void load_wait_context(class wait_context& c /* r18 */, class tag_entry_list& el /* r17 */) +{ // Blocks /* anonymous block */ { // Range: 0x320B20 -> 0x320EF8 - class tag_entry * e; // r2 - class tag_entry * prompt; // r2 + class tag_entry* e; // r2 + class tag_entry* prompt; // r2 unsigned int r; // r2 unsigned int i; // r7 signed int v[32]; // @ 0x005DDFC0 @@ -4398,11 +4838,12 @@ static void load_wait_context(class wait_context & c /* r18 */, class tag_entry_ Code range: 0x00320F00 -> 0x00320FFC */ // Range: 0x320F00 -> 0x320FFC -static void reset_auto_wait() { +static void reset_auto_wait() +{ // Blocks /* anonymous block */ { // Range: 0x320F00 -> 0x320FFC - class asset_type & a; // r3 + class asset_type& a; // r3 } } @@ -4413,7 +4854,8 @@ static void reset_auto_wait() { Code range: 0x00321000 -> 0x003210C0 */ // Range: 0x321000 -> 0x3210C0 -static unsigned char read_bool(class substr & s /* r18 */, unsigned char def /* r2 */) { +static unsigned char read_bool(class substr& s /* r18 */, unsigned char def /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x321000 -> 0x3210C0 @@ -4431,7 +4873,8 @@ static unsigned char read_bool(class substr & s /* r18 */, unsigned char def /* Code range: 0x003210C0 -> 0x00321C60 */ // Range: 0x3210C0 -> 0x321C60 -static void trigger_pads(unsigned int pressed /* r16 */) { +static void trigger_pads(unsigned int pressed /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x3210C0 -> 0x321C60 @@ -4445,7 +4888,8 @@ static void trigger_pads(unsigned int pressed /* r16 */) { Code range: 0x00321C60 -> 0x00321D34 */ // Range: 0x321C60 -> 0x321D34 -static void trigger(unsigned int event /* r2 */) { +static void trigger(unsigned int event /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x321C60 -> 0x321D34 @@ -4459,7 +4903,8 @@ static void trigger(unsigned int event /* r2 */) { Code range: 0x00321D40 -> 0x00321D9C */ // Range: 0x321D40 -> 0x321D9C -static void speak_stop() { +static void speak_stop() +{ // Blocks /* anonymous block */ { // Range: 0x321D40 -> 0x321D9C @@ -4473,7 +4918,8 @@ static void speak_stop() { Code range: 0x00321DA0 -> 0x00321DA8 */ // Range: 0x321DA0 -> 0x321DA8 -static void start() { +static void start() +{ // Blocks /* anonymous block */ { // Range: 0x321DA0 -> 0x321DA8 @@ -4487,7 +4933,8 @@ static void start() { Code range: 0x00321DB0 -> 0x00321DB8 */ // Range: 0x321DB0 -> 0x321DB8 -static void stop() { +static void stop() +{ // Blocks /* anonymous block */ { // Range: 0x321DB0 -> 0x321DB8 @@ -4501,7 +4948,8 @@ static void stop() { Code range: 0x00321DC0 -> 0x00321DC8 */ // Range: 0x321DC0 -> 0x321DC8 -static enum state_enum update() { +static enum state_enum update() +{ // Blocks /* anonymous block */ { // Range: 0x321DC0 -> 0x321DC8 @@ -4515,7 +4963,8 @@ static enum state_enum update() { Code range: 0x00321DD0 -> 0x00321DD8 */ // Range: 0x321DD0 -> 0x321DD8 -static void start(class wait_state_type * this /* r2 */) { +static void start(class wait_state_type* this /* r2 */) +{ // Blocks /* anonymous block */ { // Range: 0x321DD0 -> 0x321DD8 @@ -4529,7 +4978,8 @@ static void start(class wait_state_type * this /* r2 */) { Code range: 0x00321DE0 -> 0x00321F98 */ // Range: 0x321DE0 -> 0x321F98 -static void stop(class wait_state_type * this /* r16 */) { +static void stop(class wait_state_type* this /* r16 */) +{ // Blocks /* anonymous block */ { // Range: 0x321DE0 -> 0x321F98 @@ -4543,7 +4993,8 @@ static void stop(class wait_state_type * this /* r16 */) { Code range: 0x00321FA0 -> 0x00322388 */ // Range: 0x321FA0 -> 0x322388 -static enum state_enum update(class wait_state_type * this /* r16 */, float dt /* r20 */) { +static enum state_enum update(class wait_state_type* this /* r16 */, float dt /* r20 */) +{ // Blocks /* anonymous block */ { // Range: 0x321FA0 -> 0x322388 @@ -4557,14 +5008,15 @@ static enum state_enum update(class wait_state_type * this /* r16 */, float dt / Code range: 0x00322390 -> 0x003225C8 */ // Range: 0x322390 -> 0x3225C8 -static void start() { +static void start() +{ // Blocks /* anonymous block */ { // Range: 0x322390 -> 0x3225C8 - class xtextbox & tb; // r2 + class xtextbox& tb; // r2 signed int size; // r29+0x2C signed int jots_size; // r16 - class jot * prev; // r5 + class jot* prev; // r5 } } @@ -4575,7 +5027,8 @@ static void start() { Code range: 0x003225D0 -> 0x003225D8 */ // Range: 0x3225D0 -> 0x3225D8 -static void stop() { +static void stop() +{ // Blocks /* anonymous block */ { // Range: 0x3225D0 -> 0x3225D8 @@ -4589,7 +5042,8 @@ static void stop() { Code range: 0x003225E0 -> 0x00322604 */ // Range: 0x3225E0 -> 0x322604 -static enum state_enum update() { +static enum state_enum update() +{ // Blocks /* anonymous block */ { // Range: 0x3225E0 -> 0x322604 @@ -4603,7 +5057,8 @@ static enum state_enum update() { Code range: 0x00322610 -> 0x00322680 */ // Range: 0x322610 -> 0x322680 -static void start() { +static void start() +{ // Blocks /* anonymous block */ { // Range: 0x322610 -> 0x322680 @@ -4617,7 +5072,8 @@ static void start() { Code range: 0x00322680 -> 0x00322688 */ // Range: 0x322680 -> 0x322688 -static void stop() { +static void stop() +{ // Blocks /* anonymous block */ { // Range: 0x322680 -> 0x322688 @@ -4631,10 +5087,10 @@ static void stop() { Code range: 0x00322690 -> 0x00322698 */ // Range: 0x322690 -> 0x322698 -static enum state_enum update() { +static enum state_enum update() +{ // Blocks /* anonymous block */ { // Range: 0x322690 -> 0x322698 } } - diff --git a/src/SB/Core/x/containers.h b/src/SB/Core/x/containers.h index bfaf87e3..c37892e1 100644 --- a/src/SB/Core/x/containers.h +++ b/src/SB/Core/x/containers.h @@ -42,7 +42,8 @@ template struct static_queue U32 _max_size_mask; T* _buffer; - struct iterator { + struct iterator + { U32 _it; static_queue* _owner; @@ -68,12 +69,12 @@ template struct static_queue return this; } }; - + bool empty() const { return size() == 0; } - + U32 size() const { return _size; @@ -93,7 +94,7 @@ template struct static_queue _buffer = (T*)xMemAlloc(gActiveHeap, sizeof(T) * (size), 0); clear(); } - + void clear() { _size = 0; @@ -140,7 +141,7 @@ template struct static_queue { return size() == max_size(); } - + U32 max_size() const { return _max_size - 1; @@ -160,7 +161,7 @@ template struct static_queue _size -= mod_max_size(other._it - it._it); } } - + iterator end() const { iterator it; @@ -173,17 +174,105 @@ template struct fixed_queue U32 _first; U32 _last; T _buffer[N + 1]; + T& back(); - void reset(); - void front(); - void pop_front(); - void push_front(const T& element); + struct iterator + { + fixed_queue* queue; + U32 index; + + T& operator*() const; + iterator& operator+=(int n); + iterator operator-=(int n); + iterator operator-(int n) const; + }; + + iterator end() const; + iterator create_iterator(u32 index) const; void push_back(); - bool full() const; - void back(); - void pop_back(); bool empty() const; - U32 size() const; + void pop_front(); + T& front(); + iterator begin() const; + void reset(); + void clear(); }; +template T& fixed_queue::iterator::operator*() const +{ + return queue->_buffer[index]; +} + +template +typename fixed_queue::iterator& fixed_queue::iterator::operator+=(int n) +{ + index = (index + n) % (N + 1); + return *this; +} + +template +typename fixed_queue::iterator fixed_queue::iterator::operator-=(int n) +{ + return operator+=(-n); +} +template +typename fixed_queue::iterator fixed_queue::iterator::operator-(int n) const +{ + iterator it = *this; + it -= n; + return it; +} +template T& fixed_queue::back() +{ + iterator it = end(); + return *(it - 1); +} +template void fixed_queue::reset() +{ + clear(); +} + +template void fixed_queue::clear() +{ + _first = 0; + _last = 0; +} + +template bool fixed_queue::empty() const +{ + return _first == _last; +} +template T& fixed_queue::front() +{ + iterator it = begin(); + return *it; +} + +template void fixed_queue::pop_front() +{ + _first = (_first + 1) % (N + 1); +} + +template void fixed_queue::push_back() +{ + _last = (_last + 1) % (N + 1); +} +template +typename fixed_queue::iterator fixed_queue::create_iterator(u32 index) const +{ + iterator it; + it.queue = (fixed_queue*)this; + it.index = index; + return it; +} + +template typename fixed_queue::iterator fixed_queue::begin() const +{ + return create_iterator(_first); +} + +template typename fixed_queue::iterator fixed_queue::end() const +{ + return create_iterator(_last); +} #endif diff --git a/src/SB/Core/x/xEnt.h b/src/SB/Core/x/xEnt.h index 4e4bef39..418c9064 100644 --- a/src/SB/Core/x/xEnt.h +++ b/src/SB/Core/x/xEnt.h @@ -149,7 +149,7 @@ struct xEnt : xBase U8 penby; // XENT_COLLTYPE_* bitmask // Offset: 0x24 - xModelInstance* model; + xModelInstance* model; //0x24 0x704 in globals xModelInstance* collModel; xModelInstance* camcollModel; xLightKit* lightKit; @@ -162,7 +162,7 @@ struct xEnt : xBase // Offset: 0x44 xEntRenderCallback render; - xEntFrame* frame; + xEntFrame* frame; //0x48 0x728 in globals xEntCollis* collis; //0x4c // Offset: 0x50 @@ -199,9 +199,9 @@ struct xEnt : xBase #define XENT_PFLAGS_HAS_FRICTION ((U8)(1 << 4)) // More ent flags (xEnt::moreFlags) -#define XENT_MORE_FLAGS_0x8 ((U8)1<<3) -#define XENT_MORE_FLAGS_HITTABLE ((U8)1<<4) -#define XENT_MORE_FLAGS_ANIM_COLL ((U8)1<<5) +#define XENT_MORE_FLAGS_0x8 ((U8)1 << 3) +#define XENT_MORE_FLAGS_HITTABLE ((U8)1 << 4) +#define XENT_MORE_FLAGS_ANIM_COLL ((U8)1 << 5) // Collision types (xEnt::collType) #define XENT_COLLTYPE_NONE (U8)0 diff --git a/src/SB/Core/x/xFont.h b/src/SB/Core/x/xFont.h index b43a621d..d6a35a50 100644 --- a/src/SB/Core/x/xFont.h +++ b/src/SB/Core/x/xFont.h @@ -96,8 +96,8 @@ struct xtextbox void* context; basic_rect bounds; basic_rect render_bounds; - const callback* cb; - tag_type* tag; + const callback* cb; //0x34 + tag_type* tag; //0x38 void intersect_flags(const jot& other); void reset_flags(); @@ -138,9 +138,9 @@ struct xtextbox struct tag_entry { substr name; - char op; - substr* args; - size_t args_size; + char op; //0x08 + substr* args; //0x0C + size_t args_size; //0x10 }; struct tag_entry_list @@ -274,6 +274,7 @@ struct xtextbox::layout F32 yextent(F32 max, S32& size, S32 begin_jot, S32 end_jot) const; bool changed(const xtextbox& ctb); size_t jots_size() const; + jot* jots() const; }; void render_fill_rect(const basic_rect& bounds, iColor_tag color); diff --git a/src/SB/Core/x/xSnd.h b/src/SB/Core/x/xSnd.h index 1217140f..fa8ea35a 100644 --- a/src/SB/Core/x/xSnd.h +++ b/src/SB/Core/x/xSnd.h @@ -95,7 +95,75 @@ template struct sound_queue void play(U32 id, F32 vol, F32 pitch, U32 priority, U32 flags, U32 parentID, sound_category snd_category); void push(U32 id); + void clear(); + S32 size() const; + void pop(); + bool playing(S32 index, bool streaming) const; + U32 recent(S32 index) const; }; +template void sound_queue::pop() +{ + xSndStop(_playing[head]); + head = (head + 1) % (N + 1); +} +template S32 sound_queue::size() const +{ + if (tail >= head) + { + return tail - head; + } + return tail + (N + 1) - head; +} +template void sound_queue::clear() +{ + while (size() > 0) + { + pop(); + } +} +template U32 sound_queue::recent(S32 index) const +{ + S32 i = tail - index - 1; + if (i < 0) + { + i += (N + 1); + } + return _playing[i]; +} +template bool sound_queue::playing(S32 index, bool streaming) const +{ + S32 count = size(); + + if (index < 0 || index > count) + { + index = count; + } + + if (streaming) + { + S32 i = 0; + for (; i < index; i++) + { + if (!xSndIsPlayingByHandle(recent(i))) + { + return false; + } + } + return true; + } + else + { + S32 i = 0; + for (; i < index; i++) + { + if (xSndIsPlayingByHandle(recent(i))) + { + return true; + } + } + return false; + } +} enum sound_effect { diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 3e9ac625..62229546 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -2,13 +2,32 @@ #include "zTalkBox.h" #include "xDebug.h" #include "zEntPlayer.h" +#include "zGame.h" +#include "zGlobals.h" +#include "zMusic.h" #include - +#include "zGame.h" +#include "xSnd.h" + +U32 xGroupGetCount(xGroup* g); +xBase* xGroupGetItemPtr(xGroup* g, U32 index); +void zEntPlayerSpeakStart(U32 sound, U32 param_2, S32 param_3); +void zEntPlayer_SNDStopStream(); +U8 xSndStreamLock(U32 lock, sound_category category, bool enable); +void xSndStreamUnlock(U32 lock); +U8 xSndStreamReady(U32 lock); +S32 zGameIsPaused(); namespace { shared_type shared; + static void update_prompt_status(F32 dt); + static void update_quit_status(F32 dt); + static void stop(); + static U32* pad_pressed(); - void stop_audio_effect(); + static U32 new_tags_size = 9; + static F32 music_fade = 0.25f; + static F32 music_fade_delay = 0.5f; void speak_stop() { @@ -25,16 +44,14 @@ namespace } } - static void trigger(U32 event) + static void trigger(unsigned int event) { - // shared.delay_events = 0; // -0x7286 - // shared.triggered._first = 0; // -0x7280 - - if (shared.delay_events == 0) + if (shared.delay_events) { shared.triggered.push_back(); - shared.triggered.back(); - shared.active->id = 0; + trigger_pair& tp = shared.triggered.back(); + tp.origin = shared.active; + tp.event = event; } else { @@ -102,362 +119,573 @@ namespace } } - void flush_triggered() + static void flush_triggered() { + while (!shared.triggered.empty()) + { + trigger_pair tp = shared.triggered.front(); + shared.triggered.pop_front(); + zEntEvent(tp.origin, tp.origin, tp.event); + } } - void deactivate() + static bool read_bool(const substr& s, bool def) { - stop_audio_effect(); + static const substr positive[6] = { { "yes", 3 }, { "y", 1 }, { "1", 1 }, + { "true", 4 }, { "t", 1 }, { "on", 2 } - ztalkbox* active = shared.active; - if (active == NULL) + }; + static const substr negative[6] = { { "no", 3 }, { "n", 1 }, { "0", 1 }, + { "false", 5 }, { "f", 1 }, { "off", 3 } + + }; + if (def) { - return; + for (U32 i = 0; i < 6; i++) + { + if (icompare(s, negative[i]) == 0) + { + return false; + } + } + return true; } - - if (active->prompt_box != NULL) + else { - active->prompt_box->deactivate(); + for (U32 i = 0; i < 6; i++) + { + if (icompare(s, positive[i]) == 0) + { + return true; + } + } + return false; } - shared.active = NULL; - active->dialog_box->flag.visible = false; } - void stop_wait(ztalkbox& talkbox, const F32*, U32); + static void reset_auto_wait() + { + const ztalkbox::asset_type* a = shared.active->asset; - static void stop(); + shared.auto_wait.type.time = a->auto_wait.type.time; + shared.auto_wait.type.prompt = a->auto_wait.type.prompt; + shared.auto_wait.type.sound = a->auto_wait.type.sound; + shared.auto_wait.type.event = a->auto_wait.type.event; - // Equivalent: see fixme - S32 cb_dispatch(xBase*, xBase* to, U32 event, const F32* argf, xBase*) - { - //shared.unk8D7A = 1; - ztalkbox& talkbox = *(ztalkbox*)to; + shared.auto_wait.delay = a->auto_wait.delay; - switch (event) + shared.auto_wait.need = 0; + + if (a->auto_wait.which_event <= 0 || a->auto_wait.which_event >= 32) { - case 10: - case 88: - talkbox.reset(); - break; - case 4: - case 504: - talkbox.hide(); - break; - case 3: - case 503: - talkbox.show(); - break; - case 335: + shared.auto_wait.event_mask = -1; + } + else { - U32 textID = ((U32*)argf == NULL) ? 0 : *(U32*)argf; - talkbox.start_talk(textID, NULL, NULL); - flush_triggered(); - break; + shared.auto_wait.event_mask = 1u << a->auto_wait.which_event; } - case 336: - talkbox.stop_talk(); - flush_triggered(); - break; - case 352: - if (argf == NULL) + + shared.auto_wait.query = Q_SKIP; + } + + static void load_wait_context(wait_context& c, const xtextbox::tag_entry_list& el) + { + static S32 v[32]; + + c.reset_type(); + c.delay = 0.0f; + + xtextbox::tag_entry* e = xtextbox::find_entry(el, substr::create("wait", 4)); + + if (e && xtextbox::read_list(*e, &c.delay, 1) == 1) + { + c.type.time = true; + } + + xtextbox::tag_entry* prompt = xtextbox::find_entry(el, substr::create("prompt", 6)); + + if (prompt) + { + c.type.prompt = true; + if (prompt->op == '=' && prompt->args_size == 1 && + icompare(*prompt->args, substr::create("yesno", 5)) == 0) { - stop_wait(talkbox, NULL, 0); + c.query = Q_YESNO; } else { - stop_wait(talkbox, argf, 4); + c.query = Q_SKIP; } - flush_triggered(); - break; - case 334: - if ((U32*)argf != NULL) + } + + e = xtextbox::find_entry(el, substr::create("sound", 5)); + c.type.sound = (e != NULL); + + e = xtextbox::find_entry(el, substr::create("event", 5)); + if (e) + { + c.type.event = true; + U32 r = xtextbox::read_list(*e, v, 32); + if (r == 0) { - talkbox.set_text(*(U32*)argf); + c.event_mask = -1; } - break; - case 338: - if ((U32*)argf != NULL) + else if (e->op == '=') { - talkbox.add_text(*(U32*)argf); + for (U32 i = 0; i < r; i++) + { + if ((U32)v[i] < 32) + { + c.event_mask |= (1 << v[i]); + } + } + if (c.event_mask & 1) + { + c.event_mask = -1; + } } - break; - case 339: - talkbox.clear_text(); - break; - - // FIXME: Figure out the right no-op cases - case 75: - case 76: - case 342: - case 343: - case 344: - case 345: - case 346: - case 347: - case 348: - case 349: - case 350: - case 351: - case 353: - case 356: - case 357: - case 358: - case 359: - // case 452: - // case 453: - // case 454: - case 465: - case 466: - break; } + e = xtextbox::find_entry(el, substr::create("need", 4)); - //shared.unk8D7A = 0; - return 1; + if (e && (e->op != '=' || e->args_size == 0 || !read_bool(*e->args, true))) + { + c.need = true; + } + else + { + c.need = false; + } } - char* load_text(U32 id) + void wait_context::reset_type() { - if (id == 0) + *(U16*)&this->type = 0; + } + static void parse_tag_auto_wait(xtextbox::jot& j, const xtextbox& ctb, const xtextbox& tb, + const xtextbox::split_tag& ti) + { + if (!shared.active) { - return NULL; + return; } - - // What type is this? - void* asset = xSTFindAsset(id, NULL); - if (asset == NULL) + if (&shared.active->dialog_box->tb != &tb) { - return NULL; + return; } - // HACK - return (char*)(asset) + 4; - } - -} // namespace + wait_context* c = (wait_context*)j.context; + j.context_size = sizeof(wait_context); -void ztalkbox::load(const asset_type& tasset) -{ - xBaseInit(this, (xBaseAsset*)&tasset); - baseType = eBaseTypeTalkBox; - asset = &tasset; - eventFunc = cb_dispatch; - if (linkCount != 0) - { - link = (xLinkAsset*)(&tasset + 1); - } + xtextbox::tag_entry_list el = xtextbox::read_tag(ti.tag); + xtextbox::tag_entry& e = *el.entries; - dialog_box = (ztextbox*)zSceneFindObject(tasset.dialog_box); + if (e.op == '=' && e.args_size != 0 && !read_bool(*e.args, true)) + { + c->reset_type(); + c->delay = 0.0f; + } + else + { + el.size--; + el.entries++; + load_wait_context(*c, el); + } - if (tasset.prompt_box == 0) - { - prompt_box = NULL; + shared.auto_wait = *c; } - else + wait_context& wait_context::operator=(const wait_context& rhs) { - prompt_box = (ztextbox*)zSceneFindObject(tasset.prompt_box); + *(U16*)&type = *(const U16*)&rhs.type; + need = rhs.need; + delay = rhs.delay; + event_mask = rhs.event_mask; + query = rhs.query; + return *this; } - - if (tasset.quit_box == 0) + static void reset_tag_auto_wait(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, + const xtextbox::split_tag&) { - quit_box = NULL; + if (!shared.active) + { + return; + } + if (&shared.active->dialog_box->tb != &ctb) + { + return; + } + + wait_context& c = *(wait_context*)j.context; + j.context_size = sizeof(wait_context); + reset_auto_wait(); + c = shared.auto_wait; } - else + static U8 trigger_auto_wait(const xtextbox::jot& j) { - quit_box = (ztextbox*)zSceneFindObject(tasset.quit_box); + shared.auto_wait = *(const wait_context*)j.context; + + return 1; } + static void parse_tag_signal(xtextbox::jot& j, const xtextbox& ctb, const xtextbox& tb, + const xtextbox::split_tag& ti) + { + if (!shared.active) + { + return; + } + if (&shared.active->dialog_box->tb != &tb) + { + return; + } - prompt.skip = load_text(tasset.prompt.skip); - prompt.noskip = load_text(tasset.prompt.noskip); - prompt.quit = load_text(tasset.prompt.quit); - prompt.noquit = load_text(tasset.prompt.noquit); - prompt.yesno = load_text(tasset.prompt.yesno); + S32 v[20]; - reset(); -} + signal_context& c = *(signal_context*)&j.context; + c.flags = 0; -void ztalkbox::reset() -{ - flag.visible = true; - if (shared.active == this) - { - deactivate(); - } -} + xtextbox::tag_entry_list el = xtextbox::read_tag(ti.tag); -namespace -{ - void state_type::start() - { - } + if (el.entries->op != ':') + { + return; + } - void state_type::stop() - { - } -} // namespace + U32 r = xtextbox::read_list(*el.entries, v, 20); + if (r == 0) + { + c.flags = 0x7FFFFFFF; + } + else + { + for (U32 i = 0; i < r; i++) + { + if ((U32)v[i] < 20) + { + c.flags |= (1 << v[i]); + } + } + } -void ztalkbox::clear_text() -{ - set_text((const char*)NULL); -} + el.entries++; + el.size--; -void ztalkbox::stop_talk() -{ - if (shared.active == this) - { - stop(); + xtextbox::tag_entry* e = xtextbox::find_entry(el, substr::create("need", 4)); + if (e) + { + if (e->op != '=' || !e->args_size || !read_bool(*e->args, true)) + { + c.flags |= 0x80000000; + } + } } -} - -void ztalkbox::stop_wait(U32 x) -{ - if (shared.active == this) + static bool trigger_signal(const xtextbox::jot& j) { - shared.wait_event_mask = shared.wait_event_mask | x; - } -} + signal_context& c = *(signal_context*)&j.context; + static const U32 signals[20] = { 0x156, 0x157, 0x158, 0x159, 0x15A, 0x15B, 0x15C, + 0x15D, 0x15E, 0x15F, 0x1C9, 0x1CA, 0x1CB, 0x1CC, + 0x1CD, 0x1CE, 0x1CF, 0x1D0, 0x1D1, 0x1D2 }; -void ztalkbox::show() -{ - flag.visible = true; + if (shared.quitting && !(c.flags & 0x80000000)) + { + return true; + } - if (shared.active != this) - { - return; - } + U32 flags = c.flags; - if (prompt_box != NULL) - { - prompt_box->activate(); - } - - // if (shared.unk8D78 != 0 && prompt.quit != 0 && quit_box != NULL) - // { - // quit_box->activate(); - // } -} + for (U32 i = 0; i < 20; i++) + { + if (flags & (1 << i)) + { + trigger(signals[i]); + } + } -void ztalkbox::hide() -{ - flag.visible = false; + if (shared.cb) + { + shared.cb->on_signal(c.flags & 0x7FFFFFFF); + } - if (prompt_box != NULL) - { - prompt_box->deactivate(); + return true; } - - if (quit_box != NULL) + static bool load_sound_type(sound_context& c, const xtextbox::tag_entry_list& el) { - quit_box->deactivate(); - } -} + xtextbox::tag_entry* e = xtextbox::find_entry(el, substr::create("volume", 6)); + if (e) + { + U32 r = xtextbox::read_list(*e, &c.volume.left, 2); + if (r == 1) + { + c.volume.right = c.volume.left; + } + if (r != 0) + { + c.type = sound_context::TYPE_VOLUME; + return true; + } + } -ztalkbox* ztalkbox::get_active() -{ - return shared.active; -} + c.volume.right = c.volume.left = 1.0f; + c.type = sound_context::TYPE_VOLUME; + return true; + } + static void parse_tag_sound(xtextbox::jot& j, const xtextbox& ctb, const xtextbox& tb, + const xtextbox::split_tag& ti) + { + if (!shared.active) + { + return; + } + if (&shared.active->dialog_box->tb != &tb) + { + return; + } -void ztalkbox::permit(U32 add_flags, U32 remove_flags) -{ - shared.permit &= ~remove_flags; - shared.permit |= add_flags; -} + sound_context* c = (sound_context*)j.context; -void ztalkbox::load(xBase& data, xDynAsset& asset, u32) -{ - ((ztalkbox&)data).load((const ztalkbox::asset_type&)asset); -} + xtextbox::tag_entry_list el = xtextbox::read_tag(ti.tag); + ::st_PKR_ASSET_TOCINFO ainfo; -void ztalkbox::load_settings(xIniFile& ini) -{ - shared.volume = xIniGetFloat(&ini, "talk_box.volume", 2.0f); - xDebugAddTweak("Talk Box|\01GlobalsGlobals|volume", &shared.volume, 0.1f, 10.0f, NULL, NULL, 0); -} + c->action = sound_context::ACTION_SET; -namespace -{ - static U8 read_bool(const substr& s, bool def) - { - extern const substr negative[6]; - extern const substr positive[6]; - if (def) + xtextbox::tag_entry* e = xtextbox::find_entry(el, substr::create("action", 6)); + if (e && e->args_size != 0) { - for (U32 i = 0; i < 6; ++i) + substr& action = *e->args; + if (icompare(action, substr::create("add", 3)) == 0) { - if (icompare(s, negative[i]) == 0) - return 0; + c->action = sound_context::ACTION_PUSH; + } + else if (icompare(action, substr::create("remove", 6)) == 0) + { + c->action = sound_context::ACTION_POP; } - return 1; + } + + xtextbox::tag_entry* first = el.entries; + if (c->action == sound_context::ACTION_POP) + { + c->id = 0; + } + else if (first->op == ':' && first->args_size != 0) + { + c->id = xStrHash(first->args->text, first->args->size); } else { - for (U32 i = 0; i < 6; ++i) + return; + } + + if (c->id != 0 && c->action != sound_context::ACTION_POP) + { + load_sound_type(*c, el); + } + + c->speaker = 2; + + e = xtextbox::find_entry(el, substr::create("speaker", 7)); + if (e && e->args_size != 0) + { + substr& action = *e->args; + if (icompare(action, substr::create("pc", 2)) == 0) { - if (icompare(s, positive[i]) == 0) - return 1; + c->speaker = 1; + } + else if (icompare(action, substr::create("none", 4)) == 0) + { + c->speaker = 0; + } + else if (action.size != 0) + { + c->speaker = xStrHash(action.text, action.size); } } - return 0; - } - static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, - const xtextbox::split_tag&) - { - } - static void parse_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox&, - const xtextbox::split_tag& ti) - { - bool c = 0; + c->anim = 0; + + e = xtextbox::find_entry(el, substr::create("anim", 4)); + if (e && e->args_size != 0) + { + S32 anim = 0; + xtextbox::read_list(*e, &anim, 1); + c->anim = (U8)anim; + } - if (ti.action.size == 1 && ti.action.text[0] == '=') + if (c->id != 0) { - if (read_bool(ti.value, 1) != 0) + S32 result = xSTGetAssetInfo(c->id, &ainfo); + if (result) { - c = 1; + U32 source = ainfo.typeref->typetag; + if (source == 0x534E4420) + { + c->source = sound_context::SOURCE_MEMORY; + } + else if (source == 0x534E4453) + { + c->source = sound_context::SOURCE_STREAM; + } + else + { + return; + } + + j.context_size = sizeof(sound_context); } } - - *(bool*)&j.context = c; } - - static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, - const xtextbox::split_tag&) + void __deadstripped_zTalkbox() { + xprintf("pointer"); + xprintf("location"); } - static void reset_tag_sound(xtextbox::jot& j, const xtextbox&, const xtextbox& tb, - const xtextbox::split_tag&) + static void reset_tag_sound(xtextbox::jot& j, const xtextbox& ctb, const xtextbox& tb, + const xtextbox::split_tag& ti) { if (!shared.active) { return; } - if (&shared.active->dialog_box->tb != &tb) { return; } sound_context& c = *(sound_context*)j.context; - - j.context_size = 24; - + j.context_size = sizeof(sound_context); c.id = 0; c.action = sound_context::ACTION_SET; } - static void reset_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) + + static bool trigger_sound(const xtextbox::jot& j) { - if (!shared.active) + if (shared.quitting) { - return; + shared.sounds.clear(); + speak_stop(); + return true; } - if (&shared.active->dialog_box->tb != &ctb) + sound_context& c = *(sound_context*)j.context; + + switch (c.action) { - return; + case sound_context::ACTION_PUSH: + break; + case sound_context::ACTION_POP: + if (shared.sounds.size() > 0) + { + shared.sounds.pop(); + return 1; + } + break; + case sound_context::ACTION_SET: + shared.sounds.clear(); + speak_stop(); + return 1; } - *(bool*)&j.context = (shared.active->asset->trap != 0); + if (c.id == 0) + { + return true; + } + + F32 vol = c.volume.left; + if (!(vol > c.volume.right)) + { + vol = c.volume.right; + } + + shared.sounds.play(c.id, shared.volume * vol, 0.0f, 0x80, 0, + (U32)&shared.stream_locked[shared.next_stream], SND_CAT_DIALOG); + + shared.next_stream ^= 1; + + zNPCCommon* npc = NULL; + xEnt* player = NULL; + ztalkbox& talk = *shared.active; + + switch (c.speaker) + { + case 0: + break; + case 1: + player = (xEnt*)&globals.player.ent; + break; + case 2: + npc = talk.npc; + break; + default: + { + xBase* obj = zSceneFindObject(c.speaker); + if (obj) + { + if (obj->baseType == 0x2B) + { + npc = (zNPCCommon*)obj; + } + else if (obj->baseType == 0x03) + { + player = (xEnt*)&globals.player.ent; + } + else if (obj->baseType == 0x11) + { + U32 size = xGroupGetCount((xGroup*)&obj); + for (U32 i = 0; i < size; i++) + { + xBase* entry = xGroupGetItemPtr((xGroup*)&obj, i); + if (entry && entry->baseType == 0x2B) + { + npc = (zNPCCommon*)entry; + if (xEntIsVisible((const xEnt*)entry)) + { + break; + } + } + } + } + } + break; + } + } + + if (npc) + { + npc->SpeakStart(c.id, 0, c.anim - 1); + shared.speak_npc = npc; + } + else if (player) + { + zEntPlayerSpeakStart(c.id, 0, c.anim - 1); + shared.speak_player = 1; + } + + return true; + } + + static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, + const xtextbox::split_tag&) + { + } + + static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, + const xtextbox::split_tag&) + { + } + static U8 trigger_pause(const xtextbox::jot&) + { + return 1; + } + + static void parse_tag_allow_quit(xtextbox::jot& j, const xtextbox&, const xtextbox&, + const xtextbox::split_tag& ti) + { + U8 c = 0; + + if (ti.action.size != 1 || ti.action.text[0] != '=' || read_bool(ti.value, 1) != 0) + { + c = 1; + } + + *(U8*)&j.context = c; } static void reset_tag_allow_quit(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, @@ -476,134 +704,1306 @@ namespace *(bool*)&j.context = (shared.active->asset->allow_quit != 0); } - U8 trigger_pause(const xtextbox::jot&) + static U8 trigger_allow_quit(const xtextbox::jot& j) { + shared.allow_quit = (j.context != NULL); + return 1; } - U8 trigger_allow_quit(const xtextbox::jot& j) + static void parse_tag_teleport(xtextbox::jot& j, const xtextbox& ctb, const xtextbox& tb, + const xtextbox::split_tag& ti) { - shared.allow_quit = (j.context != NULL); + if (!shared.active) + { + return; + } - return 1; + U32 id = shared.active->asset->teleport; + teleport_context& c = *(teleport_context*)j.context; + + bool has_value = ti.action.size == 1 && *ti.action.text == ':' && ti.value.size != 0; + if (has_value) + { + id = xStrHash(ti.value.text, ti.value.size); + } + + if (id == 0) + { + return; + } + + c.use_yaw = false; + c.use_loc = false; + + xDynAsset* a = (xDynAsset*)xSTFindAsset(id, NULL); + if (!a) + { + return; + } + + if (a->type == xStrHash(location_asset::type_name())) + { + location_asset& ta = *(location_asset*)a; + c.use_loc = true; + c.loc = ta.loc; + } + else if (a->type == xStrHash(pointer_asset::type_name())) + { + pointer_asset& ta = *(pointer_asset*)a; + c.use_yaw = true; + c.use_loc = true; + c.loc = ta.loc; + c.yaw = ta.yaw * (3.14159265f / 180.0f); + } + + j.context_size = sizeof(teleport_context); } - U8 trigger_auto_wait(const xtextbox::jot& j) + static void move_player(const xVec3& loc) { - shared.auto_wait = *(const wait_context*)j.context; + RwMatrix* dst_mat = globals.player.ent.model->Mat; + xEntFrame* out_frame = globals.player.ent.frame; - return 1; + xVec3* dst_pos = (xVec3*)&dst_mat->pos; + xVec3* src_pos = &out_frame->mat.pos; + + dst_pos->operator=(*src_pos = loc); } - state_type::state_type(state_enum t) + + static void turn_player(float yaw) { - type = t; + xMat3x3& m = *(xMat3x3*)globals.player.ent.model->Mat; + xVec3 ang; + xMat3x3GetEuler(&m, &ang); + ang.x = yaw; + xMat3x3Euler(&m, &ang); } - wait_context& wait_context::operator=(const wait_context& rhs) //FIXME + static U8 trigger_teleport(const xtextbox::jot& j) { - type = rhs.type; - need = rhs.need; - delay = rhs.delay; - event_mask = rhs.event_mask; - query = rhs.query; - return *this; + if (j.context_size != sizeof(teleport_context)) + { + return 1; + } + + teleport_context* c = (teleport_context*)j.context; + + if (c->use_loc) + { + move_player(c->loc); + } + + if (c->use_yaw) + { + turn_player(c->yaw); + } + return 1; + } + + static void parse_tag_trap(xtextbox::jot& j, const xtextbox& ctb, const xtextbox& tb, + const xtextbox::split_tag& ti) + { + U8 c = false; + + if (ti.action.size == 1 && *ti.action.text == '=' && !read_bool(ti.value, true)) + { + } + else + { + c = true; + } + + *(U8*)&j.context = c; } - void stop_audio_effect() + static void reset_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, + const xtextbox::split_tag&) { if (!shared.active) { return; } - if (shared.active->asset == 0) + if (&shared.active->dialog_box->tb != &ctb) { return; } - } - static void reset_auto_wait() - { - const ztalkbox::asset_type* a = shared.active->asset; - - shared.auto_wait.type.time = a->auto_wait.type.time; - shared.auto_wait.type.prompt = a->auto_wait.type.prompt; - shared.auto_wait.type.sound = a->auto_wait.type.sound; - shared.auto_wait.type.event = a->auto_wait.type.event; - - shared.auto_wait.delay = a->auto_wait.delay; - shared.auto_wait.need = 0; + *(bool*)&j.context = (shared.active->asset->trap != 0); + } - if (a->auto_wait.which_event <= 0 || a->auto_wait.which_event >= 32) + static U8 trigger_trap(const xtextbox::jot& j) + { + if (j.context != 0) { - shared.auto_wait.event_mask = -1; + zEntPlayerControlOff(CONTROL_OWNER_TALK_BOX); } else { - shared.auto_wait.event_mask = 1u << a->auto_wait.which_event; + zEntPlayerControlOn(CONTROL_OWNER_TALK_BOX); } - - shared.auto_wait.query = Q_SKIP; + return 1; } - static void reset_tag_auto_wait(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) + + static void parse_tag_wait(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, + const xtextbox::split_tag& ti) { if (!shared.active) { return; } - if (&shared.active->dialog_box->tb != &ctb) + + if ((const void*)&shared.active->dialog_box->tb != (const void*)&ctb) { return; } wait_context& c = *(wait_context*)j.context; j.context_size = sizeof(wait_context); - reset_auto_wait(); - c = shared.auto_wait; - } -} // namespace + const substr& s = *(const substr*)&ti; + xtextbox::tag_entry_list el = xtextbox::read_tag(s); -void start_state_type::stop() -{ + if (el.size == 1 && el.entries->args_size == 0) + { + c = shared.auto_wait; + } + else + { + load_wait_context(c, el); + } + } + static U8 trigger_wait(const xtextbox::jot& j) + { + wait_context& c = *(wait_context*)j.context; + + if (shared.quitting != 0 && shared.allow_quit != 0 && c.need == 0) + { + return 1; + } + + shared.wait = c; + + return 0; + } + xtextbox::tag_type new_tags[] = { + { { "allow_quit", 10 }, + parse_tag_allow_quit, + reset_tag_allow_quit, + (void*)trigger_allow_quit }, + { { "aq", 2 }, parse_tag_allow_quit, reset_tag_allow_quit, (void*)trigger_allow_quit }, + { { "auto_wait", 9 }, parse_tag_auto_wait, reset_tag_auto_wait, (void*)trigger_auto_wait }, + { { "pause", 5 }, parse_tag_pause, reset_tag_pause, (void*)trigger_pause }, + { { "signal", 6 }, parse_tag_signal, NULL, (void*)trigger_signal }, + { { "sound", 5 }, parse_tag_sound, reset_tag_sound, (void*)trigger_sound }, + { { "teleport", 8 }, parse_tag_teleport, NULL, (void*)trigger_teleport }, + { { "trap", 4 }, parse_tag_trap, reset_tag_trap, (void*)trigger_trap }, + { { "wait", 4 }, parse_tag_wait, NULL, (void*)trigger_wait }, + }; + static void start_audio_effect(ztalkbox& talk) + { + static bool registered = false; + + if (!registered) + { + registered = true; + } + + xDebugAddTweak("Temp|Talk Music Fade", &music_fade, 0.0f, 1.0f, NULL, NULL, 0); + xDebugAddTweak("Temp|Talk Music Fade Delay", &music_fade_delay, 0.0f, 10.0f, NULL, NULL, 0); + + switch (talk.asset->audio_effect) + { + case 0: + + break; + case 1: + zMusicSetVolume(music_fade, music_fade_delay); + break; + } + + if (talk.asset->trap) + { + zEntPlayer_SNDStopStream(); + } + } + static void stop_audio_effect() + { + if ((shared.active) && (shared.active->asset->audio_effect != 1)) + { + zMusicSetVolume(1.0f, music_fade_delay); + return; + } + } + + static void deactivate() + { + stop_audio_effect(); + + ztalkbox* active = shared.active; + if (active == NULL) + { + return; + } + + if (active->prompt_box != NULL) + { + active->prompt_box->deactivate(); + } + shared.active = NULL; + active->dialog_box->flag.visible = false; + } + + static void activate(ztalkbox& t) + { + deactivate(); + + shared.active = &t; + + if (t.dialog_box->flag.active) + { + t.dialog_box->deactivate(); + } + + if (t.prompt_box != NULL && t.flag.visible) + { + t.prompt_box->activate(); + } + + start_audio_effect(t); + + t.dialog_box->flag.visible = 1; + } + static bool is_wait_jot(const xtextbox::jot& j) + { + return j.tag && j.tag->parse_tag == parse_tag_wait; + } + static bool layout_contains_streams() + { + tag_type* sound_tag = (tag_type*)xtextbox::find_format_tag(substr::create("sound", 5)); + jot* jots = (jot*)((xtextbox::layout*)&shared.lt)->jots(); + jot* end = jots + ((xtextbox::layout*)&shared.lt)->jots_size(); + + for (; jots != end; jots++) + { + if (jots->tag == sound_tag && jots->context_size == sizeof(sound_context)) + { + sound_context* c = (sound_context*)jots->context; + if (c->source == sound_context::SOURCE_STREAM) + { + return true; + } + } + } + + return false; + } + + static void lock_stream() + { + shared.stream_locked[0] = + xSndStreamLock((U32)&shared.stream_locked[0], SND_CAT_DIALOG, true); + shared.stream_locked[1] = + xSndStreamLock((U32)&shared.stream_locked[1], SND_CAT_DIALOG, true); + } + static void unlock_stream() + { + xSndStreamUnlock((U32)&shared.stream_locked[0]); + xSndStreamUnlock((U32)&shared.stream_locked[1]); + shared.stream_locked[0] = 0; + shared.stream_locked[1] = 0; + } + static void refresh_prompts() + { + ztalkbox& active = *shared.active; + + if (active.prompt_box) + { + char* message; + + if (shared.wait.type.prompt && shared.prompt_ready) + { + char* queries[2] = { (char*)active.prompt.skip, (char*)active.prompt.yesno }; + message = queries[shared.wait.query]; + } + else + { + message = (char*)active.prompt.noskip; + } + + if (message) + { + active.prompt_box->set_text(message); + if (active.flag.visible) + { + active.prompt_box->activate(); + } + } + else + { + active.prompt_box->deactivate(); + } + } + + if (active.quit_box) + { + if (shared.allow_quit && active.prompt.quit && shared.quit_ready) + { + active.quit_box->set_text(active.prompt.quit); + if (active.flag.visible) + { + active.quit_box->activate(); + } + } + else if (shared.allow_quit && shared.quit_delay <= 0.0f) + { + active.quit_box->deactivate(); + } + else if (active.prompt.noquit) + { + active.quit_box->set_text(active.prompt.noquit); + if (active.flag.visible) + { + active.quit_box->activate(); + } + } + else + { + active.quit_box->deactivate(); + } + } + } + static void update_prompt_status(F32 dt) + { + if (!shared.wait.type.prompt) + { + return; + } + + if (shared.prompt_ready) + { + return; + } + + shared.prompt_delay -= dt; + if (shared.prompt_delay > 0.0f) + { + return; + } + + if (!shared.stream_locked[shared.next_stream] || + xSndStreamReady((U32)&shared.stream_locked[shared.next_stream])) + { + shared.prompt_ready = true; + refresh_prompts(); + } + } + static void update_quit_status(F32 dt) + { + if (shared.quit_ready) + { + return; + } + + shared.quit_delay -= dt; + if (shared.quit_delay > 0.0f) + { + return; + } + + shared.quit_ready = true; + refresh_prompts(); + } + static void hide_prompts() + { + ztalkbox& active = *(ztalkbox*)shared.active; + + if (active.prompt_box) + { + active.prompt_box->deactivate(); + } + if (active.quit_box) + { + active.quit_box->deactivate(); + } + } + static void stop_wait(ztalkbox& e, const float* args, U32 args_size) + { + if (shared.active != &e) + { + return; + } + + U32 mask = 0; + U32 i = 0; + + for (; i < args_size; i++) + { + U32 v = (U32)args[i]; + + if (v != 0 && v < 32) + { + mask |= (1 << v); + } + } + + if (mask == 0) + { + mask = 0xFFFFFFFF; + } + + e.stop_wait(mask); + } + + S32 cb_dispatch(xBase*, xBase* to, U32 event, const F32* argf, xBase*) + { + shared.delay_events = true; + ztalkbox& e = *(ztalkbox*)to; + + switch (event) + { + case 10: + case 88: + e.reset(); + break; + case 4: + case 504: + e.hide(); + break; + case 3: + case 503: + e.show(); + break; + case 335: + { + U32 textID = ((U32*)argf == NULL) ? 0 : *(U32*)argf; + e.start_talk(textID, NULL, NULL); + flush_triggered(); + break; + } + case 336: + e.stop_talk(); + flush_triggered(); + break; + case 352: + if (argf == NULL) + { + stop_wait(e, NULL, 0); + } + else + { + stop_wait(e, argf, 4); + } + flush_triggered(); + break; + case 334: + if ((U32*)argf != NULL) + { + e.set_text(*(U32*)argf); + } + break; + case 338: + if ((U32*)argf != NULL) + { + e.add_text(*(U32*)argf); + } + break; + case 339: + e.clear_text(); + break; + case 75: + case 76: + case 342: + case 343: + case 344: + case 345: + case 346: + case 347: + case 348: + case 349: + case 350: + case 351: + case 353: + case 356: + case 357: + case 358: + case 359: + case 452: + case 453: + case 454: + case 465: + case 466: + break; + } + + shared.delay_events = false; + return 1; + } + + char* load_text(U32 id) + { + if (id == 0) + { + return NULL; + } + + // What type is this? + void* asset = xSTFindAsset(id, NULL); + if (asset == NULL) + { + return NULL; + } + + // HACK + return (char*)(asset) + 4; + } +} // namespace +void ztalkbox::load(const asset_type& tasset) +{ + xBaseInit(this, (xBaseAsset*)&tasset); + baseType = eBaseTypeTalkBox; + asset = &tasset; + eventFunc = cb_dispatch; + if (linkCount != 0) + { + link = (xLinkAsset*)(&tasset + 1); + } + + dialog_box = (ztextbox*)zSceneFindObject(tasset.dialog_box); + + if (tasset.prompt_box == 0) + { + prompt_box = NULL; + } + else + { + prompt_box = (ztextbox*)zSceneFindObject(tasset.prompt_box); + } + + if (tasset.quit_box == 0) + { + quit_box = NULL; + } + else + { + quit_box = (ztextbox*)zSceneFindObject(tasset.quit_box); + } + + prompt.skip = load_text(tasset.prompt.skip); + prompt.noskip = load_text(tasset.prompt.noskip); + prompt.quit = load_text(tasset.prompt.quit); + prompt.noquit = load_text(tasset.prompt.noquit); + prompt.yesno = load_text(tasset.prompt.yesno); + + reset(); +} + +void ztalkbox::reset() +{ + flag.visible = true; + if (shared.active == this) + { + deactivate(); + } +} +void ztalkbox::set_text(const char* s) +{ + ztextbox& d = *dialog_box; + + if (s) + { + d.set_text(s); + } + else + { + d.clear_text(); + } + + d.refresh(); + + if (shared.active != this) + { + return; + } + + if (shared.state) + { + shared.state->stop(); + shared.state = NULL; + } + + ((xtextbox::layout*)&shared.lt)->refresh(d.tb, false); + + if (layout_contains_streams()) + { + lock_stream(); + } + + shared.state = shared.states[1]; + shared.state->start(); +} +void ztalkbox::set_text(U32 id) +{ + if (id == 0) + { + return; + } + xTextAsset* ta = (xTextAsset*)xSTFindAsset(id, 0); + + if (!ta) + { + clear_text(); + return; + } + + set_text((const char*)(ta + 1)); +} +void ztalkbox::add_text(const char* text) +{ + dialog_box->add_text(text); + + if (shared.active == this) + { + ((xtextbox::layout*)&shared.lt)->refresh_end(dialog_box->tb); + } +} +void ztalkbox::add_text(U32 textID) +{ + if (!textID) + { + return; + } + + xTextAsset* a = (xTextAsset*)xSTFindAsset(textID, NULL); + if (!a) + { + return; + } + + add_text((const char*)(a + 1)); +} +void ztalkbox::clear_text() +{ + set_text((const char*)NULL); +} +void ztalkbox::start_talk(const char* s, callback* cb, zNPCCommon* npc) +{ + this->npc = npc; + + if (shared.active) + { + shared.active->stop_talk(); + } + + activate(*this); + + shared.cb = cb; + shared.wait_event_mask = 0; + + reset_auto_wait(); + + shared.allow_quit = (asset->allow_quit != 0); + shared.quitting = false; + + if (asset->trap) + { + zEntPlayerControlOff((zControlOwner)0x10); + } + else + { + zEntPlayerControlOn((zControlOwner)0x10); + } + MasterTellSlaves(1); + refresh_prompts(); + + ztextbox& d = *dialog_box; + + if (d.flag.active) + { + d.deactivate(); + } + + if (s) + { + d.set_text(s); + } + + d.refresh(); + + ((xtextbox::layout*)&shared.lt)->refresh(d.tb, false); + + if (layout_contains_streams()) + { + lock_stream(); + } + + shared.state = shared.states[1]; + trigger(0x161); + + if (cb) + { + cb->on_start(); + } + + shared.state->start(); +} +void ztalkbox::start_talk(U32 text_id, callback* cb, zNPCCommon* npc) +{ + if (!text_id) + { + start_talk((const char*)NULL, cb, npc); + return; + } + + xTextAsset* ta = (xTextAsset*)xSTFindAsset(text_id, NULL); + if (ta) + { + start_talk((const char*)(ta + 1), cb, npc); + } +} +void ztalkbox::stop_talk() +{ + if (shared.active == this) + { + stop(); + } +} +namespace +{ + static void stop() + { + if (!shared.state) + { + return; + } + + shared.state->stop(); + hide_prompts(); + shared.active->MasterTellSlaves(0); + zEntPlayerControlOn((zControlOwner)0x10); + trigger(0x162); + + if (shared.cb) + { + shared.cb->on_stop(); + } + + shared.state = NULL; + deactivate(); + shared.sounds.clear(); + speak_stop(); + unlock_stream(); + } +} // namespace + +void ztalkbox::stop_wait(U32 x) +{ + if (shared.active == this) + { + shared.wait_event_mask = shared.wait_event_mask | x; + } +} + +void ztalkbox::show() +{ + flag.visible = true; + + if (shared.active != this) + { + return; + } + + if (prompt_box) + { + prompt_box->activate(); + } + + if (shared.allow_quit && prompt.quit && quit_box) + { + quit_box->activate(); + } } -S8 start_state_type::update(xScene& scn, F32 dt) +void ztalkbox::hide() +{ + flag.visible = false; + + if (prompt_box != NULL) + { + prompt_box->deactivate(); + } + + if (quit_box != NULL) + { + quit_box->deactivate(); + } +} +void ztalkbox::MasterTellSlaves(int isBeginning) +{ + S32 i = 0; + + for (; i < (S32)linkCount; i++) + { + xLinkAsset* link = &this->link[i]; + + if (link->dstEvent == 0x133) + { + xSceneID2Name(globals.sceneCur, id); + xSceneID2Name(globals.sceneCur, link->dstAssetID); + + xBase* mychild = zSceneFindObject(link->dstAssetID); + if (mychild) + { + MasterLoveSlave(mychild, isBeginning); + } + } + } +} +void ztalkbox::MasterLoveSlave(xBase* slave, int starting) +{ + switch (slave->baseType) + { + case 0x11: + { + xGroup* grp = (xGroup*)slave; + S32 cnt = xGroupGetCount(grp); + S32 i = 0; + for (; i < cnt; i++) + { + xBase* grpitem = xGroupGetItemPtr(grp, i); + if (grpitem) + { + MasterLoveSlave(grpitem, starting); + } + } + break; + } + case 0x2b: + { + zNPCCommon* npc = (zNPCCommon*)slave; + if (starting) + { + npc->SpeakBegin(); + } + else + { + npc->SpeakEnd(); + } + break; + } + } +} +void ztalkbox::load_settings(xIniFile& ini) +{ + shared.volume = xIniGetFloat(&ini, "talk_box.volume", 2.0f); + xDebugAddTweak("Talk Box|\01Globals|volume", &shared.volume, 0.0f, 10.0f, NULL, NULL, 0); +} +void ztalkbox::init() { - return 2; + xtextbox::register_tags(new_tags, new_tags_size); + + static start_state_type start_state; + shared.states[1] = &start_state; + + static next_state_type next_state; + shared.states[2] = &next_state; + + static wait_state_type wait_state; + shared.states[3] = &wait_state; + + static stop_state_type stop_state; + shared.states[4] = &stop_state; + + ztalkbox::reset_all(); } +namespace +{ + stop_state_type::stop_state_type() : state_type((state_enum)4) + { + } + state_type::state_type(state_enum t) + { + type = t; + } + wait_state_type::wait_state_type() : state_type((state_enum)3) + { + } + next_state_type::next_state_type() : state_type((state_enum)2) + { + } + start_state_type::start_state_type() : state_type((state_enum)1) + { + } + +} // namespace -void next_state_type::stop() +void ztalkbox::load(xBase& data, xDynAsset& asset, u32) { + ((ztalkbox&)data).load((const ztalkbox::asset_type&)asset); } -void stop_state_type::start() +void ztalkbox::update_all(xScene& s, F32 dt) { + if (zGameIsPaused()) + { + return; + } + + while (shared.state) + { + shared.delay_events = true; + state_enum newtype = shared.state->update(s, dt); + + if (newtype == shared.state->type) + { + break; + } + + shared.state->stop(); + + if (newtype == (state_enum)-1) + { + stop(); + break; + } + + shared.state = shared.states[newtype]; + shared.state->start(); + shared.delay_events = false; + flush_triggered(); + } + + if (shared.state && shared.active) + { + trigger_pads_enum tp = (trigger_pads_enum)shared.active->asset->trigger_pads; + + if (tp == TP_ACTIVE && !globals.cmgr) + { + trigger_pads(*pad_pressed()); + } + else if (tp == TP_TRAPPED && globals.cmgr) + { + trigger_pads(*pad_pressed()); + } + } + + shared.delay_events = false; + flush_triggered(); } +namespace +{ + static U32* pad_pressed() + { + if (shared.permit & 2) + { + return &globals.pad0->pressed; + } + + static U32 zero; + zero = 0; + return &zero; + } + +}; // namespace +void ztalkbox::render_all() +{ + if (!(shared.permit & 1)) + { + return; + } + + if (!shared.state) + { + return; + } + + if (!shared.active->flag.visible) + { + return; + } + + ztextbox& d = *shared.active->dialog_box; + + if (d.flag.active) + { + d.deactivate(); + } + + if (d.flag.show_backdrop) + { + d.render_backdrop(); + } -void stop_state_type::stop() + d.tb.render(*(xtextbox::layout*)&shared.lt, shared.begin_jot, shared.end_jot); +} +void ztalkbox::reset_all() { + shared.flags = 0; + shared.permit = 0xFFFFFFFF; + shared.active = NULL; + shared.state = NULL; + shared.cb = NULL; + shared.delay_events = false; + shared.speak_npc = NULL; + shared.triggered.reset(); + shared.quit_ready = false; + shared.prompt_ready = false; + shared.next_stream = 0; + shared.stream_locked[1] = 0; + shared.stream_locked[0] = 0; + ((xtextbox::layout*)&shared.lt)->clear(); } -S8 stop_state_type::update(xScene& scn, F32 dt) +ztalkbox* ztalkbox::get_active() { - return -1; + return shared.active; } -void wait_context::reset_type() +void ztalkbox::permit(U32 add_flags, U32 remove_flags) { - *(U16*)&this->type = 0; + shared.permit &= ~remove_flags; + shared.permit |= add_flags; } -static U8 trigger_trap(const xtextbox::jot& j) +namespace { - if (j.context != 0) + void stop_state_type::start() { - zEntPlayerControlOff(CONTROL_OWNER_TALK_BOX); } - else + void stop_state_type::stop() { - zEntPlayerControlOn(CONTROL_OWNER_TALK_BOX); } - return 1; -} + + state_enum stop_state_type::update(xScene& scn, F32 dt) + { + return (state_enum)-1; + } + void state_type::start() + { + } + + void state_type::stop() + { + } + void wait_state_type::start() + { + this->answer_yes = false; + refresh_prompts(); + } + + void wait_state_type::stop() + { + if (!shared.wait.type.time || shared.wait.type.prompt) + { + shared.prompt_delay = 0.1f; + shared.prompt_ready = false; + } + + shared.quit_delay = 0.0f; + shared.quit_ready = true; + + if (shared.wait.type.prompt && shared.wait.query == Q_YESNO) + { + if (shared.cb) + { + ztalkbox::answer_enum answer = (ztalkbox::answer_enum)2; + if (this->answer_yes) + { + answer = (ztalkbox::answer_enum)1; + } + shared.cb->on_answer(answer); + } + + if (this->answer_yes) + { + trigger(0x1C5); + } + else + { + trigger(0x1C6); + } + } + + shared.wait.reset_type(); + shared.wait.type.time = true; + shared.wait.delay = 0.0f; + shared.wait.need = false; + } + state_enum wait_state_type::update(xScene& scn, F32 dt) + { + update_prompt_status(dt); + update_quit_status(dt); + U32* pressed = pad_pressed(); + + if (shared.quitting) + { + if (shared.allow_quit && !shared.wait.need) + { + return (state_enum)2; + } + shared.quitting = false; + } + + if (shared.wait.type.time) + { + shared.wait.delay -= dt; + if (shared.wait.delay <= 0.0f) + { + return (state_enum)2; + } + } + + if (shared.wait.type.prompt && shared.prompt_ready) + { + switch (shared.wait.query) + { + case Q_YESNO: + if (*pressed & 0x10000) + { + *pressed &= ~0x10000; + this->answer_yes = true; + return (state_enum)2; + } + if (*pressed & 0x40000) + { + *pressed &= ~0x40000; + return (state_enum)2; + } + break; + case Q_SKIP: + default: + if (*pressed & 0x10000) + { + *pressed &= ~0x10000; + return (state_enum)2; + } + break; + } + } + + if (shared.allow_quit && (*pressed & 0x80000) && shared.quit_ready && (*pressed & 0x80000)) + { + shared.quitting = true; + *pressed &= ~0x80000; + return (state_enum)2; + } + + if (shared.wait.type.sound) + { + if (!shared.sounds.playing(-1, true)) + { + return (state_enum)2; + } + } + + if (shared.wait.type.event) + { + if (shared.wait_event_mask & shared.wait.event_mask) + { + shared.wait_event_mask &= ~shared.wait.event_mask; + return (state_enum)2; + } + } + + return (state_enum)3; + } + static bool trigger_jot(const xtextbox::jot& j) + { + if (!j.tag) + { + return true; + } + + if (j.tag->context) + { + return ((bool (*)(const xtextbox::jot&))j.tag->context)(j); + } + + return true; + } + static bool trigger_jot(int index) + { + xtextbox::jot* jots = ((xtextbox::layout*)&shared.lt)->jots(); + return trigger_jot(jots[index]); + } + void next_state_type::start() + { + if (shared.end_jot == shared.page_end_jot) + { + xtextbox& tb = shared.active->dialog_box->tb; + S32 jots_size = ((xtextbox::layout*)&shared.lt)->jots_size(); + ((xtextbox::layout*)&shared.lt)->jots(); + + shared.begin_jot = shared.end_jot; + S32 size; + tb.yextent(tb.bounds.h, size, *(xtextbox::layout*)&shared.lt, shared.begin_jot, -1); + + if (size == 0 && jots_size > shared.begin_jot) + { + size = 1; + } + + shared.page_end_jot = shared.begin_jot + size; + } + + while (shared.end_jot < shared.page_end_jot) + { + shared.end_jot++; + if (!trigger_jot(shared.end_jot - 1)) + { + break; + } + } + + if (shared.end_jot == shared.page_end_jot) + { + xtextbox::jot* jots = ((xtextbox::layout*)&shared.lt)->jots(); + xtextbox::jot* last = &jots[shared.end_jot - 1]; + + if (last->flag.page_break && (S32)(shared.end_jot - 1) > shared.begin_jot) + { + last--; + } + + if (!is_wait_jot(*last)) + { + shared.wait = shared.auto_wait; + } + } + } + + void next_state_type::stop() + { + } + state_enum next_state_type::update(xScene& scn, F32 dt) + { + if (shared.begin_jot == shared.page_end_jot) + { + return (state_enum)4; + } + return (state_enum)3; + } + void start_state_type::start() + { + shared.page_end_jot = 0; + shared.end_jot = 0; + shared.begin_jot = 0; + shared.wait.reset_type(); + shared.wait.type.time = true; + shared.wait.delay = 0.0f; + shared.quit_delay = 0.25f; + shared.prompt_delay = 0.25f; + shared.quit_ready = false; + shared.prompt_ready = false; + refresh_prompts(); + } + void start_state_type::stop() + { + } + + state_enum start_state_type::update(xScene& scn, F32 dt) + { + return (state_enum)2; + } + +} // namespace diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 93b33b16..86d3de3e 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -6,8 +6,14 @@ #include "xIni.h" #include "containers.h" #include "zEntPlayer.h" - #include "xScene.h" +#include "xCamera.h" +#include "xPad.h" +#include "xUpdateCull.h" +#include "xGlobals.h" +#include "zCutsceneMgr.h" +#include "zGlobals.h" +#include "xSnd.h" struct ztalkbox : xBase { @@ -109,12 +115,17 @@ struct ztalkbox : xBase static ztalkbox* get_active(); void start_talk(U32 textID, callback*, zNPCCommon*); // FIXME: params not verified + void start_talk(const char* text, callback* cb, zNPCCommon* npc); + + void MasterTellSlaves(int event); + void MasterLoveSlave(xBase*, int); void load(const asset_type& tasset); void reset(); void set_text(const char* text); void set_text(U32 textID); void add_text(U32 textID); + void add_text(const char* text); void clear_text(); void stop_talk(); void stop_wait(U32 x); @@ -124,6 +135,12 @@ struct ztalkbox : xBase namespace { + enum trigger_pads_enum + { + TP_NEVER, + TP_TRAPPED, + TP_ACTIVE, + }; enum state_enum { STATE_INVALID = -1, @@ -149,26 +166,43 @@ namespace state_type(state_enum t); virtual void start(); virtual void stop(); + virtual state_enum update(xScene& scn, F32 dt) = 0; }; - struct next_state_type + struct start_state_type : state_type { - void stop(); + start_state_type(); + virtual void start(); + virtual void stop(); + virtual state_enum update(xScene& scn, F32 dt); }; - struct start_state_type + struct next_state_type : state_type { - void stop(); - S8 update(xScene& scn, F32 dt); + S32 prev_wait_jot; // offset 0x8, size 0x4 + + next_state_type(); + virtual void start(); + virtual void stop(); + virtual state_enum update(xScene& scn, F32 dt); }; - struct stop_state_type + struct wait_state_type : state_type { - void start(); - void stop(); - S8 update(xScene& scn, F32 dt); - }; + U8 answer_yes; // offset 0x8, size 0x1 + wait_state_type(); + virtual void start(); + virtual void stop(); + virtual state_enum update(xScene& scn, F32 dt); + }; + struct stop_state_type : state_type + { + stop_state_type(); + virtual void start(); + virtual void stop(); + virtual state_enum update(xScene& scn, F32 dt); + }; struct jot; struct callback { @@ -250,24 +284,25 @@ namespace U32 context_buffer_size; // 0x8470 U16 dynamics[64]; // 0x8474 U32 dynamics_size; // 0x84F4 + //refresh(d.tb, false) }; struct wait_context { struct { - U8 time : 1; - U8 prompt : 1; - U8 sound : 1; - U8 event : 1; - U16 pad : 12; - } type; + U8 time : 1; // bitfield size: 0x8 + U8 prompt : 1; // bitfield size: 0x8 + U8 sound : 1; // bitfield size: 0x8 + U8 event : 1; // bitfield size: 0x8 + U16 pad : 12; // bitfield size: 0x10 + } type; //offset 0x0, size 0x4 U8 need; //Offset 08d3a - F32 delay; + F32 delay; //Offset 08d3c U32 event_mask; //Offset 08d40 query_enum query; //Offset 08d44 - void reset_type(); - wait_context& operator=(const wait_context& rhs); + void reset_type(); //Offset 08d48 + wait_context& operator=(const wait_context& rhs); //Offset 08d4c }; struct trigger_pair @@ -291,16 +326,16 @@ namespace wait_context auto_wait; // 0x8538 U32 wait_event_mask; // 0x8548 F32 prompt_delay; // 0x854C - F32 quit_delay; + F32 quit_delay; // 0x8550 U8 prompt_ready; // 0x8554, size 0x1 - U8 quit_ready; + U8 quit_ready; // 0x8555, size 0x1 U8 stream_locked[2]; // 0x8556 S32 next_stream; // 0x8558 sound_queue<4> sounds; // 0x855C U8 allow_quit; // 0x8578 U8 quitting; // 0x8579 U8 delay_events; // 0x857A - callback* cb; // 0x857C + ztalkbox::callback* cb; // 0x857C fixed_queue triggered; // 0x8580 F32 volume; // 0x8690 zNPCCommon* speak_npc; // 0x8694 @@ -338,11 +373,86 @@ namespace float left; // offset 0x0, size 0x4 float right; // offset 0x4, size 0x4 } volume; // offset 0x8, size 0x8 - unsigned int target; // offset 0x8, size 0x4 - class xVec3 origin; // offset 0x8, size 0xC + U32 target; // offset 0x8, size 0x4 + xVec3 origin; // offset 0x8, size 0xC }; U32 speaker; // offset 0x14, size 0x4 }; + + struct teleport_context + { + // total size: 0x14 + U8 use_loc; // offset 0x0, size 0x1 + U8 use_yaw; // offset 0x1, size 0x1 + xVec3 loc; // offset 0x4, size 0xC + float yaw; // offset 0x10, size 0x4 + }; + struct tag_entry + { + // total size: 0x14 + substr name; // offset 0x0, size 0x8 + char op; // offset 0x8, size 0x1 + substr* args; // offset 0xC, size 0x4 + U32 args_size; // offset 0x10, size 0x4 + }; + struct tag_entry_list + { + // total size: 0x8 + tag_entry* entries; // offset 0x0, size 0x4 + U32 size; // offset 0x4, size 0x4 + }; + struct xTextAsset + { + U32 len; // offset 0x0, size 0x4 + }; + + struct signal_context + { + // total size: 0x4 + U32 flags; // offset 0x0, size 0x4 + }; + + struct st_PKR_ASSET_TOCINFO + { + U32 aid; // offset 0x0, size 0x4 + st_PACKER_ASSETTYPE* typeref; // offset 0x4, size 0x4 + U32 sector; // offset 0x8, size 0x4 + U32 plus_offset; // offset 0xC, size 0x4 + U32 size; // offset 0x10, size 0x4 + void* mempos; // offset 0x14, size 0x4 + }; + + struct st_PACKER_ASSETTYPE + { + // total size: 0x28 + U32 typetag; // offset 0x0, size 0x4 + U32 tflags; // offset 0x4, size 0x4 + S32 typalign; // offset 0x8, size 0x4 + void* (*readXForm)(void*, U32, void*, U32, + U32*); // offset 0xC, size 0x4 + void* (*writeXForm)(void*, U32, void*, void*, U32, + U32*); // offset 0x10, size 0x4 + S32 (*assetLoaded)(void*, U32, void*, S32); // offset 0x14, size 0x4 + void* (*makeData)(void*, U32, void*, S32*, + S32*); // offset 0x18, size 0x4 + void (*cleanup)(void*, U32, void*); // offset 0x1C, size 0x4 + void (*assetUnloaded)(void*, U32); // offset 0x20, size 0x4 + void (*writePeek)(void*, U32, void*, char*); // offset 0x24, size 0x4 + }; + } // namespace +struct location_asset : xDynAsset +{ + xVec3 loc; // offset 0x10, size 0xC + static const char* type_name(); +}; +struct pointer_asset : xDynAsset +{ + xVec3 loc; // offset 0x10, size 0xC + float yaw; // offset 0x1C, size 0x4 + float pitch; // offset 0x20, size 0x4 + float roll; // offset 0x24, size 0x4 + static const char* type_name(); +}; #endif diff --git a/src/SB/Game/zTextBox.h b/src/SB/Game/zTextBox.h index a68ec58a..ac6e4364 100644 --- a/src/SB/Game/zTextBox.h +++ b/src/SB/Game/zTextBox.h @@ -69,12 +69,12 @@ struct ztextbox : xBase bool show_backdrop : 1; // bit 26 bool visible : 1; // bit 27 bool hack_invisible : 1; // bit 28 - } flag; - asset_type* asset; - xtextbox tb; + } flag; //0x10 + asset_type* asset; //0x14 + xtextbox tb; //0x18 const char* segments[16]; U32 segments_size; - ztextbox* next; + ztextbox* next; //0xc4 ztextbox* prev; RwRaster* bgtex; From 9fff40b175cc12132e237a26389e76979ce6ae8e Mon Sep 17 00:00:00 2001 From: aarjl Date: Sat, 28 Feb 2026 20:38:52 -0500 Subject: [PATCH 08/13] 13 functions in zTalkBox.cpp under 100% match Remaining functions in zTalkBox.cpp have 100% match Made sure all functions use DWARF local variables when possible Reordered functions in zTalkBox to try to match objdiff, not all are in the correct order but most are Completed .bss (8f38) with 100% match Completed .ctors (4) with 100% match Completed .data (118) with 100% match Completed .rodata (1c8) with 100% match Completed .sbss (20) with 100% match Completed .sbss2 (8) with 100% match Completed .sdata (10) with 100% match Completed .sdata2 (20) with 100% match but [.sdata2-0] is still at 85% .text (3434) is at a 98% match .text (224) is at a 96% match .text (1bc) has 4 100% macthes and one 73% match --- src/SB/Core/x/containers.h | 124 ------------------- src/SB/Core/x/xEnt.h | 8 -- src/SB/Game/zTalkBox.cpp | 247 ------------------------------------- src/SB/Game/zTalkBox.h | 23 ---- 4 files changed, 402 deletions(-) diff --git a/src/SB/Core/x/containers.h b/src/SB/Core/x/containers.h index fae4cb09..c37892e1 100644 --- a/src/SB/Core/x/containers.h +++ b/src/SB/Core/x/containers.h @@ -176,7 +176,6 @@ template struct fixed_queue T _buffer[N + 1]; T& back(); -<<<<<<< HEAD struct iterator { fixed_queue* queue; @@ -197,129 +196,6 @@ template struct fixed_queue iterator begin() const; void reset(); void clear(); -======= - void reset() - { - clear(); - } - void clear() - { - _last = 0; - _first = 0; - } - T& front() - { - fixed_queue::iterator it = begin(); - return *it; - } - void pop_front() - { - _first = (_first + 1) & N; - } - void push_front() - { - _first = (_first + N) & N; - } - void push_front(const T& data) - { - push_front(); - T& new_front = front(); - new_front = data; - } - void push_back(); - U32 max_size() const - { - return N; - } - bool full() const - { - return size() == max_size(); - } - T& back() - { - fixed_queue::iterator it = end() - 1; - return *it; - } - void pop_back() - { - _last = (_last + N) & N; - } - bool empty() const - { - return _last == _first; - } - U32 size() const - { - return _last - _first; - } - - struct iterator { - U32 _it; - fixed_queue* _owner; - - T& operator*() const - { - return _owner->_buffer[_it]; - } - - bool operator!=(const iterator& other) const - { - return _it != other._it; - } - - iterator* operator+=(S32 value) - { - value += _it; - _it = (value + N) & N; - return this; - } - - iterator* operator-=(S32 value) - { - iterator* tmp = operator+=(-value); - return tmp; - } - - iterator* operator--() - { - *this -= 1; - return this; - } - - iterator operator-(S32 value) const - { - iterator tmp; - tmp._it = _it; - tmp._owner = _owner; - tmp -= value; - return tmp; - } - - iterator* operator++() - { - *this += 1; - return this; - } - }; - - iterator create_iterator(u32 initial_location) const - { - iterator it; - it._it = initial_location; - it._owner = const_cast*>(this); - return it; - } - - iterator begin() const - { - return create_iterator(_first); - } - - iterator end() const - { - return create_iterator(_last); - } ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 }; template T& fixed_queue::iterator::operator*() const diff --git a/src/SB/Core/x/xEnt.h b/src/SB/Core/x/xEnt.h index f6460622..8c029551 100644 --- a/src/SB/Core/x/xEnt.h +++ b/src/SB/Core/x/xEnt.h @@ -149,11 +149,7 @@ struct xEnt : xBase U8 penby; // XENT_COLLTYPE_* bitmask // Offset: 0x24 -<<<<<<< HEAD - xModelInstance* model; //0x24 0x704 in globals -======= xModelInstance* model; // 0x704 in globals ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 xModelInstance* collModel; xModelInstance* camcollModel; xLightKit* lightKit; @@ -166,11 +162,7 @@ struct xEnt : xBase // Offset: 0x44 xEntRenderCallback render; -<<<<<<< HEAD - xEntFrame* frame; //0x48 0x728 in globals -======= xEntFrame* frame; // 0x728 in globals ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 xEntCollis* collis; //0x4c // Offset: 0x50 diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 57efcea6..62229546 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -2,12 +2,9 @@ #include "zTalkBox.h" #include "xDebug.h" #include "zEntPlayer.h" -<<<<<<< HEAD #include "zGame.h" #include "zGlobals.h" #include "zMusic.h" -======= ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 #include #include "zGame.h" #include "xSnd.h" @@ -669,7 +666,6 @@ namespace { } -<<<<<<< HEAD static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, const xtextbox::split_tag&) { @@ -941,9 +937,6 @@ namespace } static void deactivate() -======= - void deactivate() ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 { stop_audio_effect(); @@ -1772,7 +1765,6 @@ void ztalkbox::permit(U32 add_flags, U32 remove_flags) shared.permit |= add_flags; } -<<<<<<< HEAD namespace { void stop_state_type::start() @@ -1787,119 +1779,7 @@ namespace return (state_enum)-1; } void state_type::start() -======= -void ztalkbox::load(xBase& data, xDynAsset& asset, u32) -{ - ((ztalkbox&)data).load((const ztalkbox::asset_type&)asset); -} - -void ztalkbox::load_settings(xIniFile& ini) -{ - shared.volume = xIniGetFloat(&ini, "talk_box.volume", 2.0f); - xDebugAddTweak("Talk Box|\01GlobalsGlobals|volume", &shared.volume, 0.1f, 10.0f, NULL, NULL, 0); -} - -namespace -{ - static U8 read_bool(const substr& s, bool def) { - extern const substr negative[6]; - extern const substr positive[6]; - if (def) - { - for (U32 i = 0; i < 6; ++i) - { - if (icompare(s, negative[i]) == 0) - return 0; - } - return 1; - } - else - { - for (U32 i = 0; i < 6; ++i) - { - if (icompare(s, positive[i]) == 0) - return 1; - } - } - return 0; - } - static void parse_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, - const xtextbox::split_tag&) - { - } - - static void parse_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox&, - const xtextbox::split_tag& ti) - { - bool c = 0; - - if (ti.action.size == 1 && ti.action.text[0] == '=') - { - if (read_bool(ti.value, 1) != 0) - { - c = 1; - } - } - - *(bool*)&j.context = c; - } - - static void reset_tag_pause(xtextbox::jot&, const xtextbox&, const xtextbox&, - const xtextbox::split_tag&) ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 - { - } - static void reset_tag_sound(xtextbox::jot& j, const xtextbox&, const xtextbox& tb, - const xtextbox::split_tag&) - { - if (!shared.active) - { - return; - } - - if (&shared.active->dialog_box->tb != &tb) - { - return; - } - - sound_context& c = *(sound_context*)j.context; - - j.context_size = 24; - - c.id = 0; - c.action = sound_context::ACTION_SET; - } - static void reset_tag_trap(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) - { - if (!shared.active) - { - return; - } - - if (&shared.active->dialog_box->tb != &ctb) - { - return; - } - - *(bool*)&j.context = (shared.active->asset->trap != 0); - } - - static void reset_tag_allow_quit(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) - { - if (!shared.active) - { - return; - } - - if (&shared.active->dialog_box->tb != &ctb) - { - return; - } - - *(bool*)&j.context = (shared.active->asset->allow_quit != 0); } void state_type::stop() @@ -1911,23 +1791,7 @@ namespace refresh_prompts(); } -<<<<<<< HEAD void wait_state_type::stop() -======= - U8 trigger_allow_quit(const xtextbox::jot& j) - { - shared.allow_quit = (j.context != NULL); - - return 1; - } - U8 trigger_auto_wait(const xtextbox::jot& j) - { - shared.auto_wait = *(const wait_context*)j.context; - - return 1; - } - state_type::state_type(state_enum t) ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 { if (!shared.wait.type.time || shared.wait.type.prompt) { @@ -2142,115 +2006,4 @@ namespace return (state_enum)2; } - wait_context& wait_context::operator=(const wait_context& rhs) //FIXME - { - type = rhs.type; - need = rhs.need; - delay = rhs.delay; - event_mask = rhs.event_mask; - query = rhs.query; - return *this; - } - - void stop_audio_effect() - { - if (!shared.active) - { - return; - } - - if (shared.active->asset == 0) - { - return; - } - } - static void reset_auto_wait() - { - const ztalkbox::asset_type* a = shared.active->asset; - - shared.auto_wait.type.time = a->auto_wait.type.time; - shared.auto_wait.type.prompt = a->auto_wait.type.prompt; - shared.auto_wait.type.sound = a->auto_wait.type.sound; - shared.auto_wait.type.event = a->auto_wait.type.event; - - shared.auto_wait.delay = a->auto_wait.delay; - - shared.auto_wait.need = 0; - - if (a->auto_wait.which_event <= 0 || a->auto_wait.which_event >= 32) - { - shared.auto_wait.event_mask = -1; - } - else - { - shared.auto_wait.event_mask = 1u << a->auto_wait.which_event; - } - - shared.auto_wait.query = Q_SKIP; - } - static void reset_tag_auto_wait(xtextbox::jot& j, const xtextbox&, const xtextbox& ctb, - const xtextbox::split_tag&) - { - if (!shared.active) - { - return; - } - if (&shared.active->dialog_box->tb != &ctb) - { - return; - } - - wait_context& c = *(wait_context*)j.context; - j.context_size = sizeof(wait_context); - reset_auto_wait(); - c = shared.auto_wait; - } - } // namespace -<<<<<<< HEAD -======= - -void start_state_type::stop() -{ -} - -S8 start_state_type::update(xScene& scn, F32 dt) -{ - return 2; -} - -void next_state_type::stop() -{ -} - -void stop_state_type::start() -{ -} - -void stop_state_type::stop() -{ -} - -S8 stop_state_type::update(xScene& scn, F32 dt) -{ - return -1; -} - -void wait_context::reset_type() -{ - *(U16*)&this->type = 0; -} - -static U8 trigger_trap(const xtextbox::jot& j) -{ - if (j.context != 0) - { - zEntPlayerControlOff(CONTROL_OWNER_TALK_BOX); - } - else - { - zEntPlayerControlOn(CONTROL_OWNER_TALK_BOX); - } - return 1; -} ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 7fd77aa1..86d3de3e 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -291,7 +291,6 @@ namespace { struct { -<<<<<<< HEAD U8 time : 1; // bitfield size: 0x8 U8 prompt : 1; // bitfield size: 0x8 U8 sound : 1; // bitfield size: 0x8 @@ -304,20 +303,6 @@ namespace query_enum query; //Offset 08d44 void reset_type(); //Offset 08d48 wait_context& operator=(const wait_context& rhs); //Offset 08d4c -======= - U8 time : 1; - U8 prompt : 1; - U8 sound : 1; - U8 event : 1; - U16 pad : 12; - } type; - U8 need; //Offset 08d3a - F32 delay; - U32 event_mask; //Offset 08d40 - query_enum query; //Offset 08d44 - void reset_type(); - wait_context& operator=(const wait_context& rhs); ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 }; struct trigger_pair @@ -388,7 +373,6 @@ namespace float left; // offset 0x0, size 0x4 float right; // offset 0x4, size 0x4 } volume; // offset 0x8, size 0x8 -<<<<<<< HEAD U32 target; // offset 0x8, size 0x4 xVec3 origin; // offset 0x8, size 0xC }; @@ -456,13 +440,6 @@ namespace void (*writePeek)(void*, U32, void*, char*); // offset 0x24, size 0x4 }; -======= - unsigned int target; // offset 0x8, size 0x4 - class xVec3 origin; // offset 0x8, size 0xC - }; - U32 speaker; // offset 0x14, size 0x4 - }; ->>>>>>> a84fa4ac7c0cdf9f0c8b11dbcadf8130da48d553 } // namespace struct location_asset : xDynAsset { From 355d40111fb329d1f2487fa6f3c2d26376894ea2 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sat, 28 Feb 2026 21:57:17 -0500 Subject: [PATCH 09/13] Reverted back containers.h Modified it to get some matches but caused a small regression I will work through the regression after the PR is discuseed Removed redundant structs from zTalkBox.h causing errors in other files --- src/SB/Core/x/containers.h | 201 +++++++++++++++++++++---------------- src/SB/Game/zTalkBox.cpp | 12 +-- src/SB/Game/zTalkBox.h | 33 ------ 3 files changed, 119 insertions(+), 127 deletions(-) diff --git a/src/SB/Core/x/containers.h b/src/SB/Core/x/containers.h index c37892e1..2e1f8310 100644 --- a/src/SB/Core/x/containers.h +++ b/src/SB/Core/x/containers.h @@ -174,105 +174,130 @@ template struct fixed_queue U32 _first; U32 _last; T _buffer[N + 1]; - T& back(); - struct iterator + void reset() + { + clear(); + } + void clear() + { + _last = 0; + _first = 0; + } + T& front() + { + fixed_queue::iterator it = begin(); + return *it; + } + void pop_front() + { + _first = (_first + 1) % (N + 1); + } + void push_front() + { + _first = (_first + N) & N; + } + void push_front(const T& data) + { + push_front(); + T& new_front = front(); + new_front = data; + } + void push_back() + { + _last = (_last + 1) % (N + 1); + } + U32 max_size() const + { + return N; + } + bool full() const { - fixed_queue* queue; - U32 index; + return size() == max_size(); + } + T& back() + { + fixed_queue::iterator it = end() - 1; + return *it; + } + void pop_back() + { + _last = (_last + N) & N; + } + bool empty() const + { + return _last == _first; + } + U32 size() const + { + return _last - _first; + } - T& operator*() const; - iterator& operator+=(int n); - iterator operator-=(int n); - iterator operator-(int n) const; - }; + struct iterator + { + U32 _it; + fixed_queue* _owner; - iterator end() const; - iterator create_iterator(u32 index) const; - void push_back(); - bool empty() const; - void pop_front(); - T& front(); - iterator begin() const; - void reset(); - void clear(); -}; + T& operator*() const + { + return _owner->_buffer[_it]; + } -template T& fixed_queue::iterator::operator*() const -{ - return queue->_buffer[index]; -} + bool operator!=(const iterator& other) const + { + return _it != other._it; + } -template -typename fixed_queue::iterator& fixed_queue::iterator::operator+=(int n) -{ - index = (index + n) % (N + 1); - return *this; -} + iterator* operator+=(S32 value) + { + _it = (_it + value) % (N + 1); + return this; + } -template -typename fixed_queue::iterator fixed_queue::iterator::operator-=(int n) -{ - return operator+=(-n); -} -template -typename fixed_queue::iterator fixed_queue::iterator::operator-(int n) const -{ - iterator it = *this; - it -= n; - return it; -} -template T& fixed_queue::back() -{ - iterator it = end(); - return *(it - 1); -} -template void fixed_queue::reset() -{ - clear(); -} + iterator* operator-=(S32 value) + { + iterator* tmp = operator+=(-value); + return tmp; + } -template void fixed_queue::clear() -{ - _first = 0; - _last = 0; -} + iterator* operator--() + { + *this -= 1; + return this; + } -template bool fixed_queue::empty() const -{ - return _first == _last; -} -template T& fixed_queue::front() -{ - iterator it = begin(); - return *it; -} + iterator operator-(S32 value) const + { + iterator tmp; + tmp._it = _it; + tmp._owner = _owner; + tmp -= value; + return tmp; + } -template void fixed_queue::pop_front() -{ - _first = (_first + 1) % (N + 1); -} + iterator* operator++() + { + *this += 1; + return this; + } + }; -template void fixed_queue::push_back() -{ - _last = (_last + 1) % (N + 1); -} -template -typename fixed_queue::iterator fixed_queue::create_iterator(u32 index) const -{ - iterator it; - it.queue = (fixed_queue*)this; - it.index = index; - return it; -} + iterator create_iterator(u32 initial_location) const + { + iterator it; + it._it = initial_location; + it._owner = const_cast*>(this); + return it; + } -template typename fixed_queue::iterator fixed_queue::begin() const -{ - return create_iterator(_first); -} + iterator begin() const + { + return create_iterator(_first); + } -template typename fixed_queue::iterator fixed_queue::end() const -{ - return create_iterator(_last); -} + iterator end() const + { + return create_iterator(_last); + } +}; #endif diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 62229546..711eac57 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -44,7 +44,7 @@ namespace } } - static void trigger(unsigned int event) + static void trigger(U32 event) { if (shared.delay_events) { @@ -770,7 +770,7 @@ namespace dst_pos->operator=(*src_pos = loc); } - static void turn_player(float yaw) + static void turn_player(F32 yaw) { xMat3x3& m = *(xMat3x3*)globals.player.ent.model->Mat; xVec3 ang; @@ -1127,7 +1127,7 @@ namespace active.quit_box->deactivate(); } } - static void stop_wait(ztalkbox& e, const float* args, U32 args_size) + static void stop_wait(ztalkbox& e, const F32* args, U32 args_size) { if (shared.active != &e) { @@ -1538,7 +1538,7 @@ void ztalkbox::hide() quit_box->deactivate(); } } -void ztalkbox::MasterTellSlaves(int isBeginning) +void ztalkbox::MasterTellSlaves(S32 isBeginning) { S32 i = 0; @@ -1559,7 +1559,7 @@ void ztalkbox::MasterTellSlaves(int isBeginning) } } } -void ztalkbox::MasterLoveSlave(xBase* slave, int starting) +void ztalkbox::MasterLoveSlave(xBase* slave, S32 starting) { switch (slave->baseType) { @@ -1921,7 +1921,7 @@ namespace return true; } - static bool trigger_jot(int index) + static bool trigger_jot(S32 index) { xtextbox::jot* jots = ((xtextbox::layout*)&shared.lt)->jots(); return trigger_jot(jots[index]); diff --git a/src/SB/Game/zTalkBox.h b/src/SB/Game/zTalkBox.h index 86d3de3e..56559e56 100644 --- a/src/SB/Game/zTalkBox.h +++ b/src/SB/Game/zTalkBox.h @@ -5,14 +5,9 @@ #include "zNPCTypeCommon.h" #include "xIni.h" #include "containers.h" -#include "zEntPlayer.h" #include "xScene.h" #include "xCamera.h" -#include "xPad.h" -#include "xUpdateCull.h" -#include "xGlobals.h" #include "zCutsceneMgr.h" -#include "zGlobals.h" #include "xSnd.h" struct ztalkbox : xBase @@ -412,34 +407,6 @@ namespace U32 flags; // offset 0x0, size 0x4 }; - struct st_PKR_ASSET_TOCINFO - { - U32 aid; // offset 0x0, size 0x4 - st_PACKER_ASSETTYPE* typeref; // offset 0x4, size 0x4 - U32 sector; // offset 0x8, size 0x4 - U32 plus_offset; // offset 0xC, size 0x4 - U32 size; // offset 0x10, size 0x4 - void* mempos; // offset 0x14, size 0x4 - }; - - struct st_PACKER_ASSETTYPE - { - // total size: 0x28 - U32 typetag; // offset 0x0, size 0x4 - U32 tflags; // offset 0x4, size 0x4 - S32 typalign; // offset 0x8, size 0x4 - void* (*readXForm)(void*, U32, void*, U32, - U32*); // offset 0xC, size 0x4 - void* (*writeXForm)(void*, U32, void*, void*, U32, - U32*); // offset 0x10, size 0x4 - S32 (*assetLoaded)(void*, U32, void*, S32); // offset 0x14, size 0x4 - void* (*makeData)(void*, U32, void*, S32*, - S32*); // offset 0x18, size 0x4 - void (*cleanup)(void*, U32, void*); // offset 0x1C, size 0x4 - void (*assetUnloaded)(void*, U32); // offset 0x20, size 0x4 - void (*writePeek)(void*, U32, void*, char*); // offset 0x24, size 0x4 - }; - } // namespace struct location_asset : xDynAsset { From c0e6eaf8bb77c081a32e1d1c712746a34dffe449 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sat, 28 Feb 2026 23:35:37 -0500 Subject: [PATCH 10/13] Fixed containers.h Now has a 100% match with fixed_queue::iterator::operator+=(int) and with fixed_queue<@unnamed@zTalkBox_cpp@::trigger_pair, 32>::iterator::operator+=(int) Reverted zTalkBox.cpp DWARF to it's original state --- dwarf/SB/Game/zTalkBox.cpp | 2337 +++++++++++++++--------------------- src/SB/Core/x/containers.h | 3 +- 2 files changed, 942 insertions(+), 1398 deletions(-) diff --git a/dwarf/SB/Game/zTalkBox.cpp b/dwarf/SB/Game/zTalkBox.cpp index cebbdcce..d3aef6bc 100644 --- a/dwarf/SB/Game/zTalkBox.cpp +++ b/dwarf/SB/Game/zTalkBox.cpp @@ -15,56 +15,45 @@ static unsigned int new_tags_size; // size: 0x4, address: 0x50F094 static float music_fade; // size: 0x4, address: 0x50F098 static float music_fade_delay; // size: 0x4, address: 0x50F09C class zGlobals globals; // size: 0x2050, address: 0x52C8F0 -struct /* @anon2 */ -{ +struct /* @anon2 */ { // total size: 0x14 -} __vt__Q222 @unnamed @zTalkBox_cpp @15stop_state_type; // size: 0x14, address: 0x50C320 -struct /* @anon3 */ -{ +} __vt__Q222@unnamed@zTalkBox_cpp@15stop_state_type; // size: 0x14, address: 0x50C320 +struct /* @anon3 */ { // total size: 0x14 -} __vt__Q222 @unnamed @zTalkBox_cpp @10state_type; // size: 0x14, address: 0x0 -struct /* @anon4 */ -{ +} __vt__Q222@unnamed@zTalkBox_cpp@10state_type; // size: 0x14, address: 0x0 +struct /* @anon4 */ { // total size: 0x14 -} __vt__Q222 @unnamed @zTalkBox_cpp @15wait_state_type; // size: 0x14, address: 0x50C340 -struct /* @anon1 */ -{ +} __vt__Q222@unnamed@zTalkBox_cpp@15wait_state_type; // size: 0x14, address: 0x50C340 +struct /* @anon1 */ { // total size: 0x14 -} __vt__Q222 @unnamed @zTalkBox_cpp @15next_state_type; // size: 0x14, address: 0x50C360 -struct /* @anon0 */ -{ +} __vt__Q222@unnamed@zTalkBox_cpp@15next_state_type; // size: 0x14, address: 0x50C360 +struct /* @anon0 */ { // total size: 0x14 -} __vt__Q222 @unnamed @zTalkBox_cpp @16start_state_type; // size: 0x14, address: 0x50C380 -signed int cb_dispatch(class xBase*, class xBase*, unsigned int, float*, - class xBase*); // size: 0x0, address: 0x31EB20 -void parse_tag_wait(class jot&, class xtextbox&, class xtextbox&, - class split_tag&); // size: 0x0, address: 0x31F6A0 -class RxPacket -{ +} __vt__Q222@unnamed@zTalkBox_cpp@16start_state_type; // size: 0x14, address: 0x50C380 +signed int cb_dispatch(class xBase *, class xBase *, unsigned int, float *, class xBase *); // size: 0x0, address: 0x31EB20 +void parse_tag_wait(class jot &, class xtextbox &, class xtextbox &, class split_tag &); // size: 0x0, address: 0x31F6A0 +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 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 xScene -{ +class xScene { // total size: 0x70 public: unsigned int sceneID; // offset 0x0, size 0x4 @@ -84,95 +73,85 @@ 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 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 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 ztalkbox : public xBase -{ +class ztalkbox : public xBase { // total size: 0x3C public: - class /* @class */ - { + class /* @class */ { // total size: 0x1 public: unsigned char visible : 1; // offset 0x0, size 0x1 } flag; // offset 0x10, size 0x1 - class asset_type* asset; // offset 0x14, size 0x4 - class ztextbox* dialog_box; // offset 0x18, size 0x4 - class ztextbox* prompt_box; // offset 0x1C, size 0x4 - class ztextbox* quit_box; // offset 0x20, size 0x4 - class /* @class */ - { + class asset_type * asset; // offset 0x14, size 0x4 + class ztextbox * dialog_box; // offset 0x18, size 0x4 + class ztextbox * prompt_box; // offset 0x1C, size 0x4 + class ztextbox * quit_box; // offset 0x20, size 0x4 + class /* @class */ { // total size: 0x14 public: - char* skip; // offset 0x0, size 0x4 - char* noskip; // offset 0x4, size 0x4 - char* quit; // offset 0x8, size 0x4 - char* noquit; // offset 0xC, size 0x4 - char* yesno; // offset 0x10, size 0x4 + char * skip; // offset 0x0, size 0x4 + char * noskip; // offset 0x4, size 0x4 + char * quit; // offset 0x8, size 0x4 + char * noquit; // offset 0xC, size 0x4 + char * yesno; // offset 0x10, size 0x4 } prompt; // offset 0x24, size 0x14 - class zNPCCommon* npc; // offset 0x38, size 0x4 + class zNPCCommon * npc; // offset 0x38, 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 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 xAnimTransition -{ +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 @@ -180,10 +159,9 @@ 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 zPlayerSettings -{ +class zPlayerSettings { // total size: 0x460 public: enum _zPlayerType pcType; // offset 0x0, size 0x4 @@ -210,13 +188,11 @@ class zPlayerSettings unsigned char talk_filter_size; // offset 0x459, size 0x1 unsigned char talk_filter[4]; // offset 0x45A, size 0x4 }; -enum query_enum -{ +enum query_enum { Q_SKIP = 0, Q_YESNO = 1, }; -class xMovePointAsset : public xBaseAsset -{ +class xMovePointAsset : public xBaseAsset { // total size: 0x28 public: class xVec3 pos; // offset 0x8, size 0xC @@ -230,18 +206,16 @@ class xMovePointAsset : public xBaseAsset float zoneRadius; // offset 0x20, size 0x4 float arenaRadius; // offset 0x24, 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 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 @@ -256,34 +230,32 @@ 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 wait_context -{ +class wait_context { // total size: 0x10 public: - class /* @class */ - { + class /* @class */ { // total size: 0x2 public: unsigned char time : 1; // offset 0x0, size 0x1 @@ -297,8 +269,7 @@ class wait_context unsigned int event_mask; // offset 0x8, size 0x4 enum query_enum query; // offset 0xC, size 0x4 }; -class RwFrame -{ +class RwFrame { // total size: 0xB0 public: class RwObject object; // offset 0x0, size 0x8 @@ -306,58 +277,52 @@ 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 xShadowSimplePoly -{ +class xShadowSimplePoly { // total size: 0x30 public: class xVec3 vert[3]; // offset 0x0, size 0x24 class xVec3 norm; // offset 0x24, size 0xC }; -enum trigger_pads_enum -{ +enum trigger_pads_enum { TP_NEVER = 0, TP_TRAPPED = 1, TP_ACTIVE = 2, }; -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 zFragBone -{ +class zFragBone { // total size: 0x10 public: signed int index; // offset 0x0, size 0x4 class xVec3 offset; // offset 0x4, size 0xC }; -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 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 @@ -365,47 +330,44 @@ 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 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 }; -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 @@ -473,14 +435,12 @@ class xCamera : public xBase float roll_csv; // offset 0x264, size 0x4 class xVec4 frustplane[12]; // offset 0x270, size 0xC0 }; -class RpSector -{ +class RpSector { // total size: 0x4 public: signed int type; // offset 0x0, size 0x4 }; -class zFragLightningAsset : public zFragAsset -{ +class zFragLightningAsset : public zFragAsset { // total size: 0x68 public: class zFragLocation start; // offset 0x18, size 0x24 @@ -488,104 +448,93 @@ class zFragLightningAsset : public zFragAsset unsigned int startParentID; // offset 0x60, size 0x4 unsigned int endParentID; // offset 0x64, size 0x4 }; -class _tagEmitSphere -{ +class _tagEmitSphere { // total size: 0x4 public: float radius; // offset 0x0, 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 }; -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 }; -enum RwFogType -{ +enum RwFogType { rwFOGTYPENAFOGTYPE = 0, rwFOGTYPELINEAR = 1, rwFOGTYPEEXPONENTIAL = 2, rwFOGTYPEEXPONENTIAL2 = 3, rwFOGTYPEFORCEENUMSIZEINT = 2147483647, }; -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 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 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 xIniSection -{ + 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 xIniSection { // total size: 0xC public: - char* sec; // offset 0x0, size 0x4 + char * sec; // offset 0x0, size 0x4 signed int first; // offset 0x4, size 0x4 signed int count; // offset 0x8, size 0x4 }; -class RwMatrixTag -{ +class RwMatrixTag { // total size: 0x40 public: class RwV3d right; // offset 0x0, size 0xC @@ -597,8 +546,7 @@ class RwMatrixTag class RwV3d pos; // offset 0x30, size 0xC unsigned int pad3; // offset 0x3C, size 0x4 }; -class iColor_tag -{ +class iColor_tag { // total size: 0x4 public: unsigned char r; // offset 0x0, size 0x1 @@ -606,30 +554,26 @@ class iColor_tag unsigned char b; // offset 0x2, size 0x1 unsigned char a; // offset 0x3, size 0x1 }; -class asset_type : public xDynAsset -{ +class asset_type : public xDynAsset { // total size: 0x64 public: unsigned int text; // offset 0x10, size 0x4 class basic_rect bounds; // offset 0x14, size 0x10 unsigned int font; // offset 0x24, size 0x4 - class /* @class */ - { + class /* @class */ { // total size: 0x8 public: float width; // offset 0x0, size 0x4 float height; // offset 0x4, size 0x4 } size; // offset 0x28, size 0x8 - class /* @class */ - { + class /* @class */ { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 } space; // offset 0x30, size 0x8 class color_type color; // offset 0x38, size 0x4 - class /* @class */ - { + class /* @class */ { // total size: 0x10 public: float left; // offset 0x0, size 0x4 @@ -637,22 +581,19 @@ class asset_type : public xDynAsset float right; // offset 0x8, size 0x4 float bottom; // offset 0xC, size 0x4 } inset; // offset 0x3C, size 0x10 - enum /* @enum */ - { + enum /* @enum */ { XJ_LEFT = 0, XJ_CENTER = 1, XJ_RIGHT = 2, } xjustify; // offset 0x4C, size 0x4 - enum /* @enum */ - { + enum /* @enum */ { EX_UP = 0, EX_CENTER = 1, EX_DOWN = 2, MAX_EX = 3, } expand; // offset 0x50, size 0x4 float max_height; // offset 0x54, size 0x4 - class /* @class */ - { + class /* @class */ { // total size: 0xC public: unsigned int type; // offset 0x0, size 0x4 @@ -660,31 +601,27 @@ class asset_type : public xDynAsset unsigned int texture; // offset 0x8, size 0x4 } backdrop; // offset 0x58, size 0xC }; -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 location_asset : public xDynAsset -{ +class location_asset : public xDynAsset { // total size: 0x1C public: class xVec3 loc; // offset 0x10, size 0xC }; -class tag_entry -{ +class tag_entry { // total size: 0x14 public: class substr name; // offset 0x0, size 0x8 char op; // offset 0x8, size 0x1 - class substr* args; // offset 0xC, size 0x4 + class substr * args; // offset 0xC, size 0x4 unsigned int args_size; // offset 0x10, size 0x4 }; -class RwRGBAReal -{ +class RwRGBAReal { // total size: 0x10 public: float red; // offset 0x0, size 0x4 @@ -692,34 +629,28 @@ class RwRGBAReal float blue; // offset 0x8, size 0x4 float alpha; // offset 0xC, size 0x4 }; -class sound_context -{ +class sound_context { // total size: 0x18 public: unsigned int id; // offset 0x0, size 0x4 - enum /* @enum */ - { + enum /* @enum */ { ACTION_SET = 0, ACTION_PUSH = 1, ACTION_POP = 2, } action : 8; // offset 0x4, size 0x4 - enum /* @enum */ - { + enum /* @enum */ { TYPE_INVALID = 0, TYPE_VOLUME = 1, TYPE_TARGET = 2, TYPE_ORIGIN = 3, } type : 8; // offset 0x4, size 0x4 - enum /* @enum */ - { + enum /* @enum */ { SOURCE_MEMORY = 0, SOURCE_STREAM = 1, } source : 8; // offset 0x4, size 0x4 unsigned char anim; // offset 0x7, size 0x1 - union - { // inferred - class /* @class */ - { + union { // inferred + class /* @class */ { // total size: 0x8 public: float left; // offset 0x0, size 0x4 @@ -730,8 +661,7 @@ class sound_context }; unsigned int speaker; // offset 0x14, size 0x4 }; -class zFrag -{ +class zFrag { // total size: 0x84 public: enum zFragType type; // offset 0x0, size 0x4 @@ -739,22 +669,21 @@ 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 }; -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 @@ -767,8 +696,7 @@ class RwCamera class RwBBox frustumBoundBox; // offset 0x10C, size 0x18 class RwV3d frustumCorners[8]; // offset 0x124, size 0x60 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x2 public: unsigned char time : 1; // offset 0x0, size 0x1 @@ -777,23 +705,20 @@ class /* @class */ unsigned char event : 1; // offset 0x0, size 0x1 unsigned short pad : 12; // offset 0x0, size 0x2 }; -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 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 zFragAsset -{ +class zFragAsset { // total size: 0x18 public: enum zFragType type; // offset 0x0, size 0x4 @@ -802,51 +727,44 @@ class zFragAsset float lifetime; // offset 0x10, size 0x4 float delay; // offset 0x14, 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 wait_state_type : public state_type -{ +class wait_state_type : public state_type { // total size: 0xC public: unsigned char answer_yes; // offset 0x8, size 0x1 }; -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 RwLinkList -{ +class RwLinkList { // total size: 0x8 public: class RwLLLink link; // offset 0x0, size 0x8 }; -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 @@ -856,16 +774,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 @@ -884,17 +800,15 @@ class zLightning float time_left; // offset 0x22C, size 0x4 float time_total; // offset 0x230, size 0x4 }; -class xGroup : public xBase -{ +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 xEntMechData -{ +class xEntMechData { // total size: 0x4C public: class xVec3 apos; // offset 0x0, size 0xC @@ -909,107 +823,94 @@ 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 }; -struct /* @anon0 */ -{ +struct /* @anon0 */ { // total size: 0x14 }; -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 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 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 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 substr -{ +class substr { // total size: 0x8 public: - char* text; // offset 0x0, size 0x4 + char * text; // offset 0x0, size 0x4 unsigned int size; // offset 0x4, size 0x4 }; -class xEntMotionSplineData -{ +class xEntMotionSplineData { // total size: 0x4 public: signed int unknown; // offset 0x0, 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 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 zShrapnelAsset -{ +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 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 xLightKitLight -{ +class xLightKitLight { // total size: 0x60 public: unsigned int type; // offset 0x0, size 0x4 @@ -1017,110 +918,100 @@ 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 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 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 }; -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 /* @class */ -{ +class /* @class */ { // total size: 0x4 public: - class xVec3* verts; // offset 0x0, size 0x4 + class xVec3 * verts; // offset 0x0, 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 /* @enum */ -{ +enum /* @enum */ { ACTION_SET = 0, ACTION_PUSH = 1, ACTION_POP = 2, }; -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 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 }; }; -class xShadowSimpleCache -{ +class xShadowSimpleCache { // total size: 0x98 public: unsigned short flags; // offset 0x0, size 0x2 @@ -1129,7 +1020,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 @@ -1138,12 +1029,10 @@ class xShadowSimpleCache float dydz; // offset 0x64, size 0x4 class xVec3 corner[4]; // offset 0x68, size 0x30 }; -class ztextbox : public xBase -{ +class ztextbox : public xBase { // total size: 0xD0 public: - class /* @class */ - { + class /* @class */ { // total size: 0x1 public: unsigned char active : 1; // offset 0x0, size 0x1 @@ -1152,21 +1041,20 @@ class ztextbox : public xBase unsigned char visible : 1; // offset 0x0, size 0x1 unsigned char hack_invisible : 1; // offset 0x0, size 0x1 } flag; // offset 0x10, size 0x1 - class asset_type* asset; // offset 0x14, size 0x4 + class asset_type * asset; // offset 0x14, size 0x4 class xtextbox tb; // offset 0x18, size 0x68 - char* segments[16]; // offset 0x80, size 0x40 + char * segments[16]; // offset 0x80, size 0x40 unsigned int segments_size; // offset 0xC0, size 0x4 - class ztextbox* next; // offset 0xC4, size 0x4 - class ztextbox* prev; // offset 0xC8, size 0x4 - class RwRaster* bgtex; // offset 0xCC, size 0x4 + class ztextbox * next; // offset 0xC4, size 0x4 + class ztextbox * prev; // offset 0xC8, size 0x4 + class RwRaster * bgtex; // offset 0xCC, size 0x4 }; -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 @@ -1177,13 +1065,12 @@ 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 RpVertexNormal -{ +class RpVertexNormal { // total size: 0x4 public: signed char x; // offset 0x0, size 0x1 @@ -1191,8 +1078,7 @@ class RpVertexNormal signed char z; // offset 0x2, size 0x1 unsigned char pad; // offset 0x3, size 0x1 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x14 public: unsigned int skip; // offset 0x0, size 0x4 @@ -1201,30 +1087,26 @@ class /* @class */ unsigned int noquit; // offset 0xC, size 0x4 unsigned int yesno; // offset 0x10, size 0x4 }; -class _tagEmitRect -{ +class _tagEmitRect { // total size: 0x8 public: float x_len; // offset 0x0, size 0x4 float z_len; // offset 0x4, size 0x4 }; -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 RwV2d -{ +class RwV2d { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class xEntCollis -{ +class xEntCollis { // total size: 0x5B4 public: unsigned char chk; // offset 0x0, size 0x1 @@ -1239,32 +1121,29 @@ 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 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 color_type -{ +class color_type { // total size: 0x4 public: unsigned char r; // offset 0x0, size 0x1 @@ -1272,13 +1151,11 @@ class color_type unsigned char b; // offset 0x2, size 0x1 unsigned char a; // offset 0x3, size 0x1 }; -class jot -{ +class jot { // total size: 0x38 public: class substr s; // offset 0x0, size 0x8 - class /* @class */ - { + class /* @class */ { // total size: 0x2 public: unsigned char invisible : 1; // offset 0x0, size 0x1 @@ -1296,89 +1173,81 @@ class jot unsigned short dummy : 4; // offset 0x0, size 0x2 } flag; // offset 0x8, size 0x2 unsigned short context_size; // offset 0xA, size 0x2 - void* context; // offset 0xC, size 0x4 + void * context; // offset 0xC, size 0x4 class basic_rect bounds; // offset 0x10, size 0x10 class basic_rect render_bounds; // offset 0x20, size 0x10 - class callback* cb; // offset 0x30, size 0x4 - class tag_type* tag; // offset 0x34, size 0x4 + class callback * cb; // offset 0x30, size 0x4 + class tag_type * tag; // offset 0x34, 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 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 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 stop_state_type : public state_type -{ +class stop_state_type : public state_type { // total size: 0x8 }; -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 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 }; -class iFogParams -{ +class iFogParams { // total size: 0x1C public: enum RwFogType type; // offset 0x0, size 0x4 @@ -1387,19 +1256,17 @@ 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 }; -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 NPCSndQueue -{ +class NPCSndQueue { // total size: 0x14 public: unsigned int sndDirect; // offset 0x0, size 0x4 @@ -1408,16 +1275,14 @@ class NPCSndQueue float tmr_delay; // offset 0xC, size 0x4 float radius; // offset 0x10, 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 xtextbox -{ +class xtextbox { // total size: 0x68 public: class xfont font; // offset 0x0, size 0x24 @@ -1427,34 +1292,30 @@ class xtextbox float tab_stop; // offset 0x3C, size 0x4 float left_indent; // offset 0x40, size 0x4 float right_indent; // offset 0x44, size 0x4 - class callback* cb; // offset 0x48, size 0x4 - void* context; // offset 0x4C, size 0x4 - char** texts; // offset 0x50, size 0x4 - unsigned int* text_sizes; // offset 0x54, size 0x4 + class callback * cb; // offset 0x48, size 0x4 + void * context; // offset 0x4C, size 0x4 + char * * texts; // offset 0x50, size 0x4 + unsigned int * text_sizes; // offset 0x54, size 0x4 unsigned int texts_size; // offset 0x58, size 0x4 class substr text; // offset 0x5C, size 0x8 unsigned int text_hash; // offset 0x64, 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 zMovePoint : public xMovePoint -{ +class zMovePoint : public xMovePoint { // total size: 0x30 }; -class xTextAsset -{ +class xTextAsset { // total size: 0x4 public: unsigned int len; // offset 0x0, size 0x4 }; -class split_tag -{ +class split_tag { // total size: 0x20 public: class substr tag; // offset 0x0, size 0x8 @@ -1462,15 +1323,13 @@ class split_tag class substr action; // offset 0x10, size 0x8 class substr value; // offset 0x18, size 0x8 }; -class tag_entry_list -{ +class tag_entry_list { // total size: 0x8 public: - class tag_entry* entries; // offset 0x0, size 0x4 + class tag_entry * entries; // offset 0x0, size 0x4 unsigned int size; // offset 0x4, size 0x4 }; -class xClumpCollBSPBranchNode -{ +class xClumpCollBSPBranchNode { // total size: 0x10 public: unsigned int leftInfo; // offset 0x0, size 0x4 @@ -1478,8 +1337,7 @@ class xClumpCollBSPBranchNode float leftValue; // offset 0x8, size 0x4 float rightValue; // offset 0xC, size 0x4 }; -class xLinkAsset -{ +class xLinkAsset { // total size: 0x20 public: unsigned short srcEvent; // offset 0x0, size 0x2 @@ -1489,27 +1347,25 @@ class xLinkAsset unsigned int paramWidgetAssetID; // offset 0x18, size 0x4 unsigned int chkAssetID; // offset 0x1C, size 0x4 }; -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 }; -class xEntFrame -{ +class xEntFrame { // total size: 0xF0 public: class xMat4x3 mat; // offset 0x0, size 0x40 @@ -1523,30 +1379,25 @@ class xEntFrame class xVec3 vel; // offset 0xD4, size 0xC unsigned int mode; // offset 0xE0, size 0x4 }; -class xIniValue -{ +class xIniValue { // total size: 0x8 public: - char* tok; // offset 0x0, size 0x4 - char* val; // offset 0x4, size 0x4 + char * tok; // offset 0x0, size 0x4 + char * val; // offset 0x4, size 0x4 }; -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 RpLight -{ + 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 RpLight { // total size: 0x40 public: class RwObjectHasFrame object; // offset 0x0, size 0x14 @@ -1558,8 +1409,7 @@ class RpLight unsigned short lightFrame; // offset 0x3C, size 0x2 unsigned short pad; // offset 0x3E, size 0x2 }; -class zFragSoundAsset : public zFragAsset -{ +class zFragSoundAsset : public zFragAsset { // total size: 0x4C public: unsigned int assetID; // offset 0x18, size 0x4 @@ -1568,8 +1418,7 @@ class zFragSoundAsset : public zFragAsset float innerRadius; // offset 0x44, size 0x4 float outerRadius; // offset 0x48, size 0x4 }; -class RpInterpolator -{ +class RpInterpolator { // total size: 0x14 public: signed int flags; // offset 0x0, size 0x4 @@ -1579,45 +1428,37 @@ class RpInterpolator float recipTime; // offset 0xC, size 0x4 float position; // offset 0x10, size 0x4 }; -class st_PACKER_ASSETTYPE -{ +class st_PACKER_ASSETTYPE { // total size: 0x28 public: unsigned int typetag; // offset 0x0, size 0x4 unsigned int tflags; // offset 0x4, size 0x4 signed int typalign; // offset 0x8, size 0x4 - void* (*readXForm)(void*, unsigned int, void*, unsigned int, - unsigned int*); // offset 0xC, size 0x4 - void* (*writeXForm)(void*, unsigned int, void*, void*, unsigned int, - unsigned int*); // offset 0x10, size 0x4 - signed int (*assetLoaded)(void*, unsigned int, void*, signed int); // offset 0x14, size 0x4 - void* (*makeData)(void*, unsigned int, void*, signed int*, - signed int*); // offset 0x18, size 0x4 - void (*cleanup)(void*, unsigned int, void*); // offset 0x1C, size 0x4 - void (*assetUnloaded)(void*, unsigned int); // offset 0x20, size 0x4 - void (*writePeek)(void*, unsigned int, void*, char*); // offset 0x24, size 0x4 -}; -class xEntMotionMPData -{ + void * (* readXForm)(void *, unsigned int, void *, unsigned int, unsigned int *); // offset 0xC, size 0x4 + void * (* writeXForm)(void *, unsigned int, void *, void *, unsigned int, unsigned int *); // offset 0x10, size 0x4 + signed int (* assetLoaded)(void *, unsigned int, void *, signed int); // offset 0x14, size 0x4 + void * (* makeData)(void *, unsigned int, void *, signed int *, signed int *); // offset 0x18, size 0x4 + void (* cleanup)(void *, unsigned int, void *); // offset 0x1C, size 0x4 + void (* assetUnloaded)(void *, unsigned int); // offset 0x20, size 0x4 + void (* writePeek)(void *, unsigned int, void *, char *); // offset 0x24, size 0x4 +}; +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 callback -{ +class callback { // total 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 xEntERData -{ +class xEntERData { // total size: 0x44 public: class xVec3 a; // offset 0x0, size 0xC @@ -1632,8 +1473,7 @@ class xEntERData float ert; // offset 0x3C, size 0x4 signed int state; // offset 0x40, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x220 public: class xVec3 base_point[16]; // offset 0x0, size 0xC0 @@ -1643,23 +1483,20 @@ 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 }; -enum /* @enum */ -{ +enum /* @enum */ { TYPE_INVALID = 0, TYPE_VOLUME = 1, TYPE_TARGET = 2, TYPE_ORIGIN = 3, }; -class xParEmitterCustomSettings : public xParEmitterPropsAsset -{ +class xParEmitterCustomSettings : public xParEmitterPropsAsset { // total size: 0x16C public: unsigned int custom_flags; // offset 0x138, size 0x4 @@ -1671,35 +1508,31 @@ 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 }; -class xAnimMultiFileBase -{ +class xAnimMultiFileBase { // total size: 0x4 public: unsigned int Count; // offset 0x0, 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 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 @@ -1707,34 +1540,30 @@ class RwRGBA unsigned char blue; // offset 0x2, size 0x1 unsigned char alpha; // offset 0x3, size 0x1 }; -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 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 @@ -1744,66 +1573,56 @@ class xCollis class tri_data tri; // offset 0x44, size 0xC }; }; -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 xQuat -{ +class xQuat { // total size: 0x10 public: class xVec3 v; // offset 0x0, size 0xC float s; // offset 0xC, size 0x4 }; -class state_type -{ +class state_type { // total size: 0x8 public: enum state_enum type; // offset 0x0, 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 zFragLocation -{ +class zFragLocation { // total size: 0x24 public: enum zFragLocType type; // offset 0x0, size 0x4 class zFragLocInfo info; // offset 0x4, size 0x20 }; -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 xEntBoulder -{ +class xEntBoulder { // total size: 0x0 }; -class RwTexCoords -{ +class RwTexCoords { // total size: 0x8 public: float u; // offset 0x0, size 0x4 float v; // offset 0x4, size 0x4 }; -class xPEEntBound -{ +class xPEEntBound { // total size: 0xC public: unsigned char flags; // offset 0x0, size 0x1 @@ -1813,52 +1632,45 @@ class xPEEntBound float expand; // offset 0x4, size 0x4 float deflection; // offset 0x8, 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 }; -enum _tagPadState -{ +enum _tagPadState { ePad_Disabled = 0, ePad_DisabledError = 1, ePad_Enabled = 2, ePad_Missing = 3, ePad_Total = 4, }; -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 _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 xVec2 -{ +class xVec2 { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -enum en_NPC_SOUND -{ +enum en_NPC_SOUND { NPC_STYP_BOGUS = -2, NPC_STYP_LISTEND = 0, NPC_STYP_ENCOUNTER = 1, @@ -1889,18 +1701,15 @@ enum en_NPC_SOUND NPC_STYP_NOMORE = 26, NPC_STYP_FORCE = 2147483647, }; -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 zEntHangable -{ +class zEntHangable { // total size: 0x0 }; -class RpClump -{ +class RpClump { // total size: 0x2C public: class RwObject object; // offset 0x0, size 0x8 @@ -1908,61 +1717,55 @@ 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 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 zNPCLassoInfo -{ + 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 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 /* @class */ -{ + 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 /* @class */ { // total size: 0x8 public: float width; // offset 0x0, size 0x4 float height; // offset 0x4, size 0x4 }; -enum /* @enum */ -{ +enum /* @enum */ { SOURCE_MEMORY = 0, SOURCE_STREAM = 1, }; -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 @@ -1979,28 +1782,25 @@ class xGlobals unsigned char dontShowPadMessageDuringLoadingOrCutScene; // offset 0x6F0, size 0x1 unsigned char autoSaveFeature; // offset 0x6F1, size 0x1 }; -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 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 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 @@ -2009,16 +1809,14 @@ class zFragShockwave float currColor[4]; // offset 0x18, size 0x10 float deltColor[4]; // offset 0x28, size 0x10 }; -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 xEntAsset : public xBaseAsset -{ +class xEntAsset : public xBaseAsset { // total size: 0x54 public: unsigned char flags; // offset 0x8, size 0x1 @@ -2038,8 +1836,7 @@ class xEntAsset : public xBaseAsset unsigned int modelInfoID; // offset 0x4C, size 0x4 unsigned int animListID; // offset 0x50, size 0x4 }; -class xEntMotionMechData -{ +class xEntMotionMechData { // total size: 0x2C public: unsigned char type; // offset 0x0, size 0x1 @@ -2057,14 +1854,12 @@ class xEntMotionMechData float ret_delay; // offset 0x24, size 0x4 float post_ret_delay; // offset 0x28, size 0x4 }; -class xAnimMultiFile : public xAnimMultiFileBase -{ +class xAnimMultiFile : public xAnimMultiFileBase { // total size: 0xC public: class xAnimMultiFileEntry Files[1]; // offset 0x4, size 0x8 }; -enum en_trantype -{ +enum en_trantype { GOAL_TRAN_NONE = 0, GOAL_TRAN_SET = 1, GOAL_TRAN_PUSH = 2, @@ -2077,19 +1872,17 @@ enum en_trantype GOAL_TRAN_NOMORE = 9, GOAL_TRAN_FORCE = 2147483647, }; -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 /* @class */ -{ +class /* @class */ { // total size: 0x2 public: unsigned char invisible : 1; // offset 0x0, size 0x1 @@ -2106,8 +1899,7 @@ class /* @class */ unsigned char stateful : 1; // offset 0x1, size 0x1 unsigned short dummy : 4; // offset 0x0, size 0x2 }; -class zFragShockwaveAsset : public zFragAsset -{ +class zFragShockwaveAsset : public zFragAsset { // total size: 0x54 public: unsigned int modelInfoID; // offset 0x18, size 0x4 @@ -2120,8 +1912,7 @@ class zFragShockwaveAsset : public zFragAsset float birthColor[4]; // offset 0x34, size 0x10 float deathColor[4]; // offset 0x44, size 0x10 }; -class xEnvAsset : public xBaseAsset -{ +class xEnvAsset : public xBaseAsset { // total size: 0x44 public: unsigned int bspAssetID; // offset 0x8, size 0x4 @@ -2140,8 +1931,7 @@ class xEnvAsset : public xBaseAsset unsigned int bspMapperFXID; // offset 0x3C, size 0x4 float loldHeight; // offset 0x40, size 0x4 }; -class _tagxPad -{ +class _tagxPad { // total size: 0x148 public: unsigned char value[22]; // offset 0x0, size 0x16 @@ -2164,8 +1954,7 @@ class _tagxPad float down_tmr[22]; // offset 0xC0, size 0x58 class analog_data analog[2]; // offset 0x118, size 0x30 }; -enum en_pendtype -{ +enum en_pendtype { PEND_TRAN_NONE = 0, PEND_TRAN_SET = 1, PEND_TRAN_PUSH = 2, @@ -2176,8 +1965,7 @@ enum en_pendtype PEND_TRAN_INPROG = 7, PEND_TRAN_NOMORE = 8, }; -class xEntNPCAsset -{ +class xEntNPCAsset { // total size: 0x18 public: signed int npcFlags; // offset 0x0, size 0x4 @@ -2187,31 +1975,27 @@ class xEntNPCAsset unsigned int taskWidgetPrime; // offset 0x10, size 0x4 unsigned int taskWidgetSecond; // offset 0x14, size 0x4 }; -class xBBox -{ +class xBBox { // total size: 0x24 public: class xVec3 center; // offset 0x0, size 0xC class xBox box; // offset 0xC, size 0x18 }; -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 _tagLightningLine -{ +class _tagLightningLine { // total size: 0x4 public: float unused; // offset 0x0, size 0x4 }; -class xEntDrive -{ +class xEntDrive { // total size: 0x7C public: unsigned int flags; // offset 0x0, size 0x4 @@ -2221,9 +2005,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 @@ -2231,16 +2015,14 @@ class xEntDrive class xVec3 dloc; // offset 0x50, size 0xC class tri_data tri; // offset 0x5C, size 0x20 }; -class xEntPenData -{ +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 }; -enum zFragType -{ +enum zFragType { eFragInactive = 0, eFragGroup = 1, eFragShrapnel = 2, @@ -2252,16 +2034,14 @@ enum zFragType eFragCount = 8, eFragForceSize = 2147483647, }; -class sound_queue -{ +class sound_queue { // total size: 0x1C public: unsigned int _playing[5]; // offset 0x0, size 0x14 signed int head; // offset 0x14, size 0x4 signed int tail; // offset 0x18, size 0x4 }; -class zNPCSettings : public xDynAsset -{ +class zNPCSettings : public xDynAsset { // total size: 0x2C public: enum en_npcbtyp basisType; // offset 0x10, size 0x4 @@ -2279,8 +2059,7 @@ class zNPCSettings : public xDynAsset float duploSpawnDelay; // offset 0x24, size 0x4 signed int duploSpawnLifeMax; // offset 0x28, size 0x4 }; -class xVec4 -{ +class xVec4 { // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -2288,12 +2067,10 @@ class xVec4 float z; // offset 0x8, size 0x4 float w; // offset 0xC, size 0x4 }; -class anim_coll_data -{ +class anim_coll_data { // total size: 0x0 }; -class RpGeometry -{ +class RpGeometry { // total size: 0x60 public: class RwObject object; // offset 0x0, size 0x8 @@ -2305,78 +2082,69 @@ 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 RwSurfaceProperties -{ + 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 RwSurfaceProperties { // total size: 0xC public: float ambient; // offset 0x0, size 0x4 float specular; // offset 0x4, size 0x4 float diffuse; // offset 0x8, size 0x4 }; -class RyzMemData -{ +class RyzMemData { // total size: 0x1 }; -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 xCurveAsset -{ +class xCurveAsset { // total size: 0x0 }; -class signal_context -{ +class signal_context { // total size: 0x4 public: unsigned int flags; // offset 0x0, 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 _tagPadAnalog -{ +class _tagPadAnalog { // total size: 0x2 public: signed char x; // offset 0x0, size 0x1 signed char y; // offset 0x1, size 0x1 }; -class rxReq -{ +class rxReq { // total size: 0x0 }; -class basic_rect -{ +class basic_rect { // total size: 0x10 public: float x; // offset 0x0, size 0x4 @@ -2384,37 +2152,32 @@ class basic_rect float w; // offset 0x8, size 0x4 float h; // offset 0xC, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x8 public: float x; // offset 0x0, size 0x4 float y; // offset 0x4, size 0x4 }; -class _tagEmitVolume -{ +class _tagEmitVolume { // total size: 0x4 public: unsigned int emit_volumeID; // offset 0x0, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x8 public: float left; // offset 0x0, size 0x4 float right; // offset 0x4, size 0x4 }; -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 xEntOrbitData -{ +class xEntOrbitData { // total size: 0x28 public: class xVec3 orig; // offset 0x0, size 0xC @@ -2424,21 +2187,18 @@ class xEntOrbitData float p; // offset 0x20, size 0x4 float w; // offset 0x24, size 0x4 }; -class _tagiPad -{ +class _tagiPad { // total size: 0x4 public: signed int port; // offset 0x0, size 0x4 }; -enum RxClusterValidityReq -{ +enum RxClusterValidityReq { rxCLREQ_DONTWANT = 0, rxCLREQ_REQUIRED = 1, rxCLREQ_OPTIONAL = 2, rxCLUSTERVALIDITYREQFORCEENUMSIZEINT = 2147483647, }; -class NPCConfig : public xListItem -{ +class NPCConfig : public xListItem { // total size: 0x3B0 public: unsigned int modelID; // offset 0xC, size 0x4 @@ -2474,39 +2234,36 @@ 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 }; -class xAnimTable -{ +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 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 }; -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 @@ -2518,13 +2275,12 @@ 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 zJumpParam -{ +class zJumpParam { // total size: 0x10 public: float PeakHeight; // offset 0x0, size 0x4 @@ -2532,28 +2288,26 @@ class zJumpParam float TimeHold; // offset 0x8, size 0x4 float ImpulseVel; // offset 0xC, size 0x4 }; -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 pointer_asset : public xDynAsset -{ +class pointer_asset : public xDynAsset { // total size: 0x28 public: class xVec3 loc; // offset 0x10, size 0xC @@ -2561,8 +2315,7 @@ class pointer_asset : public xDynAsset float pitch; // offset 0x20, size 0x4 float roll; // offset 0x24, size 0x4 }; -class zPlatFMRunTime -{ +class zPlatFMRunTime { // total size: 0x124 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2573,41 +2326,37 @@ class zPlatFMRunTime float vms[12]; // offset 0xC4, size 0x30 float dss[12]; // offset 0xF4, size 0x30 }; -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 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 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 @@ -2615,11 +2364,10 @@ 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 xBaseAsset -{ +class xBaseAsset { // total size: 0x8 public: unsigned int id; // offset 0x0, size 0x4 @@ -2627,16 +2375,14 @@ class xBaseAsset unsigned char linkCount; // offset 0x5, size 0x1 unsigned short baseFlags; // offset 0x6, size 0x2 }; -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 @@ -2654,18 +2400,15 @@ class xParEmitterAsset : public xBaseAsset unsigned int cull_mode; // offset 0x4C, size 0x4 float cull_dist_sqr; // offset 0x50, size 0x4 }; -class xPlatformAsset -{ +class xPlatformAsset { // total size: 0x0 }; -enum RxNodeDefEditable -{ +enum RxNodeDefEditable { rxNODEDEFCONST = 0, rxNODEDEFEDITABLE = 1, rxNODEDEFEDITABLEFORCEENUMSIZEINT = 2147483647, }; -class teleport_context -{ +class teleport_context { // total size: 0x14 public: unsigned char use_loc; // offset 0x0, size 0x1 @@ -2673,15 +2416,13 @@ class teleport_context class xVec3 loc; // offset 0x4, size 0xC float yaw; // offset 0x10, size 0x4 }; -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 @@ -2690,41 +2431,34 @@ class xEntMotionAsset class xEntMotionPenData pen; // offset 0x4, size 0x14 }; }; -enum RxClusterValid -{ +enum RxClusterValid { rxCLVALID_NOCHANGE = 0, rxCLVALID_VALID = 1, rxCLVALID_INVALID = 2, rxCLUSTERVALIDFORCEENUMSIZEINT = 2147483647, }; -class xParGroup -{ +class xParGroup { // total size: 0x0 }; -class xModelAssetParam -{ +class xModelAssetParam { // total size: 0x0 }; -class xRot -{ +class xRot { // total size: 0x10 public: class xVec3 axis; // offset 0x0, size 0xC float angle; // offset 0xC, 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 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 }; @@ -2739,8 +2473,7 @@ class xParEmitterPropsAsset : public xBaseAsset unsigned int emit_limit; // offset 0x130, size 0x4 float emit_limit_reset_time; // offset 0x134, size 0x4 }; -class RpMeshHeader -{ +class RpMeshHeader { // total size: 0x10 public: unsigned int flags; // offset 0x0, size 0x4 @@ -2749,39 +2482,35 @@ class RpMeshHeader unsigned int totalIndicesInMesh; // offset 0x8, size 0x4 unsigned int firstMeshOffset; // offset 0xC, size 0x4 }; -class xPSYNote -{ +class xPSYNote { // total size: 0x4 }; -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 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 /* @class */ -{ +class /* @class */ { // total size: 0x10 public: float left; // offset 0x0, size 0x4 @@ -2789,26 +2518,22 @@ class /* @class */ float right; // offset 0x8, size 0x4 float bottom; // offset 0xC, size 0x4 }; -class _tagEmitOffsetPoint -{ +class _tagEmitOffsetPoint { // total size: 0xC public: class xVec3 offset; // offset 0x0, size 0xC }; -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 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 @@ -2817,22 +2542,20 @@ class zFragInfo class zFragShockwave shockwave; // offset 0x0, size 0x38 }; }; -class xMemPool -{ +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 /* @class */ -{ +class /* @class */ { // total size: 0x58 public: class xVec3 endPoint[2]; // offset 0x0, size 0x18 @@ -2846,42 +2569,36 @@ class /* @class */ float arc_height; // offset 0x48, size 0x4 class xVec3 arc_normal; // offset 0x4C, size 0xC }; -enum rxEmbeddedPacketState -{ +enum rxEmbeddedPacketState { rxPKST_PACKETLESS = 0, rxPKST_UNUSED = 1, rxPKST_INUSE = 2, rxPKST_PENDING = 3, rxEMBEDDEDPACKETSTATEFORCEENUMSIZEINT = 2147483647, }; -class xSphere -{ +class xSphere { // total size: 0x10 public: class xVec3 center; // offset 0x0, size 0xC float r; // offset 0xC, size 0x4 }; -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 }; -class zCutsceneMgr -{ +class zCutsceneMgr { // total size: 0x0 }; -class trigger_pair -{ +class trigger_pair { // total size: 0x8 public: - class ztalkbox* origin; // offset 0x0, size 0x4 + class ztalkbox * origin; // offset 0x0, size 0x4 unsigned int event; // offset 0x4, size 0x4 }; -enum en_npcbtyp -{ +enum en_npcbtyp { NPCP_BASIS_NONE = 0, NPCP_BASIS_EVILROBOT = 1, NPCP_BASIS_FRIENDLYROBOT = 2, @@ -2890,49 +2607,42 @@ enum en_npcbtyp NPCP_BASIS_NOMORE = 5, NPCP_BASIS_FORCE = 2147483647, }; -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 RpTriangle -{ +class RpTriangle { // total size: 0x8 public: unsigned short vertIndex[3]; // offset 0x0, size 0x6 signed short matIndex; // offset 0x6, size 0x2 }; -class xEntSplineData -{ +class xEntSplineData { // total size: 0x4 public: signed int unknown; // offset 0x0, size 0x4 }; -enum RwCameraProjection -{ +enum RwCameraProjection { rwNACAMERAPROJECTION = 0, rwPERSPECTIVE = 1, rwPARALLEL = 2, rwCAMERAPROJECTIONFORCEENUMSIZEINT = 2147483647, }; -enum PSY_BRAIN_STATUS -{ +enum PSY_BRAIN_STATUS { PSY_STAT_BLANK = 0, PSY_STAT_GROW = 1, PSY_STAT_EXTEND = 2, @@ -2940,36 +2650,31 @@ enum PSY_BRAIN_STATUS PSY_STAT_NOMORE = 4, PSY_STAT_FORCE = 2147483647, }; -enum RxClusterForcePresent -{ +enum RxClusterForcePresent { rxCLALLOWABSENT = 0, rxCLFORCEPRESENT = 1, rxCLUSTERFORCEPRESENTFORCEENUMSIZEINT = 2147483647, }; -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 }; -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 zAssetPickupTable -{ +class zAssetPickupTable { // total size: 0x0 }; -class jot_line -{ +class jot_line { // total size: 0x20 public: class basic_rect bounds; // offset 0x0, size 0x10 @@ -2978,28 +2683,25 @@ class jot_line unsigned int last; // offset 0x18, size 0x4 unsigned char page_break; // offset 0x1C, size 0x1 }; -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 xIniFile -{ +class xIniFile { // total size: 0x214 public: signed int NumValues; // offset 0x0, size 0x4 signed int NumSections; // offset 0x4, size 0x4 - class xIniValue* Values; // offset 0x8, size 0x4 - class xIniSection* Sections; // offset 0xC, size 0x4 - void* mem; // offset 0x10, size 0x4 + class xIniValue * Values; // offset 0x8, size 0x4 + class xIniSection * Sections; // offset 0xC, size 0x4 + void * mem; // offset 0x10, size 0x4 char name[256]; // offset 0x14, size 0x100 char pathname[256]; // offset 0x114, size 0x100 }; -class zGlobalSettings -{ +class zGlobalSettings { // total size: 0x150 public: unsigned short AnalogMin; // offset 0x0, size 0x2 @@ -3089,8 +2791,7 @@ class zGlobalSettings unsigned char PowerUp[2]; // offset 0x149, size 0x2 unsigned char InitialPowerUp[2]; // offset 0x14B, size 0x2 }; -class xEntMotionPenData -{ +class xEntMotionPenData { // total size: 0x14 public: unsigned char flags; // offset 0x0, size 0x1 @@ -3101,34 +2802,30 @@ class xEntMotionPenData float period; // offset 0xC, size 0x4 float phase; // offset 0x10, 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 zFragParticle -{ +class zFragParticle { // total size: 0x4 public: - class zFragParticleAsset* fasset; // offset 0x0, size 0x4 + class zFragParticleAsset * fasset; // offset 0x0, size 0x4 }; -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 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 @@ -3141,8 +2838,7 @@ class xNPCBasic : public xEnt, public xFactoryInst class xEntShadow entShadow_embedded; // offset 0xF8, size 0x28 class xShadowSimpleCache simpShadow_embedded; // offset 0x120, size 0x98 }; -class layout -{ +class layout { // total size: 0x84F8 public: class xtextbox tb; // offset 0x0, size 0x68 @@ -3155,8 +2851,7 @@ class layout unsigned short dynamics[64]; // offset 0x8474, size 0x80 unsigned int dynamics_size; // offset 0x84F4, size 0x4 }; -enum state_enum -{ +enum state_enum { STATE_INVALID = -1, BEGIN_STATE = 0, STATE_START = 1, @@ -3166,54 +2861,48 @@ enum state_enum END_STATE = 5, MAX_STATE = 5, }; -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 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 }; -enum /* @enum */ -{ +enum /* @enum */ { XJ_LEFT = 0, XJ_CENTER = 1, XJ_RIGHT = 2, }; -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 xCoef -{ +class xCoef { // total size: 0x10 public: float a[4]; // offset 0x0, size 0x10 }; -class xPortalAsset : public xBaseAsset -{ +class xPortalAsset : public xBaseAsset { // total size: 0x18 public: unsigned int assetCameraID; // offset 0x8, size 0x4 @@ -3221,15 +2910,14 @@ class xPortalAsset : public xBaseAsset float ang; // offset 0x10, size 0x4 unsigned int sceneID; // offset 0x14, size 0x4 }; -class shared_type -{ +class shared_type { // total size: 0x869C public: signed int flags; // offset 0x0, size 0x4 unsigned int permit; // offset 0x4, size 0x4 - class ztalkbox* active; // offset 0x8, size 0x4 - class state_type* state; // offset 0xC, size 0x4 - class state_type* states[5]; // offset 0x10, size 0x14 + class ztalkbox * active; // offset 0x8, size 0x4 + class state_type * state; // offset 0xC, size 0x4 + class state_type * states[5]; // offset 0x10, size 0x14 class layout lt; // offset 0x24, size 0x84F8 signed int begin_jot; // offset 0x851C, size 0x4 signed int end_jot; // offset 0x8520, size 0x4 @@ -3247,22 +2935,20 @@ class shared_type unsigned char allow_quit; // offset 0x8578, size 0x1 unsigned char quitting; // offset 0x8579, size 0x1 unsigned char delay_events; // offset 0x857A, size 0x1 - class callback* cb; // offset 0x857C, size 0x4 + class callback * cb; // offset 0x857C, size 0x4 class fixed_queue triggered; // offset 0x8580, size 0x110 float volume; // offset 0x8690, size 0x4 - class zNPCCommon* speak_npc; // offset 0x8694, size 0x4 + class zNPCCommon * speak_npc; // offset 0x8694, size 0x4 unsigned int speak_player; // offset 0x8698, size 0x4 }; -class fixed_queue -{ +class fixed_queue { // total size: 0x110 public: unsigned int _first; // offset 0x0, size 0x4 unsigned int _last; // offset 0x4, size 0x4 class trigger_pair _buffer[33]; // offset 0x8, size 0x108 }; -enum en_GOALSTATE -{ +enum en_GOALSTATE { GOAL_STAT_UNKNOWN = 0, GOAL_STAT_PROCESS = 1, GOAL_STAT_ENTER = 2, @@ -3274,40 +2960,37 @@ enum en_GOALSTATE GOAL_STAT_NOMORE = 8, GOAL_STAT_FORCE = 2147483647, }; -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 st_PKR_ASSET_TOCINFO -{ +class st_PKR_ASSET_TOCINFO { // total size: 0x18 public: unsigned int aid; // offset 0x0, size 0x4 - class st_PACKER_ASSETTYPE* typeref; // offset 0x4, size 0x4 + class st_PACKER_ASSETTYPE * typeref; // offset 0x4, size 0x4 unsigned int sector; // offset 0x8, size 0x4 unsigned int plus_offset; // offset 0xC, size 0x4 unsigned int size; // offset 0x10, size 0x4 - void* mempos; // offset 0x14, size 0x4 + void * mempos; // offset 0x14, size 0x4 }; -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 @@ -3325,8 +3008,7 @@ class zLedgeGrabParams float startrot; // offset 0x36C, size 0x4 float endrot; // offset 0x370, size 0x4 }; -class xParInterp -{ +class xParInterp { // total size: 0x14 public: float val[2]; // offset 0x0, size 0x8 @@ -3334,100 +3016,84 @@ class xParInterp float freq; // offset 0xC, size 0x4 float oofreq; // offset 0x10, size 0x4 }; -class RwSphere -{ +class RwSphere { // total size: 0x10 public: class RwV3d center; // offset 0x0, size 0xC float radius; // offset 0xC, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x1 public: unsigned char visible : 1; // offset 0x0, size 0x1 }; -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 callback -{ +class callback { // total size: 0xC public: - void (*render)(class jot&, class xtextbox&, float, float); // offset 0x0, size 0x4 - void (*layout_update)(class jot&, class xtextbox&, class xtextbox&); // offset 0x4, size 0x4 - void (*render_update)(class jot&, class xtextbox&, class xtextbox&); // offset 0x8, size 0x4 + void (* render)(class jot &, class xtextbox &, float, float); // offset 0x0, size 0x4 + void (* layout_update)(class jot &, class xtextbox &, class xtextbox &); // offset 0x4, size 0x4 + void (* render_update)(class jot &, class xtextbox &, class xtextbox &); // offset 0x8, size 0x4 }; -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 }; -struct /* @anon1 */ -{ +struct /* @anon1 */ { // total size: 0x14 }; -class xParSys -{ +class xParSys { // total size: 0x0 }; -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 }; -enum en_dupowavmod -{ +enum en_dupowavmod { NPCP_DUPOWAVE_CONTINUOUS = 0, NPCP_DUPOWAVE_DISCREET = 1, NPCP_DUPOWAVE_NOMORE = 2, NPCP_DUPOWAVE_FORCE = 2147483647, }; -class tag_type -{ +class tag_type { // total size: 0x14 public: class substr name; // offset 0x0, size 0x8 - void (*parse_tag)(class jot&, class xtextbox&, class xtextbox&, - class split_tag&); // offset 0x8, size 0x4 - void (*reset_tag)(class jot&, class xtextbox&, class xtextbox&, - class split_tag&); // offset 0xC, size 0x4 - void* context; // offset 0x10, size 0x4 -}; -class RxOutputSpec -{ + void (* parse_tag)(class jot &, class xtextbox &, class xtextbox &, class split_tag &); // offset 0x8, size 0x4 + void (* reset_tag)(class jot &, class xtextbox &, class xtextbox &, class split_tag &); // offset 0xC, size 0x4 + void * context; // offset 0x10, size 0x4 +}; +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 }; -enum _zPlayerWallJumpState -{ +enum _zPlayerWallJumpState { k_WALLJUMP_NOT = 0, k_WALLJUMP_LAUNCH = 1, k_WALLJUMP_FLIGHT = 2, k_WALLJUMP_LAND = 3, }; -enum /* @enum */ -{ +enum /* @enum */ { EX_UP = 0, EX_CENTER = 1, EX_DOWN = 2, MAX_EX = 3, }; -enum en_LASSO_STATUS -{ +enum en_LASSO_STATUS { LASS_STAT_DONE = 0, LASS_STAT_PENDING = 1, LASS_STAT_GRABBING = 2, @@ -3435,12 +3101,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 @@ -3452,8 +3117,7 @@ class zFragProjectile class xVec3 N; // offset 0x48, size 0xC class xVec3 axis; // offset 0x54, size 0xC }; -class xMat3x3 -{ +class xMat3x3 { // total size: 0x30 public: class xVec3 right; // offset 0x0, size 0xC @@ -3463,8 +3127,7 @@ class xMat3x3 class xVec3 at; // offset 0x20, size 0xC unsigned int pad2; // offset 0x2C, size 0x4 }; -class xParabola -{ +class xParabola { // total size: 0x24 public: class xVec3 initPos; // offset 0x0, size 0xC @@ -3473,8 +3136,7 @@ class xParabola float minTime; // offset 0x1C, size 0x4 float maxTime; // offset 0x20, size 0x4 }; -class xPEEntBone -{ +class xPEEntBone { // total size: 0x18 public: unsigned char flags; // offset 0x0, size 0x1 @@ -3485,8 +3147,7 @@ class xPEEntBone float radius; // offset 0x10, size 0x4 float deflection; // offset 0x14, size 0x4 }; -class xEntMotionERData -{ +class xEntMotionERData { // total size: 0x28 public: class xVec3 ret_pos; // offset 0x0, size 0xC @@ -3496,52 +3157,44 @@ class xEntMotionERData float ret_tm; // offset 0x20, size 0x4 float ret_wait_tm; // offset 0x24, size 0x4 }; -enum RpWorldRenderOrder -{ +enum RpWorldRenderOrder { rpWORLDRENDERNARENDERORDER = 0, rpWORLDRENDERFRONT2BACK = 1, rpWORLDRENDERBACK2FRONT = 2, rpWORLDRENDERORDERFORCEENUMSIZEINT = 2147483647, }; -struct /* @anon2 */ -{ +struct /* @anon2 */ { // total size: 0x14 }; -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 }; -struct /* @anon3 */ -{ +struct /* @anon3 */ { // total size: 0x14 }; -class xClumpCollBSPVertInfo -{ +class xClumpCollBSPVertInfo { // total size: 0x4 public: unsigned short atomIndex; // offset 0x0, size 0x2 unsigned short meshVertIndex; // offset 0x2, size 0x2 }; -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 }; -struct /* @anon4 */ -{ +struct /* @anon4 */ { // total size: 0x14 }; -class asset_type : public xDynAsset -{ +class asset_type : public xDynAsset { // total size: 0x48 public: unsigned int dialog_box; // offset 0x10, size 0x4 @@ -3556,12 +3209,10 @@ class asset_type : public xDynAsset unsigned char hide : 8; // offset 0x22, size 0x1 unsigned char audio_effect : 8; // offset 0x23, size 0x1 unsigned int teleport; // offset 0x24, size 0x4 - class /* @class */ - { + class /* @class */ { // total size: 0xC public: - class /* @class */ - { + class /* @class */ { // total size: 0x4 public: unsigned char time : 8; // offset 0x0, size 0x1 @@ -3572,8 +3223,7 @@ class asset_type : public xDynAsset float delay; // offset 0x4, size 0x4 signed int which_event; // offset 0x8, size 0x4 } auto_wait; // offset 0x28, size 0xC - class /* @class */ - { + class /* @class */ { // total size: 0x14 public: unsigned int skip; // offset 0x0, size 0x4 @@ -3583,26 +3233,22 @@ class asset_type : public xDynAsset unsigned int yesno; // offset 0x10, size 0x4 } prompt; // offset 0x34, size 0x14 }; -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 xfont -{ +class xfont { // total size: 0x24 public: unsigned int id; // offset 0x0, size 0x4 @@ -3612,8 +3258,7 @@ class xfont class iColor_tag color; // offset 0x10, size 0x4 class basic_rect clip; // offset 0x14, size 0x10 }; -class zLasso -{ +class zLasso { // total size: 0xFC public: unsigned int flags; // offset 0x0, size 0x4 @@ -3640,20 +3285,18 @@ 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 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 }; -enum _tagRumbleType -{ +enum _tagRumbleType { eRumble_Off = 0, eRumble_Hi = 1, eRumble_VeryLightHi = 2, @@ -3669,8 +3312,7 @@ enum _tagRumbleType eRumble_Total = 12, eRumbleForceU32 = 2147483647, }; -enum zFragLocType -{ +enum zFragLocType { eFragLocBone = 0, eFragLocBoneUpdated = 1, eFragLocBoneLocal = 2, @@ -3680,27 +3322,24 @@ enum zFragLocType eFragLocCount = 6, eFragLocForceSize = 2147483647, }; -enum _zPlayerType -{ +enum _zPlayerType { ePlayer_SB = 0, ePlayer_Patrick = 1, ePlayer_Sandy = 2, ePlayer_MAXTYPES = 3, }; -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 xQCData -{ +class xQCData { // total size: 0x20 public: signed char xmin; // offset 0x0, size 0x1 @@ -3714,18 +3353,16 @@ class xQCData class xVec3 min; // offset 0x8, size 0xC class xVec3 max; // offset 0x14, size 0xC }; -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 /* @class */ -{ +class /* @class */ { // total size: 0x1 public: unsigned char active : 1; // offset 0x0, size 0x1 @@ -3734,12 +3371,10 @@ class /* @class */ unsigned char visible : 1; // offset 0x0, size 0x1 unsigned char hack_invisible : 1; // offset 0x0, size 0x1 }; -class /* @class */ -{ +class /* @class */ { // total size: 0xC public: - class /* @class */ - { + class /* @class */ { // total size: 0x4 public: unsigned char time : 8; // offset 0x0, size 0x1 @@ -3750,23 +3385,18 @@ class /* @class */ float delay; // offset 0x4, size 0x4 signed int which_event; // offset 0x8, 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 analog_data -{ + 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 analog_data { // total size: 0x18 public: class xVec2 offset; // offset 0x0, size 0x8 @@ -3774,16 +3404,13 @@ class analog_data float mag; // offset 0x10, size 0x4 float ang; // offset 0x14, size 0x4 }; -class start_state_type : public state_type -{ +class start_state_type : public state_type { // total size: 0x8 }; -class zParEmitter : public xParEmitter -{ +class zParEmitter : public xParEmitter { // total size: 0x78 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x4 public: unsigned char time : 8; // offset 0x0, size 0x1 @@ -3791,22 +3418,19 @@ class /* @class */ unsigned char sound : 8; // offset 0x2, size 0x1 unsigned char event : 8; // offset 0x3, size 0x1 }; -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 _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 RwFrustumPlane -{ +class RwFrustumPlane { // total size: 0x14 public: class RwPlane plane; // offset 0x0, size 0x10 @@ -3815,38 +3439,35 @@ class RwFrustumPlane unsigned char closestZ; // offset 0x12, size 0x1 unsigned char pad; // offset 0x13, size 0x1 }; -class /* @class */ -{ +class /* @class */ { // total size: 0x14 public: - char* skip; // offset 0x0, size 0x4 - char* noskip; // offset 0x4, size 0x4 - char* quit; // offset 0x8, size 0x4 - char* noquit; // offset 0xC, size 0x4 - char* yesno; // offset 0x10, size 0x4 + char * skip; // offset 0x0, size 0x4 + char * noskip; // offset 0x4, size 0x4 + char * quit; // offset 0x8, size 0x4 + char * noquit; // offset 0xC, size 0x4 + char * yesno; // offset 0x10, size 0x4 }; -class RwPlane -{ +class RwPlane { // total size: 0x10 public: class RwV3d normal; // offset 0x0, size 0xC float distance; // offset 0xC, size 0x4 }; -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 @@ -3868,7 +3489,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 @@ -3880,7 +3501,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 @@ -3901,24 +3522,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 @@ -3933,7 +3554,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 @@ -3958,7 +3579,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 @@ -3971,7 +3592,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 @@ -3979,7 +3600,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 @@ -3989,37 +3610,33 @@ class zPlayerGlobals float KnockBackTimer; // offset 0x1930, size 0x4 float KnockIntoAirTimer; // offset 0x1934, size 0x4 }; -class /* @class */ -{ +class /* @class */ { // total size: 0xC public: unsigned int type; // offset 0x0, size 0x4 class color_type color; // offset 0x4, size 0x4 unsigned int texture; // offset 0x8, size 0x4 }; -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 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 xEntMotionOrbitData -{ +class xEntMotionOrbitData { // total size: 0x18 public: class xVec3 center; // offset 0x0, size 0xC @@ -4027,25 +3644,22 @@ class xEntMotionOrbitData float h; // offset 0x10, size 0x4 float period; // offset 0x14, size 0x4 }; -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 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 @@ -4075,10 +3689,9 @@ 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 next_state_type : public state_type -{ +class next_state_type : public state_type { // total size: 0xC public: signed int prev_wait_jot; // offset 0x8, size 0x4 @@ -4091,8 +3704,7 @@ class next_state_type : public state_type Code range: 0x0031D6F0 -> 0x0031D720 */ // Range: 0x31D6F0 -> 0x31D720 -void permit(unsigned int add_flags /* r2 */, unsigned int remove_flags /* r2 */) -{ +void permit(unsigned int add_flags /* r2 */, unsigned int remove_flags /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31D6F0 -> 0x31D720 @@ -4106,8 +3718,7 @@ void permit(unsigned int add_flags /* r2 */, unsigned int remove_flags /* r2 */) Code range: 0x0031D720 -> 0x0031D72C */ // Range: 0x31D720 -> 0x31D72C -class ztalkbox* get_active() -{ +class ztalkbox * get_active() { // Blocks /* anonymous block */ { // Range: 0x31D720 -> 0x31D72C @@ -4121,8 +3732,7 @@ class ztalkbox* get_active() Code range: 0x0031D730 -> 0x0031D7B0 */ // Range: 0x31D730 -> 0x31D7B0 -void reset_all() -{ +void reset_all() { // Blocks /* anonymous block */ { // Range: 0x31D730 -> 0x31D7B0 @@ -4136,12 +3746,11 @@ void reset_all() Code range: 0x0031D7B0 -> 0x0031D860 */ // Range: 0x31D7B0 -> 0x31D860 -void render_all() -{ +void render_all() { // Blocks /* anonymous block */ { // Range: 0x31D7B0 -> 0x31D860 - class ztextbox& d; // r16 + class ztextbox & d; // r16 } } @@ -4152,8 +3761,7 @@ void render_all() Code range: 0x0031D860 -> 0x0031DC08 */ // Range: 0x31D860 -> 0x31DC08 -void update_all(class xScene& s /* r21 */, float dt /* r20 */) -{ +void update_all(class xScene & s /* r21 */, float dt /* r20 */) { // Blocks /* anonymous block */ { // Range: 0x31D860 -> 0x31DC08 @@ -4169,8 +3777,7 @@ void update_all(class xScene& s /* r21 */, float dt /* r20 */) Code range: 0x0031DCA0 -> 0x0031DCA8 */ // Range: 0x31DCA0 -> 0x31DCA8 -void load(class xBase& data /* r2 */, class xDynAsset& asset /* r2 */) -{ +void load(class xBase & data /* r2 */, class xDynAsset & asset /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31DCA0 -> 0x31DCA8 @@ -4184,8 +3791,7 @@ void load(class xBase& data /* r2 */, class xDynAsset& asset /* r2 */) Code range: 0x0031DCB0 -> 0x0031DE30 */ // Range: 0x31DCB0 -> 0x31DE30 -void init() -{ +void init() { // Blocks /* anonymous block */ { // Range: 0x31DCB0 -> 0x31DE30 @@ -4207,8 +3813,7 @@ void init() Code range: 0x0031DE30 -> 0x0031DE60 */ // Range: 0x31DE30 -> 0x31DE60 -void load_settings(class xIniFile& ini /* r2 */) -{ +void load_settings(class xIniFile & ini /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31DE30 -> 0x31DE60 @@ -4222,17 +3827,15 @@ void load_settings(class xIniFile& ini /* r2 */) Code range: 0x0031DE60 -> 0x0031DF50 */ // Range: 0x31DE60 -> 0x31DF50 -void MasterLoveSlave(class ztalkbox* this /* r17 */, class xBase* slave /* r2 */, - signed int starting /* r16 */) -{ +void MasterLoveSlave(class ztalkbox * this /* r17 */, class xBase * slave /* r2 */, signed int starting /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x31DE60 -> 0x31DF50 - class xGroup* grp; // r20 + class xGroup * grp; // r20 signed int cnt; // r19 signed int i; // r18 - class xBase* grpitem; // r2 - class zNPCCommon* npc; // r2 + class xBase * grpitem; // r2 + class zNPCCommon * npc; // r2 } } @@ -4243,14 +3846,13 @@ void MasterLoveSlave(class ztalkbox* this /* r17 */, class xBase* slave /* r2 */ Code range: 0x0031DF50 -> 0x0031E010 */ // Range: 0x31DF50 -> 0x31E010 -void MasterTellSlaves(class ztalkbox* this /* r19 */, signed int isBeginning /* r18 */) -{ +void MasterTellSlaves(class ztalkbox * this /* r19 */, signed int isBeginning /* r18 */) { // Blocks /* anonymous block */ { // Range: 0x31DF50 -> 0x31E010 signed int i; // r17 - class xLinkAsset* link; // r20 - class xBase* mychild; // r2 + class xLinkAsset * link; // r20 + class xBase * mychild; // r2 } } @@ -4261,8 +3863,7 @@ void MasterTellSlaves(class ztalkbox* this /* r19 */, signed int isBeginning /* Code range: 0x0031E010 -> 0x0031E0C4 */ // Range: 0x31E010 -> 0x31E0C4 -void stop_talk(class ztalkbox* this /* r2 */) -{ +void stop_talk(class ztalkbox * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31E010 -> 0x31E0C4 @@ -4276,13 +3877,11 @@ void stop_talk(class ztalkbox* this /* r2 */) Code range: 0x0031E0D0 -> 0x0031E148 */ // Range: 0x31E0D0 -> 0x31E148 -void start_talk(class ztalkbox* this /* r18 */, unsigned int text_id /* r2 */, - class callback* cb /* r17 */, class zNPCCommon* npc /* r16 */) -{ +void start_talk(class ztalkbox * this /* r18 */, unsigned int text_id /* r2 */, class callback * cb /* r17 */, class zNPCCommon * npc /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x31E0D0 -> 0x31E148 - class xTextAsset* ta; // r2 + class xTextAsset * ta; // r2 } } @@ -4293,13 +3892,11 @@ void start_talk(class ztalkbox* this /* r18 */, unsigned int text_id /* r2 */, Code range: 0x0031E150 -> 0x0031E654 */ // Range: 0x31E150 -> 0x31E654 -void start_talk(class ztalkbox* this /* r18 */, char* s /* r17 */, class callback* cb /* r16 */, - class zNPCCommon* npc /* r2 */) -{ +void start_talk(class ztalkbox * this /* r18 */, char * s /* r17 */, class callback * cb /* r16 */, class zNPCCommon * npc /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31E150 -> 0x31E654 - class ztextbox& d; // r18 + class ztextbox & d; // r18 unsigned char registered; // @ 0x0051009C } } @@ -4311,12 +3908,11 @@ void start_talk(class ztalkbox* this /* r18 */, char* s /* r17 */, class callbac Code range: 0x0031E660 -> 0x0031E6B8 */ // Range: 0x31E660 -> 0x31E6B8 -void set_text(class ztalkbox* this /* r16 */, unsigned int id /* r2 */) -{ +void set_text(class ztalkbox * this /* r16 */, unsigned int id /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31E660 -> 0x31E6B8 - class xTextAsset* ta; // r2 + class xTextAsset * ta; // r2 } } @@ -4327,12 +3923,11 @@ void set_text(class ztalkbox* this /* r16 */, unsigned int id /* r2 */) Code range: 0x0031E6C0 -> 0x0031E88C */ // Range: 0x31E6C0 -> 0x31E88C -void set_text(class ztalkbox* this /* r17 */, char* s /* r2 */) -{ +void set_text(class ztalkbox * this /* r17 */, char * s /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31E6C0 -> 0x31E88C - class ztextbox& d; // r16 + class ztextbox & d; // r16 } } @@ -4343,8 +3938,7 @@ void set_text(class ztalkbox* this /* r17 */, char* s /* r2 */) Code range: 0x0031E890 -> 0x0031EB14 */ // Range: 0x31E890 -> 0x31EB14 -void load(class ztalkbox* this /* r17 */, class asset_type& a /* r16 */) -{ +void load(class ztalkbox * this /* r17 */, class asset_type & a /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x31E890 -> 0x31EB14 @@ -4358,13 +3952,11 @@ void load(class ztalkbox* this /* r17 */, class asset_type& a /* r16 */) Code range: 0x0031EB20 -> 0x0031F268 */ // Range: 0x31EB20 -> 0x31F268 -static signed int cb_dispatch(class xBase* to /* r2 */, unsigned int event /* r2 */, - float* argf /* r2 */) -{ +static signed int cb_dispatch(class xBase * to /* r2 */, unsigned int event /* r2 */, float * argf /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31EB20 -> 0x31F268 - class ztalkbox& e; // r16 + class ztalkbox & e; // r16 } } @@ -4375,9 +3967,7 @@ static signed int cb_dispatch(class xBase* to /* r2 */, unsigned int event /* r2 Code range: 0x0031F270 -> 0x0031F330 */ // Range: 0x31F270 -> 0x31F330 -static void stop_wait(class ztalkbox& e /* r2 */, float* args /* r2 */, - unsigned int args_size /* r2 */) -{ +static void stop_wait(class ztalkbox & e /* r2 */, float * args /* r2 */, unsigned int args_size /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F270 -> 0x31F330 @@ -4394,12 +3984,11 @@ static void stop_wait(class ztalkbox& e /* r2 */, float* args /* r2 */, Code range: 0x0031F330 -> 0x0031F380 */ // Range: 0x31F330 -> 0x31F380 -static void hide_prompts() -{ +static void hide_prompts() { // Blocks /* anonymous block */ { // Range: 0x31F330 -> 0x31F380 - class ztalkbox& active; // r16 + class ztalkbox & active; // r16 } } @@ -4410,14 +3999,13 @@ static void hide_prompts() Code range: 0x0031F380 -> 0x0031F518 */ // Range: 0x31F380 -> 0x31F518 -static void refresh_prompts() -{ +static void refresh_prompts() { // Blocks /* anonymous block */ { // Range: 0x31F380 -> 0x31F518 - class ztalkbox& active; // r16 - char* message; // r2 - char* queries[2]; // r29+0x28 + class ztalkbox & active; // r16 + char * message; // r2 + char * queries[2]; // r29+0x28 } } @@ -4428,8 +4016,7 @@ static void refresh_prompts() Code range: 0x0031F520 -> 0x0031F55C */ // Range: 0x31F520 -> 0x31F55C -static void unlock_stream() -{ +static void unlock_stream() { // Blocks /* anonymous block */ { // Range: 0x31F520 -> 0x31F55C @@ -4443,8 +4030,7 @@ static void unlock_stream() Code range: 0x0031F560 -> 0x0031F610 */ // Range: 0x31F560 -> 0x31F610 -static void deactivate() -{ +static void deactivate() { // Blocks /* anonymous block */ { // Range: 0x31F560 -> 0x31F610 @@ -4458,12 +4044,11 @@ static void deactivate() Code range: 0x0031F610 -> 0x0031F698 */ // Range: 0x31F610 -> 0x31F698 -static unsigned char trigger_wait(class jot& j /* r2 */) -{ +static unsigned char trigger_wait(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F610 -> 0x31F698 - class wait_context& c; // r5 + class wait_context & c; // r5 } } @@ -4474,13 +4059,11 @@ static unsigned char trigger_wait(class jot& j /* r2 */) Code range: 0x0031F6A0 -> 0x0031F780 */ // Range: 0x31F6A0 -> 0x31F780 -static void parse_tag_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, - class split_tag& ti /* r2 */) -{ +static void parse_tag_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F6A0 -> 0x31F780 - class wait_context& c; // r16 + class wait_context & c; // r16 class tag_entry_list el; // r29+0x28 } } @@ -4492,8 +4075,7 @@ static void parse_tag_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, Code range: 0x0031F780 -> 0x0031F7C0 */ // Range: 0x31F780 -> 0x31F7C0 -static unsigned char trigger_trap(class jot& j /* r2 */) -{ +static unsigned char trigger_trap(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F780 -> 0x31F7C0 @@ -4507,8 +4089,7 @@ static unsigned char trigger_trap(class jot& j /* r2 */) Code range: 0x0031F7C0 -> 0x0031F7F8 */ // Range: 0x31F7C0 -> 0x31F7F8 -static void reset_tag_trap(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) -{ +static void reset_tag_trap(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F7C0 -> 0x31F7F8 @@ -4522,12 +4103,11 @@ static void reset_tag_trap(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) Code range: 0x0031F800 -> 0x0031F858 */ // Range: 0x31F800 -> 0x31F858 -static void parse_tag_trap(class jot& j /* r2 */, class split_tag& ti /* r2 */) -{ +static void parse_tag_trap(class jot & j /* r2 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F800 -> 0x31F858 - unsigned char& c; // r16 + unsigned char & c; // r16 } } @@ -4538,12 +4118,11 @@ static void parse_tag_trap(class jot& j /* r2 */, class split_tag& ti /* r2 */) Code range: 0x0031F860 -> 0x0031F92C */ // Range: 0x31F860 -> 0x31F92C -static unsigned char trigger_teleport(class jot& j /* r2 */) -{ +static unsigned char trigger_teleport(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F860 -> 0x31F92C - class teleport_context& c; // r4 + class teleport_context & c; // r4 } } @@ -4554,16 +4133,15 @@ static unsigned char trigger_teleport(class jot& j /* r2 */) Code range: 0x0031F930 -> 0x0031FA84 */ // Range: 0x31F930 -> 0x31FA84 -static void parse_tag_teleport(class jot& j /* r18 */, class split_tag& ti /* r2 */) -{ +static void parse_tag_teleport(class jot & j /* r18 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31F930 -> 0x31FA84 - class teleport_context& c; // r17 + class teleport_context & c; // r17 unsigned int id; // r2 - class xDynAsset* a; // r16 - class location_asset& ta; // r2 - class pointer_asset& ta; // r2 + class xDynAsset * a; // r16 + class location_asset & ta; // r2 + class pointer_asset & ta; // r2 } } @@ -4574,8 +4152,7 @@ static void parse_tag_teleport(class jot& j /* r18 */, class split_tag& ti /* r2 Code range: 0x0031FA90 -> 0x0031FAA8 */ // Range: 0x31FA90 -> 0x31FAA8 -static unsigned char trigger_allow_quit(class jot& j /* r2 */) -{ +static unsigned char trigger_allow_quit(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31FA90 -> 0x31FAA8 @@ -4589,8 +4166,7 @@ static unsigned char trigger_allow_quit(class jot& j /* r2 */) Code range: 0x0031FAB0 -> 0x0031FAE8 */ // Range: 0x31FAB0 -> 0x31FAE8 -static void reset_tag_allow_quit(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) -{ +static void reset_tag_allow_quit(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31FAB0 -> 0x31FAE8 @@ -4604,12 +4180,11 @@ static void reset_tag_allow_quit(class jot& j /* r2 */, class xtextbox& ctb /* r Code range: 0x0031FAF0 -> 0x0031FB48 */ // Range: 0x31FAF0 -> 0x31FB48 -static void parse_tag_allow_quit(class jot& j /* r2 */, class split_tag& ti /* r2 */) -{ +static void parse_tag_allow_quit(class jot & j /* r2 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31FAF0 -> 0x31FB48 - unsigned char& c; // r16 + unsigned char & c; // r16 } } @@ -4620,8 +4195,7 @@ static void parse_tag_allow_quit(class jot& j /* r2 */, class split_tag& ti /* r Code range: 0x0031FB50 -> 0x0031FB58 */ // Range: 0x31FB50 -> 0x31FB58 -static unsigned char trigger_pause() -{ +static unsigned char trigger_pause() { // Blocks /* anonymous block */ { // Range: 0x31FB50 -> 0x31FB58 @@ -4635,8 +4209,7 @@ static unsigned char trigger_pause() Code range: 0x0031FB60 -> 0x0031FB68 */ // Range: 0x31FB60 -> 0x31FB68 -static void reset_tag_pause() -{ +static void reset_tag_pause() { // Blocks /* anonymous block */ { // Range: 0x31FB60 -> 0x31FB68 @@ -4650,8 +4223,7 @@ static void reset_tag_pause() Code range: 0x0031FB70 -> 0x0031FB78 */ // Range: 0x31FB70 -> 0x31FB78 -static void parse_tag_pause() -{ +static void parse_tag_pause() { // Blocks /* anonymous block */ { // Range: 0x31FB70 -> 0x31FB78 @@ -4665,19 +4237,18 @@ static void parse_tag_pause() Code range: 0x0031FB80 -> 0x003200A8 */ // Range: 0x31FB80 -> 0x3200A8 -static unsigned char trigger_sound(class jot& j /* r2 */) -{ +static unsigned char trigger_sound(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x31FB80 -> 0x3200A8 - class sound_context& c; // r16 - class ztalkbox& talk; // r5 - class zNPCCommon* npc; // r20 - class xEnt* player; // r19 - class xBase* obj; // r29+0x6C + class sound_context & c; // r16 + class ztalkbox & talk; // r5 + class zNPCCommon * npc; // r20 + class xEnt * player; // r19 + class xBase * obj; // r29+0x6C unsigned int i; // r18 unsigned int size; // r17 - class xBase* entry; // r2 + class xBase * entry; // r2 } } @@ -4688,12 +4259,11 @@ static unsigned char trigger_sound(class jot& j /* r2 */) Code range: 0x003200B0 -> 0x003200F0 */ // Range: 0x3200B0 -> 0x3200F0 -static void reset_tag_sound(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) -{ +static void reset_tag_sound(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x3200B0 -> 0x3200F0 - class sound_context& c; // r5 + class sound_context & c; // r5 } } @@ -4704,17 +4274,15 @@ static void reset_tag_sound(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) Code range: 0x003200F0 -> 0x003205E8 */ // Range: 0x3200F0 -> 0x3205E8 -static void parse_tag_sound(class jot& j /* r18 */, class xtextbox& ctb /* r2 */, - class split_tag& ti /* r2 */) -{ +static void parse_tag_sound(class jot & j /* r18 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x3200F0 -> 0x3205E8 - class sound_context& c; // r17 - class tag_entry* e; // r2 + class sound_context & c; // r17 + class tag_entry * e; // r2 class tag_entry_list el; // r29+0xE0 - class substr& action; // r16 - class substr& action; // r16 + class substr & action; // r16 + class substr & action; // r16 signed int anim; // r29+0xEC class st_PKR_ASSET_TOCINFO ainfo; // r29+0x40 unsigned int source; // r5 @@ -4728,12 +4296,11 @@ static void parse_tag_sound(class jot& j /* r18 */, class xtextbox& ctb /* r2 */ Code range: 0x003205F0 -> 0x00320780 */ // Range: 0x3205F0 -> 0x320780 -static unsigned char trigger_signal(class jot& j /* r2 */) -{ +static unsigned char trigger_signal(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x3205F0 -> 0x320780 - class signal_context& c; // r20 + class signal_context & c; // r20 unsigned int i; // r19 unsigned int signals[20]; // @ 0x005009B0 } @@ -4746,14 +4313,12 @@ static unsigned char trigger_signal(class jot& j /* r2 */) Code range: 0x00320780 -> 0x00320918 */ // Range: 0x320780 -> 0x320918 -static void parse_tag_signal(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, - class split_tag& ti /* r2 */) -{ +static void parse_tag_signal(class jot & j /* r2 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x320780 -> 0x320918 - class signal_context& c; // r16 - class tag_entry* e; // r2 + class signal_context & c; // r16 + class tag_entry * e; // r2 class tag_entry_list el; // r29+0x88 signed int v[20]; // r29+0x20 unsigned int r; // r2 @@ -4768,8 +4333,7 @@ static void parse_tag_signal(class jot& j /* r2 */, class xtextbox& ctb /* r2 */ Code range: 0x00320920 -> 0x0032096C */ // Range: 0x320920 -> 0x32096C -static unsigned char trigger_auto_wait(class jot& j /* r2 */) -{ +static unsigned char trigger_auto_wait(class jot & j /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x320920 -> 0x32096C @@ -4783,12 +4347,11 @@ static unsigned char trigger_auto_wait(class jot& j /* r2 */) Code range: 0x00320970 -> 0x00320A00 */ // Range: 0x320970 -> 0x320A00 -static void reset_tag_auto_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */) -{ +static void reset_tag_auto_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x320970 -> 0x320A00 - class wait_context& c; // r16 + class wait_context & c; // r16 } } @@ -4799,15 +4362,13 @@ static void reset_tag_auto_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 Code range: 0x00320A00 -> 0x00320B18 */ // Range: 0x320A00 -> 0x320B18 -static void parse_tag_auto_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 */, - class split_tag& ti /* r2 */) -{ +static void parse_tag_auto_wait(class jot & j /* r2 */, class xtextbox & ctb /* r2 */, class split_tag & ti /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x320A00 -> 0x320B18 - class wait_context& c; // r16 + class wait_context & c; // r16 class tag_entry_list el; // r29+0x28 - class tag_entry& e; // r4 + class tag_entry & e; // r4 } } @@ -4818,13 +4379,12 @@ static void parse_tag_auto_wait(class jot& j /* r2 */, class xtextbox& ctb /* r2 Code range: 0x00320B20 -> 0x00320EF8 */ // Range: 0x320B20 -> 0x320EF8 -static void load_wait_context(class wait_context& c /* r18 */, class tag_entry_list& el /* r17 */) -{ +static void load_wait_context(class wait_context & c /* r18 */, class tag_entry_list & el /* r17 */) { // Blocks /* anonymous block */ { // Range: 0x320B20 -> 0x320EF8 - class tag_entry* e; // r2 - class tag_entry* prompt; // r2 + class tag_entry * e; // r2 + class tag_entry * prompt; // r2 unsigned int r; // r2 unsigned int i; // r7 signed int v[32]; // @ 0x005DDFC0 @@ -4838,12 +4398,11 @@ static void load_wait_context(class wait_context& c /* r18 */, class tag_entry_l Code range: 0x00320F00 -> 0x00320FFC */ // Range: 0x320F00 -> 0x320FFC -static void reset_auto_wait() -{ +static void reset_auto_wait() { // Blocks /* anonymous block */ { // Range: 0x320F00 -> 0x320FFC - class asset_type& a; // r3 + class asset_type & a; // r3 } } @@ -4854,8 +4413,7 @@ static void reset_auto_wait() Code range: 0x00321000 -> 0x003210C0 */ // Range: 0x321000 -> 0x3210C0 -static unsigned char read_bool(class substr& s /* r18 */, unsigned char def /* r2 */) -{ +static unsigned char read_bool(class substr & s /* r18 */, unsigned char def /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x321000 -> 0x3210C0 @@ -4873,8 +4431,7 @@ static unsigned char read_bool(class substr& s /* r18 */, unsigned char def /* r Code range: 0x003210C0 -> 0x00321C60 */ // Range: 0x3210C0 -> 0x321C60 -static void trigger_pads(unsigned int pressed /* r16 */) -{ +static void trigger_pads(unsigned int pressed /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x3210C0 -> 0x321C60 @@ -4888,8 +4445,7 @@ static void trigger_pads(unsigned int pressed /* r16 */) Code range: 0x00321C60 -> 0x00321D34 */ // Range: 0x321C60 -> 0x321D34 -static void trigger(unsigned int event /* r2 */) -{ +static void trigger(unsigned int event /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x321C60 -> 0x321D34 @@ -4903,8 +4459,7 @@ static void trigger(unsigned int event /* r2 */) Code range: 0x00321D40 -> 0x00321D9C */ // Range: 0x321D40 -> 0x321D9C -static void speak_stop() -{ +static void speak_stop() { // Blocks /* anonymous block */ { // Range: 0x321D40 -> 0x321D9C @@ -4918,8 +4473,7 @@ static void speak_stop() Code range: 0x00321DA0 -> 0x00321DA8 */ // Range: 0x321DA0 -> 0x321DA8 -static void start() -{ +static void start() { // Blocks /* anonymous block */ { // Range: 0x321DA0 -> 0x321DA8 @@ -4933,8 +4487,7 @@ static void start() Code range: 0x00321DB0 -> 0x00321DB8 */ // Range: 0x321DB0 -> 0x321DB8 -static void stop() -{ +static void stop() { // Blocks /* anonymous block */ { // Range: 0x321DB0 -> 0x321DB8 @@ -4948,8 +4501,7 @@ static void stop() Code range: 0x00321DC0 -> 0x00321DC8 */ // Range: 0x321DC0 -> 0x321DC8 -static enum state_enum update() -{ +static enum state_enum update() { // Blocks /* anonymous block */ { // Range: 0x321DC0 -> 0x321DC8 @@ -4963,8 +4515,7 @@ static enum state_enum update() Code range: 0x00321DD0 -> 0x00321DD8 */ // Range: 0x321DD0 -> 0x321DD8 -static void start(class wait_state_type* this /* r2 */) -{ +static void start(class wait_state_type * this /* r2 */) { // Blocks /* anonymous block */ { // Range: 0x321DD0 -> 0x321DD8 @@ -4978,8 +4529,7 @@ static void start(class wait_state_type* this /* r2 */) Code range: 0x00321DE0 -> 0x00321F98 */ // Range: 0x321DE0 -> 0x321F98 -static void stop(class wait_state_type* this /* r16 */) -{ +static void stop(class wait_state_type * this /* r16 */) { // Blocks /* anonymous block */ { // Range: 0x321DE0 -> 0x321F98 @@ -4993,8 +4543,7 @@ static void stop(class wait_state_type* this /* r16 */) Code range: 0x00321FA0 -> 0x00322388 */ // Range: 0x321FA0 -> 0x322388 -static enum state_enum update(class wait_state_type* this /* r16 */, float dt /* r20 */) -{ +static enum state_enum update(class wait_state_type * this /* r16 */, float dt /* r20 */) { // Blocks /* anonymous block */ { // Range: 0x321FA0 -> 0x322388 @@ -5008,15 +4557,14 @@ static enum state_enum update(class wait_state_type* this /* r16 */, float dt /* Code range: 0x00322390 -> 0x003225C8 */ // Range: 0x322390 -> 0x3225C8 -static void start() -{ +static void start() { // Blocks /* anonymous block */ { // Range: 0x322390 -> 0x3225C8 - class xtextbox& tb; // r2 + class xtextbox & tb; // r2 signed int size; // r29+0x2C signed int jots_size; // r16 - class jot* prev; // r5 + class jot * prev; // r5 } } @@ -5027,8 +4575,7 @@ static void start() Code range: 0x003225D0 -> 0x003225D8 */ // Range: 0x3225D0 -> 0x3225D8 -static void stop() -{ +static void stop() { // Blocks /* anonymous block */ { // Range: 0x3225D0 -> 0x3225D8 @@ -5042,8 +4589,7 @@ static void stop() Code range: 0x003225E0 -> 0x00322604 */ // Range: 0x3225E0 -> 0x322604 -static enum state_enum update() -{ +static enum state_enum update() { // Blocks /* anonymous block */ { // Range: 0x3225E0 -> 0x322604 @@ -5057,8 +4603,7 @@ static enum state_enum update() Code range: 0x00322610 -> 0x00322680 */ // Range: 0x322610 -> 0x322680 -static void start() -{ +static void start() { // Blocks /* anonymous block */ { // Range: 0x322610 -> 0x322680 @@ -5072,8 +4617,7 @@ static void start() Code range: 0x00322680 -> 0x00322688 */ // Range: 0x322680 -> 0x322688 -static void stop() -{ +static void stop() { // Blocks /* anonymous block */ { // Range: 0x322680 -> 0x322688 @@ -5087,8 +4631,7 @@ static void stop() Code range: 0x00322690 -> 0x00322698 */ // Range: 0x322690 -> 0x322698 -static enum state_enum update() -{ +static enum state_enum update() { // Blocks /* anonymous block */ { // Range: 0x322690 -> 0x322698 diff --git a/src/SB/Core/x/containers.h b/src/SB/Core/x/containers.h index 2e1f8310..a2a467a9 100644 --- a/src/SB/Core/x/containers.h +++ b/src/SB/Core/x/containers.h @@ -250,7 +250,8 @@ template struct fixed_queue iterator* operator+=(S32 value) { - _it = (_it + value) % (N + 1); + value = _it + value; + _it = (value + N + 1) % (N + 1); return this; } From b3479ba8f68ffcba2448d496d74418c46a671600 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sat, 28 Feb 2026 23:42:59 -0500 Subject: [PATCH 11/13] Resolved logic formatting for variable 'i' --- src/SB/Core/x/xSnd.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/SB/Core/x/xSnd.h b/src/SB/Core/x/xSnd.h index d06f1918..b885eaca 100644 --- a/src/SB/Core/x/xSnd.h +++ b/src/SB/Core/x/xSnd.h @@ -133,6 +133,7 @@ template U32 sound_queue::recent(S32 index) const template bool sound_queue::playing(S32 index, bool streaming) const { S32 count = size(); + S32 i; if (index < 0 || index > count) { @@ -141,8 +142,7 @@ template bool sound_queue::playing(S32 index, bool streaming) const if (streaming) { - S32 i = 0; - for (; i < index; i++) + for (i = 0; i < index; i++) { if (!xSndIsPlayingByHandle(recent(i))) { @@ -153,8 +153,7 @@ template bool sound_queue::playing(S32 index, bool streaming) const } else { - S32 i = 0; - for (; i < index; i++) + for (i = 0; i < index; i++) { if (xSndIsPlayingByHandle(recent(i))) { From 3c2802dc8a4ed2f53683f0bf83a200a2eec9e56e Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 1 Mar 2026 03:29:01 -0500 Subject: [PATCH 12/13] Updated cb_dispatch to use correct Event tags As a bonus, also got a 100% match here Updated MasterLovesSlaves to use correct Base tags Updated .xSnd.h and moved sound_queue methods into the template class Other minor cleanups --- src/SB/Core/x/xSnd.h | 96 +++++++++++++++++++--------------------- src/SB/Game/zTalkBox.cpp | 75 +++++++++++++------------------ 2 files changed, 77 insertions(+), 94 deletions(-) diff --git a/src/SB/Core/x/xSnd.h b/src/SB/Core/x/xSnd.h index b885eaca..3d009fd9 100644 --- a/src/SB/Core/x/xSnd.h +++ b/src/SB/Core/x/xSnd.h @@ -95,74 +95,70 @@ template struct sound_queue void play(U32 id, F32 vol, F32 pitch, U32 priority, U32 flags, U32 parentID, sound_category snd_category); void push(U32 id); - void clear(); - S32 size() const; - void pop(); - bool playing(S32 index, bool streaming) const; - U32 recent(S32 index) const; -}; -template void sound_queue::pop() -{ - xSndStop(_playing[head]); - head = (head + 1) % (N + 1); -} -template S32 sound_queue::size() const -{ - if (tail >= head) + + void pop() { - return tail - head; + xSndStop(_playing[head]); + head = (head + 1) % (N + 1); } - return tail + (N + 1) - head; -} -template void sound_queue::clear() -{ - while (size() > 0) + const S32 size() { - pop(); + if (tail >= head) + { + return tail - head; + } + return tail + (N + 1) - head; } -} -template U32 sound_queue::recent(S32 index) const -{ - S32 i = tail - index - 1; - if (i < 0) + void clear() { - i += (N + 1); + while (size() > 0) + { + pop(); + } } - return _playing[i]; -} -template bool sound_queue::playing(S32 index, bool streaming) const -{ - S32 count = size(); - S32 i; - - if (index < 0 || index > count) + const U32 recent(S32 index) { - index = count; + S32 i = tail - index - 1; + if (i < 0) + { + i += (N + 1); + } + return _playing[i]; } - - if (streaming) + const bool playing(S32 index, bool streaming) { - for (i = 0; i < index; i++) + S32 count = size(); + S32 i; + + if (index < 0 || index > count) { - if (!xSndIsPlayingByHandle(recent(i))) + index = count; + } + + if (streaming) + { + for (i = 0; i < index; i++) { - return false; + if (!xSndIsPlayingByHandle(recent(i))) + { + return false; + } } + return true; } - return true; - } - else - { - for (i = 0; i < index; i++) + else { - if (xSndIsPlayingByHandle(recent(i))) + for (i = 0; i < index; i++) { - return true; + if (xSndIsPlayingByHandle(recent(i))) + { + return true; + } } + return false; } - return false; } -} +}; enum sound_effect { diff --git a/src/SB/Game/zTalkBox.cpp b/src/SB/Game/zTalkBox.cpp index 711eac57..1c063d4d 100644 --- a/src/SB/Game/zTalkBox.cpp +++ b/src/SB/Game/zTalkBox.cpp @@ -8,6 +8,8 @@ #include #include "zGame.h" #include "xSnd.h" +#include "xEvent.h" +#include "zBase.h" U32 xGroupGetCount(xGroup* g); xBase* xGroupGetItemPtr(xGroup* g, U32 index); @@ -1127,7 +1129,7 @@ namespace active.quit_box->deactivate(); } } - static void stop_wait(ztalkbox& e, const F32* args, U32 args_size) + static void stop_wait(ztalkbox& e, const F32* args, u32 args_size) { if (shared.active != &e) { @@ -1135,9 +1137,8 @@ namespace } U32 mask = 0; - U32 i = 0; - for (; i < args_size; i++) + for (U32 i = 0; i < args_size; i++) { U32 v = (U32)args[i]; @@ -1162,30 +1163,30 @@ namespace switch (event) { - case 10: - case 88: + case eEventReset: + case eEventSceneEnd: e.reset(); break; - case 4: - case 504: + case eEventInvisible: + case eEventFastInvisible: e.hide(); break; - case 3: - case 503: + case eEventVisible: + case eEventFastVisible: e.show(); break; - case 335: + case eEventStartConversation: { U32 textID = ((U32*)argf == NULL) ? 0 : *(U32*)argf; e.start_talk(textID, NULL, NULL); flush_triggered(); break; } - case 336: + case eEventEndConversation: e.stop_talk(); flush_triggered(); break; - case 352: + case eEventTalkBox_StopWait: if (argf == NULL) { stop_wait(e, NULL, 0); @@ -1196,43 +1197,31 @@ namespace } flush_triggered(); break; - case 334: + case eEventSetText: if ((U32*)argf != NULL) { e.set_text(*(U32*)argf); } break; - case 338: + case eEventAddText: if ((U32*)argf != NULL) { e.add_text(*(U32*)argf); } break; - case 339: + case eEventClearText: e.clear_text(); break; - case 75: - case 76: - case 342: - case 343: - case 344: - case 345: - case 346: - case 347: - case 348: - case 349: - case 350: - case 351: - case 353: - case 356: - case 357: - case 358: - case 359: - case 452: - case 453: - case 454: - case 465: - case 466: + + case eEventPadPressRight: + case eEventPadPressLeft: + case eEventOpenTBox: + case eEventCloseTBox: + case eEventTalkBox_OnSignal18: + case eEventTalkBox_OnSignal19: + case eEventTalkBox_OnStart: + case eEventTalkBox_OnYes: + case eEventTalkBox_OnNo: break; } @@ -1540,9 +1529,7 @@ void ztalkbox::hide() } void ztalkbox::MasterTellSlaves(S32 isBeginning) { - S32 i = 0; - - for (; i < (S32)linkCount; i++) + for (S32 i = 0; i < (S32)linkCount; i++) { xLinkAsset* link = &this->link[i]; @@ -1563,12 +1550,12 @@ void ztalkbox::MasterLoveSlave(xBase* slave, S32 starting) { switch (slave->baseType) { - case 0x11: + case eBaseTypeGroup: { xGroup* grp = (xGroup*)slave; S32 cnt = xGroupGetCount(grp); - S32 i = 0; - for (; i < cnt; i++) + + for (S32 i = 0; i < cnt; i++) { xBase* grpitem = xGroupGetItemPtr(grp, i); if (grpitem) @@ -1578,7 +1565,7 @@ void ztalkbox::MasterLoveSlave(xBase* slave, S32 starting) } break; } - case 0x2b: + case eBaseTypeNPC: { zNPCCommon* npc = (zNPCCommon*)slave; if (starting) From c89d0cc8d7a3640373164f785b278b37dbf49140 Mon Sep 17 00:00:00 2001 From: aarjl Date: Sun, 1 Mar 2026 03:46:19 -0500 Subject: [PATCH 13/13] Fixed mistake with "const" in sound_queue class. I moved it to the front, but it caused ObjDiff to not recongize the functions. --- src/SB/Core/x/xSnd.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SB/Core/x/xSnd.h b/src/SB/Core/x/xSnd.h index 3d009fd9..b1d06586 100644 --- a/src/SB/Core/x/xSnd.h +++ b/src/SB/Core/x/xSnd.h @@ -101,7 +101,7 @@ template struct sound_queue xSndStop(_playing[head]); head = (head + 1) % (N + 1); } - const S32 size() + S32 size() const { if (tail >= head) { @@ -116,7 +116,7 @@ template struct sound_queue pop(); } } - const U32 recent(S32 index) + U32 recent(S32 index) const { S32 i = tail - index - 1; if (i < 0) @@ -125,7 +125,7 @@ template struct sound_queue } return _playing[i]; } - const bool playing(S32 index, bool streaming) + bool playing(S32 index, bool streaming) const { S32 count = size(); S32 i;