diff --git a/include/d/d_a/d_a_alink/d_a_alink.h b/include/d/d_a/d_a_alink/d_a_alink.h index 0f79b220210..bd6116d3182 100644 --- a/include/d/d_a/d_a_alink/d_a_alink.h +++ b/include/d/d_a/d_a_alink/d_a_alink.h @@ -246,10 +246,7 @@ void mDoMtx_ZXYrotM(void); void mDoMtx_YrotM(void); void daAlink_c_NS_concatMagneBootMtx(void); void mDoMtx_stack_c_NS_transS(void); -void PSMTXQuat(void); -void PSMTXInverse(void); void mDoMtx_stack_c_NS_quatM(void); -void PSMTXTrans(void); void daAlink_c_NS_checkUnderMove0BckNoArc(void); void mDoMtx_QuatConcat(void); void JMAEulerToQuat(void); @@ -277,7 +274,6 @@ void daAlink_c_NS_changeWolfBlendRate(void); void daAlink_c_NS_setWolfFootMatrix(void); bool wolfModelCallBack__9daAlink_cFi(int); void cLib_addCalcAngleS2(void); -void PSMTXMultVec(void); void daAlink_c_NS_getMoveBGActorName(void); void daAlink_c_NS_multVecMagneBootInvMtx(void); void cXyz_NS___ml(void); @@ -285,10 +281,8 @@ void cXyz_NS_atan2sY_XZ(void); void cM_atan2s(void); void cLib_distanceAngleS(void); void cXyz_NS_atan2sX_Z(void); -void PSMTXMultVecSR(void); void cXyz_NS___mi(void); void dKyw_get_AllWind_vec(void); -void PSVECSquareMag(void); void cLib_addCalcAngleS(void); void cM_rndF(void); void calcHairAngle__9daAlink_cFPs(short*); diff --git a/include/functions.h b/include/functions.h index 99a693af02f..776efaa5448 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1,3 +1,5 @@ +#include "mtx_vec.h" +#include "mwcc.h" #include "os/OS.h" extern "C" { @@ -16,9 +18,6 @@ void read__10JUTGamePadFv(void); void mDoCPd_c_NS_LRlockCheck(void); void mDoRst_resetCallBack(void); void J2DScreen_NS_draw(void); -void PSMTXCopy(void); -void PSMTXConcat(void); -void PSMTXScale(void); void screenSet__12dFile_info_cFv(void); void dFile_info_c_NS_screenSet(void); void mDoExt_removeMesgFont(void); @@ -215,15 +214,11 @@ void update__Q210JUTGamePad7CRumbleFs(void); void checkCallback__19JUTGamePadLongPressFlUl(void); void checkResetCallback__10JUTGamePadFx(void); void searchMapEventData__14dEvt_control_cFUc(void); -void PSMTXMultVec(void); void mDoMtx_YrotS(void); void cXyz_NS___mi(void); void Yinit__9STControlFv(void); void Xinit__9STControlFv(void); void J2DScreen_NS_draw(void); -void PSMTXCopy(void); -void PSMTXConcat(void); -void PSMTXScale(void); void screenSet__12dFile_info_cFv(void); void dFile_info_c_NS_screenSet(void); void mDoExt_removeMesgFont(void); @@ -611,7 +606,6 @@ void Z2Creature_NS_deleteObject(void); void deleteKantera__14Z2CreatureLinkFv(void); void Z2Creature_NS_init_X1_(void); void Z2SoundObjBase_NS_deleteObject(void); -void PSVECSquareDistance(void); void moveVolume__18JAISoundParamsMoveFfUl(void); void Z2CreatureLink_NS_startLinkSoundLevel(void); void Z2Creature_NS_framework(void); @@ -1142,14 +1136,12 @@ void mDoExt_bckAnm_NS_init(void); void mDoExt_btkAnm_NS_entry(void); void dAttList_c_NS_getActor(void); void mDoExt_restoreCurrentHeap(void); -void PSMTXMultVec(void); void mDoExt_modelUpdateDL(void); void cSGlobe_X4_(void); void dAttention_c_NS_setList(void); void dAttLook_c_NS_convPId(void); void dAttention_c_NS_lostCheck(void); void dAttention_c_NS_getActionBtnXY(void); -void PSMTXInverse(void); void cSAngle_X2_(void); void fopAcIt_Judge(void); void dAttHint_c_NS_convPId(void); @@ -1159,7 +1151,6 @@ void dAttention_c_NS_chaseAttention(void); void dAttention_c_NS_setOwnerAttentionPos(void); void check_flontofplayer(void); void dRes_control_c_NS_getRes(void); -void PSVECSquareMag(void); void dAttention_c_NS_initList(void); void fopAcIt_Executor(void); void dAttLook_c_NS_proc(void); @@ -1179,7 +1170,6 @@ void cSAngle_NS___mi_X2_(void); void dAttention_c_NS_GetLockonList(void); void dAttHint_c_NS_init(void); // void dAttention_c(void); -void PSMTXTrans(void); void dAttention_c_NS_makeList(void); void mDoExt_bpkAnm_NS_entry(void); void func_800738FC(void); @@ -2017,7 +2007,6 @@ void dBgS_NS_MoveBgCrrPos(void); void daAlink_c_NS_procBottleGetInit(void); void dEvent_manager_c_NS_getRunEventName(void); void daAlink_c_NS_procBottleDrinkInit(void); -void PSVECSubtract(void); void daAlink_c_NS_handBgCheck(void); void cBgS_NS_GetBgWBasePointer(void); void func_8013D86C(void); @@ -2345,7 +2334,6 @@ void daAlink_c_NS_setOldRootQuaternion(void); void cXyz_NS_atan2sX_Z(void); void daAlink_c_NS_getCopyRodCameraActor(void); void dBgS_PolyPassChk_NS_ClrLink(void); -void PSVECDotProduct(void); void daAlink_c_NS_resetFacePriAnime(void); void dComIfGp_getHorseActor(void); void func_8011F460(void); @@ -3345,7 +3333,6 @@ void func_8014188C(void); void daAlink_c_NS_setSandShapeOffset(void); void daAlink_c_NS_procWolfLieMoveInit(void); void daAlink_c_NS_checkLightSwordMtrl(void); -void PSMTXRotAxisRad(void); void daAlink_c_NS_procWolfDownAtMissLandInit(void); void daAlink_c_NS_procCanoeFishingReelInit(void); void dPaneClass_showNullPane(void); @@ -3354,7 +3341,6 @@ void func_801417E8(void); void cXyz_NS_outprod(void); void func_800CF344(void); void daAlink_c_NS_setSwordPushAnime(void); -void PSMTXMultVec(void); void dRes_control_c_NS_getRes_X1_(void); void func_800F194C(void); void cLib_memCpy(void); @@ -3409,7 +3395,6 @@ void dCcD_GObjInf_NS_ChkTgHit(void); void daAlink_c_NS_resetFacePriBck(void); void daAlink_c_NS_procWolfDigInit(void); void daAlink_c_NS_throwCopyRod(void); -void PSMTXMultVecSR(void); void func_801416B0(void); void daAlink_c_NS_getPushPullAnimeSpeed(void); void func_800D6484(void); @@ -3538,7 +3523,6 @@ void daAlink_c_NS_procGrabReadyInit(void); void dComIfGp_getEventManager(void); void daAlink_c_NS_getGrabThrowRate(void); void func_801417C8(void); -void PSVECSquareMag(void); void func_8012D3E4(void); void daAlink_c_NS_checkItemActionInitStart(void); void daAlink_c_NS_checkMidnaLockJumpPoint(void); @@ -3648,7 +3632,6 @@ void func_801416E0(void); void dEvent_manager_c_NS_getMyStaffId(void); void daAlink_c_NS_checkRoofHangMovePos(void); void daAlink_c_NS_setFootSpeed(void); -void PSVECScale(void); void daPy_frameCtrl_c_NS_updateFrame(void); void cCcD_ObjCo_NS_SetIGrp(void); void daAlink_c_NS_checkAtnRightAnime(void); @@ -3695,7 +3678,6 @@ void daAlink_c_NS_setWolfLieMoveVoice(void); void dBgS_ArrowLinChk(void); void daAlink_c_NS_throwBoomerang(void); void daAlink_c_NS_setWolfAtCollision(void); -void PSMTXInverse(void); void func_8011CB20(void); void daAlink_c_NS_hookshotRoofTurn(void); void func_8014174C(void); @@ -3706,7 +3688,6 @@ void daAlink_c_NS_procFmChainUpInit(void); void dComIfGp_att_getCatghTarget(void); void daAlink_c_NS_procCutTurnMoveInit(void); void dCcD_Sph_NS_StartCAt(void); -void PSMTXTrans(void); void daAlink_c_NS_resetOilBottleModel(void); void daAlink_c_NS_procSumouWinLoseInit(void); void func_80126350(void); @@ -4624,7 +4605,6 @@ void dKy_set_bgcol_ratio(void); void dKy_GxFog_set(void); void GXSetZCompLoc(void); void dKyr_moon_arrival_check(void); -void PSVECAdd(Vec*, Vec*, Vec*); void dKy_set_vrboxcol_ratio(void); void func_8036C590(void); void dBgS_CamGndChk_Wtr_NS_dtor(void); @@ -4652,7 +4632,6 @@ void vectle_calc_X1_(void); void dKy_vrbox_addcol_sky0_set(void); void dKy_efplight_set(void); void dKy_set_actcol_ratio(void); -void PSMTXRotRad(void); void daPy_py_c_NS_checkNowWolfEyeUp(void); void dKyr_near_bosslight_check(void); void dKy_rain_check(void); @@ -4666,7 +4645,6 @@ void Z2EnvSeMgr_NS_startNearThunderSe(void); void dKr_cullVtx_Set(void); void overhead_bg_chk(void); void func_8036C028(void); -void C_MTXLightPerspective(void); void cM3d_VectorProduct2d(void); void dCcMassS_Mng_NS_Prepare(void); } @@ -5026,7 +5004,6 @@ void dCamera_c_NS_dCamInfo_c_NS_dtor(void); void dCamera_c_NS_footHeightOf(void); void dCamParam_c(void); void dCamParam_c_NS_Arg2_X1_(void); -void PSVECCrossProduct(void); void cSGlobe_NS___as(void); void dBgS_CamSphChk_NS_dtor(void); void dCamera_c_NS_EventRecoverNotime(void); @@ -5089,7 +5066,6 @@ void func_80180AA8(void); void func_8017D97C(void); void daPy_py_c_NS_getRightHandPos(void); void dCam_getCamera(void); -void C_MTXPerspective(void); void func_80180B40(void); void func_8017DFAC(void); void dCamera_c_NS_updateMonitor(void); diff --git a/include/global.h b/include/global.h index 0b80728dcff..502aa054b47 100644 --- a/include/global.h +++ b/include/global.h @@ -8,10 +8,6 @@ // Align X to the next N bytes (N must be power of two) #define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N)-1), N) -struct Vec { - float x, y, z; -}; - #define JUT_ASSERT(...) #define ASSERT(...) diff --git a/include/mtx_vec.h b/include/mtx_vec.h new file mode 100644 index 00000000000..394f49ed6ee --- /dev/null +++ b/include/mtx_vec.h @@ -0,0 +1,61 @@ +#ifndef __MTX_VEC_H_ +#define __MTX_VEC_H_ + +#include "dolphin/types.h" + +struct Vec { + float x, y, z; +}; + +struct Quaternion { + float x, y, z, w; +}; + +struct Mtx { + float data[3][4]; +}; + +extern "C" { +void PSMTXIdentity(Mtx* matrix); +void PSMTXCopy(Mtx* src, Mtx* dst); +void PSMTXConcat(Mtx* src_a, Mtx* src_b, Mtx* dst); +u32 PSMTXInverse(Mtx* src, Mtx* dst); +void PSMTXRotRad(Mtx* matrix, u8 axis, float rad); +void PSMTXRotTrig(Mtx* matrix, u8 axis, float sin, float cos); +double __PSMTXRotAxisRadInternal(double param_1, double param_2, int param_3, int param_4); +void PSMTXRotAxisRad(Mtx* matrix, Vec* axis, float rad); +void PSMTXTrans(Mtx* matrix, float x_trans, float y_trans, float z_trans); +void PSMTXTransApply(Mtx* src, Mtx* dst, float x, float y, float z); +void PSMTXScale(Mtx* matrix, float x_scale, float y_scale, float z_scale); +void PSMTXScaleApply(Mtx* src, Mtx* dst, float x_scale, float y_scale, float z_scale); +void PSMTXQuat(Mtx* matrix, Quaternion* quat); +void C_MTXLookAt(float* param_1, float* param_2, Vec* param_3, float* param_4); +void C_MTXLightPerspective(Mtx* matrix, float fov_y, float aspect, float scale_s, float scale_t, + float trans_s, float trans_t); +void C_MTXLightOrtho(Mtx* matrix, float top, float bottom, float left, float right, float scale_s, + float scale_t, float trans_s, float trans_t); +void PSMTXMultVec(Mtx* matrix, Vec* src, Vec* dst); +void PSMTXMultVecArray(Mtx* matrix, Vec* src, Vec* dst, u32 count); +void PSMTXMultVecSR(Mtx* matrix, Vec* src, Vec* dst); +void PSMTXMultVecArraySR(Mtx* matrix, Vec* src, Vec* dst, u32 count); +void C_MTXPerspective(Mtx* matrix, float fov_y, float aspect, float near, float far); +void C_MTXOrtho(Mtx* matrix, float top, float bottom, float left, float right, float near, + float far); +void PSVECAdd(Vec* src_a, Vec* src_b, Vec* dst); +void PSVECSubtract(Vec* a, Vec* b, Vec* dst); +void PSVECScale(Vec* src, Vec* dst, float scale); +void PSVECNormalize(Vec* src, Vec* dst); +float PSVECSquareMag(Vec* vec); +float PSVECMag(Vec* data); +float PSVECDotProduct(Vec* a, Vec* b); +void PSVECCrossProduct(Vec* src_a, Vec* src_b, Vec* dst); +void C_VECHalfAngle(Vec* incident, Vec* line_of_sight, Vec* out_half); +void C_VECReflect(Vec* src, Vec* surface_normal, Vec* dst); +float PSVECSquareDistance(Vec* a, Vec* b); +float PSVECDistance(Vec* a, Vec* b); +void PSQUATMultiply(Quaternion* src_a, Quaternion* src_b, Quaternion* dst); +void C_QUATRotAxisRad(Quaternion* quat, Vec* axis, float rad); +void C_QUATSlerp(Quaternion* p, Quaternion* q, Quaternion* r, float t); +} + +#endif \ No newline at end of file diff --git a/tools/splitter/split.py b/tools/splitter/split.py index 45260bba916..db60a9dabea 100644 --- a/tools/splitter/split.py +++ b/tools/splitter/split.py @@ -133,7 +133,7 @@ def emit_cxx_extern_fns(tu_file: str, labels: Iterable[str]) -> str: def decl(label): return f'void {label}(void);' - defs = '\n '.join(decl(label) for label in labels) + defs = '\n '.join(decl(label) for label in sorted(labels)) return ( f'// additional symbols needed for {tu_file}\n' @@ -150,7 +150,7 @@ def emit_cxx_extern_vars(tu_file: str, labels: Iterable[str]) -> str: return ( f'// additional symbols needed for {tu_file}\n' f'// autogenerated by split.py {__version__} at {datetime.utcnow()}\n' - + '\n'.join(decl(label) for label in labels) + + '\n'.join(decl(label) for label in sorted(labels)) + '\n' ) @@ -220,6 +220,11 @@ def split( extern_funcs_src = extern_functions_file.read_text() extern_vars_src = extern_variables_file.read_text() + include_re = re.compile(r'#include "(.*)"') + + for include in include_re.findall(extern_funcs_src): + extern_funcs_src += (Path('include') / include).read_text() + logger.info('parsing map file') framework_map = parse_framework_map(framework_map_file) logger.debug(f'loaded {len(framework_map)} symbols from map')