From 86b7b5691818858b13d6293d048549cf5d07e2de Mon Sep 17 00:00:00 2001 From: compugab Date: Sun, 31 May 2026 20:56:23 -0400 Subject: [PATCH 1/5] match d_lyt_map_capture --- include/d/d_stage.h | 19 ++++++----- include/d/lyt/d_lyt_map_capture.h | 8 ++--- src/d/lyt/d_lyt_map_capture.cpp | 57 +++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 3c3d2a93..de690955 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -48,15 +48,16 @@ public: /* 0x000 */ mHeapAllocator_c mAllocator; /* 0x01C */ Child mChildren[8]; /* 0x0FC */ mVec3_c field_0x0FC; - /* 0x108 */ f32 field_0x108; - /* 0x10C */ f32 field_0x10C; - /* 0x110 */ f32 field_0x110; - /* 0x114 */ f32 field_0x114; - /* 0x118 */ f32 field_0x118; - /* 0x11C */ f32 field_0x11C; - /* 0x120 */ f32 field_0x120; - /* 0x124 */ f32 field_0x124; - /* 0x128 */ f32 field_0x128; + /* 0x108 */ mVec3_c field_0x108; + //f32 field_0x108; + /* 0x10C f32 field_0x10C; + /* 0x110 f32 field_0x110; */ + /* 0x114 */ mVec3_c field_0x114; + ///* 0x118 */ f32 field_0x118; + ///* 0x11C */ f32 field_0x11C; + /* 0x120 */ mVec3_c field_0x120; + ///* 0x124 */ f32 field_0x124; + ///* 0x128 */ f32 field_0x128; /* 0x12C */ f32 field_0x12C; /* 0x130 */ EGG::ScreenEffectBlur mScreenEffect; /* 0x168 */ EGG::PostEffectBlur mPostEffect; diff --git a/include/d/lyt/d_lyt_map_capture.h b/include/d/lyt/d_lyt_map_capture.h index a99fb335..c9e0dcf5 100644 --- a/include/d/lyt/d_lyt_map_capture.h +++ b/include/d/lyt/d_lyt_map_capture.h @@ -9,8 +9,6 @@ class dLytMapCapture_c { public: dLytMapCapture_c() :mStateMgr(*this), mpPicture(nullptr) { - field_0x070 = 0.0f; - field_0x074 = 0.0f; mRenderRequest = false; mIsBusyRendering = false; field_0x06C = 0.0f; @@ -34,8 +32,11 @@ public: void execute(); bool isBusyRendering() const; + + private: void fn_8012D6F0(); + void fn_8012D800(nw4r::lyt::Pane *pane, const GXTexObj *texObj); /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMapCapture_c); /* 0x040 */ nw4r::lyt::Picture *mpPicture; @@ -43,8 +44,7 @@ private: /* 0x064 */ f32 field_0x064; /* 0x068 */ f32 field_0x068; /* 0x06C */ f32 field_0x06C; - /* 0x070 */ f32 field_0x070; - /* 0x074 */ f32 field_0x074; + /* 0x070 */ nw4r::lyt::Size field_0x070; /* 0x078 */ bool mRenderRequest; /* 0x079 */ bool mIsBusyRendering; }; diff --git a/src/d/lyt/d_lyt_map_capture.cpp b/src/d/lyt/d_lyt_map_capture.cpp index c8ead0c9..9f1c0053 100644 --- a/src/d/lyt/d_lyt_map_capture.cpp +++ b/src/d/lyt/d_lyt_map_capture.cpp @@ -1,6 +1,7 @@ #include "d/lyt/d_lyt_map_capture.h" #include "common.h" #include "d/d_stage.h" +#include "d/lyt/d_lyt_map_global.h" STATE_DEFINE(dLytMapCapture_c, RenderingWait); STATE_DEFINE(dLytMapCapture_c, RenderingWaitStep2); @@ -38,3 +39,59 @@ bool dLytMapCapture_c::isBusyRendering() const{ void dLytMapCapture_c::execute() { mStateMgr.executeState(); } + +void fn_8012D6D0(mVec3_c *ignored, mVec3_c *out) { + *out = dStage_c::GetInstance()->getMapRelated()->field_0x0FC; +} + +void fn_8012D610(mVec3_c *ignored, mVec3_c *out){ + dStage_c::GetInstance()->getMapRelated()->fn_801B50C0(0); + const mVec3_c &v = dStage_c::GetInstance()->getMapRelated()->fn_801B4CB0(); + + float z = v.z; + float y = v.y; + float x = v.x; + out->y = y; + out->x = x; + out->z = z; +} + +extern int fn_801B5970(MapRelated*, const GXTexObj*); + +void dLytMapCapture_c::fn_8012D800(nw4r::lyt::Pane *param_2, const GXTexObj *param_3) { + if (param_3 != nullptr && dStage_c::GetInstance() != nullptr && fn_801B5970(dStage_c::GetInstance()->getMapRelated(), param_3)) { + field_0x070.width = GXGetTexObjWidth(param_3); + field_0x070.height = GXGetTexObjHeight(param_3); + param_2->SetSize(field_0x070); + param_2->GetMaterial()->GetTexMapAry()->ReplaceImage(*param_3); + } +} + + +void dLytMapCapture_c::fn_8012D6F0(){ + + dStage_c * pStage = dStage_c::GetInstance(); + + if (pStage != nullptr) { + dLytMapGlobal_c* pLytMap = dLytMapGlobal_c::GetInstance(); + + f32 zoom = pLytMap->getZoomFrame(); + f32 inv = 1.0f / pLytMap->getField_0x44(); + s32 floor = pLytMap->getFloor(); + + mVec3_c v(field_0x064 * inv, 1, field_0x06C * inv); + + pStage->getMapRelated()->fn_801B50C0(floor); + + pStage->getMapRelated()->field_0x108 = pLytMap->getMapScroll(); + pStage->getMapRelated()->field_0x114 = v; + + pStage->getMapRelated()->field_0x120 = pLytMap->getMapRotationCenter(); + + + pStage->getMapRelated()->field_0x1E6 = (u16)(-pLytMap->getMapRotation()); + pStage->getMapRelated()->field_0x12C = zoom; + pStage->getMapRelated()->field_0x1EE = 1; + } + return; +} From e38638e761ef55db07ad6e92387e663ce5b1a75b Mon Sep 17 00:00:00 2001 From: compugab Date: Sun, 31 May 2026 21:11:47 -0400 Subject: [PATCH 2/5] fix build --- include/d/d_stage.h | 7 ------- src/d/d_stage.cpp | 12 +++--------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/include/d/d_stage.h b/include/d/d_stage.h index de690955..4fd84d96 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -49,15 +49,8 @@ public: /* 0x01C */ Child mChildren[8]; /* 0x0FC */ mVec3_c field_0x0FC; /* 0x108 */ mVec3_c field_0x108; - //f32 field_0x108; - /* 0x10C f32 field_0x10C; - /* 0x110 f32 field_0x110; */ /* 0x114 */ mVec3_c field_0x114; - ///* 0x118 */ f32 field_0x118; - ///* 0x11C */ f32 field_0x11C; /* 0x120 */ mVec3_c field_0x120; - ///* 0x124 */ f32 field_0x124; - ///* 0x128 */ f32 field_0x128; /* 0x12C */ f32 field_0x12C; /* 0x130 */ EGG::ScreenEffectBlur mScreenEffect; /* 0x168 */ EGG::PostEffectBlur mPostEffect; diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 9e8fde25..0e3a74b9 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -360,15 +360,9 @@ dRoomTable_c::dRoomTable_c() { MapRelated::MapRelated() : field_0x0FC(0.0f, 0.0f, 0.0f), - field_0x108(0.0f), - field_0x10C(0.0f), - field_0x110(0.0f), - field_0x114(0.0f), - field_0x118(0.0f), - field_0x11C(0.0f), - field_0x120(0.0f), - field_0x124(0.0f), - field_0x128(0.0f), + field_0x108(0.0f, 0.0f, 0.0f), + field_0x114(0.0f, 0.0f, 0.0f), + field_0x120(0.0f, 0.0f, 0.0f), field_0x12C(0.0f), field_0x1E0(0), field_0x1E6(0), From 56d4b05e1ea85058b9717cdfb6e5616eee6ec1a5 Mon Sep 17 00:00:00 2001 From: compugab Date: Mon, 1 Jun 2026 20:37:33 -0400 Subject: [PATCH 3/5] match d_lyt_map_capture --- config/SOUE01/symbols.txt | 10 +++++----- include/d/d_stage.h | 3 +++ include/d/lyt/d_lyt_map_capture.h | 5 +++-- src/d/lyt/d_lyt_map_capture.cpp | 16 ++++------------ 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 954befa5..c426f7a3 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -7488,13 +7488,13 @@ finalizeState_RenderingWait__16dLytMapCapture_cFv = .text:0x8012D540; // type:fu initializeState_RenderingWaitStep2__16dLytMapCapture_cFv = .text:0x8012D550; // type:function size:0x4 executeState_RenderingWaitStep2__16dLytMapCapture_cFv = .text:0x8012D560; // type:function size:0x94 finalizeState_RenderingWaitStep2__16dLytMapCapture_cFv = .text:0x8012D600; // type:function size:0x4 -fn_8012D610 = .text:0x8012D610; // type:function size:0x5C -fn_8012D670 = .text:0x8012D670; // type:function size:0x5C -fn_8012D6D0 = .text:0x8012D6D0; // type:function size:0x20 -fn_8012D6F0 = .text:0x8012D6F0; // type:function size:0xE4 +fn_8012D610__16dLytMapCapture_cFP7mVec3_c = .text:0x8012D610; // type:function size:0x5C +executeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8012D670; // type:function size:0x5C +fn_8012D6D0__16dLytMapCapture_cFP7mVec3_c = .text:0x8012D6D0; // type:function size:0x20 +fn_8012D6F0__16dLytMapCapture_cFv = .text:0x8012D6F0; // type:function size:0xE4 execute__16dLytMapCapture_cFv = .text:0x8012D7E0; // type:function size:0x10 isBusyRendering__16dLytMapCapture_cCFv = .text:0x8012D7F0; // type:function size:0x8 -fn_8012D800 = .text:0x8012D800; // type:function size:0xEC +fn_8012D800__16dLytMapCapture_cFPQ34nw4r3lyt4PanePC9_GXTexObj = .text:0x8012D800; // type:function size:0xEC finalizeState__31sFStateID_c<16dLytMapCapture_c>CFR16dLytMapCapture_c = .text:0x8012D8F0; // type:function size:0x30 executeState__31sFStateID_c<16dLytMapCapture_c>CFR16dLytMapCapture_c = .text:0x8012D920; // type:function size:0x30 initializeState__31sFStateID_c<16dLytMapCapture_c>CFR16dLytMapCapture_c = .text:0x8012D950; // type:function size:0x30 diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 4fd84d96..506fa868 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -42,9 +42,12 @@ class MapRelated { bool c; }; + + public: MapRelated(); ~MapRelated(); + int fn_801B5970(const GXTexObj*); /* 0x000 */ mHeapAllocator_c mAllocator; /* 0x01C */ Child mChildren[8]; /* 0x0FC */ mVec3_c field_0x0FC; diff --git a/include/d/lyt/d_lyt_map_capture.h b/include/d/lyt/d_lyt_map_capture.h index c9e0dcf5..d47e1265 100644 --- a/include/d/lyt/d_lyt_map_capture.h +++ b/include/d/lyt/d_lyt_map_capture.h @@ -5,6 +5,7 @@ #include "nw4r/lyt/lyt_picture.h" #include "s/s_State.hpp" #include "s/s_StateID.hpp" +#include "m/m_vec.h" class dLytMapCapture_c { public: @@ -31,8 +32,8 @@ public: void execute(); bool isBusyRendering() const; - - + void fn_8012D610(mVec3_c *out); + void fn_8012D6D0(mVec3_c *out); private: void fn_8012D6F0(); diff --git a/src/d/lyt/d_lyt_map_capture.cpp b/src/d/lyt/d_lyt_map_capture.cpp index 9f1c0053..785c5774 100644 --- a/src/d/lyt/d_lyt_map_capture.cpp +++ b/src/d/lyt/d_lyt_map_capture.cpp @@ -40,26 +40,18 @@ void dLytMapCapture_c::execute() { mStateMgr.executeState(); } -void fn_8012D6D0(mVec3_c *ignored, mVec3_c *out) { +void dLytMapCapture_c::fn_8012D6D0(mVec3_c *out) { *out = dStage_c::GetInstance()->getMapRelated()->field_0x0FC; } -void fn_8012D610(mVec3_c *ignored, mVec3_c *out){ +void dLytMapCapture_c::fn_8012D610(mVec3_c *out){ dStage_c::GetInstance()->getMapRelated()->fn_801B50C0(0); - const mVec3_c &v = dStage_c::GetInstance()->getMapRelated()->fn_801B4CB0(); - - float z = v.z; - float y = v.y; - float x = v.x; - out->y = y; - out->x = x; - out->z = z; + *out = dStage_c::GetInstance()->getMapRelated()->fn_801B4CB0(); } -extern int fn_801B5970(MapRelated*, const GXTexObj*); void dLytMapCapture_c::fn_8012D800(nw4r::lyt::Pane *param_2, const GXTexObj *param_3) { - if (param_3 != nullptr && dStage_c::GetInstance() != nullptr && fn_801B5970(dStage_c::GetInstance()->getMapRelated(), param_3)) { + if (param_3 != nullptr && dStage_c::GetInstance() != nullptr && dStage_c::GetInstance()->getMapRelated()->fn_801B5970(param_3)) { field_0x070.width = GXGetTexObjWidth(param_3); field_0x070.height = GXGetTexObjHeight(param_3); param_2->SetSize(field_0x070); From efa6ea43cbc7dcd6993fc422f282c3c948afc4ba Mon Sep 17 00:00:00 2001 From: compugab Date: Tue, 2 Jun 2026 17:54:49 -0400 Subject: [PATCH 4/5] correcting build problems --- config/SOUE01/symbols.txt | 8 ++++---- include/d/d_stage.h | 1 + include/d/lyt/d_lyt_map_capture.h | 1 + src/d/lyt/d_lyt_map_capture.cpp | 5 +++++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index c426f7a3..dc8e34b6 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -7489,7 +7489,7 @@ initializeState_RenderingWaitStep2__16dLytMapCapture_cFv = .text:0x8012D550; // executeState_RenderingWaitStep2__16dLytMapCapture_cFv = .text:0x8012D560; // type:function size:0x94 finalizeState_RenderingWaitStep2__16dLytMapCapture_cFv = .text:0x8012D600; // type:function size:0x4 fn_8012D610__16dLytMapCapture_cFP7mVec3_c = .text:0x8012D610; // type:function size:0x5C -executeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8012D670; // type:function size:0x5C +fn_8012D670__16dLytMapCapture_cFP7mVec3_c = .text:0x8012D670; // type:function size:0x5C fn_8012D6D0__16dLytMapCapture_cFP7mVec3_c = .text:0x8012D6D0; // type:function size:0x20 fn_8012D6F0__16dLytMapCapture_cFv = .text:0x8012D6F0; // type:function size:0xE4 execute__16dLytMapCapture_cFv = .text:0x8012D7E0; // type:function size:0x10 @@ -8116,7 +8116,7 @@ getState__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c getNewStateID__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80144660; // type:function size:0x10 getOldStateID__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80144670; // type:function size:0x10 initializeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80144680; // type:function size:0x10 -executeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80144690; // type:function size:0x10 +lbl_80144690 = .text:0x80144690; // type:label finalizeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801446A0; // type:function size:0x10 refreshState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801446B0; // type:function size:0x10 getState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801446C0; // type:function size:0x10 @@ -8709,10 +8709,10 @@ fn_80158290 = .text:0x80158290; // type:function size:0x4 fn_801582A0 = .text:0x801582A0; // type:function size:0x134 fn_801583E0 = .text:0x801583E0; // type:function size:0x4 fn_801583F0 = .text:0x801583F0; // type:function size:0x4 -fn_80158400 = .text:0x80158400; // type:function size:0x78 +fn_80158400__15dLytBossGauge_cFv = .text:0x80158400; // type:function size:0x78 fn_80158480 = .text:0x80158480; // type:function size:0x4 fn_80158490 = .text:0x80158490; // type:function size:0x4 -fn_801584A0 = .text:0x801584A0; // type:function size:0x78 +fn_801584A0__15dLytBossGauge_cFv = .text:0x801584A0; // type:function size:0x78 fn_80158520 = .text:0x80158520; // type:function size:0x4 fn_80158530 = .text:0x80158530; // type:function size:0x4 fn_80158540 = .text:0x80158540; // type:function size:0x80 diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 506fa868..60c79aa5 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -92,6 +92,7 @@ public: void fn_801B4B80(u32 mapParams, const mVec3_c ¢er, const mVec3_c &size); void fn_801B4C70(const mVec3_c &); void fn_801B50C0(s32); + const mVec3_c &fn_801B4C90() const; const mVec3_c &fn_801B4CB0() const; s32 fn_801B4F10(s32 roomid, const mVec3_c &position) const; }; diff --git a/include/d/lyt/d_lyt_map_capture.h b/include/d/lyt/d_lyt_map_capture.h index d47e1265..4dec80a2 100644 --- a/include/d/lyt/d_lyt_map_capture.h +++ b/include/d/lyt/d_lyt_map_capture.h @@ -33,6 +33,7 @@ public: void execute(); bool isBusyRendering() const; void fn_8012D610(mVec3_c *out); + void fn_8012D670(mVec3_c *out); void fn_8012D6D0(mVec3_c *out); private: diff --git a/src/d/lyt/d_lyt_map_capture.cpp b/src/d/lyt/d_lyt_map_capture.cpp index 785c5774..20936865 100644 --- a/src/d/lyt/d_lyt_map_capture.cpp +++ b/src/d/lyt/d_lyt_map_capture.cpp @@ -49,6 +49,11 @@ void dLytMapCapture_c::fn_8012D610(mVec3_c *out){ *out = dStage_c::GetInstance()->getMapRelated()->fn_801B4CB0(); } +void dLytMapCapture_c::fn_8012D670(mVec3_c *out){ + dStage_c::GetInstance()->getMapRelated()->fn_801B50C0(0); + *out = dStage_c::GetInstance()->getMapRelated()->fn_801B4C90(); +} + void dLytMapCapture_c::fn_8012D800(nw4r::lyt::Pane *param_2, const GXTexObj *param_3) { if (param_3 != nullptr && dStage_c::GetInstance() != nullptr && dStage_c::GetInstance()->getMapRelated()->fn_801B5970(param_3)) { From 21c7dac9b15dcc05926a4745f6e58e7f0f53bf16 Mon Sep 17 00:00:00 2001 From: compugab Date: Wed, 3 Jun 2026 05:38:12 -0400 Subject: [PATCH 5/5] fix symbols regression --- config/SOUE01/symbols.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index dc8e34b6..90a01105 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -8116,7 +8116,7 @@ getState__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c getNewStateID__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80144660; // type:function size:0x10 getOldStateID__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80144670; // type:function size:0x10 initializeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80144680; // type:function size:0x10 -lbl_80144690 = .text:0x80144690; // type:label +executeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80144690; // type:function size:0x10 finalizeState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801446A0; // type:function size:0x10 refreshState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801446B0; // type:function size:0x10 getState__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801446C0; // type:function size:0x10