Skip to content

Commit

Permalink
Mark funcs with weak func order issues as Equivalent, fix a few other…
Browse files Browse the repository at this point in the history
… issues
  • Loading branch information
LagoLunatic committed Jan 24, 2025
1 parent 067b471 commit ffe54e0
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 74 deletions.
54 changes: 27 additions & 27 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -438,7 +438,7 @@ def MatchingFor(*versions):
"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"),
Expand All @@ -463,7 +463,7 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -519,10 +519,10 @@ def MatchingFor(*versions):
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"]),
Expand Down Expand Up @@ -1392,7 +1392,7 @@ def MatchingFor(*versions):
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"),
Expand All @@ -1408,13 +1408,13 @@ def MatchingFor(*versions):
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"),
Expand All @@ -1425,7 +1425,7 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -1471,15 +1471,15 @@ def MatchingFor(*versions):
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"),
ActorRel(NonMatching, "d_a_npc_so"),
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"),
Expand All @@ -1491,12 +1491,12 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -1529,7 +1529,7 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -1574,9 +1574,9 @@ def MatchingFor(*versions):
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"),
Expand All @@ -1587,7 +1587,7 @@ def MatchingFor(*versions):
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"),
Expand All @@ -1599,16 +1599,16 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -1639,7 +1639,7 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -1668,7 +1668,7 @@ def MatchingFor(*versions):
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"),
Expand All @@ -1678,7 +1678,7 @@ def MatchingFor(*versions):
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"),
Expand Down Expand Up @@ -1711,7 +1711,7 @@ def MatchingFor(*versions):
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"),
Expand Down
2 changes: 0 additions & 2 deletions include/JSystem/JParticle/JPAEmitter.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
10 changes: 6 additions & 4 deletions include/d/actor/d_a_npc_os.h
Original file line number Diff line number Diff line change
Expand Up @@ -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; }

Expand All @@ -41,15 +43,15 @@ class daNpc_Os_c : public daPy_npc_c {
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(); }
s16 getHead_x() { return mJntCtrl.getHead_x(); }
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;
Expand Down
12 changes: 6 additions & 6 deletions include/d/actor/d_a_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -486,15 +486,15 @@ class daPy_py_c : public fopAc_ac_c {
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) {}
Expand All @@ -503,18 +503,18 @@ class daPy_py_c : public fopAc_ac_c {
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; }
Expand Down
2 changes: 1 addition & 1 deletion include/d/d_bg_s_movebg_actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ class dBgS_MoveBgActor : public fopAc_ac_c {

STATIC_ASSERT(sizeof(dBgS_MoveBgActor) == 0x2C8);

#endif /* D_BG_S_MOVEBG_ACTOR_H */
#endif /* D_BG_S_MOVEBG_ACTOR_H */
8 changes: 0 additions & 8 deletions src/d/actor/d_a_arrow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion src/d/actor/d_a_npc_nz.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
10 changes: 0 additions & 10 deletions src/d/actor/d_a_npc_os.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
7 changes: 0 additions & 7 deletions src/d/d_resorce.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
8 changes: 0 additions & 8 deletions src/f_op/f_op_camera.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit ffe54e0

Please sign in to comment.