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
This commit is contained in:
TakaRikka
2022-01-25 12:24:14 -08:00
committed by GitHub
parent 6f4d068f1d
commit 612f26c132
241 changed files with 3715 additions and 9755 deletions
+76 -43
View File
@@ -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 */