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:
TakaRikka
2025-03-18 12:45:44 -07:00
committed by GitHub
parent 58ba86b6a3
commit d3e9175bfb
48 changed files with 4864 additions and 2962 deletions
+7 -3
View File
@@ -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
View File
@@ -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"),
+8 -8
View File
@@ -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
View File
@@ -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;
};
+1
View File
@@ -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); }
+2
View File
@@ -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
+2 -2
View File
@@ -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);
+1 -1
View File
@@ -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
+16
View File
@@ -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
+1 -1
View File
@@ -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);
+4
View File
@@ -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 {
+4 -4
View File
@@ -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);
+3
View File
@@ -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 -19
View File
@@ -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
View File
@@ -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(&current.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(&current.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)) {
+1 -1
View File
@@ -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)
{
+1 -1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+29 -6
View File
@@ -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;
}
+31 -13
View File
@@ -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;
+2 -2
View File
@@ -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();
}
+858
View File
@@ -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
+15 -4
View File
@@ -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;
+30 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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 */
+25 -8
View File
@@ -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(&current->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
View File
@@ -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 */
+1 -3
View File
@@ -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 {
+1 -3
View File
@@ -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:
+10 -5
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+2 -1
View File
@@ -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];
}
+2 -4
View File
@@ -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;
+33 -8
View File
@@ -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;
}