mirror of
https://github.com/zeldaret/tp
synced 2026-06-05 19:28:18 -04:00
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:
+76
-43
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user