mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-07 20:01:20 -04:00
z_collision_check.c (#58)
* setup * Progress on z_collision_check.c * Further progress on z_collision_check.c * renamed code_0x800E03A0 to z_collision_btltbls, z_collision_check.c decompiled besides bss * Structs changes * Document functions * overlayhelpers folder, colliderinit.py and ichaindis.py * Flags, format existing ColliderInits * Fix merge * Few more small improvements * Review suggestions
This commit is contained in:
+232
-232
@@ -934,8 +934,8 @@ s32 BgCheck_PolygonGetMinY(BgPolygon* polygons, BgVertex* vertices);
|
||||
void BgCheck_PolygonGetNormal(BgPolygon* polygon, f32* normalX, f32* normalY, f32* normalZ);
|
||||
void func_800C0094(BgPolygon* param_1, f32 xOffset, f32 yOffset, f32 zOffset, z_Matrix* matrix);
|
||||
f32 func_800C01B8(BgPolygon* param_1, Vec3f* param_2);
|
||||
void BgCheck_CreateColTriParamsFromPolygon(BgPolygon* polygon, BgVertex* vertices, ColTriParams* tri);
|
||||
void func_800C02C0(BgPolygon* poly, s32 index, CollisionContext* bgCtxt, ColTriParams* tri);
|
||||
void BgCheck_CreateTriNormFromPolygon(BgPolygon* polygon, BgVertex* vertices, TriNorm* tri);
|
||||
void func_800C02C0(BgPolygon* poly, s32 index, CollisionContext* bgCtxt, TriNorm* tri);
|
||||
// void func_800C0340(BgPolygon* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// UNK_TYPE4 func_800C0474(BgPolygon* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_800C0668(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
@@ -1317,217 +1317,217 @@ s16 Camera_ClearFlags(Camera* camera, s16 flags);
|
||||
// void func_800E0308(void);
|
||||
// void func_800E031C(void);
|
||||
void func_800E0348(Camera* camera);
|
||||
s800E03A0* func_800E03A0(s32 a0);
|
||||
void func_800E03CC(u8* param_1);
|
||||
f32 Collision_GetDamageAndEffectOnBumper(ColCommon* toucher, ColBodyInfo* toucherBody, ColCommon* bumper, ColBodyInfo* bumperBody, u32* effect);
|
||||
// void func_800E04BC(void);
|
||||
u32 Collision_GetToucherDamage(ColCommon* toucher, ColBodyInfo* toucherBody, ColCommon* bumper);
|
||||
s32 Collision_InitCommonDefault(GlobalContext* ctxt, ColCommon* shape);
|
||||
s32 Collision_FiniCommon(GlobalContext* ctxt, ColCommon* shape);
|
||||
// void func_800E0594(void);
|
||||
// void func_800E05D4(void);
|
||||
s32 Collision_InitCommonWithData(GlobalContext* ctxt, ColCommon* shape, Actor* actor, ColCommonInit* init);
|
||||
void Collision_ResetCommonForAT(GlobalContext* ctxt, ColCommon* shape);
|
||||
void Collision_ResetCommonForAC(GlobalContext* ctxt, ColCommon* shape);
|
||||
void Collision_ResetCommonForOT(GlobalContext* ctxt, ColCommon* shape);
|
||||
s32 Collision_InitTouchDefault(GlobalContext* ctxt, ColTouch* touch);
|
||||
s32 Collision_FiniTouch(GlobalContext* ctxt, ColTouch* touch);
|
||||
s32 Collision_InitTouchWithData(GlobalContext* ctxt, ColTouch* touch, ColTouchInit* init);
|
||||
void Collision_nop800E0720(GlobalContext* ctxt, ColBodyInfo* body);
|
||||
s32 Collision_InitBumpDefault(GlobalContext* ctxt, ColBump* bump);
|
||||
s32 Collision_FiniBump(GlobalContext* ctxt, ColBump* bump);
|
||||
s32 Collision_InitBumpWithData(GlobalContext* ctxt, ColBump* bump, ColBumpInit* init);
|
||||
s32 Collision_InitBodyDefault(GlobalContext* ctxt, ColBodyInfo* body);
|
||||
s32 Collision_FiniBody(GlobalContext* ctxt, ColBodyInfo* body);
|
||||
s32 Collision_InitBodyWithData(GlobalContext* ctxt, ColBodyInfo* body, ColBodyInfoInit* init);
|
||||
void Collision_ResetBodyForAT(GlobalContext* ctxt, ColBodyInfo* body);
|
||||
void Collision_ResetBodyForAC(GlobalContext* ctxt, ColBodyInfo* body);
|
||||
void Collision_ResetBodyForOT(GlobalContext* ctxt, ColBodyInfo* body);
|
||||
s32 Collision_InitSphereParamsDefault(GlobalContext* ctxt, ColSphereParams* params);
|
||||
s32 Collision_FiniSphereParams(GlobalContext* ctxt, ColSphereParams* params);
|
||||
s32 Collision_InitSphereParamsWithData(GlobalContext* ctxt, ColSphereParams* params, ColSphereParamsInit* init);
|
||||
s32 Collision_InitSphereGroupElemDefault(GlobalContext* pzParm1, ColSphereGroupElement* elem);
|
||||
s32 Collision_FiniSphereGroupElem(GlobalContext* ctxt, ColSphereGroupElement* elem);
|
||||
s32 Collision_InitSphereGroupElemWithData(GlobalContext* ctxt, ColSphereGroupElement* elem, ColSphereGroupElementInit* init);
|
||||
s32 Collision_ResetSphereGroupElemForAT(GlobalContext* ctxt, ColSphereGroupElement* elem);
|
||||
s32 Collision_ResetSphereGroupElemForAC(GlobalContext* ctxt, ColSphereGroupElement* elem);
|
||||
s32 Collision_ResetSphereGroupElemForOT(GlobalContext* ctxt, ColSphereGroupElement* elem);
|
||||
s32 Collision_InitSphereGroupDefault(GlobalContext* ctxt, ColSphereGroup* sphereGroup);
|
||||
// void func_800E0B78(void);
|
||||
s32 Collision_FiniSphereGroup(GlobalContext* ctxt, ColSphereGroup* sphereGroup);
|
||||
// void func_800E0CA8(void);
|
||||
// void func_800E0D84(void);
|
||||
s32 Collision_InitSphereGroupWithData(GlobalContext* ctxt, ColSphereGroup* sphereGroup, Actor* actor, ColSphereGroupInit* init, ColSphereGroupElement* spheres);
|
||||
s32 Collision_InitSphereGroup(GlobalContext* ctxt, ColSphereGroup* sphereGroup, Actor* actor, ColSphereGroupInit* init, ColSphereGroupElement* spheres);
|
||||
s32 Collision_ResetSphereGroupForAT(GlobalContext* ctxt, ColSphereGroup* spheres);
|
||||
s32 Collision_ResetSphereGroupForAC(GlobalContext* ctxt, ColSphereGroup* spheres);
|
||||
s32 Collision_ResetSphereGroupForOT(GlobalContext* ctst, ColSphereGroup* spheres);
|
||||
s32 Collision_InitCylinderParamsDefault(GlobalContext* ctxt, ColCylinderParams* params);
|
||||
s32 Collision_FiniCylinderParams(GlobalContext* ctxt, ColCylinderParams* params);
|
||||
s32 Collision_InitCylinderParamsWithData(GlobalContext* ctxt, ColCylinderParams* info, ColCylinderParams* init);
|
||||
s32 Collision_InitCylinderDefault(GlobalContext* ctxt, ColCylinder* cylinder);
|
||||
s32 Collision_FiniCylinder(GlobalContext* ctxt, ColCylinder* cylinder);
|
||||
// void func_800E123C(void);
|
||||
// void func_800E12A4(void);
|
||||
s32 Collision_InitCylinderWithData(GlobalContext* ctxt, ColCylinder* cylinder, Actor* actor, ColCylinderInit* init);
|
||||
s32 Collision_InitCylinder(GlobalContext* ctxt, ColCylinder* cylinder, Actor* actor, ColCylinderInit* init);
|
||||
s32 Collision_ResetCylinderForAT(GlobalContext* ctxt, ColCylinder* cylinder);
|
||||
s32 Collision_ResetCylinderForAC(GlobalContext* ctxt, ColCylinder* cylinder);
|
||||
s32 Collision_ReseCylinderForOT(GlobalContext* ctxt, ColCylinder* cylinder);
|
||||
s32 Collision_InitTriParamsDefault(GlobalContext* ctxt, ColTriParams* coords);
|
||||
s32 Collision_FiniTriParams(GlobalContext* ctxt, ColTriParams* params);
|
||||
s32 Collision_InitTriParamsWithData(GlobalContext* ctxt, ColTriParams* params, ColTriParamsInit* init);
|
||||
s32 Collision_InitTriDefault(GlobalContext* ctxt, ColTri* elem);
|
||||
s32 Collision_FiniTri(GlobalContext* ctxt, ColTri* elem);
|
||||
s32 Collision_InitTriWithData(GlobalContext* ctxt, ColTri* elem, ColTriInit* init);
|
||||
s32 Collision_ResetTriForAT(GlobalContext* ctxt, ColTri* tri);
|
||||
s32 Collision_ResetTriForAC(GlobalContext* ctxt, ColTri* tri);
|
||||
s32 func_800E16AC(GlobalContext* ctxt, ColTri* tri);
|
||||
s32 Collision_InitTriGroupDefault(GlobalContext* ctxt, ColTriGroup* quadGroup);
|
||||
// void func_800E16FC(void);
|
||||
s32 Collision_FiniTriGroup(GlobalContext* ctxt, ColTriGroup* triGroup);
|
||||
// void func_800E1858(void);
|
||||
s32 Collision_InitTriGroupWithData(GlobalContext* ctxt, ColTriGroup* triGroup, Actor* actor, ColTriGroupInit* init, ColTri* tris);
|
||||
s32 Collision_InitTriGroup(GlobalContext* ctxt, ColTriGroup* triGroup, Actor* actor, ColTriGroupInit* init, ColTri* tris);
|
||||
s32 Collision_ResetTriGroupForAT(GlobalContext* ctxt, ColTriGroup* tris);
|
||||
s32 Collision_ResetTriGroupForAC(GlobalContext* ctxt, ColTriGroup* tris);
|
||||
s32 Collision_ResetTriGroupForOT(GlobalContext* ctxt, ColTriGroup* tris);
|
||||
s32 Collision_InitQuadParamsDefault(GlobalContext* ctxt, ColQuadParams* params);
|
||||
s32 Collision_FiniQuadParams(GlobalContext* ctxt, ColQuadParams* params);
|
||||
s32 Collision_ResetQuadParamsForAT(GlobalContext* ctxt, ColQuadParams* params);
|
||||
void Collision_QuadCalcMidpoints(ColQuadParams* params);
|
||||
s32 Collision_InitQuadParamsWithData(GlobalContext* ctxt, ColQuadParams* params, ColQuadParams* init);
|
||||
s32 Collision_InitQuadDefault(GlobalContext* ctxt, ColQuad* quad);
|
||||
s32 Collision_FiniQuad(GlobalContext* ctxt, ColQuad* quad);
|
||||
// void func_800E1EB8(void);
|
||||
s32 Collision_InitQuadWithData(GlobalContext* ctxt, ColQuad* quad, Actor* actor, ColQuadInit* init);
|
||||
s32 Collision_InitQuad(GlobalContext* ctxt, ColQuad* quad, Actor* actor, ColQuadInit* init);
|
||||
s32 Collision_ResetQuadForAT(GlobalContext* ctxt, ColQuad* quad);
|
||||
s32 Collision_ResetQuadForAC(GlobalContext* param_1, ColQuad* quad);
|
||||
s32 Collision_ResetQuadForOT(GlobalContext* ctxt, ColCommon* quad);
|
||||
// void func_800E20A4(void);
|
||||
s32 Collision_InitSphereDefault(GlobalContext* ctxt, ColSphere* sphere);
|
||||
s32 Collision_FiniSphere(GlobalContext* pzParm1, ColSphere* sphere);
|
||||
s32 Collision_InitSphereWithData(GlobalContext* ctxt, ColSphere* sphere, Actor* actor, ColSphereInit* info);
|
||||
s32 Collision_InitSphere(GlobalContext* ctxt, ColSphere* sphere, Actor* actor, ColSphereInit* init);
|
||||
s32 Collision_ResetSphereForAT(GlobalContext* ctxt, ColSphere* sphere);
|
||||
s32 Collision_ResetSphereForAC(GlobalContext* ctxt, ColSphere* sphere);
|
||||
s32 Collision_ResetSphereForOT(GlobalContext* ctxt, ColSphere* sphere);
|
||||
// void func_800E2368(void);
|
||||
// UNK_TYPE4 func_800E23B0(void);
|
||||
// void func_800E23C4(void);
|
||||
// void func_800E2408(void);
|
||||
s32 func_800E2434(GlobalContext* ctxt, s32 param_2);
|
||||
void Collision_Init(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void Collision_Fini(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void Collision_Reset(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void Collision_EnableEditMode(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void Collision_EnableAppendMode(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
s32 Collision_AddAT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape);
|
||||
s32 Collision_AddIndexAT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape, s32 index);
|
||||
s32 Collision_AddAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape);
|
||||
s32 collision_AddIndexAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape, s32 index);
|
||||
s32 Collision_AddOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape);
|
||||
s32 Collision_AddIndexOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape, s32 index);
|
||||
s32 Collision_AddGroup4(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* shape);
|
||||
s32 Collision_CantBeToucherAC(ColBodyInfo* iParm1);
|
||||
s32 Collision_CantBeBumperAC(ColBodyInfo* iParm1);
|
||||
s32 Collision_ToucherIsExcluded(ColBodyInfo* toucher, ColBodyInfo* bumper);
|
||||
// void func_800E2C08(void);
|
||||
// void func_800E2C1C(void);
|
||||
// void func_800E2D88(void);
|
||||
// void func_800E2EF4(void);
|
||||
// void func_800E2F30(void);
|
||||
// void func_800E2F54(void);
|
||||
// void func_800E2F78(void);
|
||||
// void func_800E30C8(void);
|
||||
void func_800E3168(GlobalContext* ctxt, ColCommon* toucher, ColBodyInfo* toucherBody, ColCommon* bumper, ColBodyInfo* bumperBody, Vec3f* param_6);
|
||||
void func_800E3304(ColCommon* toucher, ColCommon* bumper);
|
||||
s32 Collision_HandleCollisionATWithAC(GlobalContext* ctxt, ColCommon* toucher, ColBodyInfo* toucherBody, Vec3f* toucherLoc, ColCommon* bumper, ColBodyInfo* bumperBody, Vec3f* bumperLoc, Vec3f* param_8);
|
||||
void Collision_TriCalcAvgPoint(ColTri* tri, Vec3f* avg);
|
||||
void collision_quad_cal_avg_point(ColQuadParams* quad, Vec3f* avg);
|
||||
void Collision_SphereGroupWithSphereGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_SphereGroupWithCylinderAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColCylinder* bumpee);
|
||||
void Collision_SphereGroupWithTriGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColTriGroup* bumpee);
|
||||
void Collision_SphereGroupWithQuadAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColQuad* bumpee);
|
||||
void Collision_SphereGroupWithSphereAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColSphere* bumpee);
|
||||
void Collision_CylinderWithSphereGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_CylinderWithCylinderAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColCylinder* bumpee);
|
||||
void Collision_CylinderWithTriGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColTriGroup* bumpee);
|
||||
void Collision_CylinderWithQuadAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColQuad* bumpee);
|
||||
void Collision_CylinderWithSphereAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColSphere* bumpee);
|
||||
void Collision_TriGroupWithSphereGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColTriGroup* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_TriGroupWithCylinderAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColTriGroup* toucher, ColCylinder* bumpee);
|
||||
void Collision_TriGroupWithTriGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColTriGroup* toucher, ColTriGroup* bumpee);
|
||||
void Collision_TriGroupWithQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColTriGroup* toucher, ColQuad* bumpee);
|
||||
void Collision_TriGroupWithSphereAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColTriGroup* toucher, ColSphere* bumpee);
|
||||
void Collision_QuadWithSphereGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColQuad* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_QuadWithCylinderAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColQuad* toucher, ColCylinder* bumpee);
|
||||
void Collision_QuadWithTriGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColQuad* toucher, ColTriGroup* bumpee);
|
||||
void Collision_QuadWithQuadAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColQuad* toucher, ColQuad* bumpee);
|
||||
void Collision_QuadWithSphereAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColQuad* toucher, ColSphere* bumpee);
|
||||
void Collision_SphereWithSphereGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_SphereWithCylinderAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColCylinder* bumpee);
|
||||
void Collision_SphereWithTriGroupAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColTriGroup* bumpee);
|
||||
void Collision_SphereWithQuadAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColQuad* bumpee);
|
||||
void Collision_SphereWithSphereAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColSphere* bumpee);
|
||||
void func_800E60C0(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* spheres);
|
||||
// void func_800E61A0(void);
|
||||
// void func_800E6238(void);
|
||||
// void func_800E6320(void);
|
||||
void func_800E63B8(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* sphere);
|
||||
void func_800E6450(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void Collision_CollideWithAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCommon* colObj);
|
||||
void Collision_DoATWithAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
// void func_800E6724(void);
|
||||
void Collision_HandleCollisionOTWithOT(GlobalContext* ctxt, ColCommon* toucher, ColBodyInfo* toucherBody, Vec3f* toucherLoc, ColCommon* bumper, ColBodyInfo* bumperBody, Vec3f* bumperLoc, f32 param_8);
|
||||
void Collision_SphereGroupWithSphereGroupOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_SphereGroupWithCylinderOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColCylinder* bumpee);
|
||||
void Collision_SphereGroupWithSphereOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphereGroup* toucher, ColSphere* bumpee);
|
||||
void Collision_CylinderWithSphereGroupOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_CylinderWithCylinderOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColCylinder* bumpee);
|
||||
void Collision_CylinderWithSphereOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColCylinder* toucher, ColSphere* bumpee);
|
||||
void Collision_SphereWithSphereGroupOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColSphereGroup* bumpee);
|
||||
void Collision_SphereWithCylinderOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColCylinder* bumpee);
|
||||
void Collision_SphereWithSphereOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, ColSphere* toucher, ColSphere* bumpee);
|
||||
// UNK_TYPE4 func_800E7264(ColCommon* iParm1);
|
||||
// UNK_TYPE4 func_800E7288(ColCommon* piParm1, ColCommon* piParm2);
|
||||
void Collision_DoOTWithOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void func_800E7494(CollisionCheckInfo* param_1);
|
||||
void func_800E74DC(CollisionCheckInfo* param_1);
|
||||
void func_800E7508(s32 param_1, UNK_PTR param_2);
|
||||
void func_800E7530(CollisionCheckInfo* param_1, DamageTable* param_2, UNK_PTR param_3);
|
||||
void func_800E755C(CollisionCheckInfo* puParm1, DamageTable* uParm2, UNK_PTR puParm3);
|
||||
// void func_800E7590(void);
|
||||
// void func_800E75C8(void);
|
||||
// void func_800E77EC(void);
|
||||
// void func_800E7894(void);
|
||||
// void func_800E78B4(void);
|
||||
// void func_800E7948(void);
|
||||
// void func_800E7968(void);
|
||||
void func_800E7988(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
// void func_800E7A48(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800E7B54(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800E7BCC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800E7C64(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_800E7DA8(void);
|
||||
s32 func_800E7DCC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Vec3f* param_3, Vec3f* param_4, Actor** param_5, s32 param_6);
|
||||
void Collision_CylinderMoveToActor(Actor* actor, ColCylinder* cylinder);
|
||||
void Collision_CylinderSetLoc(ColCylinder* cylinder, Vec3s* loc);
|
||||
void Collision_QuadSetCoords(ColQuad* iParm1, Vec3f* pzParm2, Vec3f* pzParm3, Vec3f* pzParm4, Vec3f* param_5);
|
||||
void Collision_TriGroupSetCoordsAtIndex(ColTriGroup* tris, s32 index, Vec3f* pzParm3, Vec3f* pzParm4, Vec3f* param_5);
|
||||
void Collision_InitTriParamsAtIndex(GlobalContext* ctxt, ColTriGroup* tris, s32 index, ColTriParamsInit* init);
|
||||
// void func_800E7FDC(void);
|
||||
// void func_800E8160(void);
|
||||
// void func_800E823C(void);
|
||||
// void func_800E8318(void);
|
||||
// void func_800E8478(void);
|
||||
// void func_800E85D4(UNK_TYPE4 param_1, Vec3f* param_2);
|
||||
void func_800E8668(GlobalContext* globalCtx, Vec3f* arg2);
|
||||
// void func_800E8690(void);
|
||||
// void func_800E86C0(void);
|
||||
// void func_800E86E0(UNK_TYPE4 param_1, Vec3f* param_2, UNK_TYPE4 param_3);
|
||||
// void func_800E8784(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8);
|
||||
DamageTable* DamageTable_Get(s32 index); // func_800E03A0
|
||||
void DamageTable_Clear(DamageTable* damageTable); // func_800E03CC
|
||||
f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, u32* effect);
|
||||
f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderInfo* ac);
|
||||
s32 CollisionCheck_GetToucherDamage(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo);
|
||||
s32 Collider_InitBase(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_DestroyBase(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_SetBaseToActor(GlobalContext* ctxt, Collider* collider, ColliderInitToActor* src);
|
||||
s32 Collider_SetBaseType1(GlobalContext* ctxt, Collider* collider, Actor* actor, ColliderInitType1* src);
|
||||
s32 Collider_SetBase(GlobalContext* ctxt, Collider* collider, Actor* actor, ColliderInit* src);
|
||||
void Collider_ResetATBase(GlobalContext* ctxt, Collider* collider);
|
||||
void Collider_ResetACBase(GlobalContext* ctxt, Collider* collider);
|
||||
void Collider_ResetOCBase(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_InitTouch(GlobalContext* ctxt, ColliderTouch* touch);
|
||||
s32 Collider_DestroyTouch(GlobalContext* ctxt, ColliderTouch* touch);
|
||||
s32 Collider_SetTouch(GlobalContext* ctxt, ColliderTouch* touch, ColliderTouchInit* src);
|
||||
void Collider_ResetATInfoUnk(GlobalContext* ctxt, ColliderInfo* info);
|
||||
s32 Collider_InitBump(GlobalContext* ctxt, ColliderBump* bump);
|
||||
s32 Collider_DestroyBump(GlobalContext* ctxt, ColliderBump* bump);
|
||||
s32 Collider_SetBump(GlobalContext* ctxt, ColliderBump* bump, ColliderBumpInit* src);
|
||||
s32 Collider_InitInfo(GlobalContext* ctxt, ColliderInfo* info);
|
||||
s32 Collider_DestroyInfo(GlobalContext* ctxt, ColliderInfo* info);
|
||||
s32 Collider_SetInfo(GlobalContext* ctxt, ColliderInfo* info, ColliderInfoInit* src);
|
||||
void Collider_ResetATInfo(GlobalContext* ctxt, ColliderInfo* info);
|
||||
void Collider_ResetACInfo(GlobalContext* ctxt, ColliderInfo* info);
|
||||
void Collider_ResetOCInfo(GlobalContext* ctxt, ColliderInfo* info);
|
||||
s32 Collider_InitJntSphElementDim(GlobalContext* ctxt, ColliderJntSphElementDim* dim);
|
||||
s32 Collider_DestroyJntSphElementDim(GlobalContext* ctxt, ColliderJntSphElementDim* dim);
|
||||
s32 Collider_SetJntSphElementDim(GlobalContext* ctxt, ColliderJntSphElementDim* dest, ColliderJntSphElementDimInit* src);
|
||||
s32 Collider_InitJntSphElement(GlobalContext* ctxt, ColliderJntSphElement* element);
|
||||
s32 Collider_DestroyJntSphElement(GlobalContext* ctxt, ColliderJntSphElement* element);
|
||||
s32 Collider_SetJntSphElement(GlobalContext* ctxt, ColliderJntSphElement* dest, ColliderJntSphElementInit* src);
|
||||
s32 Collider_ResetJntSphElementAT(GlobalContext* ctxt, ColliderJntSphElement* collider);
|
||||
s32 Collider_ResetJntSphElementAC(GlobalContext* ctxt, ColliderJntSphElement* collider);
|
||||
s32 Collider_ResetJntSphElementOC(GlobalContext* ctxt, ColliderJntSphElement* collider);
|
||||
s32 Collider_InitJntSph(GlobalContext* ctxt, ColliderJntSph* collider);
|
||||
s32 Collider_FreeJntSph(GlobalContext* ctxt, ColliderJntSph* collider);
|
||||
s32 Collider_DestroyJntSph(GlobalContext* ctxt, ColliderJntSph* collider);
|
||||
s32 Collider_SetJntSphToActor(GlobalContext* ctxt, ColliderJntSph* collider, ColliderJntSphInitToActor* src);
|
||||
s32 Collider_SetJntSphAllocType1(GlobalContext* ctxt, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInitType1* src);
|
||||
s32 Collider_SetJntSph(GlobalContext* ctxt, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
|
||||
s32 Collider_InitAndSetJntSph(GlobalContext* ctxt, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
|
||||
s32 Collider_ResetJntSphAT(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetJntSphAC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetJntSphOC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_InitCylinderDim(GlobalContext* ctxt, Cylinder16* dim);
|
||||
s32 Collider_DestroyCylinderDim(GlobalContext* ctxt, Cylinder16* dim);
|
||||
s32 Collider_SetCylinderDim(GlobalContext* ctxt, Cylinder16* dim, Cylinder16* src);
|
||||
s32 Collider_InitCylinder(GlobalContext* ctxt, ColliderCylinder* collider);
|
||||
s32 Collider_DestroyCylinder(GlobalContext* ctxt, ColliderCylinder* collider);
|
||||
s32 Collider_SetCylinderToActor(GlobalContext* ctxt, ColliderCylinder* collider, ColliderCylinderInitToActor* src);
|
||||
s32 Collider_SetCylinderType1(GlobalContext* ctxt, ColliderCylinder* collider, Actor* actor, ColliderCylinderInitType1* src);
|
||||
s32 Collider_SetCylinder(GlobalContext* ctxt, ColliderCylinder* collider, Actor* actor, ColliderCylinderInit* src);
|
||||
s32 Collider_InitAndSetCylinder(GlobalContext* ctxt, ColliderCylinder* collider, Actor* actor, ColliderCylinderInit* src);
|
||||
s32 Collider_ResetCylinderAT(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetCylinderAC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetCylinderOC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_InitTrisElementDim(GlobalContext* ctxt, TriNorm* dim);
|
||||
s32 Collider_DestroyTrisElementDim(GlobalContext* ctxt, TriNorm* dim);
|
||||
s32 Collider_SetTrisElementDim(GlobalContext* ctxt, TriNorm* dim, ColliderTrisElementDimInit* src);
|
||||
s32 Collider_InitTrisElement(GlobalContext* ctxt, ColliderTrisElement* element);
|
||||
s32 Collider_DestroyTrisElement(GlobalContext* ctxt, ColliderTrisElement* element);
|
||||
s32 Collider_SetTrisElement(GlobalContext* ctxt, ColliderTrisElement* element, ColliderTrisElementInit* src);
|
||||
s32 Collider_ResetTrisElementAT(GlobalContext* ctxt, ColliderTrisElement* element);
|
||||
s32 Collider_ResetTrisElementAC(GlobalContext* ctxt, ColliderTrisElement* element);
|
||||
s32 Collider_ResetTrisElementOC(GlobalContext* ctxt, ColliderTrisElement* element);
|
||||
s32 Collider_InitTris(GlobalContext* ctxt, ColliderTris* tris);
|
||||
s32 Collider_FreeTris(GlobalContext* ctxt, ColliderTris* tris);
|
||||
s32 Collider_DestroyTris(GlobalContext* ctxt, ColliderTris* tris);
|
||||
s32 Collider_SetTrisAllocType1(GlobalContext* ctxt, ColliderTris* tris, Actor* actor, ColliderTrisInitType1* src);
|
||||
s32 Collider_SetTris(GlobalContext* ctxt, ColliderTris* triGroup, Actor* actor, ColliderTrisInit* src, ColliderTrisElement* tris);
|
||||
s32 Collider_InitAndSetTris(GlobalContext* ctxt, ColliderTris* tris, Actor* actor, ColliderTrisInit* src, ColliderTrisElement* elements);
|
||||
s32 Collider_ResetTrisAT(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetTrisAC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetTrisOC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_InitQuadDim(GlobalContext* ctxt, ColliderQuadDim* dim);
|
||||
s32 Collider_DestroyQuadDim(GlobalContext* ctxt, ColliderQuadDim* dim);
|
||||
s32 Collider_ResetQuadACDist(GlobalContext* ctxt, ColliderQuadDim* dim);
|
||||
void Collider_SetQuadMidpoints(ColliderQuadDim* dim);
|
||||
s32 Collider_SetQuadDim(GlobalContext* ctxt, ColliderQuadDim* dim, ColliderQuadDimInit* init);
|
||||
s32 Collider_InitQuad(GlobalContext* ctxt, ColliderQuad* collider);
|
||||
s32 Collider_DestroyQuad(GlobalContext* ctxt, ColliderQuad* collider);
|
||||
s32 Collider_SetQuadType1(GlobalContext* ctxt, ColliderQuad* collider, Actor* actor, ColliderQuadInitType1* src);
|
||||
s32 Collider_SetQuad(GlobalContext* ctxt, ColliderQuad* collider, Actor* actor, ColliderQuadInit* src);
|
||||
s32 Collider_InitAndSetQuad(GlobalContext* ctxt, ColliderQuad* collider, Actor* actor, ColliderQuadInit* src);
|
||||
s32 Collider_ResetQuadAT(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetQuadAC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetQuadOC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_QuadSetNearestAC(GlobalContext* ctxt, ColliderQuad* quad, Vec3f* hitPos);
|
||||
s32 Collider_InitSphere(GlobalContext* ctxt, ColliderSphere* collider);
|
||||
s32 Collider_DestroySphere(GlobalContext* ctxt, ColliderSphere* collider);
|
||||
s32 Collider_SetSphere(GlobalContext* ctxt, ColliderSphere* collider, Actor* actor, ColliderSphereInit* src);
|
||||
s32 Collider_InitAndSetSphere(GlobalContext* ctxt, ColliderSphere* collider, Actor* actor, ColliderSphereInit* src);
|
||||
s32 Collider_ResetSphereAT(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetSphereAC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_ResetSphereOC(GlobalContext* ctxt, Collider* collider);
|
||||
s32 Collider_InitLine(GlobalContext* ctxt, OcLine* line);
|
||||
s32 Collider_DestroyLine(GlobalContext* ctxt, OcLine* line);
|
||||
s32 Collider_SetLinePoints(GlobalContext* ctxt, OcLine* line, Vec3f* a, Vec3f* b);
|
||||
s32 Collider_SetLine(GlobalContext* ctxt, OcLine* line, OcLine* src);
|
||||
s32 Collider_ResetLineOC(GlobalContext* ctxt, OcLine* line);
|
||||
void CollisionCheck_InitContext(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_DestroyContext(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_ClearContext(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_EnableSAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_DisableSAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_SetAT(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetAT_SAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetAC_SAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetOC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetOC_SAC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetOCLine(GlobalContext* ctxt, CollisionCheckContext* colCtxt, OcLine* line);
|
||||
s32 CollisionCheck_SkipTouch(ColliderInfo* info);
|
||||
s32 CollisionCheck_SkipBump(ColliderInfo* info);
|
||||
s32 CollisionCheck_NoSharedFlags(ColliderInfo* toucher, ColliderInfo* bumper);
|
||||
void CollisionCheck_NoBlood(GlobalContext* ctxt, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_BlueBlood(GlobalContext* ctxt, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_GreenBlood(GlobalContext* ctxt, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_WaterBurst(GlobalContext* ctxt, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_RedBlood(GlobalContext* ctxt, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_RedBloodUnused(GlobalContext* ctxt, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_HitSolid(GlobalContext* ctxt, ColliderInfo* info, Collider* collider, Vec3f* hitPos);
|
||||
s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderInfo* acInfo);
|
||||
void CollisionCheck_HitEffects(GlobalContext* ctxt, Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, Vec3f* hitPos);
|
||||
void CollisionCheck_SetBounce(Collider* at, Collider* ac);
|
||||
s32 CollisionCheck_SetATvsAC(GlobalContext* ctxt, Collider* at, ColliderInfo* atInfo, Vec3f* atPos, Collider* ac, ColliderInfo* acInfo, Vec3f* acPos, Vec3f* hitPos);
|
||||
void CollisionCheck_TrisAvgPoint(ColliderTrisElement* tri, Vec3f* avg);
|
||||
void CollisionCheck_QuadAvgPoint(ColliderQuad* quad, Vec3f* avg);
|
||||
void CollisionCheck_AC_JntSphVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsTris(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsTris(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsTris(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsTris(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsCylinder(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsTris(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_SetJntSphHitFX(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetCylHitFX(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetTrisHitFX(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetQuadHitFX(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetSphereHitFX(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetHitEffects(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_AC(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* colAT);
|
||||
void CollisionCheck_AT(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_GetMassType(u8 mass);
|
||||
void CollisionCheck_SetOCvsOC(GlobalContext* ctxt, Collider* left, ColliderInfo* leftInfo, Vec3f* leftPos, Collider* right, ColliderInfo* rightInfo, Vec3f* rightPos, f32 overlap);
|
||||
void CollisionCheck_OC_JntSphVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_JntSphVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_JntSphVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
s32 CollisionCheck_SkipOC(Collider* collider);
|
||||
s32 CollisionCheck_Incompatible(Collider* left, Collider* right);
|
||||
void CollisionCheck_OC(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_InitInfo(CollisionCheckInfo* info);
|
||||
void CollisionCheck_ResetDamage(CollisionCheckInfo* info);
|
||||
void CollisionCheck_SetInfoNoDamageTable(CollisionCheckInfo* info, CollisionCheckInfoInit* init);
|
||||
void CollisionCheck_SetInfo(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit* init);
|
||||
void CollisionCheck_SetInfo2(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit2* init);
|
||||
void CollisionCheck_SetInfoGetDamageTable(CollisionCheckInfo* info, s32 index, CollisionCheckInfoInit2* init);
|
||||
void CollisionCheck_ApplyDamage(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider, ColliderInfo* info);
|
||||
void CollisionCheck_ApplyDamageJntSph(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageCyl(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageTris(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageQuad(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageSphere(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_Damage(GlobalContext* ctxt, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_LineOC_JntSph(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC_Cyl(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC_Sphere(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Vec3f* a, Vec3f* b, Actor** exclusions, s32 numExclusions);
|
||||
s32 CollisionCheck_LineOCCheckAll(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOCCheck(GlobalContext* ctxt, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b, Actor** exclusions, s32 numExclusions);
|
||||
void Collider_UpdateCylinder(Actor* actor, ColliderCylinder* collider);
|
||||
void Collider_SetCylinderPosition(ColliderCylinder* collider, Vec3s* pos);
|
||||
void Collider_SetQuadVertices(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
|
||||
void Collider_SetTrisVertices(ColliderTris* collider, s32 index, Vec3f* a, Vec3f* b, Vec3f* c);
|
||||
void Collider_SetTrisDim(GlobalContext* ctxt, ColliderTris* collider, s32 index, ColliderTrisElementDimInit* init);
|
||||
void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider);
|
||||
void Collider_UpdateSpheresElement(ColliderJntSph* collider, s32 index, Actor* actor);
|
||||
void Collider_UpdateSphere(s32 limb, ColliderSphere* collider);
|
||||
void CollisionCheck_SpawnRedBlood(GlobalContext* ctxt, Vec3f* v);
|
||||
void CollisionCheck_SpawnWaterDroplets(GlobalContext* ctxt, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticles(GlobalContext* ctxt, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesMetal(GlobalContext* ctxt, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesMetalSound(GlobalContext* ctxt, Vec3f* v, Vec3f* pos);
|
||||
void CollisionCheck_SpawnShieldParticlesMetal2(GlobalContext* ctxt, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesWood(GlobalContext* ctxt, Vec3f* v, Vec3f* pos);
|
||||
s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1, Vec3f* out2);
|
||||
void func_800E8EA0(GlobalContext* ctxt, Actor* actor, u16 param_3);
|
||||
s32 nop_800E8ED0(UNK_TYPE4 param_1);
|
||||
void nop_800E8EE0(UNK_TYPE4 param_1);
|
||||
@@ -2268,7 +2268,7 @@ s32 func_801240C8(ActorPlayer* player);
|
||||
// void func_80125D4C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801262C8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801263FC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
void func_80126440(GlobalContext* globalCtx, ColCommon* param_2, s32* param_3, Vec3f* param_4, Vec3f* param_5);
|
||||
void func_80126440(GlobalContext* globalCtx, Collider* param_2, s32* param_3, Vec3f* param_4, Vec3f* param_5);
|
||||
// void func_801265C8(void);
|
||||
// void func_8012669C(void);
|
||||
// void func_80126808(void);
|
||||
@@ -2547,7 +2547,7 @@ void SkelAnime_DrawSV(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbD
|
||||
void func_80134148(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor, RSPMatrix** mtx);
|
||||
void func_801343C0(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor);
|
||||
void SkelAnime_AnimateFrame(AnimationHeader* animationSeg, s32 currentFrame, s32 limbCount, Vec3s* dst);
|
||||
s16 SkelAnime_GetTotalFrames(GenericAnimationHeader *animationSeg);
|
||||
s16 SkelAnime_GetTotalFrames(GenericAnimationHeader* animationSeg);
|
||||
s16 SkelAnime_GetFrameCount(GenericAnimationHeader* animationSeg);
|
||||
Gfx* SkelAnime_Draw2Limb(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable, OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
@@ -2559,8 +2559,8 @@ s16 SkelAnime_GetTotalFrames2(GenericAnimationHeader* animationSeg);
|
||||
s16 SkelAnime_GetFrameCount2(GenericAnimationHeader* animationSeg);
|
||||
void SkelAnime_InterpolateVec3s(s32 limbCount, Vec3s* dst, Vec3s* vec2, Vec3s* vec3, f32 unkf);
|
||||
void SkelAnime_AnimationCtxReset(AnimationContext* animationCtx);
|
||||
void func_801358D4(GlobalContext *globalCtx);
|
||||
void func_801358F4(GlobalContext *globalCtx);
|
||||
void func_801358D4(GlobalContext* globalCtx);
|
||||
void func_801358F4(GlobalContext* globalCtx);
|
||||
AnimationEntry* SkelAnime_NextEntry(AnimationContext* animationCtx, AnimationType type);
|
||||
void SkelAnime_LoadLinkAnimetion(GlobalContext* globalCtx, LinkAnimetionEntry* linkAnimetionSeg, s32 frame, s32 limbCount, void* ram);
|
||||
void SkelAnime_LoadAnimationType1(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src);
|
||||
@@ -3336,28 +3336,28 @@ f32 Math3D_NormalizedSignedDistanceFromPlane(f32 normX, f32 normY, f32 normZ, f3
|
||||
// void func_8017D220(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_8017D2FC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8);
|
||||
// void func_8017D404(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11);
|
||||
void Math3D_TriSetCoords(ColTriParams* tri, Vec3f* pointA, Vec3f* pointB, Vec3f* pointC);
|
||||
u32 Math3D_IsPointInSphere(ColSphereCollisionInfo* sphere, Vec3f* point);
|
||||
void Math3D_TriSetCoords(TriNorm* tri, Vec3f* pointA, Vec3f* pointB, Vec3f* pointC);
|
||||
u32 Math3D_IsPointInSphere(Sphere16* sphere, Vec3f* point);
|
||||
// void func_8017D668(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9);
|
||||
// void func_8017D7C0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
|
||||
// void func_8017D814(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_8017D91C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_8017DA24(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
s32 Math3D_ColSphereLineSeg(ColSphereCollisionInfo* sphere, LineSegment* line);
|
||||
void func_8017DD34(ColSphereCollisionInfo* sphere, ColTriParams* tri, Vec3f* pfParm3);
|
||||
s32 Math3D_ColSphereTri(ColSphereCollisionInfo* sphere, ColTriParams* tri, Vec3f* uParm3);
|
||||
s32 Math3D_ColSphereLineSeg(Sphere16* sphere, LineSegment* line);
|
||||
void func_8017DD34(Sphere16* sphere, TriNorm* tri, Vec3f* pfParm3);
|
||||
s32 Math3D_ColSphereTri(Sphere16* sphere, TriNorm* tri, Vec3f* uParm3);
|
||||
// void func_8017E294(void);
|
||||
// void func_8017E350(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
s32 Math3D_ColCylinderTri(ColCylinderParams* cylinder, ColTriParams* tri, Vec3f* pzParm3);
|
||||
s32 Math3D_ColCylinderTri(Cylinder16* cylinder, TriNorm* tri, Vec3f* pzParm3);
|
||||
// void func_8017F1A0(void);
|
||||
s32 Math3D_ColSphereSphere(ColSphereCollisionInfo* sphere1, ColSphereCollisionInfo* sphere2);
|
||||
s32 Math3D_ColSphereSphereIntersect(ColSphereCollisionInfo* sphere1, ColSphereCollisionInfo* sphere2, f32* intersectAmount);
|
||||
s32 Math3D_ColSphereSphereIntersectAndDistance(ColSphereCollisionInfo* sphere1, ColSphereCollisionInfo* sphere2, f32* intersectAmount, f32* dist);
|
||||
s32 Math3D_ColSphereCylinderDistance(ColSphereCollisionInfo* sphere, ColCylinderParams* cylinder, f32* dist);
|
||||
s32 Math3D_ColSphereCylinderDistanceAndAmount(ColSphereCollisionInfo* sphere, ColCylinderParams* cylinder, f32* dist, f32* intersectAmount);
|
||||
s32 Math3D_ColCylinderCylinderAmount(ColCylinderParams* cylinder1, ColCylinderParams* cylinder2, f32* intersectAmount);
|
||||
s32 Math3D_ColCylinderCylinderAmountAndDistance(ColCylinderParams* cylinder1, ColCylinderParams* cylinder2, f32* intersectAmount, f32* dist);
|
||||
s32 Math3d_ColTriTri(ColTriParams* tri1, ColTriParams* tri2, Vec3f* uParm3);
|
||||
s32 Math3D_ColSphereSphere(Sphere16* sphere1, Sphere16* sphere2);
|
||||
s32 Math3D_ColSphereSphereIntersect(Sphere16* sphere1, Sphere16* sphere2, f32* intersectAmount);
|
||||
s32 Math3D_ColSphereSphereIntersectAndDistance(Sphere16* sphere1, Sphere16* sphere2, f32* intersectAmount, f32* dist);
|
||||
s32 Math3D_ColSphereCylinderDistance(Sphere16* sphere, Cylinder16* cylinder, f32* dist);
|
||||
s32 Math3D_ColSphereCylinderDistanceAndAmount(Sphere16* sphere, Cylinder16* cylinder, f32* dist, f32* intersectAmount);
|
||||
s32 Math3D_ColCylinderCylinderAmount(Cylinder16* cylinder1, Cylinder16* cylinder2, f32* intersectAmount);
|
||||
s32 Math3D_ColCylinderCylinderAmountAndDistance(Cylinder16* cylinder1, Cylinder16* cylinder2, f32* intersectAmount, f32* dist);
|
||||
s32 Math3d_ColTriTri(TriNorm* tri1, TriNorm* tri2, Vec3f* uParm3);
|
||||
// void func_8017F9C0(void);
|
||||
// void func_8017FA34(void);
|
||||
// void func_8017FAA8(void);
|
||||
@@ -3833,7 +3833,7 @@ void func_8019E014(void);
|
||||
void play_sound(u16 param_1);
|
||||
void func_8019F128(u16 param_1);
|
||||
// void func_8019F170(void);
|
||||
void func_8019F1C0(UNK_TYPE4 param_1, u16 param_2);
|
||||
void func_8019F1C0(Vec3f* pos, u16 sfxId);
|
||||
// void func_8019F208(void);
|
||||
// void func_8019F230(void);
|
||||
// void func_8019F258(void);
|
||||
|
||||
+62
-79
@@ -358,11 +358,11 @@ extern DmaEntry dmadata[1568];
|
||||
// extern UNK_TYPE1 D_801AAAB0;
|
||||
// extern UNK_TYPE1 D_801AD370;
|
||||
extern ActorInit En_A_Obj_InitVars;
|
||||
extern ColCylinderInit enAObjCylinderInit;
|
||||
extern ColliderCylinderInit enAObjCylinderInit;
|
||||
extern InitChainEntry enAObjInitVar;
|
||||
extern u32 enAObjDisplayLists[2];
|
||||
extern ActorInit En_Item00_InitVars;
|
||||
extern ColCylinderInit enItem00CylinderInit;
|
||||
extern ColliderCylinderInit enItem00CylinderInit;
|
||||
extern InitChainEntry enItem00InitVars[1];
|
||||
// extern UNK_TYPE1 D_801ADF10;
|
||||
// extern UNK_TYPE1 D_801ADF14;
|
||||
@@ -856,39 +856,32 @@ extern camera_update_func cameraUpdateFuncs[71];
|
||||
// extern UNK_TYPE4 D_801B9ED4;
|
||||
// extern UNK_TYPE4 D_801B9F04;
|
||||
// extern UNK_TYPE2 D_801B9F0C;
|
||||
// extern UNK_TYPE4 D_801B9F10;
|
||||
extern s800E03A0 D_801B9F20[23];
|
||||
extern f32 gDamageMultipliers[16];
|
||||
extern ColCommon defaultColCommon;
|
||||
extern ColTouch defaultColTouch;
|
||||
extern ColBump defaultColBump;
|
||||
extern ColBodyInfo defaultColBodyInfo;
|
||||
extern ColSphereParams defaultColSphereInfo;
|
||||
extern ColCylinderParams defaultColCylinderInfo;
|
||||
extern ColTriParams defaultColTriParams;
|
||||
extern ColQuadParams defaultColQuadParams;
|
||||
// extern UNK_TYPE1 D_801BA32C;
|
||||
extern collision_add_func collisionAddATFuncs[5];
|
||||
extern collision_add_func collisionAddACFuncs[5];
|
||||
extern collision_add_func collisionAddOTFuncs[5];
|
||||
extern UNK_PTR D_801BA374;
|
||||
// extern UNK_TYPE1 D_801BA38C;
|
||||
// extern UNK_TYPE1 D_801BA38D;
|
||||
extern UNK_PTR D_801BA3A8;
|
||||
extern collision_func collisionFuncTableATwithAC[25];
|
||||
extern collision_func collisionFuncTableOTwithOT[25];
|
||||
extern CollisionCheckInfo D_801BA484;
|
||||
extern UNK_PTR D_801BA4A0;
|
||||
// extern UNK_TYPE1 D_801BA4B4;
|
||||
extern EffShieldParticleInit D_801BA4C8;
|
||||
// extern UNK_TYPE1 D_801BA4F6;
|
||||
// extern UNK_TYPE1 D_801BA4F8;
|
||||
// extern UNK_TYPE1 D_801BA4FA;
|
||||
extern EffShieldParticleInit D_801BA508;
|
||||
// extern UNK_TYPE1 D_801BA536;
|
||||
// extern UNK_TYPE1 D_801BA538;
|
||||
// extern UNK_TYPE1 D_801BA53A;
|
||||
// extern UNK_TYPE1 D_801BA550;
|
||||
extern UNK_TYPE4 D_801B9F10;
|
||||
extern DamageTable sDamageTablePresets[23];
|
||||
extern f32 damageMultipliers[16];
|
||||
extern Collider defaultCollider;
|
||||
extern ColliderTouch defaultColliderTouch;
|
||||
extern ColliderBump defaultColliderBump;
|
||||
extern ColliderInfo defaultColliderInfo;
|
||||
extern ColliderJntSphElementDim defaultColliderJntSphElementDim;
|
||||
extern Cylinder16 defaultColliderCylinderDim;
|
||||
extern TriNorm defaultColliderTrisElementDim;
|
||||
extern ColliderQuadDim defaultColliderQuadDim;
|
||||
extern Vec3f defaultLinePoint;
|
||||
extern ColChkResetFunc sATResetFuncs[COLSHAPE_MAX];
|
||||
extern ColChkResetFunc sACResetFuncs[COLSHAPE_MAX];
|
||||
extern ColChkResetFunc sOCResetFuncs[COLSHAPE_MAX];
|
||||
extern ColChkBloodFunc sBloodFuncs[6];
|
||||
extern HitInfo sHitInfo[14];
|
||||
extern ColChkApplyFunc sColChkApplyFuncs[COLSHAPE_MAX];
|
||||
extern ColChkVsFunc sACVsFuncs[COLSHAPE_MAX][COLSHAPE_MAX];
|
||||
extern ColChkVsFunc sOCVsFuncs[COLSHAPE_MAX][COLSHAPE_MAX];
|
||||
extern CollisionCheckInfo defaultColChkInfo;
|
||||
extern ColChkApplyFunc sApplyDamageFuncs[COLSHAPE_MAX];
|
||||
extern ColChkLineFunc sOCLineCheckFuncs[COLSHAPE_MAX];
|
||||
extern EffShieldParticleInit shieldParticleInitMetal;
|
||||
extern EffShieldParticleInit shieldParticleInitWood;
|
||||
extern UNK_TYPE1 D_801BA550;
|
||||
// extern UNK_TYPE1 D_801BA750;
|
||||
// extern UNK_TYPE1 D_801BA790;
|
||||
// extern UNK_TYPE1 D_801BA7F0;
|
||||
@@ -940,7 +933,7 @@ extern Actor* actorCutsceneCurrentCutsceneActor;
|
||||
extern GlobalContext* actorCutscenesGlobalCtxt;
|
||||
extern s16 actorCutsceneReturnCamera;
|
||||
extern s16 D_801BD8C6;
|
||||
extern ColCylinderInit fireObjCollisionInit;
|
||||
extern ColliderCylinderInit fireObjCollisionInit;
|
||||
extern FireObjLightParams D_801BD8FC[2];
|
||||
extern GameStateOverlay initialGameStateInfo;
|
||||
extern GameStateOverlay D_801BD940;
|
||||
@@ -3866,8 +3859,8 @@ extern f32 D_801EDB98;
|
||||
extern f32 D_801EDB9C;
|
||||
extern f32 D_801EDBA0;
|
||||
// extern UNK_TYPE1 D_801EDBA4;
|
||||
extern ColSphereCollisionInfo D_801EDBA8;
|
||||
extern ColTriParams D_801EDBB0;
|
||||
extern Sphere16 D_801EDBA8;
|
||||
extern TriNorm D_801EDBB0;
|
||||
// extern UNK_TYPE1 D_801EDBD4;
|
||||
// extern UNK_TYPE1 D_801EDBD8;
|
||||
// extern UNK_TYPE1 D_801EDBDC;
|
||||
@@ -3894,54 +3887,44 @@ extern s16 D_801EDBF0;
|
||||
// extern UNK_TYPE1 D_801EDDE0;
|
||||
// extern UNK_TYPE1 D_801EDDF0;
|
||||
extern Vec3f D_801EDE00;
|
||||
// extern UNK_TYPE1 D_801EDE10;
|
||||
extern Vec3f D_801EDE10;
|
||||
extern Vec3f D_801EDE20;
|
||||
// extern UNK_TYPE1 D_801EDE30;
|
||||
// extern UNK_TYPE1 D_801EDE40;
|
||||
// extern UNK_TYPE1 D_801EDE78;
|
||||
// extern UNK_TYPE1 D_801EDEB0;
|
||||
// extern UNK_TYPE1 D_801EDEBC;
|
||||
// extern UNK_TYPE1 D_801EDEC8;
|
||||
// extern UNK_TYPE1 D_801EDF00;
|
||||
// extern UNK_TYPE1 D_801EDF38;
|
||||
// extern UNK_TYPE1 D_801EDF48;
|
||||
// extern UNK_TYPE1 D_801EDF58;
|
||||
// extern UNK_TYPE1 D_801EDF90;
|
||||
// extern UNK_TYPE1 D_801EDFC8;
|
||||
// extern UNK_TYPE1 D_801EDFD4;
|
||||
// extern UNK_TYPE1 D_801EDFE0;
|
||||
// extern UNK_TYPE1 D_801EDFF0;
|
||||
// extern UNK_TYPE1 D_801EE000;
|
||||
// extern UNK_TYPE1 D_801EE038;
|
||||
// extern UNK_TYPE1 D_801EE070;
|
||||
// extern UNK_TYPE1 D_801EE0A4;
|
||||
// extern UNK_TYPE1 D_801EE0D8;
|
||||
// extern UNK_TYPE1 D_801EE0E8;
|
||||
// extern UNK_TYPE1 D_801EE11C;
|
||||
// extern UNK_TYPE1 D_801EE150;
|
||||
// extern UNK_TYPE1 D_801EE188;
|
||||
// extern UNK_TYPE1 D_801EE1C0;
|
||||
// extern UNK_TYPE1 D_801EE1C4;
|
||||
// extern UNK_TYPE1 D_801EE1C8;
|
||||
// extern UNK_TYPE1 D_801EE1D0;
|
||||
// extern UNK_TYPE1 D_801EE1D4;
|
||||
// extern UNK_TYPE1 D_801EE1D8;
|
||||
// extern UNK_TYPE1 D_801EE1E0;
|
||||
// extern UNK_TYPE1 D_801EE1E4;
|
||||
// extern UNK_TYPE1 D_801EE1E8;
|
||||
// extern UNK_TYPE1 D_801EE1F0;
|
||||
extern Vec3f D_801EDE30;
|
||||
extern TriNorm D_801EDE40;
|
||||
extern TriNorm D_801EDE78;
|
||||
extern LineSegment D_801EDEB0;
|
||||
extern TriNorm D_801EDEC8;
|
||||
extern TriNorm D_801EDF00;
|
||||
extern Vec3f D_801EDF38;
|
||||
extern Vec3f D_801EDF48;
|
||||
extern TriNorm D_801EDF58;
|
||||
extern TriNorm D_801EDF90;
|
||||
extern LineSegment D_801EDFC8;
|
||||
extern Vec3f D_801EDFE0;
|
||||
extern Vec3f D_801EDFF0;
|
||||
extern TriNorm D_801EE000;
|
||||
extern TriNorm D_801EE038;
|
||||
extern TriNorm D_801EE070[2];
|
||||
extern Vec3f D_801EE0D8;
|
||||
extern TriNorm D_801EE0E8[2];
|
||||
extern TriNorm D_801EE150;
|
||||
extern TriNorm D_801EE188;
|
||||
extern Vec3f D_801EE1C0;
|
||||
extern Vec3f D_801EE1D0;
|
||||
extern Vec3f D_801EE1E0;
|
||||
extern Vec3f D_801EE1F0;
|
||||
// extern UNK_TYPE1 D_801EE1F4;
|
||||
// extern UNK_TYPE1 D_801EE1F8;
|
||||
extern EffSparkParams D_801EE200;
|
||||
extern ColTriParams D_801EE6C8;
|
||||
extern ColTriParams D_801EE700;
|
||||
extern TriNorm D_801EE6C8;
|
||||
extern TriNorm D_801EE700;
|
||||
extern EffSparkParams D_801EE738;
|
||||
extern EffSparkParams D_801EEC00;
|
||||
extern EffSparkParams D_801EF0C8;
|
||||
// extern UNK_TYPE1 D_801EF590;
|
||||
// extern UNK_TYPE1 D_801EF5C8;
|
||||
extern ColTriParams D_801EF600;
|
||||
extern ColTriParams D_801EF638;
|
||||
extern TriNorm D_801EF590;
|
||||
extern TriNorm D_801EF5C8;
|
||||
extern TriNorm D_801EF600;
|
||||
extern TriNorm D_801EF638;
|
||||
// extern UNK_TYPE1 D_801EF66D;
|
||||
extern SaveContext gSaveContext;
|
||||
// extern UNK_TYPE2 D_801F3F38;
|
||||
|
||||
+16
-23
@@ -446,10 +446,6 @@ typedef void(*osCreateThread_func)(void*);
|
||||
|
||||
typedef void*(*printf_func)(void*, char*, size_t);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ UNK_TYPE1 pad0[0x20];
|
||||
} s800E03A0; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ OSThread unk0;
|
||||
/* 0x1B0 */ s8 argCount;
|
||||
@@ -627,11 +623,6 @@ typedef struct {
|
||||
/* 0x12 */ OSContPad rel; // X/Y store adjusted
|
||||
} Input; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f a;
|
||||
/* 0x0C */ Vec3f b;
|
||||
} LineSegment; // size = 0x18
|
||||
|
||||
// Permanent save context, kept in regular save files
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 entranceIndex; // bits 0-3 : offset; 4-8: spawn index; 9-15: scene index
|
||||
@@ -1264,6 +1255,12 @@ typedef struct AudioThreadStruct AudioThreadStruct;
|
||||
|
||||
typedef struct GlobalContext GlobalContext;
|
||||
|
||||
typedef s32 (*ColChkResetFunc)(GlobalContext*, Collider*);
|
||||
typedef void (*ColChkBloodFunc)(GlobalContext*, Collider*, Vec3f*);
|
||||
typedef void (*ColChkApplyFunc)(GlobalContext*, CollisionCheckContext*, Collider*);
|
||||
typedef void (*ColChkVsFunc)(GlobalContext*, CollisionCheckContext*, Collider*, Collider*);
|
||||
typedef s32 (*ColChkLineFunc)(GlobalContext*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ GlobalContext* ctxt;
|
||||
/* 0x4 */ s32 type; // bitfield, highest set bit determines type
|
||||
@@ -1271,10 +1268,6 @@ typedef struct {
|
||||
/* 0xA */ s16 state; // 0 - stopped, 1 - active, 2 - setup
|
||||
} Quake2Context; // size = 0xC
|
||||
|
||||
typedef s32(*collision_add_func)(GlobalContext*, ColCommon*);
|
||||
|
||||
typedef void(*collision_func)(GlobalContext*, CollisionCheckContext*, ColCommon*, ColCommon*);
|
||||
|
||||
typedef void(*cutscene_update_func)(GlobalContext* ctxt, CutsceneContext* cCtxt);
|
||||
|
||||
typedef void(*draw_func)(GlobalContext* ctxt, s16 index);
|
||||
@@ -1526,7 +1519,7 @@ struct FireObj {
|
||||
/* 0x28 */ u8 flags; // bit 0 - ?, bit 1 - ?
|
||||
/* 0x29 */ UNK_TYPE1 pad29[0x1];
|
||||
/* 0x2A */ s16 ignitionDelay;
|
||||
/* 0x2C */ ColCylinder collision;
|
||||
/* 0x2C */ ColliderCylinder collision;
|
||||
/* 0x78 */ FireObjLight light;
|
||||
}; // size = 0x8B
|
||||
|
||||
@@ -1687,8 +1680,8 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ColQuad unk144;
|
||||
/* 0x1C4 */ ColQuad unk1C4;
|
||||
/* 0x144 */ ColliderQuad unk144;
|
||||
/* 0x1C4 */ ColliderQuad unk1C4;
|
||||
/* 0x244 */ Vec3f unk244;
|
||||
/* 0x250 */ f32 unk250;
|
||||
/* 0x254 */ f32 unk254;
|
||||
@@ -1711,9 +1704,9 @@ struct ActorEnBji01 {
|
||||
|
||||
struct ActorEnBom {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ColCylinder unk144;
|
||||
/* 0x190 */ ColSphereGroup unk190;
|
||||
/* 0x1B0 */ ColSphereGroupElement unk1B0[1];
|
||||
/* 0x144 */ ColliderCylinder unk144;
|
||||
/* 0x190 */ ColliderJntSph unk190;
|
||||
/* 0x1B0 */ ColliderJntSphElement unk1B0[1];
|
||||
/* 0x1F0 */ s16 unk1F0;
|
||||
/* 0x1F2 */ UNK_TYPE1 pad1F2[0x6];
|
||||
/* 0x1F8 */ u8 unk1F8;
|
||||
@@ -1741,7 +1734,7 @@ struct ActorEnFirefly {
|
||||
/* 0x2EC */ f32 unk2EC;
|
||||
/* 0x2F0 */ f32 unk2F0;
|
||||
/* 0x2F4 */ UNK_TYPE1 pad2F4[0x28];
|
||||
/* 0x31C */ ColSphere collision;
|
||||
/* 0x31C */ ColliderSphere collision;
|
||||
}; // size = 0x374
|
||||
|
||||
struct ActorEnTest {
|
||||
@@ -1771,8 +1764,8 @@ typedef struct {
|
||||
struct ActorObjBell {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ UNK_TYPE1 pad144[0x18];
|
||||
/* 0x15C */ ColSphere unk15C;
|
||||
/* 0x1B4 */ ColSphere unk1B4;
|
||||
/* 0x15C */ ColliderSphere unk15C;
|
||||
/* 0x1B4 */ ColliderSphere unk1B4;
|
||||
/* 0x20C */ UNK_TYPE1 pad20C[0x2];
|
||||
/* 0x20E */ s16 unk20E;
|
||||
/* 0x210 */ UNK_TYPE1 pad210[0x4];
|
||||
@@ -1782,7 +1775,7 @@ struct ActorObjBell {
|
||||
|
||||
struct ActorBgIknvObj {
|
||||
/* 0x000 */ DynaPolyActor bg;
|
||||
/* 0x15C */ ColCylinder collision;
|
||||
/* 0x15C */ ColliderCylinder collision;
|
||||
/* 0x1A8 */ u32 displayListAddr;
|
||||
/* 0x1AC */ ActorFunc updateFunc;
|
||||
}; // size = 0x1B0
|
||||
|
||||
+35
-18
@@ -6,6 +6,9 @@
|
||||
#include <z64collision_check.h>
|
||||
#include <unk.h>
|
||||
|
||||
#define MASS_IMMOVABLE 0xFF // Cannot be pushed by OC collisions
|
||||
#define MASS_HEAVY 0xFE // Can only be pushed by OC collisions with IMMOVABLE and HEAVY objects.
|
||||
|
||||
struct Actor;
|
||||
struct GlobalContext;
|
||||
struct LightMapper;
|
||||
@@ -19,9 +22,38 @@ typedef struct {
|
||||
} PosRot; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 table[32];
|
||||
/* 0x00 */ u8 attack[32];
|
||||
} DamageTable; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 health;
|
||||
/* 0x02 */ s16 cylRadius;
|
||||
/* 0x04 */ s16 cylHeight;
|
||||
/* 0x06 */ u8 mass;
|
||||
} CollisionCheckInfoInit;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 health;
|
||||
/* 0x02 */ s16 cylRadius;
|
||||
/* 0x04 */ s16 cylHeight;
|
||||
/* 0x06 */ s16 cylYShift;
|
||||
/* 0x08 */ u8 mass;
|
||||
} CollisionCheckInfoInit2;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ DamageTable* damageTable;
|
||||
/* 0x04 */ Vec3f displacement;
|
||||
/* 0x10 */ s16 cylRadius;
|
||||
/* 0x12 */ s16 cylHeight;
|
||||
/* 0x14 */ s16 cylYShift;
|
||||
/* 0x16 */ u8 mass;
|
||||
/* 0x17 */ u8 health;
|
||||
/* 0x18 */ u8 damage;
|
||||
/* 0x19 */ u8 damageEffect;
|
||||
/* 0x1A */ u8 atHitEffect;
|
||||
/* 0x1B */ u8 acHitEffect;
|
||||
} CollisionCheckInfo; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk0;
|
||||
/* 0x04 */ s32 unk4;
|
||||
@@ -43,21 +75,6 @@ typedef struct {
|
||||
/* 0x3A */ s16 unk3A;
|
||||
} ActorEnTest20C; // size = 0x3C
|
||||
|
||||
// Related to collision?
|
||||
typedef struct {
|
||||
/* 0x00 */ DamageTable* damageTable;
|
||||
/* 0x04 */ Vec3f displacement; // Amount to correct velocity (0x5C) by when colliding into a body
|
||||
/* 0x10 */ s16 cylRadius; // Used for various purposes
|
||||
/* 0x12 */ s16 cylHeight; // Used for various purposes
|
||||
/* 0x14 */ s16 cylYShift; // Unused. Purpose inferred from Cylinder16 and CollisionCheck_CylSideVsLineSeg
|
||||
/* 0x16 */ u8 mass; // Used to compute displacement for OC collisions
|
||||
/* 0x17 */ u8 health; // Note: some actors may use their own health variable instead of this one
|
||||
/* 0x18 */ u8 damage; // Amount to decrement health by
|
||||
/* 0x19 */ u8 damageEffect; // Stores what effect should occur when hit by a weapon
|
||||
/* 0x1A */ u8 atHitEffect; // Stores what effect should occur when AT connects with an AC
|
||||
/* 0x1B */ u8 acHitEffect; // Stores what effect should occur when AC is touched by an AT
|
||||
} CollisionCheckInfo; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 id;
|
||||
/* 0x02 */ u8 type;
|
||||
@@ -248,14 +265,14 @@ typedef struct {
|
||||
/* 0x150 */ s16 unk150;
|
||||
/* 0x152 */ s16 unk152;
|
||||
/* 0x154 */ f32 unk154;
|
||||
/* 0x158 */ ColCylinder collision;
|
||||
/* 0x158 */ ColliderCylinder collision;
|
||||
/* 0x1A4 */ UNK_TYPE1 pad1A4[0x4];
|
||||
} ActorEnItem00; // size = 0x1A8
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ActorFunc update;
|
||||
/* 0x148 */ ColCylinder collision;
|
||||
/* 0x148 */ ColliderCylinder collision;
|
||||
/* 0x194 */ UNK_TYPE1 pad194[0x14];
|
||||
} ActorEnAObj; // size = 0x1A8
|
||||
|
||||
|
||||
+329
-166
@@ -8,224 +8,387 @@
|
||||
struct Actor;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 unk0;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x5 */ u8 unk5;
|
||||
} ColBumpInit; // size = 0x8
|
||||
/* 0x00 */ struct Actor* actor; // Attached actor
|
||||
/* 0x04 */ struct Actor* at; // Actor attached to what it collided with as an AT collider.
|
||||
/* 0x08 */ struct Actor* ac; // Actor attached to what it collided with as an AC collider.
|
||||
/* 0x0C */ struct Actor* oc; // Actor attached to what it collided with as an OC collider.
|
||||
/* 0x10 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x11 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x12 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x13 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
|
||||
/* 0x14 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
|
||||
/* 0x15 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} Collider; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x1 */ u8 unk1;
|
||||
/* 0x2 */ u8 unk2;
|
||||
/* 0x3 */ u8 unk3;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x5 */ u8 type;
|
||||
} ColCommonInit; // size = 0x6
|
||||
/* 0x00 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
|
||||
/* 0x01 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x02 */ u8 acFlags; // Information flags for OC collisions.
|
||||
/* 0x03 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x04 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
|
||||
/* 0x05 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} ColliderInit; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 collidesWith;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x5 */ u8 damage;
|
||||
} ColTouch; // size = 0x8
|
||||
/* 0x00 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
|
||||
/* 0x01 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x02 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x03 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x04 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} ColliderInitType1; // size = 0x05
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 unk0;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x5 */ u8 unk5;
|
||||
} ColTouchInit; // size = 0x8
|
||||
/* 0x00 */ struct Actor* actor; // Attached actor
|
||||
/* 0x04 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x05 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x06 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x07 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} ColliderInitToActor; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 unk0;
|
||||
/* 0x04 */ ColTouchInit unk4;
|
||||
/* 0x0C */ ColBumpInit unkC;
|
||||
/* 0x14 */ u8 unk14;
|
||||
/* 0x15 */ u8 unk15;
|
||||
/* 0x16 */ u8 unk16;
|
||||
} ColBodyInfoInit; // size = 0x18
|
||||
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 damage; // Damage or Stun Timer
|
||||
} ColliderTouch; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 collidesWith;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x5 */ u8 unk5;
|
||||
/* 0x6 */ Vec3s unk6;
|
||||
} ColBump; // size = 0xC
|
||||
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 damage; // Damage or Stun Timer
|
||||
} ColliderTouchInit; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 radius;
|
||||
/* 0x2 */ s16 height;
|
||||
/* 0x4 */ s16 yOffset;
|
||||
/* 0x6 */ Vec3s loc;
|
||||
} ColCylinderParams; // size = 0xC
|
||||
/* 0x00 */ u32 dmgFlags; // Bumper damage type flags.
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 defense; // Damage Resistance
|
||||
/* 0x06 */ Vec3s hitPos; // Point of contact
|
||||
} ColliderBump; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f pointA;
|
||||
/* 0x0C */ Vec3f pointB;
|
||||
/* 0x18 */ Vec3f pointC;
|
||||
/* 0x24 */ Vec3f pointD;
|
||||
/* 0x30 */ Vec3s unk30;
|
||||
/* 0x36 */ Vec3s unk36;
|
||||
/* 0x3C */ f32 unk3C;
|
||||
} ColQuadParams; // size = 0x40
|
||||
/* 0x00 */ u32 dmgFlags; // Bumper exclusion mask
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 defense; // Damage Resistance
|
||||
} ColliderBumpInit; // size = 0x08
|
||||
|
||||
typedef struct ColliderInfo {
|
||||
/* 0x00 */ ColliderTouch toucher; // Damage properties when acting as an AT collider
|
||||
/* 0x08 */ ColliderBump bumper; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
|
||||
/* 0x15 */ u8 toucherFlags; // Information flags for AT collisions
|
||||
/* 0x16 */ u8 bumperFlags; // Information flags for AC collisions
|
||||
/* 0x17 */ u8 ocElemFlags; // Information flags for OC collisions
|
||||
/* 0x18 */ Collider* atHit; // object touching this element's AT collider
|
||||
/* 0x1C */ Collider* acHit; // object touching this element's AC collider
|
||||
/* 0x20 */ struct ColliderInfo* atHitInfo; // element that hit the AT collider
|
||||
/* 0x24 */ struct ColliderInfo* acHitInfo; // element that hit the AC collider
|
||||
} ColliderInfo; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f pointA;
|
||||
/* 0x0C */ Vec3f pointB;
|
||||
/* 0x18 */ Vec3f pointC;
|
||||
/* 0x24 */ Vec3f pointD;
|
||||
} ColQuadParamsInit; // size = 0x30
|
||||
/* 0x00 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
|
||||
/* 0x04 */ ColliderTouchInit toucher; // Damage properties when acting as an AT collider
|
||||
/* 0x0C */ ColliderBumpInit bumper; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 toucherFlags; // Information flags for AT collisions
|
||||
/* 0x15 */ u8 bumperFlags; // Information flags for AC collisions
|
||||
/* 0x16 */ u8 ocElemFlags; // Information flags for OC collisions
|
||||
} ColliderInfoInit; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ Vec3s loc;
|
||||
/* 0x6 */ s16 radius;
|
||||
} ColSphereCollisionInfo; // size = 0x8
|
||||
/* 0x00 */ Sphere16 modelSphere; // model space sphere
|
||||
/* 0x08 */ Sphere16 worldSphere; // world space sphere
|
||||
/* 0x10 */ f32 scale; // worldsphere = modelsphere * scale * 0.01
|
||||
/* 0x14 */ u8 limb; // attached limb
|
||||
} ColliderJntSphElementDim; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s unk0;
|
||||
/* 0x06 */ s16 unk6;
|
||||
/* 0x08 */ ColSphereCollisionInfo colInfo;
|
||||
/* 0x10 */ f32 unk10;
|
||||
/* 0x14 */ u8 unk14;
|
||||
/* 0x15 */ UNK_TYPE1 pad15[0x3];
|
||||
} ColSphereParams; // size = 0x18
|
||||
/* 0x00 */ u8 limb; // attached limb
|
||||
/* 0x02 */ Sphere16 modelSphere; // model space sphere
|
||||
/* 0x0A */ s16 scale; // world space sphere = model * scale * 0.01
|
||||
} ColliderJntSphElementDimInit; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x1 */ ColSphereCollisionInfo unk1;
|
||||
/* 0xA */ s16 unkA;
|
||||
} ColSphereParamsInit; // size = 0xC
|
||||
/* 0x00 */ ColliderInfo info;
|
||||
/* 0x28 */ ColliderJntSphElementDim dim;
|
||||
} ColliderJntSphElement; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f pointA;
|
||||
/* 0x0C */ Vec3f pointB;
|
||||
/* 0x18 */ Vec3f pointC;
|
||||
/* 0x24 */ Vec3f unitNormal;
|
||||
/* 0x30 */ f32 unk30;
|
||||
} ColTriParams; // size = 0x34
|
||||
/* 0x00 */ ColliderInfoInit info;
|
||||
/* 0x18 */ ColliderJntSphElementDimInit dim;
|
||||
} ColliderJntSphElementInit; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f unk0;
|
||||
/* 0x0C */ Vec3f unkC;
|
||||
/* 0x18 */ Vec3f unk18;
|
||||
} ColTriParamsInit; // size = 0x24
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ s32 count;
|
||||
/* 0x1C */ ColliderJntSphElement* elements;
|
||||
} ColliderJntSph; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommonInit base;
|
||||
/* 0x08 */ ColBodyInfoInit body;
|
||||
/* 0x20 */ ColCylinderParams info;
|
||||
} ColCylinderInit; // size = 0x2C
|
||||
/* 0x0 */ ColliderInit base;
|
||||
/* 0x8 */ s32 count;
|
||||
/* 0xC */ ColliderJntSphElementInit* elements;
|
||||
} ColliderJntSphInit; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommonInit base;
|
||||
/* 0x08 */ ColBodyInfoInit body;
|
||||
/* 0x20 */ ColQuadParamsInit params;
|
||||
} ColQuadInit; // size = 0x50
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderJntSphElementInit* elements;
|
||||
} ColliderJntSphInitType1; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColBodyInfoInit body;
|
||||
/* 0x18 */ ColSphereParamsInit params;
|
||||
} ColSphereGroupElementInit; // size = 0x24
|
||||
/* 0x00 */ ColliderInitToActor base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderJntSphElementInit* elements;
|
||||
} ColliderJntSphInitToActor; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ ColCommonInit base;
|
||||
/* 0x6 */ UNK_TYPE1 pad6[0x2];
|
||||
/* 0x8 */ u32 count;
|
||||
/* 0xC */ ColSphereGroupElementInit* init;
|
||||
} ColSphereGroupInit; // size = 0x10
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ ColliderInfo info;
|
||||
/* 0x40 */ Cylinder16 dim;
|
||||
} ColliderCylinder; // size = 0x4C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommonInit base;
|
||||
/* 0x08 */ ColBodyInfoInit body;
|
||||
/* 0x20 */ ColSphereParamsInit info;
|
||||
} ColSphereInit; // size = 0x2C
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ Cylinder16 dim;
|
||||
} ColliderCylinderInit; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColBodyInfoInit body;
|
||||
/* 0x18 */ ColTriParamsInit params;
|
||||
} ColTriInit; // size = 0x3C
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ Cylinder16 dim;
|
||||
} ColliderCylinderInitType1; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ ColCommonInit base;
|
||||
/* 0x8 */ u32 count;
|
||||
/* 0xC */ ColTriInit* elemInit;
|
||||
} ColTriGroupInit; // size = 0x10
|
||||
/* 0x00 */ ColliderInitToActor base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ Cylinder16 dim;
|
||||
} ColliderCylinderInitToActor; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct Actor* actor;
|
||||
/* 0x04 */ struct Actor* collisionAT;
|
||||
/* 0x08 */ struct Actor* collisionAC;
|
||||
/* 0x0C */ struct Actor* collisionOT;
|
||||
/* 0x10 */ u8 flagsAT;
|
||||
/* 0x11 */ u8 flagsAC; // bit 1 - collision occured?
|
||||
/* 0x12 */ u8 unk12;
|
||||
/* 0x13 */ u8 unk13;
|
||||
/* 0x14 */ u8 unk14;
|
||||
/* 0x15 */ u8 type;
|
||||
/* 0x16 */ UNK_TYPE1 pad16[0x2];
|
||||
} ColCommon; // size = 0x18
|
||||
/* 0x00 */ Vec3f vtx[3];
|
||||
} ColliderTrisElementDimInit; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ s16 ATgroupLength;
|
||||
/* 0x002 */ u16 flags; // bit 0: collision bodies can't be added or removed, only swapped out
|
||||
/* 0x004 */ ColCommon* ATgroup[50];
|
||||
/* 0x0CC */ s32 ACgroupLength;
|
||||
/* 0x0D0 */ ColCommon* ACgroup[60];
|
||||
/* 0x1C0 */ s32 OTgroupLength;
|
||||
/* 0x1C4 */ ColCommon* OTgroup[50];
|
||||
/* 0x28C */ s32 group4Length;
|
||||
/* 0x290 */ ColCommon* group4[3];
|
||||
/* 0x00 */ ColliderInfo info;
|
||||
/* 0x28 */ TriNorm dim;
|
||||
} ColliderTrisElement; // size = 0x5C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInfoInit info;
|
||||
/* 0x18 */ ColliderTrisElementDimInit dim;
|
||||
} ColliderTrisElementInit; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ s32 count;
|
||||
/* 0x1C */ ColliderTrisElement* elements;
|
||||
} ColliderTris; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ ColliderInit base;
|
||||
/* 0x8 */ s32 count;
|
||||
/* 0xC */ ColliderTrisElementInit* elements;
|
||||
} ColliderTrisInit; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderTrisElementInit* elements;
|
||||
} ColliderTrisInitType1; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f quad[4];
|
||||
/* 0x30 */ Vec3s dcMid; // midpoint of vectors d, c
|
||||
/* 0x36 */ Vec3s baMid; // midpoint of vectors b, a
|
||||
/* 0x3C */ f32 acDist; // distance to nearest AC collision this frame.
|
||||
} ColliderQuadDim; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f quad[4];
|
||||
} ColliderQuadDimInit; // size = 0x30
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ ColliderInfo info;
|
||||
/* 0x40 */ ColliderQuadDim dim;
|
||||
} ColliderQuad; // size = 0x80
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ ColliderQuadDimInit dim;
|
||||
} ColliderQuadInit; // size = 0x50
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ ColliderQuadDimInit dim;
|
||||
} ColliderQuadInitType1; // size = 0x50
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ ColliderInfo info;
|
||||
/* 0x40 */ ColliderJntSphElementDim dim;
|
||||
} ColliderSphere; // size = 0x58
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ ColliderJntSphElementDimInit dim;
|
||||
} ColliderSphereInit; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ LineSegment line;
|
||||
/* 0x18 */ u16 ocFlags;
|
||||
} OcLine; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ s16 colATCount;
|
||||
/* 0x002 */ u16 sacFlags; // Controls whether new collidors can be added or removed, or only swapped
|
||||
/* 0x004 */ Collider* colAT[50];
|
||||
/* 0x0CC */ s32 colACCount;
|
||||
/* 0x0D0 */ Collider* colAC[60];
|
||||
/* 0x1C0 */ s32 colOCCount;
|
||||
/* 0x1C4 */ Collider* colOC[50];
|
||||
/* 0x28C */ s32 colLineCount;
|
||||
/* 0x290 */ OcLine* colLine[3];
|
||||
} CollisionCheckContext; // size = 0x29C
|
||||
|
||||
typedef struct ColBodyInfo_t {
|
||||
/* 0x00 */ ColTouch toucher;
|
||||
/* 0x08 */ ColBump bumper;
|
||||
/* 0x14 */ u8 unk14;
|
||||
/* 0x15 */ u8 unk15; // bit 0: can be toucher in AT-AC collision
|
||||
/* 0x16 */ u8 unk16; // bit 0: can be bumper in AT-AC collision
|
||||
/* 0x17 */ u8 unk17;
|
||||
/* 0x18 */ ColCommon* unk18;
|
||||
/* 0x1C */ ColCommon* unk1C;
|
||||
/* 0x20 */ struct ColBodyInfo_t* unk20;
|
||||
/* 0x24 */ struct ColBodyInfo_t* unk24;
|
||||
} ColBodyInfo; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColBodyInfo body;
|
||||
/* 0x28 */ ColSphereParams params;
|
||||
} ColSphereGroupElement; // size = 0x40
|
||||
/* 0 */ u8 blood;
|
||||
/* 1 */ u8 effect;
|
||||
} HitInfo; // size = 0x2
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColBodyInfo body;
|
||||
/* 0x28 */ ColTriParams params;
|
||||
} ColTri; // size = 0x5C
|
||||
typedef enum {
|
||||
/* 0 */ BLOOD_NONE,
|
||||
/* 1 */ BLOOD_BLUE,
|
||||
/* 2 */ BLOOD_GREEN,
|
||||
/* 3 */ BLOOD_WATER,
|
||||
/* 4 */ BLOOD_RED,
|
||||
/* 5 */ BLOOD_RED2
|
||||
} ColChkBloodType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommon base;
|
||||
/* 0x18 */ ColBodyInfo body;
|
||||
/* 0x40 */ ColCylinderParams params;
|
||||
} ColCylinder; // size = 0x4C
|
||||
typedef enum {
|
||||
/* 0 */ HIT_WHITE,
|
||||
/* 1 */ HIT_DUST,
|
||||
/* 2 */ HIT_RED,
|
||||
/* 3 */ HIT_SOLID,
|
||||
/* 4 */ HIT_WOOD,
|
||||
/* 5 */ HIT_NONE
|
||||
} ColChkHitType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommon base;
|
||||
/* 0x18 */ ColBodyInfo body;
|
||||
/* 0x40 */ ColQuadParams params;
|
||||
} ColQuad; // size = 0x80
|
||||
typedef enum {
|
||||
/* 0 */ MASSTYPE_IMMOVABLE,
|
||||
/* 1 */ MASSTYPE_HEAVY,
|
||||
/* 2 */ MASSTYPE_NORMAL
|
||||
} ColChkMassType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommon base;
|
||||
/* 0x18 */ ColBodyInfo body;
|
||||
/* 0x40 */ ColSphereParams params;
|
||||
} ColSphere; // size = 0x58
|
||||
typedef enum {
|
||||
/* 0 */ COLTYPE_HIT0, // Blue blood, white hitmark
|
||||
/* 1 */ COLTYPE_HIT1, // No blood, dust hitmark
|
||||
/* 2 */ COLTYPE_HIT2, // Green blood, dust hitmark
|
||||
/* 3 */ COLTYPE_HIT3, // No blood, white hitmark
|
||||
/* 4 */ COLTYPE_HIT4, // Water burst, no hitmark
|
||||
/* 5 */ COLTYPE_HIT5, // No blood, red hitmark
|
||||
/* 6 */ COLTYPE_HIT6, // Green blood, white hitmark
|
||||
/* 7 */ COLTYPE_HIT7, // Red blood, white hitmark
|
||||
/* 8 */ COLTYPE_HIT8, // Blue blood, red hitmark
|
||||
/* 9 */ COLTYPE_METAL,
|
||||
/* 10 */ COLTYPE_NONE,
|
||||
/* 11 */ COLTYPE_WOOD,
|
||||
/* 12 */ COLTYPE_HARD,
|
||||
/* 13 */ COLTYPE_TREE
|
||||
} ColliderType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommon base;
|
||||
/* 0x18 */ u32 count;
|
||||
/* 0x1C */ ColSphereGroupElement* spheres;
|
||||
} ColSphereGroup; // size = 0x20
|
||||
typedef enum {
|
||||
/* 0 */ COLSHAPE_JNTSPH,
|
||||
/* 1 */ COLSHAPE_CYLINDER,
|
||||
/* 2 */ COLSHAPE_TRIS,
|
||||
/* 3 */ COLSHAPE_QUAD,
|
||||
/* 4 */ COLSHAPE_SPHERE,
|
||||
/* 5 */ COLSHAPE_MAX
|
||||
} ColliderShape;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColCommon base;
|
||||
/* 0x18 */ u32 count;
|
||||
/* 0x1C */ ColTri* tris;
|
||||
} ColTriGroup; // size = 0x20
|
||||
typedef enum {
|
||||
/* 0 */ ELEMTYPE_UNK0,
|
||||
/* 1 */ ELEMTYPE_UNK1,
|
||||
/* 2 */ ELEMTYPE_UNK2,
|
||||
/* 3 */ ELEMTYPE_UNK3,
|
||||
/* 4 */ ELEMTYPE_UNK4,
|
||||
/* 5 */ ELEMTYPE_UNK5,
|
||||
/* 6 */ ELEMTYPE_UNK6,
|
||||
/* 7 */ ELEMTYPE_UNK7
|
||||
} ElementType;
|
||||
|
||||
#define SAC_ON (1 << 0) // CollisionContext SAC Flag
|
||||
|
||||
#define AT_NONE 0 // No flags set. Cannot have AT collisions when set as AT
|
||||
#define AT_ON (1 << 0) // Can have AT collisions when set as AT
|
||||
#define AT_HIT (1 << 1) // Had an AT collision
|
||||
#define AT_BOUNCED (1 << 2) // Had an AT collision with an AC_HARD collider
|
||||
#define AT_TYPE_PLAYER (1 << 3) // Has player-aligned damage
|
||||
#define AT_TYPE_ENEMY (1 << 4) // Has enemy-aligned damage
|
||||
#define AT_TYPE_OTHER (1 << 5) // Has non-aligned damage
|
||||
#define AT_SELF (1 << 6) // Can have AT collisions with colliders attached to the same actor
|
||||
#define AT_TYPE_ALL (AT_TYPE_PLAYER | AT_TYPE_ENEMY | AT_TYPE_OTHER) // Has all three damage alignments
|
||||
|
||||
#define AC_NONE 0 // No flags set. Cannot have AC collisions when set as AC
|
||||
#define AC_ON (1 << 0) // Can have AC collisions when set as AC
|
||||
#define AC_HIT (1 << 1) // Had an AC collision
|
||||
#define AC_HARD (1 << 2) // Causes AT colliders to bounce off it
|
||||
#define AC_TYPE_PLAYER AT_TYPE_PLAYER // Takes player-aligned damage
|
||||
#define AC_TYPE_ENEMY AT_TYPE_ENEMY // Takes enemy-aligned damage
|
||||
#define AC_TYPE_OTHER AT_TYPE_OTHER // Takes non-aligned damage
|
||||
#define AC_NO_DAMAGE (1 << 6) // Collider does not take damage
|
||||
#define AC_BOUNCED (1 << 7) // Caused an AT collider to bounce off it
|
||||
#define AC_TYPE_ALL (AC_TYPE_PLAYER | AC_TYPE_ENEMY | AC_TYPE_OTHER) // Takes damage from all three alignments
|
||||
|
||||
#define OC1_NONE 0 // No flags set. Cannot have OC collisions when set as OC
|
||||
#define OC1_ON (1 << 0) // Can have OC collisions when set as OC
|
||||
#define OC1_HIT (1 << 1) // Had an OC collision
|
||||
#define OC1_NO_PUSH (1 << 2) // Does not push other colliders away during OC collisions
|
||||
#define OC1_TYPE_PLAYER (1 << 3) // Can have OC collisions with OC type player
|
||||
#define OC1_TYPE_1 (1 << 4) // Can have OC collisions with OC type 1
|
||||
#define OC1_TYPE_2 (1 << 5) // Can have OC collisions with OC type 2
|
||||
#define OC1_TYPE_ALL (OC1_TYPE_PLAYER | OC1_TYPE_1 | OC1_TYPE_2) // Can have collisions with all three OC types
|
||||
|
||||
#define OC2_NONE 0 // No flags set. Has no OC type
|
||||
#define OC2_HIT_PLAYER (1 << 0) // Had an OC collision with OC type player
|
||||
#define OC2_UNK1 (1 << 1) // Prevents OC collisions with OC2_UNK2. Some horses and toki_sword have it.
|
||||
#define OC2_UNK2 (1 << 2) // Prevents OC collisions with OC2_UNK1. Nothing has it.
|
||||
#define OC2_TYPE_PLAYER OC1_TYPE_PLAYER // Has OC type player
|
||||
#define OC2_TYPE_1 OC1_TYPE_1 // Has OC type 1
|
||||
#define OC2_TYPE_2 OC1_TYPE_2 // Has OC type 2
|
||||
#define OC2_FIRST_ONLY (1 << 6) // Skips AC checks on elements after the first collision. Only used by Ganon
|
||||
|
||||
#define TOUCH_NONE 0 // No flags set. Cannot have AT collisions
|
||||
#define TOUCH_ON (1 << 0) // Can have AT collisions
|
||||
#define TOUCH_HIT (1 << 1) // Had an AT collision
|
||||
#define TOUCH_NEAREST (1 << 2) // If a Quad, only collides with the closest bumper
|
||||
#define TOUCH_SFX_NORMAL (0 << 3) // Hit sound effect based on AC collider's type
|
||||
#define TOUCH_SFX_HARD (1 << 3) // Always uses hard deflection sound
|
||||
#define TOUCH_SFX_WOOD (2 << 3) // Always uses wood deflection sound
|
||||
#define TOUCH_SFX_NONE (3 << 3) // No hit sound effect
|
||||
#define TOUCH_AT_HITMARK (1 << 5) // Draw hitmarks for every AT collision
|
||||
#define TOUCH_DREW_HITMARK (1 << 6) // Already drew hitmark for this frame
|
||||
#define TOUCH_UNK7 (1 << 7) // Unknown purpose. Used by some enemy quads
|
||||
|
||||
#define BUMP_NONE 0 // No flags set. Cannot have AC collisions
|
||||
#define BUMP_ON (1 << 0) // Can have AC collisions
|
||||
#define BUMP_HIT (1 << 1) // Had an AC collision
|
||||
#define BUMP_HOOKABLE (1 << 2) // Can be hooked if actor has hookability flags set.
|
||||
#define BUMP_NO_AT_INFO (1 << 3) // Does not give its info to the AT collider that hit it.
|
||||
#define BUMP_NO_DAMAGE (1 << 4) // Does not take damage.
|
||||
#define BUMP_NO_SWORD_SFX (1 << 5) // Does not have a sound when hit by player-attached AT colliders.
|
||||
#define BUMP_NO_HITMARK (1 << 6) // Skips hit effects.
|
||||
#define BUMP_DRAW_HITMARK (1 << 7) // Draw hitmark for AC collision this frame.
|
||||
|
||||
#define OCELEM_NONE 0 // No flags set. Cannot have OC collisions
|
||||
#define OCELEM_ON (1 << 0) // Can have OC collisions
|
||||
#define OCELEM_HIT (1 << 1) // Had an OC collision
|
||||
#define OCELEM_UNK2 (1 << 2) // Unknown purpose.
|
||||
#define OCELEM_UNK3 (1 << 3) // Unknown purpose. Used by Dead Hand element 0 and Dodongo element 5
|
||||
|
||||
#define OCLINE_NONE 0 // Did not have an OcLine collision
|
||||
#define OCLINE_HIT (1 << 0) // Had an OcLine collision
|
||||
|
||||
#endif
|
||||
|
||||
+87
-9
@@ -5,16 +5,94 @@
|
||||
|
||||
#define SHT_MAX 32767.0f
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ f32 x;
|
||||
/* 0x4 */ f32 y;
|
||||
/* 0x8 */ f32 z;
|
||||
} Vec3f; // size = 0xC
|
||||
#define VEC_SET(V,X,Y,Z) V.x=X;V.y=Y;V.z=Z
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 x;
|
||||
/* 0x2 */ s16 y;
|
||||
/* 0x4 */ s16 z;
|
||||
} Vec3s; // size = 0x6
|
||||
/* 0x00 */ f32 x;
|
||||
/* 0x04 */ f32 y;
|
||||
} Vec2f; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 x;
|
||||
/* 0x04 */ f32 y;
|
||||
/* 0x08 */ f32 z;
|
||||
} Vec3f; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 x;
|
||||
/* 0x02 */ u16 y;
|
||||
/* 0x04 */ u16 z;
|
||||
} Vec3us; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 x;
|
||||
/* 0x02 */ s16 y;
|
||||
/* 0x04 */ s16 z;
|
||||
} Vec3s; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 x;
|
||||
/* 0x04 */ s32 y;
|
||||
/* 0x08 */ s32 z;
|
||||
} Vec3i; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s center;
|
||||
/* 0x06 */ s16 radius;
|
||||
} Sphere16; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f center;
|
||||
/* 0x0C */ f32 radius;
|
||||
} Spheref; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f normal;
|
||||
/* 0x0C */ f32 originDist;
|
||||
} Plane; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f vtx[3];
|
||||
/* 0x24 */ Plane plane;
|
||||
} TriNorm; // size = 0x34
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 radius;
|
||||
/* 0x02 */ s16 height;
|
||||
/* 0x04 */ s16 yShift;
|
||||
/* 0x06 */ Vec3s pos;
|
||||
} Cylinder16; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 radius;
|
||||
/* 0x04 */ f32 height;
|
||||
/* 0x08 */ f32 yShift;
|
||||
/* 0x0C */ Vec3f pos;
|
||||
} Cylinderf; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f point;
|
||||
/* 0x0C */ Vec3f dir;
|
||||
} InfiniteLine; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f a;
|
||||
/* 0x0C */ Vec3f b;
|
||||
} LineSegment; // size = 0x18
|
||||
|
||||
// Defines a point in the spherical coordinate system
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 r; // radius
|
||||
/* 0x04 */ s16 pitch; // polar (zenith) angle
|
||||
/* 0x06 */ s16 yaw; // azimuthal angle
|
||||
} VecSph; // size = 0x08
|
||||
|
||||
#define IS_ZERO(f) (fabsf(f) < 0.008f)
|
||||
|
||||
// Vector macros
|
||||
#define SQXZ(vec) ((vec.x) * (vec.x) + (vec.z) * (vec.z))
|
||||
#define DOTXZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.z) * (vec2.z))
|
||||
#define SQXYZ(vec) ((vec.x) * (vec.x) + (vec.y) * (vec.y) + (vec.z) * (vec.z))
|
||||
#define DOTXYZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.y) * (vec2.y) + (vec1.z) * (vec2.z))
|
||||
|
||||
#endif
|
||||
|
||||
@@ -337,9 +337,9 @@ SECTIONS
|
||||
build/src/code/code_0x800CAE10.o(.text)
|
||||
build/asm/code/code_0x800CB000.o(.text)
|
||||
build/asm/code/z_camera.o(.text)
|
||||
build/src/code/code_0x800E03A0.o(.text)
|
||||
build/src/code/z_collision_btltbls.o(.text)
|
||||
. += 0x10;
|
||||
build/asm/code/z_collision_check.o(.text)
|
||||
build/src/code/z_collision_check.o(.text)
|
||||
build/src/code/code_0x800E8EA0.o(.text)
|
||||
build/asm/code/code_0x800E9360.o(.text)
|
||||
build/asm/code/z_debug.o(.text)
|
||||
@@ -473,7 +473,8 @@ SECTIONS
|
||||
build/src/code/z_actor_dlftbls.o(.data)
|
||||
build/asm/code/code_data_z_bgcheck.o(.data)
|
||||
build/asm/code/code_data_z_camera.o(.data)
|
||||
build/asm/code/code_data_z_collision_check.o(.data)
|
||||
build/src/code/z_collision_btltbls.o(.data)
|
||||
build/src/code/z_collision_check.o(.data)
|
||||
build/asm/code/code_data_z_debug_display.o(.data)
|
||||
build/asm/code/code_data_z_debug_mode.o(.data)
|
||||
build/asm/code/code_data_z_draw.o(.data)
|
||||
@@ -549,7 +550,7 @@ SECTIONS
|
||||
build/asm/code/code_rodata_z_bgcheck.o(.rodata)
|
||||
build/asm/code/code_rodata_0x800CB000.o(.rodata)
|
||||
build/asm/code/code_rodata_z_camera.o(.rodata)
|
||||
build/asm/code/code_rodata_z_collision_check.o(.rodata)
|
||||
build/src/code/z_collision_check.o(.rodata)
|
||||
build/asm/code/code_rodata_0x800E8EA0.o(.rodata)
|
||||
build/asm/code/code_rodata_z_debug_mode.o(.rodata)
|
||||
build/asm/code/code_rodata_z_draw.o(.rodata)
|
||||
|
||||
@@ -8,16 +8,18 @@ void EnAObj_Init(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
s0->base.textId = ((s0->base.params >> 8) & 0xFF) | 0x300;
|
||||
s0->base.params = (s0->base.params & 0xFF) - 9;
|
||||
Actor_ProcessInitChain((Actor*)s0, &enAObjInitVar);
|
||||
|
||||
Actor_SetDrawParams(&s0->base.shape, 0, (ActorShadowFunc)func_800B3FC0, 12);
|
||||
Collision_InitCylinder(ctxt, &s0->collision, (Actor*)s0, &enAObjCylinderInit);
|
||||
Collision_CylinderMoveToActor((Actor*)s0, &s0->collision);
|
||||
Collider_InitAndSetCylinder(ctxt, &s0->collision, (Actor*)s0, &enAObjCylinderInit);
|
||||
Collider_UpdateCylinder((Actor*)s0, &s0->collision);
|
||||
|
||||
s0->base.colChkInfo.mass = 255;
|
||||
s0->update = (ActorFunc)EnAObj_Update1;
|
||||
}
|
||||
|
||||
void EnAObj_Destroy(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
ColCylinder* a2 = &this->collision;
|
||||
Collision_FiniCylinder(ctxt, a2);
|
||||
ColliderCylinder* a2 = &this->collision;
|
||||
Collider_DestroyCylinder(ctxt, a2);
|
||||
}
|
||||
|
||||
void EnAObj_Update1(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
@@ -43,7 +45,7 @@ void EnAObj_Update2(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
void EnAObj_Update(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
(this->update)((Actor*)this, (GlobalContext*)ctxt);
|
||||
Actor_SetHeight((Actor*)this, 45.0f);
|
||||
Collision_AddOT(ctxt, &ctxt->colCheckCtx, (ColCommon*)&this->collision);
|
||||
CollisionCheck_SetOC(ctxt, &ctxt->colCheckCtx, (Collider*)&this->collision);
|
||||
}
|
||||
|
||||
void EnAObj_Draw(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
s800E03A0* func_800E03A0(s32 a0) {
|
||||
if ((a0 < 0) || (a0 > 22)) return 0;
|
||||
return &(D_801B9F20[a0]);
|
||||
}
|
||||
|
||||
// Probably zeroes out a s800E03A0?
|
||||
void func_800E03CC(u8* a0) {
|
||||
s32 i;
|
||||
u8* v1;
|
||||
|
||||
for (i = 0, v1 = a0; i < 32; i++) {
|
||||
*v1++ = 0;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -230,7 +230,7 @@ void Actor_InitToDefaultValues(Actor* actor, GlobalContext* ctxt) {
|
||||
actor->meshAttachedTo = 0x32;
|
||||
|
||||
actor->sqrdDistToLink = D_801DCA54;
|
||||
func_800E7494(&actor->colChkInfo);
|
||||
CollisionCheck_InitInfo(&actor->colChkInfo);
|
||||
actor->uncullZoneForward = 1000.0f;
|
||||
actor->uncullZoneScale = 350.0f;
|
||||
actor->uncullZoneDownward = 700.0f;
|
||||
|
||||
@@ -76,7 +76,7 @@ void BgCheck_CreateVertexFromVec3f(BgVertex* vertex, Vec3f* vector) {
|
||||
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/func_800C01B8.asm")
|
||||
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/BgCheck_CreateColTriParamsFromPolygon.asm")
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/BgCheck_CreateTriNormFromPolygon.asm")
|
||||
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/func_800C02C0.asm")
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
DamageTable sDamageTablePresets[] = {
|
||||
{ { 0x10, 0x01, 0x01, 0x02, 0xE0, 0x01, 0xF2, 0x10, 0xF1, 0xF2, 0xF2, 0x22, 0x01, 0x01, 0x00, 0x00,
|
||||
0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x01, 0x02, 0xE0, 0x01, 0xF2, 0x10, 0xF1, 0xF2, 0xF2, 0x22, 0x01, 0x01, 0x00, 0x00,
|
||||
0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x02, 0x01, 0x02, 0x10, 0x02, 0x02, 0x02, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
|
||||
0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x01, 0x00, 0x10, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x31, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x04, 0x00, 0x02, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x04, 0x00, 0x02, 0x06, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00,
|
||||
0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x00, 0xE2, 0x10, 0x01, 0x02, 0x10, 0xF1, 0xF2, 0xF2, 0x22, 0x32, 0x01, 0x00, 0x00,
|
||||
0x00, 0x22, 0x32, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x01, 0x02, 0x10, 0x01, 0x02, 0x10, 0x01, 0x02, 0x02, 0x22, 0x01, 0x01, 0x00, 0x00,
|
||||
0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
|
||||
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
|
||||
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x00, 0x02, 0x10, 0x01, 0x02, 0x10, 0xF1, 0xF2, 0xF2, 0x22, 0x32, 0x01, 0x00, 0x00,
|
||||
0x00, 0x22, 0x32, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x01, 0xF2, 0xE0, 0x01, 0xD2, 0x10, 0x01, 0x02, 0x02, 0x00, 0x32, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x10, 0x01, 0x00, 0xF0, 0x10, 0x01, 0xF0, 0x10, 0x01, 0x02, 0x02, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
||||
{ { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 } },
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a pointer to one of the 23 damage table presets, or NULL if the index
|
||||
* is out of range.
|
||||
*/
|
||||
DamageTable* DamageTable_Get(s32 index) {
|
||||
if (index < 0 || index > ARRAY_COUNT(sDamageTablePresets)-1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return &sDamageTablePresets[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets all entries in a damage table to 0
|
||||
*/
|
||||
void DamageTable_Clear(DamageTable* damageTable) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(damageTable->attack); i++) {
|
||||
damageTable->attack[i] = 0;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -146,7 +146,7 @@ s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos,
|
||||
|
||||
actors[0] = actor;
|
||||
actors[1] = globalCtx->actorCtx.actorList[2].first; // TODO PLAYER macro
|
||||
if (func_800E7DCC(globalCtx, &globalCtx->colCheckCtx, pos, &camera->eye, actors, 2) != 0) {
|
||||
if (CollisionCheck_LineOCCheck(globalCtx, &globalCtx->colCheckCtx, pos, &camera->eye, actors, 2) != 0) {
|
||||
func_8013A41C(0x3b);
|
||||
ret |= 0x3b;
|
||||
}
|
||||
|
||||
@@ -24,10 +24,24 @@ const ActorInit Arms_Hook_InitVars = {
|
||||
(ActorFunc)ArmsHook_Draw
|
||||
};
|
||||
|
||||
ColQuadInit D_808C1BC0 = {
|
||||
{ 10, 0x09, 0x00, 0x00, 0x08, 3 },
|
||||
{ 0x02, { 0x00000080, 0x00, 0x02 }, { 0xF7CFFFFF, 0x00, 0x00 }, 0x05, 0x00, 0x00 },
|
||||
{ 0 },
|
||||
ColliderQuadInit D_808C1BC0 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
AT_ON | AT_TYPE_PLAYER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
OC2_TYPE_PLAYER,
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0x00000080, 0x00, 0x02 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_NEAREST | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
};
|
||||
|
||||
Vec3f D_808C1C10 = { 0.0f, 0.0f, 0.0f };
|
||||
@@ -47,8 +61,8 @@ void ArmsHook_SetupAction(ArmsHook* this, ArmsHookActionFunc actionFunc) {
|
||||
void ArmsHook_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ArmsHook* this = THIS;
|
||||
|
||||
Collision_InitQuadDefault(globalCtx, &this->collider);
|
||||
Collision_InitQuadWithData(globalCtx, &this->collider, &this->actor, &D_808C1BC0);
|
||||
Collider_InitQuad(globalCtx, &this->collider);
|
||||
Collider_SetQuad(globalCtx, &this->collider, &this->actor, &D_808C1BC0);
|
||||
ArmsHook_SetupAction(this, ArmsHook_Wait);
|
||||
this->unk1E0 = this->actor.world.pos;
|
||||
}
|
||||
@@ -59,7 +73,7 @@ void ArmsHook_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
if (this->grabbed != NULL) {
|
||||
this->grabbed->flags &= ~0x2000;
|
||||
}
|
||||
Collision_FiniQuad(globalCtx, &this->collider);
|
||||
Collider_DestroyQuad(globalCtx, &this->collider);
|
||||
}
|
||||
|
||||
void ArmsHook_Wait(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
@@ -125,10 +139,11 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
func_800B8F98(&player->base, 0x100B);
|
||||
ArmsHook_CheckForCancel(this);
|
||||
|
||||
if (this->timer != 0 && (this->collider.base.flagsAT & 2) && (this->collider.body.unk20->unk14 != 4)) {
|
||||
Actor* touchedActor = this->collider.base.collisionAT;
|
||||
if (this->timer != 0 && (this->collider.base.atFlags & AT_HIT) &&
|
||||
(this->collider.info.atHitInfo->elemType != ELEMTYPE_UNK4)) {
|
||||
Actor* touchedActor = this->collider.base.at;
|
||||
if ((touchedActor->update != NULL) && (touchedActor->flags & 0x600)) {
|
||||
if (this->collider.body.unk20->unk16 & 4) {
|
||||
if (this->collider.info.atHitInfo->bumperFlags & BUMP_HOOKABLE) {
|
||||
ArmsHook_AttachHookToActor(this, touchedActor);
|
||||
if ((touchedActor->flags & 0x400) == 0x400) {
|
||||
func_808C1154(this);
|
||||
@@ -170,8 +185,7 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
{
|
||||
f32 velocity;
|
||||
|
||||
bodyDistDiff =
|
||||
Math_Vec3f_DistXYZAndStoreDiff(&player->unk368, &this->actor.world.pos, &bodyDistDiffVec);
|
||||
bodyDistDiff = Math_Vec3f_DistXYZAndStoreDiff(&player->unk368, &this->actor.world.pos, &bodyDistDiffVec);
|
||||
if (bodyDistDiff < 30.0f) {
|
||||
velocity = 0.0f;
|
||||
phi_f16 = 0.0f;
|
||||
@@ -244,15 +258,14 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
if (func_800C9CEC(&globalCtx->colCtx, poly, bgId)) {
|
||||
{
|
||||
DynaPolyActor* dynaPolyActor;
|
||||
if (bgId != 0x32 &&
|
||||
(dynaPolyActor = BgCheck_GetActorOfMesh(&globalCtx->colCtx, bgId)) != NULL) {
|
||||
if (bgId != 0x32 && (dynaPolyActor = BgCheck_GetActorOfMesh(&globalCtx->colCtx, bgId)) != NULL) {
|
||||
ArmsHook_AttachHookToActor(this, &dynaPolyActor->actor);
|
||||
}
|
||||
}
|
||||
func_808C1154(this);
|
||||
func_8019F1C0(&this->actor.projectedPos, 0x1829);
|
||||
} else {
|
||||
func_800E8668(globalCtx, &this->actor.world.pos);
|
||||
CollisionCheck_SpawnShieldParticlesMetal(globalCtx, &this->actor.world.pos);
|
||||
func_8019F1C0(&this->actor.projectedPos, 0x1813);
|
||||
}
|
||||
} else {
|
||||
@@ -305,8 +318,8 @@ void ArmsHook_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
gSPMatrix(sp44->polyOpa.p++, SysMatrix_AppendStateToPolyOpaDisp(globalCtx->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(sp44->polyOpa.p++, D_0601D960);
|
||||
SysMatrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y,
|
||||
this->actor.world.pos.z, MTXMODE_NEW);
|
||||
SysMatrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z,
|
||||
MTXMODE_NEW);
|
||||
Math_Vec3f_Diff(&player->unk368, &this->actor.world.pos, &sp68);
|
||||
sp48 = SQ(sp68.x) + SQ(sp68.z);
|
||||
sp4C = sqrtf(sp48);
|
||||
|
||||
@@ -9,7 +9,7 @@ typedef void (*ArmsHookActionFunc)(struct ArmsHook*, GlobalContext*);
|
||||
|
||||
typedef struct ArmsHook {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ ColQuad collider;
|
||||
/* 0x144 */ ColliderQuad collider;
|
||||
/* 0x1C4 */ s32 unk1C4;
|
||||
/* 0x1C8 */ char unk1C8[0x18];
|
||||
/* 0x1E0 */ Vec3f unk1E0;
|
||||
|
||||
@@ -26,30 +26,28 @@ const ActorInit Bg_Ikana_Ray_InitVars = {
|
||||
(ActorFunc)BgIkanaRay_Draw
|
||||
};
|
||||
|
||||
// TODO better formatting
|
||||
ColCylinderInit bgIkanaRayCylinderInit = {
|
||||
{ 10, 33, 0, 0, 0, 1 },
|
||||
{ 0, { 0x00200000, 0, 0 }, { 0, 0, 0 }, 25, 0, 1 },
|
||||
{ 90, 420, 65116}
|
||||
ColliderCylinderInit bgIkanaRayCylinderInit = {
|
||||
{ COLTYPE_NONE, AT_ON | AT_TYPE_OTHER, AC_NONE, OC1_NONE, OC2_NONE, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK0, { 0x00200000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NONE, BUMP_NONE, OCELEM_ON, },
|
||||
{ 90, 420, -420, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
// TODO macro
|
||||
InitChainEntry bgIkanaRayCompInit[] = {
|
||||
{1, 6, 0x0FC, 4000},
|
||||
{1, 6, 0x100, 1000},
|
||||
{1, 6, 0x104, 1000},
|
||||
{0, 9, 0x058, 100}
|
||||
InitChainEntry bgIkanaRayCompInit[] = {
|
||||
ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 1000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
void BgIkanaRay_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ColCylinder* collision = &THIS->collision;
|
||||
ColliderCylinder* collision = &THIS->collision;
|
||||
u32 pad;
|
||||
|
||||
Actor_ProcessInitChain(thisx, bgIkanaRayCompInit);
|
||||
|
||||
Collision_InitCylinderDefault(globalCtx, collision);
|
||||
Collision_InitCylinderWithData(globalCtx, collision, thisx, &bgIkanaRayCylinderInit);
|
||||
Collision_CylinderMoveToActor(thisx, &THIS->collision);
|
||||
Collider_InitCylinder(globalCtx, collision);
|
||||
Collider_SetCylinder(globalCtx, collision, thisx, &bgIkanaRayCylinderInit);
|
||||
Collider_UpdateCylinder(thisx, &THIS->collision);
|
||||
|
||||
THIS->animatedTextures = (AnimatedTexture*)Lib_PtrSegToVirt(object_ikana_obj_001228);
|
||||
|
||||
@@ -61,8 +59,8 @@ void BgIkanaRay_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void BgIkanaRay_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ColCylinder* collision = &THIS->collision;
|
||||
Collision_FiniCylinder(globalCtx, collision);
|
||||
ColliderCylinder* collision = &THIS->collision;
|
||||
Collider_DestroyCylinder(globalCtx, collision);
|
||||
}
|
||||
|
||||
void BgIkanaRay_SetDeactivated(BgIkanaRay* this) {
|
||||
@@ -84,7 +82,7 @@ void BgIkanaRay_SetActivated(BgIkanaRay* this) {
|
||||
}
|
||||
|
||||
void BgIkanaRay_UpdateActivated(BgIkanaRay* this, GlobalContext* globalCtx) {
|
||||
Collision_AddAT(globalCtx, &globalCtx->colCheckCtx, &this->collision.base);
|
||||
CollisionCheck_SetAT(globalCtx, &globalCtx->colCheckCtx, &this->collision.base);
|
||||
}
|
||||
|
||||
void BgIkanaRay_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
|
||||
@@ -7,7 +7,7 @@ struct BgIkanaRay;
|
||||
|
||||
typedef struct BgIkanaRay {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ColCylinder collision;
|
||||
/* 0x144 */ ColliderCylinder collision;
|
||||
/* 0x190 */ AnimatedTexture* animatedTextures;
|
||||
/* 0x194 */ void (*update)(struct BgIkanaRay*, GlobalContext*);
|
||||
} BgIkanaRay; // size = 0x198
|
||||
|
||||
@@ -26,10 +26,9 @@ const ActorInit En_Nnh_InitVars = {
|
||||
(ActorFunc)EnNnh_Draw
|
||||
};
|
||||
|
||||
ColCylinderInit D_80C08A00 =
|
||||
{
|
||||
{ 0x0D, 0x00, 0x09, 0x39, 0x10, 0x01 },
|
||||
{ 0x01, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, 0x00, 0x01, 0x01 },
|
||||
ColliderCylinderInit D_80C08A00 = {
|
||||
{ COLTYPE_TREE, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK1, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ 20, 50, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
@@ -39,8 +38,8 @@ void EnNnh_Init(Actor *thisx, GlobalContext *globalCtx) {
|
||||
EnNnh* this = THIS;
|
||||
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
Collision_InitCylinderDefault(globalCtx, &this->collider);
|
||||
Collision_InitCylinderWithData(globalCtx, &this->collider, &this->actor, &D_80C08A00);
|
||||
Collider_InitCylinder(globalCtx, &this->collider);
|
||||
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &D_80C08A00);
|
||||
this->actor.targetMode = 1;
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->actor.focus.pos.y += 30.0f;
|
||||
@@ -50,7 +49,7 @@ void EnNnh_Init(Actor *thisx, GlobalContext *globalCtx) {
|
||||
void EnNnh_Destroy(Actor *thisx, GlobalContext *globalCtx) {
|
||||
EnNnh* this = THIS;
|
||||
|
||||
Collision_FiniCylinder(globalCtx, &this->collider);
|
||||
Collider_DestroyCylinder(globalCtx, &this->collider);
|
||||
}
|
||||
|
||||
void func_80C08828(EnNnh* this) {
|
||||
@@ -81,8 +80,8 @@ void EnNnh_Update(Actor *thisx, GlobalContext *globalCtx) {
|
||||
s32 pad;
|
||||
|
||||
this->actionFunc(this, globalCtx);
|
||||
Collision_CylinderMoveToActor(&this->actor, &this->collider);
|
||||
Collision_AddOT(globalCtx, &globalCtx->colCheckCtx, &this->collider.base);
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
CollisionCheck_SetOC(globalCtx, &globalCtx->colCheckCtx, &this->collider.base);
|
||||
}
|
||||
|
||||
void EnNnh_Draw(Actor *thisx, GlobalContext *globalCtx) {
|
||||
|
||||
@@ -9,7 +9,7 @@ typedef void (*EnNnhActionFunc)(struct EnNnh*, GlobalContext*);
|
||||
|
||||
typedef struct EnNnh {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ ColCylinder collider;
|
||||
/* 0x144 */ ColliderCylinder collider;
|
||||
/* 0x190 */ EnNnhActionFunc actionFunc;
|
||||
} EnNnh; // size = 0x194
|
||||
|
||||
|
||||
@@ -24,14 +24,15 @@ const ActorInit En_Tanron6_InitVars = {
|
||||
(ActorFunc)EnTanron6_Draw
|
||||
};
|
||||
|
||||
DamageTable D_80BE6170 = { 0xF0, 0xF0, 0x00, 0xF1, 0xE1, 0xE1, 0x00, 0xE1, 0xF0, 0xF0, 0xF0,
|
||||
0xE1, 0xE1, 0x46, 0xF0, 0xF0, 0xE1, 0xF0, 0xF0, 0x00, 0x00, 0xF0,
|
||||
0xE1, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0 };
|
||||
DamageTable D_80BE6170 = {
|
||||
0xF0, 0xF0, 0x00, 0xF1, 0xE1, 0xE1, 0x00, 0xE1, 0xF0, 0xF0, 0xF0, 0xE1, 0xE1, 0x46, 0xF0, 0xF0,
|
||||
0xE1, 0xF0, 0xF0, 0x00, 0x00, 0xF0, 0xE1, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
||||
};
|
||||
|
||||
void EnTanron6_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnTanron6* this = THIS;
|
||||
|
||||
this->actor.colChkInfo.mass = 0xA;
|
||||
this->actor.colChkInfo.mass = 10;
|
||||
Actor_SetDrawParams(&this->actor.shape, 0, func_800B3FC0, 19.0f);
|
||||
this->actor.colChkInfo.health = 1;
|
||||
this->actor.colChkInfo.damageTable = &D_80BE6170;
|
||||
|
||||
+212
-212
@@ -924,7 +924,7 @@
|
||||
0x800C003C:("BgCheck_PolygonGetNormal",),
|
||||
0x800C0094:("func_800C0094",),
|
||||
0x800C01B8:("func_800C01B8",),
|
||||
0x800C0220:("BgCheck_CreateColTriParamsFromPolygon",),
|
||||
0x800C0220:("BgCheck_CreateTriNormFromPolygon",),
|
||||
0x800C02C0:("func_800C02C0",),
|
||||
0x800C0340:("func_800C0340",),
|
||||
0x800C0474:("func_800C0474",),
|
||||
@@ -1307,217 +1307,217 @@
|
||||
0x800E0308:("func_800E0308",),
|
||||
0x800E031C:("func_800E031C",),
|
||||
0x800E0348:("func_800E0348",),
|
||||
0x800E03A0:("func_800E03A0",),
|
||||
0x800E03CC:("func_800E03CC",),
|
||||
0x800E0410:("Collision_GetDamageAndEffectOnBumper",),
|
||||
0x800E04BC:("func_800E04BC",),
|
||||
0x800E04EC:("Collision_GetToucherDamage",),
|
||||
0x800E0538:("Collision_InitCommonDefault",),
|
||||
0x800E0580:("Collision_FiniCommon",),
|
||||
0x800E0594:("func_800E0594",),
|
||||
0x800E05D4:("func_800E05D4",),
|
||||
0x800E0618:("Collision_InitCommonWithData",),
|
||||
0x800E065C:("Collision_ResetCommonForAT",),
|
||||
0x800E0678:("Collision_ResetCommonForAC",),
|
||||
0x800E0694:("Collision_ResetCommonForOT",),
|
||||
0x800E06BC:("Collision_InitTouchDefault",),
|
||||
0x800E06E4:("Collision_FiniTouch",),
|
||||
0x800E06F8:("Collision_InitTouchWithData",),
|
||||
0x800E0720:("Collision_nop800E0720",),
|
||||
0x800E0730:("Collision_InitBumpDefault",),
|
||||
0x800E0760:("Collision_FiniBump",),
|
||||
0x800E0774:("Collision_InitBumpWithData",),
|
||||
0x800E079C:("Collision_InitBodyDefault",),
|
||||
0x800E081C:("Collision_FiniBody",),
|
||||
0x800E085C:("Collision_InitBodyWithData",),
|
||||
0x800E08D4:("Collision_ResetBodyForAT",),
|
||||
0x800E090C:("Collision_ResetBodyForAC",),
|
||||
0x800E0944:("Collision_ResetBodyForOT",),
|
||||
0x800E095C:("Collision_InitSphereParamsDefault",),
|
||||
0x800E09A4:("Collision_FiniSphereParams",),
|
||||
0x800E09B8:("Collision_InitSphereParamsWithData",),
|
||||
0x800E0A10:("Collision_InitSphereGroupElemDefault",),
|
||||
0x800E0A50:("Collision_FiniSphereGroupElem",),
|
||||
0x800E0A90:("Collision_InitSphereGroupElemWithData",),
|
||||
0x800E0AE0:("Collision_ResetSphereGroupElemForAT",),
|
||||
0x800E0B04:("Collision_ResetSphereGroupElemForAC",),
|
||||
0x800E0B28:("Collision_ResetSphereGroupElemForOT",),
|
||||
0x800E0B4C:("Collision_InitSphereGroupDefault",),
|
||||
0x800E0B78:("func_800E0B78",),
|
||||
0x800E0C18:("Collision_FiniSphereGroup",),
|
||||
0x800E0CA8:("func_800E0CA8",),
|
||||
0x800E0D84:("func_800E0D84",),
|
||||
0x800E0E60:("Collision_InitSphereGroupWithData",),
|
||||
0x800E0F14:("Collision_InitSphereGroup",),
|
||||
0x800E0F68:("Collision_ResetSphereGroupForAT",),
|
||||
0x800E0FF4:("Collision_ResetSphereGroupForAC",),
|
||||
0x800E1080:("Collision_ResetSphereGroupForOT",),
|
||||
0x800E110C:("Collision_InitCylinderParamsDefault",),
|
||||
0x800E1148:("Collision_FiniCylinderParams",),
|
||||
0x800E115C:("Collision_InitCylinderParamsWithData",),
|
||||
0x800E119C:("Collision_InitCylinderDefault",),
|
||||
0x800E11EC:("Collision_FiniCylinder",),
|
||||
0x800E123C:("func_800E123C",),
|
||||
0x800E12A4:("func_800E12A4",),
|
||||
0x800E130C:("Collision_InitCylinderWithData",),
|
||||
0x800E1374:("Collision_InitCylinder",),
|
||||
0x800E13C0:("Collision_ResetCylinderForAT",),
|
||||
0x800E1400:("Collision_ResetCylinderForAC",),
|
||||
0x800E1440:("Collision_ReseCylinderForOT",),
|
||||
0x800E1480:("Collision_InitTriParamsDefault",),
|
||||
0x800E14CC:("Collision_FiniTriParams",),
|
||||
0x800E14E0:("Collision_InitTriParamsWithData",),
|
||||
0x800E1594:("Collision_InitTriDefault",),
|
||||
0x800E15D4:("Collision_FiniTri",),
|
||||
0x800E1614:("Collision_InitTriWithData",),
|
||||
0x800E1664:("Collision_ResetTriForAT",),
|
||||
0x800E1688:("Collision_ResetTriForAC",),
|
||||
0x800E16AC:("func_800E16AC",),
|
||||
0x800E16D0:("Collision_InitTriGroupDefault",),
|
||||
0x800E16FC:("func_800E16FC",),
|
||||
0x800E17B4:("Collision_FiniTriGroup",),
|
||||
0x800E1858:("func_800E1858",),
|
||||
0x800E1958:("Collision_InitTriGroupWithData",),
|
||||
0x800E1A24:("Collision_InitTriGroup",),
|
||||
0x800E1A78:("Collision_ResetTriGroupForAT",),
|
||||
0x800E1B18:("Collision_ResetTriGroupForAC",),
|
||||
0x800E1BB8:("Collision_ResetTriGroupForOT",),
|
||||
0x800E1C58:("Collision_InitQuadParamsDefault",),
|
||||
0x800E1CA4:("Collision_FiniQuadParams",),
|
||||
0x800E1CB8:("Collision_ResetQuadParamsForAT",),
|
||||
0x800E1CD4:("Collision_QuadCalcMidpoints",),
|
||||
0x800E1D90:("Collision_InitQuadParamsWithData",),
|
||||
0x800E1E18:("Collision_InitQuadDefault",),
|
||||
0x800E1E68:("Collision_FiniQuad",),
|
||||
0x800E1EB8:("func_800E1EB8",),
|
||||
0x800E1F20:("Collision_InitQuadWithData",),
|
||||
0x800E1F88:("Collision_InitQuad",),
|
||||
0x800E1FD4:("Collision_ResetQuadForAT",),
|
||||
0x800E2024:("Collision_ResetQuadForAC",),
|
||||
0x800E2064:("Collision_ResetQuadForOT",),
|
||||
0x800E20A4:("func_800E20A4",),
|
||||
0x800E2154:("Collision_InitSphereDefault",),
|
||||
0x800E21A4:("Collision_FiniSphere",),
|
||||
0x800E21F4:("Collision_InitSphereWithData",),
|
||||
0x800E225C:("Collision_InitSphere",),
|
||||
0x800E22A8:("Collision_ResetSphereForAT",),
|
||||
0x800E22E8:("Collision_ResetSphereForAC",),
|
||||
0x800E2328:("Collision_ResetSphereForOT",),
|
||||
0x800E2368:("func_800E2368",),
|
||||
0x800E23B0:("func_800E23B0",),
|
||||
0x800E23C4:("func_800E23C4",),
|
||||
0x800E2408:("func_800E2408",),
|
||||
0x800E2434:("func_800E2434",),
|
||||
0x800E2450:("Collision_Init",),
|
||||
0x800E2470:("Collision_Fini",),
|
||||
0x800E2480:("Collision_Reset",),
|
||||
0x800E2528:("Collision_EnableEditMode",),
|
||||
0x800E2540:("Collision_EnableAppendMode",),
|
||||
0x800E2558:("Collision_AddAT",),
|
||||
0x800E2634:("Collision_AddIndexAT",),
|
||||
0x800E2740:("Collision_AddAC",),
|
||||
0x800E281C:("collision_AddIndexAC",),
|
||||
0x800E2928:("Collision_AddOT",),
|
||||
0x800E2A04:("Collision_AddIndexOT",),
|
||||
0x800E2B10:("Collision_AddGroup4",),
|
||||
0x800E2B98:("Collision_CantBeToucherAC",),
|
||||
0x800E2BBC:("Collision_CantBeBumperAC",),
|
||||
0x800E2BE0:("Collision_ToucherIsExcluded",),
|
||||
0x800E2C08:("func_800E2C08",),
|
||||
0x800E2C1C:("func_800E2C1C",),
|
||||
0x800E2D88:("func_800E2D88",),
|
||||
0x800E2EF4:("func_800E2EF4",),
|
||||
0x800E2F30:("func_800E2F30",),
|
||||
0x800E2F54:("func_800E2F54",),
|
||||
0x800E2F78:("func_800E2F78",),
|
||||
0x800E30C8:("func_800E30C8",),
|
||||
0x800E3168:("func_800E3168",),
|
||||
0x800E3304:("func_800E3304",),
|
||||
0x800E3324:("Collision_HandleCollisionATWithAC",),
|
||||
0x800E35C8:("Collision_TriCalcAvgPoint",),
|
||||
0x800E362C:("collision_quad_cal_avg_point",),
|
||||
0x800E36AC:("Collision_SphereGroupWithSphereGroupAC",),
|
||||
0x800E38F8:("Collision_SphereGroupWithCylinderAC",),
|
||||
0x800E3B18:("Collision_SphereGroupWithTriGroupAC",),
|
||||
0x800E3CC0:("Collision_SphereGroupWithQuadAC",),
|
||||
0x800E3E6C:("Collision_SphereGroupWithSphereAC",),
|
||||
0x800E4058:("Collision_CylinderWithSphereGroupAC",),
|
||||
0x800E4298:("Collision_CylinderWithCylinderAC",),
|
||||
0x800E44C0:("Collision_CylinderWithTriGroupAC",),
|
||||
0x800E4628:("Collision_CylinderWithQuadAC",),
|
||||
0x800E47B8:("Collision_CylinderWithSphereAC",),
|
||||
0x800E494C:("Collision_TriGroupWithSphereGroupAC",),
|
||||
0x800E4B08:("Collision_TriGroupWithCylinderAC",),
|
||||
0x800E4C70:("Collision_TriGroupWithTriGroupAC",),
|
||||
0x800E4E24:("Collision_TriGroupWithQuad",),
|
||||
0x800E4FE4:("Collision_TriGroupWithSphereAC",),
|
||||
0x800E5154:("Collision_QuadWithSphereGroupAC",),
|
||||
0x800E531C:("Collision_QuadWithCylinderAC",),
|
||||
0x800E54DC:("Collision_QuadWithTriGroupAC",),
|
||||
0x800E56B8:("Collision_QuadWithQuadAC",),
|
||||
0x800E5874:("Collision_QuadWithSphereAC",),
|
||||
0x800E59A4:("Collision_SphereWithSphereGroupAC",),
|
||||
0x800E5B94:("Collision_SphereWithCylinderAC",),
|
||||
0x800E5D10:("Collision_SphereWithTriGroupAC",),
|
||||
0x800E5E54:("Collision_SphereWithQuadAC",),
|
||||
0x800E5F6C:("Collision_SphereWithSphereAC",),
|
||||
0x800E60C0:("func_800E60C0",),
|
||||
0x800E61A0:("func_800E61A0",),
|
||||
0x800E6238:("func_800E6238",),
|
||||
0x800E6320:("func_800E6320",),
|
||||
0x800E63B8:("func_800E63B8",),
|
||||
0x800E6450:("func_800E6450",),
|
||||
0x800E6524:("Collision_CollideWithAC",),
|
||||
0x800E6654:("Collision_DoATWithAC",),
|
||||
0x800E6724:("func_800E6724",),
|
||||
0x800E6760:("Collision_HandleCollisionOTWithOT",),
|
||||
0x800E6A9C:("Collision_SphereGroupWithSphereGroupOT",),
|
||||
0x800E6C84:("Collision_SphereGroupWithCylinderOT",),
|
||||
0x800E6DF4:("Collision_SphereGroupWithSphereOT",),
|
||||
0x800E6F64:("Collision_CylinderWithSphereGroupOT",),
|
||||
0x800E6F90:("Collision_CylinderWithCylinderOT",),
|
||||
0x800E7060:("Collision_CylinderWithSphereOT",),
|
||||
0x800E7130:("Collision_SphereWithSphereGroupOT",),
|
||||
0x800E715C:("Collision_SphereWithCylinderOT",),
|
||||
0x800E7188:("Collision_SphereWithSphereOT",),
|
||||
0x800E7264:("func_800E7264",),
|
||||
0x800E7288:("func_800E7288",),
|
||||
0x800E7308:("Collision_DoOTWithOT",),
|
||||
0x800E7494:("func_800E7494",),
|
||||
0x800E74DC:("func_800E74DC",),
|
||||
0x800E7508:("func_800E7508",),
|
||||
0x800E7530:("func_800E7530",),
|
||||
0x800E755C:("func_800E755C",),
|
||||
0x800E7590:("func_800E7590",),
|
||||
0x800E75C8:("func_800E75C8",),
|
||||
0x800E77EC:("func_800E77EC",),
|
||||
0x800E7894:("func_800E7894",),
|
||||
0x800E78B4:("func_800E78B4",),
|
||||
0x800E7948:("func_800E7948",),
|
||||
0x800E7968:("func_800E7968",),
|
||||
0x800E7988:("func_800E7988",),
|
||||
0x800E7A48:("func_800E7A48",),
|
||||
0x800E7B54:("func_800E7B54",),
|
||||
0x800E7BCC:("func_800E7BCC",),
|
||||
0x800E7C64:("func_800E7C64",),
|
||||
0x800E7DA8:("func_800E7DA8",),
|
||||
0x800E7DCC:("func_800E7DCC",),
|
||||
0x800E7DF8:("Collision_CylinderMoveToActor",),
|
||||
0x800E7E3C:("Collision_CylinderSetLoc",),
|
||||
0x800E7E5C:("Collision_QuadSetCoords",),
|
||||
0x800E7ECC:("Collision_TriGroupSetCoordsAtIndex",),
|
||||
0x800E7F8C:("Collision_InitTriParamsAtIndex",),
|
||||
0x800E7FDC:("func_800E7FDC",),
|
||||
0x800E8160:("func_800E8160",),
|
||||
0x800E823C:("func_800E823C",),
|
||||
0x800E8318:("func_800E8318",),
|
||||
0x800E8478:("func_800E8478",),
|
||||
0x800E85D4:("func_800E85D4",),
|
||||
0x800E8668:("func_800E8668",),
|
||||
0x800E8690:("func_800E8690",),
|
||||
0x800E86C0:("func_800E86C0",),
|
||||
0x800E86E0:("func_800E86E0",),
|
||||
0x800E8784:("func_800E8784",),
|
||||
0x800E03A0:("DamageTable_Get",),
|
||||
0x800E03CC:("DamageTable_Clear",),
|
||||
0x800E0410:("CollisionCheck_GetDamageAndEffectOnBumper",),
|
||||
0x800E04BC:("CollisionCheck_ApplyBumperDefense",),
|
||||
0x800E04EC:("CollisionCheck_GetToucherDamage",),
|
||||
0x800E0538:("Collider_InitBase",),
|
||||
0x800E0580:("Collider_DestroyBase",),
|
||||
0x800E0594:("Collider_SetBaseToActor",),
|
||||
0x800E05D4:("Collider_SetBaseType1",),
|
||||
0x800E0618:("Collider_SetBase",),
|
||||
0x800E065C:("Collider_ResetATBase",),
|
||||
0x800E0678:("Collider_ResetACBase",),
|
||||
0x800E0694:("Collider_ResetOCBase",),
|
||||
0x800E06BC:("Collider_InitTouch",),
|
||||
0x800E06E4:("Collider_DestroyTouch",),
|
||||
0x800E06F8:("Collider_SetTouch",),
|
||||
0x800E0720:("Collider_ResetATInfoUnk",),
|
||||
0x800E0730:("Collider_InitBump",),
|
||||
0x800E0760:("Collider_DestroyBump",),
|
||||
0x800E0774:("Collider_SetBump",),
|
||||
0x800E079C:("Collider_InitInfo",),
|
||||
0x800E081C:("Collider_DestroyInfo",),
|
||||
0x800E085C:("Collider_SetInfo",),
|
||||
0x800E08D4:("Collider_ResetATInfo",),
|
||||
0x800E090C:("Collider_ResetACInfo",),
|
||||
0x800E0944:("Collider_ResetOCInfo",),
|
||||
0x800E095C:("Collider_InitJntSphElementDim",),
|
||||
0x800E09A4:("Collider_DestroyJntSphElementDim",),
|
||||
0x800E09B8:("Collider_SetJntSphElementDim",),
|
||||
0x800E0A10:("Collider_InitJntSphElement",),
|
||||
0x800E0A50:("Collider_DestroyJntSphElement",),
|
||||
0x800E0A90:("Collider_SetJntSphElement",),
|
||||
0x800E0AE0:("Collider_ResetJntSphElementAT",),
|
||||
0x800E0B04:("Collider_ResetJntSphElementAC",),
|
||||
0x800E0B28:("Collider_ResetJntSphElementOC",),
|
||||
0x800E0B4C:("Collider_InitJntSph",),
|
||||
0x800E0B78:("Collider_FreeJntSph",),
|
||||
0x800E0C18:("Collider_DestroyJntSph",),
|
||||
0x800E0CA8:("Collider_SetJntSphToActor",),
|
||||
0x800E0D84:("Collider_SetJntSphAllocType1",),
|
||||
0x800E0E60:("Collider_SetJntSph",),
|
||||
0x800E0F14:("Collider_InitAndSetJntSph",),
|
||||
0x800E0F68:("Collider_ResetJntSphAT",),
|
||||
0x800E0FF4:("Collider_ResetJntSphAC",),
|
||||
0x800E1080:("Collider_ResetJntSphOC",),
|
||||
0x800E110C:("Collider_InitCylinderDim",),
|
||||
0x800E1148:("Collider_DestroyCylinderDim",),
|
||||
0x800E115C:("Collider_SetCylinderDim",),
|
||||
0x800E119C:("Collider_InitCylinder",),
|
||||
0x800E11EC:("Collider_DestroyCylinder",),
|
||||
0x800E123C:("Collider_SetCylinderToActor",),
|
||||
0x800E12A4:("Collider_SetCylinderType1",),
|
||||
0x800E130C:("Collider_SetCylinder",),
|
||||
0x800E1374:("Collider_InitAndSetCylinder",),
|
||||
0x800E13C0:("Collider_ResetCylinderAT",),
|
||||
0x800E1400:("Collider_ResetCylinderAC",),
|
||||
0x800E1440:("Collider_ResetCylinderOC",),
|
||||
0x800E1480:("Collider_InitTrisElementDim",),
|
||||
0x800E14CC:("Collider_DestroyTrisElementDim",),
|
||||
0x800E14E0:("Collider_SetTrisElementDim",),
|
||||
0x800E1594:("Collider_InitTrisElement",),
|
||||
0x800E15D4:("Collider_DestroyTrisElement",),
|
||||
0x800E1614:("Collider_SetTrisElement",),
|
||||
0x800E1664:("Collider_ResetTrisElementAT",),
|
||||
0x800E1688:("Collider_ResetTrisElementAC",),
|
||||
0x800E16AC:("Collider_ResetTrisElementOC",),
|
||||
0x800E16D0:("Collider_InitTris",),
|
||||
0x800E16FC:("Collider_FreeTris",),
|
||||
0x800E17B4:("Collider_DestroyTris",),
|
||||
0x800E1858:("Collider_SetTrisAllocType1",),
|
||||
0x800E1958:("Collider_SetTris",),
|
||||
0x800E1A24:("Collider_InitAndSetTris",),
|
||||
0x800E1A78:("Collider_ResetTrisAT",),
|
||||
0x800E1B18:("Collider_ResetTrisAC",),
|
||||
0x800E1BB8:("Collider_ResetTrisOC",),
|
||||
0x800E1C58:("Collider_InitQuadDim",),
|
||||
0x800E1CA4:("Collider_DestroyQuadDim",),
|
||||
0x800E1CB8:("Collider_ResetQuadACDist",),
|
||||
0x800E1CD4:("Collider_SetQuadMidpoints",),
|
||||
0x800E1D90:("Collider_SetQuadDim",),
|
||||
0x800E1E18:("Collider_InitQuad",),
|
||||
0x800E1E68:("Collider_DestroyQuad",),
|
||||
0x800E1EB8:("Collider_SetQuadType1",),
|
||||
0x800E1F20:("Collider_SetQuad",),
|
||||
0x800E1F88:("Collider_InitAndSetQuad",),
|
||||
0x800E1FD4:("Collider_ResetQuadAT",),
|
||||
0x800E2024:("Collider_ResetQuadAC",),
|
||||
0x800E2064:("Collider_ResetQuadOC",),
|
||||
0x800E20A4:("Collider_QuadSetNearestAC",),
|
||||
0x800E2154:("Collider_InitSphere",),
|
||||
0x800E21A4:("Collider_DestroySphere",),
|
||||
0x800E21F4:("Collider_SetSphere",),
|
||||
0x800E225C:("Collider_InitAndSetSphere",),
|
||||
0x800E22A8:("Collider_ResetSphereAT",),
|
||||
0x800E22E8:("Collider_ResetSphereAC",),
|
||||
0x800E2328:("Collider_ResetSphereOC",),
|
||||
0x800E2368:("Collider_InitLine",),
|
||||
0x800E23B0:("Collider_DestroyLine",),
|
||||
0x800E23C4:("Collider_SetLinePoints",),
|
||||
0x800E2408:("Collider_SetLine",),
|
||||
0x800E2434:("Collider_ResetLineOC",),
|
||||
0x800E2450:("CollisionCheck_InitContext",),
|
||||
0x800E2470:("CollisionCheck_DestroyContext",),
|
||||
0x800E2480:("CollisionCheck_ClearContext",),
|
||||
0x800E2528:("CollisionCheck_EnableSAC",),
|
||||
0x800E2540:("CollisionCheck_DisableSAC",),
|
||||
0x800E2558:("CollisionCheck_SetAT",),
|
||||
0x800E2634:("CollisionCheck_SetAT_SAC",),
|
||||
0x800E2740:("CollisionCheck_SetAC",),
|
||||
0x800E281C:("CollisionCheck_SetAC_SAC",),
|
||||
0x800E2928:("CollisionCheck_SetOC",),
|
||||
0x800E2A04:("CollisionCheck_SetOC_SAC",),
|
||||
0x800E2B10:("CollisionCheck_SetOCLine",),
|
||||
0x800E2B98:("CollisionCheck_SkipTouch",),
|
||||
0x800E2BBC:("CollisionCheck_SkipBump",),
|
||||
0x800E2BE0:("CollisionCheck_NoSharedFlags",),
|
||||
0x800E2C08:("CollisionCheck_NoBlood",),
|
||||
0x800E2C1C:("CollisionCheck_BlueBlood",),
|
||||
0x800E2D88:("CollisionCheck_GreenBlood",),
|
||||
0x800E2EF4:("CollisionCheck_WaterBurst",),
|
||||
0x800E2F30:("CollisionCheck_RedBlood",),
|
||||
0x800E2F54:("CollisionCheck_RedBloodUnused",),
|
||||
0x800E2F78:("CollisionCheck_HitSolid",),
|
||||
0x800E30C8:("CollisionCheck_SwordHitAudio",),
|
||||
0x800E3168:("CollisionCheck_HitEffects",),
|
||||
0x800E3304:("CollisionCheck_SetBounce",),
|
||||
0x800E3324:("CollisionCheck_SetATvsAC",),
|
||||
0x800E35C8:("CollisionCheck_TrisAvgPoint",),
|
||||
0x800E362C:("CollisionCheck_QuadAvgPoint",),
|
||||
0x800E36AC:("CollisionCheck_AC_JntSphVsJntSph",),
|
||||
0x800E38F8:("CollisionCheck_AC_JntSphVsCyl",),
|
||||
0x800E3B18:("CollisionCheck_AC_JntSphVsTris",),
|
||||
0x800E3CC0:("CollisionCheck_AC_JntSphVsQuad",),
|
||||
0x800E3E6C:("CollisionCheck_AC_JntSphVsSphere",),
|
||||
0x800E4058:("CollisionCheck_AC_CylVsJntSph",),
|
||||
0x800E4298:("CollisionCheck_AC_CylVsCyl",),
|
||||
0x800E44C0:("CollisionCheck_AC_CylVsTris",),
|
||||
0x800E4628:("CollisionCheck_AC_CylVsQuad",),
|
||||
0x800E47B8:("CollisionCheck_AC_CylVsSphere",),
|
||||
0x800E494C:("CollisionCheck_AC_TrisVsJntSph",),
|
||||
0x800E4B08:("CollisionCheck_AC_TrisVsCyl",),
|
||||
0x800E4C70:("CollisionCheck_AC_TrisVsTris",),
|
||||
0x800E4E24:("CollisionCheck_AC_TrisVsQuad",),
|
||||
0x800E4FE4:("CollisionCheck_AC_TrisVsSphere",),
|
||||
0x800E5154:("CollisionCheck_AC_QuadVsJntSph",),
|
||||
0x800E531C:("CollisionCheck_AC_QuadVsCyl",),
|
||||
0x800E54DC:("CollisionCheck_AC_QuadVsTris",),
|
||||
0x800E56B8:("CollisionCheck_AC_QuadVsQuad",),
|
||||
0x800E5874:("CollisionCheck_AC_QuadVsSphere",),
|
||||
0x800E59A4:("CollisionCheck_AC_SphereVsJntSph",),
|
||||
0x800E5B94:("CollisionCheck_AC_SphereVsCylinder",),
|
||||
0x800E5D10:("CollisionCheck_AC_SphereVsTris",),
|
||||
0x800E5E54:("CollisionCheck_AC_SphereVsQuad",),
|
||||
0x800E5F6C:("CollisionCheck_AC_SphereVsSphere",),
|
||||
0x800E60C0:("CollisionCheck_SetJntSphHitFX",),
|
||||
0x800E61A0:("CollisionCheck_SetCylHitFX",),
|
||||
0x800E6238:("CollisionCheck_SetTrisHitFX",),
|
||||
0x800E6320:("CollisionCheck_SetQuadHitFX",),
|
||||
0x800E63B8:("CollisionCheck_SetSphereHitFX",),
|
||||
0x800E6450:("CollisionCheck_SetHitEffects",),
|
||||
0x800E6524:("CollisionCheck_AC",),
|
||||
0x800E6654:("CollisionCheck_AT",),
|
||||
0x800E6724:("CollisionCheck_GetMassType",),
|
||||
0x800E6760:("CollisionCheck_SetOCvsOC",),
|
||||
0x800E6A9C:("CollisionCheck_OC_JntSphVsJntSph",),
|
||||
0x800E6C84:("CollisionCheck_OC_JntSphVsCyl",),
|
||||
0x800E6DF4:("CollisionCheck_OC_JntSphVsSphere",),
|
||||
0x800E6F64:("CollisionCheck_OC_CylVsJntSph",),
|
||||
0x800E6F90:("CollisionCheck_OC_CylVsCyl",),
|
||||
0x800E7060:("CollisionCheck_OC_CylVsSphere",),
|
||||
0x800E7130:("CollisionCheck_OC_SphereVsJntSph",),
|
||||
0x800E715C:("CollisionCheck_OC_SphereVsCyl",),
|
||||
0x800E7188:("CollisionCheck_OC_SphereVsSphere",),
|
||||
0x800E7264:("CollisionCheck_SkipOC",),
|
||||
0x800E7288:("CollisionCheck_Incompatible",),
|
||||
0x800E7308:("CollisionCheck_OC",),
|
||||
0x800E7494:("CollisionCheck_InitInfo",),
|
||||
0x800E74DC:("CollisionCheck_ResetDamage",),
|
||||
0x800E7508:("CollisionCheck_SetInfoNoDamageTable",),
|
||||
0x800E7530:("CollisionCheck_SetInfo",),
|
||||
0x800E755C:("CollisionCheck_SetInfo2",),
|
||||
0x800E7590:("CollisionCheck_SetInfoGetDamageTable",),
|
||||
0x800E75C8:("CollisionCheck_ApplyDamage",),
|
||||
0x800E77EC:("CollisionCheck_ApplyDamageJntSph",),
|
||||
0x800E7894:("CollisionCheck_ApplyDamageCyl",),
|
||||
0x800E78B4:("CollisionCheck_ApplyDamageTris",),
|
||||
0x800E7948:("CollisionCheck_ApplyDamageQuad",),
|
||||
0x800E7968:("CollisionCheck_ApplyDamageSphere",),
|
||||
0x800E7988:("CollisionCheck_Damage",),
|
||||
0x800E7A48:("CollisionCheck_LineOC_JntSph",),
|
||||
0x800E7B54:("CollisionCheck_LineOC_Cyl",),
|
||||
0x800E7BCC:("CollisionCheck_LineOC_Sphere",),
|
||||
0x800E7C64:("CollisionCheck_LineOC",),
|
||||
0x800E7DA8:("CollisionCheck_LineOCCheckAll",),
|
||||
0x800E7DCC:("CollisionCheck_LineOCCheck",),
|
||||
0x800E7DF8:("Collider_UpdateCylinder",),
|
||||
0x800E7E3C:("Collider_SetCylinderPosition",),
|
||||
0x800E7E5C:("Collider_SetQuadVertices",),
|
||||
0x800E7ECC:("Collider_SetTrisVertices",),
|
||||
0x800E7F8C:("Collider_SetTrisDim",),
|
||||
0x800E7FDC:("Collider_UpdateSpheres",),
|
||||
0x800E8160:("Collider_UpdateSpheresElement",),
|
||||
0x800E823C:("Collider_UpdateSphere",),
|
||||
0x800E8318:("CollisionCheck_SpawnRedBlood",),
|
||||
0x800E8478:("CollisionCheck_SpawnWaterDroplets",),
|
||||
0x800E85D4:("CollisionCheck_SpawnShieldParticles",),
|
||||
0x800E8668:("CollisionCheck_SpawnShieldParticlesMetal",),
|
||||
0x800E8690:("CollisionCheck_SpawnShieldParticlesMetalSound",),
|
||||
0x800E86C0:("CollisionCheck_SpawnShieldParticlesMetal2",),
|
||||
0x800E86E0:("CollisionCheck_SpawnShieldParticlesWood",),
|
||||
0x800E8784:("CollisionCheck_CylSideVsLineSeg",),
|
||||
0x800E8EA0:("func_800E8EA0",),
|
||||
0x800E8ED0:("nop_800E8ED0",),
|
||||
0x800E8EE0:("nop_800E8EE0",),
|
||||
|
||||
+3
-2
@@ -274,7 +274,7 @@
|
||||
0x800CAE10:"",
|
||||
0x800CB000:"",
|
||||
0x800CB210:"z_camera",
|
||||
0x800E03A0:"",
|
||||
0x800E03A0:"z_collision_btltbls",
|
||||
0x800E0410:"z_collision_check",
|
||||
0x800E8EA0:"",
|
||||
0x800E9360:"",
|
||||
@@ -405,7 +405,8 @@
|
||||
0x801AEFD0:"code_data_z_actor_dlftbls",
|
||||
0x801B4620:"code_data_z_bgcheck",
|
||||
0x801B4710:"code_data_z_camera",
|
||||
0x801B9F20:"code_data_z_collision_check",
|
||||
0x801B9F20:"code_data_z_collision_btltbls",
|
||||
0x801BA200:"code_data_z_collision_check",
|
||||
0x801BA550:"code_data_z_debug_display",
|
||||
0x801BB090:"code_data_z_debug_mode",
|
||||
0x801BB170:"code_data_z_draw",
|
||||
|
||||
+66
-85
@@ -354,11 +354,11 @@
|
||||
0x801AAAB0:("D_801AAAB0","UNK_TYPE1","",0x1),
|
||||
0x801AD370:("D_801AD370","UNK_TYPE1","",0x1),
|
||||
0x801ADE60:("En_A_Obj_InitVars","ActorInit","",0x20),
|
||||
0x801ADE80:("enAObjCylinderInit","ColCylinderInit","",0x2c),
|
||||
0x801ADE80:("enAObjCylinderInit","ColliderCylinderInit","",0x2c),
|
||||
0x801ADEAC:("enAObjInitVar","ActorInitVar","",0x4),
|
||||
0x801ADEB0:("enAObjDisplayLists","u32","[2]",0x8),
|
||||
0x801ADEC0:("En_Item00_InitVars","ActorInit","",0x20),
|
||||
0x801ADEE0:("enItem00CylinderInit","ColCylinderInit","",0x2c),
|
||||
0x801ADEE0:("enItem00CylinderInit","ColliderCylinderInit","",0x2c),
|
||||
0x801ADF0C:("enItem00InitVars","ActorInitVar","[1]",0x4),
|
||||
0x801ADF10:("D_801ADF10","UNK_TYPE1","",0x1),
|
||||
0x801ADF14:("D_801ADF14","UNK_TYPE1","",0x1),
|
||||
@@ -853,37 +853,30 @@
|
||||
0x801B9F04:("D_801B9F04","UNK_TYPE4","",0x4),
|
||||
0x801B9F0C:("D_801B9F0C","UNK_TYPE2","",0x2),
|
||||
0x801B9F10:("D_801B9F10","UNK_TYPE4","",0x4),
|
||||
0x801B9F20:("D_801B9F20","s800E03A0","[23]",0x2e0),
|
||||
0x801BA200:("gDamageMultipliers","f32","[16]",0x40),
|
||||
0x801BA240:("defaultColCommon","ColCommon","",0x18),
|
||||
0x801BA258:("defaultColTouch","ColTouch","",0x8),
|
||||
0x801BA260:("defaultColBump","ColBump","",0xc),
|
||||
0x801BA26C:("defaultColBodyInfo","ColBodyInfo","",0x28),
|
||||
0x801BA294:("defaultColSphereInfo","ColSphereParams","",0x18),
|
||||
0x801BA2AC:("defaultColCylinderInfo","ColCylinderParams","",0xc),
|
||||
0x801BA2B8:("defaultColTriParams","ColTriParams","",0x34),
|
||||
0x801BA2EC:("defaultColQuadParams","ColQuadParams","",0x40),
|
||||
0x801BA32C:("D_801BA32C","UNK_TYPE1","",0x1),
|
||||
0x801BA338:("collisionAddATFuncs","collision_add_func","[5]",0x14),
|
||||
0x801BA34C:("collisionAddACFuncs","collision_add_func","[5]",0x14),
|
||||
0x801BA360:("collisionAddOTFuncs","collision_add_func","[5]",0x14),
|
||||
0x801BA374:("D_801BA374","UNK_PTR","",0x4),
|
||||
0x801BA38C:("D_801BA38C","UNK_TYPE1","",0x1),
|
||||
0x801BA38D:("D_801BA38D","UNK_TYPE1","",0x1),
|
||||
0x801BA3A8:("D_801BA3A8","UNK_PTR","",0x4),
|
||||
0x801BA3BC:("collisionFuncTableATwithAC","collision_func","[25]",0x64),
|
||||
0x801BA420:("collisionFuncTableOTwithOT","collision_func","[25]",0x64),
|
||||
0x801BA484:("D_801BA484","CollisionCheckInfo","",0x1c),
|
||||
0x801BA4A0:("D_801BA4A0","UNK_PTR","",0x4),
|
||||
0x801BA4B4:("D_801BA4B4","UNK_TYPE1","",0x1),
|
||||
0x801BA4C8:("D_801BA4C8","EffShieldParticleInit","",0x40),
|
||||
0x801BA4F6:("D_801BA4F6","UNK_TYPE1","",0x1),
|
||||
0x801BA4F8:("D_801BA4F8","UNK_TYPE1","",0x1),
|
||||
0x801BA4FA:("D_801BA4FA","UNK_TYPE1","",0x1),
|
||||
0x801BA508:("D_801BA508","EffShieldParticleInit","",0x40),
|
||||
0x801BA536:("D_801BA536","UNK_TYPE1","",0x1),
|
||||
0x801BA538:("D_801BA538","UNK_TYPE1","",0x1),
|
||||
0x801BA53A:("D_801BA53A","UNK_TYPE1","",0x1),
|
||||
0x801B9F20:("sDamageTablePresets","DamageTable","[23]",0x2e0),
|
||||
0x801BA200:("damageMultipliers","f32","[16]",0x40),
|
||||
0x801BA240:("defaultCollider","Collider","",0x18),
|
||||
0x801BA258:("defaultColliderTouch","ColliderTouch","",0x8),
|
||||
0x801BA260:("defaultColliderBump","ColliderBump","",0xc),
|
||||
0x801BA26C:("defaultColliderInfo","ColliderInfo","",0x28),
|
||||
0x801BA294:("defaultColliderJntSphElementDim","ColliderJntSphElementDim","",0x18),
|
||||
0x801BA2AC:("defaultColliderCylinderDim","Cylinder16","",0xc),
|
||||
0x801BA2B8:("defaultColliderTrisElementDim","TriNorm","",0x34),
|
||||
0x801BA2EC:("defaultColliderQuadDim","ColliderQuadDim","",0x40),
|
||||
0x801BA32C:("defaultLinePoint","Vec3f","",0xC),
|
||||
0x801BA338:("sATResetFuncs","ColChkResetFunc","[5]",0x14),
|
||||
0x801BA34C:("sACResetFuncs","ColChkResetFunc","[5]",0x14),
|
||||
0x801BA360:("sOCResetFuncs","ColChkResetFunc","[5]",0x14),
|
||||
0x801BA374:("sBloodFuncs","ColChkBloodFunc","[]",0x18),
|
||||
0x801BA38C:("sHitInfo","HitInfo","[]",0x1C),
|
||||
0x801BA3A8:("sColChkApplyFuncs","ColChkApplyFunc","",0x14),
|
||||
0x801BA3BC:("sACVsFuncs","ColChkVsFunc","[5][5]",0x64),
|
||||
0x801BA420:("sOCVsFuncs","ColChkVsFunc","[5][5]",0x64),
|
||||
0x801BA484:("defaultColChkInfo","CollisionCheckInfo","",0x1c),
|
||||
0x801BA4A0:("sApplyDamageFuncs","ColChkApplyFunc","",0x14),
|
||||
0x801BA4B4:("sOCLineCheckFuncs","ColChkLineFunc","",0x14),
|
||||
0x801BA4C8:("shieldParticleInitMetal","EffShieldParticleInit","",0x40),
|
||||
0x801BA508:("shieldParticleInitWood","EffShieldParticleInit","",0x40),
|
||||
0x801BA550:("D_801BA550","UNK_TYPE1","",0x1),
|
||||
0x801BA750:("D_801BA750","UNK_TYPE1","",0x1),
|
||||
0x801BA790:("D_801BA790","UNK_TYPE1","",0x1),
|
||||
@@ -936,7 +929,7 @@
|
||||
0x801BD8C0:("actorCutscenesGlobalCtxt","GlobalContext*","",0x4),
|
||||
0x801BD8C4:("actorCutsceneReturnCamera","s16","",0x2),
|
||||
0x801BD8C6:("D_801BD8C6","s16","",0x2),
|
||||
0x801BD8D0:("fireObjCollisionInit","ColCylinderInit","",0x2c),
|
||||
0x801BD8D0:("fireObjCollisionInit","ColliderCylinderInit","",0x2c),
|
||||
0x801BD8FC:("D_801BD8FC","FireObjLightParams","[2]",0x10),
|
||||
0x801BD910:("initialGameStateInfo","GameStateOverlay","",0x30),
|
||||
0x801BD940:("D_801BD940","GameStateOverlay","",0x30),
|
||||
@@ -3980,8 +3973,8 @@
|
||||
0x801EDB9C:("D_801EDB9C","f32","",0x4),
|
||||
0x801EDBA0:("D_801EDBA0","f32","",0x4),
|
||||
0x801EDBA4:("D_801EDBA4","UNK_TYPE1","",0x1),
|
||||
0x801EDBA8:("D_801EDBA8","ColSphereCollisionInfo","",0x8),
|
||||
0x801EDBB0:("D_801EDBB0","ColTriParams","",0x34),
|
||||
0x801EDBA8:("D_801EDBA8","Sphere16","",0x8),
|
||||
0x801EDBB0:("D_801EDBB0","TriNorm","",0x34),
|
||||
0x801EDBD4:("D_801EDBD4","UNK_TYPE1","",0x1),
|
||||
0x801EDBD8:("D_801EDBD8","UNK_TYPE1","",0x1),
|
||||
0x801EDBDC:("D_801EDBDC","UNK_TYPE1","",0x1),
|
||||
@@ -4008,54 +4001,42 @@
|
||||
0x801EDDE0:("D_801EDDE0","UNK_TYPE1","",0x1),
|
||||
0x801EDDF0:("D_801EDDF0","UNK_TYPE1","",0x1),
|
||||
0x801EDE00:("D_801EDE00","Vec3f","",0xc),
|
||||
0x801EDE10:("D_801EDE10","UNK_TYPE1","",0x1),
|
||||
0x801EDE10:("D_801EDE10","Vec3f","",0xc),
|
||||
0x801EDE20:("D_801EDE20","Vec3f","",0xc),
|
||||
0x801EDE30:("D_801EDE30","UNK_TYPE1","",0x1),
|
||||
0x801EDE40:("D_801EDE40","UNK_TYPE1","",0x1),
|
||||
0x801EDE78:("D_801EDE78","UNK_TYPE1","",0x1),
|
||||
0x801EDEB0:("D_801EDEB0","UNK_TYPE1","",0x1),
|
||||
0x801EDEBC:("D_801EDEBC","UNK_TYPE1","",0x1),
|
||||
0x801EDEC8:("D_801EDEC8","UNK_TYPE1","",0x1),
|
||||
0x801EDF00:("D_801EDF00","UNK_TYPE1","",0x1),
|
||||
0x801EDF38:("D_801EDF38","UNK_TYPE1","",0x1),
|
||||
0x801EDF48:("D_801EDF48","UNK_TYPE1","",0x1),
|
||||
0x801EDF58:("D_801EDF58","UNK_TYPE1","",0x1),
|
||||
0x801EDF90:("D_801EDF90","UNK_TYPE1","",0x1),
|
||||
0x801EDFC8:("D_801EDFC8","UNK_TYPE1","",0x1),
|
||||
0x801EDFD4:("D_801EDFD4","UNK_TYPE1","",0x1),
|
||||
0x801EDFE0:("D_801EDFE0","UNK_TYPE1","",0x1),
|
||||
0x801EDFF0:("D_801EDFF0","UNK_TYPE1","",0x1),
|
||||
0x801EE000:("D_801EE000","UNK_TYPE1","",0x1),
|
||||
0x801EE038:("D_801EE038","UNK_TYPE1","",0x1),
|
||||
0x801EE070:("D_801EE070","UNK_TYPE1","",0x1),
|
||||
0x801EE0A4:("D_801EE0A4","UNK_TYPE1","",0x1),
|
||||
0x801EE0D8:("D_801EE0D8","UNK_TYPE1","",0x1),
|
||||
0x801EE0E8:("D_801EE0E8","UNK_TYPE1","",0x1),
|
||||
0x801EE11C:("D_801EE11C","UNK_TYPE1","",0x1),
|
||||
0x801EE150:("D_801EE150","UNK_TYPE1","",0x1),
|
||||
0x801EE188:("D_801EE188","UNK_TYPE1","",0x1),
|
||||
0x801EE1C0:("D_801EE1C0","UNK_TYPE1","",0x1),
|
||||
0x801EE1C4:("D_801EE1C4","UNK_TYPE1","",0x1),
|
||||
0x801EE1C8:("D_801EE1C8","UNK_TYPE1","",0x1),
|
||||
0x801EE1D0:("D_801EE1D0","UNK_TYPE1","",0x1),
|
||||
0x801EE1D4:("D_801EE1D4","UNK_TYPE1","",0x1),
|
||||
0x801EE1D8:("D_801EE1D8","UNK_TYPE1","",0x1),
|
||||
0x801EE1E0:("D_801EE1E0","UNK_TYPE1","",0x1),
|
||||
0x801EE1E4:("D_801EE1E4","UNK_TYPE1","",0x1),
|
||||
0x801EE1E8:("D_801EE1E8","UNK_TYPE1","",0x1),
|
||||
0x801EE1F0:("D_801EE1F0","UNK_TYPE1","",0x1),
|
||||
0x801EE1F4:("D_801EE1F4","UNK_TYPE1","",0x1),
|
||||
0x801EE1F8:("D_801EE1F8","UNK_TYPE1","",0x1),
|
||||
0x801EDE30:("D_801EDE30","Vec3f","",0xc),
|
||||
0x801EDE40:("D_801EDE40","TriNorm","",0x34),
|
||||
0x801EDE78:("D_801EDE78","TriNorm","",0x34),
|
||||
0x801EDEB0:("D_801EDEB0","LineSegment","",0x18),
|
||||
0x801EDEC8:("D_801EDEC8","TriNorm","",0x34),
|
||||
0x801EDF00:("D_801EDF00","TriNorm","",0x34),
|
||||
0x801EDF38:("D_801EDF38","Vec3f","",0xC),
|
||||
0x801EDF48:("D_801EDF48","Vec3f","",0xC),
|
||||
0x801EDF58:("D_801EDF58","TriNorm","",0x34),
|
||||
0x801EDF90:("D_801EDF90","TriNorm","",0x34),
|
||||
0x801EDFC8:("D_801EDFC8","LineSegment","",0x18),
|
||||
0x801EDFE0:("D_801EDFE0","Vec3f","",0xC),
|
||||
0x801EDFF0:("D_801EDFF0","Vec3f","",0xC),
|
||||
0x801EE000:("D_801EE000","TriNorm","",0x34),
|
||||
0x801EE038:("D_801EE038","TriNorm","",0x34),
|
||||
0x801EE070:("D_801EE070","TriNorm","[]",0x68),
|
||||
0x801EE0D8:("D_801EE0D8","Vec3f","",0xC),
|
||||
0x801EE0E8:("D_801EE0E8","TriNorm","[]",0x68),
|
||||
0x801EE150:("D_801EE150","TriNorm","",0x34),
|
||||
0x801EE188:("D_801EE188","TriNorm","",0x34),
|
||||
0x801EE1C0:("D_801EE1C0","Vec3f","",0xC),
|
||||
0x801EE1D0:("D_801EE1D0","Vec3f","",0xC),
|
||||
0x801EE1E0:("D_801EE1E0","Vec3f","",0xC),
|
||||
0x801EE1F0:("D_801EE1F0","Vec3f","",0xC),
|
||||
0x801EE200:("D_801EE200","EffSparkParams","",0x4c4),
|
||||
0x801EE6C8:("D_801EE6C8","ColTriParams","",0x34),
|
||||
0x801EE700:("D_801EE700","ColTriParams","",0x34),
|
||||
0x801EE6C8:("D_801EE6C8","TriNorm","",0x34),
|
||||
0x801EE700:("D_801EE700","TriNorm","",0x34),
|
||||
0x801EE738:("D_801EE738","EffSparkParams","",0x4c4),
|
||||
0x801EEC00:("D_801EEC00","EffSparkParams","",0x4c4),
|
||||
0x801EF0C8:("D_801EF0C8","EffSparkParams","",0x4c4),
|
||||
0x801EF590:("D_801EF590","UNK_TYPE1","",0x1),
|
||||
0x801EF5C8:("D_801EF5C8","UNK_TYPE1","",0x1),
|
||||
0x801EF600:("D_801EF600","ColTriParams","",0x34),
|
||||
0x801EF638:("D_801EF638","ColTriParams","",0x34),
|
||||
0x801EF590:("D_801EF590","TriNorm","",0x34),
|
||||
0x801EF5C8:("D_801EF5C8","TriNorm","",0x34),
|
||||
0x801EF600:("D_801EF600","TriNorm","",0x34),
|
||||
0x801EF638:("D_801EF638","TriNorm","",0x34),
|
||||
0x801EF66D:("D_801EF66D","UNK_TYPE1","",0x1),
|
||||
0x801EF670:("gSaveContext","SaveContext","",0x48c8),
|
||||
0x801F3F38:("D_801F3F38","UNK_TYPE2","",0x2),
|
||||
@@ -6015,9 +5996,9 @@
|
||||
0x80870DAC:("enOkutaOverlayInfoOffset","u32","",0x4),
|
||||
0x80872DA0:("En_Bom_InitVars","ActorInit","",0x20),
|
||||
0x80872DC0:("enBomScales","f32","[2]",0x8),
|
||||
0x80872DC8:("D_80872DC8","ColCylinderInit","",0x2c),
|
||||
0x80872DF4:("D_80872DF4","ColSphereGroupElementInit","[1]",0x24),
|
||||
0x80872E18:("D_80872E18","ColSphereGroupInit","",0x10),
|
||||
0x80872DC8:("D_80872DC8","ColliderCylinderInit","",0x2c),
|
||||
0x80872DF4:("D_80872DF4","ColliderJntSphElementInit","[1]",0x24),
|
||||
0x80872E18:("D_80872E18","ColliderJntSphInit","",0x10),
|
||||
0x80872E28:("D_80872E28","UNK_TYPE1","",0x1),
|
||||
0x80872E4C:("D_80872E4C","UNK_TYPE1","",0x1),
|
||||
0x80872E5C:("D_80872E5C","ActorInitVar","[3]",0xc),
|
||||
@@ -6154,7 +6135,7 @@
|
||||
0x80879414:("enDodongoOverlayRelocations","u32","[182]",0x2d8),
|
||||
0x808796EC:("enDodongoOverlayInfoOffset","u32","",0x4),
|
||||
0x8087B450:("En_Firefly_InitVars","ActorInit","",0x20),
|
||||
0x8087B470:("enFireflyCollisionInit","ColSphereInit","",0x2c),
|
||||
0x8087B470:("enFireflyCollisionInit","ColliderSphereInit","",0x2c),
|
||||
0x8087B498:("D_8087B498","UNK_TYPE1","",0x1),
|
||||
0x8087B49C:("D_8087B49C","UNK_TYPE1","",0x1),
|
||||
0x8087B4A4:("enFireflyDamageTable","DamageTable","",0x20),
|
||||
@@ -17805,7 +17786,7 @@
|
||||
0x80BD5314:("bgIkanaBombwallOverlayRelocations","u32","[39]",0x9c),
|
||||
0x80BD53BC:("bgIkanaBombwallOverlayInfoOffset","u32","",0x4),
|
||||
0x80BD55D0:("Bg_Ikana_Ray_InitVars","ActorInit","",0x20),
|
||||
0x80BD55F0:("bgIkanaRayCylinderInit","ColCylinderInit","",0x2c),
|
||||
0x80BD55F0:("bgIkanaRayCylinderInit","ColliderCylinderInit","",0x2c),
|
||||
0x80BD561C:("bgIkanaRayCompInit","ActorInitVar","[4]",0x10),
|
||||
0x80BD5630:("bgIkanaRayOverlayInfo","OverlayRelocationSection","",0x14),
|
||||
0x80BD5644:("bgIkanaRayOverlayRelocations","u32","[17]",0x44),
|
||||
@@ -17849,7 +17830,7 @@
|
||||
0x80BD7A04:("bgIknvDoukutuOverlayRelocations","u32","[39]",0x9c),
|
||||
0x80BD7AAC:("bgIknvDoukutuOverlayInfoOffset","u32","",0x4),
|
||||
0x80BD81D0:("Bg_Iknv_Obj_InitVars","ActorInit","",0x20),
|
||||
0x80BD81F0:("BgIknvObjCollisionInit","ColCylinderInit","",0x2c),
|
||||
0x80BD81F0:("BgIknvObjCollisionInit","ColliderCylinderInit","",0x2c),
|
||||
0x80BD8220:("bgIknvObjOverlayInfo","OverlayRelocationSection","",0x14),
|
||||
0x80BD8234:("bgIknvObjOverlayRelocations","u32","[27]",0x6c),
|
||||
0x80BD82AC:("bgIknvObjOverlayInfoOffset","u32","",0x4),
|
||||
|
||||
@@ -0,0 +1,750 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse, os, struct
|
||||
|
||||
actor_names = [
|
||||
"ovl_Player_Actor",
|
||||
"ovl_En_Test",
|
||||
"ovl_En_GirlA",
|
||||
"ovl_En_Part",
|
||||
"ovl_En_Light",
|
||||
"ovl_En_Door",
|
||||
"ovl_En_Box",
|
||||
"ovl_En_Pametfrog",
|
||||
"ovl_En_Okuta",
|
||||
"ovl_En_Bom",
|
||||
"ovl_En_Wallmas",
|
||||
"ovl_En_Dodongo",
|
||||
"ovl_En_Firefly",
|
||||
"ovl_En_Horse",
|
||||
"ovl_En_Item00",
|
||||
"ovl_En_Arrow",
|
||||
"ovl_En_Elf",
|
||||
"ovl_En_Niw",
|
||||
"ovl_En_Tite",
|
||||
"",
|
||||
"ovl_En_Peehat",
|
||||
"ovl_En_Butte",
|
||||
"ovl_En_Insect",
|
||||
"ovl_En_Fish",
|
||||
"ovl_En_Holl",
|
||||
"ovl_En_Dinofos",
|
||||
"ovl_En_Hata",
|
||||
"ovl_En_Zl1",
|
||||
"ovl_En_Viewer",
|
||||
"ovl_En_Bubble",
|
||||
"ovl_Door_Shutter",
|
||||
"",
|
||||
"ovl_En_Boom",
|
||||
"ovl_En_Torch2",
|
||||
"ovl_En_Minifrog",
|
||||
"",
|
||||
"ovl_En_St",
|
||||
"",
|
||||
"ovl_En_A_Obj",
|
||||
"ovl_Obj_Wturn",
|
||||
"ovl_En_River_Sound",
|
||||
"",
|
||||
"ovl_En_Ossan",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Famos",
|
||||
"",
|
||||
"ovl_En_Bombf",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Am",
|
||||
"ovl_En_Dekubaba",
|
||||
"ovl_En_M_Fire1",
|
||||
"ovl_ovl_En_M_Thunder",
|
||||
"ovl_Bg_Breakwall",
|
||||
"",
|
||||
"ovl_Door_Warp1",
|
||||
"ovl_Obj_Syokudai",
|
||||
"ovl_Item_B_Heart",
|
||||
"ovl_En_Dekunuts",
|
||||
"ovl_En_Bbfall",
|
||||
"ovl_Arms_Hook",
|
||||
"ovl_En_Bb",
|
||||
"ovl_Bg_Keikoku_Spr",
|
||||
"",
|
||||
"ovl_En_Wood02",
|
||||
"",
|
||||
"ovl_En_Death",
|
||||
"ovl_En_Minideath",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Vm",
|
||||
"ovl_Demo_Effect",
|
||||
"ovl_Demo_Kankyo",
|
||||
"ovl_En_Floormas",
|
||||
"",
|
||||
"ovl_En_Rd",
|
||||
"ovl_Bg_F40_Flift",
|
||||
"",
|
||||
"ovl_Obj_Mure",
|
||||
"ovl_En_Sw",
|
||||
"ovl_Object_Kankyo",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Horse_Link_Child",
|
||||
"ovl_Door_Ana",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Encount1",
|
||||
"ovl_Demo_Tre_Lgt",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Encount2",
|
||||
"ovl_En_Fire_Rock",
|
||||
"ovl_Bg_Ctower_Rot",
|
||||
"ovl_Mir_Ray",
|
||||
"",
|
||||
"ovl_En_Sb",
|
||||
"ovl_En_Bigslime",
|
||||
"ovl_En_Karebaba",
|
||||
"ovl_En_In",
|
||||
"",
|
||||
"ovl_En_Ru",
|
||||
"ovl_En_Bom_Chu",
|
||||
"ovl_En_Horse_Game_Check",
|
||||
"ovl_En_Rr",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Fr",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_Obj_Oshihiki",
|
||||
"ovl_Eff_Dust",
|
||||
"ovl_Bg_Umajump",
|
||||
"ovl_Arrow_Fire",
|
||||
"ovl_Arrow_Ice",
|
||||
"ovl_Arrow_Light",
|
||||
"ovl_Item_Etcetera",
|
||||
"ovl_Obj_Kibako",
|
||||
"ovl_Obj_Tsubo",
|
||||
"",
|
||||
"ovl_En_Ik",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_Demo_Shd",
|
||||
"ovl_En_Dns",
|
||||
"ovl_Elf_Msg",
|
||||
"ovl_En_Honotrap",
|
||||
"ovl_En_Tubo_Trap",
|
||||
"ovl_Obj_Ice_Poly",
|
||||
"ovl_En_Fz",
|
||||
"ovl_En_Kusa",
|
||||
"ovl_Obj_Bean",
|
||||
"ovl_Obj_Bombiwa",
|
||||
"ovl_Obj_Switch",
|
||||
"",
|
||||
"ovl_Obj_Lift",
|
||||
"ovl_Obj_Hsblock",
|
||||
"ovl_En_Okarina_Tag",
|
||||
"",
|
||||
"ovl_En_Goroiwa",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Daiku",
|
||||
"ovl_En_Nwc",
|
||||
"ovl_Item_Inbox",
|
||||
"ovl_En_Ge1",
|
||||
"ovl_Obj_Blockstop",
|
||||
"ovl_En_Sda",
|
||||
"ovl_En_Clear_Tag",
|
||||
"",
|
||||
"ovl_En_Gm",
|
||||
"ovl_En_Ms",
|
||||
"ovl_En_Hs",
|
||||
"ovl_Bg_Ingate",
|
||||
"ovl_En_Kanban",
|
||||
"",
|
||||
"ovl_En_Attack_Niw",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Mk",
|
||||
"ovl_En_Owl",
|
||||
"ovl_En_Ishi",
|
||||
"ovl_Obj_Hana",
|
||||
"ovl_Obj_Lightswitch",
|
||||
"ovl_Obj_Mure2",
|
||||
"",
|
||||
"ovl_En_Fu",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Stream",
|
||||
"ovl_En_Mm",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Weather_Tag",
|
||||
"ovl_En_Ani",
|
||||
"",
|
||||
"ovl_En_Js",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Okarina_Effect",
|
||||
"ovl_En_Mag",
|
||||
"ovl_Elf_Msg2",
|
||||
"ovl_Bg_F40_Swlift",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Kakasi",
|
||||
"ovl_Obj_Makeoshihiki",
|
||||
"ovl_Oceff_Spot",
|
||||
"",
|
||||
"ovl_En_Torch",
|
||||
"",
|
||||
"ovl_Shot_Sun",
|
||||
"",
|
||||
"",
|
||||
"ovl_Obj_Roomtimer",
|
||||
"ovl_En_Ssh",
|
||||
"",
|
||||
"ovl_Oceff_Wipe",
|
||||
"ovl_Oceff_Storm",
|
||||
"ovl_Obj_Demo",
|
||||
"ovl_En_Minislime",
|
||||
"ovl_En_Nutsball",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ovl_Oceff_Wipe2",
|
||||
"ovl_Oceff_Wipe3",
|
||||
"",
|
||||
"ovl_En_Dg",
|
||||
"ovl_En_Si",
|
||||
"ovl_Obj_Comb",
|
||||
"ovl_Obj_Kibako2",
|
||||
"",
|
||||
"ovl_En_Hs2",
|
||||
"ovl_Obj_Mure3",
|
||||
"ovl_En_Tg",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Wf",
|
||||
"ovl_En_Skb",
|
||||
"",
|
||||
"ovl_En_Gs",
|
||||
"ovl_Obj_Sound",
|
||||
"ovl_En_Crow",
|
||||
"",
|
||||
"ovl_En_Cow",
|
||||
"",
|
||||
"",
|
||||
"ovl_Oceff_Wipe4",
|
||||
"",
|
||||
"ovl_En_Zo",
|
||||
"ovl_Obj_Makekinsuta",
|
||||
"ovl_En_Ge3",
|
||||
"",
|
||||
"ovl_Obj_Hamishi",
|
||||
"ovl_En_Zl4",
|
||||
"ovl_En_Mm2",
|
||||
"",
|
||||
"ovl_Door_Spiral",
|
||||
"",
|
||||
"ovl_Obj_Pzlblock",
|
||||
"ovl_Obj_Toge",
|
||||
"",
|
||||
"ovl_Obj_Armos",
|
||||
"ovl_Obj_Boyo",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Grasshopper",
|
||||
"",
|
||||
"ovl_Obj_Grass",
|
||||
"ovl_Obj_Grass_Carry",
|
||||
"ovl_Obj_Grass_Unit",
|
||||
"",
|
||||
"",
|
||||
"ovl_Bg_Fire_Wall",
|
||||
"ovl_En_Bu",
|
||||
"ovl_En_Encount3",
|
||||
"ovl_En_Jso",
|
||||
"ovl_Obj_Chikuwa",
|
||||
"ovl_En_Knight",
|
||||
"ovl_En_Warp_tag",
|
||||
"ovl_En_Aob_01",
|
||||
"ovl_En_Boj_01",
|
||||
"ovl_En_Boj_02",
|
||||
"ovl_En_Boj_03",
|
||||
"ovl_En_Encount4",
|
||||
"ovl_En_Bom_Bowl_Man",
|
||||
"ovl_En_Syateki_Man",
|
||||
"",
|
||||
"ovl_Bg_Icicle",
|
||||
"ovl_En_Syateki_Crow",
|
||||
"ovl_En_Boj_04",
|
||||
"ovl_En_Cne_01",
|
||||
"ovl_En_Bba_01",
|
||||
"ovl_En_Bji_01",
|
||||
"ovl_Bg_Spdweb",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Mt_tag",
|
||||
"ovl_Boss_01",
|
||||
"ovl_Boss_02",
|
||||
"ovl_Boss_03",
|
||||
"ovl_Boss_04",
|
||||
"ovl_Boss_05",
|
||||
"ovl_Boss_06",
|
||||
"ovl_Boss_07",
|
||||
"ovl_Bg_Dy_Yoseizo",
|
||||
"",
|
||||
"ovl_En_Boj_05",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Sob1",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Go",
|
||||
"",
|
||||
"ovl_En_Raf",
|
||||
"ovl_Obj_Funen",
|
||||
"ovl_Obj_Raillift",
|
||||
"ovl_Bg_Numa_Hana",
|
||||
"ovl_Obj_Flowerpot",
|
||||
"ovl_Obj_Spinyroll",
|
||||
"ovl_Dm_Hina",
|
||||
"ovl_En_Syateki_Wf",
|
||||
"ovl_Obj_Skateblock",
|
||||
"ovl_Obj_Iceblock",
|
||||
"ovl_En_Bigpamet",
|
||||
"ovl_En_Syateki_Dekunuts",
|
||||
"ovl_Elf_Msg3",
|
||||
"ovl_En_Fg",
|
||||
"ovl_Dm_Ravine",
|
||||
"ovl_Dm_Sa",
|
||||
"ovl_En_Slime",
|
||||
"ovl_En_Pr",
|
||||
"ovl_Obj_Toudai",
|
||||
"ovl_Obj_Entotu",
|
||||
"ovl_Obj_Bell",
|
||||
"ovl_En_Syateki_Okuta",
|
||||
"",
|
||||
"ovl_Obj_Shutter",
|
||||
"ovl_Dm_Zl",
|
||||
"ovl_En_Elfgrp",
|
||||
"ovl_Dm_Tsg",
|
||||
"ovl_En_Baguo",
|
||||
"ovl_Obj_Vspinyroll",
|
||||
"ovl_Obj_Smork",
|
||||
"ovl_En_Test2",
|
||||
"ovl_En_Test3",
|
||||
"ovl_En_Test4",
|
||||
"ovl_En_Bat",
|
||||
"ovl_En_Sekihi",
|
||||
"ovl_En_Wiz",
|
||||
"ovl_En_Wiz_Brock",
|
||||
"ovl_En_Wiz_Fire",
|
||||
"ovl_Eff_Change",
|
||||
"ovl_Dm_Statue",
|
||||
"ovl_Obj_Fireshield",
|
||||
"ovl_Bg_Ladder",
|
||||
"ovl_En_Mkk",
|
||||
"ovl_Demo_Getitem",
|
||||
"",
|
||||
"ovl_En_Dnb",
|
||||
"ovl_En_Dnh",
|
||||
"ovl_En_Dnk",
|
||||
"ovl_En_Dnq",
|
||||
"",
|
||||
"ovl_Bg_Keikoku_Saku",
|
||||
"ovl_Obj_Hugebombiwa",
|
||||
"ovl_En_Firefly2",
|
||||
"ovl_En_Rat",
|
||||
"ovl_En_Water_Effect",
|
||||
"ovl_En_Kusa2",
|
||||
"ovl_Bg_Spout_Fire",
|
||||
"",
|
||||
"ovl_Bg_Dblue_Movebg",
|
||||
"ovl_En_Dy_Extra",
|
||||
"ovl_En_Bal",
|
||||
"ovl_En_Ginko_Man",
|
||||
"ovl_En_Warp_Uzu",
|
||||
"ovl_Obj_Driftice",
|
||||
"ovl_En_Look_Nuts",
|
||||
"ovl_En_Mushi2",
|
||||
"ovl_En_Fall",
|
||||
"ovl_En_Mm3",
|
||||
"ovl_Bg_Crace_Movebg",
|
||||
"ovl_En_Dno",
|
||||
"ovl_En_Pr2",
|
||||
"ovl_En_Prz",
|
||||
"ovl_En_Jso2",
|
||||
"ovl_Obj_Etcetera",
|
||||
"ovl_En_Egol",
|
||||
"ovl_Obj_Mine",
|
||||
"ovl_Obj_Purify",
|
||||
"ovl_En_Tru",
|
||||
"ovl_En_Trt",
|
||||
"",
|
||||
"",
|
||||
"ovl_En_Test5",
|
||||
"ovl_En_Test6",
|
||||
"ovl_En_Az",
|
||||
"ovl_En_Estone",
|
||||
"ovl_Bg_Hakugin_Post",
|
||||
"ovl_Dm_Opstage",
|
||||
"ovl_Dm_Stk",
|
||||
"ovl_Dm_Char00",
|
||||
"ovl_Dm_Char01",
|
||||
"ovl_Dm_Char02",
|
||||
"ovl_Dm_Char03",
|
||||
"ovl_Dm_Char04",
|
||||
"ovl_Dm_Char05",
|
||||
"ovl_Dm_Char06",
|
||||
"ovl_Dm_Char07",
|
||||
"ovl_Dm_Char08",
|
||||
"ovl_Dm_Char09",
|
||||
"ovl_Obj_Tokeidai",
|
||||
"",
|
||||
"ovl_En_Mnk",
|
||||
"ovl_En_Egblock",
|
||||
"ovl_En_Guard_Nuts",
|
||||
"ovl_Bg_Hakugin_Bombwall",
|
||||
"ovl_Obj_Tokei_Tobira",
|
||||
"ovl_Bg_Hakugin_Elvpole",
|
||||
"ovl_En_Ma4",
|
||||
"ovl_En_Twig",
|
||||
"ovl_En_Po_Fusen",
|
||||
"ovl_En_Door_Etc",
|
||||
"ovl_En_Bigokuta",
|
||||
"ovl_Bg_Icefloe",
|
||||
"ovl_Obj_Ocarinalift",
|
||||
"ovl_En_Time_Tag",
|
||||
"ovl_Bg_Open_Shutter",
|
||||
"ovl_Bg_Open_Spot",
|
||||
"ovl_Bg_Fu_Kaiten",
|
||||
"ovl_Obj_Aqua",
|
||||
"ovl_En_Elforg",
|
||||
"ovl_En_Elfbub",
|
||||
"",
|
||||
"ovl_En_Fu_Mato",
|
||||
"ovl_En_Fu_Kago",
|
||||
"ovl_En_Osn",
|
||||
"ovl_Bg_Ctower_Gear",
|
||||
"ovl_En_Trt2",
|
||||
"ovl_Obj_Tokei_Step",
|
||||
"ovl_Bg_Lotus",
|
||||
"ovl_En_Kame",
|
||||
"ovl_Obj_Takaraya_Wall",
|
||||
"ovl_Bg_Fu_Mizu",
|
||||
"ovl_En_Sellnuts",
|
||||
"ovl_Bg_Dkjail_Ivy",
|
||||
"",
|
||||
"ovl_Obj_Visiblock",
|
||||
"ovl_En_Takaraya",
|
||||
"ovl_En_Tsn",
|
||||
"ovl_En_Ds2n",
|
||||
"ovl_En_Fsn",
|
||||
"ovl_En_Shn",
|
||||
"",
|
||||
"ovl_En_Stop_heishi",
|
||||
"ovl_Obj_Bigicicle",
|
||||
"ovl_En_Lift_Nuts",
|
||||
"ovl_En_Tk",
|
||||
"",
|
||||
"ovl_Bg_Market_Step",
|
||||
"ovl_Obj_Lupygamelift",
|
||||
"ovl_En_Test7",
|
||||
"ovl_Obj_Lightblock",
|
||||
"ovl_Mir_Ray2",
|
||||
"ovl_En_Wdhand",
|
||||
"ovl_En_Gamelupy",
|
||||
"ovl_Bg_Danpei_Movebg",
|
||||
"ovl_En_Snowwd",
|
||||
"ovl_En_Pm",
|
||||
"ovl_En_Gakufu",
|
||||
"ovl_Elf_Msg4",
|
||||
"ovl_Elf_Msg5",
|
||||
"ovl_En_Col_Man",
|
||||
"ovl_En_Talk_Gibud",
|
||||
"ovl_En_Giant",
|
||||
"ovl_Obj_Snowball",
|
||||
"ovl_Boss_Hakugin",
|
||||
"ovl_En_Gb2",
|
||||
"ovl_En_Onpuman",
|
||||
"ovl_Bg_Tobira01",
|
||||
"ovl_En_Tag_Obj",
|
||||
"ovl_Obj_Dhouse",
|
||||
"ovl_Obj_Hakaisi",
|
||||
"ovl_Bg_Hakugin_Switch",
|
||||
"",
|
||||
"ovl_En_Snowman",
|
||||
"ovl_TG_Sw",
|
||||
"ovl_En_Po_Sisters",
|
||||
"ovl_En_Pp",
|
||||
"ovl_En_Hakurock",
|
||||
"ovl_En_Hanabi",
|
||||
"ovl_Obj_Dowsing",
|
||||
"ovl_Obj_Wind",
|
||||
"ovl_En_Racedog",
|
||||
"ovl_En_Kendo_Js",
|
||||
"ovl_Bg_Botihasira",
|
||||
"ovl_En_Fish2",
|
||||
"ovl_En_Pst",
|
||||
"ovl_En_Poh",
|
||||
"ovl_Obj_Spidertent",
|
||||
"ovl_En_Zoraegg",
|
||||
"ovl_En_Kbt",
|
||||
"ovl_En_Gg",
|
||||
"ovl_En_Maruta",
|
||||
"ovl_Obj_Snowball2",
|
||||
"ovl_En_Gg2",
|
||||
"ovl_Obj_Ghaka",
|
||||
"ovl_En_Dnp",
|
||||
"ovl_En_Dai",
|
||||
"ovl_Bg_Goron_Oyu",
|
||||
"ovl_En_Kgy",
|
||||
"ovl_En_Invadepoh",
|
||||
"ovl_En_Gk",
|
||||
"ovl_En_An",
|
||||
"",
|
||||
"ovl_En_Bee",
|
||||
"ovl_En_Ot",
|
||||
"ovl_En_Dragon",
|
||||
"ovl_Obj_Dora",
|
||||
"ovl_En_Bigpo",
|
||||
"ovl_Obj_Kendo_Kanban",
|
||||
"ovl_Obj_Hariko",
|
||||
"ovl_En_Sth",
|
||||
"ovl_Bg_Sinkai_Kabe",
|
||||
"ovl_Bg_Haka_Curtain",
|
||||
"ovl_Bg_Kin2_Bombwall",
|
||||
"ovl_Bg_Kin2_Fence",
|
||||
"ovl_Bg_Kin2_Picture",
|
||||
"ovl_Bg_Kin2_Shelf",
|
||||
"ovl_En_Rail_Skb",
|
||||
"ovl_En_Jg",
|
||||
"ovl_En_Tru_Mt",
|
||||
"ovl_Obj_Um",
|
||||
"ovl_En_Neo_Reeba",
|
||||
"ovl_Bg_Mbar_Chair",
|
||||
"ovl_Bg_Ikana_Block",
|
||||
"ovl_Bg_Ikana_Mirror",
|
||||
"ovl_Bg_Ikana_Rotaryroom",
|
||||
"ovl_Bg_Dblue_Balance",
|
||||
"ovl_Bg_Dblue_Waterfall",
|
||||
"ovl_En_Kaizoku",
|
||||
"ovl_En_Ge2",
|
||||
"ovl_En_Ma_Yts",
|
||||
"ovl_En_Ma_Yto",
|
||||
"ovl_Obj_Tokei_Turret",
|
||||
"ovl_Bg_Dblue_Elevator",
|
||||
"ovl_Obj_Warpstone",
|
||||
"ovl_En_Zog",
|
||||
"ovl_Obj_Rotlift",
|
||||
"ovl_Obj_Jg_Gakki",
|
||||
"ovl_Bg_Inibs_Movebg",
|
||||
"ovl_En_Zot",
|
||||
"ovl_Obj_Tree",
|
||||
"ovl_Obj_Y2lift",
|
||||
"ovl_Obj_Y2shutter",
|
||||
"ovl_Obj_Boat",
|
||||
"ovl_Obj_Taru",
|
||||
"ovl_Obj_Hunsui",
|
||||
"ovl_En_Jc_Mato",
|
||||
"ovl_Mir_Ray3",
|
||||
"ovl_En_Zob",
|
||||
"ovl_Elf_Msg6",
|
||||
"ovl_Obj_Nozoki",
|
||||
"ovl_En_Toto",
|
||||
"ovl_En_Railgibud",
|
||||
"ovl_En_Baba",
|
||||
"ovl_En_Suttari",
|
||||
"ovl_En_Zod",
|
||||
"ovl_En_Kujiya",
|
||||
"ovl_En_Geg",
|
||||
"ovl_Obj_Kinoko",
|
||||
"ovl_Obj_Yasi",
|
||||
"ovl_En_Tanron1",
|
||||
"ovl_En_Tanron2",
|
||||
"ovl_En_Tanron3",
|
||||
"ovl_Obj_Chan",
|
||||
"ovl_En_Zos",
|
||||
"ovl_En_S_Goro",
|
||||
"ovl_En_Nb",
|
||||
"ovl_En_Ja",
|
||||
"ovl_Bg_F40_Block",
|
||||
"ovl_Bg_F40_Switch",
|
||||
"ovl_En_Po_Composer",
|
||||
"ovl_En_Guruguru",
|
||||
"ovl_Oceff_Wipe5",
|
||||
"ovl_En_Stone_heishi",
|
||||
"ovl_Oceff_Wipe6",
|
||||
"ovl_En_Scopenuts",
|
||||
"ovl_En_Scopecrow",
|
||||
"ovl_Oceff_Wipe7",
|
||||
"ovl_Eff_Kamejima_Wave",
|
||||
"ovl_En_Hg",
|
||||
"ovl_En_Hgo",
|
||||
"ovl_En_Zov",
|
||||
"ovl_En_Ah",
|
||||
"ovl_Obj_Hgdoor",
|
||||
"ovl_Bg_Ikana_Bombwall",
|
||||
"ovl_Bg_Ikana_Ray",
|
||||
"ovl_Bg_Ikana_Shutter",
|
||||
"ovl_Bg_Haka_Bombwall",
|
||||
"ovl_Bg_Haka_Tomb",
|
||||
"ovl_En_Sc_Ruppe",
|
||||
"ovl_Bg_Iknv_Doukutu",
|
||||
"ovl_Bg_Iknv_Obj",
|
||||
"ovl_En_Pamera",
|
||||
"ovl_Obj_HsStump",
|
||||
"ovl_En_Hidden_Nuts",
|
||||
"ovl_En_Zow",
|
||||
"ovl_En_Talk",
|
||||
"ovl_En_Al",
|
||||
"ovl_En_Tab",
|
||||
"ovl_En_Nimotsu",
|
||||
"ovl_En_Hit_Tag",
|
||||
"ovl_En_Ruppecrow",
|
||||
"ovl_En_Tanron4",
|
||||
"ovl_En_Tanron5",
|
||||
"ovl_En_Tanron6",
|
||||
"ovl_En_Daiku2",
|
||||
"ovl_En_Muto",
|
||||
"ovl_En_Baisen",
|
||||
"ovl_En_Heishi",
|
||||
"ovl_En_Demo_heishi",
|
||||
"ovl_En_Dt",
|
||||
"ovl_En_Cha",
|
||||
"ovl_Obj_Dinner",
|
||||
"ovl_Eff_Lastday",
|
||||
"ovl_Bg_Ikana_Dharma",
|
||||
"ovl_En_Akindonuts",
|
||||
"ovl_Eff_Stk",
|
||||
"ovl_En_Ig",
|
||||
"ovl_En_Rg",
|
||||
"ovl_En_Osk",
|
||||
"ovl_En_Sth2",
|
||||
"ovl_En_Yb",
|
||||
"ovl_En_Rz",
|
||||
"ovl_En_Scopecoin",
|
||||
"ovl_En_Bjt",
|
||||
"ovl_En_Bomjima",
|
||||
"ovl_En_Bomjimb",
|
||||
"ovl_En_Bombers",
|
||||
"ovl_En_Bombers2",
|
||||
"ovl_En_Bombal",
|
||||
"ovl_Obj_Moon_Stone",
|
||||
"ovl_Obj_Mu_Pict",
|
||||
"ovl_Bg_Ikninside",
|
||||
"ovl_Eff_Zoraband",
|
||||
"ovl_Obj_Kepn_Koya",
|
||||
"ovl_Obj_Usiyane",
|
||||
"ovl_En_Nnh",
|
||||
"ovl_Obj_Kzsaku",
|
||||
"ovl_Obj_Milk_Bin",
|
||||
"ovl_En_Kitan",
|
||||
"ovl_Bg_Astr_Bombwall",
|
||||
"ovl_Bg_Iknin_Susceil",
|
||||
"ovl_En_Bsb",
|
||||
"ovl_En_Recepgirl",
|
||||
"ovl_En_Thiefbird",
|
||||
"ovl_En_Jgame_Tsn",
|
||||
"ovl_Obj_Jgame_Light",
|
||||
"ovl_Obj_Yado",
|
||||
"ovl_Demo_Syoten",
|
||||
"ovl_Demo_Moonend",
|
||||
"ovl_Bg_Lbfshot",
|
||||
"ovl_Bg_Last_Bwall",
|
||||
"ovl_En_And",
|
||||
"ovl_En_Invadepoh_Demo",
|
||||
"ovl_Obj_Danpeilift",
|
||||
"ovl_En_Fall2",
|
||||
"ovl_Dm_Al",
|
||||
"ovl_Dm_An",
|
||||
"ovl_Dm_Ah",
|
||||
"ovl_Dm_Nb",
|
||||
"ovl_En_Drs",
|
||||
"ovl_En_Ending_Hero",
|
||||
"ovl_Dm_Bal",
|
||||
"ovl_En_Paper",
|
||||
"ovl_En_Hint_Skb",
|
||||
"ovl_Dm_Tag",
|
||||
"ovl_En_Bh",
|
||||
"ovl_En_Ending_Hero2",
|
||||
"ovl_En_Ending_Hero3",
|
||||
"ovl_En_Ending_Hero4",
|
||||
"ovl_En_Ending_Hero5",
|
||||
"ovl_En_Ending_Hero6",
|
||||
"ovl_Dm_Gm",
|
||||
"ovl_Obj_Swprize",
|
||||
"ovl_En_Invisible_Ruppe",
|
||||
"ovl_Obj_Ending",
|
||||
"ovl_En_Rsn",
|
||||
]
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
repo = script_dir + os.sep + ".." + os.sep + ".." + os.sep
|
||||
|
||||
def as_word(b, off=0):
|
||||
return struct.unpack(">I", b[off:off+4])[0]
|
||||
|
||||
def as_word_list(b):
|
||||
return [i[0] for i in struct.iter_unpack(">I", b)]
|
||||
|
||||
def null_or_ptr(w):
|
||||
return (w == 0) or (w >= 0x80000000 and w < 0x81000000)
|
||||
|
||||
# (name, vrom_st, vrom_end, vram_st, vram_end)
|
||||
def read_actor_ovl_tbl():
|
||||
actortbl = []
|
||||
with open(repo + "decomp/code","rb") as codefile:
|
||||
codefile.seek(0x109510) # actor overlay table offset into code
|
||||
entry = as_word_list(codefile.read(0x20))
|
||||
i = 0
|
||||
while (entry[4] == 0x00000000 and all([null_or_ptr(e) for e in entry[2:4]]) and
|
||||
((entry[7] & 0xFFFF) == 0) and (null_or_ptr(entry[5]))):
|
||||
actortbl.append((actor_names[i], entry[0], entry[1], entry[2], entry[3]))
|
||||
entry = as_word_list(codefile.read(0x20))
|
||||
i += 1
|
||||
return actortbl
|
||||
|
||||
actor_tbl = read_actor_ovl_tbl()
|
||||
|
||||
def resolve_symbol(address):
|
||||
"""
|
||||
Returns (overlay file path, file offset) from a given VRAM address
|
||||
"""
|
||||
for entry in actor_tbl:
|
||||
if address >= 0x80000000:
|
||||
if entry[3] <= address < entry[4]:
|
||||
return repo + "decomp" + os.sep + entry[0], address - entry[3]
|
||||
else:
|
||||
if entry[1] <= address < entry[2]:
|
||||
return repo + "decomp" + os.sep + entry[0], address - entry[1]
|
||||
else:
|
||||
return None, None
|
||||
|
||||
def HexParse(s):
|
||||
return int(s, 16)
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('address', help="VRAM or VROM address to get overlay file and offset for", type=HexParse)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
file_path,offset = resolve_symbol(args.address)
|
||||
print(f"0x{args.address:08X} is 0x{offset:X} into {file_path}")
|
||||
@@ -0,0 +1,452 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import struct
|
||||
import argparse
|
||||
from actor_symbols import resolve_symbol
|
||||
|
||||
T_DEFAULT = ''
|
||||
TType1 = 'Type1'
|
||||
T_ACTOR = '_Actor'
|
||||
|
||||
TYPE_ENUM = [
|
||||
"COLTYPE_HIT0",
|
||||
"COLTYPE_HIT1",
|
||||
"COLTYPE_HIT2",
|
||||
"COLTYPE_HIT3",
|
||||
"COLTYPE_HIT4",
|
||||
"COLTYPE_HIT5",
|
||||
"COLTYPE_HIT6",
|
||||
"COLTYPE_HIT7",
|
||||
"COLTYPE_HIT8",
|
||||
"COLTYPE_METAL",
|
||||
"COLTYPE_NONE",
|
||||
"COLTYPE_WOOD",
|
||||
"COLTYPE_HARD",
|
||||
"COLTYPE_TREE" ]
|
||||
|
||||
SHAPE_ENUM = [
|
||||
"COLSHAPE_JNTSPH",
|
||||
"COLSHAPE_CYLINDER",
|
||||
"COLSHAPE_TRIS",
|
||||
"COLSHAPE_QUAD",
|
||||
"COLSHAPE_SPHERE" ]
|
||||
|
||||
ELEMTYPE_UNKENUM = [
|
||||
"ELEMTYPE_UNK0",
|
||||
"ELEMTYPE_UNK1",
|
||||
"ELEMTYPE_UNK2",
|
||||
"ELEMTYPE_UNK3",
|
||||
"ELEMTYPE_UNK4",
|
||||
"ELEMTYPE_UNK5",
|
||||
"ELEMTYPE_UNK6"]
|
||||
|
||||
ATFLAGS_ENUM = [
|
||||
"AT_ON",
|
||||
"AT_HIT",
|
||||
"AT_BOUNCED",
|
||||
"AT_TYPE_PLAYER",
|
||||
"AT_TYPE_ENEMY",
|
||||
"AT_TYPE_OTHER",
|
||||
"AT_SELF"]
|
||||
|
||||
ACFLAGS_ENUM = [
|
||||
"AC_ON",
|
||||
"AC_HIT",
|
||||
"AC_HARD",
|
||||
"AC_TYPE_PLAYER",
|
||||
"AC_TYPE_ENEMY",
|
||||
"AC_TYPE_OTHER",
|
||||
"AC_NO_DAMAGE",
|
||||
"AC_BOUNCED"]
|
||||
|
||||
OCFLAGS_ENUM = [
|
||||
"OC1_ON",
|
||||
"OC1_HIT",
|
||||
"OC1_NO_PUSH",
|
||||
"OC1_TYPE_PLAYER",
|
||||
"OC1_TYPE_1",
|
||||
"OC1_TYPE_2"]
|
||||
|
||||
OCTYPE_ENUM = [
|
||||
"OC2_HIT_PLAYER",
|
||||
"OC2_UNK1",
|
||||
"OC2_UNK2",
|
||||
"OC2_TYPE_PLAYER",
|
||||
"OC2_TYPE_1",
|
||||
"OC2_TYPE_2",
|
||||
"OC2_FIRST_ONLY"]
|
||||
|
||||
TOUCHERFLAGS_ENUM = [
|
||||
"TOUCH_ON",
|
||||
"TOUCH_HIT",
|
||||
"TOUCH_NEAREST",
|
||||
"TOUCH_SFX_HARD",
|
||||
"TOUCH_SFX_WOOD",
|
||||
"TOUCH_AT_HITMARK",
|
||||
"TOUCH_DREW_HITMARK",
|
||||
"TOUCH_UNK7"]
|
||||
|
||||
BUMPERFLAGS_ENUM = [
|
||||
"BUMP_ON",
|
||||
"BUMP_HIT",
|
||||
"BUMP_HOOKABLE",
|
||||
"BUMP_NO_AT_INFO",
|
||||
"BUMP_NO_DAMAGE",
|
||||
"BUMP_NO_SWORD_SFX",
|
||||
"BUMP_NO_HITMARK",
|
||||
"BUMP_DRAW_HITMARK"]
|
||||
|
||||
OCELEMFLAGS_ENUM = [
|
||||
"OCELEM_ON",
|
||||
"OCELEM_HIT",
|
||||
"OCELEM_UNK2",
|
||||
"OCELEM_UNK3",
|
||||
"OCELEM_UNK4",
|
||||
"OCELEM_UNK5",
|
||||
"OCELEM_UNK6",
|
||||
"OCELEM_UNK7",]
|
||||
|
||||
sf_ColliderInit = ">BBBBBB"
|
||||
sf_ColliderInitType1 = ">BBBBB"
|
||||
sf_ColliderInitToActor = ">IBBBB"
|
||||
sf_ColliderBodyInit = ">B3xIBB2xIBB2xBBB"
|
||||
sf_JntSph = ">II"
|
||||
sf_JntSphElement = ">Bx5h"
|
||||
sf_Cylinder16 = ">6h"
|
||||
sf_Tris = ">II"
|
||||
sf_TrisElement = ">9f"
|
||||
sf_Quad = ">12f"
|
||||
sf_Sphere = sf_JntSphElement
|
||||
|
||||
f_ColliderInit = "{{ {0}, {1}, {2}, {3}, {4}, {5}, }}"
|
||||
f_ColliderInitType1 = "{{ {0}, {1}, {2}, {3}, {4}, }}"
|
||||
f_ColliderInitToActor = "{{ {0}, {1}, {2}, {3}, {4}, }}"
|
||||
f_ColliderBodyInit = "{{ {0}, {{ 0x{1:08X}, 0x{2:02X}, 0x{3:02X} }}, {{ 0x{4:08X}, 0x{5:02X}, 0x{6:02X} }}, {7}, {8}, {9}, }}"
|
||||
f_JntSph = "{0}, D_{1:08X}"
|
||||
f_JntSphElement = "{{ {0}, {{ {{ {1}, {2}, {3} }}, {4} }}, {5} }}"
|
||||
f_Cylinder16 = "{{ {0}, {1}, {2}, {{ {3}, {4}, {5} }} }}"
|
||||
f_Tris = "{0}, D_{1:08X}"
|
||||
f_TrisElement = "{{ {{ {{ {0}f, {1}f, {2}f }}, {{ {3}f, {4}f, {5}f }}, {{ {6}f, {7}f, {8}f }} }} }}"
|
||||
f_Quad = "{{ {{ {{ {0}f, {1}f, {2}f }}, {{ {3}f, {4}f, {5}f }}, {{ {6}f, {7}f, {8}f }}, {{ {9}f, {10}f, {11}f }} }} }}"
|
||||
f_Sphere = f_JntSphElement
|
||||
|
||||
def GetATflags(at):
|
||||
for i, flag in enumerate(ATFLAGS_ENUM):
|
||||
if(i == 0):
|
||||
if(at & (1 << i)):
|
||||
output = "AT_ON"
|
||||
else:
|
||||
output = "AT_NONE"
|
||||
elif(at & (1 << i)):
|
||||
output += " | " + flag
|
||||
return output.replace("AT_TYPE_PLAYER | AT_TYPE_ENEMY | AT_TYPE_OTHER","AT_TYPE_ALL")
|
||||
|
||||
def GetACflags(at):
|
||||
for i, flag in enumerate(ACFLAGS_ENUM):
|
||||
if(i == 0):
|
||||
if(at & (1 << i)):
|
||||
output = "AC_ON"
|
||||
else:
|
||||
output = "AC_NONE"
|
||||
elif(at & (1 << i)):
|
||||
output += " | " + flag
|
||||
return output.replace("AC_TYPE_OTHER | AC_TYPE_ENEMY | AC_TYPE_PLAYER","AC_TYPE_ALL")
|
||||
|
||||
def GetOCflags(at):
|
||||
for i, flag in enumerate(OCFLAGS_ENUM):
|
||||
if(i == 0):
|
||||
if(at & (1 << i)):
|
||||
output = "OC1_ON"
|
||||
else:
|
||||
output = "OC1_NONE"
|
||||
elif(at & (1 << i)):
|
||||
output += " | " + flag
|
||||
return output.replace("OC1_TYPE_PLAYER | OC1_TYPE_1 | OC1_TYPE_2","OC1_TYPE_ALL")
|
||||
|
||||
def GetOCtype(at):
|
||||
output = ""
|
||||
for i, flag in enumerate(OCTYPE_ENUM):
|
||||
if(at & (1 << i)):
|
||||
output = " | " + flag + output
|
||||
if(output == ""):
|
||||
return "OC2_NONE"
|
||||
else:
|
||||
return output.strip(" | ")
|
||||
|
||||
def GetToucherFlags(at):
|
||||
for i, flag in enumerate(TOUCHERFLAGS_ENUM):
|
||||
if(i == 0):
|
||||
if(at & (1 << i)):
|
||||
output = "TOUCH_ON"
|
||||
else:
|
||||
output = "TOUCH_NONE"
|
||||
elif(at & (1 << i)):
|
||||
output += " | " + flag
|
||||
if(i == 4 and output.find("SFX") == -1 and output.find("OFF") == -1):
|
||||
output += " | TOUCH_SFX_NORMAL"
|
||||
return output.replace("TOUCH_SFX_HARD | TOUCH_SFX_WOOD", "TOUCH_SFX_NONE")
|
||||
|
||||
def GetBumperFlags(at):
|
||||
for i, flag in enumerate(BUMPERFLAGS_ENUM):
|
||||
if(i == 0):
|
||||
if(at & (1 << i)):
|
||||
output = "BUMP_ON"
|
||||
else:
|
||||
output = "BUMP_NONE"
|
||||
elif(at & (1 << i)):
|
||||
output += " | " + flag
|
||||
return output
|
||||
|
||||
def GetOcElemFlags(at):
|
||||
for i, flag in enumerate(OCELEMFLAGS_ENUM):
|
||||
if(i == 0):
|
||||
if(at & (1 << i)):
|
||||
output = "OCELEM_ON"
|
||||
else:
|
||||
output = "OCELEM_NONE"
|
||||
elif(at & (1 << i)):
|
||||
output += " | " + flag
|
||||
return output
|
||||
|
||||
def GetColliderFormat(type):
|
||||
if type == T_DEFAULT:
|
||||
return (sf_ColliderInit, f_ColliderInit)
|
||||
if type == TType1:
|
||||
return (sf_ColliderInitType1, f_ColliderInitType1)
|
||||
if type == T_ACTOR:
|
||||
return (sf_ColliderInitToActor, f_ColliderInitToActor)
|
||||
return None
|
||||
|
||||
def GetColliderStr(data, off, type):
|
||||
cf = GetColliderFormat(type)
|
||||
cBase = list(struct.unpack_from(cf[0], data, off))
|
||||
if type == T_ACTOR:
|
||||
if cBase[0] == 0:
|
||||
cBase[0] = 'NULL'
|
||||
else:
|
||||
cBase[0] = '0x{0:08X}'.format(cBase[0])
|
||||
else:
|
||||
if cBase[0] < 14:
|
||||
cBase[0] = TYPE_ENUM[cBase[0]]
|
||||
else:
|
||||
cBase[0] = '0x{0:02X}'.format(cBase[0])
|
||||
|
||||
cBase[1] = GetATflags(cBase[1])
|
||||
cBase[2] = GetACflags(cBase[2])
|
||||
cBase[3] = GetOCflags(cBase[3])
|
||||
|
||||
if type == T_DEFAULT:
|
||||
cBase[4] = GetOCtype(cBase[4])
|
||||
i = 5
|
||||
else:
|
||||
i = 4
|
||||
|
||||
if cBase[i] < 5:
|
||||
cBase[i] = SHAPE_ENUM[cBase[i]]
|
||||
else:
|
||||
cBase[i] = '0x{0:02X}'.format(cBase[i])
|
||||
|
||||
return cf[1].format(*cBase)
|
||||
|
||||
def GetItems(data, off, count, structf, fmt, size):
|
||||
result = ''
|
||||
for i in range(count):
|
||||
ioff = (i * size)
|
||||
cBody = list(struct.unpack_from(sf_ColliderBodyInit, data, off + ioff))
|
||||
cItem = struct.unpack_from(structf, data, off + 0x18 + ioff)
|
||||
|
||||
if cBody[0] < 7:
|
||||
cBody[0] = ELEMTYPE_UNKENUM[cBody[0]]
|
||||
else:
|
||||
cBody[0] = '0x{0:02X}'.format(cBody[0])
|
||||
|
||||
cBody[7] = GetToucherFlags(cBody[7])
|
||||
cBody[8] = GetBumperFlags(cBody[8])
|
||||
cBody[9] = GetOcElemFlags(cBody[9])
|
||||
|
||||
result += '''
|
||||
{{
|
||||
{0},
|
||||
{1},
|
||||
}},'''.format(f_ColliderBodyInit.format(*cBody), fmt.format(*cItem))
|
||||
return result
|
||||
|
||||
def GetJntSphElements(data, off, count):
|
||||
items = GetItems(data, off, count, sf_JntSphElement, f_JntSphElement, 0x24)
|
||||
return('''
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[{0}] = {{{1}
|
||||
}};
|
||||
'''.format(count, items))
|
||||
|
||||
def GetJntSph(data, off, type):
|
||||
sBase = GetColliderStr(data, off, type)
|
||||
cJntSph = struct.unpack_from(sf_JntSph, data, off + 8)
|
||||
|
||||
return('''
|
||||
static ColliderJntSphInit{0} sJntSphInit = {{
|
||||
{1},
|
||||
{2},
|
||||
}};
|
||||
'''.format(type, sBase, f_JntSph.format(*cJntSph)))
|
||||
|
||||
|
||||
def GetTrisElements(data, off, count):
|
||||
items = GetItems(data, off, count, sf_TrisElement, f_TrisElement, 0x3C)
|
||||
return('''
|
||||
static ColliderTrisElementInit sTrisElementsInit[{0}] = {{{1}
|
||||
}};
|
||||
'''.format(count, items))
|
||||
|
||||
|
||||
def GetCylinder(data, off, type):
|
||||
sBase = GetColliderStr(data, off, type)
|
||||
cBody = list(struct.unpack_from(sf_ColliderBodyInit, data, off + 0x08))
|
||||
cCyl16 = struct.unpack_from(sf_Cylinder16, data, off + 0x20)
|
||||
|
||||
if cBody[0] < 7:
|
||||
cBody[0] = ELEMTYPE_UNKENUM[cBody[0]]
|
||||
else:
|
||||
cBody[0] = '0x{0:02X}'.format(cBody[0])
|
||||
|
||||
cBody[7] = GetToucherFlags(cBody[7])
|
||||
cBody[8] = GetBumperFlags(cBody[8])
|
||||
cBody[9] = GetOcElemFlags(cBody[9])
|
||||
|
||||
return('''
|
||||
static ColliderCylinderInit{0} sCylinderInit = {{
|
||||
{1},
|
||||
{2},
|
||||
{3},
|
||||
}};
|
||||
'''.format(type,sBase,f_ColliderBodyInit.format(*cBody),f_Cylinder16.format(*cCyl16)))
|
||||
|
||||
def GetTris(data, off, type):
|
||||
sBase = GetColliderStr(data, off, type)
|
||||
cTris = struct.unpack_from(sf_Tris, data, off + 8)
|
||||
|
||||
return('''
|
||||
static ColliderTrisInit{0} sTrisInit = {{
|
||||
{1},
|
||||
{2},
|
||||
}};
|
||||
'''.format(type, sBase, f_Tris.format(*cTris)))
|
||||
|
||||
def GetQuad(data, off, type):
|
||||
sBase = GetColliderStr(data, off, type)
|
||||
cBody = list(struct.unpack_from(sf_ColliderBodyInit, data, off + 0x08))
|
||||
cQuad = struct.unpack_from(sf_Quad, data, off + 0x20)
|
||||
|
||||
if cBody[0] < 7:
|
||||
cBody[0] = ELEMTYPE_UNKENUM[cBody[0]]
|
||||
else:
|
||||
cBody[0] = '0x{0:02X}'.format(cBody[0])
|
||||
|
||||
cBody[7] = GetToucherFlags(cBody[7])
|
||||
cBody[8] = GetBumperFlags(cBody[8])
|
||||
cBody[9] = GetOcElemFlags(cBody[9])
|
||||
|
||||
return('''
|
||||
static ColliderQuadInit{0} sQuadInit = {{
|
||||
{1},
|
||||
{2},
|
||||
{3},
|
||||
}};
|
||||
'''.format(type, sBase, f_ColliderBodyInit.format(*cBody), f_Quad.format(*cQuad)))
|
||||
|
||||
def GetSphere(data, off, type):
|
||||
sBase = GetColliderStr(data, off, type)
|
||||
cBody = list(struct.unpack_from(sf_ColliderBodyInit, data, off + 0x08))
|
||||
cSphere = struct.unpack_from(sf_Sphere, data, off + 0x20)
|
||||
|
||||
if cBody[0] < 7:
|
||||
cBody[0] = ELEMTYPE_UNKENUM[cBody[0]]
|
||||
else:
|
||||
cBody[0] = '0x{0:02X}'.format(cBody[0])
|
||||
|
||||
cBody[7] = GetToucherFlags(cBody[7])
|
||||
cBody[8] = GetBumperFlags(cBody[8])
|
||||
cBody[9] = GetOcElemFlags(cBody[9])
|
||||
|
||||
return('''
|
||||
static ColliderSphereInit{0} sSphereInit = {{
|
||||
{1},
|
||||
{2},
|
||||
{3},
|
||||
}};
|
||||
'''.format(type, sBase, f_ColliderBodyInit.format(*cBody), f_Sphere.format(*cSphere)))
|
||||
|
||||
def GetColliderInit(address, type, num):
|
||||
TYPE_DICT = {
|
||||
'ColliderJntSphInit' : (GetJntSph, 'Shape', T_DEFAULT),
|
||||
'ColliderCylinderInit' : (GetCylinder, 'Shape', T_DEFAULT),
|
||||
'ColliderTrisInit': (GetTris, 'Shape', T_DEFAULT),
|
||||
'ColliderQuadInit': (GetQuad, 'Shape', T_DEFAULT),
|
||||
'ColliderSphereInit': (GetSphere, 'Shape', T_DEFAULT),
|
||||
'ColliderJntSphElementInit' : (GetJntSphElements, 'Item'),
|
||||
'ColliderTrisElementInit' : (GetTrisElements, 'Item')
|
||||
}
|
||||
|
||||
update = [(k, v[0]) for k,v in TYPE_DICT.items() if v[1] == 'Shape']
|
||||
for i in update:
|
||||
for j in (TType1, T_ACTOR):
|
||||
TYPE_DICT[i[0] + j] = (i[1], 'Shape', j)
|
||||
|
||||
fileResult = resolve_symbol(address)
|
||||
|
||||
if fileResult[0] is None:
|
||||
return("Invalid address")
|
||||
|
||||
print(hex(fileResult[1]), "in", fileResult[0].split(os.sep)[-1])
|
||||
|
||||
selectedType = TYPE_DICT[type]
|
||||
arg2 = None
|
||||
if selectedType[1] == 'Shape':
|
||||
arg2 = selectedType[2]
|
||||
elif num > 0:
|
||||
arg2 = num
|
||||
else:
|
||||
return("ItemInit type must specify number of elements")
|
||||
|
||||
ovlFile = open(fileResult[0], "rb")
|
||||
ovlData = bytearray(ovlFile.read())
|
||||
ovlFile.close()
|
||||
|
||||
return selectedType[0](ovlData, fileResult[1], arg2)
|
||||
|
||||
def GetColliderInitFull(address, type, num):
|
||||
if(type.find('Element') != -1):
|
||||
return GetColliderInit(address, type, num)
|
||||
|
||||
base = GetColliderInit(address, type, 0)
|
||||
|
||||
if(type.find('JntSph') != -1):
|
||||
[num, address2, dummy] = base.split('\n')[3].split(',')
|
||||
hexaddress = int(address2.strip(' D_'), 16)
|
||||
if(hexaddress == 0):
|
||||
return base.replace(address2,' NULL')
|
||||
else:
|
||||
elements = GetColliderInit(hexaddress, 'ColliderJntSphElementInit', int(num))
|
||||
return elements + base.replace(address2,' sJntSphElementsInit')
|
||||
elif(type.find('Tris') != -1):
|
||||
[num, address2, dummy] = base.split('\n')[3].split(',')
|
||||
hexaddress = int(address2.strip(' D_'), 16)
|
||||
if(hexaddress == 0):
|
||||
return base.replace(address2,' NULL')
|
||||
else:
|
||||
elements = GetColliderInit(hexaddress, 'ColliderTrisElementInit', int(num))
|
||||
return elements + base.replace(address2,' sTrisElementsInit')
|
||||
else:
|
||||
return base
|
||||
|
||||
def HexParse(s):
|
||||
return int(s, 16)
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('address', help="VRAM or VROM address of the struct", type=HexParse)
|
||||
parser.add_argument('type', help="Type name (e.g. ColliderQuadInit)")
|
||||
parser.add_argument('num', nargs='?', default=0, type=HexParse, help="Number of elements. Only applies to ItemInit types")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
print(GetColliderInitFull(args.address, args.type, args.num))
|
||||
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
import struct
|
||||
import argparse
|
||||
import re
|
||||
from actor_symbols import resolve_symbol
|
||||
|
||||
ICHAIN_MACROS = [
|
||||
'ICHAIN_U8',
|
||||
'ICHAIN_S8',
|
||||
'ICHAIN_U16',
|
||||
'ICHAIN_S16',
|
||||
'ICHAIN_U32',
|
||||
'ICHAIN_S32',
|
||||
'ICHAIN_F32',
|
||||
'ICHAIN_F32_DIV1000',
|
||||
'ICHAIN_VEC3F',
|
||||
'ICHAIN_VEC3F_DIV1000',
|
||||
'ICHAIN_VEC3S',
|
||||
]
|
||||
|
||||
Z64_ACTOR_PATH = "../../include/z64actor.h"
|
||||
|
||||
def get_actor_var_names():
|
||||
in_actor = False
|
||||
actor_vars = {}
|
||||
with open(os.path.dirname(os.path.realpath(__file__)) + os.sep + Z64_ACTOR_PATH) as actor_h:
|
||||
for line in actor_h:
|
||||
if in_actor:
|
||||
if "}" in line:
|
||||
# Reached the end of the actor struct so break out
|
||||
break
|
||||
|
||||
# Parse out the memory address (from the comment) and the variable name
|
||||
regex = r'.*\/\* (.*) \*\/\s+(struct)?\s*.+\s+(.+);.*'
|
||||
actor_var_info = re.match(regex, line)
|
||||
|
||||
if actor_var_info:
|
||||
# Strip off the 0x0* part and store it
|
||||
new_var_index = re.sub('0x0*', '', actor_var_info[1])
|
||||
actor_vars[new_var_index] = actor_var_info[3]
|
||||
|
||||
elif "typedef struct Actor {" in line:
|
||||
# Found the Actor struct
|
||||
in_actor = True
|
||||
return actor_vars
|
||||
|
||||
def HexParse(s):
|
||||
return int(s, 16)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Decompiles an InitChain')
|
||||
parser.add_argument('address', help='VRAM or VROM address of an InitChain', type=HexParse)
|
||||
parser.add_argument('--names', action="store_true", help='Retrieve variable names from the actor struct')
|
||||
args = parser.parse_args()
|
||||
|
||||
file_path, file_offset = resolve_symbol(args.address)
|
||||
|
||||
with open(file_path, 'rb') as f:
|
||||
filedata = f.read()
|
||||
|
||||
print ('static InitChainEntry sInitChain[] = {')
|
||||
|
||||
if args.names:
|
||||
actor_variable_names = get_actor_var_names()
|
||||
|
||||
while True:
|
||||
entry = struct.unpack('>I', filedata[file_offset:file_offset+4])[0]
|
||||
file_offset += 4
|
||||
|
||||
cont = entry >> 31
|
||||
t = (entry >> 27) & 0xF
|
||||
offset = ((entry) >> 16) & 0x7FF
|
||||
value = (entry) & 0xFFFF
|
||||
if value >= 0x8000 and not ICHAIN_MACROS[t].startswith('ICHAIN_U'):
|
||||
value -= 0x10000
|
||||
|
||||
var_name = '{0:X}'.format(offset)
|
||||
|
||||
if args.names and var_name in actor_variable_names:
|
||||
var_name = actor_variable_names[var_name]
|
||||
else:
|
||||
var_name = "unk_" + var_name
|
||||
|
||||
print(' {0}({1}, {2}, {3}),'.format(ICHAIN_MACROS[t], var_name, value, ('ICHAIN_CONTINUE' if cont == 1 else 'ICHAIN_STOP')))
|
||||
if cont == 0:
|
||||
break
|
||||
print ('};')
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -174,7 +174,6 @@ D_801EDE30 = code_bss_start + 0x00009E90;
|
||||
D_801EDE40 = code_bss_start + 0x00009EA0;
|
||||
D_801EDE78 = code_bss_start + 0x00009ED8;
|
||||
D_801EDEB0 = code_bss_start + 0x00009F10;
|
||||
D_801EDEBC = code_bss_start + 0x00009F1C;
|
||||
D_801EDEC8 = code_bss_start + 0x00009F28;
|
||||
D_801EDF00 = code_bss_start + 0x00009F60;
|
||||
D_801EDF38 = code_bss_start + 0x00009F98;
|
||||
@@ -182,30 +181,19 @@ D_801EDF48 = code_bss_start + 0x00009FA8;
|
||||
D_801EDF58 = code_bss_start + 0x00009FB8;
|
||||
D_801EDF90 = code_bss_start + 0x00009FF0;
|
||||
D_801EDFC8 = code_bss_start + 0x0000A028;
|
||||
D_801EDFD4 = code_bss_start + 0x0000A034;
|
||||
D_801EDFE0 = code_bss_start + 0x0000A040;
|
||||
D_801EDFF0 = code_bss_start + 0x0000A050;
|
||||
D_801EE000 = code_bss_start + 0x0000A060;
|
||||
D_801EE038 = code_bss_start + 0x0000A098;
|
||||
D_801EE070 = code_bss_start + 0x0000A0D0;
|
||||
D_801EE0A4 = code_bss_start + 0x0000A104;
|
||||
D_801EE0D8 = code_bss_start + 0x0000A138;
|
||||
D_801EE0E8 = code_bss_start + 0x0000A148;
|
||||
D_801EE11C = code_bss_start + 0x0000A17C;
|
||||
D_801EE150 = code_bss_start + 0x0000A1B0;
|
||||
D_801EE188 = code_bss_start + 0x0000A1E8;
|
||||
D_801EE1C0 = code_bss_start + 0x0000A220;
|
||||
D_801EE1C4 = code_bss_start + 0x0000A224;
|
||||
D_801EE1C8 = code_bss_start + 0x0000A228;
|
||||
D_801EE1D0 = code_bss_start + 0x0000A230;
|
||||
D_801EE1D4 = code_bss_start + 0x0000A234;
|
||||
D_801EE1D8 = code_bss_start + 0x0000A238;
|
||||
D_801EE1E0 = code_bss_start + 0x0000A240;
|
||||
D_801EE1E4 = code_bss_start + 0x0000A244;
|
||||
D_801EE1E8 = code_bss_start + 0x0000A248;
|
||||
D_801EE1F0 = code_bss_start + 0x0000A250;
|
||||
D_801EE1F4 = code_bss_start + 0x0000A254;
|
||||
D_801EE1F8 = code_bss_start + 0x0000A258;
|
||||
D_801EE200 = code_bss_start + 0x0000A260;
|
||||
D_801EE6C8 = code_bss_start + 0x0000A728;
|
||||
D_801EE700 = code_bss_start + 0x0000A760;
|
||||
|
||||
Reference in New Issue
Block a user