mirror of
https://github.com/zeldaret/tp
synced 2026-05-23 06:54:28 -04:00
d_a_e_pz equivalent (#2330)
* d_a_e_pz equivalent * rename var * match f_pc closer to debug * hopefully fix decompctx * sdk done * remove unneeded file
This commit is contained in:
@@ -1433,7 +1433,7 @@ d/d_k_wpillar.cpp:
|
||||
.sdata2 start:0x80454FF0 end:0x80455008
|
||||
|
||||
PowerPC_EABI_Support/Runtime/Src/__mem.c:
|
||||
.init start:0x80003458 end:0x800035E4
|
||||
.init start:0x80003458 end:0x80003590
|
||||
|
||||
DynamicLink.cpp:
|
||||
.text start:0x802621CC end:0x802631D4
|
||||
@@ -3601,7 +3601,7 @@ TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/flush_cache.
|
||||
.text start:0x8036F548 end:0x8036F580
|
||||
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/mem_TRK.c:
|
||||
.init start:0x800035E4 end:0x80005544
|
||||
.init start:0x80003590 end:0x800035E4
|
||||
.text start:0x8036F580 end:0x8036F638
|
||||
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/targimpl.c:
|
||||
@@ -3610,13 +3610,17 @@ TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/targimpl.c:
|
||||
.data start:0x803D3238 end:0x803D3268
|
||||
.bss start:0x8044F290 end:0x8044F810
|
||||
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Export/targsupp.c:
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Export/targsupp.s:
|
||||
.text start:0x803711D0 end:0x803711F0
|
||||
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/mpc_7xx_603e.c:
|
||||
.text start:0x803711F0 end:0x80371560
|
||||
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/exception.s:
|
||||
.init start:0x800035E4 end:0x80005518
|
||||
|
||||
TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk.c:
|
||||
.init start:0x80005518 end:0x80005544
|
||||
.text start:0x80371560 end:0x80371B9C
|
||||
.data start:0x803D3268 end:0x803D32A8
|
||||
.bss start:0x8044F810 end:0x8044F818
|
||||
|
||||
+13
-12
@@ -212,7 +212,7 @@ cflags_base = [
|
||||
"-i src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include",
|
||||
"-i src/PowerPC_EABI_Support/Runtime/Inc",
|
||||
"-i src/PowerPC_EABI_Support/MetroTRK",
|
||||
"-Iinclude/dolphin",
|
||||
"-i include/dolphin",
|
||||
f"-DVERSION={version_num}",
|
||||
"-D__GEKKO__",
|
||||
]
|
||||
@@ -245,7 +245,6 @@ cflags_runtime = [
|
||||
*cflags_base,
|
||||
"-use_lmw_stmw on",
|
||||
"-str reuse,pool,readonly",
|
||||
"-gccinc",
|
||||
"-common off",
|
||||
"-char signed",
|
||||
]
|
||||
@@ -291,7 +290,7 @@ cflags_dolphin = [
|
||||
"-i src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include",
|
||||
"-i src/PowerPC_EABI_Support/Runtime/Inc",
|
||||
"-i src/PowerPC_EABI_Support/MetroTRK",
|
||||
"-Iinclude/dolphin",
|
||||
"-i include/dolphin",
|
||||
f"-DVERSION={version_num}",
|
||||
"-D__GEKKO__",
|
||||
"-DSDK_REVISION=2",
|
||||
@@ -484,6 +483,7 @@ config.libs = [
|
||||
Object(MatchingFor("GZ2E01"), "f_pc/f_pc_draw.cpp"),
|
||||
Object(MatchingFor("GZ2E01"), "f_pc/f_pc_fstcreate_req.cpp"),
|
||||
Object(MatchingFor("GZ2E01"), "f_pc/f_pc_stdcreate_req.cpp"),
|
||||
Object(NonMatching, "f_pc/f_pc_debug_sv.cpp"),
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1276,10 +1276,10 @@ config.libs = [
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/__va_arg.c"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/global_destructor_chain.c"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/CPlusLibPPC.cp"),
|
||||
Object(NonMatching, "PowerPC_EABI_Support/Runtime/Src/NMWException.cp"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/NMWException.cp", extra_cflags=["-Cpp_exceptions on"]),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/ptmf.c"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/runtime.c"),
|
||||
Object(NonMatching, "PowerPC_EABI_Support/Runtime/Src/__init_cpp_exceptions.cpp"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/__init_cpp_exceptions.cpp"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/Gecko_ExceptionPPC.cp"),
|
||||
Object(MatchingFor("GZ2E01"), "PowerPC_EABI_Support/Runtime/Src/GCN_Mem_Alloc.c", extra_cflags=["-str reuse,nopool,readonly"]),
|
||||
],
|
||||
@@ -1370,11 +1370,12 @@ config.libs = [
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/mutex_TRK.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/notify.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/flush_cache.c"),
|
||||
Object(NonMatching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/mem_TRK.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/mem_TRK.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/targimpl.c"),
|
||||
Object(NonMatching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Export/targsupp.c", extra_cflags=["-func_align 32"]),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Export/targsupp.s"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/mpc_7xx_603e.c"),
|
||||
Object(NonMatching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/exception.s"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/main_TRK.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk_glue.c"),
|
||||
Object(MatchingFor("GZ2E01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/targcont.c"),
|
||||
@@ -1402,12 +1403,12 @@ config.libs = [
|
||||
},
|
||||
{
|
||||
"lib": "odemuexi2",
|
||||
"mw_version": MWVersion(config.version),
|
||||
"mw_version": "GC/1.2.5n",
|
||||
"cflags": cflags_runtime,
|
||||
"progress_category": "sdk",
|
||||
"host": False,
|
||||
"objects": [
|
||||
Object(NonMatching, "odemuexi2/DebuggerDriver.c"),
|
||||
Object(MatchingFor("GZ2E01"), "odemuexi2/DebuggerDriver.c"),
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1431,7 +1432,7 @@ config.libs = [
|
||||
"objects": [
|
||||
Object(MatchingFor("GZ2E01"), "REL/executor.c"),
|
||||
Object(
|
||||
NonMatching,
|
||||
MatchingFor("GZ2E01"),
|
||||
"REL/global_destructor_chain.c",
|
||||
source="PowerPC_EABI_Support/Runtime/Src/global_destructor_chain.c",
|
||||
),
|
||||
@@ -1658,7 +1659,7 @@ config.libs = [
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_e_ph"),
|
||||
ActorRel(NonMatching, "d_a_e_pm"),
|
||||
ActorRel(NonMatching, "d_a_e_po"),
|
||||
ActorRel(NonMatching, "d_a_e_pz"),
|
||||
ActorRel(Equivalent, "d_a_e_pz", extra_cflags=['-pragma "nosyminline off"']), # weak func order, inline issue
|
||||
ActorRel(NonMatching, "d_a_e_rb"),
|
||||
ActorRel(NonMatching, "d_a_e_rdb"),
|
||||
ActorRel(NonMatching, "d_a_e_rdy"),
|
||||
|
||||
@@ -4904,14 +4904,14 @@ public:
|
||||
|
||||
class daAlinkHIO_wallHang_c1 {
|
||||
public:
|
||||
/* 0x00 */ s16 field_0x0;
|
||||
/* 0x02 */ s16 field_0x2;
|
||||
/* 0x04 */ f32 field_0x4;
|
||||
/* 0x08 */ f32 field_0x8;
|
||||
/* 0x0C */ f32 field_0xC;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x00 */ s16 small_jump_input_time;
|
||||
/* 0x02 */ s16 grab_input_time;
|
||||
/* 0x04 */ f32 auto_walk_height;
|
||||
/* 0x08 */ f32 small_jump_height;
|
||||
/* 0x0C */ f32 climb_height;
|
||||
/* 0x10 */ f32 jump_climb_height;
|
||||
/* 0x14 */ f32 jump_hang_height;
|
||||
/* 0x18 */ f32 hang_foot_pos_height;
|
||||
}; // Size: 0x1C
|
||||
|
||||
class daAlinkHIO_wallHang_c0 {
|
||||
|
||||
+95
-13
@@ -2,6 +2,9 @@
|
||||
#define D_A_E_PZ_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-enemies
|
||||
@@ -13,15 +16,24 @@
|
||||
*/
|
||||
class daE_PZ_c : public fopEn_enemy_c {
|
||||
public:
|
||||
void onBombArrowHit() { field_0x845 = 1; }
|
||||
enum Action_e {
|
||||
ACTION_SEARCH_POINT_e,
|
||||
ACTION_OPENING_DEMO_e,
|
||||
ACTION_WAIT_e,
|
||||
ACTION_ATTACK_e,
|
||||
ACTION_DAMAGE_e,
|
||||
ACTION_DEAD_e,
|
||||
};
|
||||
|
||||
/* 807585BC */ void draw();
|
||||
void onBombArrowHit() { mBombArrowHit = true; }
|
||||
|
||||
/* 807585BC */ int draw();
|
||||
/* 80758800 */ void setBck(int, u8, f32, f32);
|
||||
/* 807588AC */ void setActionMode(int, int);
|
||||
/* 807588B8 */ void mEntrySUB(bool);
|
||||
/* 80758A94 */ void mPzScaleSet(bool);
|
||||
/* 80758A94 */ bool mPzScaleSet(bool);
|
||||
/* 80758BA0 */ void mEnemyScaleSet();
|
||||
/* 80758D44 */ void getCutType();
|
||||
/* 80758D44 */ u8 getCutType();
|
||||
/* 80758DA4 */ void mSetFirePos();
|
||||
/* 80758E04 */ void damage_check();
|
||||
/* 807592F4 */ void executeSearchPoint();
|
||||
@@ -38,23 +50,93 @@ public:
|
||||
/* 8075F578 */ void fire_mtx_set();
|
||||
/* 8075F734 */ void mtx_set();
|
||||
/* 8075F7E8 */ void cc_set();
|
||||
/* 8075F964 */ void execute();
|
||||
/* 8075FA88 */ void _delete();
|
||||
/* 8075FB4C */ void CreateHeap();
|
||||
/* 8076010C */ void create();
|
||||
/* 8075F964 */ int execute();
|
||||
/* 8075FA88 */ int _delete();
|
||||
/* 8075FB4C */ int CreateHeap();
|
||||
/* 8076010C */ int create();
|
||||
/* 807607EC */ daE_PZ_c();
|
||||
|
||||
private:
|
||||
/* 0x5AC */ u8 field_0x5ac[0x845 - 0x5ac];
|
||||
/* 0x845 */ u8 field_0x845;
|
||||
/* 0x846 */ u8 field_0x846[0xef8 - 0x846];
|
||||
/* 0x5AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x5B4 */ mDoExt_McaMorfSO* mpModelMorf;
|
||||
/* 0x5B8 */ mDoExt_McaMorfSO* mpBallModelMorf;
|
||||
/* 0x5BC */ J3DModel* mpPortalModel;
|
||||
/* 0x5C0 */ mDoExt_btkAnm* mpPortalBtk;
|
||||
/* 0x5C4 */ mDoExt_brkAnm* mpPortalBrk[2];
|
||||
/* 0x5CC */ mDoExt_brkAnm* mpBallBrk;
|
||||
/* 0x5D0 */ mDoExt_btkAnm* mpPzBtk;
|
||||
/* 0x5D4 */ mDoExt_brkAnm* mpPzBrk;
|
||||
/* 0x5D8 */ int field_0x5d8;
|
||||
/* 0x5DC */ Z2CreatureEnemy field_0x5dc;
|
||||
/* 0x680 */ int mActionMode;
|
||||
/* 0x684 */ int mMoveMode;
|
||||
/* 0x688 */ u32 mShadowKey;
|
||||
/* 0x68C */ int mAnm;
|
||||
/* 0x690 */ cXyz mPointPos[10];
|
||||
/* 0x708 */ cXyz field_0x708[10];
|
||||
/* 0x780 */ u8 field_0x780[10];
|
||||
/* 0x78A */ u8 mPointNum;
|
||||
/* 0x78B */ u8 mCurrentPoint;
|
||||
/* 0x78C */ u8 field_0x78c;
|
||||
/* 0x790 */ cXyz field_0x790;
|
||||
/* 0x79C */ cXyz mPzScale;
|
||||
/* 0x7A8 */ cXyz field_0x7a8;
|
||||
/* 0x7B4 */ u8 field_0x7B4[0x7BC - 0x7B4];
|
||||
/* 0x7BC */ f32 field_0x7bc;
|
||||
/* 0x7C0 */ f32 field_0x7c0;
|
||||
/* 0x7C4 */ f32 field_0x7c4;
|
||||
/* 0x7C8 */ f32 field_0x7c8;
|
||||
/* 0x7CC */ f32 field_0x7cc;
|
||||
/* 0x7D0 */ u8 field_0x7d0;
|
||||
/* 0x7D1 */ u8 field_0x7d1;
|
||||
/* 0x7D2 */ u8 field_0x7d2;
|
||||
/* 0x7D3 */ u8 field_0x7d3;
|
||||
/* 0x7D4 */ u8 arg0;
|
||||
/* 0x7D5 */ u8 arg1;
|
||||
/* 0x7D6 */ u8 bitSw;
|
||||
/* 0x7D7 */ u8 field_0x7d7;
|
||||
/* 0x7D8 */ u8 field_0x7d8;
|
||||
/* 0x7DC */ fpc_ProcID field_0x7dc[25];
|
||||
/* 0x840 */ u8 field_0x840;
|
||||
/* 0x841 */ u8 field_0x841;
|
||||
/* 0x842 */ u8 field_0x842;
|
||||
/* 0x843 */ u8 field_0x843;
|
||||
/* 0x844 */ u8 field_0x844;
|
||||
/* 0x845 */ u8 mBombArrowHit;
|
||||
/* 0x846 */ u8 field_0x846;
|
||||
/* 0x847 */ u8 field_0x847;
|
||||
/* 0x848 */ u8 field_0x848;
|
||||
/* 0x84C */ int field_0x84c;
|
||||
/* 0x850 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x890 */ dBgS_ObjAcch mAcch;
|
||||
/* 0xA68 */ u32 field_0xa68[3];
|
||||
/* 0xA74 */ u32 field_0xa74[2];
|
||||
/* 0xA7C */ u8 field_0xA7C[0xAB4 - 0xA7C];
|
||||
/* 0xAB4 */ u32 field_0xab4[2];
|
||||
/* 0xABC */ cXyz mDemoCameraEye;
|
||||
/* 0xAC8 */ cXyz mDemoCameraCenter;
|
||||
/* 0xAD4 */ dCcD_Stts mColliderStts;
|
||||
/* 0xB10 */ dCcD_Cyl mCylCollider;
|
||||
/* 0xC4C */ dCcD_Cyl mWarpCylCollider;
|
||||
/* 0xD88 */ dCcD_Sph mBulletAtCollider;
|
||||
/* 0xEC0 */ dCcU_AtInfo mAtInfo;
|
||||
/* 0xEE4 */ u8 mInitHIO;
|
||||
/* 0xEE5 */ u8 field_0xee5[0xEF8 - 0xEE5];
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daE_PZ_c) == 0xEF8);
|
||||
|
||||
class daE_PZ_HIO_c {
|
||||
public:
|
||||
/* 8075856C */ daE_PZ_HIO_c();
|
||||
/* 80760C60 */ ~daE_PZ_HIO_c();
|
||||
/* 80760C60 */ virtual ~daE_PZ_HIO_c() {}
|
||||
|
||||
/* 0x04 */ s8 no;
|
||||
/* 0x08 */ f32 body_model_size;
|
||||
/* 0x0C */ f32 portal_model_size;
|
||||
/* 0x10 */ f32 bullet_speed;
|
||||
/* 0x14 */ f32 weapon_hit_warp_speed;
|
||||
/* 0x18 */ s16 after_attack_wait_time;
|
||||
/* 0x1A */ s16 blur_start_timing;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1039,6 +1039,7 @@ public:
|
||||
void offPressedDamage() { offNoResetFlg2(FLG2_PRESSED_DAMAGE); }
|
||||
void onForceSubjectCancel() { onEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL); }
|
||||
void onEnemyDead() { onEndResetFlg0(ERFLG0_ENEMY_DEAD); }
|
||||
void offDkCaught2() { offNoResetFlg0(FLG0_UNK_20000); }
|
||||
|
||||
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
|
||||
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }
|
||||
|
||||
@@ -45,4 +45,6 @@ int fpcBs_Delete(base_process_class* i_proc);
|
||||
base_process_class* fpcBs_Create(s16 i_profname, fpc_ProcID i_procID, void* i_append);
|
||||
int fpcBs_SubCreate(base_process_class* i_proc);
|
||||
|
||||
extern int g_fpcBs_type;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,14 +29,14 @@ typedef struct create_request {
|
||||
/* 0x44 */ layer_class* layer;
|
||||
} create_request; // Size: 0x48
|
||||
|
||||
bool fpcCtRq_isCreatingByID(create_tag* i_createTag, fpc_ProcID* i_id);
|
||||
BOOL fpcCtRq_isCreatingByID(create_tag* i_createTag, fpc_ProcID* i_id);
|
||||
BOOL fpcCtRq_IsCreatingByID(fpc_ProcID i_id);
|
||||
void fpcCtRq_CreateQTo(create_request* i_request);
|
||||
void fpcCtRq_ToCreateQ(create_request* i_request);
|
||||
BOOL fpcCtRq_Delete(create_request* i_request);
|
||||
BOOL fpcCtRq_Cancel(create_request* i_request);
|
||||
BOOL fpcCtRq_IsDoing(create_request* i_request);
|
||||
void fpcCtRq_Handler();
|
||||
int fpcCtRq_Handler();
|
||||
create_request* fpcCtRq_Create(layer_class* i_layer, u32 i_size,
|
||||
create_request_method_class* i_methods);
|
||||
|
||||
|
||||
@@ -9,6 +9,6 @@ typedef struct base_process_class base_process_class;
|
||||
BOOL fpcCt_IsCreatingByID(fpc_ProcID id);
|
||||
BOOL fpcCt_IsDoing(base_process_class* pProc);
|
||||
BOOL fpcCt_Abort(base_process_class* pProc);
|
||||
void fpcCt_Handler();
|
||||
int fpcCt_Handler();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
#ifndef F_PC_DEBUG_SV_H_
|
||||
#define F_PC_DEBUG_SV_H_
|
||||
|
||||
#include <dolphin.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
char* fpcDbSv_getNameString(s16 i_name);
|
||||
|
||||
typedef void (*fpcDbSv_callback)(void* i_process);
|
||||
extern const fpcDbSv_callback g_fpcDbSv_service[50];
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -42,7 +42,7 @@ s32 fpcLy_ToQueue(layer_class* i_layer, int treeListIdx, create_tag_class* i_cre
|
||||
s32 fpcLy_QueueTo(layer_class* i_layer, create_tag_class* i_createTag);
|
||||
|
||||
int fpcLy_Cancel(layer_class* i_layer);
|
||||
bool fpcLy_CancelMethod(process_method_tag_class* i_layer);
|
||||
BOOL fpcLy_CancelMethod(process_method_tag_class* i_layer);
|
||||
|
||||
void fpcLy_CancelQTo(process_method_tag_class* i_methods);
|
||||
s32 fpcLy_ToCancelQ(layer_class* i_layer, process_method_tag_class* i_methods);
|
||||
|
||||
@@ -36,6 +36,10 @@ typedef struct node_create_request {
|
||||
/* 0x58 */ s16 name;
|
||||
/* 0x5C */ void* data;
|
||||
/* 0x60 */ s16 unk_0x60;
|
||||
#ifdef DEBUG
|
||||
/* 0x64 */ int unk_0x64;
|
||||
/* 0x68 */ int unk_0x68;
|
||||
#endif
|
||||
} node_create_request; // Size: 0x64
|
||||
|
||||
typedef struct request_node_class {
|
||||
|
||||
@@ -10,17 +10,17 @@ enum {
|
||||
fpcPi_NONE_e = 0xFFFF,
|
||||
};
|
||||
|
||||
typedef struct process_priority_queue_info {
|
||||
typedef struct priority_id {
|
||||
/* 0x0 */ unsigned int layer_id;
|
||||
/* 0x4 */ u16 list_id;
|
||||
/* 0x6 */ u16 list_priority;
|
||||
} process_priority_queue_info;
|
||||
} priority_id;
|
||||
|
||||
typedef struct process_priority_class {
|
||||
/* 0x00 */ create_tag_class base;
|
||||
/* 0x14 */ process_method_tag_class method_tag;
|
||||
/* 0x30 */ process_priority_queue_info queue_info;
|
||||
/* 0x38 */ process_priority_queue_info current_info;
|
||||
/* 0x30 */ priority_id queue_info;
|
||||
/* 0x38 */ priority_id current_info;
|
||||
} process_priority_class;
|
||||
|
||||
s32 fpcPi_IsInQueue(process_priority_class* pPi);
|
||||
|
||||
@@ -14,6 +14,9 @@ typedef struct standard_create_request_class {
|
||||
/* 0x54 */ void* process_append;
|
||||
/* 0x58 */ stdCreateFunc create_post_method;
|
||||
/* 0x5C */ void* unk_0x5C;
|
||||
#ifdef DEBUG
|
||||
/* 0x60 */ int unk_0x60;
|
||||
#endif
|
||||
} standard_create_request_class;
|
||||
|
||||
s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* i_request);
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef MWCPLUSLIB_H
|
||||
#define MWCPLUSLIB_H
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CTORARG_TYPE int
|
||||
#define CTORARG_PARTIAL (0)
|
||||
#define CTORARG_COMPLETE (1)
|
||||
|
||||
#define CTORCALL_COMPLETE(ctor, objptr) (((void (*)(void*, CTORARG_TYPE))ctor)(objptr, CTORARG_COMPLETE))
|
||||
|
||||
#define DTORARG_TYPE int
|
||||
|
||||
#define DTORCALL_COMPLETE(dtor, objptr) (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, -1))
|
||||
|
||||
typedef void* ConstructorDestructor;
|
||||
|
||||
extern void __construct_array(void* ptr, ConstructorDestructor ctor, ConstructorDestructor dtor, size_t size, size_t n);
|
||||
extern void __destroy_arr(void* block, ConstructorDestructor* dtor, size_t size, size_t n);
|
||||
extern void* __construct_new_array(void* block, ConstructorDestructor ctor, ConstructorDestructor dtor_arg, size_t size, size_t n);
|
||||
extern void __destroy_new_array(void* block, ConstructorDestructor dtor);
|
||||
extern void __destroy_new_array2();
|
||||
extern void __destroy_new_array3();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MWCPLUSLIB_H */
|
||||
@@ -7,7 +7,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DTORCALL(dtor, objptr) (((void (*)(void*, int))dtor)(objptr, -1))
|
||||
typedef short vbase_ctor_arg_type;
|
||||
typedef char local_cond_type;
|
||||
|
||||
typedef struct DestructorChain {
|
||||
struct DestructorChain* next;
|
||||
@@ -24,4 +25,4 @@ void __destroy_global_chain(void);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* NMWEXCEPTION_H */
|
||||
#endif /* NMWEXCEPTION_H */
|
||||
|
||||
@@ -1,121 +1,218 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: NMWException
|
||||
//
|
||||
|
||||
#include "NMWException.h"
|
||||
#include "stddef.h"
|
||||
#include "dol2asm.h"
|
||||
#include "MWCPlusLib.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
typedef void (*unexpected_handler)();
|
||||
unexpected_handler set_unexpected(unexpected_handler handler);
|
||||
void unexpected();
|
||||
|
||||
struct __partial_array_destructor {
|
||||
/* 80361E5C */ ~__partial_array_destructor();
|
||||
};
|
||||
typedef void (*terminate_handler)();
|
||||
terminate_handler set_terminate(terminate_handler handler);
|
||||
void terminate();
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
#define ARRAY_HEADER_SIZE 16
|
||||
|
||||
#pragma section "extabindex_"
|
||||
extern void* const data_8000569C[8];
|
||||
extern "C" void __destroy_new_array();
|
||||
extern "C" void __destroy_arr();
|
||||
extern "C" void __construct_array();
|
||||
extern "C" void __dt__26__partial_array_destructorFv();
|
||||
extern "C" void __construct_new_array();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
#pragma section "extab_"
|
||||
extern "C" extern void* const _section_symbol_extab[18];
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __dla__FPv();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 80361C6C-80361CE8 35C5AC 007C+00 2/0 11/11 3/3 .text __destroy_new_array */
|
||||
void __destroy_new_array() {
|
||||
// NONMATCHING
|
||||
extern "C" {
|
||||
extern void abort();
|
||||
}
|
||||
|
||||
/* 80361CE8-80361D60 35C628 0078+00 1/0 58/58 350/350 .text __destroy_arr */
|
||||
void __destroy_arr() {
|
||||
// NONMATCHING
|
||||
namespace std {
|
||||
static void dthandler() { abort(); }
|
||||
|
||||
static terminate_handler thandler = dthandler;
|
||||
|
||||
static void duhandler() { terminate(); }
|
||||
|
||||
static unexpected_handler uhandler = duhandler;
|
||||
|
||||
extern terminate_handler set_terminate(terminate_handler handler) {
|
||||
terminate_handler old = thandler;
|
||||
thandler = handler;
|
||||
return old;
|
||||
}
|
||||
|
||||
/* 80361D60-80361E5C 35C6A0 00FC+00 1/0 98/98 461/461 .text __construct_array */
|
||||
void __construct_array() {
|
||||
// NONMATCHING
|
||||
extern void terminate() { thandler(); }
|
||||
|
||||
extern unexpected_handler set_unexpected(unexpected_handler handler) {
|
||||
unexpected_handler old = uhandler;
|
||||
uhandler = handler;
|
||||
return old;
|
||||
}
|
||||
|
||||
/* 80361E5C-80361F14 35C79C 00B8+00 1/0 1/0 0/0 .text __dt__26__partial_array_destructorFv */
|
||||
__partial_array_destructor::~__partial_array_destructor() {
|
||||
// NONMATCHING
|
||||
extern void unexpected() { uhandler(); }
|
||||
} // namespace std
|
||||
|
||||
extern char __throw_catch_compare(const char* throwtype, const char* catchtype, long* offset_result) {
|
||||
const char *cptr1, *cptr2;
|
||||
|
||||
*offset_result = 0;
|
||||
|
||||
if ((cptr2 = catchtype) == 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
cptr1 = throwtype;
|
||||
|
||||
if (*cptr2 == 'P') {
|
||||
cptr2++;
|
||||
if (*cptr2 == 'C')
|
||||
cptr2++;
|
||||
if (*cptr2 == 'V')
|
||||
cptr2++;
|
||||
if (*cptr2 == 'v') {
|
||||
if (*cptr1 == 'P' || *cptr1 == '*') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
cptr2 = catchtype;
|
||||
}
|
||||
|
||||
switch (*cptr1) {
|
||||
case '*':
|
||||
case '!':
|
||||
if (*cptr1++ != *cptr2++)
|
||||
return false;
|
||||
for (;;) {
|
||||
if (*cptr1 == *cptr2++) {
|
||||
if (*cptr1++ == '!') {
|
||||
long offset;
|
||||
|
||||
for (offset = 0; *cptr1 != '!';) {
|
||||
offset = offset * 10 + *cptr1++ - '0';
|
||||
}
|
||||
*offset_result = offset;
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
while (*cptr1++ != '!') { }
|
||||
while (*cptr1++ != '!') { }
|
||||
if (*cptr1 == 0)
|
||||
return false;
|
||||
|
||||
cptr2 = catchtype + 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
while ((*cptr1 == 'P' || *cptr1 == 'R') && *cptr1 == *cptr2) {
|
||||
cptr1++;
|
||||
cptr2++;
|
||||
|
||||
if (*cptr2 == 'C') {
|
||||
if (*cptr1 == 'C')
|
||||
cptr1++;
|
||||
cptr2++;
|
||||
}
|
||||
if (*cptr1 == 'C')
|
||||
return false;
|
||||
|
||||
if (*cptr2 == 'V') {
|
||||
if (*cptr1 == 'V')
|
||||
cptr1++;
|
||||
cptr2++;
|
||||
}
|
||||
if (*cptr1 == 'V')
|
||||
return false;
|
||||
}
|
||||
|
||||
for (; *cptr1 == *cptr2; cptr1++, cptr2++) {
|
||||
if (*cptr1 == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80361F14-80362018 35C854 0104+00 1/0 28/28 13/13 .text __construct_new_array */
|
||||
void __construct_new_array() {
|
||||
// NONMATCHING
|
||||
class __partial_array_destructor {
|
||||
private:
|
||||
void* p;
|
||||
size_t size;
|
||||
size_t n;
|
||||
ConstructorDestructor dtor;
|
||||
|
||||
public:
|
||||
size_t i;
|
||||
|
||||
__partial_array_destructor(void* array, size_t elementsize, size_t nelements, ConstructorDestructor destructor) {
|
||||
p = array;
|
||||
size = elementsize;
|
||||
n = nelements;
|
||||
dtor = destructor;
|
||||
i = n;
|
||||
}
|
||||
|
||||
~__partial_array_destructor() {
|
||||
char* ptr;
|
||||
|
||||
if (i < n && dtor) {
|
||||
for (ptr = (char*)p + size * i; i > 0; i--) {
|
||||
ptr -= size;
|
||||
DTORCALL_COMPLETE(dtor, ptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
extern void* __construct_new_array(void* block, ConstructorDestructor ctor, ConstructorDestructor dtor, size_t size, size_t n) {
|
||||
char* ptr;
|
||||
|
||||
if ((ptr = (char*)block) != 0L) {
|
||||
size_t* p = (size_t*)ptr;
|
||||
|
||||
p[0] = size;
|
||||
p[1] = n;
|
||||
ptr += ARRAY_HEADER_SIZE;
|
||||
|
||||
if (ctor) {
|
||||
__partial_array_destructor pad(ptr, size, n, dtor);
|
||||
char* p;
|
||||
|
||||
for (pad.i = 0, p = (char*)ptr; pad.i < n; pad.i++, p += size) {
|
||||
CTORCALL_COMPLETE(ctor, p);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80005660-8000566C -00001 000C+00 1/0 0/0 0/0 .extabindex @206 */
|
||||
SECTION_EXTABINDEX static void* const lit_206[3] = {
|
||||
(void*)__destroy_new_array,
|
||||
(void*)0x0000007C,
|
||||
(void*)&_section_symbol_extab,
|
||||
};
|
||||
extern void __construct_array(void* ptr, ConstructorDestructor ctor, ConstructorDestructor dtor, size_t size, size_t n) {
|
||||
__partial_array_destructor pad(ptr, size, n, dtor);
|
||||
char* p;
|
||||
|
||||
/* 8000566C-80005678 -00001 000C+00 0/0 0/0 0/0 .extabindex @211 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_EXTABINDEX static void* const lit_211[3] = {
|
||||
(void*)__destroy_arr,
|
||||
(void*)0x00000078,
|
||||
(void*)(((char*)&_section_symbol_extab) + 0x8),
|
||||
};
|
||||
#pragma pop
|
||||
for (pad.i = 0, p = (char*)ptr; pad.i < n; pad.i++, p += size) {
|
||||
CTORCALL_COMPLETE(ctor, p);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80005678-80005684 -00001 000C+00 0/0 0/0 0/0 .extabindex @232 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_EXTABINDEX static void* const lit_232[3] = {
|
||||
(void*)__construct_array,
|
||||
(void*)0x000000FC,
|
||||
(void*)(((char*)&_section_symbol_extab) + 0x10),
|
||||
};
|
||||
#pragma pop
|
||||
extern void __destroy_arr(void* block, ConstructorDestructor* dtor, size_t size, size_t n) {
|
||||
char* p;
|
||||
|
||||
/* 80005684-80005690 -00001 000C+00 0/0 0/0 0/0 .extabindex @240 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_EXTABINDEX static void* const lit_240[3] = {
|
||||
(void*)__dt__26__partial_array_destructorFv,
|
||||
(void*)0x000000B8,
|
||||
(void*)(((char*)&_section_symbol_extab) + 0x28),
|
||||
};
|
||||
#pragma pop
|
||||
for (p = (char*)block + size * n; n > 0; n--) {
|
||||
p -= size;
|
||||
DTORCALL_COMPLETE(dtor, p);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80005690-8000569C -00001 000C+00 0/0 0/0 0/0 .extabindex @263 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_EXTABINDEX static void* const lit_263[3] = {
|
||||
(void*)__construct_new_array,
|
||||
(void*)0x00000104,
|
||||
(void*)(((char*)&_section_symbol_extab) + 0x30),
|
||||
};
|
||||
#pragma pop
|
||||
extern void __destroy_new_array(void* block, ConstructorDestructor dtor) {
|
||||
if (block) {
|
||||
if (dtor) {
|
||||
size_t i, objects, objectsize;
|
||||
char* p;
|
||||
|
||||
/* 8000569C-800056BC -00001 0020+00 1/0 1/1 0/0 .extabindex None */
|
||||
SECTION_EXTABINDEX extern void* const data_8000569C[8] = {
|
||||
(void*)&lit_206, (void*)&data_8000569C, (void*)__destroy_new_array,
|
||||
(void*)0x000003AC, (void*)NULL, (void*)NULL,
|
||||
(void*)NULL, (void*)NULL,
|
||||
};
|
||||
objectsize = *(size_t*)((char*)block - ARRAY_HEADER_SIZE);
|
||||
objects = ((size_t*)((char*)block - ARRAY_HEADER_SIZE))[1];
|
||||
p = (char*)block + (objectsize * objects);
|
||||
|
||||
for (i = 0; i < objects; i++) {
|
||||
p -= objectsize;
|
||||
DTORCALL_COMPLETE(dtor, p);
|
||||
}
|
||||
}
|
||||
|
||||
::operator delete[]((char*)block - ARRAY_HEADER_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
void __destroy_new_array2(void) {}
|
||||
|
||||
void __destroy_new_array3(void) {}
|
||||
|
||||
@@ -23,20 +23,20 @@ extern int __register_fragment(struct __eti_init_info* info, char* TOC);
|
||||
/* 80450AD0-80450AD8 000550 0004+04 2/2 0/0 0/0 .sdata fragmentID */
|
||||
static int fragmentID = -2;
|
||||
|
||||
/* clang-format off */
|
||||
static asm char* GetR2() {
|
||||
nofralloc
|
||||
mr r3, r2
|
||||
blr
|
||||
extern void GetR2(char** R2) {
|
||||
register char* temp;
|
||||
asm {
|
||||
mr temp, r2
|
||||
}
|
||||
*R2 = temp;
|
||||
}
|
||||
/* clang-format on */
|
||||
|
||||
/* 80362870-803628AC 35D1B0 003C+00 1/0 1/0 0/0 .text __init_cpp_exceptions */
|
||||
void __init_cpp_exceptions(void) {
|
||||
// NONMATCHING
|
||||
char* R2;
|
||||
|
||||
if (fragmentID == -2) {
|
||||
R2 = GetR2();
|
||||
GetR2(&R2);
|
||||
fragmentID = __register_fragment(_eti_init_info, R2);
|
||||
}
|
||||
}
|
||||
@@ -51,13 +51,16 @@ void __fini_cpp_exceptions(void) {
|
||||
}
|
||||
|
||||
/* 803737C0-803737C4 000000 0004+00 0/0 1/1 0/0 .ctors __init_cpp_exceptions_reference */
|
||||
__declspec(section ".ctors")
|
||||
#pragma section ".ctors$10"
|
||||
__declspec(section ".ctors$10")
|
||||
extern void* const __init_cpp_exceptions_reference = __init_cpp_exceptions;
|
||||
|
||||
/* 80373980-80373984 000000 0004+00 0/0 1/1 0/0 .dtors __destroy_global_chain_reference */
|
||||
__declspec(section ".dtors")
|
||||
#pragma section ".dtors$10"
|
||||
__declspec(section ".dtors$10")
|
||||
extern void* const __destroy_global_chain_reference = __destroy_global_chain;
|
||||
|
||||
/* 80373984-80373988 000004 0004+00 0/0 0/1 0/0 .dtors __fini_cpp_exceptions_reference */
|
||||
__declspec(section ".dtors")
|
||||
extern void* const __fini_cpp_exceptions_reference = __fini_cpp_exceptions;
|
||||
#pragma section ".dtors$15"
|
||||
__declspec(section ".dtors$15")
|
||||
extern void* const __fini_cpp_exceptions_reference = __fini_cpp_exceptions;
|
||||
|
||||
@@ -1,24 +1,6 @@
|
||||
#include "dol2asm.h"
|
||||
#include <dolphin.h>
|
||||
|
||||
/* 800035C0-800035E4 0004C0 0024+00 0/0 12/12 0/0 .init TRK_memcpy */
|
||||
SECTION_INIT void* TRK_memcpy(void* dst, const void* src, size_t n) {
|
||||
const unsigned char* s = (const unsigned char*)src - 1;
|
||||
unsigned char* d = (unsigned char*)dst - 1;
|
||||
|
||||
n++;
|
||||
while (--n != 0)
|
||||
*++d = *++s;
|
||||
return dst;
|
||||
}
|
||||
|
||||
/* 80003590-800035C0 000490 0030+00 0/0 1/1 0/0 .init TRK_memset */
|
||||
SECTION_INIT void* TRK_memset(void* dst, int val, size_t n) {
|
||||
TRK_fill_mem(dst, val, n);
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
/* 80003540-80003590 000440 0050+00 1/1 63/63 6/6 .init memcpy */
|
||||
SECTION_INIT void* memcpy(void* dst, const void* src, size_t n) {
|
||||
const unsigned char* s;
|
||||
@@ -104,4 +86,4 @@ SECTION_INIT void* memset(void* dst, int val, size_t n) {
|
||||
__fill_mem(dst, val, n);
|
||||
|
||||
return dst;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "NMWException.h"
|
||||
#include "MWCPlusLib.h"
|
||||
|
||||
/* 80451988-80451990 000E88 0004+04 2/2 0/0 0/0 .sbss __global_destructor_chain */
|
||||
DestructorChain* __global_destructor_chain;
|
||||
@@ -17,11 +18,12 @@ void __destroy_global_chain(void) {
|
||||
DestructorChain* iter;
|
||||
while ((iter = __global_destructor_chain) != 0) {
|
||||
__global_destructor_chain = iter->next;
|
||||
DTORCALL(iter->destructor, iter->object);
|
||||
DTORCALL_COMPLETE(iter->destructor, iter->object);
|
||||
}
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
__declspec(section ".dtors")
|
||||
#pragma section ".dtors$10"
|
||||
__declspec(section ".dtors$10")
|
||||
static void* const __destroy_global_chain_reference = __destroy_global_chain;
|
||||
/* clang-format on */
|
||||
/* clang-format on */
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "global.h"
|
||||
#include "__ar.h"
|
||||
|
||||
extern u32 _db_stack_addr;
|
||||
|
||||
#define EXCEPTIONMASK_ADDR 0x80000044
|
||||
|
||||
/* 8044F810-8044F818 07C530 0004+04 3/3 0/0 0/0 .bss lc_base */
|
||||
@@ -28,6 +30,9 @@ static u32 TRK_ISR_OFFSETS[15] = {PPC_SystemReset,
|
||||
PPC_SystemManagementInterrupt,
|
||||
PPC_ThermalManagementInterrupt};
|
||||
|
||||
void __TRK_copy_vectors(void);
|
||||
__declspec(section ".init") void __TRK_reset(void) { OSResetSystem(FALSE, 0, FALSE); }
|
||||
|
||||
/* 80371B7C-80371B9C 36C4BC 0020+00 0/0 1/1 0/0 .text EnableMetroTRKInterrupts */
|
||||
void EnableMetroTRKInterrupts(void) {
|
||||
EnableEXI2Interrupts();
|
||||
@@ -46,11 +51,11 @@ u32 TRKTargetTranslate(u32 param_0) {
|
||||
return param_0 & 0x3FFFFFFF | 0x80000000;
|
||||
}
|
||||
|
||||
extern u8 __TRK_unknown_data[];
|
||||
extern u8 gTRKInterruptVectorTable[];
|
||||
|
||||
void TRK_copy_vector(u32 offset) {
|
||||
void* destPtr = (void*)TRKTargetTranslate(offset);
|
||||
TRK_memcpy(destPtr, (void*)(__TRK_unknown_data + offset), 0x100);
|
||||
TRK_memcpy(destPtr, (void*)(gTRKInterruptVectorTable + offset), 0x100);
|
||||
TRK_flush_cache(destPtr, 0x100);
|
||||
}
|
||||
|
||||
@@ -246,8 +251,8 @@ asm void InitMetroTRK() {
|
||||
mtspr 0x3f2, r0
|
||||
mtspr 0x3f5, r0
|
||||
//Restore stack pointer
|
||||
lis r1, 0x80459BC8@h
|
||||
ori r1, r1, 0x80459BC8@l
|
||||
lis r1, _db_stack_addr@h
|
||||
ori r1, r1, _db_stack_addr@l
|
||||
mr r3, r5
|
||||
bl InitMetroTRKCommTable //Initialize comm table
|
||||
/*
|
||||
@@ -307,8 +312,8 @@ asm void InitMetroTRK_BBA() {
|
||||
mtspr 0x3f2, r0
|
||||
mtspr 0x3f5, r0
|
||||
//Restore the stack pointer
|
||||
lis r1, 0x80459BC8@h
|
||||
ori r1, r1, 0x80459BC8@l
|
||||
lis r1, _db_stack_addr@h
|
||||
ori r1, r1, _db_stack_addr@l
|
||||
li r3, 2
|
||||
bl InitMetroTRKCommTable //Initialize comm table as BBA hardware
|
||||
/*
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h"
|
||||
|
||||
#pragma dont_inline on
|
||||
/* 8036F580-8036F638 369EC0 00B8+00 0/0 1/1 0/0 .text TRK_fill_mem */
|
||||
void TRK_fill_mem(void* dst, int val, u32 n) {
|
||||
u32 v, i, j;
|
||||
@@ -55,4 +56,23 @@ void TRK_fill_mem(void* dst, int val, u32 n) {
|
||||
do {
|
||||
*++((u8*)dst) = v;
|
||||
} while (--n);
|
||||
}
|
||||
}
|
||||
#pragma dont_inline reset
|
||||
|
||||
/* 800035C0-800035E4 0004C0 0024+00 0/0 12/12 0/0 .init TRK_memcpy */
|
||||
__declspec(section ".init") void* TRK_memcpy(void* dst, const void* src, size_t n) {
|
||||
const unsigned char* s = (const unsigned char*)src - 1;
|
||||
unsigned char* d = (unsigned char*)dst - 1;
|
||||
|
||||
n++;
|
||||
while (--n != 0)
|
||||
*++d = *++s;
|
||||
return dst;
|
||||
}
|
||||
|
||||
/* 80003590-800035C0 000490 0030+00 0/0 1/1 0/0 .init TRK_memset */
|
||||
__declspec(section ".init") void* TRK_memset(void* dst, int val, size_t n) {
|
||||
TRK_fill_mem(dst, val, n);
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
/**
|
||||
* targsupp.c
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#include "TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.h"
|
||||
|
||||
/* 803711D0-803711D8 -00001 0008+00 0/0 0/0 0/0 .text TRKAccessFile */
|
||||
asm u32 TRKAccessFile(u32, u32, u32*, u8*) {
|
||||
// clang-format off
|
||||
nofralloc
|
||||
twi 31, r0, 0x0
|
||||
blr
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
/* 803711D8-803711E0 -00001 0008+00 0/0 0/0 0/0 .text TRKOpenFile */
|
||||
asm u32 TRKOpenFile(u32, u32, u32*, u8*) {
|
||||
// clang-format off
|
||||
nofralloc
|
||||
twi 31, r0, 0x0
|
||||
blr
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
/* 803711E0-803711E8 -00001 0008+00 0/0 0/0 0/0 .text TRKCloseFile */
|
||||
asm u32 TRKCloseFile(u32, u32) {
|
||||
// clang-format off
|
||||
nofralloc
|
||||
twi 31, r0, 0x0
|
||||
blr
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
/* 803711E8-803711F0 -00001 0008+00 0/0 0/0 0/0 .text TRKPositionFile */
|
||||
asm u32 TRKPositionFile(u32, u32, u32*, u8*) {
|
||||
// clang-format off
|
||||
nofralloc
|
||||
twi 31, r0, 0x0
|
||||
blr
|
||||
// clang-format on
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
.include "macros.inc"
|
||||
.file "targsupp.s"
|
||||
|
||||
.text
|
||||
.balign 16
|
||||
|
||||
.fn TRKAccessFile, global
|
||||
twui r0, 0x0
|
||||
blr
|
||||
.endfn TRKAccessFile
|
||||
|
||||
.fn TRKOpenFile, global
|
||||
twui r0, 0x0
|
||||
blr
|
||||
.endfn TRKOpenFile
|
||||
|
||||
.fn TRKCloseFile, global
|
||||
twui r0, 0x0
|
||||
blr
|
||||
.endfn TRKCloseFile
|
||||
|
||||
.fn TRKPositionFile, global
|
||||
twui r0, 0x0
|
||||
blr
|
||||
.endfn TRKPositionFile
|
||||
@@ -0,0 +1,476 @@
|
||||
.include "macros.inc"
|
||||
|
||||
.section .init, "ax" # 0x80003100 - 0x80005600
|
||||
|
||||
.global gTRKInterruptVectorTable
|
||||
gTRKInterruptVectorTable:
|
||||
.asciz "Metrowerks Target Resident Kernel for PowerPC"
|
||||
.balign 4
|
||||
.fill 0xD0
|
||||
|
||||
#############################################
|
||||
# Interrupt vector slot 0x0000 is reserved. #
|
||||
#############################################
|
||||
|
||||
# Slot 0x0100: System Reset Exception
|
||||
b __TRK_reset
|
||||
.fill 0xFC
|
||||
|
||||
# Slot 0x0200: Machine Check Exception
|
||||
/* 80003354 00000354 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003358 00000358 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 8000335C 0000035C 7C 00 17 AC */ icbi 0, r2
|
||||
/* 80003360 00000360 7C 53 02 A6 */ mfdar r2
|
||||
/* 80003364 00000364 7C 00 13 AC */ dcbi 0, r2
|
||||
/* 80003368 00000368 7C 51 42 A6 */ mfspr r2, 0x111
|
||||
/* 8000336C 0000036C 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003370 00000370 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80003374 00000374 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003378 00000378 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 8000337C 0000037C 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003380 00000380 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80003384 00000384 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003388 00000388 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 8000338C 0000038C 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003390 00000390 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80003394 00000394 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003398 00000398 38 60 02 00 */ li r3, 0x200
|
||||
/* 8000339C 0000039C 4C 00 00 64 */ rfi
|
||||
.fill 0xB4
|
||||
|
||||
# Slot 0x0300: DSI Exception
|
||||
/* 80003454 00000454 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003458 00000458 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000345C 0000045C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003460 00000460 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003464 00000464 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003468 00000468 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000346C 0000046C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003470 00000470 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003474 00000474 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003478 00000478 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000347C 0000047C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003480 00000480 38 60 03 00 */ li r3, 0x300
|
||||
/* 80003484 00000484 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0400: ISI Exception
|
||||
/* 80003554 00000554 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003558 00000558 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000355C 0000055C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003560 00000560 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003564 00000564 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003568 00000568 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000356C 0000056C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003570 00000570 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003574 00000574 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003578 00000578 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000357C 0000057C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003580 00000580 38 60 04 00 */ li r3, 0x400
|
||||
/* 80003584 00000584 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0500: External Interrupt Exception
|
||||
/* 80003654 00000654 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003658 00000658 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000365C 0000065C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003660 00000660 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003664 00000664 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003668 00000668 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000366C 0000066C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003670 00000670 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003674 00000674 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003678 00000678 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000367C 0000067C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003680 00000680 38 60 05 00 */ li r3, 0x500
|
||||
/* 80003684 00000684 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0600: Alignment Exception
|
||||
/* 80003754 00000754 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003758 00000758 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000375C 0000075C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003760 00000760 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003764 00000764 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003768 00000768 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000376C 0000076C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003770 00000770 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003774 00000774 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003778 00000778 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000377C 0000077C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003780 00000780 38 60 06 00 */ li r3, 0x600
|
||||
/* 80003784 00000784 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0700: Program Exception
|
||||
/* 80003854 00000854 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003858 00000858 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000385C 0000085C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003860 00000860 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003864 00000864 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003868 00000868 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000386C 0000086C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003870 00000870 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003874 00000874 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003878 00000878 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000387C 0000087C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003880 00000880 38 60 07 00 */ li r3, 0x700
|
||||
/* 80003884 00000884 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0800: Floating Point Unavailable Exception
|
||||
/* 80003954 00000954 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003958 00000958 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000395C 0000095C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003960 00000960 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003964 00000964 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003968 00000968 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000396C 0000096C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003970 00000970 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003974 00000974 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003978 00000978 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000397C 0000097C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003980 00000980 38 60 08 00 */ li r3, 0x800
|
||||
/* 80003984 00000984 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0900: Decrementer Exception
|
||||
/* 80003A54 00000A54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003A58 00000A58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80003A5C 00000A5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003A60 00000A60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003A64 00000A64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003A68 00000A68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80003A6C 00000A6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003A70 00000A70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003A74 00000A74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003A78 00000A78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80003A7C 00000A7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003A80 00000A80 38 60 09 00 */ li r3, 0x900
|
||||
/* 80003A84 00000A84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
######################################################
|
||||
# Interrupt vector slots 0x0A00 & 0x0B00 are reserved.
|
||||
.fill 0x100
|
||||
.fill 0x100
|
||||
######################################################
|
||||
|
||||
# Slot 0x0C00: System Call Exception
|
||||
/* 80003D54 00000D54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003D58 00000D58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80003D5C 00000D5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003D60 00000D60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003D64 00000D64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003D68 00000D68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80003D6C 00000D6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003D70 00000D70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003D74 00000D74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003D78 00000D78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80003D7C 00000D7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003D80 00000D80 38 60 0C 00 */ li r3, 0xc00
|
||||
/* 80003D84 00000D84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x0D00: Trace Exception
|
||||
/* 80003E54 00000E54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003E58 00000E58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80003E5C 00000E5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003E60 00000E60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003E64 00000E64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003E68 00000E68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80003E6C 00000E6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003E70 00000E70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003E74 00000E74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003E78 00000E78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80003E7C 00000E7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003E80 00000E80 38 60 0D 00 */ li r3, 0xd00
|
||||
/* 80003E84 00000E84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
############################################################################
|
||||
# Slot 0x0E00 is usually for the Floating Point Assist Exception Handler, #
|
||||
# however that exception is not implemented in the PPC 750CL architecture. #
|
||||
############################################################################
|
||||
|
||||
# Slot 0x0F00: Performance Monitor Exception
|
||||
/* 80003F54 00000F54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80003F58 00000F58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80003F5C 00000F5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80003F60 00000F60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80003F64 00000F64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80003F68 00000F68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80003F6C 00000F6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80003F70 00000F70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80003F74 00000F74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80003F78 00000F78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80003F7C 00000F7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80003F80 00000F80 38 60 0E 00 */ li r3, 0xe00
|
||||
/* 80003F84 00000F84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
##################################################################################
|
||||
# Interrupt vector slots 0x1000 through 0x1200 are not implemented in the 750CL. #
|
||||
##################################################################################
|
||||
|
||||
# Slot 0x1300: Instruction Address Breakpoint Exception
|
||||
/* 80004054 00001054 48 00 00 54 */ b .L_800040A8
|
||||
.fill 0x1C
|
||||
/* 80004074 00001074 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004078 00001078 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000407C 0000107C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004080 00001080 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004084 00001084 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004088 00001088 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000408C 0000108C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004090 00001090 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004094 00001094 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004098 00001098 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000409C 0000109C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 800040A0 000010A0 38 60 0F 20 */ li r3, 0xf20
|
||||
/* 800040A4 000010A4 4C 00 00 64 */ rfi
|
||||
.L_800040A8:
|
||||
/* 800040A8 000010A8 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 800040AC 000010AC 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 800040B0 000010B0 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 800040B4 000010B4 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 800040B8 000010B8 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 800040BC 000010BC 7C 60 00 A6 */ mfmsr r3
|
||||
/* 800040C0 000010C0 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 800040C4 000010C4 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 800040C8 000010C8 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 800040CC 000010CC 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 800040D0 000010D0 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 800040D4 000010D4 38 60 0F 00 */ li r3, 0xf00
|
||||
/* 800040D8 000010D8 4C 00 00 64 */ rfi
|
||||
.fill 0x78
|
||||
|
||||
# Slot 0x1400: System Management Interrupt Exception
|
||||
/* 80004154 00001154 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004158 00001158 7C 40 00 26 */ mfcr r2
|
||||
/* 8000415C 0000115C 7C 52 43 A6 */ mtspr 0x112, r2
|
||||
/* 80004160 00001160 7C 40 00 A6 */ mfmsr r2
|
||||
/* 80004164 00001164 74 42 00 02 */ andis. r2, r2, 2
|
||||
/* 80004168 00001168 41 82 00 1C */ beq .L_80004184
|
||||
/* 8000416C 0000116C 7C 40 00 A6 */ mfmsr r2
|
||||
/* 80004170 00001170 6C 42 00 02 */ xoris r2, r2, 2
|
||||
/* 80004174 00001174 7C 00 04 AC */ sync 0
|
||||
/* 80004178 00001178 7C 40 01 24 */ mtmsr r2
|
||||
/* 8000417C 0000117C 7C 00 04 AC */ sync 0
|
||||
/* 80004180 00001180 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
.L_80004184:
|
||||
/* 80004184 00001184 7C 52 42 A6 */ mfspr r2, 0x112
|
||||
/* 80004188 00001188 7C 4F F1 20 */ mtcrf 0xff, r2
|
||||
/* 8000418C 0000118C 7C 51 42 A6 */ mfspr r2, 0x111
|
||||
/* 80004190 00001190 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004194 00001194 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80004198 00001198 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 8000419C 0000119C 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 800041A0 000011A0 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 800041A4 000011A4 7C 60 00 A6 */ mfmsr r3
|
||||
/* 800041A8 000011A8 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 800041AC 000011AC 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 800041B0 000011B0 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 800041B4 000011B4 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 800041B8 000011B8 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 800041BC 000011BC 38 60 10 00 */ li r3, 0x1000
|
||||
/* 800041C0 000011C0 4C 00 00 64 */ rfi
|
||||
.fill 0x90
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Interrupt vector slots 0x1500 and 0x1600 are not implemented in the 750CL. #
|
||||
##############################################################################
|
||||
|
||||
# Slot 0x1700: Thermal-Management Interrupt Exception
|
||||
/* 80004254 00001254 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004258 00001258 7C 40 00 26 */ mfcr r2
|
||||
/* 8000425C 0000125C 7C 52 43 A6 */ mtspr 0x112, r2
|
||||
/* 80004260 00001260 7C 40 00 A6 */ mfmsr r2
|
||||
/* 80004264 00001264 74 42 00 02 */ andis. r2, r2, 2
|
||||
/* 80004268 00001268 41 82 00 1C */ beq .L_80004284
|
||||
/* 8000426C 0000126C 7C 40 00 A6 */ mfmsr r2
|
||||
/* 80004270 00001270 6C 42 00 02 */ xoris r2, r2, 2
|
||||
/* 80004274 00001274 7C 00 04 AC */ sync 0
|
||||
/* 80004278 00001278 7C 40 01 24 */ mtmsr r2
|
||||
/* 8000427C 0000127C 7C 00 04 AC */ sync 0
|
||||
/* 80004280 00001280 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
.L_80004284:
|
||||
/* 80004284 00001284 7C 52 42 A6 */ mfspr r2, 0x112
|
||||
/* 80004288 00001288 7C 4F F1 20 */ mtcrf 0xff, r2
|
||||
/* 8000428C 0000128C 7C 51 42 A6 */ mfspr r2, 0x111
|
||||
/* 80004290 00001290 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004294 00001294 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80004298 00001298 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 8000429C 0000129C 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 800042A0 000012A0 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 800042A4 000012A4 7C 60 00 A6 */ mfmsr r3
|
||||
/* 800042A8 000012A8 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 800042AC 000012AC 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 800042B0 000012B0 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 800042B4 000012B4 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 800042B8 000012B8 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 800042BC 000012BC 38 60 11 00 */ li r3, 0x1100
|
||||
/* 800042C0 000012C0 4C 00 00 64 */ rfi
|
||||
.fill 0x90
|
||||
|
||||
# Slot 0x1800(?)
|
||||
/* 80004354 00001354 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004358 00001358 7C 40 00 26 */ mfcr r2
|
||||
/* 8000435C 0000135C 7C 52 43 A6 */ mtspr 0x112, r2
|
||||
/* 80004360 00001360 7C 40 00 A6 */ mfmsr r2
|
||||
/* 80004364 00001364 74 42 00 02 */ andis. r2, r2, 2
|
||||
/* 80004368 00001368 41 82 00 1C */ beq .L_80004384
|
||||
/* 8000436C 0000136C 7C 40 00 A6 */ mfmsr r2
|
||||
/* 80004370 00001370 6C 42 00 02 */ xoris r2, r2, 2
|
||||
/* 80004374 00001374 7C 00 04 AC */ sync 0
|
||||
/* 80004378 00001378 7C 40 01 24 */ mtmsr r2
|
||||
/* 8000437C 0000137C 7C 00 04 AC */ sync 0
|
||||
/* 80004380 00001380 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
.L_80004384:
|
||||
/* 80004384 00001384 7C 52 42 A6 */ mfspr r2, 0x112
|
||||
/* 80004388 00001388 7C 4F F1 20 */ mtcrf 0xff, r2
|
||||
/* 8000438C 0000138C 7C 51 42 A6 */ mfspr r2, 0x111
|
||||
/* 80004390 00001390 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004394 00001394 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80004398 00001398 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 8000439C 0000139C 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 800043A0 000013A0 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 800043A4 000013A4 7C 60 00 A6 */ mfmsr r3
|
||||
/* 800043A8 000013A8 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 800043AC 000013AC 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 800043B0 000013B0 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 800043B4 000013B4 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 800043B8 000013B8 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 800043BC 000013BC 38 60 12 00 */ li r3, 0x1200
|
||||
/* 800043C0 000013C0 4C 00 00 64 */ rfi
|
||||
.fill 0x90
|
||||
|
||||
# Slot 0x1900(?)
|
||||
/* 80004454 00001454 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004458 00001458 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000445C 0000145C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004460 00001460 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004464 00001464 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004468 00001468 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000446C 0000146C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004470 00001470 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004474 00001474 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004478 00001478 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000447C 0000147C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004480 00001480 38 60 13 00 */ li r3, 0x1300
|
||||
/* 80004484 00001484 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x1A00(?)
|
||||
/* 80004554 00001554 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004558 00001558 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000455C 0000155C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004560 00001560 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004564 00001564 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004568 00001568 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000456C 0000156C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004570 00001570 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004574 00001574 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004578 00001578 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000457C 0000157C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004580 00001580 38 60 14 00 */ li r3, 0x1400
|
||||
/* 80004584 00001584 4C 00 00 64 */ rfi
|
||||
.fill 0x1CC
|
||||
|
||||
# Slot 0x1B00(?)
|
||||
/* 80004754 00001754 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004758 00001758 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000475C 0000175C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004760 00001760 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004764 00001764 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004768 00001768 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000476C 0000176C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004770 00001770 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004774 00001774 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004778 00001778 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000477C 0000177C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004780 00001780 38 60 16 00 */ li r3, 0x1600
|
||||
/* 80004784 00001784 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x1C00(?)
|
||||
/* 80004854 00001854 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004858 00001858 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000485C 0000185C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004860 00001860 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004864 00001864 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004868 00001868 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000486C 0000186C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004870 00001870 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004874 00001874 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004878 00001878 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000487C 0000187C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004880 00001880 38 60 17 00 */ li r3, 0x1700
|
||||
/* 80004884 00001884 4C 00 00 64 */ rfi
|
||||
.fill 0x4CC
|
||||
|
||||
# Slot 0x1D00(?)
|
||||
/* 80004D54 00001D54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004D58 00001D58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80004D5C 00001D5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004D60 00001D60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004D64 00001D64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004D68 00001D68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80004D6C 00001D6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004D70 00001D70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004D74 00001D74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004D78 00001D78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80004D7C 00001D7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004D80 00001D80 38 60 1C 00 */ li r3, 0x1c00
|
||||
/* 80004D84 00001D84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x1E00(?)
|
||||
/* 80004E54 00001E54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004E58 00001E58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80004E5C 00001E5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004E60 00001E60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004E64 00001E64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004E68 00001E68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80004E6C 00001E6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004E70 00001E70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004E74 00001E74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004E78 00001E78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80004E7C 00001E7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004E80 00001E80 38 60 1D 00 */ li r3, 0x1d00
|
||||
/* 80004E84 00001E84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x1F00(?)
|
||||
/* 80004F54 00001F54 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80004F58 00001F58 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 80004F5C 00001F5C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80004F60 00001F60 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80004F64 00001F64 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80004F68 00001F68 7C 60 00 A6 */ mfmsr r3
|
||||
/* 80004F6C 00001F6C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80004F70 00001F70 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80004F74 00001F74 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80004F78 00001F78 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 80004F7C 00001F7C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80004F80 00001F80 38 60 1E 00 */ li r3, 0x1e00
|
||||
/* 80004F84 00001F84 4C 00 00 64 */ rfi
|
||||
.fill 0xCC
|
||||
|
||||
# Slot 0x2000(?)
|
||||
/* 80005054 00002054 7C 51 43 A6 */ mtspr 0x111, r2
|
||||
/* 80005058 00002058 7C 72 43 A6 */ mtspr 0x112, r3
|
||||
/* 8000505C 0000205C 7C 93 43 A6 */ mtspr 0x113, r4
|
||||
/* 80005060 00002060 7C 5A 02 A6 */ mfspr r2, 0x1a
|
||||
/* 80005064 00002064 7C 9B 02 A6 */ mfspr r4, 0x1b
|
||||
/* 80005068 00002068 7C 60 00 A6 */ mfmsr r3
|
||||
/* 8000506C 0000206C 60 63 00 30 */ ori r3, r3, 0x30
|
||||
/* 80005070 00002070 7C 7B 03 A6 */ mtspr 0x1b, r3
|
||||
/* 80005074 00002074 3C 60 80 0B */ lis r3, TRKInterruptHandler@h
|
||||
/* 80005078 00002078 60 63 DE F4 */ ori r3, r3, TRKInterruptHandler@l
|
||||
/* 8000507C 0000207C 7C 7A 03 A6 */ mtspr 0x1a, r3
|
||||
/* 80005080 00002080 38 60 1F 00 */ li r3, 0x1f00
|
||||
/* 80005084 00002084 4C 00 00 64 */ rfi
|
||||
.global gTRKInterruptVectorTableEnd
|
||||
gTRKInterruptVectorTableEnd:
|
||||
+92
-94
@@ -9780,14 +9780,14 @@ s16 daAlink_c::getRoofAngle(cBgS_PolyInfo* param_0, s16 param_1) {
|
||||
|
||||
/* 800B01FC-800B02BC 0AAB3C 00C0+00 2/2 0/0 0/0 .text
|
||||
* getWallEdgePos__9daAlink_cFRC4cXyzP8cM3dGPlaP8cM3dGPlaP4cXyzi */
|
||||
BOOL daAlink_c::getWallEdgePos(cXyz const& param_0, cM3dGPla* param_1, cM3dGPla* param_2,
|
||||
cXyz* param_3, int param_4) {
|
||||
cXyz sp20(param_1->mNormal.z, 0.0f, -param_1->mNormal.x);
|
||||
sp20.normalizeZP();
|
||||
BOOL daAlink_c::getWallEdgePos(cXyz const& param_0, cM3dGPla* i_planeA, cM3dGPla* i_planeB,
|
||||
cXyz* o_outVec, int unused) {
|
||||
cXyz normal(i_planeA->mNormal.z, 0.0f, -i_planeA->mNormal.x);
|
||||
normal.normalizeZP();
|
||||
|
||||
cM3dGPla sp2C(&sp20, -((sp20.z * param_0.z) + ((sp20.x * param_0.x) + (sp20.y * param_0.y))));
|
||||
cM3dGPla planeC(&normal, -((normal.z * param_0.z) + ((normal.x * param_0.x) + (normal.y * param_0.y))));
|
||||
|
||||
return cM3d_3PlaneCrossPos(*param_1, *param_2, sp2C, param_3);
|
||||
return cM3d_3PlaneCrossPos(*i_planeA, *i_planeB, planeC, o_outVec);
|
||||
}
|
||||
|
||||
/* 800B02BC-800B146C 0AABFC 11B0+00 9/9 0/0 0/0 .text setFrontWallType__9daAlink_cFv */
|
||||
@@ -9806,8 +9806,8 @@ void daAlink_c::setFrontWallType() {
|
||||
if (field_0x2f91 == 0) {
|
||||
field_0x2f91 = 1;
|
||||
if (!checkMagneBootsOn()) {
|
||||
cXyz sp98;
|
||||
cXyz sp8C;
|
||||
cXyz chk_start_pos;
|
||||
cXyz chk_end_pos;
|
||||
f32 sp64 = cM_ssin(shape_angle.y);
|
||||
f32 sp60 = cM_scos(shape_angle.y);
|
||||
|
||||
@@ -9833,39 +9833,38 @@ void daAlink_c::setFrontWallType() {
|
||||
}
|
||||
}
|
||||
|
||||
sp98.x = mHookshotTopPos.x - (sp64 * var_f31);
|
||||
sp98.z = mHookshotTopPos.z - (sp60 * var_f31);
|
||||
sp8C.x = (2.0f * mHookshotTopPos.x) - sp98.x;
|
||||
sp8C.z = (2.0f * mHookshotTopPos.z) - sp98.z;
|
||||
chk_start_pos.x = mHookshotTopPos.x - (sp64 * var_f31);
|
||||
chk_start_pos.z = mHookshotTopPos.z - (sp60 * var_f31);
|
||||
chk_end_pos.x = (2.0f * mHookshotTopPos.x) - chk_start_pos.x;
|
||||
chk_end_pos.z = (2.0f * mHookshotTopPos.z) - chk_start_pos.z;
|
||||
sp50 = mHookshotTopPos.y;
|
||||
sp54 = 10.0f + mHookshotTopPos.y;
|
||||
} else {
|
||||
sp98.x = current.pos.x;
|
||||
sp98.z = current.pos.z;
|
||||
sp8C.x = sp98.x + (sp64 * (25.0f + var_f31));
|
||||
sp8C.z = sp98.z + (sp60 * (25.0f + var_f31));
|
||||
chk_start_pos.x = current.pos.x;
|
||||
chk_start_pos.z = current.pos.z;
|
||||
chk_end_pos.x = chk_start_pos.x + (sp64 * (25.0f + var_f31));
|
||||
chk_end_pos.z = chk_start_pos.z + (sp60 * (25.0f + var_f31));
|
||||
sp50 = current.pos.y;
|
||||
sp54 = 100.0f + current.pos.y;
|
||||
}
|
||||
|
||||
BOOL sp4C = 0;
|
||||
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
sp98.y = sp50 + mAcchCir[i].GetWallH();
|
||||
sp8C.y = sp98.y;
|
||||
chk_start_pos.y = sp50 + mAcchCir[i].GetWallH();
|
||||
chk_end_pos.y = chk_start_pos.y;
|
||||
|
||||
if (commonLineCheck(&sp98, &sp8C)) {
|
||||
if (commonLineCheck(&chk_start_pos, &chk_end_pos)) {
|
||||
var_r27 = dComIfG_Bgsp().GetWallCode(mLinkLinChk);
|
||||
|
||||
if (i == 0 && var_r27 == 3 && checkStageName("D_MN10") != 0 && fopAcM_GetRoomNo(this) == 6) {
|
||||
sp4C = 1;
|
||||
} else if (!checkWolf() && sp5C == 0 && ((i == 0 && mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52)) || mProcID == PROC_HOOKSHOT_FLY) && var_r27 == 0) {
|
||||
sp5C = 1;
|
||||
sp98.y = sp54;
|
||||
sp8C.y = sp98.y;
|
||||
chk_start_pos.y = sp54;
|
||||
chk_end_pos.y = chk_start_pos.y;
|
||||
|
||||
if (commonLineCheck(&sp98, &sp8C) && checkClimbCode(mLinkLinChk)) {
|
||||
if (commonLineCheck(&chk_start_pos, &chk_end_pos) && checkClimbCode(mLinkLinChk)) {
|
||||
sp58 = 1;
|
||||
break;
|
||||
}
|
||||
@@ -9883,24 +9882,24 @@ void daAlink_c::setFrontWallType() {
|
||||
return;
|
||||
}
|
||||
|
||||
sp98.y = sp50 + mAcchCir[0].GetWallH();
|
||||
sp8C.y = sp98.y;
|
||||
chk_start_pos.y = sp50 + mAcchCir[0].GetWallH();
|
||||
chk_end_pos.y = chk_start_pos.y;
|
||||
|
||||
if (!commonLineCheck(&sp98, &sp8C)) {
|
||||
if (!commonLineCheck(&chk_start_pos, &chk_end_pos)) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
sp4C = 0;
|
||||
}
|
||||
|
||||
cM3dGPla spE0;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &spE0);
|
||||
cM3dGPla linchk_tri;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &linchk_tri);
|
||||
|
||||
if ((fabsf(spE0.mNormal.y) > 0.05f)) {
|
||||
if ((fabsf(linchk_tri.mNormal.y) > 0.05f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
field_0x306e = spE0.mNormal.atan2sX_Z();
|
||||
field_0x306e = linchk_tri.mNormal.atan2sX_Z();
|
||||
BOOL sp48 = 0;
|
||||
|
||||
s16 spA;
|
||||
@@ -9926,29 +9925,28 @@ void daAlink_c::setFrontWallType() {
|
||||
if (checkModeFlg(2)) {
|
||||
field_0x34ec = mLinkLinChk.i_GetCross();
|
||||
} else {
|
||||
sp40 = spE0.getSignedLenPos(¤t.pos);
|
||||
field_0x34ec.set(current.pos.x - (sp40 * spE0.mNormal.x), current.pos.y, current.pos.z - (sp40 * spE0.mNormal.z));
|
||||
sp40 = linchk_tri.getSignedLenPos(¤t.pos);
|
||||
field_0x34ec.set(current.pos.x - (sp40 * linchk_tri.mNormal.x), current.pos.y, current.pos.z - (sp40 * linchk_tri.mNormal.z));
|
||||
|
||||
int temp_r3 = dComIfG_Bgsp().GetWallCode(mLinkLinChk);
|
||||
if (temp_r3 != 4 && temp_r3 != 5) {
|
||||
sp98.x = current.pos.x;
|
||||
sp98.z = current.pos.z;
|
||||
sp8C.x = sp98.x - (2.0f * sp40 * spE0.mNormal.x);
|
||||
sp8C.z = sp98.z - (2.0f * sp40 * spE0.mNormal.z);
|
||||
chk_start_pos.x = current.pos.x;
|
||||
chk_start_pos.z = current.pos.z;
|
||||
chk_end_pos.x = chk_start_pos.x - (2.0f * sp40 * linchk_tri.mNormal.x);
|
||||
chk_end_pos.z = chk_start_pos.z - (2.0f * sp40 * linchk_tri.mNormal.z);
|
||||
|
||||
//int i;
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (i == 0 && sp58 != 0) {
|
||||
sp98.y = sp54;
|
||||
chk_start_pos.y = sp54;
|
||||
} else {
|
||||
sp98.y = current.pos.y + mAcchCir[i].GetWallH();
|
||||
chk_start_pos.y = current.pos.y + mAcchCir[i].GetWallH();
|
||||
}
|
||||
|
||||
sp8C.y = sp98.y;
|
||||
chk_end_pos.y = chk_start_pos.y;
|
||||
|
||||
if (commonLineCheck(&sp98, &sp8C)) {
|
||||
if (commonLineCheck(&chk_start_pos, &chk_end_pos)) {
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &spCC);
|
||||
cXyz sp80 = spE0.mNormal - spCC.mNormal;
|
||||
cXyz sp80 = linchk_tri.mNormal - spCC.mNormal;
|
||||
|
||||
if (sp80.abs() < 0.001f) {
|
||||
break;
|
||||
@@ -9976,7 +9974,7 @@ void daAlink_c::setFrontWallType() {
|
||||
return;
|
||||
}
|
||||
|
||||
cXyz sp74;
|
||||
cXyz wall_edge_pos;
|
||||
if (var_r29 != 1 && var_r29 != 5 && var_r29 != 4) {
|
||||
offNoResetFlg3(FLG3_UNK_400000);
|
||||
}
|
||||
@@ -10026,26 +10024,26 @@ void daAlink_c::setFrontWallType() {
|
||||
sp34 = current.pos.y;
|
||||
}
|
||||
|
||||
sp98.set(field_0x34ec.x - (15.0f * spE0.mNormal.x), 150.0f + sp34, field_0x34ec.z - (15.0f * spE0.mNormal.z));
|
||||
mLinkGndChk.SetPos(&sp98);
|
||||
chk_start_pos.set(field_0x34ec.x - (15.0f * linchk_tri.mNormal.x), 150.0f + sp34, field_0x34ec.z - (15.0f * linchk_tri.mNormal.z));
|
||||
mLinkGndChk.SetPos(&chk_start_pos);
|
||||
f32 sp38 = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
|
||||
|
||||
if (sp38 >= current.pos.y && dBgS_CheckBGroundPoly(mLinkGndChk)) {
|
||||
cM3dGPla spB8;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkGndChk, &spB8);
|
||||
|
||||
if (getWallEdgePos(field_0x34ec, &spE0, &spB8, &sp74, 0)) {
|
||||
if (sp74.y - sp34 <= 150.0f) {
|
||||
if (getWallEdgePos(field_0x34ec, &linchk_tri, &spB8, &wall_edge_pos, 0)) {
|
||||
if (wall_edge_pos.y - sp34 <= 150.0f) {
|
||||
if (checkModeFlg(0x40000)) {
|
||||
field_0x34ec = sp74;
|
||||
field_0x34ec = wall_edge_pos;
|
||||
field_0x2f91 = 7;
|
||||
return;
|
||||
} else if (mProcID != PROC_HOOKSHOT_FLY) {
|
||||
field_0x34ec = sp74;
|
||||
field_0x34ec = wall_edge_pos;
|
||||
field_0x2f91 = 0xA;
|
||||
return;
|
||||
} else {
|
||||
current.pos.y = sp74.y - 150.0f;
|
||||
current.pos.y = wall_edge_pos.y - 150.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10075,40 +10073,40 @@ void daAlink_c::setFrontWallType() {
|
||||
return;
|
||||
}
|
||||
|
||||
f32 var_f30;
|
||||
f32 sp30;
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
f32 hang_height;
|
||||
f32 small_jump_height;
|
||||
f32 climb_height;
|
||||
f32 body_height;
|
||||
|
||||
if (checkWolf()) {
|
||||
if (checkModeFlg(2)) {
|
||||
var_f30 = daAlinkHIO_wlAutoJump_c0::m.field_0x78;
|
||||
hang_height = daAlinkHIO_wlAutoJump_c0::m.field_0x78;
|
||||
} else {
|
||||
var_f30 = daAlinkHIO_wlWallHang_c0::m.field_0x84;
|
||||
hang_height = daAlinkHIO_wlWallHang_c0::m.field_0x84;
|
||||
}
|
||||
sp30 = daAlinkHIO_wlWallHang_c0::m.field_0x7C;
|
||||
sp2C = daAlinkHIO_wlWallHang_c0::m.field_0x80;
|
||||
small_jump_height = daAlinkHIO_wlWallHang_c0::m.field_0x7C;
|
||||
climb_height = daAlinkHIO_wlWallHang_c0::m.field_0x80;
|
||||
} else {
|
||||
if (checkModeFlg(2)) {
|
||||
var_f30 = daAlinkHIO_autoJump_c0::m.mHangHeightLimit;
|
||||
hang_height = daAlinkHIO_autoJump_c0::m.mHangHeightLimit;
|
||||
} else {
|
||||
var_f30 = daAlinkHIO_wallHang_c0::m.field_0x14;
|
||||
hang_height = daAlinkHIO_wallHang_c0::m.jump_hang_height;
|
||||
}
|
||||
sp30 = daAlinkHIO_wallHang_c0::m.field_0x8;
|
||||
sp2C = daAlinkHIO_wallHang_c0::m.field_0xC;
|
||||
small_jump_height = daAlinkHIO_wallHang_c0::m.small_jump_height;
|
||||
climb_height = daAlinkHIO_wallHang_c0::m.climb_height;
|
||||
}
|
||||
|
||||
sp28 = current.pos.y + mSinkShapeOffset;
|
||||
sp98.set(current.pos.x, sp28 + (0.01f + var_f30), current.pos.z);
|
||||
sp8C.set(sp98.x + (sp64 * (50.0f + var_f31)), sp98.y, sp98.z + (sp60 * (50.0f + var_f31)));
|
||||
body_height = current.pos.y + mSinkShapeOffset;
|
||||
chk_start_pos.set(current.pos.x, body_height + (0.01f + hang_height), current.pos.z);
|
||||
chk_end_pos.set(chk_start_pos.x + (sp64 * (50.0f + var_f31)), chk_start_pos.y, chk_start_pos.z + (sp60 * (50.0f + var_f31)));
|
||||
|
||||
BOOL sp24 = commonLineCheck(&sp98, &sp8C);
|
||||
BOOL sp24 = commonLineCheck(&chk_start_pos, &chk_end_pos);
|
||||
if (sp24) {
|
||||
sp98 = mLinkLinChk.i_GetCross();
|
||||
chk_start_pos = mLinkLinChk.i_GetCross();
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &spCC);
|
||||
sp98.x = (sp98.x + (25.0f * spCC.mNormal.x));
|
||||
sp98.z = (sp98.z + (25.0f * spCC.mNormal.z));
|
||||
mLinkGndChk.SetPos(&sp98);
|
||||
chk_start_pos.x = (chk_start_pos.x + (25.0f * spCC.mNormal.x));
|
||||
chk_start_pos.z = (chk_start_pos.z + (25.0f * spCC.mNormal.z));
|
||||
mLinkGndChk.SetPos(&chk_start_pos);
|
||||
|
||||
if (dComIfG_Bgsp().GroundCross(&mLinkGndChk) > current.pos.y + l_autoUpHeight) {
|
||||
dComIfG_Bgsp().GetTriPla(mLinkGndChk, &spCC);
|
||||
@@ -10120,51 +10118,51 @@ void daAlink_c::setFrontWallType() {
|
||||
|
||||
if (sp24 == 0) {
|
||||
mLinkRoofChk.SetPos(current.pos);
|
||||
sp24 = dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - sp28 > 10.0f + var_f30 ? 0 : 1;
|
||||
sp24 = dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - body_height > 10.0f + hang_height ? 0 : 1;
|
||||
}
|
||||
|
||||
if (sp24 != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
cM3dGPla spA4;
|
||||
bool sp8 = 0;
|
||||
cM3dGPla gndchk_tri;
|
||||
bool found_gnd_tri = false;
|
||||
int sp20 = 0;
|
||||
|
||||
sp98.set(field_0x34ec.x - (7.5f * spE0.mNormal.x), sp28 + (0.01f + var_f30), field_0x34ec.z - (7.5f * spE0.mNormal.z));
|
||||
mLinkGndChk.SetPos(&sp98);
|
||||
chk_start_pos.set(field_0x34ec.x - (7.5f * linchk_tri.mNormal.x), body_height + (0.01f + hang_height), field_0x34ec.z - (7.5f * linchk_tri.mNormal.z));
|
||||
mLinkGndChk.SetPos(&chk_start_pos);
|
||||
f32 sp1C = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
|
||||
|
||||
sp98.set(field_0x34ec.x - (1.5f * spE0.mNormal.x), sp28 + (0.01f + var_f30), field_0x34ec.z - (1.5f * spE0.mNormal.z));
|
||||
mLinkGndChk.SetPos(&sp98);
|
||||
chk_start_pos.set(field_0x34ec.x - (1.5f * linchk_tri.mNormal.x), body_height + (0.01f + hang_height), field_0x34ec.z - (1.5f * linchk_tri.mNormal.z));
|
||||
mLinkGndChk.SetPos(&chk_start_pos);
|
||||
f32 sp38 = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
|
||||
|
||||
if (-1000000000.0f != sp38 && fabsf(sp1C - sp38) < l_autoUpHeight) {
|
||||
sp8 = dComIfG_Bgsp().GetTriPla(mLinkGndChk, &spA4);
|
||||
found_gnd_tri = dComIfG_Bgsp().GetTriPla(mLinkGndChk, &gndchk_tri);
|
||||
}
|
||||
if ((!checkModeFlg(0x40000) && sp38 < sp28) || sp8 == 0) {
|
||||
if ((!checkModeFlg(0x40000) && sp38 < body_height) || !found_gnd_tri) {
|
||||
return;
|
||||
}
|
||||
if (-1000000000.0f == sp38 || !cBgW_CheckBGround(spA4.mNormal.y)) {
|
||||
if (-1000000000.0f == sp38 || !cBgW_CheckBGround(gndchk_tri.mNormal.y)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!getWallEdgePos(field_0x34ec, &spE0, &spA4, &sp74, sp20)) {
|
||||
if (!getWallEdgePos(field_0x34ec, &linchk_tri, &gndchk_tri, &wall_edge_pos, sp20)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dComIfG_Bgsp().GetGroundCode(mLinkGndChk) != 6) {
|
||||
f32 sp18 = 36.5f;
|
||||
sp98.set(sp74.x + (10.0f * spE0.mNormal.x), sp74.y + l_autoUpHeight, sp74.z + (10.0f * spE0.mNormal.z));
|
||||
sp8C.set(sp74.x - (spE0.mNormal.x * sp18), sp98.y, sp74.z - (spE0.mNormal.z * sp18));
|
||||
chk_start_pos.set(wall_edge_pos.x + (10.0f * linchk_tri.mNormal.x), wall_edge_pos.y + l_autoUpHeight, wall_edge_pos.z + (10.0f * linchk_tri.mNormal.z));
|
||||
chk_end_pos.set(wall_edge_pos.x - (linchk_tri.mNormal.x * sp18), chk_start_pos.y, wall_edge_pos.z - (linchk_tri.mNormal.z * sp18));
|
||||
|
||||
if (commonLineCheck(&sp98, &sp8C)) {
|
||||
if (commonLineCheck(&chk_start_pos, &chk_end_pos)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
field_0x34ec = sp74;
|
||||
f32 temp_f29 = field_0x34ec.y - sp28;
|
||||
field_0x34ec = wall_edge_pos;
|
||||
f32 temp_f29 = field_0x34ec.y - body_height;
|
||||
|
||||
if (checkModeFlg(0x40000)) {
|
||||
f32 sp14;
|
||||
@@ -10185,19 +10183,19 @@ void daAlink_c::setFrontWallType() {
|
||||
}
|
||||
}
|
||||
} else if (checkModeFlg(2)) {
|
||||
if (sp38 - mLinkAcch.GetGroundH() > field_0x598 && temp_f29 < var_f30) {
|
||||
if (sp38 - mLinkAcch.GetGroundH() > field_0x598 && temp_f29 < hang_height) {
|
||||
if (!checkWolf() && mProcID != PROC_HOOKSHOT_FLY && temp_f29 < daAlinkHIO_autoJump_c0::m.mGrabHeightLimit) {
|
||||
field_0x2f91 = 0xB;
|
||||
} else {
|
||||
field_0x2f91 = 0xA;
|
||||
}
|
||||
}
|
||||
} else if (!(temp_f29 >= 0.01f + var_f30) && (!checkGrabAnime() || !(temp_f29 >= 0.01f + sp30))) {
|
||||
if (temp_f29 < 0.01f + sp30) {
|
||||
} else if (!(temp_f29 >= 0.01f + hang_height) && (!checkGrabAnime() || !(temp_f29 >= 0.01f + small_jump_height))) {
|
||||
if (temp_f29 < 0.01f + small_jump_height) {
|
||||
field_0x2f91 = 6;
|
||||
} else if (temp_f29 < 0.01f + sp2C) {
|
||||
} else if (temp_f29 < 0.01f + climb_height) {
|
||||
field_0x2f91 = 7;
|
||||
} else if (checkWolf() || (temp_f29 < 0.01f + daAlinkHIO_wallHang_c0::m.field_0x10)) {
|
||||
} else if (checkWolf() || (temp_f29 < 0.01f + daAlinkHIO_wallHang_c0::m.jump_climb_height)) {
|
||||
field_0x2f91 = 8;
|
||||
} else {
|
||||
field_0x2f91 = 9;
|
||||
@@ -12199,7 +12197,7 @@ BOOL daAlink_c::checkAutoJumpAction() {
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkEndResetFlg0(ERFLG0_NOT_HANG) && mSpecialMode != 0x2B && var_r29 && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 2 && sp28 < -daAlinkHIO_wallHang_c0::m.field_0x18 && current.pos.y - mWaterY > sp18 && (fabsf(sp44.mNormal.y) <= 0.05f || (sp44.mNormal.y < 0.05f && var_r27 && getWallEdgePos(mLinkLinChk.i_GetCross(), &sp44, &sp58, mLinkLinChk.GetCrossP(), 0)))) {
|
||||
if (!checkEndResetFlg0(ERFLG0_NOT_HANG) && mSpecialMode != 0x2B && var_r29 && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 2 && sp28 < -daAlinkHIO_wallHang_c0::m.hang_foot_pos_height && current.pos.y - mWaterY > sp18 && (fabsf(sp44.mNormal.y) <= 0.05f || (sp44.mNormal.y < 0.05f && var_r27 && getWallEdgePos(mLinkLinChk.i_GetCross(), &sp44, &sp58, mLinkLinChk.GetCrossP(), 0)))) {
|
||||
current.pos.x = mLinkLinChk.i_GetCross().x;
|
||||
current.pos.z = mLinkLinChk.i_GetCross().z;
|
||||
|
||||
@@ -12358,7 +12356,7 @@ BOOL daAlink_c::checkFrontWallTypeAction() {
|
||||
field_0x3078 = var_r27 + 1;
|
||||
|
||||
if (field_0x2f91 == 6) {
|
||||
if (field_0x3078 > daAlinkHIO_wallHang_c0::m.field_0x0) {
|
||||
if (field_0x3078 > daAlinkHIO_wallHang_c0::m.small_jump_input_time) {
|
||||
if (checkWolf()) {
|
||||
return procWolfStepMoveInit();
|
||||
} else {
|
||||
@@ -12366,7 +12364,7 @@ BOOL daAlink_c::checkFrontWallTypeAction() {
|
||||
}
|
||||
}
|
||||
} else if (field_0x2f91 == 7 || field_0x2f91 == 8 || field_0x2f91 == 9) {
|
||||
if (field_0x3078 > daAlinkHIO_wallHang_c0::m.field_0x2) {
|
||||
if (field_0x3078 > daAlinkHIO_wallHang_c0::m.grab_input_time) {
|
||||
if (checkWolf()) {
|
||||
if (field_0x2f91 == 7 || field_0x2f91 == 8) {
|
||||
if (checkModeFlg(0x40000)) {
|
||||
|
||||
@@ -197,7 +197,7 @@ void daAlink_c::setHangGroundY() {
|
||||
int daAlink_c::changeHangEndProc() {
|
||||
setHangGroundY();
|
||||
|
||||
if (current.pos.y < field_0x33d8 + daAlinkHIO_wallHang_c0::m.field_0x18 - 1.0f &&
|
||||
if (current.pos.y < field_0x33d8 + daAlinkHIO_wallHang_c0::m.hang_foot_pos_height - 1.0f &&
|
||||
(mProcID != PROC_HANG_FALL_START || !(mUnderFrameCtrl->getFrame() < 3.0f)) &&
|
||||
field_0x33d8 < current.pos.y - 5.0f)
|
||||
{
|
||||
|
||||
@@ -434,7 +434,7 @@ void daAlink_c::changeLink(int param_0) {
|
||||
mLinkAcch.SetRoofCrrHeight(field_0x598);
|
||||
field_0x594 = daAlinkHIO_move_c0::m.mMaxSpeed;
|
||||
|
||||
l_autoUpHeight = daAlinkHIO_wallHang_c0::m.field_0x4 + 0.01f;
|
||||
l_autoUpHeight = daAlinkHIO_wallHang_c0::m.auto_walk_height + 0.01f;
|
||||
l_autoDownHeight = -l_autoUpHeight;
|
||||
field_0x3470 = cM_scos(cM_deg2s(daAlinkHIO_slide_c0::m.mSlideAngle));
|
||||
field_0x3122 = cM_deg2s(daAlinkHIO_slide_c0::m.mClimbAngle);
|
||||
|
||||
+2643
-2498
File diff suppressed because it is too large
Load Diff
+29
-6
@@ -11,10 +11,19 @@
|
||||
#include "f_pc/f_pc_method.h"
|
||||
#include "f_pc/f_pc_pause.h"
|
||||
#include "f_pc/f_pc_profile.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
#if VERSION == VERSION_SHIELD_DEBUG
|
||||
#include "Z2AudioLib/Z2AudioMgr.h"
|
||||
#endif
|
||||
|
||||
/* 8002064C-8002065C 0010+00 s=0 e=14 z=0 None .text fpcBs_Is_JustOfType__Fii */
|
||||
BOOL fpcBs_Is_JustOfType(int i_typeA, int i_typeB) {
|
||||
return i_typeB == i_typeA ? TRUE : FALSE;
|
||||
if (i_typeB == i_typeA) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80450D00-80450D04 0004+00 s=1 e=0 z=0 None .sbss g_fpcBs_type */
|
||||
@@ -37,13 +46,27 @@ int fpcBs_MakeOfId() {
|
||||
|
||||
/* 800206C4-80020720 005C+00 s=0 e=1 z=0 None .text fpcBs_Execute__FP18base_process_class */
|
||||
int fpcBs_Execute(base_process_class* i_proc) {
|
||||
int result;
|
||||
layer_class* save_layer = fpcLy_CurrentLayer();
|
||||
int result = 1;
|
||||
|
||||
fpcLy_SetCurrentLayer(i_proc->layer_tag.layer);
|
||||
result = fpcMtd_Execute(i_proc->methods, i_proc);
|
||||
#ifdef DEBUG
|
||||
if (!fpcBs_Is_JustOfType(g_fpcBs_type, i_proc->type)) {
|
||||
if (g_fpcDbSv_service[10] != NULL) {
|
||||
g_fpcDbSv_service[10](i_proc);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
fpcLy_SetCurrentLayer(save_layer);
|
||||
if (result == 1) {
|
||||
layer_class* save_layer = fpcLy_CurrentLayer();
|
||||
|
||||
fpcLy_SetCurrentLayer(i_proc->layer_tag.layer);
|
||||
result = fpcMtd_Execute(i_proc->methods, i_proc);
|
||||
|
||||
fpcLy_SetCurrentLayer(save_layer);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,17 +10,26 @@
|
||||
#include "f_pc/f_pc_deletor.h"
|
||||
#include "f_pc/f_pc_executor.h"
|
||||
#include "f_pc/f_pc_layer.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
/* 80020ACC-80020AE8 001C+00 s=1 e=0 z=0 None .text fpcCtRq_isCreatingByID__FP10create_tagPUi
|
||||
*/
|
||||
bool fpcCtRq_isCreatingByID(create_tag* i_createTag, fpc_ProcID* i_id) {
|
||||
BOOL fpcCtRq_isCreatingByID(create_tag* i_createTag, fpc_ProcID* i_id) {
|
||||
create_request* req = (create_request*)i_createTag->base.mpTagData;
|
||||
return req->id == *i_id;
|
||||
if (req->id == *i_id) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80020AE8-80020B20 0038+00 s=0 e=2 z=0 None .text fpcCtRq_IsCreatingByID__FUi */
|
||||
BOOL fpcCtRq_IsCreatingByID(fpc_ProcID i_id) {
|
||||
return fpcCtIt_Judge((fpcLyIt_JudgeFunc)fpcCtRq_isCreatingByID, &i_id) != NULL ? TRUE : FALSE;
|
||||
if (fpcCtIt_Judge((fpcLyIt_JudgeFunc)fpcCtRq_isCreatingByID, &i_id) != NULL) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80020B20-80020B5C 003C+00 s=1 e=0 z=0 None .text fpcCtRq_CreateQTo__FP14create_request */
|
||||
@@ -54,12 +63,10 @@ BOOL fpcCtRq_Delete(create_request* i_request) {
|
||||
|
||||
/* 80020C14-80020CAC 0098+00 s=2 e=2 z=0 None .text fpcCtRq_Cancel__FP14create_request */
|
||||
BOOL fpcCtRq_Cancel(create_request* i_request) {
|
||||
base_process_class* pproc;
|
||||
if (i_request != NULL && !i_request->is_cancel) {
|
||||
i_request->is_cancel = TRUE;
|
||||
pproc = i_request->process;
|
||||
|
||||
if (pproc != NULL && !fpcDt_Delete(pproc))
|
||||
if (i_request->process != NULL && !fpcDt_Delete(i_request->process))
|
||||
return FALSE;
|
||||
|
||||
if (i_request->methods != NULL && !fpcMtd_Method(i_request->methods->cancel_method, i_request))
|
||||
@@ -84,8 +91,9 @@ BOOL fpcCtRq_Do(create_request* i_request) {
|
||||
int phase = cPhs_COMPLEATE_e;
|
||||
|
||||
if (i_request->methods != NULL) {
|
||||
cPhs__Handler pHandler = i_request->methods->phase_handler;
|
||||
if (pHandler != NULL) {
|
||||
if (i_request->methods->phase_handler != NULL) {
|
||||
cPhs__Handler pHandler = i_request->methods->phase_handler;
|
||||
|
||||
i_request->is_doing = TRUE;
|
||||
phase = pHandler(i_request);
|
||||
i_request->is_doing = FALSE;
|
||||
@@ -94,14 +102,18 @@ BOOL fpcCtRq_Do(create_request* i_request) {
|
||||
|
||||
switch (phase) {
|
||||
case cPhs_COMPLEATE_e: {
|
||||
int success = fpcEx_ToExecuteQ(i_request->process);
|
||||
if (success == 0)
|
||||
if (fpcEx_ToExecuteQ(i_request->process) == 0)
|
||||
return fpcCtRq_Cancel(i_request);
|
||||
else
|
||||
return fpcCtRq_Delete(i_request);
|
||||
}
|
||||
case cPhs_UNK3_e:
|
||||
case cPhs_ERROR_e:
|
||||
#ifdef DEBUG
|
||||
if (g_fpcDbSv_service[2] != NULL) {
|
||||
g_fpcDbSv_service[2](i_request->process);
|
||||
}
|
||||
#endif
|
||||
return fpcCtRq_Cancel(i_request);
|
||||
}
|
||||
|
||||
@@ -109,8 +121,13 @@ BOOL fpcCtRq_Do(create_request* i_request) {
|
||||
}
|
||||
|
||||
/* 80020D84-80020DB0 002C+00 s=0 e=1 z=0 None .text fpcCtRq_Handler__Fv */
|
||||
void fpcCtRq_Handler() {
|
||||
fpcCtIt_Method((fpcCtIt_MethodFunc)fpcCtRq_Do, NULL);
|
||||
int fpcCtRq_Handler() {
|
||||
#ifdef DEBUG
|
||||
if (g_fpcDbSv_service[3] != NULL) {
|
||||
g_fpcDbSv_service[3](&g_fpcCtTg_Queue.mSize);
|
||||
}
|
||||
#endif
|
||||
return fpcCtIt_Method((fpcCtIt_MethodFunc)fpcCtRq_Do, NULL);
|
||||
}
|
||||
|
||||
/* 80020DB0-80020E38 0088+00 s=0 e=2 z=0 None .text
|
||||
@@ -119,7 +136,8 @@ create_request* fpcCtRq_Create(layer_class* i_layer, u32 i_size, create_request_
|
||||
create_request* req = (create_request*)cMl::memalignB(-4, i_size);
|
||||
|
||||
if (req != NULL) {
|
||||
fpcCtTg_Init(&req->base, req);
|
||||
create_tag* tag = &req->base;
|
||||
fpcCtTg_Init(tag, req);
|
||||
fpcMtdTg_Init(&req->method_tag, (process_method_tag_func)fpcCtRq_Cancel, req);
|
||||
req->layer = i_layer;
|
||||
req->methods = i_methods;
|
||||
|
||||
@@ -23,6 +23,6 @@ BOOL fpcCt_Abort(base_process_class* i_proc) {
|
||||
}
|
||||
|
||||
/* 80020F10-80020F30 0020+00 s=0 e=1 z=0 None .text fpcCt_Handler__Fv */
|
||||
void fpcCt_Handler() {
|
||||
fpcCtRq_Handler();
|
||||
int fpcCt_Handler() {
|
||||
return fpcCtRq_Handler();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,858 @@
|
||||
#ifdef DEBUG
|
||||
|
||||
#include "f_pc/f_pc_base.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
int fpcBs_pc_c__print(base_process_class* i_process) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callbackXX(void* i_process, char* arg1) {
|
||||
arg1;
|
||||
fpcBs_pc_c__print((base_process_class*)i_process);
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callback00(void* i_process) {
|
||||
// "Waiting for creation"
|
||||
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "生成待ち");
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callback02(void* i_process) {
|
||||
// "Creation error"
|
||||
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "生成エラー");
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callback10(void* i_process) {
|
||||
// "Deletion Retry"
|
||||
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "削除のリトライ");
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callback11(void* i_process) {
|
||||
// "Deletion Denied"
|
||||
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "削除の拒否");
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callback20(void* i_process) {
|
||||
// "Waiting for old Scene deletion"
|
||||
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "旧シーン削除待");
|
||||
}
|
||||
|
||||
void fpcBs_pc_c__fpcDbSv_callback21(void* i_process) {
|
||||
// "Waiting for Scene creation"
|
||||
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "シーン生成待ち");
|
||||
}
|
||||
|
||||
const fpcDbSv_callback g_fpcDbSv_service[50] = {
|
||||
fpcBs_pc_c__fpcDbSv_callback00,
|
||||
NULL,
|
||||
fpcBs_pc_c__fpcDbSv_callback02,
|
||||
NULL,
|
||||
fpcBs_pc_c__fpcDbSv_callback10,
|
||||
fpcBs_pc_c__fpcDbSv_callback11,
|
||||
NULL,
|
||||
fpcBs_pc_c__fpcDbSv_callback20,
|
||||
fpcBs_pc_c__fpcDbSv_callback21,
|
||||
};
|
||||
|
||||
char* fpcDbSv_getNameString(s16 i_name) {
|
||||
static char* namelist[] = {
|
||||
"OVERLAP0",
|
||||
"OVERLAP1",
|
||||
"OVERLAP3",
|
||||
"OVERLAP6",
|
||||
"OVERLAP7",
|
||||
"OVERLAP8",
|
||||
"OVERLAP9",
|
||||
"OVERLAP10",
|
||||
"OVERLAP11",
|
||||
"LOGO_SCENE",
|
||||
"MENU_SCENE",
|
||||
"PLAY_SCENE",
|
||||
"OPENING_SCENE",
|
||||
"NAME_SCENE",
|
||||
"NAMEEX_SCENE",
|
||||
"WARNING_SCENE",
|
||||
"WARNING2_SCENE",
|
||||
"OVERLAP2",
|
||||
"ROOM_SCENE",
|
||||
"KANKYO",
|
||||
"ALLDIE",
|
||||
"ENVSE",
|
||||
"Obj_Swpush",
|
||||
"Obj_Swpush2",
|
||||
"Obj_Swpush5",
|
||||
"Tag_Gstart",
|
||||
"NO_CHG_ROOM",
|
||||
"Obj_Lv6ElevtA",
|
||||
"OBJ_SO",
|
||||
"Obj_Movebox",
|
||||
"Obj_SwTurn",
|
||||
"Obj_Lv6SwTurn",
|
||||
"OBJ_SEKIZOA",
|
||||
"OBJ_GRA",
|
||||
"TAG_GRA",
|
||||
"TAG_YAMI",
|
||||
"Obj_Ladder",
|
||||
"OBJ_BEF",
|
||||
"OBJ_FMOBJ",
|
||||
"OBJ_LBOX",
|
||||
"OBJ_WEB0",
|
||||
"OBJ_WEB1",
|
||||
"OBJ_CB",
|
||||
"OBJ_MAKI",
|
||||
"OBJ_BRG",
|
||||
"OBJ_GB",
|
||||
"OBJ_GM",
|
||||
"OBJ_TOBY",
|
||||
"OBJ_TP",
|
||||
"TREESH",
|
||||
"Obj_ZDoor",
|
||||
"Obj_Pillar",
|
||||
"Obj_Cdoor",
|
||||
"GRDWATER",
|
||||
"Obj_RotBridge",
|
||||
"Obj_MagLift",
|
||||
"Obj_MagLiftRot",
|
||||
"Obj_Lv1Cdl00",
|
||||
"Obj_Lv1Cdl01",
|
||||
"Obj_TvCdlst",
|
||||
"Obj_HsTarget",
|
||||
"Obj_HeavySw",
|
||||
"Obj_GoGate",
|
||||
"Obj_TaFence",
|
||||
"Obj_Saidan",
|
||||
"Obj_SpinLift",
|
||||
"Obj_BmWindow",
|
||||
"Obj_RfHole",
|
||||
"Obj_WaterPillar",
|
||||
"Obj_SyRock",
|
||||
"Obj_BsGate",
|
||||
"Obj_AmiShutter",
|
||||
"Obj_WtGate",
|
||||
"Obj_Lv2Candle",
|
||||
"Obj_TogeTrap",
|
||||
"Obj_RotTrap",
|
||||
"Obj_SwallShutter",
|
||||
"Obj_IceWall",
|
||||
"Obj_Lv5SwIce",
|
||||
"Obj_Lv5FBoard",
|
||||
"Obj_Turara",
|
||||
"Obj_TwGate",
|
||||
"Obj_Digholl",
|
||||
"Obj_Digpl",
|
||||
"Obj_TestCube",
|
||||
"Obj_Kshutter",
|
||||
"NPC_COACH",
|
||||
"NPC_THEB",
|
||||
"COACH_FIRE",
|
||||
"COACH2D",
|
||||
"BALLOON2D",
|
||||
"SKIP2D",
|
||||
"Obj_MvStair",
|
||||
"Obj_Cowdoor",
|
||||
"Obj_Swpropeller",
|
||||
"Obj_BoomShutter",
|
||||
"NPC_KS",
|
||||
"Obj_Hfuta",
|
||||
"Obj_BkDoor",
|
||||
"Obj_Cboard",
|
||||
"Obj_MGate",
|
||||
"Obj_Ikada",
|
||||
"Obj_Ice_l",
|
||||
"Obj_Ice_s",
|
||||
"Obj_E_CREATE",
|
||||
"Obj_Bhbridge",
|
||||
"Obj_Kaisou",
|
||||
"Obj_HHASHI",
|
||||
"Obj_BHASHI",
|
||||
"OCTHASHI",
|
||||
"Obj_THASHI",
|
||||
"Obj_CRVGATE",
|
||||
"Obj_CRVFENCE",
|
||||
"Obj_CRVHAHEN",
|
||||
"Obj_CRVSTEEL",
|
||||
"Obj_CRVLH_UP",
|
||||
"Obj_CRVLH_DW",
|
||||
"Obj_RIVERROCK",
|
||||
"Obj_DUST",
|
||||
"Obj_ITA",
|
||||
"Obj_Window",
|
||||
"Obj_MetalBox",
|
||||
"Obj_BBox",
|
||||
"OBJ_MSIMA",
|
||||
"OBJ_MYOGAN",
|
||||
"B_ZANTS",
|
||||
"Obj_ChainBlock",
|
||||
"Obj_ChainWall",
|
||||
"Obj_KkrGate",
|
||||
"Obj_RiderGate",
|
||||
"Obj_Onsen",
|
||||
"Obj_Chest",
|
||||
"Obj_Bemos",
|
||||
"Obj_RopeBridge",
|
||||
"Obj_WellCover",
|
||||
"Obj_GraveStone",
|
||||
"Obj_ZraRock",
|
||||
"Obj_GraRock",
|
||||
"Obj_GrzRock",
|
||||
"GRA_WALL",
|
||||
"OBJ_ONSEN_FIRE",
|
||||
"Obj_Lv6bemos",
|
||||
"Obj_Lv6bemos2",
|
||||
"Obj_BarDesk",
|
||||
"Obj_DigSnow",
|
||||
"Obj_Ytaihou",
|
||||
"Obj_Elevator",
|
||||
"Obj_Lv6TogeRoll",
|
||||
"Obj_Lv6TogeTrap",
|
||||
"Obj_Lv6Tenbin",
|
||||
"Obj_Lv6SwGate",
|
||||
"Obj_Lv6Lblock",
|
||||
"Obj_Lv6ChgGate",
|
||||
"Obj_Lv6FuriTrap",
|
||||
"Obj_Lv6SzGate",
|
||||
"Obj_Lv4EdShutter",
|
||||
"Obj_Lv4Gate",
|
||||
"Obj_Lv4PoGate",
|
||||
"Obj_Lv4SlideWall",
|
||||
"Obj_Lv4HsTarget",
|
||||
"Obj_Lv7PropY",
|
||||
"Obj_Lv7BsGate",
|
||||
"Obj_Lv8OptiLift",
|
||||
"Obj_Lv8KekkaiTrap",
|
||||
"Obj_Lv8Lift",
|
||||
"Obj_Lv8UdFloor",
|
||||
"Obj_Lv9SwShutter",
|
||||
"Obj_TobyHouse",
|
||||
"Obj_poCandle",
|
||||
"Obj_Lv4DigSand",
|
||||
"Obj_FallObj",
|
||||
"Obj_SmgDoor",
|
||||
"Obj_SwLight",
|
||||
"Obj_Avalanche",
|
||||
"Obj_MirrorScrew",
|
||||
"Obj_MirrorSand",
|
||||
"Obj_MirrorTable",
|
||||
"Obj_MirrorChain",
|
||||
"Obj_Mirror6Pole",
|
||||
"Obj_SwSpinner",
|
||||
"Obj_TDoor",
|
||||
"Obj_Lv7Bridge",
|
||||
"Obj_zrTurara",
|
||||
"Obj_TakaraDai",
|
||||
"Obj_Table",
|
||||
"Obj_CatDoor",
|
||||
"Obj_Gake",
|
||||
"CSTAF",
|
||||
"Obj_Lv4RailWall",
|
||||
"Obj_Lv4Sand",
|
||||
"Obj_PushDoor",
|
||||
"PushDoor",
|
||||
"Obj_GanonWall2",
|
||||
"Obj_Lv4Bridge",
|
||||
"Obj_Lv4Floor",
|
||||
"Tag_Spinner",
|
||||
"Obj_SwHang",
|
||||
"Obj_RotStair",
|
||||
"Obj_MagneArm",
|
||||
"Obj_KWheel00",
|
||||
"Obj_KWheel01",
|
||||
"Obj_Ychndlr",
|
||||
"Obj_PRElvtr",
|
||||
"Obj_MHasu",
|
||||
"Obj_YIblltray",
|
||||
"Obj_Lv6EGate",
|
||||
"Obj_PDtile",
|
||||
"Obj_PDwall",
|
||||
"Obj_Lv4PRwall",
|
||||
"Obj_KLift00",
|
||||
"B_OH",
|
||||
"Obj_Lv4Chan",
|
||||
"Obj_Lv3R10Saka",
|
||||
"Obj_Lv3Water",
|
||||
"Obj_Lv3Water2",
|
||||
"OBJ_LV3WATERB",
|
||||
"Obj_HBombkoya",
|
||||
"Obj_SZbridge",
|
||||
"Obj_KakarikoBrg",
|
||||
"Obj_OrdinBrg",
|
||||
"Obj_BurnBox",
|
||||
"Obj_KJgjs",
|
||||
"OBJ_IHASI",
|
||||
"Obj_IceBlock",
|
||||
"Obj_VolcanicBall",
|
||||
"Obj_VolcanicBomb",
|
||||
"Obj_VolcGnd",
|
||||
"Obj_KKanban",
|
||||
"E_PH",
|
||||
"NPC_ZRA",
|
||||
"Obj_Chandelier",
|
||||
"Obj_Stopper2",
|
||||
"DOOR20",
|
||||
"Tag_Hinit",
|
||||
"Tag_Hjump",
|
||||
"Tag_AJnot",
|
||||
"Tag_Hstop",
|
||||
"CANOE",
|
||||
"HORSE",
|
||||
"E_WB",
|
||||
"OBJ_ITO",
|
||||
"OBJ_SW",
|
||||
"SPINNER",
|
||||
"B_OB",
|
||||
"KAGO",
|
||||
"E_YC",
|
||||
"B_DS",
|
||||
"B_DR",
|
||||
"B_ZANTZ",
|
||||
"B_ZANT",
|
||||
"B_ZANTM",
|
||||
"TBOX",
|
||||
"TBOX2",
|
||||
"ALINK",
|
||||
"BOOMERANG",
|
||||
"MIDNA",
|
||||
"NPC_TK",
|
||||
"NPC_WORM",
|
||||
"PPolamp",
|
||||
"BkyRock",
|
||||
"HITOBJ",
|
||||
"EP",
|
||||
"COW",
|
||||
"PERU",
|
||||
"NI",
|
||||
"NPC_TKJ2",
|
||||
"SQ",
|
||||
"NPC_SQ",
|
||||
"DO",
|
||||
"NPC_NE",
|
||||
"NPC_TR",
|
||||
"NPC_LF",
|
||||
"OBJ_FOOD",
|
||||
"OBJ_KI",
|
||||
"OBJ_KITA",
|
||||
"OBJ_KEY",
|
||||
"OBJ_KEYHOLE",
|
||||
"Obj_Lv5Key",
|
||||
"OBJ_LP",
|
||||
"OBJ_TATIGI",
|
||||
"OBJ_ROCK",
|
||||
"OBJ_WFLAG",
|
||||
"OBJ_KAGE",
|
||||
"OBJ_KANBAN2",
|
||||
"OBJ_BALLOON",
|
||||
"OBJ_SUISYA",
|
||||
"OBJ_OILTUBO",
|
||||
"OBJ_ROTEN",
|
||||
"OBJ_SSDRINK",
|
||||
"OBJ_SSITEM",
|
||||
"TAG_SSDRINK",
|
||||
"TAG_BTLITM",
|
||||
"TAG_LV5SOUP",
|
||||
"TAG_MNLIGHT",
|
||||
"TAG_SHOPCAM",
|
||||
"TAG_SHOPITM",
|
||||
"OBJ_NDOOR",
|
||||
"OBJ_UDOOR",
|
||||
"OBJ_USAKU",
|
||||
"Obj_SM_DOOR",
|
||||
"OBJ_BED",
|
||||
"OBJ_BOUMATO",
|
||||
"OBJ_ITAMATO",
|
||||
"OBJ_NOUGU",
|
||||
"OBJ_STICK",
|
||||
"OBJ_MIE",
|
||||
"OBJ_SEKIDOOR",
|
||||
"OBJ_SEKIZO",
|
||||
"OBJ_SMTILE",
|
||||
"NPC_FISH",
|
||||
"MG_FISH",
|
||||
"FSHOP",
|
||||
"NPC_DU",
|
||||
"DISAPPEAR",
|
||||
"Obj_Mato",
|
||||
"Obj_Flag",
|
||||
"Obj_Flag2",
|
||||
"Obj_Flag3",
|
||||
"Obj_GOMIKABE",
|
||||
"Obj_Yousei",
|
||||
"Obj_Kabuto",
|
||||
"Obj_Cho",
|
||||
"Obj_Kuw",
|
||||
"Obj_Nan",
|
||||
"Obj_Dan",
|
||||
"Obj_Kam",
|
||||
"Obj_Ten",
|
||||
"Obj_Ari",
|
||||
"Obj_Kag",
|
||||
"Obj_Batta",
|
||||
"Obj_Tombo",
|
||||
"Obj_Kat",
|
||||
"Obj_H_Saku",
|
||||
"Obj_Yobikusa",
|
||||
"Obj_KazeNeko",
|
||||
"Obj_KznkArm",
|
||||
"Obj_NamePlate",
|
||||
"Obj_OnCloth",
|
||||
"Obj_LndRope",
|
||||
"Obj_ItaRope",
|
||||
"Obj_Sakuita",
|
||||
"Obj_Laundry",
|
||||
"WarpBug",
|
||||
"Izumi_Gate",
|
||||
"Obj_Fchain",
|
||||
"Obj_Wchain",
|
||||
"Tag_Attp",
|
||||
"Obj_Tornado",
|
||||
"Obj_Tornado2",
|
||||
"Obj_FirePillar",
|
||||
"Obj_FirePillar2",
|
||||
"Obj_InoBone",
|
||||
"Obj_Stopper",
|
||||
"Obj_MHole",
|
||||
"Tag_Magne",
|
||||
"Obj_BossWarp",
|
||||
"Obj_WoodPendulum",
|
||||
"Obj_WdStick",
|
||||
"Obj_StairBlock",
|
||||
"Obj_Geyser",
|
||||
"Tag_KtOnFire",
|
||||
"Obj_FireWood",
|
||||
"Obj_FireWood2",
|
||||
"Obj_GpTaru",
|
||||
"Obj_OnsenTaru",
|
||||
"Obj_KiPot",
|
||||
"TBOX_SW",
|
||||
"Obj_SwChain",
|
||||
"Obj_WoodenSword",
|
||||
"Obj_StoneMark",
|
||||
"Obj_Lv3Candle",
|
||||
"Tag_Lv4Candle",
|
||||
"Tag_Lv4CandleDm",
|
||||
"Obj_DamCps",
|
||||
"Obj_Smoke",
|
||||
"Obj_WaterFall",
|
||||
"Obj_ZoraCloth",
|
||||
"Obj_poFire",
|
||||
"Tag_poFire",
|
||||
"Obj_glowSphere",
|
||||
"Tag_LightBall",
|
||||
"SwLBall",
|
||||
"SwBall",
|
||||
"Obj_WaterEff",
|
||||
"Tag_RiverBack",
|
||||
"Tag_KagoFall",
|
||||
"Tag_Lv2PrChk",
|
||||
"Obj_Lv4Gear",
|
||||
"Obj_MasterSword",
|
||||
"Obj_WoodStatue",
|
||||
"Obj_Fan",
|
||||
"Obj_IceLeaf",
|
||||
"Obj_zrTuraraRc",
|
||||
"Tag_RetRoom",
|
||||
"Obj_WindStone",
|
||||
"Tag_WaraHowl",
|
||||
"Obj_SCannon",
|
||||
"Obj_SmWStone",
|
||||
"Obj_SCannonCrs",
|
||||
"Tag_SnowEff",
|
||||
"Tag_CstaSw",
|
||||
"Tag_Lv6CstaSw",
|
||||
"Obj_awaPlar",
|
||||
"Obj_poTbox",
|
||||
"Obj_TimeFire",
|
||||
"Obj_TMoon",
|
||||
"Obj_GanonWall",
|
||||
"Obj_Prop",
|
||||
"CSTATUE",
|
||||
"Obj_SwBallA",
|
||||
"Obj_SwBallB",
|
||||
"Obj_SnowSoup",
|
||||
"Obj_Nagaisu",
|
||||
"Obj_RCircle",
|
||||
"Obj_Picture",
|
||||
"Tag_SetBall",
|
||||
"Tag_SmkEmt",
|
||||
"SwTime",
|
||||
"Obj_HFtr",
|
||||
"Obj_HBarrel",
|
||||
"Obj_Crystal",
|
||||
"Obj_SCannonTen",
|
||||
"Obj_SwBallC",
|
||||
"SCENE_EXIT2",
|
||||
"Obj_Hata",
|
||||
"Obj_ToaruMaki",
|
||||
"Tag_AttackItem",
|
||||
"Tag_RmbitSw",
|
||||
"Obj_Sword",
|
||||
"Tag_Spring",
|
||||
"Tag_Statue",
|
||||
"E_AI",
|
||||
"E_GS",
|
||||
"E_GOB",
|
||||
"E_DD",
|
||||
"E_DN",
|
||||
"E_S1",
|
||||
"E_MF",
|
||||
"E_SG",
|
||||
"E_BS",
|
||||
"E_SF",
|
||||
"E_SH",
|
||||
"E_DF",
|
||||
"E_GM",
|
||||
"E_MD",
|
||||
"E_SM",
|
||||
"E_SM2",
|
||||
"E_ST",
|
||||
"E_ST_LINE",
|
||||
"E_SB",
|
||||
"E_TH",
|
||||
"E_CR",
|
||||
"E_CR_EGG",
|
||||
"E_DB",
|
||||
"E_DB_LEAF",
|
||||
"E_GA",
|
||||
"E_GB",
|
||||
"E_HB",
|
||||
"E_HB_LEAF",
|
||||
"E_HZELDA",
|
||||
"E_YD",
|
||||
"E_YH",
|
||||
"E_YD_LEAF",
|
||||
"E_HM",
|
||||
"E_TK",
|
||||
"E_TK2",
|
||||
"E_TK_BALL",
|
||||
"E_RB",
|
||||
"E_RD",
|
||||
"E_RDB",
|
||||
"E_RDY",
|
||||
"E_FM",
|
||||
"E_FS",
|
||||
"E_PM",
|
||||
"E_PO",
|
||||
"E_MB",
|
||||
"E_MK",
|
||||
"E_MM",
|
||||
"E_FZ",
|
||||
"E_ZS",
|
||||
"E_KK",
|
||||
"E_HP",
|
||||
"E_ZH",
|
||||
"E_ZM",
|
||||
"E_PZ",
|
||||
"E_FB",
|
||||
"E_FK",
|
||||
"E_MS",
|
||||
"E_NEST",
|
||||
"E_NZ",
|
||||
"E_BA",
|
||||
"E_BU",
|
||||
"E_BUG",
|
||||
"E_BEE",
|
||||
"E_IS",
|
||||
"E_KG",
|
||||
"E_KR",
|
||||
"E_SW",
|
||||
"E_GE",
|
||||
"Tag_WatchGe",
|
||||
"E_YM",
|
||||
"E_YM_TAG",
|
||||
"E_YMB",
|
||||
"Tag_FWall",
|
||||
"Tag_WaterFall",
|
||||
"E_YK",
|
||||
"E_YR",
|
||||
"E_YG",
|
||||
"E_HZ",
|
||||
"E_WS",
|
||||
"E_OC",
|
||||
"E_OT",
|
||||
"E_DT",
|
||||
"E_BG",
|
||||
"E_OctBg",
|
||||
"DR",
|
||||
"L7lowDr",
|
||||
"L7ODR",
|
||||
"E_TT",
|
||||
"E_DK",
|
||||
"E_VT",
|
||||
"E_WW",
|
||||
"E_GI",
|
||||
"B_BH",
|
||||
"B_BQ",
|
||||
"B_GM",
|
||||
"B_GND",
|
||||
"B_GO",
|
||||
"B_OH2",
|
||||
"B_YO",
|
||||
"B_YOI",
|
||||
"B_TN",
|
||||
"B_GG",
|
||||
"B_DRE",
|
||||
"B_MGN",
|
||||
"E_WAP",
|
||||
"ITEM",
|
||||
"Obj_SmallKey",
|
||||
"Obj_Kantera",
|
||||
"Obj_LifeContainer",
|
||||
"Obj_Shield",
|
||||
"Demo_Item",
|
||||
"ShopItem",
|
||||
"Obj_Drop",
|
||||
"OBJ_RW",
|
||||
"NBOMB",
|
||||
"TAG_CSW",
|
||||
"TAG_QS",
|
||||
"HOZELDA",
|
||||
"SWC00",
|
||||
"KNOB20",
|
||||
"DBDOOR",
|
||||
"BOSS_DOOR",
|
||||
"L1BOSS_DOOR",
|
||||
"L1MBOSS_DOOR",
|
||||
"L5BOSS_DOOR",
|
||||
"DSHUTTER",
|
||||
"SPIRAL_DOOR",
|
||||
"Tag_ChgRestart",
|
||||
"Tag_Restart",
|
||||
"ANDSW",
|
||||
"ANDSW2",
|
||||
"MYNA",
|
||||
"NPC_GND",
|
||||
"NPC_GRA",
|
||||
"NPC_GRC",
|
||||
"NPC_GRD",
|
||||
"NPC_GRM",
|
||||
"NPC_GRMC",
|
||||
"NPC_GRO",
|
||||
"NPC_GRR",
|
||||
"NPC_GRS",
|
||||
"NPC_GRZ",
|
||||
"NPC_YAMID",
|
||||
"NPC_YAMIT",
|
||||
"NPC_YAMIS",
|
||||
"NPC_BLUENS",
|
||||
"NPC_KAKASHI",
|
||||
"NPC_KDK",
|
||||
"NPC_ARU",
|
||||
"NPC_BANS",
|
||||
"NPC_BESU",
|
||||
"NPC_BOU",
|
||||
"NPC_BOU_S",
|
||||
"NPC_CLERKA",
|
||||
"NPC_CLERKB",
|
||||
"NPC_CLERKT",
|
||||
"NPC_WRESTLER",
|
||||
"Tag_Arena",
|
||||
"Tag_Instruction",
|
||||
"NPC_DOC",
|
||||
"NPC_GWOLF",
|
||||
"NPC_LEN",
|
||||
"NPC_LUD",
|
||||
"NPC_FAIRY_SEIREI",
|
||||
"NPC_FAIRY",
|
||||
"NPC_HANJO",
|
||||
"NPC_HENNA",
|
||||
"NPC_HENNA0",
|
||||
"NPC_HOZ",
|
||||
"NPC_JAGAR",
|
||||
"NPC_KKRI",
|
||||
"NPC_KN",
|
||||
"KN_BULLET",
|
||||
"NPC_KNJ",
|
||||
"NPC_KOLIN",
|
||||
"NPC_KOLINB",
|
||||
"NPC_KYURY",
|
||||
"NPC_MARO",
|
||||
"NPC_MIDP",
|
||||
"NPC_MOI",
|
||||
"NPC_RACA",
|
||||
"NPC_SARU",
|
||||
"NPC_SEIB",
|
||||
"NPC_SEIC",
|
||||
"NPC_SEID",
|
||||
"NPC_SEIRA",
|
||||
"NPC_SERA2",
|
||||
"NPC_SEIREI",
|
||||
"NPC_SHAMAN",
|
||||
"NPC_SMARO",
|
||||
"NPC_SOLA",
|
||||
"NPC_TARO",
|
||||
"NPC_PACHI_BESU",
|
||||
"NPC_PACHI_TARO",
|
||||
"NPC_PACHI_MARO",
|
||||
"TAG_PATI",
|
||||
"NPC_THE",
|
||||
"NPC_TKJ",
|
||||
"NPC_TKS",
|
||||
"NPC_TKC",
|
||||
"OBJ_TKS",
|
||||
"NPC_TOBY",
|
||||
"NPC_URI",
|
||||
"NPC_YELIA",
|
||||
"NPC_YKM",
|
||||
"NPC_YKW",
|
||||
"NPC_ZANB",
|
||||
"NPC_ZANT",
|
||||
"NPC_ZELDA",
|
||||
"NPC_ZELR",
|
||||
"NPC_ZELRO",
|
||||
"OBJ_ZRAFREEZE",
|
||||
"NPC_ZRC",
|
||||
"NPC_ZRZ",
|
||||
"ZRA_MARK",
|
||||
"MYNA2",
|
||||
"TAG_MYNA2",
|
||||
"NPC_CD3",
|
||||
"Tag_Schedule",
|
||||
"Tag_Escape",
|
||||
"NPC_CHAT",
|
||||
"NPC_SOLDIERa",
|
||||
"NPC_SOLDIERb",
|
||||
"PASSER_MNG",
|
||||
"NPC_PASSER",
|
||||
"NPC_PASSER2",
|
||||
"NPC_POST",
|
||||
"NPC_POUYA",
|
||||
"FORMATION_MNG",
|
||||
"NPC_FGUARD",
|
||||
"GUARD_MNG",
|
||||
"TAG_GUARD",
|
||||
"NPC_GUARD",
|
||||
"NPC_ASH",
|
||||
"NPC_ASHB",
|
||||
"NPC_SHAD",
|
||||
"NPC_RAFREL",
|
||||
"NPC_MOIR",
|
||||
"NPC_IMPAL",
|
||||
"NPC_SHOE",
|
||||
"NPC_DOORBOY",
|
||||
"NPC_PRAYER",
|
||||
"NPC_KASIHANA",
|
||||
"NPC_KASIKYU",
|
||||
"NPC_KASIMICH",
|
||||
"NPC_DRSOL",
|
||||
"NPC_CHIN",
|
||||
"NPC_INS",
|
||||
"NPC_SHOP0",
|
||||
"NPC_MK",
|
||||
"NPC_P2",
|
||||
"KYTAG00",
|
||||
"KYTAG01",
|
||||
"KYTAG02",
|
||||
"KYTAG03",
|
||||
"KYTAG04",
|
||||
"KYTAG05",
|
||||
"KYTAG06",
|
||||
"KYTAG07",
|
||||
"KYTAG08",
|
||||
"KYTAG09",
|
||||
"KYTAG10",
|
||||
"KYTAG11",
|
||||
"KYTAG12",
|
||||
"KYTAG13",
|
||||
"KYTAG14",
|
||||
"KYTAG15",
|
||||
"KYTAG16",
|
||||
"KYTAG17",
|
||||
"Ykgr",
|
||||
"TALK",
|
||||
"Obj_Crope",
|
||||
"Obj_Bombf",
|
||||
"Obj_BkLeaf",
|
||||
"Tag_Mhint",
|
||||
"Tag_Mmsg",
|
||||
"Tag_Mwait",
|
||||
"Tag_Mstop",
|
||||
"Tag_Stream",
|
||||
"Tag_Sppath",
|
||||
"Tag_Wljump",
|
||||
"Tag_TWGate",
|
||||
"Tag_Lv6Gate",
|
||||
"Tag_Lv7Gate",
|
||||
"Tag_Lv8Gate",
|
||||
"Tag_TheBHint",
|
||||
"Tag_Assist",
|
||||
"DEMO00",
|
||||
"TAG_CAMERA",
|
||||
"TAG_CHKPOINT",
|
||||
"TAG_EVENT",
|
||||
"TAG_EVT",
|
||||
"TAG_TELOP",
|
||||
"TAG_HOWL",
|
||||
"TAG_MSG",
|
||||
"TAG_LANTERN",
|
||||
"Tag_Mist",
|
||||
"DMIDNA",
|
||||
"KY_THUNDER",
|
||||
"VRBOX",
|
||||
"VRBOX2",
|
||||
"BG",
|
||||
"SET_BG_OBJ",
|
||||
"BG_OBJ",
|
||||
"MIRROR",
|
||||
"MOVIE_PLAYER",
|
||||
"TITLE",
|
||||
"FR",
|
||||
"ECONT",
|
||||
"MG_ROD",
|
||||
"E_ARROW",
|
||||
"BULLET",
|
||||
"SWHIT0",
|
||||
"E_TH_BALL",
|
||||
"TAG_EVTAREA",
|
||||
"TAG_EVTMSG",
|
||||
"TAG_KMSG",
|
||||
"TAG_PUSH",
|
||||
"E_MK_BO",
|
||||
"E_MM_MT",
|
||||
"OBJ_KBOX",
|
||||
"OBJ_FW",
|
||||
"B_GOS",
|
||||
"OBJ_YSTONE",
|
||||
"MANT",
|
||||
"CROD",
|
||||
"OBJ_PLEAF",
|
||||
"OBJ_KBACKET",
|
||||
"OBJ_YBAG",
|
||||
"OBJ_PUMPKIN",
|
||||
"OBJ_AUTOMATA",
|
||||
"OBJ_GADGET",
|
||||
"OBJ_KAGO",
|
||||
"Obj_Carry",
|
||||
"Obj_Stone",
|
||||
"OBJ_HB",
|
||||
"NPC_INKO",
|
||||
"BD",
|
||||
"Obj_Eff",
|
||||
"WPILLAR",
|
||||
"WMARK",
|
||||
"E_BI",
|
||||
"E_BI_LEAF",
|
||||
"START_AND_GOAL",
|
||||
"NPC_DF",
|
||||
"ARROW",
|
||||
"PATH_LINE",
|
||||
"TAG_ALLMATO",
|
||||
"Obj_Timer",
|
||||
"SCENE_EXIT",
|
||||
"CAMERA",
|
||||
"CAMERA2",
|
||||
"SUSPEND",
|
||||
"GRASS",
|
||||
"KYEFF",
|
||||
"KYEFF2",
|
||||
"MSG_OBJECT",
|
||||
"MENUWINDOW",
|
||||
"TIMER",
|
||||
"METER2",
|
||||
"GAMEOVER",
|
||||
"DUMMY",
|
||||
NULL,
|
||||
};
|
||||
|
||||
return namelist[i_name];
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -5,13 +5,18 @@
|
||||
|
||||
#include "SSystem/SComponent/c_list.h"
|
||||
#include "f_pc/f_pc_delete_tag.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
/* 803A39A0-803A39B0 000C+04 s=2 e=1 z=0 None .data g_fpcDtTg_Queue */
|
||||
node_list_class g_fpcDtTg_Queue = {NULL, NULL, 0};
|
||||
|
||||
/* 80020F30-80020F48 0018+00 s=0 e=1 z=0 None .text fpcDtTg_IsEmpty__Fv */
|
||||
BOOL fpcDtTg_IsEmpty() {
|
||||
return g_fpcDtTg_Queue.mSize == 0 ? TRUE : FALSE;
|
||||
if (g_fpcDtTg_Queue.mSize == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80020F48-80020F7C 0034+00 s=1 e=1 z=0 None .text fpcDtTg_ToDeleteQ__FP16delete_tag_class */
|
||||
@@ -28,12 +33,18 @@ void fpcDtTg_DeleteQTo(delete_tag_class* i_deleteTag) {
|
||||
/* 80020F9C-8002101C 0080+00 s=0 e=1 z=0 None .text fpcDtTg_Do__FP16delete_tag_classPFPv_i */
|
||||
s32 fpcDtTg_Do(delete_tag_class* i_deleteTag, delete_tag_func i_func) {
|
||||
if (i_deleteTag->timer <= 0) {
|
||||
s32 ret;
|
||||
fpcDtTg_DeleteQTo(i_deleteTag);
|
||||
|
||||
ret = i_func(i_deleteTag->base.mpTagData);
|
||||
if (ret == 0) {
|
||||
if (i_func(i_deleteTag->base.mpTagData) == 0) {
|
||||
fpcDtTg_ToDeleteQ(i_deleteTag);
|
||||
#ifdef DEBUG
|
||||
if (i_deleteTag->unk_0x1c-- <= 0) {
|
||||
i_deleteTag->unk_0x1c = 0;
|
||||
if (g_fpcDbSv_service[4] != NULL) {
|
||||
g_fpcDbSv_service[4](i_deleteTag->base.mpTagData);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "f_pc/f_pc_executor.h"
|
||||
#include "f_pc/f_pc_load.h"
|
||||
#include "f_pc/f_pc_node.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
/* 80021040-80021060 0020+00 s=0 e=1 z=0 None .text fpcDt_IsComplete__Fv */
|
||||
@@ -19,6 +20,7 @@ BOOL fpcDt_IsComplete() {
|
||||
/* 80021060-800210D4 0074+00 s=1 e=0 z=0 None .text fpcDt_deleteMethod__FP18base_process_class
|
||||
*/
|
||||
s32 fpcDt_deleteMethod(base_process_class* i_proc) {
|
||||
fpc_ProcID id = i_proc->id;
|
||||
layer_class* layer = i_proc->delete_tag.layer;
|
||||
s16 profname = i_proc->profname;
|
||||
|
||||
@@ -36,6 +38,11 @@ s32 fpcDt_deleteMethod(base_process_class* i_proc) {
|
||||
|
||||
/* 800210D4-8002110C 0038+00 s=0 e=1 z=0 None .text fpcDt_Handler__Fv */
|
||||
void fpcDt_Handler() {
|
||||
#ifdef DEBUG
|
||||
if (g_fpcDbSv_service[6] != NULL) {
|
||||
g_fpcDbSv_service[6](&g_fpcDtTg_Queue.mSize);
|
||||
}
|
||||
#endif
|
||||
cLsIt_Method(&g_fpcDtTg_Queue, (cNdIt_MethodFunc)fpcDtTg_Do, fpcDt_deleteMethod);
|
||||
}
|
||||
|
||||
@@ -51,7 +58,7 @@ s32 fpcDt_ToQueue(base_process_class* i_proc) {
|
||||
fpcLy_DeletingMesg(i_proc->layer_tag.layer);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -66,18 +73,16 @@ s32 fpcDt_ToDeleteQ(base_process_class* i_proc) {
|
||||
}
|
||||
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, i_proc->subtype)) {
|
||||
process_node_class* node = (process_node_class*)i_proc;
|
||||
if (fpcNd_IsDeleteTiming(node) == 0) {
|
||||
if (fpcNd_IsDeleteTiming((process_node_class*)i_proc) == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
layer_class* layer = &node->layer;
|
||||
layer_class* layer = &((process_node_class*)i_proc)->layer;
|
||||
|
||||
if (fpcLy_Cancel(layer) == 0) {
|
||||
JUT_ASSERT(0);
|
||||
JUT_ASSERT(196, 0);
|
||||
}
|
||||
|
||||
|
||||
if (fpcLyIt_OnlyHereLY(layer, (fpcLyIt_OnlyHereFunc)fpcDt_ToDeleteQ, NULL) == 0)
|
||||
{
|
||||
return 0;
|
||||
@@ -105,14 +110,32 @@ s32 fpcDt_ToDeleteQ(base_process_class* i_proc) {
|
||||
/* 800212A4-80021308 0064+00 s=0 e=3 z=0 None .text fpcDt_Delete__FPv */
|
||||
s32 fpcDt_Delete(void* i_proc) {
|
||||
base_process_class* proc = (base_process_class*)i_proc;
|
||||
|
||||
if (proc != NULL) {
|
||||
#ifdef DEBUG
|
||||
if (!fpcBs_Is_JustOfType(g_fpcBs_type, proc->type)) {
|
||||
if (g_fpcDbSv_service[12] != NULL) {
|
||||
g_fpcDbSv_service[12](proc);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if (fpcCt_IsDoing(proc) == TRUE)
|
||||
return 0;
|
||||
|
||||
if (proc->init_state == 3)
|
||||
return 0;
|
||||
|
||||
return fpcDt_ToDeleteQ(proc);
|
||||
int ret = fpcDt_ToDeleteQ(proc);
|
||||
#ifdef DEBUG
|
||||
if (ret == 0) {
|
||||
if (g_fpcDbSv_service[5] != NULL) {
|
||||
g_fpcDbSv_service[5](proc);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
+20
-13
@@ -7,6 +7,7 @@
|
||||
#include "f_pc/f_pc_node.h"
|
||||
#include "f_pc/f_pc_pause.h"
|
||||
#include "f_pc/f_pc_searcher.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
/* 80021338-80021358 0020+00 s=1 e=9 z=291 None .text fpcEx_Search__FPFPvPv_PvPv */
|
||||
base_process_class* fpcEx_Search(fpcLyIt_JudgeFunc i_judgeFunc, void* i_data) {
|
||||
@@ -23,7 +24,11 @@ base_process_class* fpcEx_SearchByID(fpc_ProcID i_id) {
|
||||
|
||||
/* 8002139C-800213C4 0028+00 s=0 e=7 z=42 None .text fpcEx_IsExist__FUi */
|
||||
BOOL fpcEx_IsExist(fpc_ProcID i_id) {
|
||||
return fpcEx_SearchByID(i_id) != NULL ? TRUE : FALSE;
|
||||
if (fpcEx_SearchByID(i_id) != NULL) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800213C4-80021418 0054+00 s=0 e=1 z=0 None .text fpcEx_Execute__FP18base_process_class */
|
||||
@@ -36,20 +41,24 @@ s32 fpcEx_Execute(base_process_class* i_proc) {
|
||||
|
||||
/* 80021418-800214C4 00AC+00 s=1 e=0 z=0 None .text fpcEx_ToLineQ__FP18base_process_class */
|
||||
s32 fpcEx_ToLineQ(base_process_class* i_proc) {
|
||||
layer_class* layer = i_proc->layer_tag.layer;
|
||||
base_process_class* process = &layer->process_node->base;
|
||||
base_process_class* process = &i_proc->layer_tag.layer->process_node->base;
|
||||
|
||||
if (layer->layer_id == fpcLy_ROOT_e || cTg_IsUse(&process->line_tag_.base) == TRUE) {
|
||||
s32 ret = fpcLnTg_ToQueue(&i_proc->line_tag_, i_proc->priority.current_info.list_id);
|
||||
if (ret == 0) {
|
||||
if (i_proc->layer_tag.layer->layer_id == fpcLy_ROOT_e || cTg_IsUse(&process->line_tag_.base) == TRUE) {
|
||||
int var_r28 = i_proc->priority.current_info.list_id;
|
||||
if (fpcLnTg_ToQueue(&i_proc->line_tag_, var_r28) == 0) {
|
||||
fpcLyTg_QueueTo(&i_proc->layer_tag);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
if (g_fpcDbSv_service[1] != NULL) {
|
||||
g_fpcDbSv_service[1](i_proc);
|
||||
}
|
||||
#endif
|
||||
|
||||
i_proc->init_state = 2;
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, i_proc->subtype)) {
|
||||
process_node_class* node = (process_node_class*)i_proc;
|
||||
fpcLyIt_OnlyHere(&node->layer, (fpcLyIt_OnlyHereFunc)fpcEx_ToLineQ, node);
|
||||
fpcLyIt_OnlyHere(&((process_node_class*)i_proc)->layer, (fpcLyIt_OnlyHereFunc)fpcEx_ToLineQ, i_proc);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -61,8 +70,7 @@ s32 fpcEx_ToLineQ(base_process_class* i_proc) {
|
||||
/* 800214C4-80021510 004C+00 s=0 e=1 z=0 None .text fpcEx_ExecuteQTo__FP18base_process_class
|
||||
*/
|
||||
s32 fpcEx_ExecuteQTo(base_process_class* i_proc) {
|
||||
s32 ret = fpcLyTg_QueueTo(&i_proc->layer_tag);
|
||||
if (ret == 1) {
|
||||
if (fpcLyTg_QueueTo(&i_proc->layer_tag) == 1) {
|
||||
i_proc->init_state = 3;
|
||||
return 1;
|
||||
}
|
||||
@@ -73,9 +81,8 @@ s32 fpcEx_ExecuteQTo(base_process_class* i_proc) {
|
||||
/* 80021510-80021568 0058+00 s=0 e=1 z=0 None .text fpcEx_ToExecuteQ__FP18base_process_class
|
||||
*/
|
||||
s32 fpcEx_ToExecuteQ(base_process_class* i_proc) {
|
||||
s32 ret = fpcLyTg_ToQueue(&i_proc->layer_tag, i_proc->priority.current_info.layer_id,
|
||||
i_proc->priority.current_info.list_id, i_proc->priority.current_info.list_priority);
|
||||
if (ret == 1) {
|
||||
process_priority_class* priority = &i_proc->priority;
|
||||
if (fpcLyTg_ToQueue(&i_proc->layer_tag, priority->current_info.layer_id, priority->current_info.list_id, priority->current_info.list_priority) == 1) {
|
||||
fpcEx_ToLineQ(i_proc);
|
||||
return 1;
|
||||
}
|
||||
|
||||
+30
-7
@@ -21,31 +21,47 @@ s32 fpcLy_ToCancelQ(layer_class* i_layer, process_method_tag_class* i_methods) {
|
||||
|
||||
/* 800215CC-800215F8 002C+00 s=1 e=0 z=0 None .text
|
||||
* fpcLy_CancelMethod__FP24process_method_tag_class */
|
||||
bool fpcLy_CancelMethod(process_method_tag_class* i_layer) {
|
||||
return fpcMtdTg_Do(i_layer) == 1;
|
||||
BOOL fpcLy_CancelMethod(process_method_tag_class* i_layer) {
|
||||
if (fpcMtdTg_Do(i_layer) == 1) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800215F8-8002161C 0024+00 s=0 e=1 z=0 None .text
|
||||
* fpcLy_IntoQueue__FP11layer_classiP16create_tag_classi */
|
||||
s32 fpcLy_IntoQueue(layer_class* i_layer, int i_treeListNo, create_tag_class* i_createTag, int i_no) {
|
||||
return cTg_InsertToTree(&i_layer->node_tree, i_treeListNo, i_createTag, i_no);
|
||||
int ret = cTg_InsertToTree(&i_layer->node_tree, i_treeListNo, i_createTag, i_no);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 8002161C-80021640 0024+00 s=0 e=1 z=0 None .text
|
||||
* fpcLy_ToQueue__FP11layer_classiP16create_tag_class */
|
||||
s32 fpcLy_ToQueue(layer_class* i_layer, int i_treeListNo, create_tag_class* i_createTag) {
|
||||
return cTg_AdditionToTree(&i_layer->node_tree, i_treeListNo, i_createTag);
|
||||
int ret = cTg_AdditionToTree(&i_layer->node_tree, i_treeListNo, i_createTag);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80021640-80021664 0024+00 s=0 e=1 z=0 None .text
|
||||
* fpcLy_QueueTo__FP11layer_classP16create_tag_class */
|
||||
s32 fpcLy_QueueTo(layer_class* i_layer, create_tag_class* i_createTag) {
|
||||
return cTg_SingleCutFromTree(i_createTag);
|
||||
i_layer;
|
||||
|
||||
int ret = cTg_SingleCutFromTree(i_createTag);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80021664-80021678 0014+00 s=0 e=1 z=0 None .text fpcLy_IsDeletingMesg__FP11layer_class */
|
||||
BOOL fpcLy_IsDeletingMesg(layer_class* i_layer) {
|
||||
return i_layer->counts.delete_count > 0;
|
||||
BOOL ret;
|
||||
if (i_layer->counts.delete_count > 0) {
|
||||
ret = TRUE;
|
||||
} else {
|
||||
ret = FALSE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80021678-80021688 0010+00 s=0 e=1 z=0 None .text fpcLy_DeletingMesg__FP11layer_class */
|
||||
@@ -62,7 +78,14 @@ void fpcLy_DeletedMesg(layer_class* i_layer) {
|
||||
|
||||
/* 800216A0-800216B4 0014+00 s=0 e=2 z=0 None .text fpcLy_IsCreatingMesg__FP11layer_class */
|
||||
BOOL fpcLy_IsCreatingMesg(layer_class* i_layer) {
|
||||
return i_layer->counts.create_count > 0;
|
||||
BOOL ret;
|
||||
if (i_layer->counts.create_count > 0) {
|
||||
ret = TRUE;
|
||||
} else {
|
||||
ret = FALSE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 800216B4-800216C4 0010+00 s=0 e=2 z=0 None .text fpcLy_CreatingMesg__FP11layer_class */
|
||||
|
||||
@@ -30,6 +30,23 @@ s32 fpcLyIt_OnlyHereLY(layer_class* i_layer, fpcLyIt_OnlyHereFunc i_func, void*
|
||||
return result;
|
||||
}
|
||||
|
||||
s32 fpcLyIt_All(fpcLyIt_OnlyHereFunc i_func, void* i_data) {
|
||||
int ret = 1;
|
||||
|
||||
layer_iter iter;
|
||||
layer_class* layer;
|
||||
iter.func = i_func;
|
||||
iter.data = i_data;
|
||||
|
||||
for (layer = fpcLy_RootLayer(); layer != NULL; layer = (layer_class*)layer->node.mpNextNode) {
|
||||
if (cTrIt_Method(&layer->node_tree, (cNdIt_MethodFunc)cTgIt_MethodCall, &iter) == 0) {
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80021C28-80021C60 0038+00 s=0 e=3 z=0 None .text fpcLyIt_Judge__FP11layer_classPFPvPv_PvPv
|
||||
*/
|
||||
void* fpcLyIt_Judge(layer_class* i_layer, fpcLyIt_JudgeFunc i_func, void* i_data) {
|
||||
@@ -41,19 +58,19 @@ void* fpcLyIt_Judge(layer_class* i_layer, fpcLyIt_JudgeFunc i_func, void* i_data
|
||||
|
||||
/* 80021C60-80021CD4 0074+00 s=0 e=1 z=4 None .text fpcLyIt_AllJudge__FPFPvPv_PvPv */
|
||||
void* fpcLyIt_AllJudge(fpcLyIt_JudgeFunc i_func, void* i_data) {
|
||||
void* ret;
|
||||
|
||||
layer_iter iter;
|
||||
layer_class* current;
|
||||
layer_class* layer;
|
||||
iter.func = i_func;
|
||||
iter.data = i_data;
|
||||
|
||||
current = fpcLy_RootLayer();
|
||||
while (current != NULL) {
|
||||
void* result =
|
||||
cTrIt_Judge(¤t->node_tree, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &iter);
|
||||
if (result != NULL) {
|
||||
return result;
|
||||
for (layer = fpcLy_RootLayer(); layer != NULL; layer = (layer_class*)layer->node.mpNextNode) {
|
||||
ret = cTrIt_Judge(&layer->node_tree, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &iter);
|
||||
if (ret != NULL) {
|
||||
return ret;
|
||||
}
|
||||
current = (layer_class*)current->node.mpNextNode;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+12
-3
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
#include "f_pc/f_pc_leaf.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
/* 80021A00-80021A24 0024+00 s=0 e=4 z=2 None .text fpcLf_GetPriority__FPC14leafdraw_class */
|
||||
s16 fpcLf_GetPriority(const leafdraw_class* i_leaf) {
|
||||
@@ -26,6 +27,14 @@ s32 fpcLf_Draw(leafdraw_class* i_leaf) {
|
||||
|
||||
/* 80021A80-80021AA8 0028+00 s=1 e=0 z=0 None .text fpcLf_Execute__FP14leafdraw_class */
|
||||
s32 fpcLf_Execute(leafdraw_class* i_leaf) {
|
||||
#ifdef DEBUG
|
||||
if (fpcBs_Is_JustOfType(g_fpcLf_type, i_leaf->base.subtype) == 0) {
|
||||
if (g_fpcDbSv_service[12] != NULL) {
|
||||
g_fpcDbSv_service[12](i_leaf);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
return fpcMtd_Execute(&i_leaf->leaf_methods->base, i_leaf);
|
||||
}
|
||||
|
||||
@@ -48,16 +57,16 @@ int g_fpcLf_type;
|
||||
|
||||
/* 80021B14-80021B88 0074+00 s=1 e=0 z=0 None .text fpcLf_Create__FP14leafdraw_class */
|
||||
s32 fpcLf_Create(leafdraw_class* i_leaf) {
|
||||
leaf_process_profile_definition* pprofile;
|
||||
if (i_leaf->base.init_state == 0) {
|
||||
pprofile = (leaf_process_profile_definition*)i_leaf->base.profile;
|
||||
leaf_process_profile_definition* pprofile = (leaf_process_profile_definition*)i_leaf->base.profile;
|
||||
i_leaf->leaf_methods = pprofile->sub_method;
|
||||
i_leaf->base.subtype = fpcBs_MakeOfType(&g_fpcLf_type);
|
||||
fpcDwPi_Init(&i_leaf->draw_priority, pprofile->priority);
|
||||
i_leaf->unk_0xBC = 0;
|
||||
}
|
||||
|
||||
return fpcMtd_Create(&i_leaf->leaf_methods->base, i_leaf);
|
||||
int ret = fpcMtd_Create(&i_leaf->leaf_methods->base, i_leaf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 803A39E8-803A3A00 0014+04 s=0 e=27 z=756 None .data g_fpcLf_Method */
|
||||
|
||||
@@ -25,9 +25,7 @@ void fpcLnTg_QueueTo(line_tag* i_lineTag) {
|
||||
|
||||
/* 80023634-8002368C 0058+00 s=1 e=1 z=1 None .text fpcLnTg_ToQueue__FP8line_tagi */
|
||||
s32 fpcLnTg_ToQueue(line_tag* i_lineTag, int lineListID) {
|
||||
s32 ret = cTg_AdditionToTree(&g_fpcLn_Queue, lineListID, &i_lineTag->base);
|
||||
|
||||
if (ret) {
|
||||
if (cTg_AdditionToTree(&g_fpcLn_Queue, lineListID, &i_lineTag->base)) {
|
||||
i_lineTag->list_id = lineListID;
|
||||
return 1;
|
||||
} else {
|
||||
|
||||
@@ -26,9 +26,7 @@ void fpcLd_Free(s16 i_procName) {
|
||||
|
||||
/* 80022050-800220A0 0050+00 s=1 e=1 z=0 None .text fpcLd_Load__Fs */
|
||||
s32 fpcLd_Load(s16 i_procName) {
|
||||
s32 phase = cDyl_LinkASync((s16)i_procName);
|
||||
|
||||
switch (phase) {
|
||||
switch (cDyl_LinkASync((s16)i_procName)) {
|
||||
case cPhs_COMPLEATE_e:
|
||||
return cPhs_COMPLEATE_e;
|
||||
case cPhs_INIT_e:
|
||||
|
||||
@@ -65,8 +65,13 @@ void fpcM_Management(fpcM_ManagementFunc i_preExecuteFn, fpcM_ManagementFunc i_p
|
||||
dPa_control_c::offStatus(1);
|
||||
}
|
||||
|
||||
fpcPi_Handler();
|
||||
fpcCt_Handler();
|
||||
if (!fpcPi_Handler()) {
|
||||
JUT_ASSERT(353, 0);
|
||||
}
|
||||
|
||||
if (!fpcCt_Handler()) {
|
||||
JUT_ASSERT(357, 0);
|
||||
}
|
||||
|
||||
if (i_preExecuteFn != NULL) {
|
||||
i_preExecuteFn();
|
||||
@@ -126,10 +131,10 @@ void* fpcM_JudgeInLayer(fpc_ProcID i_layerID, fpcCtIt_JudgeFunc i_judgeFunc, voi
|
||||
if (layer != NULL) {
|
||||
void* ret = fpcCtIt_JudgeInLayer(i_layerID, i_judgeFunc, i_data);
|
||||
if (ret == NULL) {
|
||||
ret = fpcLyIt_Judge(layer, i_judgeFunc, i_data);
|
||||
return fpcLyIt_Judge(layer, i_judgeFunc, i_data);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+17
-3
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "f_pc/f_pc_node.h"
|
||||
#include "f_pc/f_pc_layer_iter.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
/* 800224F0-80022514 0024+00 s=1 e=1 z=0 None .text fpcNd_DrawMethod__FP21nodedraw_method_classPv
|
||||
*/
|
||||
@@ -15,9 +16,11 @@ s32 fpcNd_DrawMethod(nodedraw_method_class* i_method_class, void* i_data) {
|
||||
/* 80022514-80022580 006C+00 s=1 e=0 z=0 None .text fpcNd_Draw__FP18process_node_class */
|
||||
s32 fpcNd_Draw(process_node_class* i_procNode) {
|
||||
s32 ret = 0;
|
||||
process_node_class* var_r28 = i_procNode;
|
||||
|
||||
if (i_procNode->unk_0x1A8 == 0) {
|
||||
layer_class* save_layer = fpcLy_CurrentLayer();
|
||||
fpcLy_SetCurrentLayer(&i_procNode->layer);
|
||||
fpcLy_SetCurrentLayer(&var_r28->layer);
|
||||
ret = fpcNd_DrawMethod(i_procNode->nodedraw_method, i_procNode);
|
||||
fpcLy_SetCurrentLayer(save_layer);
|
||||
}
|
||||
@@ -27,8 +30,18 @@ s32 fpcNd_Draw(process_node_class* i_procNode) {
|
||||
|
||||
/* 80022580-800225DC 005C+00 s=1 e=0 z=0 None .text fpcNd_Execute__FP18process_node_class */
|
||||
s32 fpcNd_Execute(process_node_class* i_procNode) {
|
||||
s32 ret;
|
||||
s32 ret = 0;
|
||||
layer_class* save_layer = fpcLy_CurrentLayer();
|
||||
|
||||
#ifdef DEBUG
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, i_procNode->base.subtype) == 0) {
|
||||
if (g_fpcDbSv_service[11] != NULL) {
|
||||
g_fpcDbSv_service[11](i_procNode);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
fpcLy_SetCurrentLayer(&i_procNode->layer);
|
||||
ret = fpcMtd_Execute(&i_procNode->nodedraw_method->base, i_procNode);
|
||||
fpcLy_SetCurrentLayer(save_layer);
|
||||
@@ -111,4 +124,5 @@ s32 fpcNd_Create(process_node_class* i_procNode) {
|
||||
nodedraw_method_class g_fpcNd_Method = {
|
||||
(process_method_func)fpcNd_Create, (process_method_func)fpcNd_Delete,
|
||||
(process_method_func)fpcNd_Execute, (process_method_func)fpcNd_IsDelete,
|
||||
(process_method_func)fpcNd_Draw};
|
||||
(process_method_func)fpcNd_Draw,
|
||||
};
|
||||
|
||||
+38
-10
@@ -11,6 +11,7 @@
|
||||
#include "f_pc/f_pc_node.h"
|
||||
#include "f_pc/f_pc_stdcreate_req.h"
|
||||
#include "f_pc/f_pc_manager.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
|
||||
/* 800227C4-80022804 0040+00 s=1 e=0 z=0 None .text fpcNdRq_RequestQTo__FP19node_create_request
|
||||
*/
|
||||
@@ -35,6 +36,15 @@ void fpcNdRq_ToRequestQ(node_create_request* i_request) {
|
||||
* fpcNdRq_phase_IsCreated__FP19node_create_request */
|
||||
s32 fpcNdRq_phase_IsCreated(node_create_request* i_request) {
|
||||
if (fpcCtRq_IsCreatingByID(i_request->creating_id) == TRUE) {
|
||||
#ifdef DEBUG
|
||||
if (i_request->unk_0x64-- <= 0) {
|
||||
i_request->unk_0x64 = 0;
|
||||
if (g_fpcDbSv_service[8] != NULL) {
|
||||
g_fpcDbSv_service[8](&i_request->creating_id);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return cPhs_INIT_e;
|
||||
} else if (fpcEx_IsExist(i_request->creating_id) == TRUE) {
|
||||
return cPhs_NEXT_e;
|
||||
@@ -67,6 +77,14 @@ s32 fpcNdRq_phase_IsDeleteTiming(node_create_request* i_request) {
|
||||
* fpcNdRq_phase_IsDeleted__FP19node_create_request */
|
||||
s32 fpcNdRq_phase_IsDeleted(node_create_request* i_request) {
|
||||
if (fpcDt_IsComplete() == FALSE) {
|
||||
#ifdef DEBUG
|
||||
if (i_request->unk_0x68-- <= 0) {
|
||||
i_request->unk_0x68 = 0;
|
||||
if (g_fpcDbSv_service[7] != NULL) {
|
||||
g_fpcDbSv_service[7](i_request->node_proc.node);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return cPhs_INIT_e;
|
||||
}
|
||||
|
||||
@@ -143,6 +161,13 @@ s32 fpcNdRq_Cancel(node_create_request* i_request) {
|
||||
/* 80022AFC-80022BE4 00E8+00 s=0 e=1 z=0 None .text fpcNdRq_Handler__Fv */
|
||||
s32 fpcNdRq_Handler() {
|
||||
node_class* node = l_fpcNdRq_Queue.mpHead;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (g_fpcDbSv_service[9] != NULL) {
|
||||
g_fpcDbSv_service[9](&l_fpcNdRq_Queue.mSize);
|
||||
}
|
||||
#endif
|
||||
|
||||
while (node != NULL) {
|
||||
node_create_request* req = ((request_node_class*)node)->node_create_req;
|
||||
switch (req->create_req_methods->execute_method(req)) {
|
||||
@@ -171,12 +196,10 @@ s32 fpcNdRq_Handler() {
|
||||
* fpcNdRq_IsPossibleTarget__FP18process_node_class */
|
||||
s32 fpcNdRq_IsPossibleTarget(process_node_class* i_procNode) {
|
||||
fpc_ProcID id = i_procNode->base.id;
|
||||
request_node_class* req_node;
|
||||
node_create_request* create_req;
|
||||
request_node_class* req_node = (request_node_class*)l_fpcNdRq_Queue.mpHead;
|
||||
|
||||
req_node = (request_node_class*)l_fpcNdRq_Queue.mpHead;
|
||||
while (req_node != NULL) {
|
||||
create_req = req_node->node_create_req;
|
||||
node_create_request* create_req = req_node->node_create_req;
|
||||
if ((create_req->parameters == 2 || create_req->parameters == 4 ||
|
||||
create_req->parameters == 1) &&
|
||||
create_req->node_proc.id == id)
|
||||
@@ -221,7 +244,12 @@ node_create_request* fpcNdRq_Create(u32 i_requestSize) {
|
||||
cTg_Create(&req->create_tag, req);
|
||||
fpcMtdTg_Init(&req->method_tag, (process_method_tag_func)fpcNdRq_Cancel, req);
|
||||
req->request_id = request_id++;
|
||||
#ifdef DEBUG
|
||||
req->unk_0x64 = 60;
|
||||
req->unk_0x68 = 60;
|
||||
#endif
|
||||
}
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
@@ -246,9 +274,9 @@ node_create_request* fpcNdRq_ChangeNode(u32 i_requestSize, process_node_class* i
|
||||
req->data = i_data;
|
||||
}
|
||||
return req;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80022EB0-80022F3C 008C+00 s=1 e=0 z=0 None .text fpcNdRq_DeleteNode__FUlP18process_node_class
|
||||
@@ -270,9 +298,9 @@ node_create_request* fpcNdRq_DeleteNode(u32 i_requestSize, process_node_class* i
|
||||
req->layer = i_procNode->base.layer_tag.layer;
|
||||
}
|
||||
return req;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80022F3C-80022FE8 00AC+00 s=1 e=0 z=0 None .text fpcNdRq_CreateNode__FUlsPv */
|
||||
@@ -285,6 +313,7 @@ node_create_request* fpcNdRq_CreateNode(u32 i_requestSize, s16 i_procName, void*
|
||||
|
||||
layer_class* layer = fpcLy_CurrentLayer();
|
||||
if (layer->layer_id != fpcLy_ROOT_e && fpcNdRq_IsPossibleTarget(layer->process_node) == 0) {
|
||||
int sp28;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -335,11 +364,10 @@ node_create_request* fpcNdRq_Request(u32 i_requestSize, int i_reqType,
|
||||
/* 80023098-80023110 0078+00 s=1 e=0 z=0 None .text fpcNdRq_ReChangeNode__FUisPv */
|
||||
s32 fpcNdRq_ReChangeNode(fpc_ProcID i_requestID, s16 i_procName, void* i_data) {
|
||||
request_node_class* req_node;
|
||||
node_create_request* found;
|
||||
|
||||
req_node = (request_node_class*)l_fpcNdRq_Queue.mpHead;
|
||||
while (req_node != NULL) {
|
||||
found = req_node->node_create_req;
|
||||
node_create_request* found = req_node->node_create_req;
|
||||
if (found->parameters == 2 && found->request_id == i_requestID) {
|
||||
if (found->creating_id == -2) {
|
||||
found->name = i_procName;
|
||||
|
||||
+10
-15
@@ -9,8 +9,7 @@
|
||||
|
||||
/* 80023844-80023868 0024+00 s=0 e=3 z=0 None .text fpcPause_IsEnable__FPvUc */
|
||||
s32 fpcPause_IsEnable(void* i_proc, u8 i_flag) {
|
||||
base_process_class* pProc = (base_process_class*)i_proc;
|
||||
if ((pProc->pause_flag & i_flag) == i_flag) {
|
||||
if ((((base_process_class*)i_proc)->pause_flag & i_flag) == i_flag) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@@ -19,25 +18,22 @@ s32 fpcPause_IsEnable(void* i_proc, u8 i_flag) {
|
||||
|
||||
/* 80023868-800238D4 006C+00 s=0 e=1 z=0 None .text fpcPause_Enable__FPvUc */
|
||||
s32 fpcPause_Enable(void* i_proc, u8 i_flag) {
|
||||
base_process_class* pProc = (base_process_class*)i_proc;
|
||||
pProc->pause_flag |= i_flag;
|
||||
((base_process_class*)i_proc)->pause_flag |= i_flag;
|
||||
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, pProc->subtype)) {
|
||||
process_node_class* pNode = (process_node_class*)pProc;
|
||||
fpcLyIt_OnlyHere(&pNode->layer, (fpcLyIt_OnlyHereFunc)fpcPause_Enable,
|
||||
(void*)(i_flag & 0xFF));
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, ((base_process_class*)i_proc)->subtype)) {
|
||||
fpcLyIt_OnlyHere(&((process_node_class*)i_proc)->layer, (fpcLyIt_OnlyHereFunc)fpcPause_Enable,
|
||||
(void*)i_flag);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800238D4-80023948 0074+00 s=0 e=1 z=0 None .text fpcPause_Disable__FPvUc */
|
||||
s32 fpcPause_Disable(void* i_proc, u8 i_flag) {
|
||||
base_process_class* pProc = (base_process_class*)i_proc;
|
||||
pProc->pause_flag &= (0xFF - i_flag) & 0xFF;
|
||||
u8 var_r31 = 0xFF - i_flag;
|
||||
((base_process_class*)i_proc)->pause_flag &= var_r31;
|
||||
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, pProc->subtype)) {
|
||||
process_node_class* pNode = (process_node_class*)pProc;
|
||||
fpcLyIt_OnlyHere(&pNode->layer, (fpcLyIt_OnlyHereFunc)fpcPause_Disable, (void*)i_flag);
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, ((base_process_class*)i_proc)->subtype)) {
|
||||
fpcLyIt_OnlyHere(&((process_node_class*)i_proc)->layer, (fpcLyIt_OnlyHereFunc)fpcPause_Disable, (void*)i_flag);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -45,6 +41,5 @@ s32 fpcPause_Disable(void* i_proc, u8 i_flag) {
|
||||
|
||||
/* 80023948-80023954 000C+00 s=0 e=1 z=0 None .text fpcPause_Init__FPv */
|
||||
void fpcPause_Init(void* i_proc) {
|
||||
base_process_class* pProc = (base_process_class*)i_proc;
|
||||
pProc->pause_flag = 0;
|
||||
((base_process_class*)i_proc)->pause_flag = 0;
|
||||
}
|
||||
|
||||
+16
-23
@@ -49,8 +49,7 @@ process_priority_class* fpcPi_GetFromQueue() {
|
||||
process_priority_class* i_procPriority = (process_priority_class*)cTg_GetFirst(&l_fpcPi_Queue);
|
||||
|
||||
if (i_procPriority != NULL) {
|
||||
base_process_class* process = (base_process_class*)i_procPriority->base.mpTagData;
|
||||
process_priority_class* ppriority = &process->priority;
|
||||
process_priority_class* ppriority = &((base_process_class*)i_procPriority->base.mpTagData)->priority;
|
||||
fpcLy_CancelQTo(&ppriority->method_tag);
|
||||
return ppriority;
|
||||
}
|
||||
@@ -61,16 +60,14 @@ process_priority_class* fpcPi_GetFromQueue() {
|
||||
/* 80023268-800232B4 004C+00 s=1 e=1 z=0 None .text fpcPi_Delete__FP22process_priority_class
|
||||
*/
|
||||
s32 fpcPi_Delete(process_priority_class* i_procPriority) {
|
||||
static process_priority_queue_info crear = {
|
||||
static priority_id crear = {
|
||||
fpcLy_NONE_e,
|
||||
0xFFFF,
|
||||
fpcPi_NONE_e,
|
||||
};
|
||||
|
||||
fpcPi_QueueTo(i_procPriority);
|
||||
i_procPriority->queue_info.layer_id = crear.layer_id;
|
||||
i_procPriority->queue_info.list_id = crear.list_id;
|
||||
i_procPriority->queue_info.list_priority = crear.list_priority;
|
||||
i_procPriority->queue_info = crear;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -94,9 +91,7 @@ s32 fpcPi_Change(process_priority_class* i_procPriority, fpc_ProcID i_layerID, u
|
||||
if (!fpcPi_IsNormal(i_layerID, i_listID, i_priority))
|
||||
return 0;
|
||||
|
||||
i_procPriority->queue_info.layer_id = i_procPriority->current_info.layer_id;
|
||||
i_procPriority->queue_info.list_id = i_procPriority->current_info.list_id;
|
||||
i_procPriority->queue_info.list_priority = i_procPriority->current_info.list_priority;
|
||||
i_procPriority->queue_info = i_procPriority->current_info;
|
||||
|
||||
if (i_layerID != fpcLy_CURRENT_e && i_procPriority->current_info.layer_id != i_layerID) {
|
||||
i_procPriority->queue_info.layer_id = i_layerID;
|
||||
@@ -114,16 +109,16 @@ s32 fpcPi_Change(process_priority_class* i_procPriority, fpc_ProcID i_layerID, u
|
||||
}
|
||||
|
||||
if (process->init_state == 0 || process->init_state == 1) {
|
||||
i_procPriority->current_info.layer_id = i_procPriority->queue_info.layer_id;
|
||||
i_procPriority->current_info.list_id = i_procPriority->queue_info.list_id;
|
||||
i_procPriority->current_info.list_priority = i_procPriority->queue_info.list_priority;
|
||||
i_procPriority->current_info = i_procPriority->queue_info;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (changed == TRUE)
|
||||
return fpcPi_ToQueue(i_procPriority);
|
||||
else
|
||||
return 0;
|
||||
if (changed == TRUE) {
|
||||
int ret = fpcPi_ToQueue(i_procPriority);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80023428-800234BC 0094+00 s=0 e=1 z=0 None .text fpcPi_Handler__Fv */
|
||||
@@ -135,11 +130,10 @@ s32 fpcPi_Handler() {
|
||||
line_tag* pLineTag = &process->line_tag_;
|
||||
|
||||
if (fpcLyTg_Move(pLayerTag, i_procPriority->queue_info.layer_id, i_procPriority->queue_info.list_id,
|
||||
i_procPriority->queue_info.list_priority) == 1) {
|
||||
i_procPriority->queue_info.list_priority) == 1)
|
||||
{
|
||||
fpcLnTg_Move(pLineTag, i_procPriority->current_info.list_id);
|
||||
i_procPriority->current_info.layer_id = i_procPriority->queue_info.layer_id;
|
||||
i_procPriority->current_info.list_id = i_procPriority->queue_info.list_id;
|
||||
i_procPriority->current_info.list_priority = i_procPriority->queue_info.list_priority;
|
||||
i_procPriority->current_info = i_procPriority->queue_info;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
@@ -159,9 +153,8 @@ s32 fpcPi_Init(process_priority_class* i_procPriority, void* i_data, fpc_ProcID
|
||||
i_procPriority->queue_info.list_id = i_listID;
|
||||
i_procPriority->queue_info.list_priority = i_priority;
|
||||
|
||||
i_procPriority->current_info.layer_id = i_procPriority->queue_info.layer_id;
|
||||
i_procPriority->current_info.list_id = i_procPriority->queue_info.list_id;
|
||||
i_procPriority->current_info.list_priority = i_procPriority->queue_info.list_priority;
|
||||
i_procPriority->current_info = i_procPriority->queue_info;
|
||||
|
||||
cTg_Create(&i_procPriority->base, i_data);
|
||||
fpcMtdTg_Init(&i_procPriority->method_tag, (process_method_tag_func)fpcPi_Delete, i_procPriority);
|
||||
return 1;
|
||||
|
||||
@@ -10,5 +10,6 @@ process_profile_definition** g_fpcPf_ProfileList_p;
|
||||
|
||||
/* 80023564-80023578 0014+00 s=0 e=1 z=0 None .text fpcPf_Get__Fs */
|
||||
process_profile_definition* fpcPf_Get(s16 i_profname) {
|
||||
return g_fpcPf_ProfileList_p[i_profname];
|
||||
int index = i_profname;
|
||||
return g_fpcPf_ProfileList_p[index];
|
||||
}
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
|
||||
/* 80023578-80023590 0018+00 s=0 e=3 z=77 None .text fpcSch_JudgeForPName__FPvPv */
|
||||
void* fpcSch_JudgeForPName(void* i_proc, void* i_data) {
|
||||
s16 name = *(s16*)i_data;
|
||||
if (((base_process_class*)i_proc)->name == name)
|
||||
if (((base_process_class*)i_proc)->name == *(s16*)i_data)
|
||||
return i_proc;
|
||||
|
||||
return NULL;
|
||||
@@ -16,8 +15,7 @@ void* fpcSch_JudgeForPName(void* i_proc, void* i_data) {
|
||||
|
||||
/* 80023590-800235A8 0018+00 s=0 e=44 z=270 None .text fpcSch_JudgeByID__FPvPv */
|
||||
void* fpcSch_JudgeByID(void* i_proc, void* i_data) {
|
||||
fpc_ProcID process_id = *(fpc_ProcID*)i_data;
|
||||
if (((base_process_class*)i_proc)->id == process_id)
|
||||
if (((base_process_class*)i_proc)->id == *(fpc_ProcID*)i_data)
|
||||
return i_proc;
|
||||
|
||||
return NULL;
|
||||
|
||||
@@ -7,16 +7,21 @@
|
||||
#include "f_pc/f_pc_load.h"
|
||||
#include "f_pc/f_pc_node.h"
|
||||
#include "f_pc/f_pc_manager.h"
|
||||
#include "f_pc/f_pc_debug_sv.h"
|
||||
#include <dolphin.h>
|
||||
|
||||
/* 80023B70-80023BC4 0054+00 s=1 e=0 z=5 None .text
|
||||
* fpcSCtRq_phase_Load__FP29standard_create_request_class */
|
||||
s32 fpcSCtRq_phase_Load(standard_create_request_class* i_request) {
|
||||
switch (fpcLd_Load(i_request->process_name)) {
|
||||
int ret = fpcLd_Load(i_request->process_name);
|
||||
|
||||
switch (ret) {
|
||||
case cPhs_INIT_e:
|
||||
return cPhs_INIT_e;
|
||||
case cPhs_COMPLEATE_e:
|
||||
return cPhs_NEXT_e;
|
||||
case cPhs_ERROR_e:
|
||||
OS_REPORT("fpcSCtRq_phase_Load %d\n", i_request->process_name);
|
||||
default:
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
@@ -28,7 +33,9 @@ s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* i_request) {
|
||||
fpcLy_SetCurrentLayer(i_request->base.layer);
|
||||
i_request->base.process =
|
||||
fpcBs_Create(i_request->process_name, i_request->base.id, i_request->process_append);
|
||||
|
||||
if (i_request->base.process == NULL) {
|
||||
OS_REPORT("fpcSCtRq_phase_CreateProcess %d\n", i_request->process_name);
|
||||
fpcLd_Free(i_request->process_name);
|
||||
return cPhs_ERROR_e;
|
||||
} else {
|
||||
@@ -41,7 +48,18 @@ s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* i_request) {
|
||||
* fpcSCtRq_phase_SubCreateProcess__FP29standard_create_request_class */
|
||||
s32 fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* i_request) {
|
||||
fpcLy_SetCurrentLayer(i_request->base.layer);
|
||||
return fpcBs_SubCreate(i_request->base.process);
|
||||
int ret = fpcBs_SubCreate(i_request->base.process);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ret == 0 && i_request->unk_0x60-- <= 0) {
|
||||
i_request->unk_0x60 = 0;
|
||||
if (g_fpcDbSv_service[0] != NULL) {
|
||||
g_fpcDbSv_service[0](i_request->base.process);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80023C64-80023CBC 0058+00 s=1 e=0 z=14 None .text
|
||||
@@ -59,13 +77,16 @@ s32 fpcSCtRq_phase_IsComplete(standard_create_request_class* i_request) {
|
||||
/* 80023CBC-80023D0C 0050+00 s=1 e=0 z=5 None .text
|
||||
* fpcSCtRq_phase_PostMethod__FP29standard_create_request_class */
|
||||
s32 fpcSCtRq_phase_PostMethod(standard_create_request_class* i_request) {
|
||||
if (i_request->create_post_method != NULL &&
|
||||
i_request->create_post_method(i_request->base.process, i_request->unk_0x5C) == 0)
|
||||
{
|
||||
return cPhs_INIT_e;
|
||||
} else {
|
||||
return cPhs_NEXT_e;
|
||||
stdCreateFunc create_func = i_request->create_post_method;
|
||||
|
||||
if (create_func != NULL) {
|
||||
int ret = create_func(i_request->base.process, i_request->unk_0x5C);
|
||||
if (ret == 0) {
|
||||
return cPhs_INIT_e;
|
||||
}
|
||||
}
|
||||
|
||||
return cPhs_NEXT_e;
|
||||
}
|
||||
|
||||
/* 80023D0C-80023D14 0008+00 s=1 e=0 z=0 None .text
|
||||
@@ -138,5 +159,9 @@ fpc_ProcID fpcSCtRq_Request(layer_class* i_layer, s16 i_procName, stdCreateFunc
|
||||
request->create_post_method = i_createFunc;
|
||||
request->unk_0x5C = param_4;
|
||||
request->process_append = i_append;
|
||||
#ifdef DEBUG
|
||||
request->unk_0x60 = 60;
|
||||
#endif
|
||||
|
||||
return request->base.id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user