mirror of
https://github.com/zeldaret/tp
synced 2026-08-01 00:08:51 -04:00
d_menu_dmap mostly done (#2456)
* d_menu_dmap mostly done * d_npc_lib equivalent * m_Do_printf matching
This commit is contained in:
+1386
-730
File diff suppressed because it is too large
Load Diff
@@ -396,8 +396,8 @@ inline static s16 rightModeCnvRot(s16 param_0) {
|
||||
|
||||
/* 801C0FF8-801C1128 1BB938 0130+00 0/0 1/1 0/0 .text
|
||||
* getTreasureList__20dMenu_StageMapCtrl_cFPfPfPScPUcPSc */
|
||||
bool dMenu_StageMapCtrl_c::getTreasureList(f32* param_0, f32* param_1, s8* param_2, u8* param_3,
|
||||
s8* param_4) {
|
||||
bool dMenu_StageMapCtrl_c::getTreasureList(f32* o_posX, f32* o_posY, s8* param_2, u8* o_swbit,
|
||||
s8* o_roomNo) {
|
||||
bool var_r30 = false;
|
||||
|
||||
while (field_0xe4 != 0 && !var_r30) {
|
||||
@@ -405,18 +405,18 @@ bool dMenu_StageMapCtrl_c::getTreasureList(f32* param_0, f32* param_1, s8* param
|
||||
sp10 = *field_0x8c->getPos();
|
||||
|
||||
if (getRendPointer(0)->isDrawIconSingle(field_0x8c->getDataPointer(), (s8)dComIfGp_roomControl_getStayNo(), field_0xf7, true, true, &sp10)) {
|
||||
cnvPosTo2Dpos(sp10.x, sp10.z, param_0, param_1);
|
||||
cnvPosTo2Dpos(sp10.x, sp10.z, o_posX, o_posY);
|
||||
|
||||
if (param_2 != NULL) {
|
||||
*param_2 = rightModeCnvRot((s8)field_0x8c->getAngleY()) >> 8;
|
||||
}
|
||||
|
||||
if (param_3 != NULL) {
|
||||
*param_3 = field_0x8c->getSwBit();
|
||||
if (o_swbit != NULL) {
|
||||
*o_swbit = field_0x8c->getSwBit();
|
||||
}
|
||||
|
||||
if (param_4 != NULL) {
|
||||
*param_4 = field_0x8c->getRoomNo();
|
||||
if (o_roomNo != NULL) {
|
||||
*o_roomNo = field_0x8c->getRoomNo();
|
||||
}
|
||||
|
||||
var_r30 = true;
|
||||
|
||||
+501
-445
File diff suppressed because it is too large
Load Diff
+59
-128
@@ -1,58 +1,6 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d/d_npc_lib
|
||||
//
|
||||
|
||||
#include "d/d_npc_lib.h"
|
||||
#include "dol2asm.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__16dNpcLib_lookat_cFv();
|
||||
extern "C" void init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz();
|
||||
extern "C" void action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi();
|
||||
extern "C" void dbView__16dNpcLib_lookat_cFv();
|
||||
extern "C" void setPrm__16dNpcLib_lookat_cFv();
|
||||
extern "C" void update__16dNpcLib_lookat_cFv();
|
||||
extern "C" void limitter__16dNpcLib_lookat_cFPssss();
|
||||
extern "C" void __dt__16dNpcLib_lookat_cFv();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void __dt__4cXyzFv();
|
||||
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
|
||||
extern "C" void XYZrotS__14mDoMtx_stack_cFRC5csXyz();
|
||||
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
|
||||
extern "C" void __ct__4cXyzFv();
|
||||
extern "C" void __dt__5csXyzFv();
|
||||
extern "C" void __ct__5csXyzFv();
|
||||
extern "C" void __mi__4cXyzCFRC3Vec();
|
||||
extern "C" void normalize__4cXyzFv();
|
||||
extern "C" void isZero__4cXyzCFv();
|
||||
extern "C" void __apl__5csXyzFR5csXyz();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __destroy_arr();
|
||||
extern "C" void __construct_array();
|
||||
extern "C" void _savegpr_22();
|
||||
extern "C" void _savegpr_23();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _restgpr_22();
|
||||
extern "C" void _restgpr_23();
|
||||
extern "C" void _restgpr_25();
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" u8 Zero__5csXyz[4];
|
||||
extern "C" extern u8 data_80451164[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 80251314-8025140C 24BC54 00F8+00 0/0 0/0 4/4 .text __ct__16dNpcLib_lookat_cFv */
|
||||
dNpcLib_lookat_c::dNpcLib_lookat_c() {}
|
||||
|
||||
@@ -71,6 +19,8 @@ void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csX
|
||||
break;
|
||||
}
|
||||
|
||||
JUT_ASSERT(649, a_jntNum < i_mdl_p->getModelData()->getJointNum());
|
||||
|
||||
mDoMtx_stack_c::copy(i_mdl_p->getAnmMtx(a_jntNum));
|
||||
mDoMtx_stack_c::multVecZero(&field_0x04[mCount]);
|
||||
field_0xbc[i] = a_jntNum;
|
||||
@@ -80,105 +30,72 @@ void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csX
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80454DE8-80454DEC 0033E8 0004+00 3/3 0/0 0/0 .sdata2 @3864 */
|
||||
SECTION_SDATA2 static u8 lit_3864[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
|
||||
/* 80454DEC-80454DF0 0033EC 0004+00 1/1 0/0 0/0 .sdata2 @3865 */
|
||||
SECTION_SDATA2 static f32 lit_3865 = 1.0f;
|
||||
|
||||
/* 80454DF0-80454DF8 0033F0 0008+00 2/2 0/0 0/0 .sdata2 @3866 */
|
||||
SECTION_SDATA2 static f64 lit_3866 = 0.5;
|
||||
|
||||
/* 80454DF8-80454E00 0033F8 0008+00 2/2 0/0 0/0 .sdata2 @3867 */
|
||||
SECTION_SDATA2 static f64 lit_3867 = 3.0;
|
||||
|
||||
/* 80454E00-80454E08 003400 0008+00 2/2 0/0 0/0 .sdata2 @3868 */
|
||||
SECTION_SDATA2 static u8 lit_3868[8] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80454E08-80454E10 003408 0004+04 1/1 0/0 0/0 .sdata2 @3869 */
|
||||
SECTION_SDATA2 static f32 lit_3869[1 + 1 /* padding */] = {
|
||||
0.5f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
|
||||
/* 80454E10-80454E18 003410 0008+00 2/2 0/0 0/0 .sdata2 @3873 */
|
||||
SECTION_SDATA2 static f64 lit_3873 = 4503601774854144.0 /* cast s32 to float */;
|
||||
|
||||
/* 80251534-80251B60 24BE74 062C+00 0/0 0/0 2/2 .text
|
||||
* action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi */
|
||||
// NONMATCHING - regswap, equivalent
|
||||
void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3,
|
||||
int param_4) {
|
||||
cXyz spA0;
|
||||
cXyz sp90;
|
||||
int i;
|
||||
|
||||
Mtx sp90;
|
||||
cMtx_copy(param_3, sp90);
|
||||
sp90[2][3] = 0.0f;
|
||||
sp90[1][3] = 0.0f;
|
||||
sp90[0][3] = 0.0f;
|
||||
Mtx spA0;
|
||||
cMtx_copy(param_3, spA0);
|
||||
spA0[0][3] = spA0[1][3] = spA0[2][3] = 0.0f;
|
||||
|
||||
mDoMtx_stack_c::copy(sp90);
|
||||
mDoMtx_stack_c::copy(spA0);
|
||||
mDoMtx_stack_c::inverse();
|
||||
cMtx_copy(mDoMtx_stack_c::get(), sp90);
|
||||
cMtx_copy(mDoMtx_stack_c::get(), spA0);
|
||||
|
||||
for (int i = 0; i < mCount; i++) {
|
||||
spA0 = field_0x04[i] - param_2->current.pos;
|
||||
sp90 = field_0x04[i] - param_2->current.pos;
|
||||
mDoMtx_stack_c::transS(param_2->current.pos);
|
||||
mDoMtx_stack_c::concat(sp90);
|
||||
mDoMtx_stack_c::multVec(&spA0, &field_0x04[i]);
|
||||
mDoMtx_stack_c::concat(spA0);
|
||||
mDoMtx_stack_c::multVec(&sp90, &field_0x04[i]);
|
||||
}
|
||||
|
||||
spA0 = param_0 - param_2->current.pos;
|
||||
sp90 = param_0 - param_2->current.pos;
|
||||
mDoMtx_stack_c::transS(param_2->current.pos);
|
||||
mDoMtx_stack_c::concat(sp90);
|
||||
mDoMtx_stack_c::multVec(&spA0, ¶m_0);
|
||||
mDoMtx_stack_c::concat(spA0);
|
||||
mDoMtx_stack_c::multVec(&sp90, ¶m_0);
|
||||
|
||||
spA0 = param_1 - param_2->current.pos;
|
||||
sp90 = param_1 - param_2->current.pos;
|
||||
mDoMtx_stack_c::transS(param_2->current.pos);
|
||||
mDoMtx_stack_c::concat(sp90);
|
||||
mDoMtx_stack_c::multVec(&spA0, &field_0x04[mCount]);
|
||||
mDoMtx_stack_c::concat(spA0);
|
||||
mDoMtx_stack_c::multVec(&sp90, &field_0x04[mCount]);
|
||||
|
||||
setPrm();
|
||||
update();
|
||||
|
||||
cXyz spAC;
|
||||
cXyz spB8;
|
||||
cXyz sp84;
|
||||
cXyz sp78;
|
||||
|
||||
f32 tmp = 1.0f;
|
||||
f32 var_f30 = 0.0f;
|
||||
f32 var_f31 = 1.0f;
|
||||
for (int i = mCount - 1; i >= 0 && param_4 == 1; i--) {
|
||||
spAC = param_0 - field_0x04[i];
|
||||
sp84 = param_0 - field_0x04[i];
|
||||
|
||||
if (!spAC.isZero()) {
|
||||
spAC.normalize();
|
||||
if (!sp84.isZero()) {
|
||||
sp84.normalize();
|
||||
|
||||
spB8 = field_0x04[mCount] - field_0x04[i];
|
||||
if (!spB8.isZero()) {
|
||||
spB8.normalize();
|
||||
sp78 = field_0x04[mCount] - field_0x04[i];
|
||||
if (!sp78.isZero()) {
|
||||
sp78.normalize();
|
||||
|
||||
s16 svar7 = -cM_atan2s(spAC.y, spAC.absXZ());
|
||||
s16 svar8 = cM_atan2s(spAC.x, spAC.z);
|
||||
s16 sp1A = -cM_atan2s(sp84.y, sp84.absXZ());
|
||||
s16 sp18 = cM_atan2s(sp84.x, sp84.z);
|
||||
|
||||
s16 svar9 = -cM_atan2s(spB8.y, spB8.absXZ());
|
||||
s16 svar10 = cM_atan2s(spB8.x, spB8.z);
|
||||
s16 sp16 = -cM_atan2s(sp78.y, sp78.absXZ());
|
||||
s16 sp14 = cM_atan2s(sp78.x, sp78.z);
|
||||
|
||||
field_0x4c[i].x += (s16)(tmp * (f32)(svar7 - svar9));
|
||||
field_0x4c[i].y += (s16)(tmp * (f32)(svar8 - svar10));
|
||||
field_0x4c[i].x += (s16)(var_f31 * (f32)(sp1A - sp16));
|
||||
field_0x4c[i].y += (s16)(var_f31 * (f32)(sp18 - sp14));
|
||||
|
||||
limitter(&field_0x4c[i].x, field_0x34[i].x, field_0x94[i].x, field_0x7c[i].x);
|
||||
limitter(&field_0x4c[i].y, field_0x34[i].y, field_0x94[i].y, field_0x7c[i].y);
|
||||
}
|
||||
}
|
||||
|
||||
tmp *= 0.5f;
|
||||
var_f31 *= 0.5f;
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -194,17 +111,26 @@ void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, M
|
||||
/* 80251B60-80251B64 24C4A0 0004+00 0/0 0/0 2/2 .text dbView__16dNpcLib_lookat_cFv */
|
||||
void dNpcLib_lookat_c::dbView() {}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80454E18-80454E20 003418 0004+04 1/1 0/0 0/0 .sdata2 @3970 */
|
||||
SECTION_SDATA2 static f32 lit_3970[1 + 1 /* padding */] = {
|
||||
2.0f / 5.0f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
|
||||
/* 80251B64-80251EF8 24C4A4 0394+00 1/1 0/0 0/0 .text setPrm__16dNpcLib_lookat_cFv */
|
||||
void dNpcLib_lookat_c::setPrm() {
|
||||
// NONMATCHING
|
||||
cXyz sp14;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mCount; i++) {
|
||||
field_0x34[i] = csXyz::Zero;
|
||||
field_0xac[i] = 0.0f;
|
||||
}
|
||||
|
||||
for (i = 0; i < mCount; i++) {
|
||||
field_0x4c[i].x = 0.4f * field_0x4c[i].x;
|
||||
field_0x4c[i].y = 0.4f * field_0x4c[i].y;
|
||||
|
||||
sp14 = field_0x04[i + 1] - field_0x04[i];
|
||||
field_0x34[i].x = -cM_atan2s(sp14.y, sp14.absXZ());
|
||||
field_0x34[i].y = cM_atan2s(sp14.x, sp14.z);
|
||||
|
||||
field_0xac[i] = sp14.abs();
|
||||
}
|
||||
}
|
||||
|
||||
/* 80251EF8-80252018 24C838 0120+00 1/1 0/0 0/0 .text update__16dNpcLib_lookat_cFv */
|
||||
@@ -212,8 +138,9 @@ void dNpcLib_lookat_c::update() {
|
||||
cXyz sp50;
|
||||
csXyz sp58(csXyz::Zero);
|
||||
Mtx m;
|
||||
int i;
|
||||
|
||||
for (int i = 0; i < mCount; i++) {
|
||||
for (i = 0; i < mCount; i++) {
|
||||
mDoMtx_stack_c::XYZrotS(field_0x34[i]);
|
||||
cMtx_copy(mDoMtx_stack_c::get(), m);
|
||||
|
||||
@@ -233,11 +160,14 @@ void dNpcLib_lookat_c::update() {
|
||||
/* 80252018-80252094 24C958 007C+00 1/1 0/0 0/0 .text limitter__16dNpcLib_lookat_cFPssss */
|
||||
int dNpcLib_lookat_c::limitter(s16* o_value, s16 param_1, s16 param_2, s16 param_3) {
|
||||
int limit = param_1 + *o_value;
|
||||
BOOL rt = FALSE;
|
||||
|
||||
if (param_2 <= limit) {
|
||||
if (param_2 <= param_1) {
|
||||
*o_value = 0;
|
||||
} else {
|
||||
*o_value -= (s16)(limit - param_2);
|
||||
rt = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,6 +176,7 @@ int dNpcLib_lookat_c::limitter(s16* o_value, s16 param_1, s16 param_2, s16 param
|
||||
*o_value = 0;
|
||||
} else {
|
||||
*o_value -= (s16)(limit - param_3);
|
||||
rt = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -172,8 +172,8 @@ void dTres_c::offStatus(u8 listIdx, int param_1, int flag) {
|
||||
}
|
||||
|
||||
/* 8009C27C-8009C360 096BBC 00E4+00 0/0 1/1 0/0 .text getBossIconFloorNo__7dTres_cFPi */
|
||||
int dTres_c::getBossIconFloorNo(int* o_floorNo) {
|
||||
int ret;
|
||||
bool dTres_c::getBossIconFloorNo(int* o_floorNo) {
|
||||
bool ret;
|
||||
|
||||
if (o_floorNo == NULL) {
|
||||
return 0;
|
||||
|
||||
@@ -21,10 +21,33 @@ u8 __OSReport_System_disable;
|
||||
u8 __OSReport_enable;
|
||||
|
||||
/* 80006798-800067C8 0010D8 0030+00 1/1 0/0 0/0 .text OSSwitchFiberEx__FUlUlUlUlUlUl */
|
||||
void OSSwitchFiberEx(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4,
|
||||
u32 param_5) {
|
||||
// NONMATCHING
|
||||
#ifdef __GEKKO__
|
||||
asm void OSSwitchFiberEx(register u32 param_0, register u32 param_1, register u32 param_2, register u32 param_3, register u32 code, register u32 stack) {
|
||||
nofralloc
|
||||
|
||||
mflr r0
|
||||
|
||||
// Back chain
|
||||
mr r9, r1
|
||||
stwu r9, -8(stack)
|
||||
|
||||
// LR save
|
||||
mr r1, stack
|
||||
stw r0, 4(r9)
|
||||
|
||||
// Call function
|
||||
mtlr code
|
||||
blrl
|
||||
|
||||
// Switch back
|
||||
lwz r5, 0(r1)
|
||||
lwz r0, 4(r5)
|
||||
mtlr r0
|
||||
mr r1, r5
|
||||
|
||||
blr
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 800067C8-800067F4 001108 002C+00 3/3 0/0 0/0 .text my_PutString__FPCc */
|
||||
void my_PutString(const char* string) {
|
||||
|
||||
Reference in New Issue
Block a user