mirror of
https://github.com/zeldaret/tp
synced 2026-06-30 20:01:54 -04:00
d_a_npc / d_a_tag_mhint / d_a_grass work (#1916)
* some npc work / cleanup * tag_mhint / grass work * fix path / remove asm
This commit is contained in:
+554
-405
File diff suppressed because it is too large
Load Diff
+14
-28
@@ -1,28 +1,15 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d/bg/d_bg_s
|
||||
//
|
||||
/**
|
||||
* d_bg_s.cpp
|
||||
* Background (Map) Collision main handler
|
||||
*/
|
||||
|
||||
#include "d/bg/d_bg_s.h"
|
||||
#include "d/bg/d_bg_s_sph_chk.h"
|
||||
#include "d/bg/d_bg_w.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 800740F4-80074110 06EA34 001C+00 2/2 1/1 0/0 .text Init__11cBgS_ChkElmFv */
|
||||
void cBgS_ChkElm::Init() {
|
||||
m_bgw_base_ptr = NULL;
|
||||
@@ -160,7 +147,9 @@ f32 cBgS::GroundCross(cBgS_GndChk* p_gnd) {
|
||||
return p_gnd->GetNowY();
|
||||
}
|
||||
|
||||
struct cBgS_dzb_data {
|
||||
// this is identical to cBgD_t except using u32's for the table offsets.
|
||||
// u32 is needed to match in ConvDzb ?
|
||||
struct cBgD_t_ {
|
||||
// Vertex Info
|
||||
/* 0x00 */ int m_v_num;
|
||||
/* 0x04 */ u32 m_v_tbl;
|
||||
@@ -185,20 +174,20 @@ struct cBgS_dzb_data {
|
||||
/* 0x28 */ int m_ti_num;
|
||||
/* 0x2C */ u32 m_ti_tbl;
|
||||
|
||||
/* 0x30 */ u32 field_0x30;
|
||||
/* 0x30 */ u32 m_flags;
|
||||
}; // Size: 0x34
|
||||
|
||||
struct cBgS_dzb_strgroup {
|
||||
struct cBgD_Grp_t_ {
|
||||
u32 strOffset;
|
||||
u8 data[0x30];
|
||||
};
|
||||
|
||||
/* 80074578-80074618 06EEB8 00A0+00 0/0 1/1 0/0 .text ConvDzb__4cBgSFPv */
|
||||
void* cBgS::ConvDzb(void* p_dzb) {
|
||||
cBgS_dzb_data* pbgd = (cBgS_dzb_data*)p_dzb;
|
||||
cBgD_t_* pbgd = (cBgD_t_*)p_dzb;
|
||||
|
||||
if (((pbgd->field_0x30 & 0x80000000) == 0)) {
|
||||
pbgd->field_0x30 |= 0x80000000;
|
||||
if (((pbgd->m_flags & 0x80000000) == 0)) {
|
||||
pbgd->m_flags |= 0x80000000;
|
||||
} else {
|
||||
return p_dzb;
|
||||
}
|
||||
@@ -214,8 +203,8 @@ void* cBgS::ConvDzb(void* p_dzb) {
|
||||
pbgd->m_ti_tbl += (u32)p_dzb;
|
||||
|
||||
for (int i = 0; i < pbgd->m_g_num; i++) {
|
||||
((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset =
|
||||
(u32)p_dzb + ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset;
|
||||
((cBgD_Grp_t_*)pbgd->m_g_tbl)[i].strOffset =
|
||||
(u32)p_dzb + ((cBgD_Grp_t_*)pbgd->m_g_tbl)[i].strOffset;
|
||||
}
|
||||
|
||||
return p_dzb;
|
||||
@@ -920,6 +909,3 @@ f32 dBgS_GetNY(cBgS_PolyInfo const& poly) {
|
||||
dComIfG_Bgsp().GetTriPla(poly, &pla);
|
||||
return pla.mNormal.y;
|
||||
}
|
||||
|
||||
/* 80450F68-80450F70 000468 0008+00 0/0 1/1 0/0 .sbss None */
|
||||
u8 data_80450F68[8] __attribute__((aligned(8)));
|
||||
|
||||
@@ -313,6 +313,9 @@ void dBgS_Acch::GroundCheckInit(dBgS& param_0) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80450F68-80450F70 000468 0008+00 0/0 1/1 0/0 .sbss None */
|
||||
s8 data_80450F68;
|
||||
|
||||
/* 80076350-8007654C 070C90 01FC+00 2/2 0/0 0/0 .text GroundCheck__9dBgS_AcchFR4dBgS */
|
||||
// issues with tmpRoofChk
|
||||
#ifdef NONMATCHING
|
||||
|
||||
@@ -32,15 +32,11 @@ bool dBgW_Base::ChkMemoryError() {
|
||||
|
||||
/* 8007E6D8-8007E6DC 079018 0004+00 1/0 2/0 0/0 .text
|
||||
* CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c */
|
||||
void dBgW_Base::CallRideCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1) {
|
||||
/* empty function */
|
||||
}
|
||||
void dBgW_Base::CallRideCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1) {}
|
||||
|
||||
/* 8007E6DC-8007E6E0 07901C 0004+00 1/0 2/0 0/0 .text
|
||||
* CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz */
|
||||
void dBgW_Base::CallArrowStickCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, cXyz& param_2) {
|
||||
/* empty function */
|
||||
}
|
||||
void dBgW_Base::CallArrowStickCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, cXyz& param_2) {}
|
||||
|
||||
/* 8007E6E0-8007E6F4 079020 0014+00 0/0 1/1 0/0 .text CalcDiffShapeAngleY__9dBgW_BaseFs
|
||||
*/
|
||||
|
||||
@@ -140,86 +140,13 @@ extern "C" u8 sincosTable___5JMath[65536];
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803ABDC8-803ABEB8 008EE8 00F0+00 2/2 0/0 0/0 .data __vt__8dBgWKCol */
|
||||
SECTION_DATA extern void* __vt__8dBgWKCol[60] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__8dBgWKColFv,
|
||||
(void*)ChkMemoryError__9dBgW_BaseFv,
|
||||
(void*)ChkNotReady__8dBgWKColCFv,
|
||||
(void*)ChkLock__8dBgWKColCFv,
|
||||
(void*)ChkMoveBg__8dBgWKColCFv,
|
||||
(void*)ChkMoveFlag__8dBgWKColCFv,
|
||||
(void*)GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo,
|
||||
(void*)GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz,
|
||||
(void*)GetBnd__8dBgWKColCFv,
|
||||
(void*)GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo,
|
||||
(void*)OffMoveFlag__8dBgWKColFv,
|
||||
(void*)GetTopUnder__8dBgWKColCFPfPf,
|
||||
(void*)SetOldShapeAngleY__9dBgW_BaseFs,
|
||||
(void*)LineCheck__8dBgWKColFP11cBgS_LinChk,
|
||||
(void*)GroundCross__8dBgWKColFP11cBgS_GndChk,
|
||||
(void*)ShdwDraw__8dBgWKColFP13cBgS_ShdwDraw,
|
||||
(void*)CaptPoly__8dBgWKColFR13dBgS_CaptPoly,
|
||||
(void*)WallCorrect__8dBgWKColFP9dBgS_Acch,
|
||||
(void*)WallCorrectSort__8dBgWKColFP9dBgS_Acch,
|
||||
(void*)RoofChk__8dBgWKColFP12dBgS_RoofChk,
|
||||
(void*)SplGrpChk__8dBgWKColFP14dBgS_SplGrpChk,
|
||||
(void*)SphChk__8dBgWKColFP11dBgS_SphChkPv,
|
||||
(void*)GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo,
|
||||
(void*)GetExitId__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetSpecialCode__8dBgWKColFi,
|
||||
(void*)GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetPolyObjThrough__8dBgWKColFi,
|
||||
(void*)GetPolyCamThrough__8dBgWKColFi,
|
||||
(void*)GetPolyLinkThrough__8dBgWKColFi,
|
||||
(void*)GetPolyArrowThrough__8dBgWKColFi,
|
||||
(void*)GetPolyHSStick__8dBgWKColFi,
|
||||
(void*)GetPolyBoomerangThrough__8dBgWKColFi,
|
||||
(void*)GetPolyRopeThrough__8dBgWKColFi,
|
||||
(void*)GetPolyBombThrough__8dBgWKColFi,
|
||||
(void*)GetShdwThrough__8dBgWKColFi,
|
||||
(void*)GetUnderwaterRoofCode__8dBgWKColFi,
|
||||
(void*)GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetWallCode__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetIronBallThrough__8dBgWKColFi,
|
||||
(void*)GetAttackThrough__8dBgWKColFi,
|
||||
(void*)GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo,
|
||||
(void*)CrrPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
|
||||
(void*)TransPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
|
||||
(void*)MatrixCrrPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
|
||||
(void*)CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c,
|
||||
(void*)CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz,
|
||||
};
|
||||
|
||||
/* 8007E6F4-8007E74C 079034 0058+00 0/0 0/0 1/1 .text __ct__8dBgWKColFv */
|
||||
dBgWKCol::dBgWKCol() {
|
||||
m_pkc_head = NULL;
|
||||
}
|
||||
|
||||
/* 8007E74C-8007E7D0 07908C 0084+00 1/0 0/0 0/0 .text __dt__8dBgWKColFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
// asm dBgWKCol::~dBgWKCol() {
|
||||
extern "C" asm void __dt__8dBgWKColFv() {
|
||||
nofralloc
|
||||
#include "asm/d/bg/d_bg_w_kcol/__dt__8dBgWKColFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
dBgWKCol::~dBgWKCol() {}
|
||||
|
||||
/* 8007E7D0-8007E804 079110 0034+00 0/0 1/1 0/0 .text initKCollision__8dBgWKColFPv */
|
||||
void dBgWKCol::initKCollision(void* i_kclData) {
|
||||
|
||||
@@ -2428,11 +2428,11 @@ int dComLbG_PhaseHandler(request_of_phase_process_class* i_phaseReq, cPhs__Handl
|
||||
void* i_data) {
|
||||
int phase = cPhs_Handler(i_phaseReq, i_handler, i_data);
|
||||
switch (phase) {
|
||||
case 2:
|
||||
case cPhs_NEXT_e:
|
||||
phase = dComLbG_PhaseHandler(i_phaseReq, i_handler, i_data);
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
case cPhs_LOADING_e:
|
||||
case cPhs_UNK3_e:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+27
-63
@@ -7,11 +7,15 @@
|
||||
#include "MSL_C/stdio.h"
|
||||
#include "d/d_demo.h"
|
||||
#include "dol2asm.h"
|
||||
#include "rel/d/a/d_a_dshutter/d_a_dshutter.h"
|
||||
#include "rel/d/a/d_a_grass/d_a_grass.h"
|
||||
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
|
||||
#include "rel/d/a/d_a_movie_player/d_a_movie_player.h"
|
||||
#include "rel/d/a/d_a_set_bgobj/d_a_set_bgobj.h"
|
||||
#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
|
||||
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
|
||||
#include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h"
|
||||
#include "rel/d/a/tag/d_a_tag_stream/d_a_tag_stream.h"
|
||||
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
@@ -23,53 +27,12 @@ struct daYkgr_c {
|
||||
static u8 m_emitter[4];
|
||||
};
|
||||
|
||||
struct daTagMist_c {
|
||||
/* 80031CF0 */ static u8 getPlayerNo();
|
||||
|
||||
static u8 mPlayerNo;
|
||||
};
|
||||
|
||||
struct daSetBgObj_c {
|
||||
/* 80031870 */ static const char* getArcName(fopAc_ac_c*);
|
||||
};
|
||||
|
||||
struct daObjMovebox {
|
||||
struct Act_c {
|
||||
static void* M_dir_base[2];
|
||||
};
|
||||
};
|
||||
|
||||
struct dFlower_packet_c {
|
||||
typedef void (dFlower_packet_c::*DeleteRoomFunc)(int);
|
||||
static DeleteRoomFunc m_deleteRoom;
|
||||
};
|
||||
|
||||
struct dGrass_packet_c {
|
||||
typedef void (dGrass_packet_c::*DeleteRoomFunc)(int);
|
||||
static DeleteRoomFunc m_deleteRoom;
|
||||
};
|
||||
|
||||
struct daGrass_c {
|
||||
/* 800319C8 */ static void deleteRoomGrass(int);
|
||||
/* 80031A20 */ static void deleteRoomFlower(int);
|
||||
|
||||
static u8 m_myObj[4];
|
||||
static dGrass_packet_c* m_grass;
|
||||
static dFlower_packet_c* m_flower;
|
||||
};
|
||||
|
||||
struct daDsh_c {
|
||||
static f32 OPEN_SIZE;
|
||||
static f32 OPEN_ACCEL;
|
||||
static f32 OPEN_SPEED;
|
||||
static f32 OPEN_BOUND_SPEED;
|
||||
static f32 OPEN_BOUND_RATIO;
|
||||
static f32 CLOSE_ACCEL;
|
||||
static f32 CLOSE_SPEED;
|
||||
static f32 CLOSE_BOUND_SPEED;
|
||||
static f32 CLOSE_BOUND_RATIO;
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -227,7 +190,8 @@ bool daSus_c::data_c::check(cXyz const& i_pos) {
|
||||
|
||||
if ((field_0x8.x <= i_pos.x && i_pos.x <= field_0x14.x) &&
|
||||
(field_0x8.y <= i_pos.y && i_pos.y <= field_0x14.y) &&
|
||||
(field_0x8.z <= i_pos.z && i_pos.z <= field_0x14.z)) {
|
||||
(field_0x8.z <= i_pos.z && i_pos.z <= field_0x14.z))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -241,7 +205,7 @@ u8 daSus_c::data_c::check(fopAc_ac_c* i_actor) {
|
||||
}
|
||||
|
||||
u8 tmp = 0x80;
|
||||
|
||||
|
||||
if (check(i_actor->orig.pos)) {
|
||||
tmp |= 1;
|
||||
}
|
||||
@@ -279,7 +243,8 @@ void daSus_c::room_c::add(daSus_c::data_c* i_data) {
|
||||
daSus_c::data_c* data1 = mpData;
|
||||
daSus_c::data_c* data2 = data1->getNext();
|
||||
while (data2 != NULL) {
|
||||
if (data1->getType() != 0) break;
|
||||
if (data1->getType() != 0)
|
||||
break;
|
||||
data1 = data2;
|
||||
data2 = data2->getNext();
|
||||
}
|
||||
@@ -316,8 +281,8 @@ s16 daSus_c::mSetTop;
|
||||
/* 80031248-800313BC 02BB88 0174+00 0/0 0/0 1/1 .text newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc */
|
||||
// Issues with mSetTop and m_count__9daArrow_c relocation
|
||||
#ifdef NONMATCHING
|
||||
int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3,
|
||||
u8 param_4, u8 i_type) {
|
||||
int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3, u8 param_4,
|
||||
u8 i_type) {
|
||||
s16 setTop = mSetTop;
|
||||
daSus_c::data_c* pData = ((daSus_c::data_c*)mData) + setTop;
|
||||
for (s16 i = setTop; i < 32; pData++, i++) {
|
||||
@@ -347,7 +312,7 @@ int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 p
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int daSus_c::newData(s8 param_0, cXyz const& param_1, cXyz const& param_2, u8 param_3,
|
||||
u8 param_4, u8 param_5) {
|
||||
u8 param_4, u8 param_5) {
|
||||
nofralloc
|
||||
#include "asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s"
|
||||
}
|
||||
@@ -542,12 +507,11 @@ SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_RATIO = -0.4f;
|
||||
int daTagStream_c::checkArea(cXyz const* param_0) {
|
||||
cXyz relativePos;
|
||||
fpoAcM_relativePos(this, param_0, &relativePos);
|
||||
if (relativePos.y >= 0.0f && relativePos.y <= mScale.y &&
|
||||
fabsf(relativePos.x) <= mScale.x &&
|
||||
if (relativePos.y >= 0.0f && relativePos.y <= mScale.y && fabsf(relativePos.x) <= mScale.x &&
|
||||
fabsf(relativePos.z) <= mScale.z)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -581,34 +545,34 @@ int daMirror_c::remove() {
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80424588-80424594 0512A8 000C+00 1/2 0/0 1/1 .bss m_deleteRoom__15dGrass_packet_c */
|
||||
dGrass_packet_c::DeleteRoomFunc dGrass_packet_c::m_deleteRoom;
|
||||
dGrass_packet_c::deleteFunc dGrass_packet_c::m_deleteRoom;
|
||||
|
||||
/* 80450DAC-80450DB0 0002AC 0004+00 0/0 0/0 2/2 .sbss m_myObj__9daGrass_c */
|
||||
u8 daGrass_c::m_myObj[4];
|
||||
daGrass_c* daGrass_c::m_myObj;
|
||||
|
||||
/* 80450DB0-80450DB4 0002B0 0004+00 1/1 0/0 11/11 .sbss m_grass__9daGrass_c */
|
||||
dGrass_packet_c* daGrass_c::m_grass;
|
||||
|
||||
/* 800319C8-80031A20 02C308 0058+00 0/0 0/0 1/1 .text deleteRoomGrass__9daGrass_cFi */
|
||||
void daGrass_c::deleteRoomGrass(int param_0) {
|
||||
if (m_grass) {
|
||||
dGrass_packet_c::DeleteRoomFunc func = dGrass_packet_c::m_deleteRoom;
|
||||
(m_grass->*(func))(param_0);
|
||||
if (m_grass != NULL) {
|
||||
dGrass_packet_c::deleteFunc delete_func = dGrass_packet_c::m_deleteRoom;
|
||||
(m_grass->*(delete_func))(param_0);
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80424594-804245A0 0512B4 000C+00 1/2 0/0 1/1 .bss m_deleteRoom__16dFlower_packet_c */
|
||||
dFlower_packet_c::DeleteRoomFunc dFlower_packet_c::m_deleteRoom;
|
||||
dFlower_packet_c::deleteFunc dFlower_packet_c::m_deleteRoom;
|
||||
|
||||
/* 80450DB4-80450DB8 0002B4 0004+00 1/1 0/0 9/9 .sbss m_flower__9daGrass_c */
|
||||
dFlower_packet_c* daGrass_c::m_flower;
|
||||
|
||||
/* 80031A20-80031A78 02C360 0058+00 0/0 0/0 1/1 .text deleteRoomFlower__9daGrass_cFi */
|
||||
void daGrass_c::deleteRoomFlower(int param_0) {
|
||||
if (m_flower) {
|
||||
dFlower_packet_c::DeleteRoomFunc func = dFlower_packet_c::m_deleteRoom;
|
||||
(m_flower->*(func))(param_0);
|
||||
if (m_flower != NULL) {
|
||||
dFlower_packet_c::deleteFunc delete_func = dFlower_packet_c::m_deleteRoom;
|
||||
(m_flower->*(delete_func))(param_0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -655,7 +619,8 @@ int daTagMagne_c::checkMagnetCode(cBgS_PolyInfo& poly) {
|
||||
|
||||
int magCode = dComIfG_Bgsp().GetMagnetCode(poly);
|
||||
if ((magCode == 1 && mTagMagne->checkMagneA()) || (magCode == 2 && mTagMagne->checkMagneB()) ||
|
||||
(magCode == 3 && mTagMagne->checkMagneC())) {
|
||||
(magCode == 3 && mTagMagne->checkMagneC()))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -776,8 +741,7 @@ s8 daObjCarry_c::getRoomNo(int idx) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void __sinit_d_com_static_cpp() {
|
||||
nofralloc
|
||||
asm void __sinit_d_com_static_cpp(){nofralloc
|
||||
#include "asm/d/com/d_com_static/__sinit_d_com_static_cpp.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
+134
-28
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "d/d_npc_lib.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
@@ -52,29 +53,32 @@ extern "C" extern u8 data_80451164[4];
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803C2B88-803C2B98 01FCA8 000C+04 2/2 0/0 0/0 .data __vt__16dNpcLib_lookat_c */
|
||||
SECTION_DATA extern void* __vt__16dNpcLib_lookat_c[3 + 1 /* padding */] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__16dNpcLib_lookat_cFv,
|
||||
/* padding */
|
||||
NULL,
|
||||
};
|
||||
|
||||
/* 80251314-8025140C 24BC54 00F8+00 0/0 0/0 4/4 .text __ct__16dNpcLib_lookat_cFv */
|
||||
dNpcLib_lookat_c::dNpcLib_lookat_c() {}
|
||||
|
||||
/* 8025140C-80251534 24BD4C 0128+00 0/0 0/0 2/2 .text
|
||||
* init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void dNpcLib_lookat_c::init(J3DModel* param_0, int* param_1, csXyz* param_2, csXyz* param_3) {
|
||||
nofralloc
|
||||
#include "asm/d/d_npc_lib/init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz.s"
|
||||
void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csXyz* param_3) {
|
||||
int i;
|
||||
for (i = 0; i < 4; i++) {
|
||||
field_0xbc[i] = -1;
|
||||
}
|
||||
|
||||
mCount = 0;
|
||||
for (i = 0; i < 3; i++) {
|
||||
int a_jntNum = param_1[i];
|
||||
if (a_jntNum < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
mDoMtx_stack_c::copy(i_mdl_p->i_getAnmMtx(a_jntNum));
|
||||
mDoMtx_stack_c::multVecZero(&field_0x04[mCount]);
|
||||
field_0xbc[i] = a_jntNum;
|
||||
field_0x94[i] = param_2[i];
|
||||
field_0x7c[i] = param_3[i];
|
||||
mCount++;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80454DE8-80454DEC 0033E8 0004+00 3/3 0/0 0/0 .sdata2 @3864 */
|
||||
@@ -111,20 +115,96 @@ 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 */
|
||||
// regswap, equivalent
|
||||
#ifdef NONMATCHING
|
||||
void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3,
|
||||
int param_4) {
|
||||
cXyz spA0;
|
||||
|
||||
Mtx sp90;
|
||||
cMtx_copy(param_3, sp90);
|
||||
sp90[2][3] = 0.0f;
|
||||
sp90[1][3] = 0.0f;
|
||||
sp90[0][3] = 0.0f;
|
||||
|
||||
mDoMtx_stack_c::copy(sp90);
|
||||
mDoMtx_stack_c::inverse();
|
||||
cMtx_copy(mDoMtx_stack_c::get(), sp90);
|
||||
|
||||
for (int i = 0; i < mCount; i++) {
|
||||
spA0 = 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]);
|
||||
}
|
||||
|
||||
spA0 = 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);
|
||||
|
||||
spA0 = 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]);
|
||||
|
||||
setPrm();
|
||||
update();
|
||||
|
||||
cXyz spAC;
|
||||
cXyz spB8;
|
||||
|
||||
f32 tmp = 1.0f;
|
||||
for (int i = mCount - 1; i >= 0 && param_4 == 1; i--) {
|
||||
spAC = param_0 - field_0x04[i];
|
||||
|
||||
if (!spAC.isZero()) {
|
||||
spAC.normalize();
|
||||
|
||||
spB8 = field_0x04[mCount] - field_0x04[i];
|
||||
if (!spB8.isZero()) {
|
||||
spB8.normalize();
|
||||
|
||||
s16 svar7 = -cM_atan2s(spAC.y, spAC.absXZ());
|
||||
s16 svar8 = cM_atan2s(spAC.x, spAC.z);
|
||||
|
||||
s16 svar9 = -cM_atan2s(spB8.y, spB8.absXZ());
|
||||
s16 svar10 = cM_atan2s(spB8.x, spB8.z);
|
||||
|
||||
field_0x4c[i].x += (s16)(tmp * (f32)(svar7 - svar9));
|
||||
field_0x4c[i].y += (s16)(tmp * (f32)(svar8 - svar10));
|
||||
|
||||
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;
|
||||
update();
|
||||
}
|
||||
|
||||
csXyz sp114(csXyz::Zero);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
sp114 += field_0x4c[i];
|
||||
field_0x64[i].x = sp114.x;
|
||||
field_0x64[i].y = sp114.y;
|
||||
field_0x64[i].z = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2,
|
||||
f32 (*param_3)[4], int param_4) {
|
||||
asm void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3,
|
||||
int param_4) {
|
||||
nofralloc
|
||||
#include "asm/d/d_npc_lib/action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80251B60-80251B64 24C4A0 0004+00 0/0 0/0 2/2 .text dbView__16dNpcLib_lookat_cFv */
|
||||
void dNpcLib_lookat_c::dbView() {
|
||||
/* empty function */
|
||||
}
|
||||
void dNpcLib_lookat_c::dbView() {}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80454E18-80454E20 003418 0004+04 1/1 0/0 0/0 .sdata2 @3970 */
|
||||
@@ -145,6 +225,29 @@ asm void dNpcLib_lookat_c::setPrm() {
|
||||
#pragma pop
|
||||
|
||||
/* 80251EF8-80252018 24C838 0120+00 1/1 0/0 0/0 .text update__16dNpcLib_lookat_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void dNpcLib_lookat_c::update() {
|
||||
cXyz sp50;
|
||||
csXyz sp58(csXyz::Zero);
|
||||
Mtx m;
|
||||
|
||||
for (int i = 0; i < mCount; i++) {
|
||||
mDoMtx_stack_c::XYZrotS(field_0x34[i]);
|
||||
cMtx_copy(mDoMtx_stack_c::get(), m);
|
||||
|
||||
mDoMtx_stack_c::transS(field_0x04[i]);
|
||||
sp58.x += field_0x4c[i].x;
|
||||
sp58.y += field_0x4c[i].y;
|
||||
|
||||
mDoMtx_stack_c::ZXYrotM(sp58);
|
||||
mDoMtx_stack_c::concat(m);
|
||||
|
||||
sp50.set(0.0f, 0.0f, field_0xac[i]);
|
||||
mDoMtx_stack_c::multVec(&sp50, &field_0x04[i + 1]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -153,24 +256,27 @@ asm void dNpcLib_lookat_c::update() {
|
||||
#include "asm/d/d_npc_lib/update__16dNpcLib_lookat_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80252018-80252094 24C958 007C+00 1/1 0/0 0/0 .text limitter__16dNpcLib_lookat_cFPssss */
|
||||
int dNpcLib_lookat_c::limitter(s16* param_0, s16 param_1, s16 param_2, s16 param_3) {
|
||||
int limit = param_1 + *param_0;
|
||||
int dNpcLib_lookat_c::limitter(s16* o_value, s16 param_1, s16 param_2, s16 param_3) {
|
||||
int limit = param_1 + *o_value;
|
||||
if (param_2 <= limit) {
|
||||
if (param_2 <= param_1) {
|
||||
*param_0 = 0;
|
||||
*o_value = 0;
|
||||
} else {
|
||||
*param_0 -= (s16)(limit - param_2);
|
||||
*o_value -= (s16)(limit - param_2);
|
||||
}
|
||||
}
|
||||
|
||||
if (limit <= param_3) {
|
||||
if (param_1 <= param_3) {
|
||||
*param_0 = 0;
|
||||
*o_value = 0;
|
||||
} else {
|
||||
*param_0 -= (s16)(limit - param_3);
|
||||
*o_value -= (s16)(limit - param_3);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user