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; +}