// // Generated By: dol2asm // Translation Unit: f_op/f_op_actor_mng // #include "f_op/f_op_actor_mng.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "SSystem/SComponent/c_lib.h" #include "SSystem/SComponent/c_malloc.h" #include "dol2asm.h" #include "global.h" #include "msl_c/math.h" // #include "d/com/d_com_inf_game.h" #include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DU/J3DUClipper.h" #include "SSystem/SComponent/c_math.h" #include "d/d_stage.h" #include "f_op/f_op_actor.h" #include "f_op/f_op_actor_iter.h" #include "m_Do/m_Do_ext.h" #include "m_Do/m_Do_lib.h" #include "msl_c/math.h" #include "msl_c/string.h" // // Types: // struct mDoMtx_stack_c { static u8 now[48]; }; struct l_HIO { /* 8001E098 */ ~l_HIO(); }; struct daTagStream_c { /* 800318B4 */ void checkArea(cXyz const*); static u8 m_top[4]; }; struct daPy_py_c { /* 8001E11C */ void onFrollCrashFlg(u8, int); /* 8001E120 */ bool checkWolfDash() const; /* 8001E128 */ bool checkFrontRoll() const; /* 8001E130 */ bool checkHorseRide() const; /* 8001E138 */ s32 getGrabActorID() const; }; struct dPa_levelEcallBack {}; struct dKy_tevstr_c {}; struct cBgS_PolyInfo {}; struct _GXColor {}; struct dPa_control_c { struct level_c { /* 8004B918 */ void getEmitter(u32); }; /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, cXyz const*, f32); /* 8004D7C4 */ void setSimpleFoot(u32, u32*, cBgS_PolyInfo&, cXyz const*, dKy_tevstr_c const*, int, csXyz const*, cXyz const*, dPa_levelEcallBack*, s8, cXyz const*); }; struct dEvt_control_c { /* 80041668 */ void order(u16, u16, u16, u16, void*, void*, s16, u8); /* 800432EC */ void convPId(unsigned int); /* 80043500 */ void searchMapEventData(u8, s32); }; struct dEvent_manager_c { /* 80047698 */ void getEventIdx(fopAc_ac_c*, u8); /* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8); /* 800481F4 */ void getEventPrio(fopAc_ac_c*, s16); }; struct dEnemyItem_c { static u8 mData[4 + 4 /* padding */]; }; struct dBgS_WtrChk { /* 8001DF30 */ ~dBgS_WtrChk(); /* 80079164 */ dBgS_WtrChk(); }; struct dBgS_SplGrpChk { /* 80078B90 */ void Set(cXyz&, f32); /* 80078C78 */ ~dBgS_SplGrpChk(); }; struct dBgS_RoofChk { /* 80078FF4 */ dBgS_RoofChk(); /* 80079090 */ ~dBgS_RoofChk(); }; struct dBgS_PolyPassChk { /* 80078E68 */ void SetObj(); }; struct dBgS_ObjRoofChk { /* 8001DFA8 */ ~dBgS_ObjRoofChk(); }; struct dBgS_ObjLinChk { /* 80077F5C */ dBgS_ObjLinChk(); /* 80077FB8 */ ~dBgS_ObjLinChk(); }; struct dBgS_ObjGndChk { /* 8001E020 */ ~dBgS_ObjGndChk(); }; struct dBgS_LinChk { /* 80077C68 */ dBgS_LinChk(); /* 80077CDC */ ~dBgS_LinChk(); /* 80077D64 */ void Set(cXyz const*, cXyz const*, fopAc_ac_c const*); }; struct dBgS_GndChk { /* 8007757C */ dBgS_GndChk(); /* 800775F0 */ ~dBgS_GndChk(); }; struct dBgS { /* 80074E50 */ void GetPolyAtt0(cBgS_PolyInfo const&); /* 8007549C */ void RoofChk(dBgS_RoofChk*); /* 80075564 */ void SplGrpChk(dBgS_SplGrpChk*); }; struct cBgS_LinChk {}; struct cBgS_GndChk { /* 80267D28 */ void SetPos(cXyz const*); }; struct cBgS { /* 800743B4 */ void LineCross(cBgS_LinChk*); /* 800744A0 */ void GroundCross(cBgS_GndChk*); /* 80074660 */ void ChkPolySafe(cBgS_PolyInfo const&); /* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; }; struct J3DTexMtxInfo { /* 80325794 */ void setEffectMtx(f32 (*)[4]); }; // // Forward References: // extern "C" void fopAcM_FastCreate__FsPFPv_iPvPv(); extern "C" void fopAcM_setStageLayer__FPv(); extern "C" void fopAcM_setRoomLayer__FPvi(); extern "C" void fopAcM_SearchByID__FUiPP10fopAc_ac_c(); extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c(); extern "C" void fopAcM_CreateAppend__Fv(); extern "C" static void createAppend__FUsUlPC4cXyziPC5csXyzPC4cXyzScUi(); extern "C" void fopAcM_Log__FPC10fopAc_ac_cPCc(); extern "C" void fopAcM_delete__FP10fopAc_ac_c(); extern "C" void fopAcM_delete__FUi(); extern "C" void fopAcM_create__FsUsUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); extern "C" void fopAcM_fastCreate__FsUlPC4cXyziPC5csXyzPC4cXyzScPFPv_iPv(); extern "C" void fopAcM_fastCreate__FPCcUlPC4cXyziPC5csXyzPC4cXyzPFPv_iPv(); extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); extern "C" void fopAcM_createChildFromOffset__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); extern "C" void fopAcM_DeleteHeap__FP10fopAc_ac_c(); extern "C" void fopAcM_callCallback__FP10fopAc_ac_cPFP10fopAc_ac_c_iP7JKRHeap(); extern "C" void fopAcM_entrySolidHeap___FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); extern "C" void fopAcM_setCullSizeSphere__FP10fopAc_ac_cffff(); extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); extern "C" void fopAcM_addAngleY__FP10fopAc_ac_css(); extern "C" void fopAcM_calcSpeed__FP10fopAc_ac_c(); extern "C" void fopAcM_posMove__FP10fopAc_ac_cPC4cXyz(); extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_searchActorDistance2__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_rollPlayerCrash__FPC10fopAc_ac_cfUlffif(); extern "C" void fopAcM_checkCullingBox__FPA4_fffffff(); extern "C" void fopAcM_cullingCheck__FPC10fopAc_ac_c(); extern "C" void event_second_actor__FUs(); extern "C" void fopAcM_orderTalkEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs(); extern "C" void fopAcM_orderTalkItemBtnEvent__FUsP10fopAc_ac_cP10fopAc_ac_cUsUs(); extern "C" void fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs(); extern "C" void fopAcM_orderDoorEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs(); extern "C" void fopAcM_orderCatchEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs(); extern "C" void fopAcM_orderOtherEvent__FP10fopAc_ac_cPCcUsUsUs(); extern "C" void fopAcM_orderOtherEvent__FP10fopAc_ac_cP10fopAc_ac_cPCcUsUsUs(); extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs(); extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); extern "C" void fopAcM_orderMapToolEvent__FP10fopAc_ac_cUcsUsUsUs(); extern "C" void fopAcM_orderMapToolAutoNextEvent__FP10fopAc_ac_cUcsUsUsUs(); extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); extern "C" void fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs(); extern "C" void fopAcM_orderTreasureEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs(); extern "C" void fopAcM_getTalkEventPartner__FPC10fopAc_ac_c(); extern "C" void fopAcM_getItemEventPartner__FPC10fopAc_ac_c(); extern "C" void fopAcM_getEventPartner__FPC10fopAc_ac_c(); extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz(); extern "C" void fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz(); extern "C" void fopAcM_getItemNoFromTableNo__FUc(); extern "C" void fopAcM_createItemFromEnemyID__FUcPC4cXyziiPC5csXyzPC4cXyzPfPf(); extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb(); extern "C" void fopAcM_createDemoItem__FPC4cXyziiPC5csXyziPC4cXyzUc(); extern "C" void fopAcM_createItemForBoss__FPC4cXyziiPC5csXyzPC4cXyzffi(); extern "C" void fopAcM_createItemForMidBoss__FPC4cXyziiPC5csXyzPC4cXyzii(); extern "C" void fopAcM_createItemForDirectGet__FPC4cXyziiPC5csXyzPC4cXyzff(); extern "C" void fopAcM_createItemForSimpleDemo__FPC4cXyziiPC5csXyzPC4cXyzff(); extern "C" void fopAcM_createItem__FPC4cXyziiiPC5csXyzPC4cXyzi(); extern "C" void fopAcM_fastCreateItem2__FPC4cXyziiiiPC5csXyzPC4cXyz(); extern "C" void fopAcM_fastCreateItem__FPC4cXyziiPC5csXyzPC4cXyzPfPfiiPFPv_i(); extern "C" void fopAcM_createBokkuri__FUsPC4cXyziiiPC4cXyzii(); extern "C" void fopAcM_createWarpHole__FPC4cXyzPC5csXyziUcUcUc(); extern "C" void enemySearchJugge__FPvPv(); extern "C" void fopAcM_myRoomSearchEnemy__FSc(); extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); extern "C" void fopAcM_setCarryNow__FP10fopAc_ac_ci(); extern "C" void fopAcM_cancelCarryNow__FP10fopAc_ac_c(); extern "C" void fopAcM_otoCheck__FPC10fopAc_ac_cf(); extern "C" void fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c(); extern "C" void fopAcM_wayBgCheck__FPC10fopAc_ac_cff(); extern "C" void fopAcM_plAngleCheck__FPC10fopAc_ac_cs(); extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); extern "C" void fopAcM_carryOffRevise__FP10fopAc_ac_c(); extern "C" static void vectle_calc__FPC10DOUBLE_POSP4cXyz(); extern "C" static void get_vectle_calc__FPC4cXyzPC4cXyzP4cXyz(); extern "C" void fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData(); extern "C" void fopAcM_getProcNameString__FPC10fopAc_ac_c(); extern "C" void fopAcM_findObjectCB__FPC10fopAc_ac_cPv(); extern "C" void fopAcM_searchFromName__FPCcUlUl(); extern "C" void fopAcM_findObject4EventCB__FP10fopAc_ac_cPv(); extern "C" void fopAcM_searchFromName4Event__FPCcs(); extern "C" void fopAcM_getWaterY__FPC4cXyzPf(); extern "C" void fpoAcM_relativePos__FPC10fopAc_ac_cPC4cXyzP4cXyz(); extern "C" void fopAcM_getWaterStream__FPC4cXyzRC13cBgS_PolyInfoP4cXyzPii(); extern "C" void fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos(); extern "C" void __dt__8cM3dGPlaFv(); extern "C" void fopAcM_getPolygonAngle__FPC8cM3dGPlas(); extern "C" void lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c(); extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); extern "C" void roofCheck__11fopAcM_rc_cFPC4cXyz(); extern "C" void waterCheck__11fopAcM_wt_cFPC4cXyz(); extern "C" void fopAcM_initManager__Fv(); extern "C" void __sinit_f_op_actor_mng_cpp(); extern "C" void __dt__11dBgS_WtrChkFv(); extern "C" void __dt__15dBgS_ObjRoofChkFv(); extern "C" void __dt__14dBgS_ObjGndChkFv(); extern "C" void __dt__5l_HIOFv(); extern "C" static void func_8001E0D4(); extern "C" static void func_8001E0DC(); extern "C" static void func_8001E0E4(); extern "C" static void func_8001E0EC(); extern "C" static void func_8001E0F4(); extern "C" static void func_8001E0FC(); extern "C" static void func_8001E104(); extern "C" static void func_8001E10C(); extern "C" static void func_8001E114(); extern "C" void onFrollCrashFlg__9daPy_py_cFUci(); extern "C" bool checkWolfDash__9daPy_py_cCFv(); extern "C" bool checkFrontRoll__9daPy_py_cCFv(); extern "C" bool checkHorseRide__9daPy_py_cCFv(); extern "C" s32 getGrabActorID__9daPy_py_cCFv(); extern "C" extern char const* const f_op_f_op_actor_mng__stringBase0; extern "C" u8 mLineCheck__11fopAcM_lc_c[112]; extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; extern "C" u8 mRoofCheck__11fopAcM_rc_c[80]; extern "C" u8 mWaterCheck__11fopAcM_wt_c[84 + 4 /* padding */]; extern "C" f32 mGroundY__11fopAcM_gc_c; extern "C" f32 mRoofY__11fopAcM_rc_c; extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; // TODO: move u32 check_itemno(int param1); BOOL isHeart(u8); extern "C" void* calc_mtx; // // External References: // extern "C" void mDoMtx_YrotS__FPA4_fs(); extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); extern "C" void fopScnM_SearchByID__FUi(); extern "C" void fpcBs_Is_JustOfType__Fii(); extern "C" void fpcEx_IsExist__FUi(); extern "C" void fpcLy_CurrentLayer__Fv(); extern "C" void fpcM_Delete__FPv(); extern "C" void fpcM_IsCreating__FUi(); extern "C" void fpcM_FastCreate__FsPFPv_iPvPv(); extern "C" void fpcM_JudgeInLayer__FUiPFPvPv_PvPv(); extern "C" void fpcPi_Change__FP22process_priority_classUiUsUs(); extern "C" void fpcSch_JudgeForPName__FPvPv(); extern "C" void fpcSch_JudgeByID__FPvPv(); extern "C" void fpcSCtRq_Request__FP11layer_classsPFPvPv_iPvPv(); extern "C" void dStage_searchName__FPCc(); extern "C" void dStage_getName2__FsSc(); extern "C" void checkArea__13daTagStream_cFPC4cXyz(); extern "C" void onActor__10dSv_info_cFii(); extern "C" void order__14dEvt_control_cFUsUsUsUsPvPvsUc(); extern "C" void convPId__14dEvt_control_cFUi(); extern "C" void searchMapEventData__14dEvt_control_cFUcl(); extern "C" void setGtItm__14dEvt_control_cFUc(); extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); extern "C" void getEventPrio__16dEvent_manager_cFP10fopAc_ac_cs(); extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); extern "C" void set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); extern "C" void setSimpleFoot__13dPa_control_cFUlPUlR13cBgS_PolyInfoPC4cXyzPC12dKy_tevstr_ciPC5csXyzPC4cXyzP18dPa_levelEcallBackScPC4cXyz(); extern "C" void dPath_GetPolyRoomPathVec__FRC13cBgS_PolyInfoP4cXyzPi(); extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); extern "C" void ChkPolySafe__4cBgSFRC13cBgS_PolyInfo(); extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo(); extern "C" void RoofChk__4dBgSFP12dBgS_RoofChk(); extern "C" void SplGrpChk__4dBgSFP14dBgS_SplGrpChk(); extern "C" void __ct__11dBgS_GndChkFv(); extern "C" void __dt__11dBgS_GndChkFv(); extern "C" void __ct__11dBgS_LinChkFv(); extern "C" void __dt__11dBgS_LinChkFv(); extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); extern "C" void __ct__14dBgS_ObjLinChkFv(); extern "C" void __dt__14dBgS_ObjLinChkFv(); extern "C" void Set__14dBgS_SplGrpChkFR4cXyzf(); extern "C" void __dt__14dBgS_SplGrpChkFv(); extern "C" void SetObj__16dBgS_PolyPassChkFv(); extern "C" void __ct__12dBgS_RoofChkFv(); extern "C" void __dt__12dBgS_RoofChkFv(); extern "C" void __ct__11dBgS_WtrChkFv(); extern "C" void isHeart__FUc(); extern "C" void check_itemno__Fi(); extern "C" void dCam_getCamera__Fv(); extern "C" void dKy_Sound_get__Fv(); extern "C" void memalignB__3cMlFiUl(); extern "C" void __mi__4cXyzCFRC3Vec(); extern "C" void normalizeZP__4cXyzFv(); extern "C" void atan2sX_Z__4cXyzCFv(); extern "C" void __ct__5csXyzFsss(); extern "C" void cM_atan2s__Fff(); extern "C" void cM_rndF__Ff(); extern "C" void cM_rndFX__Ff(); extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); extern "C" void cLib_memSet__FPviUl(); extern "C" void cLib_chaseAngleS__FPsss(); extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); extern "C" void MtxPosition__FP4cXyzP4cXyz(); extern "C" void calcViewFrustum__11J3DUClipperFv(); extern "C" void clip__11J3DUClipperCFPA4_Cf3Vecf(); extern "C" void clip__11J3DUClipperCFPA4_CfP3VecP3Vec(); extern "C" void getFreeSize__7JKRHeapFv(); extern "C" void __dl__FPv(); extern "C" void setEffectMtx__13J3DTexMtxInfoFPA4_f(); extern "C" void __register_global_object(); extern "C" void _savegpr_19(); extern "C" void _savegpr_21(); extern "C" void _savegpr_23(); extern "C" void _savegpr_24(); extern "C" void _savegpr_25(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); extern "C" void _savegpr_29(); extern "C" void _restgpr_19(); extern "C" void _restgpr_21(); extern "C" void _restgpr_23(); extern "C" void _restgpr_24(); extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_29(); extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mStatus__20dStage_roomControl_c[65792]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 BaseY__4cXyz[12]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" f32 mSystemFar__14mDoLib_clipper; extern "C" u8 mProcID__20dStage_roomControl_c[4]; extern "C" void* mClipper__14mDoLib_clipper; extern "C" extern u8 struct_80450D64[4]; extern "C" u8 m_top__13daTagStream_c[4]; extern "C" u8 mData__12dEnemyItem_c[4 + 4 /* padding */]; extern "C" u8 Zero__5csXyz[4]; extern "C" extern u8 data_80451164[4]; // // Declarations: // /* 800198A4-800198C4 0141E4 0020+00 0/0 1/1 0/0 .text fopAcM_FastCreate__FsPFPv_iPvPv */ void* fopAcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, void* pData) { return fpcM_FastCreate(pProcTypeID, param_2, param_3, pData); } /* 800198C4-80019934 014204 0070+00 1/1 5/5 18/18 .text fopAcM_setStageLayer__FPv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void fopAcM_setStageLayer(void* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_setStageLayer__FPv.s" } #pragma pop /* 80019934-800199BC 014274 0088+00 1/1 0/0 2/2 .text fopAcM_setRoomLayer__FPvi */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm int fopAcM_setRoomLayer(void* param_0, int param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_setRoomLayer__FPvi.s" } #pragma pop /* 800199BC-80019A2C 0142FC 0070+00 0/0 4/4 114/114 .text fopAcM_SearchByID__FUiPP10fopAc_ac_c */ s32 fopAcM_SearchByID(unsigned int id, fopAc_ac_c** actor) { if (fpcM_IsCreating(id) != 0) { *actor = NULL; } else { *actor = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)fpcSch_JudgeByID, &id); if (*actor == NULL) { return 0; } } return 1; } /* 80019A2C-80019AA8 01436C 007C+00 0/0 0/0 28/28 .text fopAcM_SearchByName__FsPP10fopAc_ac_c */ s32 fopAcM_SearchByName(s16 procName, fopAc_ac_c** actor) { *actor = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)fpcSch_JudgeForPName, &procName); if (*actor == NULL) { return 0; } else { if (fpcM_IsCreating(fopAcM_GetID(*actor)) != 0) { *actor = NULL; } return 1; } } /* 80019AA8-80019B1C 0143E8 0074+00 1/1 7/7 0/0 .text fopAcM_CreateAppend__Fv */ fopAcM_prm_class* fopAcM_CreateAppend(void) { fopAcM_prm_class* params = static_cast(cMl::memalignB(-4, sizeof(fopAcM_prm_class))); if (params != NULL) { cLib_memSet(params, 0, sizeof(fopAcM_prm_class)); params->mEnemyNo = 0xFFFF; params->mRoomNo = -1; params->mScale[0] = 0xA; params->mScale[1] = 0xA; params->mScale[2] = 0xA; params->mParentPId = -1; params->mSubtype = -1; } return params; } /* ############################################################################################## */ /* 80451C00-80451C04 000200 0004+00 1/1 0/0 0/0 .sdata2 @4263 */ SECTION_SDATA2 static f32 lit_4263 = 10.0f; /* 80019B1C-80019C78 01445C 015C+00 4/4 0/0 0/0 .text * createAppend__FUsUlPC4cXyziPC5csXyzPC4cXyzScUi */ fopAcM_prm_class* createAppend(u16 enemyNo, u32 parameter, const cXyz* pPos, int roomNo, const csXyz* pAngle, const cXyz* pScale, s8 subType, unsigned int parentPId) { fopAcM_prm_class* params = fopAcM_CreateAppend(); if (params == NULL) { return NULL; } else { params->mEnemyNo = enemyNo; if (pPos != NULL) { params->mPos = *pPos; } else { params->mPos = cXyz::Zero; } params->mRoomNo = roomNo; if (pAngle != NULL) { params->mAngle = *pAngle; } else { params->mAngle = csXyz::Zero; } if (pScale != NULL) { f32 ten = FLOAT_LABEL(lit_4263); // temp not necessary when using literal params->mScale[0] = ten * pScale->x; params->mScale[1] = ten * pScale->y; params->mScale[2] = ten * pScale->z; } else { params->mScale[0] = 0xA; params->mScale[1] = 0xA; params->mScale[2] = 0xA; } params->mParameter = parameter; params->mParentPId = parentPId; params->mSubtype = subType; return params; } } /* 80019C78-80019C7C 0145B8 0004+00 3/3 0/0 0/0 .text fopAcM_Log__FPC10fopAc_ac_cPCc */ void fopAcM_Log(fopAc_ac_c const* param_0, char const* param_1) { /* empty function */ } /* 80019C7C-80019CB8 0145BC 003C+00 0/0 10/10 483/483 .text fopAcM_delete__FP10fopAc_ac_c */ void fopAcM_delete(fopAc_ac_c* pActor) { fopAcM_Log(pActor, "アクターの削除"); fpcM_Delete(pActor); } /* 80019CB8-80019D18 0145F8 0060+00 0/0 3/3 12/12 .text fopAcM_delete__FUi */ #ifdef NON_MATCHING s32 fopAcM_delete(unsigned int pID) { void* searchResult = (void*)fopAcIt_Judge((fopAcIt_JudgeFunc)fpcSch_JudgeByID, &pID); const fopAc_ac_c* actor = (fopAc_ac_c*)searchResult; // original moves r3 -> r0, then r0 -> r31 for 0 check // this generates r3 -> r31 with 0 check directly if (searchResult != NULL) { fopAcM_Log(actor, "アクターの削除"); return fpcM_Delete(searchResult); } else { return 1; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_delete(unsigned int param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_delete__FUi.s" } #pragma pop #endif /* 80019D18-80019D98 014658 0080+00 2/2 0/0 0/0 .text * fopAcM_create__FsUsUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i */ s32 fopAcM_create(s16 procName, u16 enemyNo, u32 parameter, const cXyz* pPos, int roomNo, const csXyz* pRot, const cXyz* pScale, s8 subType, createFunc pCreateFunc) { fopAcM_prm_class* params = createAppend(enemyNo, parameter, pPos, roomNo, pRot, pScale, subType, 0xFFFFFFFF); if (params == NULL) { return 0xFFFFFFFF; } else { return fpcSCtRq_Request(fpcLy_CurrentLayer(), procName, (stdCreateFunc)pCreateFunc, NULL, params); } } /* 80019D98-80019E04 0146D8 006C+00 3/3 11/11 70/70 .text * fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc */ s32 fopAcM_create(s16 procName, u32 parameter, const cXyz* pPos, int roomNo, const csXyz* pRot, const cXyz* pScale, s8 subType) { return fopAcM_create(procName, 0xFFFF, parameter, pPos, roomNo, pRot, pScale, subType, NULL); } /* 80019E04-80019E6C 014744 0068+00 5/5 6/6 18/18 .text * fopAcM_fastCreate__FsUlPC4cXyziPC5csXyzPC4cXyzScPFPv_iPv */ void* fopAcM_fastCreate(s16 procTypeID, u32 parameter, const cXyz* pPos, int roomNo, const csXyz* pRot, const cXyz* pScale, s8 subType, createFunc pCreateFunc, void* pCreateFuncData) { fopAcM_prm_class* prmClass = createAppend(0xFFFF, parameter, pPos, roomNo, pRot, pScale, subType, 0xFFFFFFFF); if (prmClass == NULL) { return NULL; } else { return fpcM_FastCreate(procTypeID, pCreateFunc, pCreateFuncData, prmClass); } } objectNameInfo* dStage_searchName(const char*); /* 80019E6C-80019EF0 0147AC 0084+00 0/0 1/1 0/0 .text * fopAcM_fastCreate__FPCcUlPC4cXyziPC5csXyzPC4cXyzPFPv_iPv */ void* fopAcM_fastCreate(const char* pActorName, u32 parameter, const cXyz* pActorPos, int roomNo, const csXyz* pActorRot, const cXyz* pScale, createFunc pCreateFunc, void* pCreateFuncData) { objectNameInfo* nameInfo = dStage_searchName(pActorName); if (nameInfo == NULL) { return NULL; } else { return fopAcM_fastCreate(nameInfo->mProcTypeID, parameter, pActorPos, roomNo, pActorRot, pScale, nameInfo->unkA, pCreateFunc, pCreateFuncData); } } /* 80019EF0-80019F78 014830 0088+00 0/0 1/1 105/105 .text * fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i */ s32 fopAcM_createChild(s16 pProcTypeID, unsigned int pParentPId, u32 pParameter, const cXyz* pPos, int pRoomNo, const csXyz* pAngle, const cXyz* pScale, s8 pSubType, createFunc param_9) { fopAcM_prm_class* paramClass = createAppend(0xFFFF, pParameter, pPos, pRoomNo, pAngle, pScale, pSubType, pParentPId); if (paramClass == NULL) { return -1; } else { return fpcSCtRq_Request(fpcLy_CurrentLayer(), pProcTypeID, (stdCreateFunc)param_9, NULL, paramClass); } } /* 80019F78-8001A138 0148B8 01C0+00 0/0 0/0 6/6 .text * fopAcM_createChildFromOffset__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i */ s32 fopAcM_createChildFromOffset(s16 procTypeID, unsigned int parentProcID, u32 actorParams, const cXyz* pActorPos, int roomNo, const csXyz* pActorRot, const cXyz* pScale, s8 subType, createFunc pCreateFunc) { struct { s32 procID; } searchParams; searchParams.procID = parentProcID; fopAc_ac_c* parentActor = static_cast(fopAcIt_Judge((fopAcIt_JudgeFunc)fpcSch_JudgeByID, &searchParams)); s16 parentRotY = parentActor->getAngle().GetY(); cXyz tmpPos; if (pActorPos == NULL) { tmpPos = cXyz::Zero; } else { tmpPos = *pActorPos; } csXyz tmpRot; if (pActorRot == NULL) { tmpRot = csXyz::Zero; } else { tmpRot = *pActorRot; } cXyz parentPos = parentActor->getPosition(); csXyz tmpRotCopy(tmpRot); tmpRotCopy.y += parentRotY; parentPos.x += tmpPos.z * cM_ssin(parentRotY) + tmpPos.x * cM_scos(parentRotY); parentPos.y += tmpPos.y; parentPos.z += tmpPos.z * cM_scos(parentRotY) - tmpPos.x * cM_ssin(parentRotY); fopAcM_prm_class* prmClass = createAppend(0xFFFF, actorParams, &parentPos, roomNo, &tmpRotCopy, pScale, subType, parentProcID); if (prmClass == NULL) { return -1; } else { return fpcSCtRq_Request(fpcLy_CurrentLayer(), procTypeID, (stdCreateFunc)pCreateFunc, NULL, prmClass); } } /* ############################################################################################## */ /* 803788C8-803788C8 004F28 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_803788D7 = "アクターのヒープの生成"; SECTION_DEAD static char const* const stringBase_803788EE = "fopAcM_createHeap 確保失敗\n"; SECTION_DEAD static char const* const stringBase_8037890A = "アクターのヒープの破壊"; #pragma pop /* 8001A138-8001A188 014A78 0050+00 0/0 1/1 1/1 .text fopAcM_DeleteHeap__FP10fopAc_ac_c */ void fopAcM_DeleteHeap(fopAc_ac_c* pActor) { fopAcM_Log(pActor, "アクターのヒープの破壊"); if (pActor->unk_0x0F0 != NULL) { mDoExt_destroySolidHeap(pActor->unk_0x0F0); pActor->unk_0x0F0 = NULL; } } /* 8001A188-8001A1E8 014AC8 0060+00 1/1 0/0 0/0 .text * fopAcM_callCallback__FP10fopAc_ac_cPFP10fopAc_ac_c_iP7JKRHeap */ s32 fopAcM_callCallback(fopAc_ac_c* pActor, heapCallbackFunc pCallbackFunc, JKRHeap* pHeap) { JKRHeap* oldHeap = mDoExt_setCurrentHeap(pHeap); s32 ret = pCallbackFunc(pActor); mDoExt_setCurrentHeap(oldHeap); return ret; } /* 80450CC8-80450CCC -00001 0004+00 2/2 0/0 0/0 .sbss None */ /* 80450CC8 0001+00 data_80450CC8 None */ /* 80450CC9 0003+00 data_80450CC9 None */ static u8 lbl_80450CC8; static u8 lbl_80450CC9; /* 8001A1E8-8001A4B0 014B28 02C8+00 1/1 0/0 0/0 .text * fopAcM_entrySolidHeap___FP10fopAc_ac_cPFP10fopAc_ac_c_iUl */ bool fopAcM_entrySolidHeap_(fopAc_ac_c* pActor, heapCallbackFunc pHeapCallback, u32 pSize) { const char* procNameString = fopAcM_getProcNameString(pActor); JKRSolidHeap* heap00 = NULL; if (pSize != 0) { pSize = ALIGN_NEXT(pSize, 0x10); } while (true) { if (pSize != 0) { heap00 = mDoExt_createSolidHeapFromGame(pSize, 0x20); if (heap00 != NULL) { bool status = fopAcM_callCallback(pActor, pHeapCallback, heap00) != 0; if (!status) { OSReport_Error("見積もりヒープサイズ(%08x)で登録失敗しました。%08x[%s]\n", pSize, heap00->getFreeSize(), procNameString); mDoExt_destroySolidHeap(heap00); heap00 = NULL; } } else { OSReport_Error("見積もりヒープが確保できませんでした。 %08x [%s]\n", pSize, procNameString); } } if (heap00 == NULL) { heap00 = mDoExt_createSolidHeapFromGame(0xFFFFFFFF, 0x20); if (heap00 == NULL) { OSReport_Error("最大空きヒープサイズで確保失敗。[%s]\n", procNameString); return false; } bool status = fopAcM_callCallback(pActor, pHeapCallback, heap00) != 0; if (!status) { OSReport_Error("最大空きヒープサイズで登録失敗。%08x[%s]\n", heap00->getFreeSize(), procNameString); mDoExt_destroySolidHeap(heap00); return false; } } if (heap00 == NULL) { break; } if (lbl_80450CC8 == 0) { mDoExt_adjustSolidHeap(heap00); pActor->unk_0x0F0 = heap00; return true; } else { JKRSolidHeap* heap = NULL; u32 heap00Size = heap00->getSize(); u32 alignedSize = ALIGN_NEXT(heap00Size - heap00->getFreeSize(), 0x20); if (alignedSize + 0x90 < mDoExt_getGameHeap()->getFreeSize()) { heap = mDoExt_createSolidHeapFromGame(alignedSize, 0x20); } if (heap != NULL) { if (heap < heap00) { mDoExt_destroySolidHeap(heap00); heap00 = NULL; bool status = fopAcM_callCallback(pActor, pHeapCallback, heap) != 0; if (!status) { OSReport_Error("ぴったりサイズで、登録失敗?(バグ)\n"); mDoExt_destroySolidHeap(heap); heap = NULL; } } else { mDoExt_destroySolidHeap(heap); heap = NULL; } } if (heap != NULL) { mDoExt_adjustSolidHeap(heap); pActor->unk_0x0F0 = heap; return true; } if (heap00 != NULL) { mDoExt_adjustSolidHeap(heap00); pActor->unk_0x0F0 = heap00; return true; } OSReport_Error("ばぐばぐです\n"); OSReport_Error("緊急回避措置\n"); lbl_80450CC8 = 0; } } OSReport_Error("fopAcM_entrySolidHeap だめでした [%s]\n", procNameString); return false; } /* 8001A4B0-8001A528 014DF0 0078+00 0/0 4/4 446/446 .text * fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl */ bool fopAcM_entrySolidHeap(fopAc_ac_c* pActor, heapCallbackFunc pHeapCallback, u32 size) { u8 oldCC9 = lbl_80450CC9; if (size & 0x80000000) { lbl_80450CC9 = 1; } u8 oldCC8 = lbl_80450CC8; if (size & 0x20000000) { lbl_80450CC8 = 0; } else if (size & 0x10000000) { lbl_80450CC8 = 1; } bool result = fopAcM_entrySolidHeap_(pActor, pHeapCallback, size & 0xFFFFFF); lbl_80450CC9 = oldCC9; lbl_80450CC8 = oldCC8; return result; } /* 8001A528-8001A538 014E68 0010+00 0/0 0/0 136/136 .text fopAcM_SetMin__FP10fopAc_ac_cfff */ void fopAcM_SetMin(fopAc_ac_c* pActor, f32 minX, f32 minY, f32 minZ) { pActor->mCull.mBox.mMin.set(minX, minY, minZ); } /* 8001A538-8001A548 014E78 0010+00 0/0 0/0 136/136 .text fopAcM_SetMax__FP10fopAc_ac_cfff */ void fopAcM_SetMax(fopAc_ac_c* pActor, f32 maxX, f32 maxY, f32 maxZ) { pActor->mCull.mBox.mMax.set(maxX, maxY, maxZ); } /* 8001A548-8001A564 014E88 001C+00 1/1 0/0 260/260 .text * fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff */ void fopAcM_setCullSizeBox(fopAc_ac_c* pActor, f32 minX, f32 minY, f32 minZ, f32 maxX, f32 maxY, f32 maxZ) { pActor->mCull.mBox.mMin.set(minX, minY, minZ); pActor->mCull.mBox.mMax.set(maxX, maxY, maxZ); } /* 8001A564-8001A578 014EA4 0014+00 0/0 0/0 4/4 .text fopAcM_setCullSizeSphere__FP10fopAc_ac_cffff */ void fopAcM_setCullSizeSphere(fopAc_ac_c* pActor, f32 minX, f32 minY, f32 minZ, f32 radius) { pActor->mCull.mSphere.mCenter.set(minX, minY, minZ); pActor->mCull.mSphere.mRadius = radius; } /* 8001A578-8001A5DC 014EB8 0064+00 0/0 0/0 123/123 .text * fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void fopAcM_setCullSizeBox2(fopAc_ac_c* param_0, J3DModelData* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData.s" } #pragma pop /* 8001A5DC-8001A60C 014F1C 0030+00 0/0 0/0 1/1 .text fopAcM_addAngleY__FP10fopAc_ac_css */ bool fopAcM_addAngleY(fopAc_ac_c* pActor, s16 target, s16 step) { return cLib_chaseAngleS(&fopAcM_GetAngle_p(pActor).y, target, step); } inline void fopAcM_SetSpeed(fopAc_ac_c* pActor, f32 speedX, f32 speedY, f32 speedZ) { pActor->mSpeed.set(speedX, speedY, speedZ); } inline f32 fopAcM_GetSpeedF(const fopAc_ac_c* pActor) { return pActor->mSpeedF; } inline f32 fopAcM_GetGravity(const fopAc_ac_c* pActor) { return pActor->mGravity; } inline f32 fopAcM_GetMaxFallSpeed(const fopAc_ac_c* pActor) { return pActor->mMaxFallSpeed; } inline const cXyz& fopAcM_GetSpeed_p(const fopAc_ac_c* pActor) { return pActor->mSpeed; } inline const cXyz& fopAcM_GetPosition_p(const fopAc_ac_c* pActor) { return pActor->mCurrent.mPosition; } inline void clampMin(f32& val, f32 min) { if (val < min) { val = min; } } /* 8001A60C-8001A660 014F4C 0054+00 1/1 0/0 8/8 .text fopAcM_calcSpeed__FP10fopAc_ac_c */ void fopAcM_calcSpeed(fopAc_ac_c* pActor) { f32 speedF = fopAcM_GetSpeedF(pActor); f32 gravity = fopAcM_GetGravity(pActor); f32 xSpeed = speedF * cM_ssin(pActor->getAngle().GetY()); f32 ySpeed = pActor->mSpeed.y + gravity; f32 zSpeed = speedF * cM_scos(pActor->getAngle().GetY()); clampMin(ySpeed, fopAcM_GetMaxFallSpeed(pActor)); fopAcM_SetSpeed(pActor, xSpeed, ySpeed, zSpeed); } /* 8001A660-8001A6CC 014FA0 006C+00 1/1 1/1 17/17 .text fopAcM_posMove__FP10fopAc_ac_cPC4cXyz */ void fopAcM_posMove(fopAc_ac_c* pActor, const cXyz* pXyz) { pActor->mCurrent.mPosition += pActor->mSpeed; if (pXyz != NULL) { pActor->mCurrent.mPosition += *pXyz; } } /* 8001A6CC-8001A710 01500C 0044+00 0/0 5/5 137/137 .text fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz */ void fopAcM_posMoveF(fopAc_ac_c* pActor, const cXyz* pXyz) { fopAcM_calcSpeed(pActor); fopAcM_posMove(pActor, pXyz); } /* 8001A710-8001A738 015050 0028+00 1/1 26/26 596/596 .text * fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c */ s16 fopAcM_searchActorAngleY(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { return cLib_targetAngleY(&pActorA->mCurrent.mPosition, &pActorB->mCurrent.mPosition); } /* ############################################################################################## */ /* 80451C04-80451C08 000204 0004+00 13/13 0/0 0/0 .sdata2 @4645 */ SECTION_SDATA2 static u8 lit_4645[4] = { 0x00, 0x00, 0x00, 0x00, }; inline f32 JMAFastSqrt__Ff(f32 f) { if (f > /* 0.0f */ FLOAT_LABEL(lit_4645)) { f *= __frsqrte(f); // generates a useless frsp } return f; } inline f32 square(f32 f) { return f * f; } /* 8001A738-8001A79C 015078 0064+00 0/0 0/0 13/13 .text * fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c */ #ifdef NON_MATCHING s16 fopAcM_searchActorAngleX(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { const cXyz& posA = fopAcM_GetPosition_p(pActorA); const cXyz& posB = fopAcM_GetPosition_p(pActorB); return cM_atan2s(posB.y - posA.y, JMAFastSqrt__Ff(square(posB.x - posA.x) + square(posB.z - posA.z))); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s16 fopAcM_searchActorAngleX(fopAc_ac_c const* param_0, fopAc_ac_c const* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c.s" } #pragma pop #endif /* 8001A79C-8001A7E0 0150DC 0044+00 0/0 3/3 15/15 .text * fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c */ s32 fopAcM_seenActorAngleY(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { return abs(static_cast( cLib_targetAngleY(&pActorA->mCurrent.mPosition, &pActorB->mCurrent.mPosition) - pActorA->mCollisionRot.y)); } /* ############################################################################################## */ /* 80451C08-80451C10 000208 0008+00 3/3 0/0 0/0 .sdata2 @4745 */ SECTION_SDATA2 static f64 lit_4745 = 0.5; /* 80451C10-80451C18 000210 0008+00 3/3 0/0 0/0 .sdata2 @4746 */ SECTION_SDATA2 static f64 lit_4746 = 3.0; /* 80451C18-80451C20 000218 0008+00 4/4 0/0 0/0 .sdata2 @4747 */ SECTION_SDATA2 static u8 lit_4747[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; inline f32 local_sqrtf(f32 mag) { if (mag > FLOAT_LABEL(lit_4645)) { f64 tmpd = __frsqrte(mag); tmpd = DOUBLE_LABEL(lit_4745) * tmpd * (DOUBLE_LABEL(lit_4746) - tmpd * tmpd * mag); tmpd = DOUBLE_LABEL(lit_4745) * tmpd * (DOUBLE_LABEL(lit_4746) - tmpd * tmpd * mag); return DOUBLE_LABEL(lit_4745) * tmpd * (DOUBLE_LABEL(lit_4746) - tmpd * tmpd * mag) * mag; } else if (mag < DOUBLE_LABEL(lit_4747)) { return __float_nan[0]; } else if (fpclassify(mag) == 1) { return __float_nan[0]; } else { return mag; } } /* 8001A7E0-8001A914 015120 0134+00 0/0 5/5 188/188 .text * fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c */ f32 fopAcM_searchActorDistance(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { cXyz tmp = (pActorB->mCurrent.mPosition - pActorA->mCurrent.mPosition); return local_sqrtf(tmp.abs2()); } /* 8001A914-8001A964 015254 0050+00 0/0 0/0 2/2 .text * fopAcM_searchActorDistance2__FPC10fopAc_ac_cPC10fopAc_ac_c */ f32 fopAcM_searchActorDistance2(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { cXyz tmp = (pActorB->mCurrent.mPosition - pActorA->mCurrent.mPosition); return tmp.abs2(); } /* 8001A964-8001AA94 0152A4 0130+00 0/0 3/3 125/125 .text * fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c */ #ifdef NON_MATCHING // matches besides data f32 fopAcM_searchActorDistanceXZ(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { const cXyz& posA = fopAcM_GetPosition_p(pActorA); const cXyz& posB = fopAcM_GetPosition_p(pActorB); return sqrtf((posB - posA).abs2XZ()); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm f32 fopAcM_searchActorDistanceXZ(fopAc_ac_c const* param_0, fopAc_ac_c const* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c.s" } #pragma pop #endif /* 8001AA94-8001AAE0 0153D4 004C+00 1/1 4/4 30/30 .text * fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c */ #ifdef NON_MATCHING // matches besides data f32 fopAcM_searchActorDistanceXZ2(const fopAc_ac_c* pActorA, const fopAc_ac_c* pActorB) { const cXyz& posA = fopAcM_GetPosition_p(pActorA); const cXyz& posB = fopAcM_GetPosition_p(pActorB); return (posB - posA).abs2XZ(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm f32 fopAcM_searchActorDistanceXZ2(fopAc_ac_c const* param_0, fopAc_ac_c const* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c.s" } #pragma pop #endif /* ############################################################################################## */ /* 80451C20-80451C24 000220 0004+00 1/1 0/0 0/0 .sdata2 @4922 */ SECTION_SDATA2 static f32 lit_4922 = 40.0f; /* 80451C24-80451C28 000224 0004+00 1/1 0/0 0/0 .sdata2 @4923 */ SECTION_SDATA2 static f32 lit_4923 = 55.0f; /* 8001AAE0-8001AC40 015420 0160+00 0/0 0/0 2/2 .text * fopAcM_rollPlayerCrash__FPC10fopAc_ac_cfUlffif */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_rollPlayerCrash(fopAc_ac_c const* param_0, f32 param_1, u32 param_2, f32 param_3, f32 param_4, int param_5, f32 param_6) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_rollPlayerCrash__FPC10fopAc_ac_cfUlffif.s" } #pragma pop /* 8001AC40-8001ACEC 015580 00AC+00 0/0 0/0 2/2 .text fopAcM_checkCullingBox__FPA4_fffffff */ s32 fopAcM_checkCullingBox(Mtx pMtx, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2) { Vec tmp1 = {x1, y1, z1}; Vec tmp2 = {x2, y2, z2}; Mtx tmpMtx; PSMTXConcat(j3dSys.mMtx, pMtx, tmpMtx); return mDoLib_clipper::mClipper.clip(tmpMtx, &tmp2, &tmp1) != 0; } /* ############################################################################################## */ /* 803A35F0-803A3740 000710 0150+00 1/1 0/0 0/0 .data l_cullSizeBox */ SECTION_DATA static u8 l_cullSizeBox[336] = { 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x20, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0xFA, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC1, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xC8, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0xC2, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x96, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0xC2, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFA, 0x00, 0x00, 0x42, 0xFA, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x42, 0xFA, 0x00, 0x00, 0xC3, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x16, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0xC4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x16, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x44, 0x61, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0xC3, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x43, 0xE1, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0xC2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0xC2, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x96, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x43, 0x52, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0xC2, 0x8C, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0xC2, 0xA0, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, 0x43, 0x70, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0xC2, 0x70, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0xC2, 0x70, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, }; /* 803A3740-803A37C0 000860 0080+00 1/1 0/0 0/0 .data l_cullSizeSphere */ SECTION_DATA static u8 l_cullSizeSphere[128] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, }; /* 8001ACEC-8001B058 01562C 036C+00 0/0 1/1 1/1 .text fopAcM_cullingCheck__FPC10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_cullingCheck(fopAc_ac_c const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_cullingCheck__FPC10fopAc_ac_c.s" } #pragma pop /* 8001B058-8001B068 015998 0010+00 5/5 0/0 0/0 .text event_second_actor__FUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 event_second_actor(u16 param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/event_second_actor__FUs.s" } #pragma pop /* 8001B068-8001B0FC 0159A8 0094+00 0/0 3/3 0/0 .text * fopAcM_orderTalkEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderTalkEvent(fopAc_ac_c* param_0, fopAc_ac_c* param_1, u16 param_2, u16 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderTalkEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001B0FC-8001B19C 015A3C 00A0+00 0/0 1/1 0/0 .text * fopAcM_orderTalkItemBtnEvent__FUsP10fopAc_ac_cP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderTalkItemBtnEvent(u16 param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2, u16 param_3, u16 param_4) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderTalkItemBtnEvent__FUsP10fopAc_ac_cP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001B19C-8001B244 015ADC 00A8+00 0/0 3/3 16/16 .text fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderSpeakEvent(fopAc_ac_c* param_0, u16 param_1, u16 param_2) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001B244-8001B334 015B84 00F0+00 0/0 2/2 0/0 .text * fopAcM_orderDoorEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderDoorEvent(fopAc_ac_c* param_0, fopAc_ac_c* param_1, u16 param_2, u16 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderDoorEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001B334-8001B3CC 015C74 0098+00 0/0 1/1 0/0 .text * fopAcM_orderCatchEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderCatchEvent(fopAc_ac_c* param_0, fopAc_ac_c* param_1, u16 param_2, u16 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderCatchEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001B3CC-8001B4E0 015D0C 0114+00 0/0 2/2 6/6 .text * fopAcM_orderOtherEvent__FP10fopAc_ac_cPCcUsUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderOtherEvent(fopAc_ac_c* param_0, char const* param_1, u16 param_2, u16 param_3, u16 param_4) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderOtherEvent__FP10fopAc_ac_cPCcUsUsUs.s" } #pragma pop /* 8001B4E0-8001B5E4 015E20 0104+00 0/0 1/1 2/2 .text * fopAcM_orderOtherEvent__FP10fopAc_ac_cP10fopAc_ac_cPCcUsUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderOtherEvent(fopAc_ac_c* param_0, fopAc_ac_c* param_1, char const* param_2, u16 param_3, u16 param_4, u16 param_5) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderOtherEvent__FP10fopAc_ac_cP10fopAc_ac_cPCcUsUsUs.s" } #pragma pop /* 8001B5E4-8001B67C 015F24 0098+00 0/0 2/2 41/41 .text * fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderChangeEventId(fopAc_ac_c* param_0, s16 param_1, u16 param_2, u16 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs.s" } #pragma pop /* 8001B67C-8001B7B4 015FBC 0138+00 0/0 10/10 101/101 .text * fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderOtherEventId(fopAc_ac_c* param_0, s16 param_1, u8 param_2, u16 param_3, u16 param_4, u16 param_5) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs.s" } #pragma pop /* 8001B7B4-8001B8E0 0160F4 012C+00 1/1 1/1 4/4 .text * fopAcM_orderMapToolEvent__FP10fopAc_ac_cUcsUsUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderMapToolEvent(fopAc_ac_c* param_0, u8 param_1, s16 param_2, u16 param_3, u16 param_4, u16 param_5) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderMapToolEvent__FP10fopAc_ac_cUcsUsUsUs.s" } #pragma pop /* 8001B8E0-8001B908 016220 0028+00 0/0 1/1 1/1 .text * fopAcM_orderMapToolAutoNextEvent__FP10fopAc_ac_cUcsUsUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderMapToolAutoNextEvent(fopAc_ac_c* param_0, u8 param_1, s16 param_2, u16 param_3, u16 param_4, u16 param_5) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderMapToolAutoNextEvent__FP10fopAc_ac_cUcsUsUsUs.s" } #pragma pop /* 8001B908-8001B9D0 016248 00C8+00 0/0 0/0 106/106 .text * fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderPotentialEvent(fopAc_ac_c* param_0, u16 param_1, u16 param_2, u16 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs.s" } #pragma pop /* 8001B9D0-8001BA7C 016310 00AC+00 0/0 3/3 12/12 .text fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderItemEvent(fopAc_ac_c* param_0, u16 param_1, u16 param_2) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001BA7C-8001BB14 0163BC 0098+00 0/0 1/1 0/0 .text * fopAcM_orderTreasureEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_orderTreasureEvent(fopAc_ac_c* param_0, fopAc_ac_c* param_1, u16 param_2, u16 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_orderTreasureEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs.s" } #pragma pop /* 8001BB14-8001BB44 016454 0030+00 0/0 11/11 10/10 .text * fopAcM_getTalkEventPartner__FPC10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_getTalkEventPartner(fopAc_ac_c const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getTalkEventPartner__FPC10fopAc_ac_c.s" } #pragma pop /* 8001BB44-8001BB74 016484 0030+00 0/0 5/5 0/0 .text fopAcM_getItemEventPartner__FPC10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_getItemEventPartner(fopAc_ac_c const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getItemEventPartner__FPC10fopAc_ac_c.s" } #pragma pop /* 8001BB74-8001BBE8 0164B4 0074+00 0/0 1/1 0/0 .text fopAcM_getEventPartner__FPC10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_getEventPartner(fopAc_ac_c const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getEventPartner__FPC10fopAc_ac_c.s" } #pragma pop /* 8001BBE8-8001BC74 016528 008C+00 0/0 5/5 43/43 .text * fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_createItemForPresentDemo(cXyz const* param_0, int param_1, u8 param_2, int param_3, int param_4, csXyz const* param_5, cXyz const* param_6) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz.s" } #pragma pop /* 8001BC74-8001BCFC 0165B4 0088+00 0/0 2/2 10/10 .text * fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_createItemForTrBoxDemo(cXyz const* param_0, int param_1, int param_2, int param_3, csXyz const* param_4, cXyz const* param_5) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz.s" } #pragma pop /* ############################################################################################## */ /* 80451C28-80451C2C 000228 0004+00 1/1 0/0 0/0 .sdata2 @5584 */ SECTION_SDATA2 static f32 lit_5584 = 15.999899864196777f; /* 8001BCFC-8001BE14 01663C 0118+00 2/2 0/0 0/0 .text fopAcM_getItemNoFromTableNo__FUc */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_getItemNoFromTableNo(u8 param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getItemNoFromTableNo__FUc.s" } #pragma pop /* 8001BE14-8001BF64 016754 0150+00 0/0 0/0 9/9 .text * fopAcM_createItemFromEnemyID__FUcPC4cXyziiPC5csXyzPC4cXyzPfPf */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_createItemFromEnemyID(u8 param_0, cXyz const* param_1, int param_2, int param_3, csXyz const* param_4, cXyz const* param_5, f32* param_6, f32* param_7) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_createItemFromEnemyID__FUcPC4cXyziiPC5csXyzPC4cXyzPfPf.s" } #pragma pop /* 8001BF64-8001C078 0168A4 0114+00 1/1 0/0 11/11 .text * fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_createItemFromTable(cXyz const* param_0, int param_1, int param_2, int param_3, csXyz const* param_4, int param_5, cXyz const* param_6, f32* param_7, f32* param_8, bool param_9) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb.s" } #pragma pop /* 8001C078-8001C0D4 0169B8 005C+00 2/2 0/0 0/0 .text * fopAcM_createDemoItem__FPC4cXyziiPC5csXyziPC4cXyzUc */ s32 fopAcM_createDemoItem(const cXyz* pPos, int itemNo, int itemBitNo, const csXyz* pRot, int roomNo, const cXyz* scale, u8 param_7) { if (itemNo == 0xFF) { return -1; } else { // TODO: actor enum return fopAcM_create(0x21d, (itemNo & 0xFF) | (itemBitNo & 0x7F) << 0x8 | (param_7 << 0x10), pPos, roomNo, pRot, scale, -1); } } /* 8001C0D4-8001C174 016A14 00A0+00 0/0 0/0 18/18 .text * fopAcM_createItemForBoss__FPC4cXyziiPC5csXyzPC4cXyzffi */ s32 fopAcM_createItemForBoss(const cXyz* pPos, int param_2, int roomNo, const csXyz* pRot, const cXyz* pScale, f32 speed, f32 speedY, int param_8) { fopAc_ac_c* actor = static_cast( fopAcM_fastCreate(0x21b, 0xFFFF0000 | param_8 << 0x8 | (param_2 & 0xFF), pPos, roomNo, pRot, pScale, -1, NULL, NULL)); if (actor != NULL) { actor->mSpeedF = speed; actor->mSpeed.y = speedY; } return fopAcM_GetID(actor); } /* 8001C174-8001C1B8 016AB4 0044+00 0/0 0/0 2/2 .text * fopAcM_createItemForMidBoss__FPC4cXyziiPC5csXyzPC4cXyzii */ s32 fopAcM_createItemForMidBoss(const cXyz* pPos, int param_2, int param_3, const csXyz* pRot, const cXyz* param_5, int param_6, int param_7) { return fopAcM_createItem(pPos, param_2, param_7, param_3, &csXyz(csXyz::Zero), param_5, 0x6); } /* 8001C1B8-8001C1FC 016AF8 0044+00 2/2 0/0 1/1 .text * fopAcM_createItemForDirectGet__FPC4cXyziiPC5csXyzPC4cXyzff */ void* fopAcM_createItemForDirectGet(const cXyz* pPos, int param_2, int param_3, const csXyz* pRot, const cXyz* param_5, f32 param_6, f32 param_7) { return fopAcM_fastCreateItem(pPos, param_2, param_3, pRot, param_5, ¶m_6, ¶m_7, -1, 0x7, NULL); } /* 8001C1FC-8001C240 016B3C 0044+00 0/0 2/2 3/3 .text * fopAcM_createItemForSimpleDemo__FPC4cXyziiPC5csXyzPC4cXyzff */ void* fopAcM_createItemForSimpleDemo(const cXyz* pPos, int param_2, int param_3, const csXyz* pRot, const cXyz* param_5, f32 param_6, f32 param_7) { return fopAcM_fastCreateItem(pPos, param_2, param_3, pRot, param_5, ¶m_6, ¶m_7, -1, 0x4, NULL); } inline u32 maskShift(int val, int bits, int shift) { return (val & ((1 << bits) - 1)) << shift; } inline u32 makeItemParams(int iNo, int p8, int unk, int p9) { // iNo = ; // u32 part1 = (p8 & 0xFF) << 0x8; // iNo &= 0xFF; // u32 part2 = (iNo); // u32 part3 = (unk & 0xFF) << 0x10; // u32 part4 = ((p9 & 0xF) << 0x18); // return part1 | part2 | part3 | part4; // u32 part2 = (p8 & 0xFF) << 0x8; // u32 part2 = maskShift(p8, 8, 0x8); // part2 |= maskShift(iNo, 8, 0); // part2 |= maskShift(unk, 8, 0x10); // part2 |= maskShift(p9, 4, 0x18); // return part2; return maskShift(p8, 8, 0x8) | maskShift(iNo, 8, 0) | maskShift(unk, 8, 0x10) | maskShift(p9, 4, 0x18); } /* ############################################################################################## */ /* 80451C2C-80451C30 00022C 0004+00 2/2 0/0 0/0 .sdata2 @5711 */ SECTION_SDATA2 static f32 lit_5711 = 32767.0f; /* 8001C240-8001C3E0 016B80 01A0+00 1/1 1/1 17/17 .text * fopAcM_createItem__FPC4cXyziiiPC5csXyzPC4cXyzi */ s32 fopAcM_createItem(const cXyz* pPos, int itemNo, int param_3, int roomNo, const csXyz* pRot, const cXyz* pScale, int param_7) { if (itemNo == 0xFF) { return 0xFFFFFFFF; } csXyz tmps(csXyz::Zero); if (pRot != NULL) { tmps = *pRot; } else { tmps.y = cM_rndFX(FLOAT_LABEL(/* 32767.0f */ lit_5711)); } tmps.z = 0xFF; u32 itemActorParams = makeItemParams(check_itemno(itemNo), param_3, 0xFF, param_7); switch (itemNo) { case RECOVERY_FAILY: return fopAcM_create(0x13f, 0xFFFFFFFF, pPos, roomNo, pRot, pScale, -1); case KAKERA_HEART: case UTAWA_HEART: return fopAcM_create(0x21b, itemActorParams, pPos, roomNo, pRot, pScale, -1); case TRIPLE_HEART: for (int i = 0; i < 2; i++) { fopAcM_create(0x218, itemActorParams, pPos, roomNo, &tmps, pScale, -1); tmps.y = cM_rndFX(FLOAT_LABEL(lit_5711)); } default: return fopAcM_create(0x218, itemActorParams, pPos, roomNo, &tmps, pScale, -1); } } /* 8001C3E0-8001C5B0 016D20 01D0+00 1/1 0/0 0/0 .text * fopAcM_fastCreateItem2__FPC4cXyziiiiPC5csXyzPC4cXyz */ void* fopAcM_fastCreateItem2(const cXyz* pPos, int itemNo, int param_3, int roomNo, int param_5, const csXyz* pRot, const cXyz* pScale) { csXyz tmps(csXyz::Zero); if (itemNo == 0xFF) { return NULL; } if (pRot != NULL) { tmps = *pRot; } else { tmps.y = cM_rndFX(FLOAT_LABEL(/* 32767.0f */ lit_5711)); } tmps.z = 0xFF; int tmpItemNo = check_itemno(itemNo); u32 itemActorParams = (param_3 & 0xFF) << 0x8 | (tmpItemNo & 0xFF) | 0xFF << 0x10 | ((param_5 & 0xF) << 0x18); switch (itemNo) { case RECOVERY_FAILY: return fopAcM_fastCreate(0x13f, 0xFFFFFFFF, pPos, roomNo, pRot, pScale, -1, NULL, NULL); case KAKERA_HEART: case UTAWA_HEART: return fopAcM_fastCreate(0x21b, itemActorParams, pPos, roomNo, pRot, pScale, -1, NULL, NULL); case TRIPLE_HEART: for (int i = 0; i < 2; i++) { fopAcM_fastCreate(0x218, itemActorParams, pPos, roomNo, &tmps, pScale, -1, NULL, NULL); tmps.y = cM_rndFX(FLOAT_LABEL(lit_5711)); } default: return fopAcM_fastCreate(0x218, itemActorParams, pPos, roomNo, &tmps, pScale, -1, NULL, NULL); } } /* ############################################################################################## */ /* 80451C30-80451C34 000230 0004+00 1/1 0/0 0/0 .sdata2 @5808 */ SECTION_SDATA2 static f32 lit_5808 = 2.0f; /* 80451C34-80451C38 000234 0004+00 1/1 0/0 0/0 .sdata2 @5809 */ SECTION_SDATA2 static f32 lit_5809 = 8192.0f; /* 80451C38-80451C3C 000238 0004+00 4/4 0/0 0/0 .sdata2 @5810 */ SECTION_SDATA2 static f32 lit_5810 = 1.0f; /* 80451C3C-80451C40 00023C 0004+00 1/1 0/0 0/0 .sdata2 @5811 */ SECTION_SDATA2 static f32 lit_5811 = 3.0f / 10.0f; /* 80451C40-80451C44 000240 0004+00 1/1 0/0 0/0 .sdata2 @5812 */ SECTION_SDATA2 static f32 lit_5812 = 1.0f / 5.0f; /* 8001C5B0-8001C870 016EF0 02C0+00 3/3 0/0 4/4 .text * fopAcM_fastCreateItem__FPC4cXyziiPC5csXyzPC4cXyzPfPfiiPFPv_i */ #ifdef NON_MATCHING void* fopAcM_fastCreateItem(const cXyz* pPos, int param_2, int param_3, const csXyz* pRot, const cXyz* param_5, f32* param_6, f32* param_7, int param_8, int param_9, createFunc param_10) { // regalloc: r30 -> r29, r31 -> r30, r29 -> r31 if (param_2 == 0xFF) { return NULL; } csXyz tmps; u32 tmpItemNo = check_itemno(param_2); // u32 itemActorParams; // make_prm_item(&itemActorParams, tmpItemNo, param_8, param_9); u32 itemActorParams = makeItemParams(tmpItemNo, param_8, 0xFF, param_9); // uses r0 instead of r3 if (param_6 != NULL && isHeart(param_2) != false) { *param_6 = FLOAT_LABEL(/* 2.0f */ lit_5808) * *param_6; } switch (param_2) { case RECOVERY_FAILY: return fopAcM_fastCreate(0x13f, 0xFFFFFFFF, pPos, param_3, pRot, param_5, -1, NULL, NULL); case KAKERA_HEART: case UTAWA_HEART: return fopAcM_fastCreate(0x21b, itemActorParams, pPos, param_3, pRot, param_5, -1, NULL, NULL); case TRIPLE_HEART: for (int i = 0; i < 2; i++) { if (pRot != NULL) { tmps = *pRot; } else { tmps = csXyz::Zero; } tmps.z = 0xFF; tmps.y += (s16)cM_rndFX(FLOAT_LABEL(/* 8192.0f */ lit_5809)); fopAc_ac_c* actor = static_cast(fopAcM_fastCreate( 0x218, itemActorParams, pPos, param_3, &tmps, param_5, -1, param_10, NULL)); if (actor != NULL) { if (param_6 != NULL) { actor->mSpeedF = *param_6 * (FLOAT_LABEL(/* 1.0f */ lit_5810) + cM_rndFX(FLOAT_LABEL(/* 0.3f */ lit_5811))); } if (param_7 != NULL) { actor->mSpeed.y = *param_7 * (FLOAT_LABEL(/* 1.0f */ lit_5810) + cM_rndFX(FLOAT_LABEL(/* 0.2f */ lit_5812))); } } } default: if (pRot != NULL) { tmps = *pRot; } else { tmps = csXyz::Zero; } tmps.z = 0xFF; fopAc_ac_c* actor = static_cast(fopAcM_fastCreate( 0x218, itemActorParams, pPos, param_3, &tmps, param_5, -1, param_10, NULL)); if (actor != NULL) { if (param_6 != NULL) { actor->mSpeedF = *param_6; } if (param_7 != NULL) { actor->mSpeed.y = *param_7; } } return actor; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void* fopAcM_fastCreateItem(cXyz const* param_0, int param_1, int param_2, csXyz const* param_3, cXyz const* param_4, f32* param_5, f32* param_6, int param_7, int param_8, int (*param_9)(void*)) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_fastCreateItem__FPC4cXyziiPC5csXyzPC4cXyzPfPfiiPFPv_i.s" } #pragma pop #endif /* ############################################################################################## */ /* 80451C44-80451C48 000244 0004+00 1/1 0/0 0/0 .sdata2 @5845 */ SECTION_SDATA2 static f32 lit_5845 = 2048.0f; inline void make_prm_bokkuri(u32* pActorParams, csXyz* pRot, u8 param_2, u8 param_3, u8 param_4, u8 param_5, u8 param_6) { pRot->x = (param_4 << 0x8) | (param_3 & 0xFF); pRot->z = (param_6 << 0xD) | (param_2 << 0x1) | param_5; } /* 8001C870-8001C95C 0171B0 00EC+00 0/0 0/0 1/1 .text fopAcM_createBokkuri__FUsPC4cXyziiiPC4cXyzii */ s32 fopAcM_createBokkuri(u16 enemyNo, const cXyz* pPos, int param_3, int param_4, int roomNo, const cXyz* param_6, int param_7, int param_8) { csXyz tmps(0, 0, 0); if (param_6 != NULL) { tmps.y = param_6->atan2sX_Z(); tmps.y += static_cast(FLOAT_LABEL(/* 2048.0f */ lit_5845) * cM_rndFX(FLOAT_LABEL(/* 1.0f */ lit_5810))); param_8 = 1; } u32 actorParams = 0; make_prm_bokkuri(&actorParams, &tmps, 6, param_3, param_4, param_7, param_8); return fopAcM_create(0x2fc, enemyNo, actorParams, pPos, roomNo, &tmps, NULL, 0xFF, NULL); } inline void make_prm_warp_hole(u32* actorParams, u8 p1, u8 p2, u8 p3) { u32 pp1 = (p3 << 0x8); u32 pp2 = (p2 << 0x10); u32 pp3 = (p1 << 0x1B) | 0x170000FF; *actorParams = pp2 | pp3 | pp1; } /* 8001C95C-8001C9CC 01729C 0070+00 0/0 0/0 12/12 .text * fopAcM_createWarpHole__FPC4cXyzPC5csXyziUcUcUc */ s32 fopAcM_createWarpHole(const cXyz* pPos, const csXyz* pRot, int roomNo, u8 param_4, u8 param_5, u8 param_6) { if (param_6 == 0xFF) { param_6 = param_4; } u32 actorParams; make_prm_warp_hole(&actorParams, param_5, param_6, param_4); return fopAcM_create(0x163, actorParams, pPos, roomNo, pRot, NULL, -1); } s32 fopAc_IsActor(void*); /* 8001C9CC-8001CA1C 01730C 0050+00 1/1 0/0 0/0 .text enemySearchJugge__FPvPv */ void* enemySearchJugge(void* pActor, void* pData) { if (pActor != NULL && fopAc_IsActor(pActor) && static_cast(pActor)->unk_0x496 == 2) { return pActor; } else { return NULL; } } /* 8001CA1C-8001CAD8 01735C 00BC+00 0/0 0/0 6/6 .text fopAcM_myRoomSearchEnemy__FSc */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_myRoomSearchEnemy(s8 param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_myRoomSearchEnemy__FSc.s" } #pragma pop /* 8001CAD8-8001CB48 017418 0070+00 0/0 0/0 81/81 .text * fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc */ s32 fopAcM_createDisappear(const fopAc_ac_c* pActor, const cXyz* pPos, u8 param_3, u8 param_4, u8 param_5) { s8 roomNo = pActor->mCurrent.mRoomNo; return fopAcM_GetID(fopAcM_fastCreate(0x139, (param_5 << 0x10) | (param_3 << 0x8) | param_4, pPos, roomNo, &pActor->mCurrent.mAngle, NULL, 0xFF, NULL, NULL)); } /* 8001CB48-8001CBA0 017488 0058+00 0/0 6/6 7/7 .text fopAcM_setCarryNow__FP10fopAc_ac_ci */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_setCarryNow(fopAc_ac_c* param_0, int param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_setCarryNow__FP10fopAc_ac_ci.s" } #pragma pop /* 8001CBA0-8001CC5C 0174E0 00BC+00 0/0 5/5 21/21 .text fopAcM_cancelCarryNow__FP10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_cancelCarryNow(fopAc_ac_c* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_cancelCarryNow__FP10fopAc_ac_c.s" } #pragma pop /* 8001CC5C-8001CDFC 01759C 01A0+00 0/0 0/0 9/9 .text fopAcM_otoCheck__FPC10fopAc_ac_cf */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm f32 fopAcM_otoCheck(fopAc_ac_c const* param_0, f32 param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_otoCheck__FPC10fopAc_ac_cf.s" } #pragma pop /* ############################################################################################## */ /* 80451C48-80451C4C 000248 0004+00 2/2 0/0 0/0 .sdata2 @6035 */ SECTION_SDATA2 static f32 lit_6035 = 100.0f; /* 8001CDFC-8001CED0 01773C 00D4+00 0/0 0/0 49/49 .text * fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_otherBgCheck(fopAc_ac_c const* param_0, fopAc_ac_c const* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c.s" } #pragma pop /* ############################################################################################## */ /* 80451C4C-80451C50 00024C 0004+00 1/1 0/0 0/0 .sdata2 @6068 */ SECTION_SDATA2 static f32 lit_6068 = 50.0f; /* 8001CED0-8001CFD8 017810 0108+00 0/0 0/0 18/18 .text fopAcM_wayBgCheck__FPC10fopAc_ac_cff */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_wayBgCheck(fopAc_ac_c const* param_0, f32 param_1, f32 param_2) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_wayBgCheck__FPC10fopAc_ac_cff.s" } #pragma pop /* 8001CFD8-8001D020 017918 0048+00 0/0 0/0 2/2 .text fopAcM_plAngleCheck__FPC10fopAc_ac_cs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_plAngleCheck(fopAc_ac_c const* param_0, s16 param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_plAngleCheck__FPC10fopAc_ac_cs.s" } #pragma pop /* ############################################################################################## */ /* 803F1C00-803F1C0C 01E920 000C+00 1/1 0/0 0/0 .bss @4176 */ static u8 lit_4176[12]; /* 803F1C0C-803F1C18 01E92C 000C+00 0/0 0/0 0/0 .bss @5078 */ #pragma push #pragma force_active on static u8 lit_5078[12]; #pragma pop /* 803F1C18-803F1C24 01E938 000C+00 0/0 0/0 0/0 .bss min$5077 */ #pragma push #pragma force_active on static u8 min[12]; #pragma pop /* 803F1C24-803F1C30 01E944 000C+00 0/0 0/0 0/0 .bss @5115 */ #pragma push #pragma force_active on static u8 lit_5115[12]; #pragma pop /* 803F1C30-803F1C3C 01E950 000C+00 0/0 0/0 0/0 .bss max$5114 */ #pragma push #pragma force_active on static u8 max[12]; #pragma pop /* 803F1C3C-803F1C48 01E95C 000C+00 0/1 0/0 0/0 .bss @6481 */ #pragma push #pragma force_active on static u8 lit_6481[12]; #pragma pop /* 803F1C48-803F1CB8 01E968 0070+00 1/2 4/4 9/9 .bss mLineCheck__11fopAcM_lc_c */ u8 fopAcM_lc_c::mLineCheck[112]; /* 803F1CB8-803F1CC4 01E9D8 000C+00 0/1 0/0 0/0 .bss @6503 */ #pragma push #pragma force_active on static u8 lit_6503[12]; #pragma pop /* 803F1CC4-803F1D18 01E9E4 0054+00 2/3 6/6 26/26 .bss mGndCheck__11fopAcM_gc_c */ u8 fopAcM_gc_c::mGndCheck[84]; /* 80450CCC-80450CD0 0001CC 0001+03 1/1 0/0 0/0 .sbss l_hio */ static u8 l_hio[1 + 3 /* padding */]; /* 80450CD0-80450CD4 0001D0 0004+00 2/2 7/7 103/103 .sbss mGroundY__11fopAcM_gc_c */ f32 fopAcM_gc_c::mGroundY; /* 8001D020-8001D10C 017960 00EC+00 0/0 0/0 96/96 .text * fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_effSmokeSet1(u32* param_0, u32* param_1, cXyz const* param_2, csXyz const* param_3, f32 param_4, dKy_tevstr_c const* param_5, int param_6) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci.s" } #pragma pop /* ############################################################################################## */ /* 80451C50-80451C54 000250 0004+00 1/1 0/0 0/0 .sdata2 hamon_name$6107 */ SECTION_SDATA2 static u8 hamon_name[4] = { 0x01, 0xB2, 0x01, 0xB3, }; /* 8001D10C-8001D1F4 017A4C 00E8+00 0/0 1/1 41/41 .text fopAcM_effHamonSet__FPUlPC4cXyzff */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_effHamonSet(u32* param_0, cXyz const* param_1, f32 param_2, f32 param_3) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_effHamonSet__FPUlPC4cXyzff.s" } #pragma pop /* 8001D1F4-8001D1FC 017B34 0008+00 0/0 0/0 7/7 .text fopAcM_riverStream__FP4cXyzPsPff */ s32 fopAcM_riverStream(cXyz* param_0, s16* param_1, f32* param_2, f32 param_3) { return 0; } /* ############################################################################################## */ /* 80451C54-80451C58 000254 0004+00 1/1 0/0 0/0 .sdata2 @6174 */ SECTION_SDATA2 static f32 lit_6174 = 150.0f; /* 8001D1FC-8001D32C 017B3C 0130+00 0/0 0/0 12/12 .text fopAcM_carryOffRevise__FP10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_carryOffRevise(fopAc_ac_c* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_carryOffRevise__FP10fopAc_ac_c.s" } #pragma pop /* 8001D32C-8001D3D4 017C6C 00A8+00 1/1 0/0 0/0 .text vectle_calc__FPC10DOUBLE_POSP4cXyz */ static void vectle_calc(const DOUBLE_POS* pDpos, cXyz* pOut) { f64 len = sqrt(pDpos->x * pDpos->x + pDpos->y * pDpos->y + pDpos->z * pDpos->z); if (DOUBLE_LABEL(/* 0.0 */ lit_4747) != len) { pOut->x = pDpos->x / len; pOut->y = pDpos->y / len; pOut->z = pDpos->z / len; } else { f32 tmp0 = FLOAT_LABEL(/* 0.0f */ lit_4645); // temp not needed when data is moved pOut->x = tmp0; pOut->y = tmp0; pOut->z = tmp0; } } /* 8001D3D4-8001D42C 017D14 0058+00 1/1 0/0 0/0 .text get_vectle_calc__FPC4cXyzPC4cXyzP4cXyz */ static void get_vectle_calc(const cXyz* pXyzA, const cXyz* pXyzB, cXyz* pOut) { DOUBLE_POS dPos; dPos.x = pXyzB->x - pXyzA->x; dPos.y = pXyzB->y - pXyzA->y; dPos.z = pXyzB->z - pXyzA->z; vectle_calc(&dPos, pOut); } /* ############################################################################################## */ /* 80378898-803788C8 004EF8 0030+00 1/1 0/0 0/0 .rodata mtx_adj$6195 */ SECTION_RODATA static Mtx const mtx_adj = { {0.5f, 0.0f, 0.0f, 0.5f}, {0.0f, -0.5f, 0.0f, 0.5f}, {0.0f, 0.0f, 1.0f, 0.0f}, }; COMPILER_STRIP_GATE(0x80378898, &mtx_adj); /* 8001D42C-8001D5A4 017D6C 0178+00 0/0 3/3 40/40 .text * fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void fopAcM_setEffectMtx(fopAc_ac_c const* param_0, J3DModelData const* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData.s" } #pragma pop /* 8001D5A4-8001D5EC 017EE4 0048+00 1/1 0/0 0/0 .text fopAcM_getProcNameString__FPC10fopAc_ac_c */ static const char* fopAcM_getProcNameString(const fopAc_ac_c* pActor) { const char* name = dStage_getName2(pActor->mBase.mBsTypeId, pActor->unk_0x499); return name != NULL ? name : "UNKOWN"; } /* 8001D5EC-8001D698 017F2C 00AC+00 1/1 0/0 0/0 .text fopAcM_findObjectCB__FPC10fopAc_ac_cPv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm s32 fopAcM_findObjectCB(fopAc_ac_c const* param_0, void* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_findObjectCB__FPC10fopAc_ac_cPv.s" } #pragma pop /* 8001D698-8001D6F0 017FD8 0058+00 0/0 1/1 1/1 .text fopAcM_searchFromName__FPCcUlUl */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_searchFromName(char const* param_0, u32 param_1, u32 param_2) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_searchFromName__FPCcUlUl.s" } #pragma pop /* 8001D6F0-8001D7A0 018030 00B0+00 1/1 0/0 0/0 .text fopAcM_findObject4EventCB__FP10fopAc_ac_cPv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_findObject4EventCB(fopAc_ac_c* param_0, void* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_findObject4EventCB__FP10fopAc_ac_cPv.s" } #pragma pop /* 8001D7A0-8001D890 0180E0 00F0+00 0/0 7/7 0/0 .text fopAcM_searchFromName4Event__FPCcs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_searchFromName4Event(char const* param_0, s16 param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_searchFromName4Event__FPCcs.s" } #pragma pop /* ############################################################################################## */ /* 803F1D18-803F1D24 01EA38 000C+00 0/1 0/0 0/0 .bss @6509 */ #pragma push #pragma force_active on static u8 lit_6509[12]; #pragma pop /* 803F1D24-803F1D74 01EA44 0050+00 1/2 1/1 1/1 .bss mRoofCheck__11fopAcM_rc_c */ u8 fopAcM_rc_c::mRoofCheck[80]; /* 803F1D74-803F1D80 01EA94 000C+00 0/1 0/0 0/0 .bss @6519 */ #pragma push #pragma force_active on static u8 lit_6519[12]; #pragma pop /* 803F1D80-803F1DD8 01EAA0 0054+04 2/3 3/3 4/4 .bss mWaterCheck__11fopAcM_wt_c */ u8 fopAcM_wt_c::mWaterCheck[84 + 4 /* padding */]; /* 80450CD4-80450CD8 0001D4 0004+00 1/1 0/0 3/3 .sbss mRoofY__11fopAcM_rc_c */ f32 fopAcM_rc_c::mRoofY; /* 80450CD8-80450CE0 0001D8 0004+04 2/2 4/4 19/19 .sbss mWaterY__11fopAcM_wt_c */ f32 fopAcM_wt_c::mWaterY[1 + 1 /* padding */]; /* 80451C58-80451C5C 000258 0004+00 2/2 0/0 0/0 .sdata2 @6353 */ SECTION_SDATA2 static f32 lit_6353 = -1000000000.0f; /* 8001D890-8001D900 0181D0 0070+00 0/0 2/2 19/19 .text fopAcM_getWaterY__FPC4cXyzPf */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_getWaterY(cXyz const* param_0, f32* param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getWaterY__FPC4cXyzPf.s" } #pragma pop /* 8001D900-8001D9A8 018240 00A8+00 0/0 2/2 2/2 .text * fpoAcM_relativePos__FPC10fopAc_ac_cPC4cXyzP4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void fpoAcM_relativePos(fopAc_ac_c const* param_0, cXyz const* param_1, cXyz* param_2) { nofralloc #include "asm/f_op/f_op_actor_mng/fpoAcM_relativePos__FPC10fopAc_ac_cPC4cXyzP4cXyz.s" } #pragma pop /* 8001D9A8-8001DAE4 0182E8 013C+00 0/0 1/1 9/9 .text * fopAcM_getWaterStream__FPC4cXyzRC13cBgS_PolyInfoP4cXyzPii */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 fopAcM_getWaterStream(cXyz const* param_0, cBgS_PolyInfo const& param_1, cXyz* param_2, int* param_3, int param_4) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getWaterStream__FPC4cXyzRC13cBgS_PolyInfoP4cXyzPii.s" } #pragma pop /* ############################################################################################## */ /* 803A37C0-803A37CC 0008E0 000C+00 2/2 93/93 0/0 .data __vt__8cM3dGPla */ SECTION_DATA extern void* __vt__8cM3dGPla[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__8cM3dGPlaFv, }; /* 8001DAE4-8001DB90 018424 00AC+00 0/0 2/2 8/8 .text fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s16 fopAcM_getPolygonAngle(cBgS_PolyInfo const& param_0, s16 param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos.s" } #pragma pop /* 8001DB90-8001DBD8 0184D0 0048+00 1/0 9/9 0/0 .text __dt__8cM3dGPlaFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off extern "C" asm void __dt__8cM3dGPlaFv() { nofralloc #include "asm/f_op/f_op_actor_mng/__dt__8cM3dGPlaFv.s" } #pragma pop /* 8001DBD8-8001DC68 018518 0090+00 1/1 5/5 18/18 .text fopAcM_getPolygonAngle__FPC8cM3dGPlas */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void fopAcM_getPolygonAngle(cM3dGPla const* param_0, s16 param_1) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_getPolygonAngle__FPC8cM3dGPlas.s" } #pragma pop /* 8001DC68-8001DCBC 0185A8 0054+00 0/0 5/5 21/21 .text * lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool fopAcM_lc_c::lineCheck(cXyz const* param_0, cXyz const* param_1, fopAc_ac_c const* param_2) { nofralloc #include "asm/f_op/f_op_actor_mng/lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c.s" } #pragma pop /* 8001DCBC-8001DD1C 0185FC 0060+00 1/1 10/10 108/108 .text gndCheck__11fopAcM_gc_cFPC4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool fopAcM_gc_c::gndCheck(cXyz const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/gndCheck__11fopAcM_gc_cFPC4cXyz.s" } #pragma pop /* ############################################################################################## */ /* 80451C5C-80451C60 00025C 0004+00 1/1 0/0 0/0 .sdata2 @6517 */ SECTION_SDATA2 static f32 lit_6517 = 1000000000.0f; /* 8001DD1C-8001DD84 01865C 0068+00 0/0 0/0 3/3 .text roofCheck__11fopAcM_rc_cFPC4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool fopAcM_rc_c::roofCheck(cXyz const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/roofCheck__11fopAcM_rc_cFPC4cXyz.s" } #pragma pop /* ############################################################################################## */ /* 80451C60-80451C68 000260 0004+04 1/1 0/0 0/0 .sdata2 @6538 */ SECTION_SDATA2 static f32 lit_6538[1 + 1 /* padding */] = { 500.0f, /* padding */ 0.0f, }; /* 8001DD84-8001DE10 0186C4 008C+00 1/1 4/4 22/22 .text waterCheck__11fopAcM_wt_cFPC4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool fopAcM_wt_c::waterCheck(cXyz const* param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/waterCheck__11fopAcM_wt_cFPC4cXyz.s" } #pragma pop /* 8001DE10-8001DE14 018750 0004+00 0/0 1/1 0/0 .text fopAcM_initManager__Fv */ void fopAcM_initManager() { /* empty function */ } /* ############################################################################################## */ /* 803A37CC-803A37FC 0008EC 0030+00 2/2 0/0 0/0 .data __vt__15dBgS_ObjRoofChk */ SECTION_DATA extern void* __vt__15dBgS_ObjRoofChk[12] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__15dBgS_ObjRoofChkFv, (void*)NULL, (void*)NULL, (void*)func_8001E104, (void*)NULL, (void*)NULL, (void*)func_8001E114, (void*)NULL, (void*)NULL, (void*)func_8001E10C, }; /* 803A37FC-803A382C 00091C 0030+00 1/1 2/2 0/0 .data __vt__11dBgS_WtrChk */ SECTION_DATA extern void* __vt__11dBgS_WtrChk[12] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__11dBgS_WtrChkFv, (void*)NULL, (void*)NULL, (void*)func_8001E0EC, (void*)NULL, (void*)NULL, (void*)func_8001E0FC, (void*)NULL, (void*)NULL, (void*)func_8001E0F4, }; /* 803A382C-803A3860 00094C 0030+04 2/2 10/10 0/0 .data __vt__14dBgS_ObjGndChk */ SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12 + 1 /* padding */] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__14dBgS_ObjGndChkFv, (void*)NULL, (void*)NULL, (void*)func_8001E0D4, (void*)NULL, (void*)NULL, (void*)func_8001E0E4, (void*)NULL, (void*)NULL, (void*)func_8001E0DC, /* padding */ NULL, }; /* 8001DE14-8001DF30 018754 011C+00 0/0 1/0 0/0 .text __sinit_f_op_actor_mng_cpp */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void __sinit_f_op_actor_mng_cpp() { nofralloc #include "asm/f_op/f_op_actor_mng/__sinit_f_op_actor_mng_cpp.s" } #pragma pop #pragma push #pragma force_active on REGISTER_CTORS(0x8001DE14, __sinit_f_op_actor_mng_cpp); #pragma pop /* 8001DF30-8001DFA8 018870 0078+00 5/4 0/0 0/0 .text __dt__11dBgS_WtrChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm dBgS_WtrChk::~dBgS_WtrChk() { nofralloc #include "asm/f_op/f_op_actor_mng/__dt__11dBgS_WtrChkFv.s" } #pragma pop /* 8001DFA8-8001E020 0188E8 0078+00 5/4 0/0 0/0 .text __dt__15dBgS_ObjRoofChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm dBgS_ObjRoofChk::~dBgS_ObjRoofChk() { nofralloc #include "asm/f_op/f_op_actor_mng/__dt__15dBgS_ObjRoofChkFv.s" } #pragma pop /* 8001E020-8001E098 018960 0078+00 5/4 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm dBgS_ObjGndChk::~dBgS_ObjGndChk() { nofralloc #include "asm/f_op/f_op_actor_mng/__dt__14dBgS_ObjGndChkFv.s" } #pragma pop /* 8001E098-8001E0D4 0189D8 003C+00 1/1 0/0 0/0 .text __dt__5l_HIOFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm l_HIO::~l_HIO() { nofralloc #include "asm/f_op/f_op_actor_mng/__dt__5l_HIOFv.s" } #pragma pop /* 8001E0D4-8001E0DC 018A14 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E0D4() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E0D4.s" } #pragma pop /* 8001E0DC-8001E0E4 018A1C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E0DC() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E0DC.s" } #pragma pop /* 8001E0E4-8001E0EC 018A24 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E0E4() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E0E4.s" } #pragma pop /* 8001E0EC-8001E0F4 018A2C 0008+00 1/0 0/0 0/0 .text @16@__dt__11dBgS_WtrChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E0EC() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E0EC.s" } #pragma pop /* 8001E0F4-8001E0FC 018A34 0008+00 1/0 0/0 0/0 .text @52@__dt__11dBgS_WtrChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E0F4() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E0F4.s" } #pragma pop /* 8001E0FC-8001E104 018A3C 0008+00 1/0 0/0 0/0 .text @36@__dt__11dBgS_WtrChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E0FC() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E0FC.s" } #pragma pop /* 8001E104-8001E10C 018A44 0008+00 1/0 0/0 0/0 .text @16@__dt__15dBgS_ObjRoofChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E104() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E104.s" } #pragma pop /* 8001E10C-8001E114 018A4C 0008+00 1/0 0/0 0/0 .text @52@__dt__15dBgS_ObjRoofChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E10C() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E10C.s" } #pragma pop /* 8001E114-8001E11C 018A54 0008+00 1/0 0/0 0/0 .text @36@__dt__15dBgS_ObjRoofChkFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void func_8001E114() { nofralloc #include "asm/f_op/f_op_actor_mng/func_8001E114.s" } #pragma pop /* 8001E11C-8001E120 018A5C 0004+00 0/0 1/0 0/0 .text onFrollCrashFlg__9daPy_py_cFUci */ void daPy_py_c::onFrollCrashFlg(u8 param_0, int param_1) { /* empty function */ } /* 8001E120-8001E128 018A60 0008+00 0/0 1/0 0/0 .text checkWolfDash__9daPy_py_cCFv */ bool daPy_py_c::checkWolfDash() const { return false; } /* 8001E128-8001E130 018A68 0008+00 0/0 1/0 0/0 .text checkFrontRoll__9daPy_py_cCFv */ bool daPy_py_c::checkFrontRoll() const { return false; } /* 8001E130-8001E138 018A70 0008+00 0/0 1/0 0/0 .text checkHorseRide__9daPy_py_cCFv */ bool daPy_py_c::checkHorseRide() const { return false; } /* 8001E138-8001E140 018A78 0008+00 0/0 1/0 0/0 .text getGrabActorID__9daPy_py_cCFv */ s32 daPy_py_c::getGrabActorID() const { return -1; } /* 803788C8-803788C8 004F28 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */