diff --git a/config/GZ2E01/symbols.txt b/config/GZ2E01/symbols.txt index a8223ad7bf2..beff6feffed 100644 --- a/config/GZ2E01/symbols.txt +++ b/config/GZ2E01/symbols.txt @@ -21720,8 +21720,11 @@ struct_80450C86 = .sbss:0x80450C86; // type:object size:0x1 scope:global align:1 struct_80450C87 = .sbss:0x80450C87; // type:object size:0x1 scope:global align:1 mDoDvdErr_initialized = .sbss:0x80450C88; // type:object size:0x1 scope:global align:1 data:byte sConsole = .sbss:0x80450C90; // type:object size:0x4 scope:local align:4 data:4byte -struct_80450C98 = .sbss:0x80450C98; // type:object size:0x4 scope:global align:4 -cDmr_SkipInfo = .sbss:0x80450C9C; // type:object size:0x1 scope:global align:1 +cDmr_SkipInfo = .sbss:0x80450C98; // type:object size:0x1 scope:global align:1 +data_80450C99 = .sbss:0x80450C99; // type:object size:0x1 scope:global align:1 +data_80450C9A = .sbss:0x80450C9A; // type:object size:0x1 scope:global align:1 +data_80450C9B = .sbss:0x80450C9B; // type:object size:0x1 scope:global align:1 +data_80450C9C = .sbss:0x80450C9C; // type:object size:0x1 scope:global align:1 data_80450C9D = .sbss:0x80450C9D; // type:object size:0x1 data_80450C9E = .sbss:0x80450C9E; // type:object size:0x1 data_80450C9F = .sbss:0x80450C9F; // type:object size:0x1 diff --git a/configure.py b/configure.py index 37e4bf79f1c..3d260c42d77 100644 --- a/configure.py +++ b/configure.py @@ -344,7 +344,7 @@ config.libs = [ Object(NonMatching, "m_Do/m_Do_printf.cpp"), Object(Matching, "m_Do/m_Do_audio.cpp"), Object(Matching, "m_Do/m_Do_controller_pad.cpp"), - Object(Equivalent, "m_Do/m_Do_graphic.cpp"), + Object(Equivalent, "m_Do/m_Do_graphic.cpp"), # weak func order Object(NonMatching, "m_Do/m_Do_machine.cpp"), Object(Matching, "m_Do/m_Do_mtx.cpp"), Object(NonMatching, "m_Do/m_Do_ext.cpp"), @@ -498,7 +498,7 @@ config.libs = [ Object(Matching, "d/d_bg_w_base.cpp", extra_cflags=['-pragma "nosyminline on"']), Object(NonMatching, "d/d_bg_w_kcol.cpp"), Object(Matching, "d/d_bg_w_sv.cpp"), - Object(Equivalent, "d/d_cc_d.cpp"), + Object(Equivalent, "d/d_cc_d.cpp"), # weak func order Object(Matching, "d/d_cc_mass_s.cpp", extra_cflags=['-pragma "nosyminline on"']), Object(NonMatching, "d/d_cc_s.cpp"), Object(Matching, "d/d_cc_uty.cpp"), @@ -528,7 +528,7 @@ config.libs = [ Object(Matching, "d/d_file_sel_info.cpp"), Object(Matching, "d/d_bright_check.cpp"), Object(NonMatching, "d/d_scope.cpp", extra_cflags=['-pragma "nosyminline on"']), - Object(Equivalent, "d/d_select_cursor.cpp"), + Object(Matching, "d/d_select_cursor.cpp"), Object(Matching, "d/d_select_icon.cpp"), Object(Matching, "d/d_shop_camera.cpp"), Object(Matching, "d/d_shop_item_ctrl.cpp"), @@ -553,7 +553,7 @@ config.libs = [ Object(NonMatching, "d/d_menu_letter.cpp", extra_cflags=['-pragma "nosyminline on"']), Object(Matching, "d/d_menu_option.cpp"), Object(Matching, "d/d_menu_ring.cpp"), - Object(Equivalent, "d/d_menu_save.cpp"), + Object(Equivalent, "d/d_menu_save.cpp"), # missing 0x30 bytes of padding between vtables, likely some abstract base class vtable that gets stripped out Object(Matching, "d/d_menu_skill.cpp"), Object(Matching, "d/d_menu_window_HIO.cpp"), Object(NonMatching, "d/d_menu_window.cpp"), @@ -668,7 +668,7 @@ config.libs = [ JSystemLib( "JFramework", [ - Object(Equivalent, "JSystem/JFramework/JFWSystem.cpp"), + Object(Equivalent, "JSystem/JFramework/JFWSystem.cpp"), # regalloc Object(Matching, "JSystem/JFramework/JFWDisplay.cpp"), ], ), @@ -693,7 +693,7 @@ config.libs = [ Object(Matching, "JSystem/JParticle/JPAKeyBlock.cpp"), Object(Matching, "JSystem/JParticle/JPATexture.cpp"), Object(Matching, "JSystem/JParticle/JPAResourceLoader.cpp"), - Object(Equivalent, "JSystem/JParticle/JPAEmitterManager.cpp"), + Object(Equivalent, "JSystem/JParticle/JPAEmitterManager.cpp", extra_cflags=['-pragma "nosyminline off"']), # weak func order Object(Matching, "JSystem/JParticle/JPAEmitter.cpp"), Object(NonMatching, "JSystem/JParticle/JPAParticle.cpp"), Object(Matching, "JSystem/JParticle/JPAMath.cpp"), @@ -927,7 +927,7 @@ config.libs = [ [ Object(NonMatching, "JSystem/JGadget/binary.cpp"), Object(NonMatching, "JSystem/JGadget/linklist.cpp"), - Object(Equivalent, "JSystem/JGadget/std-vector.cpp"), # just weak order + Object(Equivalent, "JSystem/JGadget/std-vector.cpp", extra_cflags=['-pragma "nosyminline off"']), # just weak order ], ), JSystemLib( @@ -947,7 +947,7 @@ config.libs = [ Object(Matching, "JSystem/JUtility/JUTDirectPrint.cpp"), Object(Matching, "JSystem/JUtility/JUTAssert.cpp"), Object(Matching, "JSystem/JUtility/JUTVideo.cpp"), - Object(Equivalent, "JSystem/JUtility/JUTXfb.cpp"), + Object(Matching, "JSystem/JUtility/JUTXfb.cpp"), Object(Matching, "JSystem/JUtility/JUTFader.cpp"), Object(Matching, "JSystem/JUtility/JUTProcBar.cpp", extra_cflags=['-pragma "nosyminline off"']), Object(Matching, "JSystem/JUtility/JUTConsole.cpp"), @@ -1005,7 +1005,7 @@ config.libs = [ Object(Matching, "JSystem/J3DGraphAnimator/J3DModelData.cpp", extra_cflags=['-pragma "nosyminline off"']), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp"), Object(Matching, "JSystem/J3DGraphAnimator/J3DModel.cpp"), - Object(Equivalent, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"), + Object(Matching, "JSystem/J3DGraphAnimator/J3DAnimation.cpp", extra_cflags=['-pragma "nosyminline off"']), Object(Matching, "JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp"), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DSkinDeform.cpp"), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DCluster.cpp"), @@ -1417,8 +1417,8 @@ config.libs = [ ActorRel(Matching, "d_a_disappear"), ActorRel(NonMatching, "d_a_mg_rod"), ActorRel(NonMatching, "d_a_midna"), - ActorRel(Equivalent, "d_a_nbomb"), - ActorRel(Equivalent, "d_a_obj_life_container"), # vtable ordering + ActorRel(Equivalent, "d_a_nbomb"), # weak func order + ActorRel(Matching, "d_a_obj_life_container"), ActorRel(NonMatching, "d_a_obj_yousei"), ActorRel(NonMatching, "d_a_spinner"), ActorRel(Matching, "d_a_suspend"), @@ -1518,8 +1518,8 @@ config.libs = [ ActorRel(NonMatching, "d_a_b_oh"), ActorRel(Matching, "d_a_b_oh2"), ActorRel(NonMatching, "d_a_b_tn"), - ActorRel(Equivalent, "d_a_b_yo"), - ActorRel(Equivalent, "d_a_b_yo_ice"), + ActorRel(Equivalent, "d_a_b_yo"), # weak func order + ActorRel(Equivalent, "d_a_b_yo_ice"), # weak func order ActorRel(Matching, "d_a_b_zant"), ActorRel(Matching, "d_a_b_zant_magic"), ActorRel(Matching, "d_a_b_zant_mobile"), @@ -1530,14 +1530,14 @@ config.libs = [ ActorRel(Matching, "d_a_coach_fire"), ActorRel(NonMatching, "d_a_cow"), ActorRel(NonMatching, "d_a_cstatue"), - ActorRel(Equivalent, "d_a_do"), + ActorRel(Equivalent, "d_a_do"), # Z2SoundObjSimple dtor ActorRel(Matching, "d_a_door_boss"), ActorRel(Matching, "d_a_door_bossL5"), - ActorRel(Equivalent, "d_a_door_mbossL1"), + ActorRel(Matching, "d_a_door_mbossL1"), ActorRel(Matching, "d_a_door_push"), ActorRel(NonMatching, "d_a_e_ai"), ActorRel(Matching, "d_a_e_arrow"), - ActorRel(Equivalent, "d_a_e_ba"), + ActorRel(Equivalent, "d_a_e_ba"), # weak func order ActorRel(NonMatching, "d_a_e_bee"), ActorRel(NonMatching, "d_a_e_bg"), ActorRel(NonMatching, "d_a_e_bi"), @@ -1556,7 +1556,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_e_fb"), ActorRel(NonMatching, "d_a_e_fk"), ActorRel(NonMatching, "d_a_e_fs"), - ActorRel(Equivalent, "d_a_e_fz"), + ActorRel(Equivalent, "d_a_e_fz"), # weak func order ActorRel(NonMatching, "d_a_e_gb"), ActorRel(NonMatching, "d_a_e_ge"), ActorRel(NonMatching, "d_a_e_gi"), @@ -1617,7 +1617,7 @@ config.libs = [ ActorRel(Matching, "d_a_e_yd_leaf"), ActorRel(NonMatching, "d_a_e_yg"), ActorRel(NonMatching, "d_a_e_yh"), - ActorRel(Equivalent, "d_a_e_yk"), + ActorRel(Equivalent, "d_a_e_yk"), # weak func order ActorRel(NonMatching, "d_a_e_ym"), ActorRel(Matching, "d_a_e_ym_tag"), ActorRel(NonMatching, "d_a_e_ymb"), @@ -1728,7 +1728,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_shaman"), ActorRel(NonMatching, "d_a_npc_shoe"), ActorRel(NonMatching, "d_a_npc_shop0"), - ActorRel(Equivalent, "d_a_npc_shop_maro"), + ActorRel(Equivalent, "d_a_npc_shop_maro"), # daNpcT_c base functions missing ActorRel(NonMatching, "d_a_npc_sola"), ActorRel(NonMatching, "d_a_npc_soldierA"), ActorRel(NonMatching, "d_a_npc_soldierB"), @@ -1783,7 +1783,7 @@ config.libs = [ ActorRel(Matching, "d_a_obj_bsGate"), ActorRel(Matching, "d_a_obj_bubblePilar"), ActorRel(Matching, "d_a_obj_catdoor"), - ActorRel(Equivalent, "d_a_obj_cb"), + ActorRel(Matching, "d_a_obj_cb"), ActorRel(NonMatching, "d_a_obj_cblock"), ActorRel(Matching, "d_a_obj_cdoor"), ActorRel(Matching, "d_a_obj_chandelier"), @@ -1798,7 +1798,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_crvlh_up"), ActorRel(Matching, "d_a_obj_crvsteel"), ActorRel(Matching, "d_a_obj_crystal"), - ActorRel(Equivalent, "d_a_obj_cwall"), + ActorRel(Equivalent, "d_a_obj_cwall"), # weak func order ActorRel(Matching, "d_a_obj_damCps"), ActorRel(Matching, "d_a_obj_dan"), ActorRel(Matching, "d_a_obj_digholl"), @@ -1830,7 +1830,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_gomikabe"), ActorRel(NonMatching, "d_a_obj_gra2"), ActorRel(Matching, "d_a_obj_graWall"), - ActorRel(Equivalent, "d_a_obj_gra_rock"), + ActorRel(Matching, "d_a_obj_gra_rock"), ActorRel(Matching, "d_a_obj_grave_stone"), ActorRel(Matching, "d_a_obj_groundwater"), ActorRel(NonMatching, "d_a_obj_grz_rock"), @@ -1985,7 +1985,7 @@ config.libs = [ ActorRel(Matching, "d_a_obj_sekizo"), ActorRel(NonMatching, "d_a_obj_sekizoa"), ActorRel(Matching, "d_a_obj_shield"), - ActorRel(Equivalent, "d_a_obj_sm_door"), + ActorRel(Equivalent, "d_a_obj_sm_door"), # vtable order ActorRel(NonMatching, "d_a_obj_smallkey"), ActorRel(NonMatching, "d_a_obj_smgdoor"), ActorRel(Matching, "d_a_obj_smoke"), @@ -1998,7 +1998,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_ss_drink"), ActorRel(Matching, "d_a_obj_ss_item"), ActorRel(NonMatching, "d_a_obj_stairBlock"), - ActorRel(Equivalent, "d_a_obj_stone"), + ActorRel(Matching, "d_a_obj_stone"), ActorRel(NonMatching, "d_a_obj_stopper"), ActorRel(NonMatching, "d_a_obj_stopper2"), ActorRel(Matching, "d_a_obj_suisya"), @@ -2008,12 +2008,12 @@ config.libs = [ ActorRel(Matching, "d_a_obj_swBallC"), ActorRel(NonMatching, "d_a_obj_swLight"), ActorRel(NonMatching, "d_a_obj_swchain"), - ActorRel(Equivalent, "d_a_obj_swhang"), + ActorRel(Equivalent, "d_a_obj_swhang"), # vtable order ActorRel(NonMatching, "d_a_obj_sword"), ActorRel(NonMatching, "d_a_obj_swpush2"), ActorRel(Matching, "d_a_obj_swspinner"), ActorRel(Matching, "d_a_obj_swturn"), - ActorRel(Equivalent, "d_a_obj_syRock"), + ActorRel(Equivalent, "d_a_obj_syRock"), # weak func order ActorRel(NonMatching, "d_a_obj_szbridge"), ActorRel(NonMatching, "d_a_obj_taFence"), ActorRel(Matching, "d_a_obj_table"), @@ -2045,7 +2045,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_warp_kbrg"), ActorRel(NonMatching, "d_a_obj_warp_obrg"), ActorRel(NonMatching, "d_a_obj_waterGate"), - ActorRel(Equivalent, "d_a_obj_waterPillar"), + ActorRel(Equivalent, "d_a_obj_waterPillar"), # vtable order ActorRel(Matching, "d_a_obj_waterfall"), ActorRel(NonMatching, "d_a_obj_wchain"), ActorRel(Matching, "d_a_obj_wdStick"), @@ -2064,7 +2064,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_zdoor"), ActorRel(NonMatching, "d_a_obj_zrTurara"), ActorRel(Matching, "d_a_obj_zrTuraraRock"), - ActorRel(Equivalent, "d_a_obj_zraMark"), + ActorRel(Equivalent, "d_a_obj_zraMark"), # weak func order ActorRel(Matching, "d_a_obj_zra_freeze"), ActorRel(NonMatching, "d_a_obj_zra_rock"), ActorRel(NonMatching, "d_a_passer_mng"), diff --git a/include/JSystem/J2DGraph/J2DTevs.h b/include/JSystem/J2DGraph/J2DTevs.h index d7a1949a11a..3b91bf4e627 100644 --- a/include/JSystem/J2DGraph/J2DTevs.h +++ b/include/JSystem/J2DGraph/J2DTevs.h @@ -187,6 +187,7 @@ public: } J2DIndTexCoordScale& operator=(const J2DIndTexCoordScaleInfo& info) { mInfo = info; + return *this; } /* 802EA0CC */ void load(u8); diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h index 4357fab1f41..c6ee07af1f9 100644 --- a/include/SSystem/SComponent/c_lib.h +++ b/include/SSystem/SComponent/c_lib.h @@ -70,6 +70,11 @@ inline T cLib_maxLimit(T val, T max) { return (T)ret; } +template +T cLib_getRndValue(T min, T range) { + return (T)(min + cM_rndF((f32)range)); +} + template T cLib_calcTimer(T* value) { if (*(T*)value != 0) { @@ -78,11 +83,6 @@ T cLib_calcTimer(T* value) { return *value; } -template -T cLib_getRndValue(T min, T range) { - return (T)(min + cM_rndF((f32)range)); -} - void MtxInit(void); void MtxTrans(f32, f32, f32, u8); void MtxScale(f32, f32, f32, u8); diff --git a/include/d/actor/d_a_obj_life_container.h b/include/d/actor/d_a_obj_life_container.h index f8e50269fa7..e1526401dde 100644 --- a/include/d/actor/d_a_obj_life_container.h +++ b/include/d/actor/d_a_obj_life_container.h @@ -46,8 +46,8 @@ public: /* 804CE19C */ int draw(); /* 804CE214 */ int _delete(); - /* 804CE1F0 */ virtual void setListStart(); /* 804CCFD8 */ virtual int __CreateHeap(); + /* 804CE1F0 */ virtual void setListStart(); bool chkStatus(u8 i_status) { return mStatus == i_status; } void setStatus(u8 i_status) { mStatus = i_status; } diff --git a/include/d/actor/d_a_obj_volcball.h b/include/d/actor/d_a_obj_volcball.h index ca7155796d4..a69a557f874 100644 --- a/include/d/actor/d_a_obj_volcball.h +++ b/include/d/actor/d_a_obj_volcball.h @@ -107,8 +107,8 @@ public: /* 80D23904 */ int draw(); /* 80D23A0C */ int _delete(); - /* 80D23B24 */ virtual ~daObjVolcBall_c() {} /* 80D22DDC */ virtual BOOL eventStart(); + /* 80D23B24 */ virtual ~daObjVolcBall_c() {} u8 getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } u8 getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); } diff --git a/include/d/d_menu_save.h b/include/d/d_menu_save.h index 3998edae21c..ec9156f8273 100644 --- a/include/d/d_menu_save.h +++ b/include/d/d_menu_save.h @@ -328,11 +328,11 @@ private: /* 0x0132 */ u8 mNoYesWakuEndAlpha[2]; /* 0x0134 */ u8 mNoYesWakuAnmTimer[2]; /* 0x0138 */ CPaneMgr* mpNoYesTxt[2]; - /* 0x0140 */ J2DAnmColorKey* mpFileWakuAnm; + /* 0x0140 */ J2DAnmColor* mpFileWakuAnm; /* 0x0144 */ int mFileWakuAnmFrame; /* 0x0148 */ J2DAnmTextureSRTKey* mpFileWakuRotAnm; /* 0x014C */ int mFileWakuRotAnmFrame; - /* 0x0150 */ J2DAnmColorKey* field_0x150; + /* 0x0150 */ J2DAnmColor* field_0x150; /* 0x0154 */ int field_0x154; /* 0x0158 */ J2DAnmTextureSRTKey* field_0x158; /* 0x015C */ int field_0x15c; diff --git a/include/d/d_select_icon.h b/include/d/d_select_icon.h index 60800f34b51..577da88c2b3 100644 --- a/include/d/d_select_icon.h +++ b/include/d/d_select_icon.h @@ -18,7 +18,7 @@ public: /* 80195A3C */ void animation(); /* 80195B40 */ void setAlpha(u8); /* 80195B70 */ void setPos(J2DPane*, f32, f32); - virtual ~dSelect_icon_c() {} + virtual ~dSelect_icon_c(); // must be declared but not defined to match? void drawSelf() { field_0x4.draw(); diff --git a/include/dolphin/gx/GXFrameBuf.h b/include/dolphin/gx/GXFrameBuf.h index 96df637f19c..5e28a80be1a 100644 --- a/include/dolphin/gx/GXFrameBuf.h +++ b/include/dolphin/gx/GXFrameBuf.h @@ -13,7 +13,7 @@ void GXSetDispCopyDst(u16 arg0, u16 arg1); void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt format, GXBool useMIPmap); void GXSetDispCopyFrame2Field(GXCopyMode mode); void GXSetCopyClamp(GXFBClamp clamp); -u16 GXGetNumXfbLines(const u16 efbHeight, f32 yScale); +u16 GXGetNumXfbLines(u16 efbHeight, f32 yScale); f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height); u32 GXSetDispCopyYScale(f32 y_scale); void GXSetCopyClear(GXColor color, u32 clear_z); diff --git a/src/JSystem/JUtility/JUTXfb.cpp b/src/JSystem/JUtility/JUTXfb.cpp index 6032693d36a..0c0c9a00326 100644 --- a/src/JSystem/JUtility/JUTXfb.cpp +++ b/src/JSystem/JUtility/JUTXfb.cpp @@ -55,7 +55,6 @@ void JUTXfb::common_init(int bufNum) { /* 802E5260-802E5308 2DFBA0 00A8+00 1/1 0/0 0/0 .text * __ct__6JUTXfbFPC16_GXRenderModeObjP7JKRHeapQ26JUTXfb10EXfbNumber */ -// NONMATCHING - regswap, equivalent JUTXfb::JUTXfb(GXRenderModeObj const* pObj, JKRHeap* pHeap, JUTXfb::EXfbNumber xfbNum) { common_init(xfbNum); @@ -63,7 +62,7 @@ JUTXfb::JUTXfb(GXRenderModeObj const* pObj, JKRHeap* pHeap, JUTXfb::EXfbNumber x initiate(pObj->fb_width, pObj->xfb_height, pHeap, xfbNum); } else { u16 fb_width = JUTVideo::getManager()->getRenderMode()->fb_width; - u16 efb_height = JUTVideo::getManager()->getRenderMode()->efb_height; + u16 efb_height = (u32)JUTVideo::getManager()->getRenderMode()->efb_height; u16 xfb_height = JUTVideo::getManager()->getRenderMode()->xfb_height; f32 scale_factor = GXGetYScaleFactor(efb_height, xfb_height); u16 xfb_lines = GXGetNumXfbLines(efb_height, scale_factor); diff --git a/src/c/c_damagereaction.cpp b/src/c/c_damagereaction.cpp index 09611ad4ca6..a8d31aa1379 100644 --- a/src/c/c_damagereaction.cpp +++ b/src/c/c_damagereaction.cpp @@ -10,11 +10,13 @@ /* ############################################################################################## */ /* 80450C98-80450C9C -00001 0004+00 0/0 0/0 50/50 .sbss None */ -extern u8 struct_80450C98[4]; -u8 struct_80450C98[4]; +u8 cDmr_SkipInfo; +u8 data_80450C99; +u8 data_80450C9A; +u8 data_80450C9B; /* 80450C9C-80450CA0 -00001 0004+00 0/0 0/0 6/6 .sbss None */ -u8 cDmr_SkipInfo; +u8 data_80450C9C; u8 data_80450C9D; u8 data_80450C9E; u8 data_80450C9F; diff --git a/src/d/actor/d_a_b_yo.cpp b/src/d/actor/d_a_b_yo.cpp index f0a93f3919a..1b6b5c611cd 100644 --- a/src/d/actor/d_a_b_yo.cpp +++ b/src/d/actor/d_a_b_yo.cpp @@ -1014,7 +1014,7 @@ void daB_YO_c::executeOpening() { } break; - case 14: + case 15: cam_pos.set(51.0f, 207.0f, -2082.0f); cLib_chasePos(&mCamCenter, cam_pos, mCamCenterSpeed); cam_pos.set(51.0f, 207.0f, -1562.0f); diff --git a/src/d/actor/d_a_do.cpp b/src/d/actor/d_a_do.cpp index 5343bb0c787..297e218aa10 100644 --- a/src/d/actor/d_a_do.cpp +++ b/src/d/actor/d_a_do.cpp @@ -558,7 +558,7 @@ static void do_walk(do_class* i_this) { i_this->mTailWagTarget = 1000.0f; switch (i_this->mMode) { - case 11: + case -1: i_this->mTargetPos = i_this->home.pos; if (i_this->speedF >= l_HIO.mRunSpeed) { i_this->mAnmSpeed = 4.0f; @@ -571,7 +571,7 @@ static void do_walk(do_class* i_this) { i_this->mMode = 3; break; - case -1: + case 0: if (i_this->field_0x5f4 == 8) { anm_init(i_this, ANM_SIT, 5.0f, 0, 1.0f); } else { @@ -581,13 +581,13 @@ static void do_walk(do_class* i_this) { i_this->mMode++; break; - case 0: + case 1: if (i_this->mpMorf->isStop()) { i_this->mMode++; } break; - case 1: + case 2: local_5c.x = 0.0f; local_5c.y = 20.0f; @@ -611,7 +611,7 @@ static void do_walk(do_class* i_this) { anm_init(i_this, ANM_WALK, 5.0f, 2, i_this->mAnmSpeed); i_this->mMode++; - case 2: + case 3: local_5c = i_this->mTargetPos - i_this->current.pos; cLib_addCalcAngleS2(&i_this->current.angle.y, (s16)cM_atan2s(local_5c.x, local_5c.z), 0x10, @@ -633,7 +633,7 @@ static void do_walk(do_class* i_this) { break; - case 3: + case 4: cLib_addCalc0(&i_this->speedF, 1.0f, 1.0f); if (i_this->mTimer[0] == 0) { @@ -642,7 +642,7 @@ static void do_walk(do_class* i_this) { break; - case 9: + case 10: cLib_addCalc0(&i_this->speedF, 1.0f, 1.0f); cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mTargetAngleY, 4, 0x400); @@ -664,7 +664,7 @@ static void do_walk(do_class* i_this) { break; - case 10: + case 11: i_this->field_0x616 = 1; i_this->mTailWagTarget = 3000.0f; if (i_this->mTimer[0] == 0) { diff --git a/src/d/actor/d_a_door_mbossL1.cpp b/src/d/actor/d_a_door_mbossL1.cpp index ab7cf52675f..1344e3b2eb0 100644 --- a/src/d/actor/d_a_door_mbossL1.cpp +++ b/src/d/actor/d_a_door_mbossL1.cpp @@ -254,10 +254,10 @@ char* daMBdoorL1_c::getArcName() { case 5: case 11: return "L5MBdoor"; + case 8: + return "L8MBdoor"; case 7: case 10: - return "L8MBdoor"; - case 8: return "L7MBdoor"; } } @@ -714,7 +714,7 @@ void daMBdoorL1_c::demoProc() { case 20: openInitKnob(3); break; - case 21: + case 22: if (field_0x5df == 0) { shape_angle.y += 0x7fff; } @@ -736,7 +736,7 @@ void daMBdoorL1_c::demoProc() { } } break; - case 22: + case 21: if (field_0x5df == 0) { shape_angle.y += 0x7fff; } @@ -960,7 +960,6 @@ void daMBdoorL1_c::demoProc() { } /* 80674AF4-80674DA4 002334 02B0+00 1/1 0/0 0/0 .text openInit__12daMBdoorL1_cFv */ -// NONMATCHING regalloc int daMBdoorL1_c::openInit() { static u16 const l_eff_id[2] = {0x8295, 0x8296}; static u16 const l_eff_id_lv3[5] = {0x8762, 0x8763, 0x8764, 0x8765, 0x8766}; @@ -1551,7 +1550,6 @@ int daMBdoorL1_c::checkMBossRoom() { } /* 806769D0-80676AB4 004210 00E4+00 1/1 0/0 0/0 .text checkStopClose__12daMBdoorL1_cFv */ -// NONMATCHING regalloc int daMBdoorL1_c::checkStopClose() { u8 FRoomNo = door_param2_c::getFRoomNo(this); door_param2_c::getFRoomNo(this); diff --git a/src/d/actor/d_a_obj_cb.cpp b/src/d/actor/d_a_obj_cb.cpp index cc0b52656bc..5b54888ba07 100644 --- a/src/d/actor/d_a_obj_cb.cpp +++ b/src/d/actor/d_a_obj_cb.cpp @@ -29,9 +29,8 @@ static void ride_call_back(dBgW* param_0, fopAc_ac_c* i_this, fopAc_ac_c* param_ } /* 80BC4BB4-80BC51B8 000174 0604+00 1/1 0/0 0/0 .text action__FP12obj_cb_class */ -// NONMATCHING - i_this regalloc. Assigning i_this to a variable with a conversion -// fixes the regalloc but the assignment is in wrong place static void action(obj_cb_class* i_this) { + fopAc_ac_c* a_this = i_this; cXyz local_60; int local_78 = 0; switch(i_this->field_0x596) { @@ -113,7 +112,7 @@ static void action(obj_cb_class* i_this) { // !@bug field_0x594 is never initialized i_this->field_0x594++; if (i_this->field_0x594 > 150) { - fopAcM_delete(i_this); + fopAcM_delete(a_this); } } cLib_addCalc0(&i_this->field_0x5a8, 1.0f, 5.0f); diff --git a/src/d/actor/d_a_obj_gra_rock.cpp b/src/d/actor/d_a_obj_gra_rock.cpp index 12d56a97d8e..d18bfa3682c 100644 --- a/src/d/actor/d_a_obj_gra_rock.cpp +++ b/src/d/actor/d_a_obj_gra_rock.cpp @@ -7,6 +7,12 @@ #include "d/actor/d_a_npc.h" #include "d/d_bg_w.h" +static void dummy() { + // fakematch to fix weak function order + cLib_calcTimer(0); + cLib_calcTimer(0); +} + /* 80C123BC-80C12400 000000 0044+00 3/3 0/0 0/0 .rodata mCcDCyl__14daObjGraRock_c */ dCcD_SrcCyl const daObjGraRock_c::mCcDCyl = { { diff --git a/src/d/actor/d_a_obj_stone.cpp b/src/d/actor/d_a_obj_stone.cpp index 1ee80e87579..8f09ae5c0ae 100644 --- a/src/d/actor/d_a_obj_stone.cpp +++ b/src/d/actor/d_a_obj_stone.cpp @@ -317,7 +317,7 @@ void daObjStone_c::mode_proc_call() { &daObjStone_c::modeDrop, &daObjStone_c::modeCarry, &daObjStone_c::modePutWait, - &daObjStone_c::modeWait, + &daObjStone_c::modeWalk, &daObjStone_c::modeBreak, &daObjStone_c::modeYogan, }; diff --git a/src/d/d_menu_save.cpp b/src/d/d_menu_save.cpp index c6965a7248d..41ed7db9732 100644 --- a/src/d/d_menu_save.cpp +++ b/src/d/d_menu_save.cpp @@ -358,8 +358,9 @@ void dMenu_save_c::screenSet() { mSelIcon = new dSelect_cursor_c(0, 1.0f, NULL); mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f); - Vec* pos = &mpSelData[mSelectedFile]->getGlobalVtxCenter(false, 0); - mSelIcon->setPos(pos->x, pos->y, mpSelData[mSelectedFile]->getPanePtr(), true); + Vec pos; + pos = mpSelData[mSelectedFile]->getGlobalVtxCenter(false, 0); + mSelIcon->setPos(pos.x, pos.y, mpSelData[mSelectedFile]->getPanePtr(), true); mSelIcon->setAlphaRate(0.0f); J2DPane* pane = mSaveSel.Scr->search('Nm_02'); diff --git a/src/d/d_select_cursor.cpp b/src/d/d_select_cursor.cpp index 30db6c75f8d..3bfdb5257f7 100644 --- a/src/d/d_select_cursor.cpp +++ b/src/d/d_select_cursor.cpp @@ -3,6 +3,8 @@ // Translation Unit: d/d_select_cursor // +#define NO_INLINE_DLSTBASE_DRAW + #include "d/d_select_cursor.h" #include "JSystem/J2DGraph/J2DGrafContext.h" #include "d/d_com_inf_game.h" @@ -57,7 +59,7 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) "", }; - static char* btk2_name[4 + 12 /* padding */] = { + static char* btk2_name[4] = { "", "zelda_store_select_icon_02.btk", "", @@ -206,6 +208,13 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) mPositionX = 0.0f; } +static void dummy() { + // Need 0x30 bytes of padding with no symbol between btk2_name$3688 and dSelect_cursor_c::__vtable + // This is likely caused by the vtables of abstract base classes getting put there and then stripped out. + // Not sure which abstract base classes could go there though. + static u8 padding_fakematch[0x30] = {}; +} + /* 801949EC-80194C30 18F32C 0244+00 1/0 0/0 0/0 .text __dt__16dSelect_cursor_cFv */ dSelect_cursor_c::~dSelect_cursor_c() { @@ -254,7 +263,6 @@ dSelect_cursor_c::~dSelect_cursor_c() { } /* 80194C30-80194CC0 18F570 0090+00 1/0 0/0 0/0 .text draw__16dSelect_cursor_cFv */ -// NONMATCHING void dSelect_cursor_c::draw() { mpPaneMgr->getAlphaRate(); update(); diff --git a/src/dolphin/gx/GXFrameBuf.c b/src/dolphin/gx/GXFrameBuf.c index d374ee71d41..2524fd10c9b 100644 --- a/src/dolphin/gx/GXFrameBuf.c +++ b/src/dolphin/gx/GXFrameBuf.c @@ -353,7 +353,7 @@ static u32 __GXGetNumXfbLines(u32 height, u32 scale) { } /* 8035CCDC-8035CD6C 35761C 0090+00 0/0 2/2 0/0 .text GXGetNumXfbLines */ -u16 GXGetNumXfbLines(const u16 efbHeight, f32 yScale) { +u16 GXGetNumXfbLines(u16 efbHeight, f32 yScale) { u32 scale = (u32)(256.0f / yScale) & 0x1FF; return __GXGetNumXfbLines(efbHeight, scale); @@ -650,4 +650,4 @@ void GXClearBoundingBox(void) { GXWGFifo.u8 = GX_LOAD_BP_REG; GXWGFifo.u32 = 0x560003FF; set_x2(GX_FALSE); -} \ No newline at end of file +}