diff --git a/configure.py b/configure.py index bf32cafa..74a34906 100644 --- a/configure.py +++ b/configure.py @@ -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"), @@ -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"), @@ -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"), @@ -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"]), @@ -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"), @@ -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"), @@ -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"), @@ -1471,7 +1471,7 @@ 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"), @@ -1479,7 +1479,7 @@ def MatchingFor(*versions): 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 @@ 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"), @@ -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"), @@ -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"), @@ -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"), @@ -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"), @@ -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"), @@ -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"), @@ -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"), @@ -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"), diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 0c776774..c241a584 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -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" diff --git a/include/d/actor/d_a_npc_os.h b/include/d/actor/d_a_npc_os.h index f5c8a03b..22bfb600 100644 --- a/include/d/actor/d_a_npc_os.h +++ b/include/d/actor/d_a_npc_os.h @@ -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 @@ 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(); } @@ -50,6 +50,8 @@ class daNpc_Os_c : public daPy_npc_c { 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; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index ab06eb5d..d6f5bf97 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -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) {} @@ -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; } diff --git a/include/d/d_bg_s_movebg_actor.h b/include/d/d_bg_s_movebg_actor.h index 9eb749cc..c1860a9f 100644 --- a/include/d/d_bg_s_movebg_actor.h +++ b/include/d/d_bg_s_movebg_actor.h @@ -42,4 +42,4 @@ class dBgS_MoveBgActor : public fopAc_ac_c { STATIC_ASSERT(sizeof(dBgS_MoveBgActor) == 0x2C8); -#endif /* D_BG_S_MOVEBG_ACTOR_H */ \ No newline at end of file +#endif /* D_BG_S_MOVEBG_ACTOR_H */ diff --git a/src/d/actor/d_a_arrow.cpp b/src/d/actor/d_a_arrow.cpp index 2fb2739f..b1ec785f 100644 --- a/src/d/actor/d_a_arrow.cpp +++ b/src/d/actor/d_a_arrow.cpp @@ -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" diff --git a/src/d/actor/d_a_npc_nz.cpp b/src/d/actor/d_a_npc_nz.cpp index abf596dc..195949d3 100644 --- a/src/d/actor/d_a_npc_nz.cpp +++ b/src/d/actor/d_a_npc_nz.cpp @@ -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; } diff --git a/src/d/actor/d_a_npc_os.cpp b/src/d/actor/d_a_npc_os.cpp index 28123e84..ba181ae7 100644 --- a/src/d/actor/d_a_npc_os.cpp +++ b/src/d/actor/d_a_npc_os.cpp @@ -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, diff --git a/src/d/d_resorce.cpp b/src/d/d_resorce.cpp index 46a8b443..984361bc 100644 --- a/src/d/d_resorce.cpp +++ b/src/d/d_resorce.cpp @@ -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" diff --git a/src/f_op/f_op_camera.cpp b/src/f_op/f_op_camera.cpp index d776f860..ff3305ca 100644 --- a/src/f_op/f_op_camera.cpp +++ b/src/f_op/f_op_camera.cpp @@ -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"