Mark funcs with weak func order issues as Equivalent, fix a few other issues

This commit is contained in:
LagoLunatic
2025-01-23 21:52:41 -05:00
parent 067b47185b
commit ffe54e0bea
10 changed files with 41 additions and 74 deletions
+27 -27
View File
@@ -378,7 +378,7 @@ config.libs = [
Object(Matching, "f_op/f_op_actor.cpp", extra_cflags=["-sym off"]),
Object(Matching, "f_op/f_op_actor_iter.cpp"),
Object(Matching, "f_op/f_op_actor_tag.cpp"),
Object(Matching, "f_op/f_op_actor_mng.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(Equivalent, "f_op/f_op_actor_mng.cpp", extra_cflags=['-pragma "nosyminline on"']), # weak func order
Object(Matching, "f_op/f_op_camera.cpp"),
Object(Matching, "f_op/f_op_camera_mng.cpp"),
Object(Matching, "f_op/f_op_overlap.cpp"),
@@ -438,7 +438,7 @@ config.libs = [
"progress_category": "game",
"host": True,
"objects": [
Object(NonMatching, "d/d_stage.cpp"),
Object(Equivalent, "d/d_stage.cpp"), # weak func order
Object(NonMatching, "d/d_map.cpp"),
Object(Matching, "d/d_com_inf_game.cpp", extra_cflags=['-sym off']),
Object(Matching, "d/d_com_lib_game.cpp"),
@@ -463,7 +463,7 @@ config.libs = [
Object(Matching, "d/d_a_race_item_static.cpp"),
Object(NonMatching, "d/d_a_leaflift_static.cpp"),
Object(NonMatching, "d/d_demo.cpp"),
Object(Matching, "d/d_door.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(Equivalent, "d/d_door.cpp", extra_cflags=['-pragma "nosyminline on"']), # weak func order
Object(Matching, "d/d_resorce.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(Matching, "d/d_material.cpp"),
Object(Matching, "d/d_event.cpp"),
@@ -519,10 +519,10 @@ config.libs = [
Object(Matching, "d/d_salvage.cpp"),
Object(Matching, "d/d_snap.cpp"),
Object(Matching, "d/d_point_wind.cpp"),
Object(Matching, "d/actor/d_a_agb.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(Equivalent, "d/actor/d_a_agb.cpp", extra_cflags=['-pragma "nosyminline on"']), # weak func order
Object(Matching, "d/actor/d_a_arrow.cpp", extra_cflags=["-sym off"]),
Object(Matching, "d/actor/d_a_bg.cpp"),
Object(NonMatching, "d/actor/d_a_bomb.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(Equivalent, "d/actor/d_a_bomb.cpp", extra_cflags=['-pragma "nosyminline on"']), # weak func order
Object(Matching, "d/actor/d_a_bomb2.cpp"),
Object(NonMatching, "d/actor/d_a_boomerang.cpp"),
Object(Matching, "d/actor/d_a_dai_item.cpp", extra_cflags=["-sym off"]),
@@ -1392,7 +1392,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_leaves"),
ActorRel(NonMatching, "d_a_obj_lpalm"),
ActorRel(Matching, "d_a_obj_monument"),
ActorRel(NonMatching, "d_a_obj_movebox", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_obj_movebox", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_obj_mshokki"),
ActorRel(NonMatching, "d_a_obj_ohatch"),
ActorRel(NonMatching, "d_a_obj_otble"),
@@ -1408,13 +1408,13 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_tenmado"),
ActorRel(NonMatching, "d_a_obj_tide"),
ActorRel(Matching, "d_a_obj_timer"),
ActorRel(NonMatching, "d_a_obj_toripost", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_obj_toripost", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_obj_tousekiki"),
ActorRel(NonMatching, "d_a_obj_warpt"),
ActorRel(Matching, "d_a_obj_wood", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_pirate_flag"),
ActorRel(NonMatching, "d_a_race_item", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_rd", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_pirate_flag"), # weak func order
ActorRel(Equivalent, "d_a_race_item", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(Equivalent, "d_a_rd", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(Matching, "d_a_rectangle"),
ActorRel(NonMatching, "d_a_salvage"),
ActorRel(NonMatching, "d_a_sbox"),
@@ -1425,7 +1425,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_stone"),
ActorRel(NonMatching, "d_a_stone2"),
ActorRel(Matching, "d_a_swc00"),
ActorRel(NonMatching, "d_a_swhit0", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_swhit0", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(Matching, "d_a_swtdoor"),
ActorRel(NonMatching, "d_a_tag_attention"),
ActorRel(NonMatching, "d_a_tag_ba1"),
@@ -1471,7 +1471,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_kn"),
ActorRel(NonMatching, "d_a_kokiie"),
ActorRel(NonMatching, "d_a_ks"),
ActorRel(NonMatching, "d_a_kt"),
ActorRel(NonMatching, "d_a_kt"), # regalloc, weak func order
ActorRel(NonMatching, "d_a_mflft"),
ActorRel(NonMatching, "d_a_npc_cb1"),
ActorRel(NonMatching, "d_a_npc_md"),
@@ -1479,7 +1479,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_nzg"),
ActorRel(NonMatching, "d_a_obj_aygr"),
ActorRel(NonMatching, "d_a_obj_balancelift"),
ActorRel(NonMatching, "d_a_obj_barrier", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_obj_barrier", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_obj_bemos"),
ActorRel(NonMatching, "d_a_obj_canon"),
ActorRel(NonMatching, "d_a_obj_eff"),
@@ -1491,12 +1491,12 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_swheavy"),
ActorRel(NonMatching, "d_a_obj_swlight"),
ActorRel(NonMatching, "d_a_oq"),
ActorRel(NonMatching, "d_a_pedestal"),
ActorRel(Equivalent, "d_a_pedestal", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_saku"),
ActorRel(Matching, "d_a_seatag"),
ActorRel(NonMatching, "d_a_shand"),
ActorRel(NonMatching, "d_a_ship"),
ActorRel(NonMatching, "d_a_shop_item"),
ActorRel(Equivalent, "d_a_shop_item"), # weak func order
ActorRel(NonMatching, "d_a_sie_flag"),
ActorRel(NonMatching, "d_a_sitem"),
ActorRel(NonMatching, "d_a_ss"),
@@ -1529,7 +1529,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_bst"),
ActorRel(NonMatching, "d_a_btd"),
ActorRel(NonMatching, "d_a_bwd"),
ActorRel(NonMatching, "d_a_bwdg", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_bwdg", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_bwds"),
ActorRel(NonMatching, "d_a_daiocta"),
ActorRel(NonMatching, "d_a_daiocta_eye"),
@@ -1574,9 +1574,9 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_bmcon1"),
ActorRel(NonMatching, "d_a_npc_bms1"),
ActorRel(NonMatching, "d_a_npc_bmsw"),
ActorRel(NonMatching, "d_a_npc_bs1"),
ActorRel(NonMatching, "d_a_npc_bs1"), # regalloc, weak func order
ActorRel(NonMatching, "d_a_npc_btsw"),
ActorRel(NonMatching, "d_a_npc_btsw2", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_npc_btsw2", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_npc_co1"),
ActorRel(NonMatching, "d_a_npc_de1"),
ActorRel(NonMatching, "d_a_npc_ds1"),
@@ -1587,7 +1587,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_hr"),
ActorRel(NonMatching, "d_a_npc_jb1"),
ActorRel(NonMatching, "d_a_npc_ji1", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_npc_kamome", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_npc_kamome", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_npc_kf1"),
ActorRel(NonMatching, "d_a_npc_kg1"),
ActorRel(NonMatching, "d_a_npc_kg2"),
@@ -1599,16 +1599,16 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_mk"),
ActorRel(NonMatching, "d_a_npc_mn"),
ActorRel(NonMatching, "d_a_npc_mt"),
ActorRel(NonMatching, "d_a_npc_nz", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_npc_nz", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_npc_ob1"),
ActorRel(NonMatching, "d_a_npc_os", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_npc_os", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_npc_p1"),
ActorRel(NonMatching, "d_a_npc_p2"),
ActorRel(NonMatching, "d_a_npc_people"),
ActorRel(NonMatching, "d_a_npc_people", extra_cflags=['-pragma "nosyminline on"']), # regalloc, weak func order
ActorRel(NonMatching, "d_a_npc_pf1"),
ActorRel(NonMatching, "d_a_npc_photo"),
ActorRel(NonMatching, "d_a_npc_pm1"),
ActorRel(NonMatching, "d_a_npc_roten", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_npc_roten", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_npc_rsh1"),
ActorRel(NonMatching, "d_a_npc_sarace"),
ActorRel(NonMatching, "d_a_npc_sv"),
@@ -1639,7 +1639,7 @@ config.libs = [
ActorRel(Matching, "d_a_obj_eayogn"),
ActorRel(NonMatching, "d_a_obj_ebomzo"),
ActorRel(NonMatching, "d_a_obj_ekskz"),
ActorRel(NonMatching, "d_a_obj_eskban", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_obj_eskban", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(Matching, "d_a_obj_ferris", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_figure", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_firewall"),
@@ -1668,7 +1668,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_iceisland"),
ActorRel(NonMatching, "d_a_obj_jump"),
ActorRel(NonMatching, "d_a_obj_kanoke"),
ActorRel(NonMatching, "d_a_obj_ladder", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_obj_ladder", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_obj_light"),
ActorRel(NonMatching, "d_a_obj_mkie"),
ActorRel(NonMatching, "d_a_obj_mkiek"),
@@ -1678,7 +1678,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_msdan2"),
ActorRel(NonMatching, "d_a_obj_msdan_sub"),
ActorRel(NonMatching, "d_a_obj_msdan_sub2"),
ActorRel(NonMatching, "d_a_obj_mtest", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Equivalent, "d_a_obj_mtest", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_obj_nest"),
ActorRel(Matching, "d_a_obj_ojtree"),
ActorRel(NonMatching, "d_a_obj_ospbox"),
@@ -1711,7 +1711,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_pt"),
ActorRel(NonMatching, "d_a_pw"),
ActorRel(NonMatching, "d_a_pz"),
ActorRel(NonMatching, "d_a_sail"),
ActorRel(Equivalent, "d_a_sail", extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_salvage_tbox"),
ActorRel(Matching, "d_a_scene_change"),
ActorRel(NonMatching, "d_a_shutter"),
-2
View File
@@ -8,8 +8,6 @@
#include "JSystem/JMath/random.h"
#include "JSystem/JGeometry.h"
#include "JSystem/TPosition3.hh"
#include "SSystem/SComponent/c_xyz.h"
#include "SSystem/SComponent/c_sxyz.h"
#include "dolphin/gx/GXStruct.h"
#include "dolphin/mtx/mtx.h"
+6 -4
View File
@@ -16,8 +16,10 @@ class daNpc_Os_infiniteEcallBack_c : public dPa_levelEcallBack {
public:
void end();
void makeEmitter(u16, const cXyz*, const csXyz*, const cXyz*);
void execute(JPABaseEmitter*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void execute(JPABaseEmitter*) {}
void setup(JPABaseEmitter* pEmitter, const cXyz*, const csXyz*, s8) {
mpBaseEmitter = pEmitter;
}
JPABaseEmitter* getEmitter() { return mpBaseEmitter; }
@@ -41,8 +43,6 @@ public:
cXyz& getAttentionBasePos() { return field_0x754; }
s16 getBackbone_x() { return mJntCtrl.getBackbone_x(); }
s16 getBackbone_y() { return mJntCtrl.getBackbone_y(); }
f32 getBaseAnimeFrame() { return 0.0f; }
f32 getBaseAnimeFrameRate() { return 1.0f; }
s8 getCattleRoomNo() { return m_cattleRoomNo; }
cXyz& getEyePos() { return field_0x748; }
f32 getGroundY() { return mAcch.GetGroundH(); }
@@ -50,6 +50,8 @@ public:
s16 getHead_y() { return mJntCtrl.getHead_y(); }
MtxP getLeftHandMatrix() { return cullMtx; }
MtxP getRightHandMatrix() { return cullMtx; }
f32 getBaseAnimeFrameRate() { return 1.0f; }
f32 getBaseAnimeFrame() { return 0.0f; }
void incAttnSetCount() {
if(field_0x7A3 != 0xFF) {
field_0x7A3 += 1;
+6 -6
View File
@@ -486,15 +486,15 @@ public:
virtual MtxP getLeftHandMatrix() = 0;
virtual MtxP getRightHandMatrix() = 0;
virtual f32 getGroundY() = 0;
virtual s32 getTactMusic() const;// { return -1; }
virtual s32 getTactMusic() const { return -1; }
virtual int getTactTimerCancel() const { return 0; }
virtual BOOL checkPlayerGuard() const { return FALSE; }
virtual fopAc_ac_c* getGrabMissActor() { return NULL; }
virtual u32 checkPlayerFly() const;// { return 0; }
virtual u32 checkPlayerFly() const { return 0; }
virtual BOOL checkFrontRoll() const { return FALSE; }
virtual BOOL checkBottleSwing() const { return FALSE; }
virtual BOOL checkCutCharge() const { return FALSE; }
virtual BOOL getBokoFlamePos(cXyz*);// { return FALSE; }
virtual BOOL getBokoFlamePos(cXyz*) { return FALSE; }
virtual BOOL checkTactWait() const { return FALSE; }
virtual void setTactZev(fpc_ProcID, int, char*) {}
virtual void onDekuSpReturnFlg(u8) {}
@@ -503,18 +503,18 @@ public:
virtual f32 getBaseAnimeFrame() = 0;
virtual fpc_ProcID getItemID() const { return fpcM_ERROR_PROCESS_ID_e; }
virtual fpc_ProcID getThrowBoomerangID() const { return fpcM_ERROR_PROCESS_ID_e; }
virtual fpc_ProcID getGrabActorID() const;// { return fpcM_ERROR_PROCESS_ID_e; }
virtual fpc_ProcID getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
virtual BOOL checkGrabBarrel() { return FALSE; }
virtual u32 checkPlayerNoDraw() { return FALSE; }
virtual BOOL checkRopeTag() { return FALSE; }
virtual BOOL checkRopeReadyAnime() const { return FALSE; }
virtual void voiceStart(u32) {}
virtual void setOutPower(f32, s16, int) {}
virtual void onFrollCrashFlg(u32);// {}
virtual void onFrollCrashFlg(u32) {}
virtual MtxP getModelJointMtx(u16) { return NULL; }
virtual f32 getOldSpeedY() { return 0.0f; }
virtual BOOL setHookshotCarryOffset(fpc_ProcID, const cXyz*) { return FALSE; }
virtual void setPlayerPosAndAngle(cXyz*, s16);// {}
virtual void setPlayerPosAndAngle(cXyz*, s16) {}
virtual void setPlayerPosAndAngle(cXyz*, csXyz*) {}
virtual void setPlayerPosAndAngle(MtxP) {}
virtual BOOL setThrowDamage(cXyz*, s16, f32, f32, int) { return FALSE; }
+1 -1
View File
@@ -42,4 +42,4 @@ public:
STATIC_ASSERT(sizeof(dBgS_MoveBgActor) == 0x2C8);
#endif /* D_BG_S_MOVEBG_ACTOR_H */
#endif /* D_BG_S_MOVEBG_ACTOR_H */
-8
View File
@@ -3,14 +3,6 @@
// Translation Unit: d_a_arrow.cpp
//
// Fakematch: This is supposed to be a weak function defined in d_a_player.h that wind up at the end of the
// d_a_agb TU. But weak function ordering is currently broken, so to get d_a_agb to match, we define it
// here (at the start of the *next* TU after d_a_agb) so that it gets placed into the correct spot in
// the DOL, even though this is an ugly hack and they're now in the wrong translation unit instead.
#include "d/actor/d_a_player.h"
u32 daPy_py_c::checkPlayerFly() const { return 0; }
#include "d/d_procname.h"
#include "d/actor/d_a_arrow.h"
#include "m_Do/m_Do_mtx.h"
#include "d/d_com_inf_game.h"
+1 -1
View File
@@ -623,7 +623,7 @@ u16 daNpc_Nz_c::next_msgStatus(u32* pMsgNo) {
if(dComIfGs_checkGetItem(dItem_BOMB_BAG_e)) {
temp += 1;
}
if(dComIfGs_getItem(dItem_BOW_e) != dItem_NONE_e) {
if(dComIfGs_getItem(dInvSlot_BOW_e) != dItem_NONE_e) {
temp += 1;
}
-10
View File
@@ -2405,16 +2405,6 @@ void daNpc_Os_infiniteEcallBack_c::makeEmitter(u16 param_1, const cXyz* param_2,
dComIfGp_particle_set(param_1, param_2, param_3, param_4, -1, this);
}
/* 00007A10-00007A14 .text execute__28daNpc_Os_infiniteEcallBack_cFP14JPABaseEmitter */
void daNpc_Os_infiniteEcallBack_c::execute(JPABaseEmitter*) {
return;
}
/* 00007A14-00007A1C .text setup__28daNpc_Os_infiniteEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void daNpc_Os_infiniteEcallBack_c::setup(JPABaseEmitter* pEmitter, const cXyz*, const csXyz*, signed char) {
mpBaseEmitter = pEmitter;
}
static actor_method_class l_daNpc_Os_Method = {
(process_method_func)daNpc_Os_Create,
(process_method_func)daNpc_Os_Delete,
-7
View File
@@ -3,13 +3,6 @@
// Translation Unit: d_resorce.cpp
//
// Fakematch: This is supposed to be a weak function defined in d_a_player.h that wind up at the end of the
// d_door TU. But weak function ordering is currently broken, so to get d_door to match, we define it
// here (at the start of the *next* TU after d_door) so that it gets placed into the correct spot in
// the DOL, even though this is an ugly hack and they're now in the wrong translation unit instead.
#include "d/actor/d_a_player.h"
void daPy_py_c::setPlayerPosAndAngle(cXyz*, s16) { }
#include "d/d_resorce.h"
#include "d/d_com_inf_game.h"
#include "m_Do/m_Do_printf.h"
-8
View File
@@ -3,14 +3,6 @@
// Translation Unit: f_op_camera.cpp
//
// Fakematch: These are supposed to be weak functions defined in d_a_player.h that wind up at the end of the
// f_op_actor_mng TU. But weak function ordering is currently broken, so to get f_op_actor_mng to match, we define them
// here (at the start of the *next* TU after f_op_actor_mng) so that they get placed into the correct spot in
// the DOL, even though this is an ugly hack and they're now in the wrong translation unit instead.
#include "d/actor/d_a_player.h"
void daPy_py_c::onFrollCrashFlg(u32) {}
fpc_ProcID daPy_py_c::getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
#include "f_op/f_op_camera.h"
#include "f_op/f_op_draw_tag.h"
#include "dolphin/types.h"