summaryrefslogtreecommitdiff
path: root/src/d/d_eye_hl.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-01-25 12:24:14 -0800
committerGitHub <noreply@github.com>2022-01-25 21:24:14 +0100
commit612f26c132280da43ecfa5fa8c8cc32966f06eb6 (patch)
treeac20d071712cf830ec526222c98d340d90721f77 /src/d/d_eye_hl.cpp
parent6f4d068f1d7c5a9f25f1920e64e5b10dc29aea07 (diff)
d_kankyo_wether / d_eye_hl (#178)
* d_eye_hl / d_kankyo_wether wip * more d_kankyo_wether + format * remove asm * some d_kankyo wip * fix dccs vtable * some m_Do_graphic / d_meter2_draw work
Diffstat (limited to 'src/d/d_eye_hl.cpp')
-rw-r--r--src/d/d_eye_hl.cpp119
1 files changed, 76 insertions, 43 deletions
diff --git a/src/d/d_eye_hl.cpp b/src/d/d_eye_hl.cpp
index 693147dc5a..394740abb3 100644
--- a/src/d/d_eye_hl.cpp
+++ b/src/d/d_eye_hl.cpp
@@ -4,7 +4,10 @@
//
#include "d/d_eye_hl.h"
+#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h"
+#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
+#include "dolphin/os/OS.h"
#include "dolphin/types.h"
//
@@ -26,52 +29,45 @@ extern "C" extern u8 struct_80450FBC[4];
// External References:
//
-extern "C" void OSReport_Error();
extern "C" void getName__10JUTNameTabCFUs();
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
-extern "C" void strcmp();
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_envHIO[68];
//
// Declarations:
//
-/* ############################################################################################## */
-/* 8037B100-8037B100 007760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037B100 =
- "目のハイライトテクスチャーがありません!\n";
-/* @stringBase0 padding */
-SECTION_DEAD static char const* const pad_8037B12A = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-#pragma pop
-
/* 8009C964-8009CA28 0972A4 00C4+00 0/0 2/2 0/0 .text entry__8dEyeHL_cFP12J3DModelDataPCc
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_c::entry(J3DModelData* param_0, char const* param_1) {
- nofralloc
-#include "asm/d/d_eye_hl/entry__8dEyeHL_cFP12J3DModelDataPCc.s"
+void dEyeHL_c::entry(J3DModelData* p_mData, char const* name) {
+ J3DTexture* tex = p_mData->getTexture();
+ JUTNameTab* tex_nametab = p_mData->getTextureName();
+
+ if (tex != NULL && tex_nametab != NULL) {
+ for (u16 i = 0; i < tex->getNum(); i++) {
+ const char* tex_name = tex_nametab->getName(i);
+
+ if (tex_name != NULL && !strcmp(tex_name, name)) {
+ m_timg = tex->getResTIMG(i);
+ m_lodBias = m_timg->LODBias;
+ dEyeHL_mng_c::entry(this);
+ return;
+ }
+ }
+ }
+ // "Eye Highlight Texture doesn't exist!\n"
+ OSReport_Error("目のハイライトテクスチャーがありません!\n");
}
-#pragma pop
/* 8009CA28-8009CA48 097368 0020+00 0/0 3/3 0/0 .text remove__8dEyeHL_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_c::remove() {
- nofralloc
-#include "asm/d/d_eye_hl/remove__8dEyeHL_cFv.s"
+void dEyeHL_c::remove() {
+ dEyeHL_mng_c::remove(this);
}
-#pragma pop
/* ############################################################################################## */
/* 80450FA8-80450FB0 0004A8 0004+04 3/3 0/0 0/0 .sbss m_obj__12dEyeHL_mng_c */
-u8 dEyeHL_mng_c::m_obj[4 + 4 /* padding */];
+dEyeHL_mng_c* dEyeHL_mng_c::m_obj;
/* 80452C10-80452C14 001210 0004+00 1/1 0/0 0/0 .sdata2 @3862 */
SECTION_SDATA2 static f32 lit_3862 = 2.0f;
@@ -79,7 +75,30 @@ SECTION_SDATA2 static f32 lit_3862 = 2.0f;
/* 80452C14-80452C18 001214 0004+00 1/1 0/0 0/0 .sdata2 @3863 */
SECTION_SDATA2 static f32 lit_3863 = 45.0f;
+inline BOOL dComIfGp_event_runCheck() {
+ return g_dComIfG_gameInfo.play.getEvent().runCheck();
+}
+
/* 8009CA48-8009CB14 097388 00CC+00 0/0 1/1 0/0 .text update__12dEyeHL_mng_cFv */
+// small issue with cLib_minMaxLimit
+#ifdef NONMATCHING
+void dEyeHL_mng_c::update() {
+ dEyeHL_mng_c* obj = m_obj;
+
+ if (g_envHIO[0x10] == 0 || !dComIfGp_event_runCheck()) {
+ for (; obj != NULL; obj = obj->m_next) {
+ obj->m_timg->LODBias = obj->m_lodBias;
+ }
+ } else {
+ s16 tmp = 2.0f * (dComIfGd_getView()->field_0xd0 - 45.0f);
+ for (; obj != NULL; obj = obj->m_next) {
+ ResTIMG* timg = obj->m_timg;
+ timg->LODBias = obj->m_lodBias + tmp;
+ timg->LODBias = cLib_minMaxLimit(timg->LODBias, (s16)-400, (s16)399);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -88,27 +107,41 @@ asm void dEyeHL_mng_c::update() {
#include "asm/d/d_eye_hl/update__12dEyeHL_mng_cFv.s"
}
#pragma pop
+#endif
/* 8009CB14-8009CB34 097454 0020+00 1/1 0/0 0/0 .text entry__12dEyeHL_mng_cFP8dEyeHL_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_mng_c::entry(dEyeHL_c* param_0) {
- nofralloc
-#include "asm/d/d_eye_hl/entry__12dEyeHL_mng_cFP8dEyeHL_c.s"
+void dEyeHL_mng_c::entry(dEyeHL_c* i_obj) {
+ if (m_obj != NULL) {
+ m_obj->m_pre = i_obj;
+ }
+ i_obj->m_next = m_obj;
+ m_obj = i_obj;
}
-#pragma pop
/* 8009CB34-8009CB88 097474 0054+00 1/1 0/0 0/0 .text remove__12dEyeHL_mng_cFP8dEyeHL_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_mng_c::remove(dEyeHL_c* param_0) {
- nofralloc
-#include "asm/d/d_eye_hl/remove__12dEyeHL_mng_cFP8dEyeHL_c.s"
+void dEyeHL_mng_c::remove(dEyeHL_c* i_obj) {
+ if (i_obj->m_timg != NULL) {
+ dEyeHL_mng_c* prev = i_obj->m_pre;
+ dEyeHL_mng_c* next = i_obj->m_next;
+
+ if (next != NULL) {
+ next->m_pre = prev;
+ }
+
+ if (prev == NULL) {
+ m_obj = next;
+ } else {
+ prev->m_next = next;
+ next = m_obj;
+ }
+
+ i_obj->m_timg->LODBias = i_obj->m_lodBias;
+ i_obj->m_timg = NULL;
+ i_obj->m_pre = NULL;
+ i_obj->m_next = NULL;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80450FB0-80450FB8 -00001 0008+00 0/0 2/2 0/0 .sbss None */
@@ -116,7 +149,7 @@ asm void dEyeHL_mng_c::remove(dEyeHL_c* param_0) {
/* 80450FB1 0001+00 data_80450FB1 None */
/* 80450FB2 0006+00 data_80450FB2 None */
extern u8 struct_80450FB0[8];
-u8 struct_80450FB0[8];
+u8 struct_80450FB0[8] ALIGN_DECL(8);
/* 80450FB8-80450FBC -00001 0004+00 0/0 1/1 0/0 .sbss None */
/* 80450FB8 0001+00 data_80450FB8 None */