diff --git a/include/d/d_cam_param.h b/include/d/d_cam_param.h index fca723833..ed04d1690 100644 --- a/include/d/d_cam_param.h +++ b/include/d/d_cam_param.h @@ -4,7 +4,10 @@ #include "dolphin/types.h" #include "SSystem/SComponent/c_angle.h" -struct dCamera__Style; +struct dCamera__Style { + /* 0x00 */ u32 m00; + /* 0x04 */ u8 m04[0x84 - 0x04]; +}; // Size: 0x84 class dCstick_c { public: @@ -119,7 +122,10 @@ public: class dCamParam_c { public: /* 0x0 */ dCamera__Style* mpStyle; - /* 0x4 */ int mStyleIdx; + /* 0x4 */ s32 mStyleIdx; + + static dCamera__Style styles[]; + static s32 style_num; public: dCamParam_c(s32); @@ -127,8 +133,8 @@ public: void Flag(s32, u16) {} void Val(s32, int) {} - void Change(s32); - void SearchStyle(u32); + BOOL Change(s32); + s32 SearchStyle(u32); void ratiof(f32, f32, f32, f32); void DefaultRadius(f32*); void RadiusRatio(f32); diff --git a/src/d/d_cam_param.cpp b/src/d/d_cam_param.cpp index ce74b5a62..50ba53ad2 100644 --- a/src/d/d_cam_param.cpp +++ b/src/d/d_cam_param.cpp @@ -66,13 +66,27 @@ dCamParam_c::~dCamParam_c() { } /* 800AF978-800AF9BC .text Change__11dCamParam_cFl */ -void dCamParam_c::Change(s32) { - /* Nonmatching */ +BOOL dCamParam_c::Change(s32 i_styleIdx) { + mStyleIdx = i_styleIdx; + if (i_styleIdx < style_num) { + mpStyle = &styles[mStyleIdx]; + return TRUE; + } else { + mpStyle = &styles[0]; + return FALSE; + } } /* 800AF9BC-800AFA04 .text SearchStyle__11dCamParam_cFUl */ -void dCamParam_c::SearchStyle(u32) { - /* Nonmatching */ +s32 dCamParam_c::SearchStyle(u32 r4) { + s32 styleIndex = -1; + for (s32 i = 0; i < style_num; i++) { + if (styles[i].m00 == r4) { + styleIndex = i; + break; + } + } + return styleIndex; } /* 800AFA04-800AFAA4 .text ratiof__11dCamParam_cFffff */ diff --git a/src/d/d_meter.cpp b/src/d/d_meter.cpp index 75c5abb21..24d883dea 100644 --- a/src/d/d_meter.cpp +++ b/src/d/d_meter.cpp @@ -1774,7 +1774,7 @@ static BOOL dMeter_Execute(sub_meter_class* i_this) { dMeter_childPaneTrans(i_this->field_0x2438 + 0x09 + i, i_this->field_0x2438 + 0x16, f31); } - dMeter_childPaneTransOnly(i_this->field_0x1638 + 0x1E, i_this->field_0x2438 + 0x16, f31, f29); + dMeter_childPaneTransOnly(i_this->field_0x1638 + 0x1E, i_this->field_0x2438 + 0x16, f31, f30); dMeter_childPaneTrans(i_this->field_0x2438 + 0x0C, i_this->field_0x2438 + 0x16, f31); dMeter_childPaneTrans(i_this->field_0x2438 + 0x0B, i_this->field_0x2438 + 0x16, f31);