blob: b597366a57274c9f8b2b7dd38c1a097ce838219b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
//
// Generated By: dol2asm
// Translation Unit: d/d_eye_hl
//
#include "d/d_eye_hl.h"
#include "MSL_C/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"
//
// Forward References:
//
extern "C" void entry__8dEyeHL_cFP12J3DModelDataPCc();
extern "C" void remove__8dEyeHL_cFv();
extern "C" void update__12dEyeHL_mng_cFv();
extern "C" void entry__12dEyeHL_mng_cFP8dEyeHL_c();
extern "C" void remove__12dEyeHL_mng_cFP8dEyeHL_c();
extern "C" extern char const* const d_d_eye_hl__stringBase0;
extern "C" u8 m_obj__12dEyeHL_mng_c[4 + 4 /* padding */];
extern "C" extern u8 struct_80450FB0[8];
extern "C" extern u8 struct_80450FB8[4];
extern "C" extern u8 struct_80450FBC[4];
//
// External References:
//
extern "C" void getName__10JUTNameTabCFUs();
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
extern "C" extern u8 g_envHIO[68];
//
// Declarations:
//
/* 8009C964-8009CA28 0972A4 00C4+00 0/0 2/2 0/0 .text entry__8dEyeHL_cFP12J3DModelDataPCc
*/
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");
}
/* 8009CA28-8009CA48 097368 0020+00 0/0 3/3 0/0 .text remove__8dEyeHL_cFv */
void dEyeHL_c::remove() {
dEyeHL_mng_c::remove(this);
}
/* ############################################################################################## */
/* 80450FA8-80450FB0 0004A8 0004+04 3/3 0/0 0/0 .sbss m_obj__12dEyeHL_mng_c */
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;
/* 80452C14-80452C18 001214 0004+00 1/1 0/0 0/0 .sdata2 @3863 */
SECTION_SDATA2 static f32 lit_3863 = 45.0f;
/* 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 || !i_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
asm void dEyeHL_mng_c::update() {
nofralloc
#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 */
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;
}
/* 8009CB34-8009CB88 097474 0054+00 1/1 0/0 0/0 .text remove__12dEyeHL_mng_cFP8dEyeHL_c
*/
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;
}
}
/* ############################################################################################## */
/* 80450FB0-80450FB8 -00001 0008+00 0/0 2/2 0/0 .sbss None */
/* 80450FB0 0001+00 data_80450FB0 None */
/* 80450FB1 0001+00 data_80450FB1 None */
/* 80450FB2 0006+00 data_80450FB2 None */
extern 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 */
/* 80450FB9 0001+00 data_80450FB9 None */
/* 80450FBA 0001+00 data_80450FBA None */
/* 80450FBB 0001+00 data_80450FBB None */
extern u8 struct_80450FB8[4];
u8 struct_80450FB8[4];
/* 80450FBC-80450FC0 -00001 0004+00 0/0 1/1 0/0 .sbss None */
/* 80450FBC 0001+00 data_80450FBC None */
/* 80450FBD 0003+00 data_80450FBD None */
extern u8 struct_80450FBC[4];
u8 struct_80450FBC[4];
/* 8037B100-8037B100 007760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|