From 50107c8ec395e77f7f3a0c266d8b0dd821313339 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:33:26 -0600 Subject: [PATCH] fox_beam, more use of enum types, some cleanup (#67) * cleaning and such * stuff * enum types * format * a touch more --- include/functions.h | 26 +- include/gfx.h | 2 +- include/sf64math.h | 16 +- include/sf64object.h | 71 +- include/sf64player.h | 41 +- include/sf64thread.h | 2 +- include/structs.h | 34 - include/variables.h | 83 +- linker_scripts/us/symbol_addrs_engine.txt | 2 +- linker_scripts/us/undefined_syms.ld | 335 +-- src/main/fox_360.c | 65 +- src/main/fox_97F80.c | 16 +- src/main/fox_A4290.c | 155 +- src/main/fox_A4290_colheaders.c | 118 +- src/main/fox_beam.c | 2297 +++++++++++++++++++++ src/main/fox_display.c | 22 +- src/main/fox_edisplay.c | 4 +- src/main/fox_enmy.c | 72 +- src/main/fox_enmy2.c | 54 +- src/main/fox_game.c | 4 +- src/main/fox_play.c | 275 ++- src/main/fox_radio.c | 21 +- src/main/fox_std_lib.c | 4 +- src/main/sf_43E80.c | 14 +- src/main/sf_77E40.c | 12 +- src/main/sf_beam.c | 76 - src/main/sf_hud.c | 34 +- src/overlays/ovl_DF4260/DF4260.c | 6 +- src/overlays/ovl_EBFBE0/fox_option.c | 14 +- src/overlays/ovl_EBFBE0/fox_title.c | 4 +- yamls/us/main.yaml | 8 +- 31 files changed, 3113 insertions(+), 774 deletions(-) create mode 100644 src/main/fox_beam.c delete mode 100644 src/main/sf_beam.c diff --git a/include/functions.h b/include/functions.h index ee05d517..03285825 100644 --- a/include/functions.h +++ b/include/functions.h @@ -19,7 +19,6 @@ void* Memory_Allocate(s32); void func_8000FFCC(void); -u8* func_8001C3EC(void); void func_80016A50(void); void func_800182F4(s32); void Audio_PlaySfx(u32, Vec3f*, u8, f32*, f32*, s8*); @@ -34,10 +33,13 @@ void func_8001AE58(void); s32 func_8001AE78(void); s32 func_8001AED4(void); void func_8001AF40(s32); +u8* func_8001C3EC(void); void func_8001C8B8(u8); void func_8001CA24(u8); void func_8001CB80(u8, u8); void func_8001CCDC(u8, Vec3f *); +void func_8001CE28(u8, Vec3f *); +void func_8001D10C(Vec3f*, u32); void func_8001D15C(u8); void func_8001D1C8(u8, s32); void func_8001D2FC(Vec3f *, u16); @@ -109,7 +111,7 @@ void func_8002F5F4(u16* msg, s32 character); void func_800319AC(Object_2F4* this); void func_80035448(Object_2F4* obj2F4); -//sf_beam +//fox_beam void PlayerShot_Initialize(PlayerShot *); void func_800365E4(f32, f32, f32, f32, f32, f32, f32, f32, f32, s32, s32); void func_8003D9B8(void); @@ -219,9 +221,10 @@ void func_80061E48(Object_2F4* , f32 , f32 , f32 ); void func_80061F0C(Object_2F4* , ObjectInit* , s32 ); void Object_Load(ObjectInit* , f32 , f32 , f32 , f32 ); void func_80062568(void); +void func_80062B60(f32 xPos, f32 zPos, s32 arg2, f32 arg3); void func_80062C38(f32, f32); s32 func_800631A8(Vec3f*, f32*, Vec3f*); -s32 func_8006326C(Vec3f* , Vec3f* , s32 , Object* ); +s32 func_8006326C(Vec3f* , Vec3f* , ObjectId , Object* ); s32 func_8006351C(s32 , Vec3f* , Vec3f* , s32 ); void func_800652CC(Object_80*); void func_800654E4(Object *); @@ -254,7 +257,7 @@ void func_80068914(Item*); void func_80068C48(Item*); void func_80068C88(Item*); void func_80068FE0(Object_4C*); -void func_800690D0(s32, s32); +void func_800690D0(s32, ObjectId); void func_80069924(Object_8C *); void func_800693E8(Object_2F4 *); void func_80069658(Object_408 *); @@ -297,7 +300,7 @@ void func_80077218(Object_2F4*); void func_80077240(f32 posX, f32 posY, f32 posZ, s32 ); void func_8007729C(void); void func_80077790(void); -Object_8C* func_8007783C(s32 objId); +Object_8C* func_8007783C(ObjectId objId); void func_8007797C(f32 posX, f32 posY, f32 posZ, f32 , f32 , f32 , f32 ); void func_80077A00(Object_8C* ); void func_80077A7C(Object_8C* ); @@ -502,7 +505,7 @@ bool func_800A73E4(f32* , s32* , f32 posX, f32 posY, f32 posZ); s32 func_800A78C4(Hitbox* hitbox, f32 , f32 , f32 , f32 , f32 , f32 ); void func_800A8BA4(Player* player); void func_800AA800(Player *player); -void func_800ACDC0(Player *, PlayerShot *, s32 ); +void func_800ACDC0(Player *, PlayerShot *, PlayerShotId ); void func_800B0F50(Player *); void func_800B44C4(Player *); void func_800B5FBC(Player *, s32 , s32 ); @@ -512,8 +515,9 @@ void func_800B6BFC(Player *, s32 ); void func_800B6F50(f32, f32, f32, f32, f32, f32); void func_800B7184(Player *, s32); void func_800B73E0(Player *); -void func_800B852C(s32 , Item *); +void func_800B852C(ObjectId , Item *); void func_800B86CC(void); +void func_800A668C(f32 xPos, f32 yPos, f32 zPos); void func_800AD7F0(Player *player); void func_800ADF58(Player *player); void func_800B415C(Player *player); @@ -524,7 +528,7 @@ void func_800A86E4(Player* player); void func_800A887C(Player* player); s32 func_800A7974(Player* player, f32* hitboxData, s32* index, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot, f32 arg9, f32 argA, f32 argB); -bool func_800A8054(s32 objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, Vec3f* arg7, Vec3f* arg8); +bool func_800A8054(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, Vec3f* arg7, Vec3f* arg8); // fox_radio s32 func_800BA7BC(u16*, s32); @@ -565,11 +569,14 @@ void func_DF4260_80198594(Object_408 *); void func_DF4260_801988E0(void); void func_DF4260_80198C50(void); void func_DF4260_8019949C(void); +void func_DF4260_8019864C(PlayerShot*); void func_E08400_80187B08(Object_2F4 *); void func_E08400_80188A40(Object_408 *); void func_E08400_8018CCF8(Object_2F4 *); +void func_E16C50_801ABA40(PlayerShot*); +void func_E16C50_801AC8A8(f32, f32, f32, f32, s32); void func_E16C50_80187754(Object_408 *); void func_E16C50_8018ED78(Player*); void func_E16C50_801900FC(Vec3f*, Vec3f*, f32, f32, f32, s32, f32, s32, s32); @@ -645,8 +652,9 @@ void func_E6A810_801ACFBC(ObjectInit*); void func_E6A810_801AD080(void); void func_E6A810_801B5110(f32, f32, f32); void func_E6A810_801B58AC(Gfx **, f32); - s32 func_E6A810_801B6AEC(f32, f32, f32); +bool func_E6A810_801B6AEC(f32, f32, f32); void func_E6A810_801B6E20(f32, f32, f32 *, f32 *, f32 *); +void func_E6A810_801AD144(PlayerShot*); void func_E9F1D0_801878A8(Object_58**); void func_E9F1D0_801888F4(Object_2F4 *); diff --git a/include/gfx.h b/include/gfx.h index e2db52e3..ad127b3e 100644 --- a/include/gfx.h +++ b/include/gfx.h @@ -17,7 +17,7 @@ #define GPC(r, g, b, a) gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, r, g, b, a) // FA000000 RRGGBBAA #define GEC(r, g, b, a) gDPSetEnvColor(gMasterDisp++, r, g, b, a) // FB000000 RRGGBBAA #define GSGM_BACK(mode) gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK) // B7000000 00002000, most common geometry mode changed -#define GCGM_BACK(mode) gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK) // B6000000 00002000 +#define GCGM_BACK(mode) gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK) // B6000000 00002000 #define gSPSetOtherModeHi(pkt, settings) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_BLENDMASK, 24, settings) #define gsSPSetOtherModeHi(settings) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_BLENDMASK, 24, settings) diff --git a/include/sf64math.h b/include/sf64math.h index 3e4344ab..3e0babeb 100644 --- a/include/sf64math.h +++ b/include/sf64math.h @@ -10,14 +10,18 @@ typedef struct { } Vec3f; // size = 0xC typedef struct { - Vec3f pos; - Vec3f rot; -} PosRot; + /* 0x00 */ Vec3f pos; + /* 0x0C */ Vec3f rot; +} PosRot; // size = 0x18 typedef struct { - Vec3f normal; - f32 dist; -} Plane; + /* 0x0 */ s16 vtx[3]; +} Triangle; // size = 0x6 + +typedef struct { + /* 0x0 */ Vec3f normal; + /* 0xC */ f32 dist; +} Plane; // size = 0x10 typedef struct { /* 0x0 */ s16 x; diff --git a/include/sf64object.h b/include/sf64object.h index cbe3164d..cd868813 100644 --- a/include/sf64object.h +++ b/include/sf64object.h @@ -8,6 +8,75 @@ #define HITBOX_UNK_3 300000.0f #define HITBOX_UNK_4 400000.0f +typedef struct { + /* 0x0 */ f32 offset; + /* 0x4 */ f32 size; +} HitboxDim; // size = 0x8 + +typedef struct { + /* 0x00 */ HitboxDim z; + /* 0x08 */ HitboxDim y; + /* 0x10 */ HitboxDim x; +} Hitbox; // size = 0x18 + +typedef struct { + /* 0x00 */ s16 vtx[3]; + /* 0x06 */ s16 unk_06; + /* 0x08 */ Vec3s normal; + /* 0x10 */ s32 dist; +} CollisionPoly; // size = 0x14 + +typedef struct { + /* 0x00 */ Vec3f min; + /* 0x0C */ Vec3f max; + /* 0x18 */ s32 polyCount; + /* 0x1C */ CollisionPoly* polys; + /* 0x20 */ Vec3s* mesh; +} CollisionHeader; // size = 0x24 + +typedef struct { + /* 0x00 */ Vec3f min; + /* 0x0C */ Vec3f max; + /* 0x18 */ s32 polyCount; + /* 0x1C */ Triangle* polys; + /* 0x20 */ Vec3f* mesh; +} CollisionHeader2; // size = 0x24 + +typedef enum { + /* 0 */ COL1_0, // OBJ_2F4_180 + /* 1 */ COL1_1, // OBJ_80_39 + /* 2 */ COL1_2, + /* 3 */ COL1_3, // OBJ_UNK_1000 + /* 4 */ COL1_4, // OBJ_408_308 + /* 5 */ COL1_5, // OBJ_80_149 + /* 6 */ COL1_6, // OBJ_80_150 + /* 7 */ COL1_7, // OBJ_408_309 + /* 8 */ COL1_8, // OBJ_408_313 + /* 9 */ COL1_9, // OBJ_408_312 +} CollisonId_1; + +typedef enum { + /* 0 */ COL2_0, // default + /* 1 */ COL2_1, // OBJ_80_4, OBJ_80_5 + /* 2 */ COL2_2, // OBJ_80_2 + /* 3 */ COL2_3, // OBJ_80_3, OBJ_80_69 + /* 4 */ COL2_4, // OBJ_80_140 + /* 5 */ COL2_5, // PLAYERSHOT_7 ? + /* 6 */ COL2_6, // OBJ_80_141 + /* 7 */ COL2_7, // OBJ_80_47 + /* 8 */ COL2_8, // OBJ_80_70 + /* 9 */ COL2_9, // OBJ_80_72 + /* 10 */ COL2_10, // OBJ_80_71 + /* 11 */ COL2_11, // OBJ_80_73 + /* 12 */ COL2_12, // OBJ_80_67 + /* 13 */ COL2_13, // OBJ_80_74 + /* 14 */ COL2_14, // OBJ_80_117 + /* 15 */ COL2_15, // OBJ_80_124 + /* 16 */ COL2_16, // OBJ_80_126 + /* 17 */ COL2_17, // OBJ_80_143 + /* 18 */ COL2_18, // OBJ_80_120 +} CollisionId_2; + typedef struct { /* 0x00 */ f32 zPos1; /* 0x04 */ s16 zPos2; @@ -74,7 +143,7 @@ typedef struct { /* 0x44 */ s32 unk_44; /* 0x48 */ s32 unk_48; /* 0x4C */ s32 timer_4C; - /* 0x50 */ u8 unk_50; + /* 0x50 */ s8 unk_50; /* 0x51 */ char pad51[3]; /* 0x54 */ s32 unk_54; /* 0x58 */ char pad58[8]; diff --git a/include/sf64player.h b/include/sf64player.h index 365a72f7..05787c84 100644 --- a/include/sf64player.h +++ b/include/sf64player.h @@ -73,37 +73,44 @@ typedef struct { } WingInfo; // size = 0x3C typedef enum { - /* 0 */ PLAYERSHOT_0, - /* 1 */ PLAYERSHOT_1, + /* 0 */ PLAYERSHOT_0, // single laser? + /* 1 */ PLAYERSHOT_1, // twin laser? /* 2 */ PLAYERSHOT_2, - /* 3 */ PLAYERSHOT_3, + /* 3 */ PLAYERSHOT_3, // bomb? /* 4 */ PLAYERSHOT_4, - /* 5 */ PLAYERSHOT_5, - /* 6 */ PLAYERSHOT_6, - /* 7 */ PLAYERSHOT_7, - /* 8 */ PLAYERSHOT_8, + /* 5 */ PLAYERSHOT_5, // landmaster shot + /* 6 */ PLAYERSHOT_6, // on-foot shot + /* 7 */ PLAYERSHOT_7, // unused? related to on-foot shot somehow + /* 8 */ PLAYERSHOT_8, // charge shot /* 9 */ PLAYERSHOT_9, } PlayerShotId; +typedef enum { + /* 0 */ LASERS_SINGLE, + /* 1 */ LASERS_TWIN, + /* 2 */ LASERS_HYPER, + /* 3 */ LASERS_UNK_3, +} LaserStrength; + typedef struct { /* 0x00 */ Object obj; /* 0x1C */ s32 index; - /* 0x20 */ Vec3f unk_20; + /* 0x20 */ Vec3f vel; /* 0x2C */ f32 unk_2C; /* 0x30 */ f32 unk_30; /* 0x34 */ f32 unk_34; /* 0x38 */ Vec3f sfxPos; /* 0x44 */ f32 unk_44; - /* 0x44 */ f32 unk_48; - /* 0x44 */ f32 unk_4C; - /* 0x44 */ f32 unk_50; - /* 0x44 */ f32 unk_54; + /* 0x48 */ f32 unk_48; + /* 0x4C */ f32 unk_4C; + /* 0x50 */ f32 unk_50; + /* 0x54 */ f32 unk_54; /* 0x58 */ s32 unk_58; /* 0x5C */ s32 unk_5C; /* 0x60 */ s32 unk_60; /* 0x64 */ s32 unk_64; /* 0x68 */ s32 playerNum; - /* 0x6C */ char pad6C[4]; + /* 0x6C */ u8 bonus; } PlayerShot; // size = 0x70 typedef struct Player { @@ -201,8 +208,8 @@ typedef struct Player { /* 0x1A4 */ s32 unk_1A4; /* 0x1A8 */ char pad1A8[0x1C]; /* 0x1C4 */ s32 num; - /* 0x1C8 */ s32 state_1C8; - /* 0x1CC */ s32 form; + /* 0x1C8 */ PlayerState1C8 state_1C8; + /* 0x1CC */ PlayerForm form; /* 0x1D0 */ s32 unk_1D0; /* 0x1D4 */ s32 unk_1D4; /* 0x1D8 */ char pad1D8[4]; @@ -251,8 +258,8 @@ typedef struct Player { /* 0x284 */ s32 unk_284; /* 0x288 */ s32 unk_288; /* 0x28C */ char pad28C[0x28]; - /* 0x2B4 */ s32 unk_2B4; - /* 0x2B8 */ s32 unk_2B8; + /* 0x2B4 */ bool unk_2B4; + /* 0x2B8 */ bool unk_2B8; /* 0x2BC */ f32 unk_2BC; /* 0x2C0 */ f32 unk_2C0; /* 0x2C4 */ s32 unk_2C4; diff --git a/include/sf64thread.h b/include/sf64thread.h index 0a276961..8fcb87c9 100644 --- a/include/sf64thread.h +++ b/include/sf64thread.h @@ -20,7 +20,7 @@ typedef enum { /* 103 */ GSTATE_CHECK_SAVE, /* 104 */ GSTATE_LOGO_WAIT, /* 105 */ GSTATE_START, -} GameStates; +} GameState; typedef void (*TimerAction)(s32*, s32); diff --git a/include/structs.h b/include/structs.h index cb3846d1..95fd48fb 100644 --- a/include/structs.h +++ b/include/structs.h @@ -6,40 +6,6 @@ #define UNK_TYPE s32 -typedef struct { - /* 0x0 */ f32 offset; - /* 0x4 */ f32 size; -} HitboxDim; // size = 0x8 - -typedef struct { - /* 0x00 */ HitboxDim z; - /* 0x08 */ HitboxDim y; - /* 0x10 */ HitboxDim x; -} Hitbox; // size = 0x18 - -typedef struct { - /* 0x00 */ s16 vtx[3]; - /* 0x06 */ s16 unk_06; - /* 0x08 */ Vec3s normal; - /* 0x10 */ s32 dist; -} CollisionPoly; // size = 0x14 - -typedef struct { - /* 0x00 */ Vec3f min; - /* 0x0C */ Vec3f max; - /* 0x18 */ s32 polyCount; - /* 0x1C */ CollisionPoly* polys; - /* 0x20 */ Vec3s* mesh; -} CollisionHeader; // size = 0x24 - -typedef struct { - /* 0x00 */ Vec3f min; - /* 0x0C */ Vec3f max; - /* 0x18 */ s32 polyCount; - /* 0x1C */ s16 (*polys)[3]; - /* 0x20 */ Vec3f* mesh; -} CollisionHeader2; // size = 0x24 - typedef struct { /* bit 0 */ u8 unk_0 : 3; /* bit 3 */ u8 expertMedal : 1; diff --git a/include/variables.h b/include/variables.h index 80659f06..59355888 100644 --- a/include/variables.h +++ b/include/variables.h @@ -132,7 +132,7 @@ extern OSMesg D_8015661C[1]; // fox_360 extern s32 D_800C9B4C; -// sf_beam +// fox_bg extern u16 D_800C9C3C[16]; // sf_43E80 @@ -275,8 +275,8 @@ extern s32 D_8015F93C; extern s32 D_8015F940; extern f32 D_8015F944; -// sf_beam -extern Vec3f D_8015F950; +// fox_beam +// extern Vec3f D_8015F950; // fox_bg extern f32 D_8015F960; @@ -389,7 +389,7 @@ extern u8 D_80161A94[4]; extern s32 gHitCount; extern s32 gSavedHitCount; extern s16 gLifeCount[4]; -extern s32 gLaserStrength[4]; +extern LaserStrength gLaserStrength[4]; // extern s32 D_80161AB8; // 0x44 @@ -418,7 +418,7 @@ extern s32 D_80177824; extern u16 D_80177828; extern s32 D_8017782C; extern u8 D_80177830; -extern s32 gGameState; +extern GameState gGameState; extern s32 D_80177838; extern s32 D_Timer_8017783C; extern s32 D_80177840; @@ -434,8 +434,8 @@ extern s32 D_80177870[4]; extern s32 gLevelMode; // extern s32 gHandicap[4]; -extern s32 gDrawMode; -extern s32 gVersusStage; +extern DrawMode gDrawMode; +extern VsStage gVersusStage; extern s32 gPlayerNum; extern s32 D_801778A4; extern s32 gCamCount; @@ -872,8 +872,8 @@ extern u8 D_1011A40[]; extern u16 D_1011AB0[]; extern u8 D_1011E80[]; extern u16 D_1011EC0[]; -extern s32 D_1011ED0[]; -extern s32 D_1011F08[]; +extern u8 D_1011ED0[]; +extern u16 D_1011F08[]; extern Gfx D_1011F20[]; extern u8 D_10127D0[]; extern u16 D_1012898[]; @@ -896,6 +896,8 @@ extern Gfx D_1019CA0[]; extern Gfx D_101A570[]; extern Gfx D_101A8E0[]; extern Gfx D_101ABD0[]; +extern Gfx D_101AD20[]; +extern Gfx D_101AED0[]; extern Gfx D_101C2E0[]; extern Gfx D_101C2E0[]; extern Gfx D_101CAE0[]; @@ -918,6 +920,8 @@ extern Gfx D_1024830[]; extern u8 D_1024A58[]; extern Gfx D_1024AC0[]; extern Gfx D_1024F60[]; +extern Gfx D_1025800[]; +extern Gfx D_1026090[]; extern Gfx D_1028230[]; extern Gfx D_1029780[]; extern Gfx D_102A010[]; @@ -927,6 +931,7 @@ extern Gfx D_102F5E0[]; extern Gfx D_102FE80[]; extern u16 D_102FF08[]; extern Gfx D_1031630[]; +extern Gfx D_1031EC0[]; extern Gfx D_1032780[]; // ast_8A68C0, ast_8AE0A0 @@ -963,6 +968,10 @@ extern Gfx D_20101A0[]; extern Gfx D_20112C0[]; // ast_8BFC00, ast_8D99F0, ast_8E1F80, ast_8E92D0 +extern Gfx D_3006940[]; +extern Gfx D_301AD60[]; +extern Gfx D_301AEF0[]; +extern Gfx D_302D120[]; extern u8 D_3000000[]; extern u16 D_3000080[]; extern Gfx D_3000090[]; @@ -1054,6 +1063,14 @@ extern f32 D_302EE00[]; extern f32 D_302EE64[]; extern f32 D_302EE80[]; extern f32 D_302EE9C[]; +extern Triangle D_302EEE8[]; +extern Vec3f D_302EF00[]; +extern Triangle D_302EF6C[]; +extern Vec3f D_302EF84[]; +extern Triangle D_302EFF0[]; +extern Vec3f D_302F008[]; +extern Triangle D_302F044[]; +extern Vec3f D_302F098[]; // ast_918430, ast_922730 extern AnimationHeader D_4000080; @@ -1101,6 +1118,52 @@ extern Gfx D_500B600[]; * ast_B0AA00, ast_B1CA50, ast_B2CA50, ast_B612E0, ast_B84560, * ast_BB11D0, ast_BC23D0, ast_BFC510, ast_C48F40, ast_DDC010 */ +extern CollisionPoly D_602FA9C[]; +extern Vec3s D_60300C8[]; +extern CollisionPoly D_60305DC[]; +extern Vec3s D_603184C[]; +extern CollisionPoly D_6030208[]; +extern Vec3s D_6030550[]; +extern CollisionPoly D_6033070[]; +extern Vec3s D_6033E08[]; +extern CollisionPoly D_600F60C[]; +extern Vec3s D_600FD50[]; +extern CollisionPoly D_600F3F4[]; +extern Vec3s D_600F5AC[]; +extern CollisionPoly D_600F1DC[]; +extern Vec3s D_600F394[]; +extern CollisionPoly D_6010294[]; +extern Vec3s D_601170C[]; +extern CollisionPoly D_6007558[]; +extern Vec3s D_6008E08[]; +extern CollisionPoly D_6014FEC[]; +extern Vec3s D_6016374[]; +extern Triangle D_603F338[]; +extern Vec3f D_603F388[]; +extern Triangle D_603F40C[]; +extern Vec3f D_603F4E4[]; +extern Triangle D_602CACC[]; +extern Vec3f D_602CB80[]; +extern Triangle D_6030E74[]; +extern Vec3f D_6030E80[]; +extern Triangle D_6030EB0[]; +extern Vec3f D_6030EBC[]; +extern Triangle D_6030EEC[]; +extern Vec3f D_6030EF8[]; +extern Triangle D_6030F28[]; +extern Vec3f D_6030F34[]; +extern Triangle D_6030F64[]; +extern Vec3f D_6030F7C[]; +extern Triangle D_6030FC4[]; +extern Vec3f D_6030FD0[]; +extern Triangle D_60320B8[]; +extern Vec3f D_603216C[]; +extern Triangle D_6031FB0[]; +extern Vec3f D_6031FE0[]; +extern Triangle D_6031FB0[]; +extern Vec3f D_603204C[]; +extern Triangle D_6032388[]; +extern Vec3f D_6032430[]; extern u16 D_6000000[]; extern Gfx D_60005B0[]; extern u16 D_6000900[]; @@ -1243,6 +1306,7 @@ extern Gfx D_600D730[]; extern u16 D_600D990[]; extern Gfx D_600D9F0[]; extern Gfx D_600DA10[]; +extern Gfx D_600DB80[]; extern Gfx D_600DBC0[]; extern u8 D_600DDC0[]; extern Gfx D_600DDF0[]; @@ -1761,6 +1825,7 @@ extern Gfx D_D00B720[]; extern Gfx D_D00B880[]; // ast_92EC40 +extern Gfx D_E00DFB0[]; extern u16 D_E00E100[]; extern u16 D_E00F020[]; extern u16 D_E00FF40[]; diff --git a/linker_scripts/us/symbol_addrs_engine.txt b/linker_scripts/us/symbol_addrs_engine.txt index d89a9dd8..6e10615c 100644 --- a/linker_scripts/us/symbol_addrs_engine.txt +++ b/linker_scripts/us/symbol_addrs_engine.txt @@ -49,7 +49,7 @@ Graphics_GetSmallTextWidth = 0x800A13EC; func_800A1540 = 0x800A1540; Texture_BlendRGBA16 = 0x800A1558; -// sf_beam +// fox_beam PlayerShot_Initialize = 0x80035E48; // fox_rcp diff --git a/linker_scripts/us/undefined_syms.ld b/linker_scripts/us/undefined_syms.ld index 43d8383f..1c205f1e 100644 --- a/linker_scripts/us/undefined_syms.ld +++ b/linker_scripts/us/undefined_syms.ld @@ -1,161 +1,6 @@ -func_8018753C = 0x8018753C; -func_8018F31C = 0x8018F31C; -func_8018F8B8 = 0x8018F8B8; -func_801A2A78 = 0x801A2A78; -func_801A6608 = 0x801A6608; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A3240 = 0x801A3240; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A2B24 = 0x801A2B24; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801A23AC = 0x801A23AC; -func_801BE1FC = 0x801BE1FC; -func_801935D4 = 0x801935D4; -func_8019350C = 0x8019350C; -func_80197CB8 = 0x80197CB8; -func_8018BAAC = 0x8018BAAC; -func_8018BBA4 = 0x8018BBA4; -func_8018BBF8 = 0x8018BBF8; -func_8018BD7C = 0x8018BD7C; -func_8018DA6C = 0x8018DA6C; -func_8018DAEC = 0x8018DAEC; -func_8018DB6C = 0x8018DB6C; -func_801BEC74 = 0x801BEC74; -func_80188448 = 0x80188448; -func_8018F884 = 0x8018F884; -func_801A4CB0 = 0x801A4CB0; -func_801A12C4 = 0x801A12C4; -func_801A12C4 = 0x801A12C4; -func_801AC294 = 0x801AC294; -func_801A12C4 = 0x801A12C4; -func_801A12C4 = 0x801A12C4; -func_801A12C4 = 0x801A12C4; -func_801A12C4 = 0x801A12C4; -func_801A12C4 = 0x801A12C4; -func_801A12C4 = 0x801A12C4; -func_801A43BC = 0x801A43BC; -func_801A4A64 = 0x801A4A64; -func_801A5F90 = 0x801A5F90; -func_801A6100 = 0x801A6100; -func_801A6540 = 0x801A6540; -func_801A68EC = 0x801A68EC; -func_801ADAC8 = 0x801ADAC8; -func_801AE2C0 = 0x801AE2C0; -func_801AEEFC = 0x801AEEFC; -func_801A54E8 = 0x801A54E8; -func_80189AFC = 0x80189AFC; -func_8018E5B4 = 0x8018E5B4; -func_8018EF14 = 0x8018EF14; -func_8018E2D8 = 0x8018E2D8; -func_8018AABC = 0x8018AABC; -func_8018BE84 = 0x8018BE84; -func_8018B6AC = 0x8018B6AC; -func_8018A1C0 = 0x8018A1C0; -func_80190430 = 0x80190430; -func_80190F08 = 0x80190F08; -func_801914C4 = 0x801914C4; -func_80191B4C = 0x80191B4C; -func_80191DB0 = 0x80191DB0; -func_80191FFC = 0x80191FFC; -func_80192C18 = 0x80192C18; -func_80193240 = 0x80193240; -func_8019983C = 0x8019983C; -func_80199E24 = 0x80199E24; -func_8019D3C4 = 0x8019D3C4; -func_8019A1FC = 0x8019A1FC; -func_8019ACCC = 0x8019ACCC; -func_8019B7DC = 0x8019B7DC; -func_8019BDE0 = 0x8019BDE0; -func_8019C1CC = 0x8019C1CC; -func_8019C83C = 0x8019C83C; -func_8019CE58 = 0x8019CE58; -func_801AE168 = 0x801AE168; -func_801AEB44 = 0x801AEB44; -func_801B099C = 0x801B099C; -func_801B0EC0 = 0x801B0EC0; -func_801B619C = 0x801B619C; -func_801B90DC = 0x801B90DC; -func_801B504C = 0x801B504C; -func_801B7A24 = 0x801B7A24; -func_801BA108 = 0x801BA108; -func_801BA4E4 = 0x801BA4E4; -func_801BAD7C = 0x801BAD7C; -func_801BB204 = 0x801BB204; -func_801BC930 = 0x801BC930; -func_801BDE6C = 0x801BDE6C; -func_801BD264 = 0x801BD264; -func_801BEB1C = 0x801BEB1C; -func_80188FE4 = 0x80188FE4; -func_8019E3A8 = 0x8019E3A8; -func_8019F7AC = 0x8019F7AC; -func_8019F7AC = 0x8019F7AC; -func_8019F7AC = 0x8019F7AC; -func_80192E2C = 0x80192E2C; -func_801934D0 = 0x801934D0; -func_80193244 = 0x80193244; -func_80188660 = 0x80188660; -func_8018AA74 = 0x8018AA74; -func_8018ECAC = 0x8018ECAC; -func_8018ED78 = 0x8018ED78; -func_8018EE84 = 0x8018EE84; -func_8018EF90 = 0x8018EF90; -func_8018BACC = 0x8018BACC; -func_801887D0 = 0x801887D0; -func_801BEC5C = 0x801BEC5C; -func_8018C54C = 0x8018C54C; -func_80193434 = 0x80193434; -func_8018FF84 = 0x8018FF84; -func_80190020 = 0x80190020; -func_801982A8 = 0x801982A8; -func_801949DC = 0x801949DC; -func_80191AFC = 0x80191AFC; -func_80196288 = 0x80196288; -func_8019E98C = 0x8019E98C; -func_8019E2C4 = 0x8019E2C4; -func_801A71B8 = 0x801A71B8; -func_801968F4 = 0x801968F4; -func_80193B1C = 0x80193B1C; -func_801B4D84 = 0x801B4D84; -func_801985E4 = 0x801985E4; -func_801928C8 = 0x801928C8; -func_8018B8C0 = 0x8018B8C0; -func_80197C64 = 0x80197C64; -func_80192A68 = 0x80192A68; -func_80188FA8 = 0x80188FA8; -func_8018DCE4 = 0x8018DCE4; -func_8018DBEC = 0x8018DBEC; -func_8018DE14 = 0x8018DE14; -func_801A5AF0 = 0x801A5AF0; -func_801AEAA0 = 0x801AEAA0; -func_801A5D68 = 0x801A5D68; -func_801A0AF0 = 0x801A0AF0; -func_8018CF98 = 0x8018CF98; -func_80191180 = 0x80191180; func_80187530 = 0x80187530; +func_8018753C = 0x8018753C; func_8018756C = 0x8018756C; func_801875A4 = 0x801875A4; func_80187650 = 0x80187650; @@ -164,11 +9,16 @@ func_80187944 = 0x80187944; func_8018795C = 0x8018795C; func_801880E4 = 0x801880E4; func_80188344 = 0x80188344; +func_80188448 = 0x80188448; func_80188528 = 0x80188528; +func_80188660 = 0x80188660; +func_801887D0 = 0x801887D0; func_80188AD0 = 0x80188AD0; func_80188CAC = 0x80188CAC; func_80188F60 = 0x80188F60; +func_80188FA8 = 0x80188FA8; func_80188FAC = 0x80188FAC; +func_80188FE4 = 0x80188FE4; func_80189058 = 0x80189058; func_80189114 = 0x80189114; func_80189194 = 0x80189194; @@ -178,40 +28,80 @@ func_80189470 = 0x80189470; func_801895B8 = 0x801895B8; func_80189724 = 0x80189724; func_8018978C = 0x8018978C; +func_80189AFC = 0x80189AFC; func_80189B70 = 0x80189B70; func_80189CC8 = 0x80189CC8; +func_8018A1C0 = 0x8018A1C0; func_8018A544 = 0x8018A544; +func_8018AA74 = 0x8018AA74; +func_8018AABC = 0x8018AABC; func_8018AB44 = 0x8018AB44; func_8018AED0 = 0x8018AED0; func_8018B15C = 0x8018B15C; func_8018B268 = 0x8018B268; func_8018B418 = 0x8018B418; func_8018B58C = 0x8018B58C; +func_8018B6AC = 0x8018B6AC; +func_8018B8C0 = 0x8018B8C0; func_8018B9D0 = 0x8018B9D0; +func_8018BAAC = 0x8018BAAC; +func_8018BACC = 0x8018BACC; +func_8018BBA4 = 0x8018BBA4; +func_8018BBF8 = 0x8018BBF8; +func_8018BD7C = 0x8018BD7C; +func_8018BE84 = 0x8018BE84; func_8018C19C = 0x8018C19C; +func_8018C54C = 0x8018C54C; func_8018C8A8 = 0x8018C8A8; func_8018CAD4 = 0x8018CAD4; +func_8018CF98 = 0x8018CF98; func_8018D9EC = 0x8018D9EC; +func_8018DA6C = 0x8018DA6C; +func_8018DAEC = 0x8018DAEC; +func_8018DB6C = 0x8018DB6C; +func_8018DBEC = 0x8018DBEC; func_8018DBF0 = 0x8018DBF0; +func_8018DCE4 = 0x8018DCE4; func_8018DDAC = 0x8018DDAC; +func_8018DE14 = 0x8018DE14; func_8018E290 = 0x8018E290; +func_8018E2D8 = 0x8018E2D8; func_8018E54C = 0x8018E54C; +func_8018E5B4 = 0x8018E5B4; func_8018E5F8 = 0x8018E5F8; func_8018E76C = 0x8018E76C; +func_8018ECAC = 0x8018ECAC; +func_8018ED78 = 0x8018ED78; +func_8018EE84 = 0x8018EE84; +func_8018EF14 = 0x8018EF14; +func_8018EF90 = 0x8018EF90; func_8018F038 = 0x8018F038; func_8018F044 = 0x8018F044; +func_8018F31C = 0x8018F31C; func_8018F330 = 0x8018F330; func_8018F4D8 = 0x8018F4D8; +func_8018F884 = 0x8018F884; +func_8018F8B8 = 0x8018F8B8; func_8018FE38 = 0x8018FE38; func_8018FF20 = 0x8018FF20; +func_8018FF84 = 0x8018FF84; +func_80190020 = 0x80190020; func_80190078 = 0x80190078; +func_80190430 = 0x80190430; func_801904CC = 0x801904CC; func_80190A00 = 0x80190A00; +func_80190F08 = 0x80190F08; func_80191010 = 0x80191010; func_80191054 = 0x80191054; +func_80191180 = 0x80191180; func_801912FC = 0x801912FC; +func_801914C4 = 0x801914C4; func_80191680 = 0x80191680; +func_80191AFC = 0x80191AFC; +func_80191B4C = 0x80191B4C; func_80191BC4 = 0x80191BC4; +func_80191DB0 = 0x80191DB0; +func_80191FFC = 0x80191FFC; func_80192094 = 0x80192094; func_801922DC = 0x801922DC; func_80192358 = 0x80192358; @@ -220,87 +110,162 @@ func_8019243C = 0x8019243C; func_801924A8 = 0x801924A8; func_80192518 = 0x80192518; func_80192834 = 0x80192834; +func_801928C8 = 0x801928C8; func_80192984 = 0x80192984; +func_80192A68 = 0x80192A68; +func_80192C18 = 0x80192C18; func_80192CD4 = 0x80192CD4; +func_80192E2C = 0x80192E2C; func_80192E64 = 0x80192E64; func_80192E94 = 0x80192E94; func_80192EB0 = 0x80192EB0; +func_80193240 = 0x80193240; +func_80193244 = 0x80193244; func_80193380 = 0x80193380; func_801933DC = 0x801933DC; +func_80193434 = 0x80193434; +func_801934D0 = 0x801934D0; +func_8019350C = 0x8019350C; func_80193540 = 0x80193540; func_8019356C = 0x8019356C; +func_801935D4 = 0x801935D4; func_80193718 = 0x80193718; +func_80193B1C = 0x80193B1C; func_80194398 = 0x80194398; func_801946C4 = 0x801946C4; +func_801949DC = 0x801949DC; func_80194A84 = 0x80194A84; func_80196210 = 0x80196210; +func_80196288 = 0x80196288; +func_801968F4 = 0x801968F4; func_80197A94 = 0x80197A94; +func_80197C64 = 0x80197C64; +func_80197CB8 = 0x80197CB8; +func_801982A8 = 0x801982A8; +func_801985E4 = 0x801985E4; func_80198968 = 0x80198968; func_8019969C = 0x8019969C; +func_8019983C = 0x8019983C; func_80199A28 = 0x80199A28; +func_80199E24 = 0x80199E24; func_80199F10 = 0x80199F10; +func_8019A1FC = 0x8019A1FC; func_8019A5D4 = 0x8019A5D4; +func_8019ACCC = 0x8019ACCC; func_8019B548 = 0x8019B548; +func_8019B7DC = 0x8019B7DC; func_8019B854 = 0x8019B854; +func_8019BDE0 = 0x8019BDE0; func_8019BE48 = 0x8019BE48; +func_8019C1CC = 0x8019C1CC; func_8019C454 = 0x8019C454; func_8019C778 = 0x8019C778; +func_8019C83C = 0x8019C83C; func_8019C888 = 0x8019C888; func_8019CBEC = 0x8019CBEC; +func_8019CE58 = 0x8019CE58; func_8019CE88 = 0x8019CE88; func_8019D15C = 0x8019D15C; +func_8019D3C4 = 0x8019D3C4; func_8019D700 = 0x8019D700; func_8019E234 = 0x8019E234; +func_8019E2C4 = 0x8019E2C4; +func_8019E3A8 = 0x8019E3A8; func_8019E410 = 0x8019E410; func_8019E454 = 0x8019E454; +func_8019E98C = 0x8019E98C; func_8019EA60 = 0x8019EA60; func_8019EA7C = 0x8019EA7C; func_8019EE68 = 0x8019EE68; func_8019F20C = 0x8019F20C; +func_8019F7AC = 0x8019F7AC; func_8019FF9C = 0x8019FF9C; func_801A003C = 0x801A003C; func_801A0120 = 0x801A0120; +func_801A0AF0 = 0x801A0AF0; func_801A0BD8 = 0x801A0BD8; +func_801A12C4 = 0x801A12C4; +func_801A23AC = 0x801A23AC; +func_801A2A78 = 0x801A2A78; +func_801A2B24 = 0x801A2B24; func_801A2DD8 = 0x801A2DD8; +func_801A3240 = 0x801A3240; func_801A3BD4 = 0x801A3BD4; func_801A3E98 = 0x801A3E98; +func_801A43BC = 0x801A43BC; func_801A46A0 = 0x801A46A0; +func_801A4A64 = 0x801A4A64; func_801A4B24 = 0x801A4B24; +func_801A4CB0 = 0x801A4CB0; func_801A4E44 = 0x801A4E44; func_801A52B8 = 0x801A52B8; +func_801A54E8 = 0x801A54E8; func_801A57D0 = 0x801A57D0; +func_801A5AF0 = 0x801A5AF0; func_801A5B3C = 0x801A5B3C; func_801A5B4C = 0x801A5B4C; +func_801A5D68 = 0x801A5D68; func_801A5E54 = 0x801A5E54; +func_801A5F90 = 0x801A5F90; func_801A5FD0 = 0x801A5FD0; +func_801A6100 = 0x801A6100; func_801A6144 = 0x801A6144; +func_801A6540 = 0x801A6540; +func_801A6608 = 0x801A6608; func_801A67C8 = 0x801A67C8; +func_801A68EC = 0x801A68EC; +func_801A71B8 = 0x801A71B8; func_801A7E7C = 0x801A7E7C; +func_801AC294 = 0x801AC294; func_801AC438 = 0x801AC438; func_801AC918 = 0x801AC918; func_801AD6C0 = 0x801AD6C0; func_801AD6F0 = 0x801AD6F0; +func_801ADAC8 = 0x801ADAC8; func_801ADD68 = 0x801ADD68; +func_801AE168 = 0x801AE168; +func_801AE2C0 = 0x801AE2C0; func_801AE3D8 = 0x801AE3D8; func_801AE87C = 0x801AE87C; +func_801AEAA0 = 0x801AEAA0; +func_801AEB44 = 0x801AEB44; func_801AEC04 = 0x801AEC04; +func_801AEEFC = 0x801AEEFC; func_801AFA5C = 0x801AFA5C; +func_801B099C = 0x801B099C; func_801B0B60 = 0x801B0B60; +func_801B0EC0 = 0x801B0EC0; func_801B134C = 0x801B134C; +func_801B4D84 = 0x801B4D84; +func_801B504C = 0x801B504C; func_801B50E8 = 0x801B50E8; +func_801B619C = 0x801B619C; func_801B638C = 0x801B638C; func_801B6FF8 = 0x801B6FF8; +func_801B7A24 = 0x801B7A24; func_801B7C78 = 0x801B7C78; +func_801B90DC = 0x801B90DC; func_801B91A4 = 0x801B91A4; +func_801BA108 = 0x801BA108; func_801BA26C = 0x801BA26C; +func_801BA4E4 = 0x801BA4E4; func_801BA6A4 = 0x801BA6A4; +func_801BAD7C = 0x801BAD7C; func_801BADF8 = 0x801BADF8; +func_801BB204 = 0x801BB204; func_801BB79C = 0x801BB79C; +func_801BC930 = 0x801BC930; func_801BC9A0 = 0x801BC9A0; +func_801BD264 = 0x801BD264; func_801BD54C = 0x801BD54C; +func_801BDE6C = 0x801BDE6C; +func_801BE1FC = 0x801BE1FC; func_801BE3F8 = 0x801BE3F8; +func_801BEB1C = 0x801BEB1C; func_801BEC50 = 0x801BEC50; +func_801BEC5C = 0x801BEC5C; func_801BEC68 = 0x801BEC68; +func_801BEC74 = 0x801BEC74; D_1022120 = 0x01022120; D_1024410 = 0x01024410; @@ -355,6 +320,14 @@ D_302EE00 = 0x0302EE00; D_302EE64 = 0x0302EE64; D_302EE80 = 0x0302EE80; D_302EE9C = 0x0302EE9C; +D_302EEE8 = 0x0302EEE8; +D_302EF00 = 0x0302EF00; +D_302EF6C = 0x0302EF6C; +D_302EF84 = 0x0302EF84; +D_302EFF0 = 0x0302EFF0; +D_302F008 = 0x0302F008; +D_302F044 = 0x0302F044; +D_302F098 = 0x0302F098; D_5000000 = 0x05000000; D_5000080 = 0x05000080; @@ -401,7 +374,6 @@ D_600683C = 0x0600683C; D_6006858 = 0x06006858; D_6006890_f32 = 0x06006890; D_6006890_Gfx = 0x06006890; -D_6030B14_f32 = 0x6030B14; D_60068BC = 0x060068BC; D_60068F0 = 0x060068F0; D_6006A3C = 0x06006A3C; @@ -410,10 +382,12 @@ D_6006BF0 = 0x06006BF0; D_6006C44 = 0x06006C44; D_6006F50 = 0x06006F50; D_6007410 = 0x06007410; +D_6007558 = 0x06007558; D_60075D0 = 0x060075D0; D_60079B0 = 0x060079B0; D_6007D80 = 0x06007D80; D_6008370 = 0x06008370; +D_6008E08 = 0x06008E08; D_600924C = 0x0600924C; D_60092E8 = 0x060092E8; D_6009388 = 0x06009388; @@ -429,9 +403,15 @@ D_600E820 = 0x0600E820; D_600EC90 = 0x0600EC90; D_600EE10 = 0x0600EE10; D_600EEF0 = 0x0600EEF0; +D_600F1DC = 0x0600F1DC; +D_600F394 = 0x0600F394; +D_600F3F4 = 0x0600F3F4; D_600F4C0 = 0x0600F4C0; D_600F560 = 0x0600F560; +D_600F5AC = 0x0600F5AC; +D_600F60C = 0x0600F60C; D_600F6C0 = 0x0600F6C0; +D_600FD50 = 0x0600FD50; D_600FE9C = 0x0600FE9C; D_600FEB8 = 0x0600FEB8; D_600FF30 = 0x0600FF30; @@ -439,6 +419,7 @@ D_600FF80 = 0x0600FF80; D_600FFA0 = 0x0600FFA0; D_600FFC0 = 0x0600FFC0; D_600FFE0 = 0x0600FFE0; +D_6010294 = 0x06010294; D_60102C0 = 0x060102C0; D_6010960 = 0x06010960; D_6010A50 = 0x06010A50; @@ -446,6 +427,7 @@ D_6010E00 = 0x06010E00; D_6011058 = 0x06011058; D_601115C = 0x0601115C; D_601115C = 0x0601115C; +D_601170C = 0x0601170C; D_6011B24 = 0x06011B24; D_6011BF4 = 0x06011BF4; D_6011C10 = 0x06011C10; @@ -462,10 +444,12 @@ D_6014500 = 0x06014500; D_6014670 = 0x06014670; D_6014A20 = 0x06014A20; D_6014B50 = 0x06014B50; +D_6014FEC = 0x06014FEC; D_60153B0 = 0x060153B0; D_6015730 = 0x06015730; D_6015F00 = 0x06015F00; D_6016270 = 0x06016270; +D_6016374 = 0x06016374; D_60164F0 = 0x060164F0; D_6016580 = 0x06016580; D_601668C = 0x0601668C; @@ -530,6 +514,8 @@ D_602C234 = 0x0602C234; D_602C250 = 0x0602C250; D_602C294 = 0x0602C294; D_602C2B0 = 0x0602C2B0; +D_602CACC = 0x0602CACC; +D_602CB80 = 0x0602CB80; D_602D5F0 = 0x0602D5F0; D_602DAE0 = 0x0602DAE0; D_602DB80 = 0x0602DB80; @@ -548,9 +534,15 @@ D_602F740 = 0x0602F740; D_602F75C = 0x0602F75C; D_602F7C0 = 0x0602F7C0; D_602FA50 = 0x0602FA50; +D_602FA9C = 0x0602FA9C; +D_60300C8 = 0x060300C8; +D_6030208 = 0x06030208; D_6030500 = 0x06030500; +D_6030550 = 0x06030550; +D_60305DC = 0x060305DC; D_6030630 = 0x06030630; D_6030B10 = 0x06030B10; +D_6030B14_f32 = 0x6030B14; D_6030BE0 = 0x06030BE0; D_6030BFC = 0x06030BFC; D_6030C18 = 0x06030C18; @@ -564,7 +556,19 @@ D_6030E14 = 0x06030E14; D_6030E30 = 0x06030E30; D_6030E4C = 0x06030E4C; D_6030E68 = 0x06030E68; +D_6030E74 = 0x06030E74; +D_6030E80 = 0x06030E80; +D_6030EB0 = 0x06030EB0; +D_6030EBC = 0x06030EBC; +D_6030EEC = 0x06030EEC; +D_6030EF8 = 0x06030EF8; +D_6030F28 = 0x06030F28; +D_6030F34 = 0x06030F34; +D_6030F64 = 0x06030F64; D_6030F74 = 0x06030F74; +D_6030F7C = 0x06030F7C; +D_6030FC4 = 0x06030FC4; +D_6030FD0 = 0x06030FD0; D_6031398 = 0x06031398; D_60313CC = 0x060313CC; D_6031400 = 0x06031400; @@ -575,9 +579,19 @@ D_6031500 = 0x06031500; D_6031538 = 0x06031538; D_6031554 = 0x06031554; D_6031570 = 0x06031570; +D_603184C = 0x0603184C; +D_6031FB0 = 0x06031FB0; +D_6031FE0 = 0x06031FE0; +D_603204C = 0x0603204C; +D_60320B8 = 0x060320B8; +D_603216C = 0x0603216C; +D_6032388 = 0x06032388; +D_6032430 = 0x06032430; D_6032488 = 0x06032488; D_60324EC = 0x060324EC; D_6032550 = 0x06032550; +D_6033070 = 0x06033070; +D_6033E08 = 0x06033E08; D_603405C = 0x0603405C; D_6034368 = 0x06034368; D_6034478 = 0x06034478; @@ -654,8 +668,6 @@ D_603E54C = 0x0603E54C; D_603E598 = 0x0603E598; D_603E5B4 = 0x0603E5B4; D_603E5D0 = 0x0603E5D0; -D_603E5D0 = 0x0603E5D0; -D_603E5D0 = 0x0603E5D0; D_603E604 = 0x0603E604; D_603E620 = 0x0603E620; D_603E714 = 0x0603E714; @@ -670,6 +682,10 @@ D_603EA08 = 0x0603EA08; D_603EA74 = 0x0603EA74; D_603EAE0 = 0x0603EAE0; D_603EB0C = 0x0603EB0C; +D_603F338 = 0x0603F338; +D_603F388 = 0x0603F388; +D_603F40C = 0x0603F40C; +D_603F4E4 = 0x0603F4E4; D_700AB70 = 0x0700AB70; D_700BE00 = 0x0700BE00; @@ -684,7 +700,6 @@ D_9023AD0 = 0x09023AD0; D_C038A48 = 0x0C038A48; D_C038B40 = 0x0C038B40; -D_C038B40 = 0x0C038B40; D_C038BA4 = 0x0C038BA4; D_C038BD8 = 0x0C038BD8; D_C038DC0 = 0x0C038DC0; diff --git a/src/main/fox_360.c b/src/main/fox_360.c index 7bc3b89d..00799b25 100644 --- a/src/main/fox_360.c +++ b/src/main/fox_360.c @@ -90,7 +90,7 @@ void func_8002E3E0(Object_2F4* obj2F4) { D_80177850 = 15; } -s32 func_8002E4F8(u16* arg0, s32 arg1) { +bool func_8002E4F8(u16* arg0, s32 arg1) { if ((gRadioState == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_0)) { func_800BA808(arg0, arg1); return true; @@ -285,7 +285,7 @@ void func_8002EE34(void) { void func_8002EE64(Object_2F4* obj2F4) { s32 i; - s32 var_s0; + s32 colId; Object_58* obj58; Vec3f temp1; f32 temp4; @@ -328,22 +328,22 @@ void func_8002EE64(Object_2F4* obj2F4) { spCC.z = spD8.z + temp1.z; if ((obj58->obj.id == OBJ_80_149) || (obj58->obj.id == OBJ_80_150)) { if (obj58->obj.id == OBJ_80_149) { - var_s0 = 5; + colId = COL1_5; } else { - var_s0 = 6; + colId = COL1_6; } - if (func_800998FC(&spCC, &spC0, &sp94, var_s0, &spA8, spA0) > 0) { + if (func_800998FC(&spCC, &spC0, &sp94, colId, &spA8, spA0) > 0) { obj2F4->unk_178 = spA8.y; obj2F4->unk_17C = spA0[0]; obj2F4->unk_184 = spA0[1]; obj2F4->unk_180 = (temp4 / 180.0f) * M_PI; } } else { - var_s0 = 0; + colId = COL2_0; if (obj58->obj.id == OBJ_80_3) { - var_s0 = 3; + colId = COL2_3; } - if (func_800A3690(&spCC, &spC0, var_s0, &spB4) != 0) { + if (func_800A3690(&spCC, &spC0, colId, &spB4)) { obj2F4->unk_178 = spB4.y; obj2F4->unk_17C = spB4.x; obj2F4->unk_184 = spB4.z; @@ -1531,8 +1531,7 @@ void func_800319AC(Object_2F4* this) { if ((spE8 < spF4) && (spEC < spF4)) { this->unk_060++; this->unk_064 = 1; - if (!((this->index + gFrameCount) & sp10F) && (Rand_ZeroOne() < spF0) && - (func_80031900(this) != 0) && + if (!((this->index + gFrameCount) & sp10F) && (Rand_ZeroOne() < spF0) && func_80031900(this) && ((gObjects2F4->unk_0B8 == 2) || (gCurrentLevel == LEVEL_TRAINING))) { if ((this->unk_0E6 == 0) && (gCurrentLevel != LEVEL_TRAINING)) { if ((this->unk_060 > 250) && (gCurrentLevel != LEVEL_VENOM_ANDROSS)) { @@ -2110,13 +2109,13 @@ void func_80034E64(Object_2F4* obj2F4) { Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL(&gMasterDisp, 0x29); if (gCurrentLevel == LEVEL_KATINA) { - GPC(128, 255, 255, sp20); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 128, 255, 255, sp20); } else if (gCurrentLevel == LEVEL_BOLSE) { - GPC(255, 128, 128, sp20); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 128, 128, sp20); } else { - GPC(48, 255, 255, sp20); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 48, 255, 255, sp20); } - GDL(D_1031630); + gSPDisplayList(gMasterDisp++, D_1031630); Matrix_Pop(&gGfxMatrix); } } @@ -2139,9 +2138,9 @@ void func_80035098(Object_2F4* obj2F4) { Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL(&gMasterDisp, 0x43); - GPC(255, 255, 255, sp2C); - GEC(0, 0, 160, sp2C); - GDL(D_101DC10); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, sp2C); + gDPSetEnvColor(gMasterDisp++, 0, 0, 160, sp2C); + gSPDisplayList(gMasterDisp++, D_101DC10); Matrix_Pop(&gGfxMatrix); } } @@ -2151,7 +2150,7 @@ bool func_800352E0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thi if (this->timer_0C6 & 1) { RCP_SetupDL(&gMasterDisp, 0x22); - GPC(255, 128, 128, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 128, 128, 255); } else { RCP_SetupDL(&gMasterDisp, 0x1D); } @@ -2160,7 +2159,7 @@ bool func_800352E0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thi } if ((limbIndex == 1) || (limbIndex == 2)) { RCP_SetupDL(&gMasterDisp, 0x22); - GPC((s32) D_8015F914, (s32) D_8015F918, (s32) D_8015F91C, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, (s32) D_8015F914, (s32) D_8015F918, (s32) D_8015F91C, 255); } return false; } @@ -2200,7 +2199,7 @@ void func_80035448(Object_2F4* obj2F4) { case 6: case 7: if (gCurrentLevel == LEVEL_VENOM_2) { - GDL(D_F0103D0); + gSPDisplayList(gMasterDisp++, D_F0103D0); Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 30.0f, 0.0f, -60.0f, 1); func_8005B1E8(obj2F4, 2); @@ -2212,7 +2211,7 @@ void func_80035448(Object_2F4* obj2F4) { func_80035098(obj2F4); func_80034E64(obj2F4); } else { - GDL(D_F00F200); + gSPDisplayList(gMasterDisp++, D_F00F200); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); if (gCurrentLevel == LEVEL_BOLSE) { func_8005B1E8(obj2F4, 3); @@ -2222,11 +2221,11 @@ void func_80035448(Object_2F4* obj2F4) { } break; case 8: - GDL(D_D009A40); + gSPDisplayList(gMasterDisp++, D_D009A40); func_8005ADAC(obj2F4); break; case 9: - GDL(D_D00B880); + gSPDisplayList(gMasterDisp++, D_D00B880); func_8005ADAC(obj2F4); break; case 100: @@ -2245,33 +2244,31 @@ void func_80035448(Object_2F4* obj2F4) { if (gCurrentLevel == LEVEL_FORTUNA) { Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 60.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); - GDL(D_6006BE0); + gSPDisplayList(gMasterDisp++, D_6006BE0); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -100.0f, 1); Matrix_Scale(gGfxMatrix, 1.5f, 1.5f, 1.5f, 1); func_8005B1E8(obj2F4, 2); } else if (gCurrentLevel == LEVEL_KATINA) { switch (obj2F4->unk_0B6) { case 0: - GDL(D_600EFF0); + gSPDisplayList(gMasterDisp++, D_600EFF0); break; case 1: - GDL(D_600E050); + gSPDisplayList(gMasterDisp++, D_600E050); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); func_8005B1E8(obj2F4, 0); break; case 3: - GDL(D_6001530); + gSPDisplayList(gMasterDisp++, D_6001530); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 30.0f, 1); func_80034E64(obj2F4); break; } } else if (gCurrentLevel == LEVEL_SECTOR_Z) { - GDL(D_6004FE0) - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); + gSPDisplayList(gMasterDisp++, D_6004FE0) Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); func_8005B1E8(obj2F4, 2); } else if (gCurrentLevel == LEVEL_BOLSE) { - GDL(D_6008770) - Matrix_Push(&gGfxMatrix); + gSPDisplayList(gMasterDisp++, D_6008770) Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); func_8005B1E8(obj2F4, 2); Matrix_Pop(&gGfxMatrix); @@ -2281,14 +2278,14 @@ void func_80035448(Object_2F4* obj2F4) { Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 10.0f, 1); Animation_DrawSkeleton(0, D_600C2AC, obj2F4->unk_18C, NULL, NULL, obj2F4, &gIdentityMatrix); } else if (gCurrentLevel == LEVEL_VERSUS) { - GDL(D_3015740); + gSPDisplayList(gMasterDisp++, D_3015740); } else if (gCurrentLevel == LEVEL_TRAINING) { if (obj2F4->unk_0E6 == 0) { - GDL(D_F00F200); + gSPDisplayList(gMasterDisp++, D_F00F200); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); func_8005B1E8(obj2F4, 3); } else { - GDL(D_40068F0); + gSPDisplayList(gMasterDisp++, D_40068F0); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1); func_8005B1E8(obj2F4, 2); } diff --git a/src/main/fox_97F80.c b/src/main/fox_97F80.c index c6935b20..a2f93cdb 100644 --- a/src/main/fox_97F80.c +++ b/src/main/fox_97F80.c @@ -298,7 +298,7 @@ s32 func_8009808C(Vec3f* pos, Vtx_tn* quad, Vec3f* norm) { return var_v1; } -s32 func_800985CC(Vec3f* vec, Vtx_tn* tri) { +bool func_800985CC(Vec3f* vec, Vtx_tn* tri) { f32 sp24; f32 sp20; @@ -318,14 +318,14 @@ s32 func_800985CC(Vec3f* vec, Vtx_tn* tri) { sp20 = TRINORM_Y(__vtx1, __vtx0, __vtx2); if (SIGN_OF(sp24) != SIGN_OF(sp20)) { - return 0; + return false; } sp24 = TRINORM_Y(__vtx0, __pos, __vtx2); if (SIGN_OF(sp24) != SIGN_OF(sp20)) { - return 0; + return false; } - return 1; + return true; } // Plane from normal and point @@ -463,7 +463,7 @@ s32 func_80098980(Vec3f* out, Vec3s** tri, Vec3f* vec) { return var_v1; } -s32 func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3, Vec3f* arg4, f32* arg5) { +bool func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3, Vec3f* arg4, f32* arg5) { Vec3s* sp12C[3]; Vec3f temp_V3f1; s32 pad11C; @@ -507,7 +507,7 @@ s32 func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3, if ((temp_V3f1.x < min.x) || (temp_V3f1.y < min.y) || (temp_V3f1.z < min.z) || (max.x < temp_V3f1.x) || (max.y < temp_V3f1.y) || ((max.z < temp_V3f1.z))) { - return 0; + return false; } if ((arg2->x == 0.0f) && (arg2->y == 0.0f) && (arg2->z == 0.0f)) { arg2->y = -5.0f; @@ -584,7 +584,7 @@ s32 func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3, arg5[1] = -Math_Atan2F_XY(sp108.normal.y, sp108.normal.x); } - sp100 = 1; + sp100 = true; break; } } @@ -594,6 +594,6 @@ s32 func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3, return sp100; } -s32 func_800998FC(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, s32 arg3, Vec3f* arg4, f32* arg5) { +bool func_800998FC(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, s32 arg3, Vec3f* arg4, f32* arg5) { return func_80099254(arg0, arg1, arg2, SEGMENTED_TO_VIRTUAL(&D_800D2B38[arg3]), arg4, arg5); } diff --git a/src/main/fox_A4290.c b/src/main/fox_A4290.c index 96b726b0..6818206a 100644 --- a/src/main/fox_A4290.c +++ b/src/main/fox_A4290.c @@ -10,67 +10,67 @@ bool func_800A3690(Vec3f* arg0, Vec3f* arg1, s32 arg2, Vec3f* arg3) { } bool func_800A36FC(Vec3f* arg0, Vec3f* arg1, CollisionHeader2* arg2, Vec3f* arg3) { - Vec3f sp7C; - Plane sp6C; - s32 var_v1; + Vec3f pos; + Plane triPlane; + bool above; s32 i; s32 j; - Vec3f* sp54[3]; - Vec3f sp48; - Vec3f sp3C; + Vec3f* tri[3]; + Vec3f norm; + Vec3f vtx; s32 sp38 = false; - s32 sp34; - s16(*sp30)[3]; - Vec3f* sp2C; + s32 count; + Triangle* polys; + Vec3f* mesh; - sp7C.x = arg0->x - arg1->x; - sp7C.y = arg0->y - arg1->y; - sp7C.z = arg0->z - arg1->z; - if ((sp7C.x < arg2->min.x) || (sp7C.y < arg2->min.y) || (sp7C.z < arg2->min.z) || (arg2->max.x < sp7C.x) || - (arg2->max.y < sp7C.y) || (arg2->max.z < sp7C.z)) { + pos.x = arg0->x - arg1->x; + pos.y = arg0->y - arg1->y; + pos.z = arg0->z - arg1->z; + if ((pos.x < arg2->min.x) || (pos.y < arg2->min.y) || (pos.z < arg2->min.z) || (arg2->max.x < pos.x) || + (arg2->max.y < pos.y) || (arg2->max.z < pos.z)) { return false; } - var_v1 = false; - sp34 = arg2->polyCount; - sp30 = SEGMENTED_TO_VIRTUAL(arg2->polys); - sp2C = SEGMENTED_TO_VIRTUAL(arg2->mesh); - for (i = 0; i < sp34; i++, sp30++) { + above = false; + count = arg2->polyCount; + polys = SEGMENTED_TO_VIRTUAL(arg2->polys); + mesh = SEGMENTED_TO_VIRTUAL(arg2->mesh); + for (i = 0; i < count; i++, polys++) { for (j = 0; j < 3; j++) { - sp54[j] = &sp2C[(*sp30)[j]]; + tri[j] = &mesh[polys->vtx[j]]; } - var_v1 = func_800A3A74(&sp7C, sp54, &sp48); - if (var_v1) { + above = func_800A3A74(&pos, tri, &norm); + if (above) { break; } } - if (var_v1) { - sp3C.x = sp54[0]->x; - sp3C.y = sp54[0]->y; - sp3C.z = sp54[0]->z; - func_80098860(&sp6C, &sp3C, &sp48); - arg3->y = func_800988B4(&sp7C, &sp6C); - if (sp6C.normal.x != 0.0f) { - sp48.x = -sp6C.dist / sp6C.normal.x; + if (above) { + vtx.x = tri[0]->x; + vtx.y = tri[0]->y; + vtx.z = tri[0]->z; + func_80098860(&triPlane, &vtx, &norm); + arg3->y = func_800988B4(&pos, &triPlane); + if (triPlane.normal.x != 0.0f) { + norm.x = -triPlane.dist / triPlane.normal.x; } else { - sp48.x = 0.0f; + norm.x = 0.0f; } - if (sp6C.normal.y != 0.0f) { - sp48.y = -sp6C.dist / sp6C.normal.y; + if (triPlane.normal.y != 0.0f) { + norm.y = -triPlane.dist / triPlane.normal.y; } else { - sp48.y = 0.0f; + norm.y = 0.0f; } - if (sp6C.normal.z != 0.0f) { - sp48.z = -sp6C.dist / sp6C.normal.z; + if (triPlane.normal.z != 0.0f) { + norm.z = -triPlane.dist / triPlane.normal.z; } else { - sp48.z = 0.0f; + norm.z = 0.0f; } - arg3->x = Math_Atan2F_XY(sp48.y, sp48.z); - if (sp48.z != 0.0f) { - arg3->z = -Math_Atan2F_XY(__sinf(Math_Atan2F_XY(sp48.y, sp48.z)) * sp48.z, sp48.x); + arg3->x = Math_Atan2F_XY(norm.y, norm.z); + if (norm.z != 0.0f) { + arg3->z = -Math_Atan2F_XY(__sinf(Math_Atan2F_XY(norm.y, norm.z)) * norm.z, norm.x); } else if (arg3->x >= M_PI) { - arg3->z = Math_Atan2F_XY(sp48.y, sp48.x); + arg3->z = Math_Atan2F_XY(norm.y, norm.x); } else { - arg3->z = -Math_Atan2F_XY(sp48.y, sp48.x); + arg3->z = -Math_Atan2F_XY(norm.y, norm.x); } if ((arg0->y <= arg3->y) || (gCurrentLevel == LEVEL_MACBETH)) { sp38 = true; @@ -79,52 +79,51 @@ bool func_800A36FC(Vec3f* arg0, Vec3f* arg1, CollisionHeader2* arg2, Vec3f* arg3 return sp38; } -// Checks if arg0 is above the triangle arg1. If so, returns the triangle normal in arg2. -s32 func_800A3A74(Vec3f* arg0, Vec3f** arg1, Vec3f* arg2) { +// Checks if point is above the triangle tri. If so, returns the triangle normal in arg2. +s32 func_800A3A74(Vec3f* point, Vec3f** tri, Vec3f* norm) { s32 pad; f32 temp1; - s32 var_v1; + bool ret = false; f32 temp_fv0; - Vec3f v1; - Vec3f v2; - Vec3f v3; - f32 a0x; - f32 a0y; + Vec3f vtx1; + Vec3f vtx2; + Vec3f vtx3; + f32 ptx; + f32 ptz; - var_v1 = false; - v1.x = (*arg1)->x; - v1.y = (*arg1)->y; - v1.z = (*arg1)->z; - arg1++; - v2.x = (*arg1)->x; - v2.y = (*arg1)->y; - v2.z = (*arg1)->z; - arg1++; - v3.x = (*arg1)->x; - v3.y = (*arg1)->y; - v3.z = (*arg1)->z; - arg1++; + vtx1.x = (*tri)->x; + vtx1.y = (*tri)->y; + vtx1.z = (*tri)->z; + tri++; + vtx2.x = (*tri)->x; + vtx2.y = (*tri)->y; + vtx2.z = (*tri)->z; + tri++; + vtx3.x = (*tri)->x; + vtx3.y = (*tri)->y; + vtx3.z = (*tri)->z; + tri++; - a0x = arg0->x; - a0y = arg0->z; - temp1 = ((v2.z - v1.z) * (a0x - v2.x)) - ((v2.x - v1.x) * (a0y - v2.z)); + ptx = point->x; + ptz = point->z; + temp1 = ((vtx2.z - vtx1.z) * (ptx - vtx2.x)) - ((vtx2.x - vtx1.x) * (ptz - vtx2.z)); if (temp1 >= 0.0f) { - if (((v3.x - v2.x) * (a0y - v3.z)) <= ((v3.z - v2.z) * (a0x - v3.x))) { - if (((v1.x - v3.x) * (a0y - v1.z)) <= ((v1.z - v3.z) * (a0x - v1.x))) { - var_v1 = true; - arg2->x = ((v2.y - v1.y) * (v3.z - v2.z)) - ((v2.z - v1.z) * (v3.y - v2.y)); - arg2->y = ((v2.z - v1.z) * (v3.x - v2.x)) - ((v2.x - v1.x) * (v3.z - v2.z)); - arg2->z = ((v2.x - v1.x) * (v3.y - v2.y)) - ((v2.y - v1.y) * (v3.x - v2.x)); - if ((arg2->x != 0.0f) || (arg2->y != 0.0f) || (arg2->z != 0.0f)) { - temp_fv0 = sqrtf(SQ(arg2->x) + SQ(arg2->y) + SQ(arg2->z)); + if (((vtx3.x - vtx2.x) * (ptz - vtx3.z)) <= ((vtx3.z - vtx2.z) * (ptx - vtx3.x))) { + if (((vtx1.x - vtx3.x) * (ptz - vtx1.z)) <= ((vtx1.z - vtx3.z) * (ptx - vtx1.x))) { + ret = true; + norm->x = ((vtx2.y - vtx1.y) * (vtx3.z - vtx2.z)) - ((vtx2.z - vtx1.z) * (vtx3.y - vtx2.y)); + norm->y = ((vtx2.z - vtx1.z) * (vtx3.x - vtx2.x)) - ((vtx2.x - vtx1.x) * (vtx3.z - vtx2.z)); + norm->z = ((vtx2.x - vtx1.x) * (vtx3.y - vtx2.y)) - ((vtx2.y - vtx1.y) * (vtx3.x - vtx2.x)); + if ((norm->x != 0.0f) || (norm->y != 0.0f) || (norm->z != 0.0f)) { + temp_fv0 = sqrtf(SQ(norm->x) + SQ(norm->y) + SQ(norm->z)); if (temp_fv0 != 0) { - arg2->x = (arg2->x / temp_fv0) * 127.0f; - arg2->y = (arg2->y / temp_fv0) * 127.0f; - arg2->z = (arg2->z / temp_fv0) * 127.0f; + norm->x = (norm->x / temp_fv0) * 127.0f; + norm->y = (norm->y / temp_fv0) * 127.0f; + norm->z = (norm->z / temp_fv0) * 127.0f; } } } } } - return var_v1; + return ret; } diff --git a/src/main/fox_A4290_colheaders.c b/src/main/fox_A4290_colheaders.c index 32d219ac..ce7034d5 100644 --- a/src/main/fox_A4290_colheaders.c +++ b/src/main/fox_A4290_colheaders.c @@ -1,4 +1,6 @@ #include "structs.h" +#include "macros.h" +#include "variables.h" static Vec3f D_800D2920[16] = { { 1075.0f, 0.0f, 0.0f }, { 746.0f, 0.0f, -746.0f }, { 202.0f, 361.0f, -202.0f }, { 0.0f, 0.0f, -1075.0f }, @@ -6,13 +8,13 @@ static Vec3f D_800D2920[16] = { { 0.0f, 473.0f, 291.0f }, { 144.0f, 0.0f, 1075.0f }, { -202.0f, 461.0f, 202.0f }, { -515.0f, 0.0f, 746.0f }, { -291.0f, 453.0f, 0.0f }, { -372.0f, 390.0f, -281.0f }, { -951.0f, 0.0f, 0.0f }, { -746.0f, 0.0f, -746.0f }, }; -static s16 D_800D29E0[22][3] = { +static Triangle D_800D29E0[22] = { { 0, 1, 2 }, { 2, 1, 3 }, { 4, 2, 5 }, { 3, 5, 2 }, { 2, 4, 0 }, { 4, 6, 7 }, { 7, 0, 4 }, { 6, 4, 5 }, { 7, 6, 8 }, { 8, 9, 7 }, { 8, 10, 11 }, { 10, 8, 6 }, { 11, 9, 8 }, { 12, 10, 6 }, { 6, 13, 12 }, { 14, 12, 13 }, { 10, 12, 14 }, { 14, 11, 10 }, { 5, 13, 6 }, { 5, 3, 15 }, { 15, 13, 5 }, { 13, 15, 14 }, }; -static s16 D_800D2A64[13][3] = { +static Triangle D_800D2A64[13] = { { 0, 1, 2 }, { 2, 3, 4 }, { 2, 5, 0 }, { 4, 5, 2 }, { 4, 3, 6 }, { 4, 7, 5 }, { 8, 7, 4 }, { 4, 6, 8 }, { 7, 8, 9 }, { 0, 7, 9 }, { 5, 7, 0 }, { 9, 10, 0 }, { 10, 1, 0 }, }; @@ -27,71 +29,71 @@ CollisionHeader D_800D2B38[10] = { { -1128.0f, -1835.0f, -1202.0f }, { 997.0f, 139.0f, 1360.0f }, 79, - 0x0602FA9C, - 0x060300C8, + D_602FA9C, + D_60300C8, }, { { -3006.0f, -2274.0f, -4530.0f }, { 3015.0f, 3348.0f, 5246.0f }, 236, - 0x060305DC, - 0x0603184C, + D_60305DC, + D_603184C, }, { { -152.0f, -200.0f, -152.0f }, { 165.0f, 204.0f, 181.0f }, 42, - 0x06030208, - 0x06030550, + D_6030208, + D_6030550, }, { { -1704.0f, -1006.0f, -4751.0f }, { 1704.0f, 1030.0f, 4842.0f }, 174, - 0x06033070, - 0x06033E08, + D_6033070, + D_6033E08, }, { { -1308.0f, 0.0f, -1460.0f }, { 1310.0f, 666.0f, 807.0f }, 93, - 0x0600F60C, - 0x0600FD50, + D_600F60C, + D_600FD50, }, { { -951.0f, 0.0f, -1075.0f }, { 1075.0f, 1014.0f, 1075.0f }, 22, - 0x0600F3F4, - 0x0600F5AC, + D_600F3F4, + D_600F5AC, }, { { -951.0f, 0.0f, -1075.0f }, { 1075.0f, 384.0f, 1075.0f }, 22, - 0x0600F1DC, - 0x0600F394, + D_600F1DC, + D_600F394, }, { { -1554.0f, -2.0f, -1401.0f }, { 1554.0f, 590.0f, 1401.0f }, 262, - 0x06010294, - 0x0601170C, + D_6010294, + D_601170C, }, { { -1386.0f, -696.0f, -2274.0f }, { 1386.0f, 1033.0f, 1833.0f }, 316, - 0x06007558, - 0x06008E08, + D_6007558, + D_6008E08, }, { { -671.0f, 0.0f, -671.0f }, { 671.0f, 648.0f, 671.0f }, 250, - 0x06014FEC, - 0x06016374, + D_6014FEC, + D_6016374, }, }; @@ -99,7 +101,7 @@ CollisionHeader2 D_800D2CA0[19] = { { { -951.0f, 0.0f, -1075.0f }, { 1075.0f, 594.0f, 1075.0f }, - 22, + ARRAY_COUNT(D_800D29E0), D_800D29E0, D_800D2920, }, @@ -107,20 +109,20 @@ CollisionHeader2 D_800D2CA0[19] = { { -1220.0f, 0.0f, -1315.0f }, { 1403.0f, 174.0f, 1308.0f }, 13, - 0x0603F338, - 0x0603F388, + D_603F338, + D_603F388, }, { { -1311.0f, 0.0f, -1120.0f }, { 1266.0f, 1465.0f, 1266.0f }, 36, - 0x0603F40C, - 0x0603F4E4, + D_603F40C, + D_603F4E4, }, { { -435.0f, -10.0f, -435.0f }, { 435.0f, 174.0f, 435.0f }, - 13, + ARRAY_COUNT(D_800D2A64), D_800D2A64, D_800D2AB4, }, @@ -128,105 +130,105 @@ CollisionHeader2 D_800D2CA0[19] = { { -498.0f, -10.0f, -498.0f }, { 498.0f, 705.0f, 498.0f }, 4, - 0x0302EEE8, - 0x0302EF00, + D_302EEE8, + D_302EF00, }, { { -1494.0f, -30.0f, -1494.0f }, { 1494.0f, 2115.0f, 1494.0f }, 4, - 0x0302EF6C, - 0x0302EF84, + D_302EF6C, + D_302EF84, }, { { -623.0f, -10.0f, -623.0f }, { 623.0f, 200.0f, 623.0f }, 4, - 0x0302EFF0, - 0x0302F008, + D_302EFF0, + D_302F008, }, { { -488.0f, 0.0f, -568.0f }, { 488.0f, 148.0f, 567.0f }, 30, - 0x0602CACC, - 0x0602CB80, + D_602CACC, + D_602CB80, }, { { -900.0f, -110.0f, -1900.0f }, { 900.0f, 190.0f, 100.0f }, 2, - 0x06030E74, - 0x06030E80, + D_6030E74, + D_6030E80, }, { { -900.0f, -100.0f, -1000.0f }, { 900.0f, 250.0f, 100.0f }, 2, - 0x06030EB0, - 0x06030EBC, + D_6030EB0, + D_6030EBC, }, { { -900.0f, -190.0f, -1900.0f }, { 900.0f, 100.0f, 100.0f }, 2, - 0x06030EEC, - 0x06030EF8, + D_6030EEC, + D_6030EF8, }, { { -500.0f, -250.0f, -1010.0f }, { 500.0f, 100.0f, 100.0f }, 2, - 0x06030F28, - 0x06030F34, + D_6030F28, + D_6030F34, }, { { -1200.0f, 0.0f, -1800.0f }, { 0.0f, 900.0f, 1500.0f }, 4, - 0x06030F64, - 0x06030F7C, + D_6030F64, + D_6030F7C, }, { { -400.0f, 0.0f, -900.0f }, { 400.0f, 0.0f, 0.0f }, 2, - 0x06030FC4, - 0x06030FD0, + D_6030FC4, + D_6030FD0, }, { { -74.0f, 0.0f, -84.0f }, { 74.0f, 125.0f, 84.0f }, 30, - 0x060320B8, - 0x0603216C, + D_60320B8, + D_603216C, }, { { -1200.0f, 0.0f, -1315.0f }, { 1403.0f, 200.0f, 1308.0f }, 8, - 0x06031FB0, - 0x06031FE0, + D_6031FB0, + D_6031FE0, }, { { -600.0f, 0.0f, -657.0f }, { 701.0f, 100.0f, 654.0f }, 8, - 0x06031FB0, - 0x0603204C, + D_6031FB0, + D_603204C, }, { { -2965.0f, -16.0f, -2965.0f }, { 2965.0f, 544.0f, 2965.0f }, 14, - 0x0302F044, - 0x0302F098, + D_302F044, + D_302F098, }, { { -814.0f, 0.0f, -691.0f }, { 814.0f, 752.0f, 691.0f }, 28, - 0x06032388, - 0x06032430, + D_6032388, + D_6032430, }, }; diff --git a/src/main/fox_beam.c b/src/main/fox_beam.c new file mode 100644 index 00000000..8edaf297 --- /dev/null +++ b/src/main/fox_beam.c @@ -0,0 +1,2297 @@ +#include "global.h" + +static Vec3f D_8015F950; + +void func_80035D30(Object_8C* obj8C, f32 xPos, f32 yPos, f32 zPos) { + Object_8C_Initialize(obj8C); + obj8C->obj.status = 1; + obj8C->obj.id = OBJ_8C_351; + obj8C->obj.pos.x = xPos; + obj8C->obj.pos.y = yPos; + obj8C->obj.pos.z = zPos; + obj8C->unk_54.z = 0.0f; + obj8C->scale2 = 0.3f; + obj8C->unk_4A = 100; + obj8C->unk_48 = 3; + + if (Rand_ZeroOne() < 0.5f) { + obj8C->unk_48 = -obj8C->unk_48; + } + Object_SetInfo(&obj8C->info, obj8C->obj.id); +} + +void func_80035DEC(f32 xPos, f32 yPos, f32 zPos) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(gObjects8C); i++) { + if (gObjects8C[i].obj.status == 0) { + func_80035D30(&gObjects8C[i], xPos, yPos, zPos); + break; + } + } +} + +void PlayerShot_Initialize(PlayerShot* shot) { + s32 i; + u8* ptr = (u8*) shot; + + for (i = 0; i < sizeof(PlayerShot); i++, ptr++) { + *ptr = 0; + } +} + +void func_80035E78(PlayerShot* shot) { + f32 var_fs0; + f32 var_fv0; + f32 var_fv1; + s32 var_v0; + + if (shot->unk_5C == 0) { + shot->vel.x = shot->vel.y = shot->vel.z = shot->obj.rot.x = shot->obj.rot.y = shot->obj.rot.z = 0.0f; + shot->unk_44 = 1.0f; + shot->unk_5C = 1; + shot->unk_64 = 30; + shot->unk_58 = 150; + func_8001CE28(shot->playerNum, &shot->sfxPos); + D_Timer_80161A60 = 4; + if (shot->obj.pos.y < (D_80177940 + 450.0f)) { + D_80178480 = 15; + if (D_80161A88 == 2) { + func_8007D9DC(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 0); + func_8007D9DC(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 5); + func_8007D9DC(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 10); + func_8007ADF4(shot->obj.pos.x, D_80177940, shot->obj.pos.z, shot->unk_48 * 0.05f, shot->unk_48 * 0.5f); + func_8007A6F0(&shot->obj.pos, 0x19000014); + } else { + func_80062B60(shot->obj.pos.x, shot->obj.pos.z, 0, shot->unk_48 * 3.0f); + } + } + if (gCurrentLevel == LEVEL_BOLSE) { + var_fv0 = 180.0f - (shot->obj.pos.y / 20.0f); + if (var_fv0 < 50.0f) { + var_fv0 = 50.0f; + } + var_fv1 = shot->obj.pos.y / 1000.0f; + if (var_fv1 > 2.0f) { + var_fv1 = 2.0f; + } + func_8007B550(shot->obj.pos.x, D_80177940 + 6.0f, shot->obj.pos.z, shot->unk_48 * (1.5f + var_fv1), + var_fv0); + } + + if (gVersusMode) { + var_v0 = shot->playerNum + 10; + } else { + var_v0 = 0; + } + func_8007B344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, shot->unk_48 * 1.5f, var_v0); + if (D_80178294 != 0) { + var_fs0 = 5.0f; + if (shot->obj.pos.y > 300.0f) { + var_fs0 = 1.0f; + } else if (shot->obj.pos.y > 200.0f) { + var_fs0 = 2.0f; + } else if (shot->obj.pos.y > 100.0f) { + var_fs0 = 3.0f; + } else if (shot->obj.pos.y > 0.0f) { + var_fs0 = 4.0f; + } + var_fs0 *= 2.0f; + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 50.0f, 0.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 46.0f, 19.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 35.0f, 35.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 19.0f, 46.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 0.0f, 50.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -50.0f, 0.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -46.0f, 19.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -35.0f, 35.0f, var_fs0); + func_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -19.0f, 46.0f, var_fs0); + } + } +} + +void func_80036318(PlayerShot* shot) { + s32 var_v0_2; + s32 i; + + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + return; + } + shot->obj.pos.z = D_80178498; // strange order on the globals + shot->obj.pos.y = D_801784A0; + shot->obj.pos.x = D_8017849C; + if ((shot->obj.id == PLAYERSHOT_3) || + ((gCurrentLevel != LEVEL_AQUAS) && (shot->obj.id == PLAYERSHOT_8) && (shot->unk_5C != 0))) { + if (shot->obj.id == PLAYERSHOT_8) { + shot->obj.id = PLAYERSHOT_3; + shot->unk_5C = 0; + } + func_80035E78(shot); + } else if (shot->obj.id == PLAYERSHOT_8) { + shot->unk_44 = 7.5f; + for (i = 0; i < ARRAY_COUNT(gObjects2F4); i++) { + gObjects2F4[i].timer_0CA[shot->playerNum] = 0; + } + shot->vel.x = shot->vel.y = shot->vel.z = 0.0f; + if (gCurrentLevel == LEVEL_AQUAS) { + D_80178360 = D_80178364 = D_80178368 = 0; + func_8007B344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 10.0f, 4); + func_8007C120(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.3f, 30); + } else { + + if (gVersusMode) { + var_v0_2 = shot->playerNum + 10; + } else { + var_v0_2 = 12; + } + func_8007B344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 10.0f, var_v0_2); + func_8007D2C8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 4.0f); + } + } else { + shot->obj.status = 2; + shot->unk_60 = 0; + } +} + +void func_80036528(Object_8C* obj8C, f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 xRot, f32 scale, s32 unk44, s32 time) { + Object_8C_Initialize(obj8C); + obj8C->obj.status = 1; + obj8C->obj.id = OBJ_8C_344; + obj8C->obj.pos.x = xPos; + obj8C->obj.pos.y = yPos; + obj8C->obj.pos.z = zPos; + obj8C->obj.rot.y = yRot; + obj8C->obj.rot.x = xRot; + obj8C->scale2 = scale * 0.5f; + obj8C->unk_44 = unk44; + obj8C->unk_46 = 80; + obj8C->timer_50 = time; + Object_SetInfo(&obj8C->info, obj8C->obj.id); + func_800A6070(&obj8C->sfxPos, 0x29000000); +} + +void func_800365E4(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 arg4, f32 arg5, f32 yRot, f32 xRot, f32 scale, s32 unk44, + s32 time) { + s32 i; + + if ((D_801784AC != 4) && (gLevelType == LEVELTYPE_PLANET) && (D_80161A88 != 2) && (gCurrentLevel != LEVEL_SOLAR) && + (gCurrentLevel != LEVEL_BOLSE) && (gCurrentLevel != LEVEL_TRAINING) && (gCurrentLevel != LEVEL_ZONESS)) { + for (i = 0; i < 50; i++) { + if (gObjects8C[i].obj.status == 0) { + func_80036528(&gObjects8C[i], xPos, yPos, zPos, yRot, xRot, scale, unk44, time); + break; + } + } + } +} + +void func_800366CC(Object_8C* obj8C, f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale) { + Object_8C_Initialize(obj8C); + obj8C->obj.status = 1; + obj8C->obj.id = OBJ_8C_345; + obj8C->obj.pos.x = xPos; + obj8C->obj.pos.y = yPos; + obj8C->obj.pos.z = zPos; + obj8C->obj.rot.y = yRot; + obj8C->scale2 = scale * 0.5f; + obj8C->timer_50 = 80; + Object_SetInfo(&obj8C->info, obj8C->obj.id); + func_800A6070(&obj8C->sfxPos, 0x29000000); +} + +void func_80036770(f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale) { + s32 i; + + if ((D_801784AC != 4) && (gLevelType == LEVELTYPE_PLANET) && (D_80161A88 <= 0) && + (gCurrentLevel != LEVEL_TRAINING) && (gCurrentLevel != LEVEL_SOLAR) && (gCurrentLevel != LEVEL_ZONESS)) { + for (i = 0; i < 50; i++) { + if (gObjects8C[i].obj.status == 0) { + func_800366CC(&gObjects8C[i], xPos, yPos, zPos, yRot, scale); + func_8007D10C(xPos, yPos, zPos, 2.0f); + break; + } + } + } + if (gCurrentLevel == LEVEL_BOLSE) { + func_8007D10C(xPos, yPos, zPos, 2.0f); + } +} + +s32 func_80036874(PlayerShot* shot, f32* hitboxData, Object* obj) { + s32 count; + f32 shotPx; + f32 shotPy; + f32 shotPz; + f32 xySizeMod; + f32 boxRotX; + f32 boxRotY; + f32 boxRotZ; + f32 rotateBox; + f32 checkDist; + Vec3f spAC; + Vec3f spA0; + s32 i; + Hitbox* hitbox; + + checkDist = 2000.0f; + if ((gCurrentLevel == LEVEL_KATINA) || (gCurrentLevel == LEVEL_SECTOR_Y)) { + checkDist = 5000.0f; + } else if (gCurrentLevel == LEVEL_ZONESS) { + checkDist = 3500.0f; + } + + if ((fabsf(shot->obj.pos.z - obj->pos.z) < checkDist) && (fabsf(shot->obj.pos.x - obj->pos.x) < checkDist) && + (fabsf(shot->obj.pos.y - obj->pos.y) < checkDist)) { + count = *hitboxData; + if (count != 0) { + xySizeMod = 10.0f; + if ((shot->playerNum < 4) && + ((gLaserStrength[shot->playerNum] != LASERS_SINGLE) || (shot->obj.id == PLAYERSHOT_8))) { + xySizeMod += 30.0f; + } + hitboxData++; + for (i = 0; i < count; i++, hitboxData += 6) { + rotateBox = 0.0f; + boxRotZ = 0.0f; + boxRotY = 0.0f; + boxRotX = 0.0f; + if (hitboxData[0] >= HITBOX_UNK_3) { + return 0; + } + if (hitboxData[0] == HITBOX_UNK_2) { + rotateBox = 1.0f; + boxRotX = hitboxData[1]; + boxRotY = hitboxData[2]; + boxRotZ = hitboxData[3]; + hitboxData += 4; + } + if ((obj->rot.y == 0.0f) && (obj->rot.z == 0.0f) && (obj->rot.x == 0.0f) && (rotateBox == 0.0f)) { + shotPx = shot->obj.pos.x; + shotPy = shot->obj.pos.y; + shotPz = shot->obj.pos.z; + } else { + Matrix_RotateZ(gCalcMatrix, -boxRotZ * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -boxRotX * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -boxRotY * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, -obj->rot.z * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, -obj->rot.x * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -obj->rot.y * M_DTOR, 1); + spAC.x = shot->obj.pos.x - obj->pos.x; + spAC.y = shot->obj.pos.y - obj->pos.y; + spAC.z = shot->obj.pos.z - obj->pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &spAC, &spA0); + shotPx = obj->pos.x + spA0.x; + shotPy = obj->pos.y + spA0.y; + shotPz = obj->pos.z + spA0.z; + } + hitbox = (Hitbox*) hitboxData; + if ((fabsf(hitbox->z.offset + obj->pos.z - shotPz) < (hitbox->z.size + 50.0f)) && + (fabsf(hitbox->x.offset + obj->pos.x - shotPx) < (hitbox->x.size + xySizeMod)) && + (fabsf(hitbox->y.offset + obj->pos.y - shotPy) < (hitbox->y.size + xySizeMod))) { + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + return 0; + } + if ((obj->id < 176) || (obj->id >= 292)) { + func_80036318(shot); + } + if ((obj->id == 15) || ((obj->id == 22) && (i == 0)) || ((obj->id == 10) && (i == 0)) || + ((obj->id == 13) && (i == 0)) || ((obj->id == 12) && (i < 3)) || (obj->id == 16) || + (obj->id == 14)) { + if (shot->obj.pos.x - (obj->pos.x + hitbox->x.offset) < -hitbox->x.size) { + if (hitbox->z.size + (obj->pos.z + hitbox->z.offset) < shot->obj.pos.z) { + shot->obj.pos.z = hitbox->z.size + (obj->pos.z + hitbox->z.offset) - 5.0f; + } + func_800365E4((hitbox->x.offset + obj->pos.x) - (hitbox->x.size + 2.0f), shot->obj.pos.y, + shot->obj.pos.z, obj->pos.x, obj->pos.z, obj->rot.y, obj->rot.y + 90.0f, 0.0f, + 2.0f, 1, 20); + return i + 1; + } + if (hitbox->x.size < shot->obj.pos.x - (obj->pos.x + hitbox->x.offset)) { + if ((hitbox->z.size + (obj->pos.z + hitbox->z.offset)) < shot->obj.pos.z) { + shot->obj.pos.z = hitbox->z.size + (obj->pos.z + hitbox->z.offset) - 5.0f; + } + func_800365E4(hitbox->x.size + (hitbox->x.offset + obj->pos.x) + 2.0f, shot->obj.pos.y, + shot->obj.pos.z, obj->pos.x, obj->pos.z, obj->rot.y, obj->rot.y + 90.0f, 0.0f, + 2.0f, 1, 20); + return i + 1; + } + if (((hitbox->y.size + (obj->pos.y + hitbox->y.offset)) - 10.0f) <= shot->obj.pos.y) { + shot->obj.pos.y = ((hitbox->y.size + (obj->pos.y + hitbox->y.offset)) - 10.0f); + } + func_800365E4(shot->obj.pos.x, shot->obj.pos.y, + hitbox->z.size + (obj->pos.z + hitbox->z.offset) + 20.0f, obj->pos.x, obj->pos.z, + 0.0f, 0.0f, 0.0f, 2.0f, 1, 20); + return i + 1; + } + if (obj->id < 161) { + func_8007A6F0(&shot->obj.pos, 0x29121007); + } + return i + 1; + } + } + } + } + return 0; +} + +s32 func_80036F88(PlayerShot* shot, Object_2F4* obj2F4) { + s32 i; + f32* hitboxData; + f32 shotPx; + f32 shotPy; + f32 shotPz; + f32 xySizeMod; + Vec3f sp7C; + Vec3f sp70; + Hitbox* hitbox; + s32 count; + + if ((fabsf(shot->obj.pos.z - obj2F4->obj.pos.z) < 2000.0f) && + (fabsf(shot->obj.pos.y - obj2F4->obj.pos.y) < 2000.0f) && + (fabsf(shot->obj.pos.x - obj2F4->obj.pos.x) < 2000.0f)) { + hitboxData = obj2F4->info.hitbox; + count = *hitboxData++; + if (count != 0) { + xySizeMod = 0.0f; + if (obj2F4->info.unk_16 == 1) { + xySizeMod = fabsf((obj2F4->obj.pos.z + D_80177D20) / 50.0f) + 10.0f; + if ((shot->playerNum < 4) && + ((gLaserStrength[shot->playerNum] != LASERS_SINGLE) || (shot->obj.id == PLAYERSHOT_8))) { + xySizeMod += 30.0f; + } + } + for (i = 0; i < count; i++, hitboxData += 6) { + if (obj2F4->info.unk_16 == 1) { + shotPx = shot->obj.pos.x; + shotPy = shot->obj.pos.y; + shotPz = shot->obj.pos.z; + } else { + if (hitboxData[0] == HITBOX_UNK_2) { + Matrix_RotateZ(gCalcMatrix, -hitboxData[3] * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -hitboxData[1] * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -hitboxData[2] * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, -obj2F4->obj.rot.z * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, -obj2F4->obj.rot.x * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -obj2F4->obj.rot.y * M_DTOR, 1); + hitboxData += 4; + } else { + Matrix_RotateZ(gCalcMatrix, -obj2F4->obj.rot.z * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -obj2F4->obj.rot.x * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -obj2F4->obj.rot.y * M_DTOR, 1); + } + if (((obj2F4->unk_2E8.z != 0.0f) || (obj2F4->unk_2E8.x != 0.0f) || (obj2F4->unk_0F4.z != 0.0f) || + (obj2F4->unk_2E8.y != 0.0f)) && + (obj2F4->unk_0B4 != 31)) { + Matrix_RotateZ(gCalcMatrix, -(obj2F4->unk_2E8.z + obj2F4->unk_0F4.z) * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, -obj2F4->unk_2E8.x * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -obj2F4->unk_2E8.y * M_DTOR, 1); + } + sp7C.x = shot->obj.pos.x - obj2F4->obj.pos.x; + sp7C.y = shot->obj.pos.y - obj2F4->obj.pos.y; + sp7C.z = shot->obj.pos.z - obj2F4->obj.pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp70); + shotPx = obj2F4->obj.pos.x + sp70.x; + shotPy = obj2F4->obj.pos.y + sp70.y; + shotPz = obj2F4->obj.pos.z + sp70.z; + } + hitbox = (Hitbox*) hitboxData; + if ((fabsf(hitbox->z.offset + obj2F4->obj.pos.z - shotPz) < (hitbox->z.size + 50.0f)) && + (fabsf(hitbox->x.offset + obj2F4->obj.pos.x - shotPx) < (hitbox->x.size + xySizeMod)) && + (fabsf(hitbox->y.offset + obj2F4->obj.pos.y - shotPy) < (hitbox->y.size + xySizeMod))) { + return i + 1; + } + } + } + } + return 0; +} + +bool func_80037438(PlayerShot* shot, Object_2F4* obj2F4) { + Object* shotx = &shot->obj; + f32 temp_fv1 = obj2F4->obj.pos.x - shotx->pos.x; + f32 temp_fa0 = obj2F4->obj.pos.z - shotx->pos.z; + f32 var_fa1; + f32* hitboxData = obj2F4->info.hitbox; + + if (((s32) hitboxData[0] != 0) && (sqrtf(SQ(temp_fv1) + SQ(temp_fa0)) <= 500.0f)) { + if (shot->playerNum < 4) { + temp_fv1 = obj2F4->obj.pos.x - gPlayer[0].camEye.x; + temp_fa0 = obj2F4->obj.pos.z + D_80177D20 - gPlayer[0].camEye.z; + var_fa1 = (sqrtf(SQ(temp_fv1) + SQ(temp_fa0)) / 50.0f) + 20.0f + 10.0f; + if (var_fa1 > 200.0f) { + var_fa1 = 200.0f; + } + if (shotx->id == PLAYERSHOT_8) { + var_fa1 = 30.0f; + } else if (gLaserStrength[shot->playerNum] != LASERS_SINGLE) { + var_fa1 += 30.0f; + } + if (fabsf(hitboxData[1] + obj2F4->obj.pos.z - shotx->pos.z) < (hitboxData[2] + var_fa1)) { + if (fabsf(hitboxData[3] + obj2F4->obj.pos.y - shotx->pos.y) < (hitboxData[4] + var_fa1)) { + if (fabsf(hitboxData[5] + obj2F4->obj.pos.x - shotx->pos.x) < (hitboxData[6] + var_fa1)) { + return true; + } + } + } + } else { + if (fabsf(hitboxData[1] + obj2F4->obj.pos.z - shotx->pos.z) < hitboxData[2]) { + if (fabsf(hitboxData[3] + obj2F4->obj.pos.y - shotx->pos.y) < hitboxData[4]) { + if (fabsf(hitboxData[5] + obj2F4->obj.pos.x - shotx->pos.x) < hitboxData[6]) { + return true; + } + } + } + } + } + + return false; +} + +bool func_80037698(PlayerShot* shot, Object_4C* obj4C) { + f32* temp_v0 = obj4C->info.hitbox; + + if (((s32) temp_v0[0] != 0) && (fabsf(temp_v0[1] + obj4C->obj.pos.z - shot->obj.pos.z) < temp_v0[2]) && + (fabsf(temp_v0[3] + obj4C->obj.pos.y - shot->obj.pos.y) < temp_v0[4]) && + (fabsf(temp_v0[5] + obj4C->obj.pos.x - shot->obj.pos.x) < temp_v0[6])) { + return true; + } + return false; +} + +bool func_8003774C(PlayerShot* shot, ObjectId objId, Object* obj) { + Vec3f sp7C; + Vec3f sp70; + Vec3f sp64; + Vec3f sp58; + Vec3f sp4C; + f32 sp44[2]; + Vec3f sp38; + bool useCol2; + s32 pad1; + + sp7C.x = obj->pos.x - shot->obj.pos.x; + sp7C.z = obj->pos.z - shot->obj.pos.z; + // undefined behavior: if this check fails, the function returns no value + if (((fabsf(sp7C.x) < 1100.0f) && (fabsf(sp7C.z) < 1100.0f) && (shot->obj.pos.y < 900.0f)) || + (objId == OBJ_408_313) || (objId == OBJ_UNK_1000) || (objId == OBJ_80_39)) { + Matrix_RotateY(gCalcMatrix, -obj->rot.y * M_DTOR, 0); + sp7C.x = shot->obj.pos.x - obj->pos.x; + sp7C.y = shot->obj.pos.y - obj->pos.y; + sp7C.z = shot->obj.pos.z - obj->pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp70); + sp7C.x = shot->vel.x; + sp7C.y = shot->vel.y; + sp7C.z = shot->vel.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp38); + sp64.x = obj->pos.x + sp70.x; + sp64.y = obj->pos.y + sp70.y; + sp64.z = obj->pos.z + sp70.z; + sp58.x = obj->pos.x; + sp58.y = obj->pos.y; + sp58.z = obj->pos.z; + useCol2 = false; + switch (objId) { + case OBJ_2F4_180: + objId = COL1_0; + break; + case OBJ_80_4: + case OBJ_80_5: + objId = COL2_1; + useCol2 = true; + break; + case OBJ_80_149: + objId = COL1_5; + break; + case OBJ_80_150: + objId = COL1_6; + break; + case OBJ_408_308: + objId = COL1_4; + break; + case OBJ_408_312: + objId = COL1_9; + break; + case OBJ_408_309: + objId = COL1_7; + break; + case OBJ_UNK_1000: + objId = COL1_3; + break; + case OBJ_408_313: + objId = COL1_8; + break; + case OBJ_80_39: + objId = COL1_1; + break; + case OBJ_80_120: + objId = COL2_18; + useCol2 = true; + break; + case OBJ_80_143: + objId = COL2_17; + useCol2 = true; + break; + case OBJ_80_124: + objId = COL2_15; + useCol2 = true; + break; + case OBJ_80_126: + objId = COL2_16; + useCol2 = true; + break; + case OBJ_80_47: + objId = COL2_7; + useCol2 = true; + break; + case OBJ_80_2: + objId = COL2_2; + useCol2 = true; + break; + case OBJ_80_3: + case OBJ_80_69: + objId = COL2_3; + useCol2 = true; + break; + case OBJ_80_140: + objId = COL2_4; + useCol2 = true; + break; + case OBJ_80_141: + objId = COL2_6; + useCol2 = true; + break; + case OBJ_80_117: + objId = COL2_14; + useCol2 = true; + break; + case OBJ_80_70: + objId = COL2_8; + useCol2 = true; + break; + case OBJ_80_72: + objId = COL2_9; + useCol2 = true; + break; + case OBJ_80_71: + objId = COL2_10; + useCol2 = true; + break; + case OBJ_80_73: + objId = COL2_11; + useCol2 = true; + break; + case OBJ_80_67: + objId = COL2_12; + useCol2 = true; + break; + case OBJ_80_74: + objId = COL2_13; + useCol2 = true; + break; + default: + objId = COL2_0; + useCol2 = true; + break; + } + if (!useCol2) { + if (func_800998FC(&sp64, &sp58, &sp38, objId, &sp4C, sp44) > 0) { + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + return false; + } + func_80036318(shot); + func_8007A6F0(&shot->obj.pos, 0x29121007); + if (gCurrentLevel == LEVEL_METEO) { + Matrix_RotateY(gCalcMatrix, obj->rot.y * M_DTOR, 0); + sp7C.x = sp4C.x - obj->pos.x; + sp7C.y = sp4C.y - obj->pos.y; + sp7C.z = sp4C.z - obj->pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp70); + shot->obj.pos.x = obj->pos.x + sp70.x; + shot->obj.pos.y = obj->pos.y + sp70.y; + shot->obj.pos.z = obj->pos.z + sp70.z; + } + if (gCurrentLevel == LEVEL_FORTUNA) { + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + } + return true; + } + } else if (func_800A3690(&sp64, &sp58, objId, &sp4C)) { + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + return false; + } + func_80036318(shot); + func_8007A6F0(&shot->obj.pos, 0x29121007); + if (gCurrentLevel == LEVEL_FORTUNA) { + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + } + return true; + } + return false; + } + // return false; +} + +void func_80037CF4(PlayerShot* shot, Object_2F4* obj2F4, s32 hitIndex) { + Vec3f sp44 = { 0.0f, 0.0f, -100.0f }; + Vec3f sp38; + + obj2F4->unk_0D0 = 1; + obj2F4->unk_0D2 = hitIndex - 1; + obj2F4->timer_0C2 = 2; + obj2F4->unk_0D6 = 10; + if ((shot->playerNum < 4) && (gPlayer[shot->playerNum].form != FORM_LANDMASTER)) { + switch (gLaserStrength[shot->playerNum]) { + case LASERS_TWIN: + obj2F4->unk_0D6 = 12; + break; + case LASERS_HYPER: + obj2F4->unk_0D6 = 15; + break; + } + } else if ((shot->playerNum >= 100) && (gCurrentLevel == LEVEL_SECTOR_X)) { + if ((gObjects2F4[shot->playerNum - 100].obj.id == 200) && (gObjects2F4[shot->playerNum - 100].unk_080 == 5)) { + obj2F4->unk_0D6 = 30; + } + } + if (shot->obj.id == PLAYERSHOT_9) { + obj2F4->unk_0D6 = 100; + } else if (shot->obj.id == PLAYERSHOT_8) { + if (gCurrentLevel == LEVEL_AQUAS) { + obj2F4->unk_0D6 = 31; + } else { + obj2F4->unk_0D0 = 2; + obj2F4->unk_0D6 = 30; + obj2F4->timer_0CA[shot->playerNum] = 0; + } + } + obj2F4->unk_0D4 = shot->playerNum + 1; + obj2F4->unk_0D8.x = shot->obj.pos.x; + obj2F4->unk_0D8.y = shot->obj.pos.y; + obj2F4->unk_0D8.z = shot->obj.pos.z; + if (((obj2F4->obj.id == OBJ_2F4_200) && (obj2F4->unk_0D2 == 0) && + ((obj2F4->unk_0B4 == 48) || (obj2F4->unk_0B4 == 49) || (obj2F4->unk_0B4 == 50))) || + ((obj2F4->obj.id == OBJ_2F4_197) && (obj2F4->unk_170 > 1.0f)) || + ((obj2F4->obj.id == OBJ_2F4_200) && (obj2F4->unk_0D2 == 0) && (obj2F4->unk_0B4 == 67)) || + ((obj2F4->obj.id == OBJ_2F4_261) && (shot->obj.id != PLAYERSHOT_8) && + ((obj2F4->unk_0B8 < 3) || (obj2F4->unk_0B8 >= 5))) || + ((obj2F4->obj.id == OBJ_2F4_260) && (shot->obj.id != PLAYERSHOT_8) && (obj2F4->timer_0BC != 0))) { + if ((obj2F4->obj.id == OBJ_2F4_261) && (obj2F4->unk_0B8 < 2)) { + obj2F4->unk_0B8 = 2; + } + if ((shot->obj.id == PLAYERSHOT_8) || (shot->obj.id == PLAYERSHOT_3)) { + func_80036318(shot); + } else { + shot->unk_64 = 25; + shot->obj.rot.y += 90.0f; + shot->obj.rot.x = Rand_ZeroOne() * 360.0f; + Matrix_RotateY(gCalcMatrix, shot->obj.rot.y * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, shot->obj.rot.x * M_DTOR, 1); + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); + shot->vel.x = sp38.x; + shot->vel.y = sp38.y; + shot->vel.z = sp38.z; + shot->obj.pos.x += shot->vel.x * 5.0f; + shot->obj.pos.y += shot->vel.y * 5.0f; + shot->obj.pos.z += shot->vel.z * 5.0f; + obj2F4->timer_0C2 = 3; + func_80078E50(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z, 8.0f); + Audio_PlaySfx(0x29121007, &obj2F4->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + func_800A668C(D_8017849C, D_801784A0, D_80178498); + } + } else { + func_80036318(shot); + } +} + +void func_80038140(PlayerShot* shot) { + s32 i; + s32 temp_v0; + s32 spA4; + f32 temp_fa0; + f32 temp_fv0; + f32 temp_fv1; + f32 sp94; + Vec3f sp88; + Vec3f sp7C; + Object_2F4* obj2F4; + Object_408* obj408; + Object_58* obj58; + Object_4C* obj4C; + Object_80* obj80; + Object_8C* obj8C; + bool sp60; + Player* player; + + sp60 = true; + if (shot->obj.id == PLAYERSHOT_4) { + sp60 = false; + } + if (sp60) { + for (i = 0, obj8C = gObjects8C; i < 100; i++, obj8C++) { + if ((obj8C->obj.status >= 2) && (obj8C->info.unk_19 != 0) && + (fabsf(shot->obj.pos.z - obj8C->obj.pos.z) < 200.0f) && + (fabsf(shot->obj.pos.x - obj8C->obj.pos.x) < 100.0f) && + (fabsf(shot->obj.pos.y - obj8C->obj.pos.y) < 100.0f)) { + if (obj8C->info.unk_19 == 2) { + obj8C->unk_44 = 1; + } else { + Object_Kill(&obj8C->obj, &obj8C->sfxPos); + } + } + } + for (i = 0, obj2F4 = gObjects2F4; i < 60; i++, obj2F4++) { + if ((obj2F4->obj.status >= 2) && (obj2F4->timer_0C2 == 0)) { + switch (obj2F4->obj.id) { + case OBJ_2F4_180: + if (func_8003774C(shot, obj2F4->obj.id, &obj2F4->obj)) { + obj2F4->unk_0D0 = 1; + obj2F4->unk_0D2 = shot->playerNum; + return; + } + break; + case OBJ_2F4_200: + if (obj2F4->unk_0B4 == 42) { + if (func_8003774C(shot, OBJ_UNK_1000, &obj2F4->obj)) { + obj2F4->unk_0D0 = 1; + obj2F4->unk_0D2 = shot->playerNum; + return; + } + } else if (obj2F4->unk_0B4 == 63) { + temp_fv1 = fabsf(obj2F4->obj.pos.x - shot->obj.pos.x); + temp_fa0 = fabsf(obj2F4->obj.pos.y - shot->obj.pos.y); + temp_fv0 = fabsf(obj2F4->obj.pos.z - shot->obj.pos.z); + if (sqrtf(SQ(temp_fv1) + SQ(temp_fa0) + SQ(temp_fv0)) < 1000.0f) { + func_80037CF4(shot, obj2F4, 0); + } + } else { + temp_v0 = func_80036F88(shot, obj2F4); + if (temp_v0 != 0) { + func_80037CF4(shot, obj2F4, temp_v0); + return; + } + } + break; + default: + if (obj2F4->info.unk_16 != 0) { + if (obj2F4->obj.id == OBJ_2F4_197) { + if ((obj2F4->unk_0E4 >= 4) && (obj2F4->unk_0E4 < 10) && + (((gCurrentLevel == LEVEL_VENOM_2) && (shot->playerNum < 104)) || + ((gCurrentLevel != LEVEL_VENOM_2) && (shot->playerNum == 0))) && + (shot->obj.id != PLAYERSHOT_8) && + (fabsf(obj2F4->obj.pos.x - shot->obj.pos.x) < 500.0f) && + (fabsf(obj2F4->obj.pos.y - shot->obj.pos.y) < 300.0f) && + (fabsf(obj2F4->obj.pos.z - shot->obj.pos.z) < 500.0f)) { + if (gCurrentLevel == LEVEL_VENOM_2) { + obj2F4->unk_094 = 1; + } else if (Rand_ZeroOne() < 0.1f) { + obj2F4->unk_094 = 1; + } + } + } + temp_v0 = func_80037438(shot, obj2F4); + if (temp_v0 != 0) { + func_80037CF4(shot, obj2F4, temp_v0); + return; + } + } else { + temp_v0 = func_80036874(shot, obj2F4->info.hitbox, &obj2F4->obj); + if (temp_v0 != 0) { + func_80037CF4(shot, obj2F4, temp_v0); + return; + } + } + break; + } + } + } + if (gLevelMode == LEVELMODE_ALL_RANGE) { + for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { + temp_fv1 = 50.0f; + if (gVersusMode && (shot->playerNum < 4) && + !((gLaserStrength[shot->playerNum] == LASERS_SINGLE) && (shot->obj.id != PLAYERSHOT_8))) { + temp_fv1 = 100.0f; + } + if (player->unk_280 >= 100) { + temp_fv1 = 150.0f; + } + if (player->form == FORM_LANDMASTER) { + temp_fv1 *= 2.0f; + temp_fa0 = temp_fv1 + 50.0f; + } else if (player->form == FORM_ON_FOOT) { + temp_fa0 = temp_fv1 + 50.0f; + } else { + temp_fa0 = temp_fv1; + } + if ((i != shot->playerNum) && + ((player->state_1C8 == PLAYERSTATE_1C8_3) || (player->state_1C8 == PLAYERSTATE_1C8_4)) && + (fabsf(player->unk_138 - shot->obj.pos.z) < temp_fv1) && + (fabsf(player->pos.x - shot->obj.pos.x) < temp_fv1) && + (fabsf(player->pos.y - shot->obj.pos.y) < temp_fa0)) { + if (player->unk_280 >= 100) { + shot->obj.rot.y = player->unk_0E8 + player->unk_114 + 180.0f + 90.0f; + shot->obj.rot.x = Rand_ZeroOne() * 360.0f; + Matrix_RotateY(gCalcMatrix, shot->obj.rot.y * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, shot->obj.rot.x * M_DTOR, 1); + sp88.x = sp88.y = 0.0f; + sp88.z = -133.33333f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp88, &sp7C); + shot->vel.x = sp7C.x; + shot->vel.y = sp7C.y; + shot->vel.z = sp7C.z; + shot->obj.pos.x += 2.0f * shot->vel.x; + shot->obj.pos.y += 2.0f * shot->vel.y; + shot->obj.pos.z += 2.0f * shot->vel.z; + shot->unk_64 = 5; + Audio_PlaySfx(0x09007011, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + func_80078E50(player->pos.x, player->pos.y, player->unk_138, 8.0f); + } else { + func_80036318(shot); + if (player->unk_1F4 == 0) { + if (gPlayer[0].form == 3) { + Player_ApplyDamage(player, 0, 60); + } else { + Player_ApplyDamage(player, 0, 20); + } + player->unk_284 = 1; + if (gCamCount != 1) { + player->unk_288 = shot->playerNum + 1; + } + player->unk_0D8.x = shot->vel.x * 0.1f; + player->unk_0D8.y = shot->vel.y * 0.1f; + player->unk_0D8.z = shot->vel.z * 0.1f; + if (player->form != FORM_ON_FOOT) { + func_8007D1E0(player->pos.x, player->pos.y, player->unk_138, 2.0f); + } + } + } + } + } + } + } + if ((D_801784AC == 4) && func_E6A810_801B6AEC(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + D_80177D20)) { + func_80036318(shot); + if (shot->obj.id != PLAYERSHOT_4) { + func_8007A900(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 2.0f, 255, 15, 0); + } + } + if ((D_80178294 != 0) && func_800A73E4(&sp94, &spA4, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z)) { + func_80036318(shot); + if (shot->obj.id != PLAYERSHOT_4) { + func_8007B228(shot->obj.pos.x, sp94, shot->obj.pos.z, 1.0f); + } + } + + if ((gLevelMode == LEVELMODE_ALL_RANGE) && (shot->playerNum < 110)) { + for (i = 0, obj58 = gObjects58; i < 200; i++, obj58++) { + if (obj58->obj.status == 2) { + if ((obj58->obj.id == OBJ_80_117) || (obj58->obj.id == OBJ_80_141) || (obj58->obj.id == OBJ_80_149) || + (obj58->obj.id == OBJ_80_150) || (obj58->obj.id == OBJ_80_148) || (obj58->obj.id == OBJ_80_143) || + (obj58->obj.id == OBJ_80_160) || (obj58->obj.id == OBJ_80_1) || (obj58->obj.id == OBJ_80_3) || + (obj58->obj.id == OBJ_80_140)) { + func_8003774C(shot, obj58->obj.id, &obj58->obj); + } else { + func_80036874(shot, obj58->info.hitbox, &obj58->obj); + } + } + } + } else { + for (i = 0, obj80 = gObjects80; i < 50; i++, obj80++) { + if (obj80->obj.status == 2) { + if ((obj80->obj.id == OBJ_80_1) || (obj80->obj.id == OBJ_80_39) || (obj80->obj.id == OBJ_80_4) || + (obj80->obj.id == OBJ_80_5) || (obj80->obj.id == OBJ_80_120) || (obj80->obj.id == OBJ_80_124) || + (obj80->obj.id == OBJ_80_126) || (obj80->obj.id == OBJ_80_47) || (obj80->obj.id == OBJ_80_2) || + (obj80->obj.id == OBJ_80_3) || (obj80->obj.id == OBJ_80_67) || (obj80->obj.id == OBJ_80_74) || + (obj80->obj.id == OBJ_80_3)) { + func_8003774C(shot, obj80->obj.id, &obj80->obj); + } else { + temp_v0 = func_80036874(shot, obj80->info.hitbox, &obj80->obj); + if (temp_v0 != 0) { + obj80->unk_50 = 1; + obj80->unk_54 = temp_v0 - 1; + } + } + } + } + } + if (sp60) { + for (i = 0, obj4C = gObjects4C; i < 40; i++, obj4C++) { + if (obj4C->obj.status == 2) { + if (obj4C->obj.id != OBJ_4C_169) { + if (func_80037698(shot, obj4C)) { + obj4C->unk_46 = 1; + } + } else { + if (func_80036874(shot, obj4C->info.hitbox, &obj4C->obj) != 0) { + obj4C->unk_46 = 1; + } + } + } + } + } + for (i = 0, obj408 = gObjects408; i < 4; i++, obj408++) { + if ((obj408->obj.status == 2) && (obj408->timer_05A == 0)) { + if ((obj408->obj.id == OBJ_408_308) || (obj408->obj.id == OBJ_408_312) || (obj408->obj.id == OBJ_408_309) || + (obj408->obj.id == OBJ_408_313)) { + func_8003774C(shot, obj408->obj.id, &obj408->obj); + } else if (obj408->obj.id == OBJ_408_310) { + temp_fv1 = fabsf(obj408->obj.pos.x - shot->obj.pos.x) * .8333333f; + temp_fa0 = fabsf(obj408->obj.pos.y - shot->obj.pos.y) * 2; + temp_fv0 = fabsf(obj408->obj.pos.z - shot->obj.pos.z) * 0.8333333f; + if (sqrtf(SQ(temp_fv1) + SQ(temp_fa0) + SQ(temp_fv0)) < 1500.0f) { + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + } else { + obj408->unk_062 = 1; + func_80036318(shot); + Audio_PlaySfx(0x29001062, &shot->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + } + } else { + if (obj408->obj.id == OBJ_408_316) { + temp_fv1 = fabsf(obj408->obj.pos.x - shot->obj.pos.x); + temp_fa0 = fabsf(obj408->obj.pos.y - 300.0f - shot->obj.pos.y) * 7.42f; + temp_fv0 = fabsf(obj408->obj.pos.z - shot->obj.pos.z); + if (sqrtf(SQ(temp_fv1) + SQ(temp_fa0) + SQ(temp_fv0)) < 2700.0f) { + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + } else { + obj408->unk_062 = 1; + obj408->unk_066 = 100; + Audio_PlaySfx(0x29121007, &shot->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + func_80036318(shot); + } + } + } + temp_v0 = func_80036874(shot, obj408->info.hitbox, &obj408->obj); + if (temp_v0 != 0) { + if (shot->obj.id == PLAYERSHOT_4) { + Object_Kill(&shot->obj, &shot->sfxPos); + } else if (!((obj408->obj.id == OBJ_408_316) && (shot->playerNum != 0))) { + obj408->unk_062 = 1; + if (shot->obj.id == PLAYERSHOT_3) { + obj408->unk_062 = -1; + obj408->unk_064 = 20; + } else if (shot->obj.id == PLAYERSHOT_8) { + if (gCurrentLevel == LEVEL_AQUAS) { + obj408->unk_064 = 31; + } else { + obj408->unk_064 = 30; + } + } else { + obj408->unk_064 = 10; + if (shot->playerNum < 4) { + switch (gLaserStrength[shot->playerNum]) { + case LASERS_SINGLE: + case LASERS_TWIN: + break; + case LASERS_HYPER: + obj408->unk_064 = 15; + break; + } + } + } + if (obj408->obj.id == OBJ_408_314) { + obj408->unk_0AE = shot->playerNum; + } + obj408->unk_066 = temp_v0 - 1; + if (obj408->obj.id == OBJ_408_301) { + obj408->unk_092 = shot->obj.id; + } else if (obj408->obj.id == OBJ_408_319) { + obj408->unk_194 = shot->obj.pos.x; + obj408->unk_198 = shot->obj.pos.y; + obj408->unk_19C = shot->obj.pos.z; + } + } else { + return; + } + } + } + } + } +} + +void func_80038F34(PlayerShot* shot) { + Vec3f sp4C = { 0.0f, 0.0f, 0.0f }; + s32 sp48 = 0; + + Matrix_Translate(gGfxMatrix, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + D_80177D20, 1); + Matrix_MultVec3f(gGfxMatrix, &sp4C, &D_8015F950); + if ((D_8015F950.z < 0.0f) && (D_8015F950.z > -10000.0f)) { + if (fabsf(D_8015F950.x) < (fabsf(D_8015F950.z * 0.5f) + 500.0f)) { + if (fabsf(D_8015F950.y) < (fabsf(D_8015F950.z * 0.5f) + 500.0f)) { + sp48 = 1; + } + } + } + if (!sp48) { + if (!gVersusMode) { + Object_Kill(&shot->obj, &shot->sfxPos); + return; + } + } else { + shot->obj.rot.y = -gPlayer[gPlayerNum].unk_058; + Matrix_RotateY(gGfxMatrix, shot->obj.rot.y, 1); + Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, 1); + if (shot->obj.id == PLAYERSHOT_7) { + Matrix_Scale(gGfxMatrix, 0.2f, 0.2f, 0.2f, 1); + } + Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL_40(); + switch (shot->unk_60) { + case 0: + gSPDisplayList(gMasterDisp++, D_1026090); + break; + case 1: + gSPDisplayList(gMasterDisp++, D_1025800); + break; + case 2: + Matrix_Scale(gGfxMatrix, 1.5f, 0.7f, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1025800); + break; + } + } +} + +void func_80039210(PlayerShot* shot) { + f32 var_fv0; + f32 var_fv1; + u8 var_a1; + f32 sp70; + Gfx* sp6C; + + sp6C = D_101AED0; + if (gCamCount < 4) { + RCP_SetupDL_21(); + sp70 = 9.0f; + if ((shot->unk_58 == 0) || ((gCurrentLevel == LEVEL_METEO) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_2))) { + var_fv0 = 4.0f; + var_fv1 = 20.0f; + } else { + var_fv0 = 2.0f; + var_fv1 = 10.0f; + } + if ((gLaserStrength[0] > LASERS_SINGLE) && (shot->unk_58 == 0)) { + switch (gLaserStrength[0]) { + case LASERS_TWIN: + break; + case LASERS_HYPER: + sp6C = D_101AD20; + break; + } + if (gCurrentLevel == LEVEL_AQUAS) { + sp70 = 4.0f; + } + Matrix_Scale(gGfxMatrix, var_fv0, var_fv0, var_fv1, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_Translate(gGfxMatrix, sp70, 0.f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, sp6C); + Matrix_Translate(gGfxMatrix, -(2.0f * sp70), 0.0f, 0.f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, sp6C); + } else { + var_a1 = 0; + if ((gCurrentLevel != LEVEL_KATINA) && (shot->playerNum >= 104) && (shot->playerNum != 108)) { + if (gObjects2F4[shot->playerNum - 100].obj.id != 200) { + var_a1 = 1; + } else if (gObjects2F4[shot->playerNum - 100].unk_080 == 5) { + var_a1 = 2; + } + } else if (gCurrentLevel == LEVEL_KATINA) { + if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_2) { + if (shot->playerNum >= 104) { + if (gObjects2F4[shot->playerNum - 100].unk_0B6 == 0) { + var_a1 = 1; + } + if (gObjects2F4[shot->playerNum - 100].unk_0B6 == 2) { + var_a1 = 2; + } + } + } else if (gObjects2F4[shot->playerNum - 100].unk_0B6 == 34) { + var_a1 = 1; + } + } + switch (var_a1) { + case 0: + Matrix_Scale(gGfxMatrix, var_fv0, var_fv0, var_fv1, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101AED0); + break; + case 1: + Matrix_Translate(gGfxMatrix, 0.0f, 0.f, 150.0f, 1); + Matrix_Scale(gGfxMatrix, 0.7f, 0.7f, 1.5f, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101ABD0); + break; + case 2: + Matrix_Scale(gGfxMatrix, var_fv0, var_fv0, var_fv1, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_Translate(gGfxMatrix, 25.0f, 0.0f, 0.f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101AED0); + sp6C = D_101AED0; + Matrix_Translate(gGfxMatrix, -50.0f, 0.0f, 0.f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, sp6C); + break; + case 3: + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, 50.0f, 0.0f, 150.0f, 1); + Matrix_Scale(gGfxMatrix, 0.7f, 0.7f, 1.5f, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101ABD0); + Matrix_Pop(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, -50.0f, 0.0f, 150.0f, 1); + Matrix_Scale(gGfxMatrix, 0.7f, 0.7f, 1.5f, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101ABD0); + break; + } + } + } else { + RCP_SetupDL_64(); + switch (shot->playerNum) { + case 0: + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 32, 255); + break; + case 1: + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 100, 200, 255); + break; + case 2: + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 255, 32, 255); + break; + case 3: + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 255, 255); + break; + } + Matrix_Scale(gGfxMatrix, 6.0f, 4.0f, 10.0f, 1); + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_SetGfxMtx(&gMasterDisp); + if (gLaserStrength[shot->playerNum] != LASERS_SINGLE) { + Matrix_Translate(gGfxMatrix, 6.0f, 0.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_302D120); + Matrix_Translate(gGfxMatrix, -12.0f, 0.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_302D120); + } else { + gSPDisplayList(gMasterDisp++, D_302D120); + } + } +} + +static f32 D_800C9BD8[10] = { 100.0f, 100.0f, 0.0f, 0.0f, 0.0f, 50.0f, 0.0f, 40.0f, 30.0f, 100.0f }; +static u8 D_800C9C00[4] = { 255, 255, 32, 32 }; +static u8 D_800C9C04[4] = { 255, 32, 255, 32 }; +static u8 D_800C9C08[4] = { 32, 32, 32, 255 }; +void func_80039A50(PlayerShot* shot) { + Vec3f sp11C = { 0.0f, 0.0f, 0.0f }; + s32 pad[4]; + f32 var_fv1; + s32 sp104 = 0; + + Matrix_Translate(gGfxMatrix, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + D_80177D20, 1); + Matrix_MultVec3f(gGfxMatrix, &sp11C, &D_8015F950); + if ((D_8015F950.z < 0.0f) && (D_8015F950.z > -10000.0f)) { + var_fv1 = fabsf(D_8015F950.x); // probably fake. The use of temps was likely different + if (var_fv1 < (fabsf(D_8015F950.z * 0.5f) + 500.0f)) { + if (fabsf(D_8015F950.y) < (fabsf(D_8015F950.z * 0.5f) + 500.0f)) { + sp104 = 1; + } + } + } + if (!sp104) { + if ((shot->obj.id != PLAYERSHOT_3) && (shot->unk_64 < 10) && !gVersusMode) { + Object_Kill(&shot->obj, &shot->sfxPos); + } + } else { + if ((shot->obj.id == PLAYERSHOT_5) || (shot->obj.id == PLAYERSHOT_6) || (shot->obj.id == PLAYERSHOT_7)) { + shot->obj.rot.y = (-gPlayer[gPlayerNum].unk_058 * 180.0f) / M_PI; + shot->obj.rot.x = (gPlayer[gPlayerNum].unk_05C * 180.0f) / M_PI; + } + if (shot->obj.id != PLAYERSHOT_2) { + Matrix_RotateY(gGfxMatrix, shot->obj.rot.y * M_DTOR, 1); + Matrix_RotateX(gGfxMatrix, shot->obj.rot.x * M_DTOR, 1); + Matrix_RotateZ(gGfxMatrix, shot->obj.rot.z * M_DTOR, 1); + if ((shot->obj.id == PLAYERSHOT_3) && (shot->unk_5C == 0)) { + Matrix_RotateZ(gGfxMatrix, shot->unk_34 * M_DTOR, 1); + Matrix_RotateY(gGfxMatrix, shot->unk_30 * M_DTOR, 1); + Matrix_RotateX(gGfxMatrix, shot->unk_2C * M_DTOR, 1); + } + } + Matrix_Translate(gGfxMatrix, 0.f, 0.f, D_800C9BD8[shot->obj.id], 1); + Matrix_SetGfxMtx(&gMasterDisp); + switch (shot->obj.id) { + case PLAYERSHOT_0: + case PLAYERSHOT_1: + func_80039210(shot); + break; + case PLAYERSHOT_3: + if (shot->unk_5C == 0) { + RCP_SetupDL(&gMasterDisp, 0x1D); + gSPDisplayList(gMasterDisp++, D_10231A0); + Matrix_Pop(&gGfxMatrix); + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + D_80177D20, 1); + Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].unk_058, 1); + Matrix_RotateX(gGfxMatrix, gPlayer[gPlayerNum].unk_05C, 1); + Matrix_RotateZ(gGfxMatrix, gFrameCount * 40.0f * M_DTOR, 1); + if (!(gFrameCount & 1)) { + Matrix_Scale(gGfxMatrix, 1.7f, 1.7f, 1.7f, 1); + } else { + Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.2f, 1); + } + RCP_SetupDL(&gMasterDisp, 0x31); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); + if (gVersusMode) { + switch (shot->playerNum) { + case 0: + gDPSetEnvColor(gMasterDisp++, 255, 255, 32, 128); + break; + case 1: + gDPSetEnvColor(gMasterDisp++, 255, 32, 32, 128); + break; + case 2: + gDPSetEnvColor(gMasterDisp++, 32, 255, 32, 128); + break; + case 3: + gDPSetEnvColor(gMasterDisp++, 32, 32, 255, 128); + break; + } + } else { + gDPSetEnvColor(gMasterDisp++, 0, 128, 255, 255); + } + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1024AC0); + } else { + Matrix_Scale(gGfxMatrix, shot->unk_44, shot->unk_44, shot->unk_44, 1); + Matrix_SetGfxMtx(&gMasterDisp); + if (gVersusMode) { + RCP_SetupDL_49(); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, shot->unk_58); + switch (shot->playerNum) { + case 0: + gDPSetEnvColor(gMasterDisp++, 255, 255, 32, shot->unk_58); + break; + case 1: + gDPSetEnvColor(gMasterDisp++, 255, 32, 32, shot->unk_58); + break; + case 2: + gDPSetEnvColor(gMasterDisp++, 32, 255, 32, shot->unk_58); + break; + case 3: + gDPSetEnvColor(gMasterDisp++, 32, 32, 255, shot->unk_58); + break; + } + } else { + RCP_SetupDL_64_2(); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, shot->unk_58); + } + gSPDisplayList(gMasterDisp++, D_1031EC0); + } + break; + case PLAYERSHOT_5: + gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); + RCP_SetupDL_40(); + if (gVersusMode) { + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); + gDPSetEnvColor(gMasterDisp++, D_800C9C00[shot->playerNum], D_800C9C04[shot->playerNum], + D_800C9C08[shot->playerNum], 255); + RCP_SetupDL(&gMasterDisp, 0x31); + if (gLaserStrength[shot->playerNum] != LASERS_SINGLE) { + Matrix_RotateZ(gGfxMatrix, gFrameCount * 48.0f * M_DTOR, 1); + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, 0.f, 50.0f, 0.0f, 1); + Matrix_RotateZ(gGfxMatrix, gFrameCount * 70.0f * M_DTOR, 1); + Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_301AD60); + Matrix_Pop(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, 0.0f, -50.0f, 0.0f, 1); + Matrix_RotateZ(gGfxMatrix, gFrameCount * 70.0f * M_DTOR, 1); + Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_301AD60); + } else { + if (!(gFrameCount & 1)) { + var_fv1 = M_PI; + } else { + var_fv1 = 0.0f; + } + Matrix_RotateY(gGfxMatrix, var_fv1, 1); + Matrix_RotateZ(gGfxMatrix, 0.5235988f, 1); + Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_301AD60); + } + } else { + if (!(gFrameCount & 1)) { + var_fv1 = M_PI; + } else { + var_fv1 = 0.0f; + } + Matrix_RotateY(gGfxMatrix, var_fv1, 1); + Matrix_RotateZ(gGfxMatrix, 0.5235988f, 1); + Matrix_Scale(gGfxMatrix, 1.0f, 0.65f, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL_68(); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); + gDPSetEnvColor(gMasterDisp++, 0, 255, 0, 0); + gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); + gSPDisplayList(gMasterDisp++, D_3006940); + } + break; + case PLAYERSHOT_6: + case PLAYERSHOT_7: + Matrix_Scale(gGfxMatrix, shot->unk_44, shot->unk_44, shot->unk_44, 1); + Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL(&gMasterDisp, 0x31); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); + gDPSetEnvColor(gMasterDisp++, D_800C9C00[shot->playerNum], D_800C9C04[shot->playerNum], + D_800C9C08[shot->playerNum], 255); + if (gLaserStrength[shot->playerNum] != LASERS_SINGLE) { + Matrix_RotateZ(gGfxMatrix, gFrameCount * 48.0f * M_DTOR, 1); + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, 0.f, 40.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_301AEF0); + Matrix_Pop(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, 0.f, -40.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_301AEF0); + } else { + gSPDisplayList(gMasterDisp++, D_301AEF0); + } + break; + case PLAYERSHOT_8: + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_SetGfxMtx(&gMasterDisp); + if (gCurrentLevel == LEVEL_AQUAS) { + RCP_SetupDL(&gMasterDisp, 0x3C); + gSPDisplayList(gMasterDisp++, D_600DB80); + Matrix_Pop(&gGfxMatrix); + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, shot->obj.pos.x, D_80177940, shot->obj.pos.z + D_80177D20, 1); + Matrix_Scale(gGfxMatrix, shot->unk_2C, shot->unk_30, shot->unk_34, 1); + RCP_SetupDL(&gMasterDisp, 0x31); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 0, shot->unk_58); + gDPSetEnvColor(gMasterDisp++, 32, 16, 16, shot->unk_58); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1024AC0); + } else if (shot->unk_5C == 0) { + if (!(shot->unk_44 > 1.5f)) { + Matrix_Pop(&gGfxMatrix); + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + D_80177D20, 1); + Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].unk_058, 1); + Matrix_RotateX(gGfxMatrix, gPlayer[gPlayerNum].unk_05C, 1); + Matrix_Push(&gGfxMatrix); + Matrix_Scale(gGfxMatrix, 20.0f, 20.0f, 20.0f, 1); + RCP_SetupDL(&gMasterDisp, 0x31); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); + if (gVersusMode) { + switch (shot->playerNum) { + case 0: + gDPSetEnvColor(gMasterDisp++, 255, 255, 32, 255); + break; + case 1: + gDPSetEnvColor(gMasterDisp++, 255, 32, 32, 255); + break; + case 2: + gDPSetEnvColor(gMasterDisp++, 32, 255, 32, 255); + break; + case 3: + gDPSetEnvColor(gMasterDisp++, 32, 32, 255, 255); + break; + } + } else { + gDPSetEnvColor(gMasterDisp++, 0, 255, 0, 255); + } + Matrix_RotateZ(gGfxMatrix, gFrameCount * 53.0f * M_DTOR, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101C2E0); + Matrix_RotateZ(gGfxMatrix, gFrameCount * -53.0f * 2.0f * M_DTOR, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_101C2E0); + Matrix_Pop(&gGfxMatrix); + if (!(gFrameCount & 1)) { + Matrix_Scale(gGfxMatrix, 1.7f, 1.7f, 1.7f, 1); + } else { + Matrix_Scale(gGfxMatrix, 1.3f, 1.3f, 1.3f, 1); + } + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1024AC0); + } + } else { + RCP_SetupDL(&gMasterDisp, 0x1D); + gSPDisplayList(gMasterDisp++, D_10231A0); + Matrix_Pop(&gGfxMatrix); + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + D_80177D20, 1); + Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].unk_058, 1); + Matrix_RotateX(gGfxMatrix, gPlayer[gPlayerNum].unk_05C, 1); + if (!(gFrameCount & 1)) { + Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.2f, 1); + } else { + Matrix_Scale(gGfxMatrix, 1.5f, 1.5f, 1.5f, 1); + } + RCP_SetupDL(&gMasterDisp, 0x31); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); + gDPSetEnvColor(gMasterDisp++, 255, 128, 128, 255); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1024AC0); + } + break; + case PLAYERSHOT_9: + Matrix_RotateY(gGfxMatrix, M_PI, 1); + Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 20.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL_40(); + gSPDisplayList(gMasterDisp++, D_E00DFB0); + break; + } + } +} + +void func_8003AF88(PlayerShot* shot) { + switch (shot->obj.status) { + case 1: + func_80039A50(shot); + break; + case 2: + func_80038F34(shot); + break; + } +} + +void func_8003AFD8(PlayerShot* shot) { + shot->unk_60++; + if (shot->unk_60 > 2) { + Object_Kill(&shot->obj, &shot->sfxPos); + } +} + +void func_8003B00C(PlayerShot* shot, Player* player) { + Vec3f sp5C; + Vec3f sp50; + Vec3f sp44; + Vec3f sp38; + switch (shot->unk_5C) { + case 0: + Matrix_RotateY(gCalcMatrix, (player->unk_114 + player->unk_0E8 + 180.0f) * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -(player->unk_0E4 * M_DTOR), 1); + Matrix_RotateZ(gCalcMatrix, -((player->unk_0F8 + player->unk_0F0) * M_DTOR), 1); + Matrix_Translate(gCalcMatrix, player->unk_084, player->unk_080, 0.0f, 1); + sp5C.x = 0.0f; + sp5C.y = 0.0f; + sp5C.z = player->unk_0D0 + 200.0f; + Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp50); + shot->vel.x = sp50.x; + shot->vel.y = sp50.y; + shot->vel.z = sp50.z - player->unk_110; + sp5C.x = shot->unk_54; + sp5C.y = -15.0f; + sp5C.z = 0.0f; + Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp44); + shot->unk_48 = player->pos.x + sp44.x; + shot->unk_4C = player->pos.y + sp44.y; + shot->unk_50 = player->unk_138 + sp44.z; + shot->unk_44 += 200.0f; + if (shot->unk_44 > 5000.0f) { + shot->unk_44 = 5000.0f; + } + for (sp5C.z = 0.0f; sp5C.z <= shot->unk_44; sp5C.z += 200.0f) { + Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp38); + D_80178498 = shot->obj.pos.z; + D_801784A0 = shot->obj.pos.y; + D_8017849C = shot->obj.pos.x; + shot->obj.pos.x = player->pos.x + sp38.x; + shot->obj.pos.y = player->pos.y + sp38.y; + shot->obj.pos.z = player->unk_138 + sp38.z; + Matrix_Push(&gCalcMatrix); + func_80038140(shot); + Matrix_Pop(&gCalcMatrix); + if (shot->obj.pos.y < D_80177940) { + shot->unk_5C = 0; + func_80036770(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->obj.rot.y, 2.0f); + break; + } else if (shot->unk_5C == 2) { + shot->unk_5C = 0; + break; + } + } + shot->unk_64 = 30; + shot->obj.rot.y = player->unk_0E8 + player->unk_114; + if (!(gControllerHold->button & U_CBUTTONS) && !(gControllerHold->button & A_BUTTON)) { + shot->unk_5C = 1; + } + break; + case 1: + shot->unk_48 += shot->vel.x; + shot->unk_4C += shot->vel.y; + shot->unk_50 += shot->vel.z; + break; + case 2: + shot->obj.pos.x -= shot->vel.x; + shot->obj.pos.y -= shot->vel.y; + shot->obj.pos.z -= shot->vel.z; + shot->unk_48 += shot->vel.x; + shot->unk_4C += shot->vel.y; + shot->unk_50 += shot->vel.z; + if (!(gFrameCount & 3)) { + func_800A668C(D_8017849C, D_801784A0, D_80178498); + } + if ((fabsf(shot->obj.pos.x - shot->unk_48) < 200.0f) && (fabsf(shot->obj.pos.y - shot->unk_4C) < 200.0f) && + (fabsf(shot->obj.pos.z - shot->unk_50) < 200.0f)) { + Object_Kill(&shot->obj, &shot->sfxPos); + return; + } + break; + } + if (shot->unk_64 == 0) { + Object_Kill(&shot->obj, &shot->sfxPos); + } + if (shot->unk_5C == 1) { + if (shot->obj.pos.y < D_80177940) { + func_80036318(shot); + func_80036770(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->obj.rot.y, 2.0f); + if (gCurrentLevel == LEVEL_FORTUNA) { + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + } + } + func_80038140(shot); + } +} + +void func_8003B55C(PlayerShot* shot, s32 index) { + Vec3f sp44; + Vec3f sp38; + + if ((D_80161A88 == 2) && (shot->obj.pos.y < (D_80177940 + 50.0f)) && (index == 0)) { + func_8007ACE0(shot->obj.pos.x, D_80177940, shot->obj.pos.z, 0.1f, 1.5f, shot->obj.rot.y + 20.0f); + func_8007ACE0(shot->obj.pos.x, D_80177940, shot->obj.pos.z, 0.1f, 1.5f, shot->obj.rot.y - 20.0f); + } + if ((shot->obj.pos.y < D_80177940) && (D_801784AC != 4)) { + func_80036318(shot); + shot->obj.pos.y = D_80177940 + 2; + if (gCurrentLevel == LEVEL_BOLSE) { + func_8007A6F0(&shot->obj.pos, 0x29121007); + } + if ((gCamCount != 4) && (gCurrentLevel != LEVEL_AQUAS)) { + if ((shot->playerNum == 0) && (gLaserStrength[0] != LASERS_SINGLE) && + (gPlayer[0].form != FORM_LANDMASTER)) { + Matrix_RotateY(gCalcMatrix, shot->obj.rot.y * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, shot->obj.rot.x * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, shot->obj.rot.z * M_DTOR, 1); + sp44.y = sp44.z = 0.0f; + sp44.x = 40.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); + func_80036770(shot->obj.pos.x + sp38.x, D_80177940 + 2.0f, shot->obj.pos.z + sp38.z, shot->obj.rot.y, + 2.0f); + sp44.x = -40.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); + func_80036770(shot->obj.pos.x + sp38.x, D_80177940 + 2.0f, shot->obj.pos.z + sp38.z, shot->obj.rot.y, + 2.0f); + } else { + func_80036770(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->obj.rot.y, 2.0f); + } + } + if (D_80161A88 == 2) { + Object_Kill(&shot->obj, &shot->sfxPos); + return; + } + if (gCurrentLevel == LEVEL_FORTUNA) { + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + } + if (gCurrentLevel == LEVEL_AQUAS) { + func_8007B8F8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007B8F8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_8007B8F8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + func_E16C50_801AC8A8(((Rand_ZeroOne() - 0.5f) * 10.0f) + shot->obj.pos.x, + ((Rand_ZeroOne() - 0.5f) * 10.0f) + shot->obj.pos.y, shot->obj.pos.z, 0.8f, 0); + func_E16C50_801AC8A8(((Rand_ZeroOne() - 0.5f) * 10.0f) + shot->obj.pos.x, + ((Rand_ZeroOne() - 0.5f) * 10.0f) + shot->obj.pos.y, shot->obj.pos.z, 0.8f, 0); + func_E16C50_801AC8A8(((Rand_ZeroOne() - 0.5f) * 10.0f) + shot->obj.pos.x, + ((Rand_ZeroOne() - 0.5f) * 10.0f) + shot->obj.pos.y, shot->obj.pos.z, 0.8f, 0); + } + } + if (shot->unk_64 == 0) { + Object_Kill(&shot->obj, &shot->sfxPos); + return; + } else if ((shot->playerNum < 110) || (shot->unk_64 & 1)) { + func_80038140(shot); + } +} + +void func_8003BA80(PlayerShot* shot) { + func_8003B55C(shot, 0); +} + +void func_8003BAA0(PlayerShot* shot) { + func_8003B55C(shot, 0); + shot->unk_58 = 0; +} + +void func_8003BACC(PlayerShot* shot) { + Vec3f sp3C; + Vec3f sp30; + Vec3f sp24; + + func_8003B55C(shot, 0); + sp3C.x = shot->obj.pos.x; + sp3C.y = shot->obj.pos.y; + sp3C.z = shot->obj.pos.z; + sp30.x = 0.0f; + sp30.y = 0.0f; + sp30.z = 0.0f; + if (!func_800A3690(&sp3C, &sp30, COL2_5, &sp24)) { + func_80036318(shot); + } + shot->unk_58 = 0; +} + +bool func_8003BB4C(PlayerShot* shot) { + s32 i; + s32 j; + f32 var_fa0; + Object_2F4* obj2F4; + Player* player; + + if (gLevelMode == LEVELMODE_ON_RAILS) { + var_fa0 = 300.0f; + } else { + var_fa0 = 200.0f; + } + for (i = 0, obj2F4 = gObjects2F4; i < 60; i++, obj2F4++) { + if ((obj2F4->obj.status == 2) && (obj2F4->info.unk_1C != 0.0f) && + ((obj2F4->timer_0CA[shot->playerNum] == 0) && (fabsf(shot->obj.pos.x - obj2F4->obj.pos.x) <= var_fa0) && + (fabsf(shot->obj.pos.y - (obj2F4->obj.pos.y + obj2F4->info.unk_1C)) <= var_fa0) && + (fabsf(shot->obj.pos.z - obj2F4->obj.pos.z) <= var_fa0))) { + obj2F4->timer_0CA[shot->playerNum] = 20; + func_80060F30(gPlayer[shot->playerNum].unk_460_arr, 0x49008027, shot->playerNum); + for (j = 0; j < ARRAY_COUNT(gPlayerShots); j++) { + if (gPlayerShots[j].obj.id == PLAYERSHOT_4) { + Object_Kill(&gPlayerShots[j].obj, &gPlayerShots[j].sfxPos); + } + } + D_801615B8[shot->playerNum] = 3.0f; + D_801615A8[shot->playerNum] = 300.0f; + return true; + } + } + if (gVersusMode) { + for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { + if ((player->state_1C8 == PLAYERSTATE_1C8_3) && (player->unk_4DC == 0) && (player->form != FORM_ON_FOOT) && + (i != shot->playerNum) && (D_80177B00[i][shot->playerNum] == 0) && + (fabsf(shot->obj.pos.x - player->pos.x) <= var_fa0) && + (fabsf(shot->obj.pos.y - player->pos.y) <= var_fa0) && + (fabsf(shot->obj.pos.z - player->unk_138) <= var_fa0)) { + D_80177B00[0][shot->playerNum] = D_80177B00[1][shot->playerNum] = D_80177B00[2][shot->playerNum] = + D_80177B00[3][shot->playerNum] = 0; + D_80177B00[i][shot->playerNum] = 20; + func_80060F30(gPlayer[shot->playerNum].unk_460_arr, 0x49008027, shot->playerNum); + for (j = 0; j < ARRAY_COUNT(gPlayerShots); j++) { + if (gPlayerShots[j].obj.id == PLAYERSHOT_4) { + Object_Kill(&gPlayerShots[j].obj, &gPlayerShots[j].sfxPos); + } + } + D_801615B8[shot->playerNum] = 3.0f; + D_801615A8[shot->playerNum] = 300.0f; + return true; + } + } + } + return false; +} + +void func_8003BEF4(PlayerShot* shot) { + if (gVersusMode) { + if ((shot->obj.pos.y < D_80177940) || func_8003BB4C(shot) || + !(gControllerHold[shot->playerNum].button & A_BUTTON) || (shot->unk_64 == 0)) { + Object_Kill(&shot->obj, &shot->sfxPos); + } + } else { + if ((shot->obj.pos.y < D_80177940) || func_8003BB4C(shot) || + !(gControllerHold[gMainController].button & A_BUTTON) || (shot->unk_64 == 0)) { + Object_Kill(&shot->obj, &shot->sfxPos); + } + } + func_80038140(shot); +} + +void func_8003C008(PlayerShot* shot) { + s32 i; + s32 j; + f32* hitboxData; + Object_408* obj408; + f32 temp_ft4; + f32 temp_ft5; + f32 var_fa1; + f32 var_fs2; + Vec3f sp8C; + Vec3f sp80; + s32 var_s6; + s32 count; + + obj408 = gObjects408; + for (i = 0; i < ARRAY_COUNT(gObjects408); i++, obj408++) { + if ((obj408->obj.status == 2) && (obj408->timer_05A == 0)) { + if (obj408->obj.id == OBJ_408_316) { + var_s6 = gFrameCount & 7; + var_fs2 = shot->unk_44 * 40.0f; + } else { + var_s6 = gFrameCount & 0xF; + var_fs2 = shot->unk_44 * 30.0f; + } + hitboxData = obj408->info.hitbox; + count = *hitboxData++; + if (count != 0) { + for (j = 0; j < count; j++, hitboxData += 6) { + if (hitboxData[0] == HITBOX_UNK_2) { + Matrix_RotateZ(gCalcMatrix, -hitboxData[3] * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -hitboxData[1] * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -hitboxData[2] * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, -obj408->obj.rot.z * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, -obj408->obj.rot.x * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -obj408->obj.rot.y * M_DTOR, 1); + hitboxData += 4; + } else { + Matrix_RotateZ(gCalcMatrix, -obj408->obj.rot.z * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -obj408->obj.rot.x * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -obj408->obj.rot.y * M_DTOR, 1); + } + if ((j == var_s6) && (hitboxData[1] > -100.0f) && (hitboxData[3] > -100.0f)) { + sp8C.x = shot->obj.pos.x - obj408->obj.pos.x; + sp8C.y = shot->obj.pos.y - obj408->obj.pos.y; + sp8C.z = shot->obj.pos.z - obj408->obj.pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp8C, &sp80); + temp_ft4 = (hitboxData[4] + obj408->obj.pos.x) - (obj408->obj.pos.x + sp80.x); + temp_ft5 = (hitboxData[2] + obj408->obj.pos.y) - (obj408->obj.pos.y + sp80.y); + var_fa1 = (hitboxData[0] + obj408->obj.pos.z) - (obj408->obj.pos.z + sp80.z); + if ((gLevelMode == LEVELMODE_ON_RAILS) && (var_fa1 < 0.0f)) { + var_fa1 *= 0.6f; + } + if (sqrtf(SQ(temp_ft4) + SQ(temp_ft5) + SQ(var_fa1)) < var_fs2) { + obj408->unk_066 = j; + obj408->unk_062 = -1; + obj408->unk_064 = 20; + } + } + } + } + } + } +} + +void func_8003C3D8(PlayerShot* shot) { + static u8 D_800C9C18[4] = { 255, 255, 32, 32 }; + static u8 D_800C9C1C[4] = { 255, 32, 255, 32 }; + static u8 D_800C9C20[4] = { 32, 32, 32, 255 }; + f32 var_fv0; + + D_80178370 = shot->obj.pos.x; + D_80178374 = shot->obj.pos.y; + D_80178378 = shot->obj.pos.z; + if (gVersusMode) { + D_80178360 = D_800C9C18[shot->playerNum]; + D_80178364 = D_800C9C1C[shot->playerNum]; + D_80178368 = D_800C9C20[shot->playerNum]; + } else { + D_80178360 = 90; + D_80178364 = 90; + D_80178368 = 255; + } + var_fv0 = 0.7f; + if (shot->unk_5C != 0) { + var_fv0 = 1.0f; + } + Math_SmoothStepToF(&D_8017836C, var_fv0, 1.0f, 0.08f, 0.001f); +} + +void func_8003C4D0(PlayerShot* shot, s32 unkD6) { + s32 i; + f32 sp68; + f32 sp64; + f32 sp60; + s32 pad[2]; + Object_2F4* obj2F4; + Object_4C* obj4C; + Object_80* obj80; + Object_8C* obj8C; + Player* player; + f32 temp_fs2 = shot->unk_44 * 60.0f; + + for (i = 0, obj80 = gObjects80; i < 50; i++, obj80++) { + if ((obj80->obj.status == 2) && (obj80->obj.id == OBJ_80_56)) { + sp68 = obj80->obj.pos.x - shot->obj.pos.x; + sp64 = obj80->obj.pos.y - shot->obj.pos.y; + sp60 = obj80->obj.pos.z - shot->obj.pos.z; + if (sqrtf(SQ(sp68) + SQ(sp64) + SQ(sp60)) < temp_fs2) { + obj80->unk_50 = 2; + } + obj80->unk_54 = 0; + } + } + for (i = 0, obj4C = gObjects4C; i < 40; i++, obj4C++) { + if ((obj4C->obj.status == 2) && ((obj4C->obj.id == OBJ_4C_163) || (obj4C->obj.id == OBJ_4C_169) || + (obj4C->obj.id == OBJ_4C_161) || (obj4C->obj.id == OBJ_4C_162))) { + sp68 = obj4C->obj.pos.x - shot->obj.pos.x; + sp64 = obj4C->obj.pos.y - shot->obj.pos.y; + sp60 = obj4C->obj.pos.z - shot->obj.pos.z; + if (sqrtf(SQ(sp68) + SQ(sp64) + SQ(sp60)) < temp_fs2) { + obj4C->unk_46 = 1; + } + } + } + obj2F4 = gObjects2F4; + for (i = 0; i < 60; i++, obj2F4++) { + if ((obj2F4->obj.status == 2) && (obj2F4->timer_0C2 == 0) && + !((gCurrentLevel == LEVEL_MACBETH) && (OBJ_2F4_205 <= obj2F4->obj.id) && (obj2F4->obj.id < OBJ_2F4_214)) && + !((obj2F4->obj.id == OBJ_2F4_200) && (obj2F4->unk_080 != 0)) && + ((obj2F4->scale >= 0.0f) || (obj2F4->obj.id == OBJ_2F4_271))) { + sp68 = obj2F4->obj.pos.x - shot->obj.pos.x; + sp64 = obj2F4->obj.pos.y - shot->obj.pos.y; + sp60 = obj2F4->obj.pos.z - shot->obj.pos.z; + if ((gLevelMode == 0) && (sp60 < 0.0f)) { + sp60 *= 0.6f; + } + obj2F4->unk_0D8.x = shot->obj.pos.x; + obj2F4->unk_0D8.y = shot->obj.pos.y; + obj2F4->unk_0D8.z = shot->obj.pos.z; + if (sqrtf(SQ(sp68) + SQ(sp64) + SQ(sp60)) < temp_fs2) { + if ((obj2F4->obj.id == OBJ_2F4_193) || (obj2F4->obj.id == OBJ_2F4_186) || + (obj2F4->obj.id == OBJ_2F4_190) || (obj2F4->obj.id == OBJ_2F4_202) || + (obj2F4->obj.id == OBJ_2F4_201) || (obj2F4->obj.id == OBJ_2F4_187) || + ((obj2F4->obj.id == OBJ_2F4_200) && (obj2F4->unk_0B4 == 78)) || + ((obj2F4->obj.id == OBJ_2F4_200) && (obj2F4->unk_0B4 == 38)) || (obj2F4->obj.id == OBJ_2F4_196)) { + obj2F4->unk_0D0 = 2; + obj2F4->unk_0D2 = 0; + obj2F4->unk_0D4 = shot->playerNum + 1; + obj2F4->unk_0D6 = unkD6; + + if (obj2F4->info.bonus != 0) { + shot->bonus++; + } + } else if ((obj2F4->obj.id == OBJ_2F4_200) && (obj2F4->scale >= 0.5f) && (unkD6 >= 31)) { + obj2F4->unk_0D4 = shot->playerNum + 1; + obj2F4->unk_0E8.x = sp68 * 0.03f; + obj2F4->unk_0E8.y = sp64 * 0.03f; + obj2F4->unk_0E8.z = sp60 * 0.03f; + obj2F4->obj.status = 3; + obj2F4->timer_0BC = (s32) (Rand_ZeroOne() * 15.0f) + 10; + obj2F4->timer_0BE = 0; + obj2F4->timer_04C = 4; + obj2F4->obj.rot.x = Math_ModF(obj2F4->obj.rot.x, 360.0f); + if (obj2F4->info.bonus != 0) { + shot->bonus++; + } + } else { + obj2F4->unk_0D0 = 2; + obj2F4->unk_0D2 = 0; + obj2F4->unk_0D4 = shot->playerNum + 1; + obj2F4->unk_0D6 = unkD6; + if (obj2F4->info.bonus != 0) { + shot->bonus++; + } + } + } + } + } + if (gCurrentLevel == LEVEL_MACBETH) { + func_E6A810_801AD144(shot); + } else if (gCurrentLevel == LEVEL_VENOM_1) { + func_DF4260_8019864C(shot); + } else { + func_8003C008(shot); + } + obj8C = gObjects8C; + for (i = 0; i < 100; i++, obj8C++) { + if (obj8C->obj.status == 2) { + sp68 = obj8C->obj.pos.x - shot->obj.pos.x; + sp64 = obj8C->obj.pos.y - shot->obj.pos.y; + sp60 = obj8C->obj.pos.z - shot->obj.pos.z; + if (sqrtf(SQ(sp68) + SQ(sp64) + SQ(sp60)) < temp_fs2) { + if (obj8C->info.unk_16 == 0) { + Object_Kill(&obj8C->obj, &obj8C->sfxPos); + } + if (obj8C->info.unk_16 == 2) { + obj8C->obj.pos.x += sp68 * 0.03f; + if (!((gLevelType == LEVELTYPE_PLANET) && (obj8C->obj.pos.y < 100.0f))) { + obj8C->obj.pos.y += sp64 * 0.03f; + } + obj8C->obj.pos.z += sp60 * 0.03f; + if ((obj8C->obj.id == OBJ_8C_392) && (obj8C->unk_4E == 0)) { + obj8C->unk_4E = 1; + obj8C->unk_44 = 176; + obj8C->unk_4C = 0; + obj8C->unk_54.x = obj8C->unk_54.y = obj8C->unk_54.z = 0.0f; + obj8C->scale2 = 20.0f; + } + } + } + } + } + if (gVersusMode) { + for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { + if ((i != shot->playerNum) && (player->state_1C8 == PLAYERSTATE_1C8_3) && (player->unk_1F4 == 0)) { + sp68 = player->pos.x - shot->obj.pos.x; + sp64 = player->pos.y - shot->obj.pos.y; + sp60 = player->unk_138 - shot->obj.pos.z; + if (sqrtf(SQ(sp68) + SQ(sp64) + SQ(sp60)) < temp_fs2) { + player->unk_288 = shot->playerNum + 1; + switch (player->form) { + case 0: + Player_ApplyDamage(player, 0, 80); + break; + case 1: + Player_ApplyDamage(player, 0, 60); + break; + case 3: + Player_ApplyDamage(player, 0, 180); + break; + } + } + } + } + } +} + +void func_8003CC08(PlayerShot* shot) { + f32 temp_fa0; + f32 temp_fa1; + f32 temp_fv1; + f32 var_ft5; + + switch (shot->unk_5C) { + case 0: + if (shot->unk_64 == 0) { + func_80035E78(shot); + break; + } + if ((shot->obj.pos.y < D_80177940) && (D_801784AC != 4)) { + func_80035E78(shot); + break; + } + if ((gPlayer[shot->playerNum].form == FORM_LANDMASTER) || (gPlayer[shot->playerNum].form == FORM_ON_FOOT)) { + shot->vel.y -= 1.0f; + Math_SmoothStepToF(&shot->obj.rot.x, -90.0f, 0.05f, 1.0f, 0.0f); + } + if (shot->unk_64 < 25) { + if (gVersusMode) { + if (gControllerPress[shot->playerNum].button & gBombButton[shot->playerNum]) { + func_80035E78(shot); + break; + } + } else { + if (gControllerPress[gMainController].button & gBombButton[shot->playerNum]) { + func_80035E78(shot); + break; + } + } + } + if (!((gCurrentLevel == LEVEL_VENOM_ANDROSS) && (gObjects408->obj.status == 2) && + (gObjects408->unk_04E == 17))) { + func_80038140(shot); + } + func_8003C3D8(shot); + break; + case 1: + D_8017812C = 2; + shot->obj.rot.y += 1.0f; + Math_SmoothStepToF(&shot->unk_44, shot->unk_48, 0.05f, 1.5f, 0.001f); + if ((shot->unk_64 > 0) && (shot->unk_64 < 30)) { + if (!gVersusMode && + ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_5))) { + temp_fv1 = gPlayer[0].pos.x - shot->obj.pos.x; + temp_fa0 = gPlayer[0].pos.y - shot->obj.pos.y; + temp_fa1 = gPlayer[0].unk_138 - shot->obj.pos.z; + var_ft5 = sqrtf(SQ(temp_fv1) + SQ(temp_fa0) + SQ(temp_fa1)) * 0.01f; + if (var_ft5 > 60.0f) { + var_ft5 = 60.0f; + } + var_ft5 = 60.0f - var_ft5; + Math_SmoothStepToF(&D_801779A8[gMainController], var_ft5 + 5.0f, 1.0f, 3.0f, 0.0f); + } + func_8003C3D8(shot); + } + if (shot->unk_64 == 0) { + shot->unk_58 -= 8; + if (shot->unk_58 < 0) { + shot->unk_58 = 0; + Object_Kill(&shot->obj, &shot->sfxPos); + D_8017812C = 0; + } + } + func_8003C4D0(shot, 50); + break; + } +} + +static Vec3f D_800C9C24 = { 0.0f, 0.0f, 0.0f }; +void func_8003CF90(PlayerShot* shot) { + s32 i; + s32 var_a3; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + Object_2F4* obj2F4; + Player* player; + + if ((shot->obj.pos.y < D_80177940) || (shot->unk_64 == 1)) { + if ((D_80161A88 == 2) && (shot->obj.pos.y < D_80177940)) { + shot->unk_48 = 10.0f; + func_8007D9DC(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, shot->unk_48 * 3.0f, + 0); + func_8007D9DC(shot->obj.pos.x, D_80177940 + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, shot->unk_48 * 3.0f, + 5); + func_8007ADF4(shot->obj.pos.x, D_80177940, shot->obj.pos.z, shot->unk_48 * 0.05f, shot->unk_48 * 0.5f); + func_8007A6F0(&shot->obj.pos, 0x19000014); + } + func_80036318(shot); + } else { + var_a3 = 0; + if (shot->unk_60 == 0) { + for (i = 0, obj2F4 = gObjects2F4; i < 60; i++, obj2F4++) { + if ((obj2F4->obj.status == 2) && (obj2F4->info.unk_1C != 0.0f) && + (obj2F4->timer_0CA[shot->playerNum] != 0)) { + var_a3 = 1; + obj2F4->timer_0CA[shot->playerNum] = 2; + D_800C9C24 = obj2F4->obj.pos; + D_800C9C24.y += obj2F4->info.unk_1C; + } + } + for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { + if (((player->state_1C8 == PLAYERSTATE_1C8_3) || (player->state_1C8 == PLAYERSTATE_1C8_5)) && + (D_80177B00[i][shot->playerNum] != 0)) { + var_a3 = 1; + D_80177B00[i][shot->playerNum] = 2; + D_800C9C24.x = player->pos.x; + if (player->form == FORM_ARWING) { + D_800C9C24.y = player->pos.y; + } else { + D_800C9C24.y = player->pos.y + 30.0f; + } + D_800C9C24.z = player->unk_138; + } + } + if (var_a3 != 0) { + sp6C = shot->obj.pos.x - D_800C9C24.x; + sp68 = shot->obj.pos.y - D_800C9C24.y; + sp64 = shot->obj.pos.z - D_800C9C24.z; + sp58 = Math_RadToDeg(Math_Atan2F(sp6C, sp64)); + sp5C = Math_RadToDeg(-Math_Atan2F(sp68, sqrtf(SQ(sp6C) + SQ(sp64)))); + if (shot->unk_30 >= 360.0f) { + shot->unk_30 -= 360.0f; + } + if (shot->unk_30 < 0.0f) { + shot->unk_30 += 360.0f; + } + if (shot->unk_2C >= 360.0f) { + shot->unk_2C -= 360.0f; + } + if (shot->unk_2C < 0.0f) { + shot->unk_2C += 360.0f; + } + Math_SmoothStepToAngle(&shot->unk_30, sp58, 1.0f, shot->unk_50, 0.0f); + Math_SmoothStepToAngle(&shot->unk_2C, sp5C, 1.0f, shot->unk_50, 0.0f); + shot->unk_64 = 30; + } else { + shot->unk_60 = 1; + } + } + Math_SmoothStepToF(&shot->unk_50, 360.0f, 1.0f, 3.0f, 0.f); + if (shot->unk_60 != 0) { + Math_SmoothStepToF(&shot->unk_54, 169.0f, 1.0f, 13.0f, 0.f); + } else { + Math_SmoothStepToF(&shot->unk_54, 91.0f, 1.0f, 7.7999997f, 0.f); + } + if (!((gPlayer[shot->playerNum].form == FORM_LANDMASTER) && (shot->unk_60 != 0))) { + Vec3f sp44; + Vec3f sp38; + + shot->obj.rot.y = shot->unk_30; + shot->obj.rot.x = shot->unk_2C; + Matrix_RotateY(gCalcMatrix, shot->obj.rot.y * 0.017453292f, 0); + Matrix_RotateX(gCalcMatrix, shot->obj.rot.x * 0.017453292f, 1); + sp44.x = sp44.y = 0.0f; + sp44.z = -(shot->unk_54 + 40.0f); + Matrix_MultVec3f(gCalcMatrix, &sp44, &sp38); + shot->vel.x = sp38.x; + shot->vel.y = sp38.y; + shot->vel.z = sp38.z; + } + func_80038140(shot); + D_80178370 = shot->obj.pos.x; + D_80178374 = shot->obj.pos.y; + D_80178378 = shot->obj.pos.z; + D_80178360 = 90; + D_80178364 = 180; + D_80178368 = 90; + Math_SmoothStepToF(&D_8017836C, 0.6f, 1.0f, 0.08f, 0.001f); + } +} + +void func_8003D54C(PlayerShot* shot, s32 index) { + s32 teamId; + s32 bonus; + + shot->obj.pos.x += shot->vel.x; + shot->obj.pos.y += shot->vel.y; + shot->obj.pos.z += shot->vel.z; + switch (shot->obj.id) { + case PLAYERSHOT_0: + func_8003B55C(shot, index); + break; + case PLAYERSHOT_1: + case PLAYERSHOT_9: + func_8003B55C(shot, index); + break; + case PLAYERSHOT_2: + func_8003B00C(shot, &gPlayer[shot->playerNum]); + break; + case PLAYERSHOT_3: + func_8003CC08(shot); + break; + case PLAYERSHOT_4: + func_8003BEF4(shot); + break; + case PLAYERSHOT_5: + func_8003BA80(shot); + break; + case PLAYERSHOT_6: + func_8003BAA0(shot); + break; + case PLAYERSHOT_7: + func_8003BACC(shot); + break; + case PLAYERSHOT_8: + if (shot->unk_44 > 1.5f) { + func_8003C4D0(shot, 30); + if (shot->bonus != 0) { + if (gVersusMode) { + D_80177C30[shot->playerNum] += shot->bonus; + } else { + bonus = shot->bonus; + if (shot->bonus > 10) { + bonus = 100; + } + func_80077240(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, bonus); + gHitCount += shot->bonus; + } + if ((shot->bonus >= 7) && (D_80178284 == 0) && (gLevelMode == LEVELMODE_ON_RAILS) && + ((gTeamShields[1] > 0) || (gTeamShields[2] > 0) || (gTeamShields[3] > 0))) { + do { + teamId = (s32) (Rand_ZeroOne() * 2.9f) + 1; + } while (gTeamShields[teamId] <= 0); + switch (teamId) { + case 1: + func_800BA808(gMsg_ID_7100, RCID_FALCO); + break; + case 2: + func_800BA808(gMsg_ID_15252, RCID_SLIPPY); + break; + case 3: + func_800BA808(gMsg_ID_17160, RCID_PEPPY); + break; + } + } + } + Object_Kill(&shot->obj, &shot->sfxPos); + func_8007A6F0(&shot->obj.pos, 0x0903502E); + } else if (gCurrentLevel == LEVEL_AQUAS) { + func_E16C50_801ABA40(shot); + } else { + func_8003CF90(shot); + } + break; + } +} + +void func_8003D854(PlayerShot* shot) { + s32 i; + s32 var_s5; + + switch (shot->obj.status) { + case 0: + break; + case 1: + var_s5 = 1; + switch (shot->obj.id) { + case PLAYERSHOT_9: + var_s5 = 4; + break; + case PLAYERSHOT_0: + case PLAYERSHOT_1: + if ((shot->unk_58 == 0) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_2)) { + var_s5 = 4; + } else { + var_s5 = 3; + } + break; + case PLAYERSHOT_5: + var_s5 = 2; + break; + } + for (i = 0; i < var_s5 && (shot->obj.status == 1); i++) { + if (shot->unk_64 > 0) { + shot->unk_64--; + } + D_80178498 = shot->obj.pos.z; + D_801784A0 = shot->obj.pos.y; + D_8017849C = shot->obj.pos.x; + func_8003D54C(shot, i); + } + break; + case 2: + func_8003AFD8(shot); + break; + } +} + +void func_8003D9B8(void) { + s32 i; + + for (i = 0; i < 16; i++) { + gPlayerShots[i].index = i; + func_8003D854(&gPlayerShots[i]); + } +} + +void func_8003DA0C(void) { + s32 i; + + for (i = 0; i < 16; i++) { + gPlayerShots[i].index = i; + if (gPlayerShots[i].obj.status != 0) { + if (!((D_80161410 < 0) && (gPlayerShots[i].obj.rot.x < -10.0f))) { + Matrix_Push(&gGfxMatrix); + func_8003AF88(&gPlayerShots[i]); + Matrix_Pop(&gGfxMatrix); + } + if (D_80161410 > 0) { + func_8005F290(&gPlayerShots[i].sfxPos, &D_8015F950); + } + } + } +} diff --git a/src/main/fox_display.c b/src/main/fox_display.c index 43e05139..85c993a8 100644 --- a/src/main/fox_display.c +++ b/src/main/fox_display.c @@ -121,7 +121,7 @@ void func_80051B30(void) { } } -s32 func_800520FC(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* data) { +bool func_800520FC(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* data) { Player* player = (Player*) data; gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -174,7 +174,7 @@ s32 func_800520FC(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* dat rot->x += -player->unk_15C * 0.2f; } } - return 0; + return false; } void func_800523A8(s32 limbIndex, Vec3f* rot, void* data) { @@ -609,7 +609,7 @@ void func_80053C38(Player* player, s32 arg1) { Matrix_MultVec3f(gGfxMatrix, &sp4C, &D_801613E0[1]); } if ((player->unk_238 != 0) && (gLevelMode == LEVELMODE_ON_RAILS) && - (fabsf((player->unk_138 + D_80177D20) - player->camEye.z) < 10.0f)) { + (fabsf(player->unk_138 + D_80177D20 - player->camEye.z) < 10.0f)) { if (arg1 == 0) { D_800CA228 = 1; Matrix_Push(&gGfxMatrix); @@ -929,10 +929,10 @@ void func_80054E80(Player* player) { Matrix_Copy(gCalcMatrix, &D_80161418[player->num]); var_v1 = gLaserStrength[player->num]; if (player->wings.unk_14 > -8.0f) { - var_v1 = 0; + var_v1 = LASERS_SINGLE; } switch (var_v1) { - case 0: + case LASERS_SINGLE: gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 192, 255, 192, 128); gDPSetEnvColor(gMasterDisp++, 64, 255, 64, 128); if ((player->unk_238 != 0) && (gLevelMode == LEVELMODE_ON_RAILS)) { @@ -947,9 +947,9 @@ void func_80054E80(Player* player) { gSPDisplayList(gMasterDisp++, D_1024AC0); Matrix_Pop(&gGfxMatrix); break; - case 1: - case 2: - if (var_v1 == 1) { + case LASERS_TWIN: + case LASERS_HYPER: + if (var_v1 == LASERS_TWIN) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 192, 255, 192, 128); gDPSetEnvColor(gMasterDisp++, 64, 255, 64, 128); } else { @@ -1203,7 +1203,7 @@ void func_800564C0(Player* player, s32 arg1) { } } } - if (func_800563B4(player->num, arg1) == 0) { + if (!func_800563B4(player->num, arg1)) { Matrix_Pop(&gGfxMatrix); return; } @@ -1219,7 +1219,7 @@ void func_800564C0(Player* player, s32 arg1) { } else if (player->form == FORM_ON_FOOT) { Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, player->pos.x, player->pos.y, player->unk_138 + player->unk_144, 1); - if (func_800563B4(player->num, arg1) == 0) { + if (!func_800563B4(player->num, arg1)) { Matrix_Pop(&gGfxMatrix); Matrix_Pop(&gGfxMatrix); return; @@ -1247,7 +1247,7 @@ void func_800564C0(Player* player, s32 arg1) { } } } - if (func_800563B4(player->num, arg1) == 0) { + if (!func_800563B4(player->num, arg1)) { Matrix_Pop(&gGfxMatrix); return; } diff --git a/src/main/fox_edisplay.c b/src/main/fox_edisplay.c index b56423ac..005d6964 100644 --- a/src/main/fox_edisplay.c +++ b/src/main/fox_edisplay.c @@ -614,7 +614,7 @@ f32 D_800CFCCC[] = { 0.0f, 0.05f, 0.03f, 0.02f, 0.01f, 0.05f, 0.0f, 0.02f, }; -void func_8005BAB4(s32 objId, s32 index) { +void func_8005BAB4(ObjectId objId, s32 index) { f32 temp_fv0; f32 temp1; f32 temp2; @@ -1597,7 +1597,7 @@ void Object_DrawAll(s32 arg0) { Lights_SetOneLight(&gMasterDisp, gLight1x, gLight1y, gLight1z, gLight1R, gLight1G, gLight1B, gAmbientR, gAmbientG, gAmbientB); for (i = 0, obj4C = gObjects4C; i < ARRAY_COUNT(gObjects4C); i++, obj4C++) { - if ((obj4C->obj.status >= 2) && (func_80060FE4(&obj4C->obj.pos, -12000.0f) != 0)) { + if ((obj4C->obj.status >= 2) && func_80060FE4(&obj4C->obj.pos, -12000.0f)) { Matrix_Push(&gGfxMatrix); if ((obj4C->obj.id == OBJ_4C_165) || (obj4C->obj.id == OBJ_4C_166)) { RCP_SetupDL_57(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); diff --git a/src/main/fox_enmy.c b/src/main/fox_enmy.c index 254e05e8..05109614 100644 --- a/src/main/fox_enmy.c +++ b/src/main/fox_enmy.c @@ -71,7 +71,7 @@ void Object_Kill(Object* obj, Vec3f* arg1) { Audio_KillSfx(arg1); } -s32 func_80060FE4(Vec3f* arg0, f32 arg1) { +bool func_80060FE4(Vec3f* arg0, f32 arg1) { Vec3f sp2C; Vec3f sp20; @@ -90,7 +90,7 @@ s32 func_80060FE4(Vec3f* arg0, f32 arg1) { return false; } -s32 func_80061148(Vec3f* arg0, f32 arg1) { +bool func_80061148(Vec3f* arg0, f32 arg1) { Vec3f sp2C; Vec3f sp20; @@ -639,7 +639,7 @@ void func_80062D04(f32 xPos, f32 yPos) { } } -s32 func_80062DBC(Vec3f* pos, f32* hitboxData, Object* obj, f32 xRot, f32 yRot, f32 zRot) { +bool func_80062DBC(Vec3f* pos, f32* hitboxData, Object* obj, f32 xRot, f32 yRot, f32 zRot) { s32 i; Vec3f hitRot; Vec3f hitPos; @@ -656,7 +656,7 @@ s32 func_80062DBC(Vec3f* pos, f32* hitboxData, Object* obj, f32 xRot, f32 yRot, rotate = 0.0f; hitRot.x = hitRot.y = hitRot.z = 0.0f; if (*hitboxData >= HITBOX_UNK_3) { - return 0; + return false; } if (*hitboxData == HITBOX_UNK_2) { rotate = 1.0f; @@ -700,7 +700,7 @@ s32 func_80062DBC(Vec3f* pos, f32* hitboxData, Object* obj, f32 xRot, f32 yRot, return false; } -s32 func_800631A8(Vec3f* posD, f32* hitboxData, Vec3f* posA) { +bool func_800631A8(Vec3f* posD, f32* hitboxData, Vec3f* posA) { if ((s32) hitboxData[0] != 0) { if ((fabsf(hitboxData[1] + posA->z - posD->z) < (hitboxData[2] + 20.0f)) && (fabsf(hitboxData[5] + posA->x - posD->x) < (hitboxData[6] + 20.0f)) && @@ -711,13 +711,13 @@ s32 func_800631A8(Vec3f* posD, f32* hitboxData, Vec3f* posA) { return false; } -s32 func_8006326C(Vec3f* arg0, Vec3f* arg1, s32 objId, Object* obj) { +bool func_8006326C(Vec3f* arg0, Vec3f* arg1, ObjectId objId, Object* obj) { Vec3f sp74; Vec3f sp68; Vec3f sp5C; Vec3f sp50; Vec3f sp44; - s32 var_s1; + s32 colId; s32 pad1[3]; f32 sp30; s32 pad2; @@ -736,46 +736,46 @@ s32 func_8006326C(Vec3f* arg0, Vec3f* arg1, s32 objId, Object* obj) { sp50.z = obj->pos.z; if ((objId == OBJ_2F4_180) || (objId == OBJ_80_149) || (objId == OBJ_80_150) || (objId == OBJ_408_308) || (objId == OBJ_408_313) || (objId == OBJ_408_312) || (objId == OBJ_408_309) || (objId == OBJ_80_39)) { - var_s1 = 0; + colId = COL1_0; if (objId == OBJ_408_312) { - var_s1 = 9; + colId = COL1_9; } if (objId == OBJ_80_39) { - var_s1 = 1; + colId = COL1_1; } else if (objId == OBJ_408_308) { - var_s1 = 4; + colId = COL1_4; } else if (objId == OBJ_408_309) { - var_s1 = 7; + colId = COL1_7; } else if (objId == OBJ_80_149) { - var_s1 = 5; + colId = COL1_5; } else if (objId == OBJ_80_150) { - var_s1 = 6; + colId = COL1_6; } else if (objId == OBJ_408_313) { - var_s1 = 8; + colId = COL1_8; } - if (func_800998FC(&sp5C, &sp50, arg1, var_s1, &sp44, &sp30) > 0) { + if (func_800998FC(&sp5C, &sp50, arg1, colId, &sp44, &sp30) > 0) { return true; } } else { - var_s1 = 0; + colId = COL2_0; if (objId == OBJ_80_2) { - var_s1 = 2; + colId = COL2_2; } if (objId == OBJ_80_3) { - var_s1 = 3; + colId = COL2_3; } if (objId == OBJ_80_140) { - var_s1 = 4; + colId = COL2_4; } if (objId == OBJ_80_141) { - var_s1 = 6; + colId = COL2_6; } if (objId == OBJ_80_117) { - var_s1 = 14; + colId = COL2_14; } else if ((objId == OBJ_80_4) || (objId == OBJ_80_5)) { - var_s1 = 1; + colId = COL2_1; } - if (func_800A3690(&sp5C, &sp50, var_s1, &sp44)) { + if (func_800A3690(&sp5C, &sp50, colId, &sp44)) { return true; } } @@ -879,7 +879,7 @@ s32 func_8006351C(s32 index, Vec3f* pos, Vec3f* arg2, s32 arg3) { (fabsf(pos->z - obj2F4->obj.pos.z) < 1500.0f) && (index != i) && (obj2F4->info.unk_16 != 2) && ((obj2F4->obj.id != OBJ_2F4_197) || (obj2F4->unk_0E4 >= 4)) && (obj2F4->timer_0C2 == 0)) { if (obj2F4->obj.id == OBJ_2F4_180) { - if (func_8006326C(pos, arg2, obj2F4->obj.id, &obj2F4->obj) != 0) { + if (func_8006326C(pos, arg2, obj2F4->obj.id, &obj2F4->obj)) { return 2; } } else if (obj2F4->scale < 0.0f) { @@ -989,7 +989,7 @@ void func_80063F74(Item* item) { item->scale = item->obj.rot.z * 100.0f; } -void Object_Init(s32 index, s32 objId) { +void Object_Init(s32 index, ObjectId objId) { s32 var_a0; s32 var_a2; f32 sp54; @@ -1560,7 +1560,7 @@ void func_800656D4(Object_2F4* obj2F4) { Math_SmoothStepToAngle(&obj2F4->obj.rot.z, var_fv0, 0.1f, 3.0f, 0.01f); } if ((D_801784AC == 4) && - (func_E6A810_801B6AEC(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z + D_80177D20) != 0)) { + func_E6A810_801B6AEC(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z + D_80177D20)) { func_8007D2C8(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z, 5.0f); Object_Kill(&obj2F4->obj, &obj2F4->sfxPos); } @@ -1643,7 +1643,7 @@ void func_80066254(Object_2F4* obj2F4) { } else if ((obj2F4->obj.id != OBJ_2F4_197) || (obj2F4->unk_0B6 != 1)) { if ((obj2F4->unk_0D4 == 1) && (obj2F4->info.bonus != 0)) { gHitCount += obj2F4->info.bonus; - D_80177850 = 0xF; + D_80177850 = 15; if ((gLevelMode == LEVELMODE_ALL_RANGE) && (D_80161A62 != 0)) { switch (D_80161A62) { case 9: @@ -1765,7 +1765,7 @@ void func_8006684C(Object_2F4* obj2F4) { Audio_PlaySfx(0x2903B009, &obj2F4->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); func_80077240(obj2F4->obj.pos.x, obj2F4->obj.pos.y + 250.0f, obj2F4->obj.pos.z, 3); gHitCount += 3; - D_80177850 = 0xF; + D_80177850 = 15; } } else { obj2F4->obj.rot.x += 11.0f; @@ -1907,7 +1907,7 @@ void func_80066EF0(Item* item) { } else if (item->obj.pos.y < -500.0f) { Math_SmoothStepToF(&item->obj.pos.y, -500.0f, 0.1f, 5.0f, 0.01f); } - if ((gVersusMode) && (item->index == 0) && (gItems[1].obj.status == 2)) { + if (gVersusMode && (item->index == 0) && (gItems[1].obj.status == 2)) { if (fabsf(item->obj.pos.x - gItems[1].obj.pos.x) < 200.0f) { if (fabsf(item->obj.pos.z - gItems[1].obj.pos.z) < 200.0f) { item->obj.pos.x = item->obj.pos.x - 5.0f; @@ -1996,9 +1996,9 @@ void func_8006753C(Object_2F4* obj2F4) { if (((player[0].wings.rightState <= WINGSTATE_BROKEN) || (player[0].wings.leftState <= WINGSTATE_BROKEN)) && (player[0].form != FORM_LANDMASTER)) { obj2F4->unk_044 = 23; - } else if (gPlayer[0].shields < 0x80) { + } else if (gPlayer[0].shields < 128) { obj2F4->unk_044 = 25; - } else if ((gLaserStrength[0] == 0) && (player[0].form != FORM_LANDMASTER)) { + } else if ((gLaserStrength[0] == LASERS_SINGLE) && (player[0].form != FORM_LANDMASTER)) { obj2F4->unk_044 = 9; } else { obj2F4->unk_044 = 5; @@ -2099,8 +2099,8 @@ void func_80067BEC(Item* item) { item->timer_48 = 20; item->unk_50 = 60.0f; gLaserStrength[item->unk_4E]++; - if (gLaserStrength[item->unk_4E] > 2) { - gLaserStrength[item->unk_4E] = 2; + if (gLaserStrength[item->unk_4E] > LASERS_HYPER) { + gLaserStrength[item->unk_4E] = LASERS_HYPER; } func_80060F30(gPlayer[item->unk_4E].unk_460_arr, 0x49002004, item->unk_4E); if (gExpertMode) { @@ -2129,7 +2129,7 @@ void func_80067BEC(Item* item) { } void func_80067F6C(Item* item) { - if ((!gVersusMode) && + if (!gVersusMode && ((gPlayer[0].wings.leftState <= WINGSTATE_BROKEN) || (gPlayer[0].wings.rightState <= WINGSTATE_BROKEN))) { item->obj.id = OBJ_ITEM_WING_REPAIR; Object_SetInfo(&item->info, item->obj.id); @@ -2427,7 +2427,7 @@ void func_80068FE0(Object_4C* obj4C) { } } -void func_800690D0(s32 index, s32 objId) { +void func_800690D0(s32 index, ObjectId objId) { switch (objId) { case OBJ_2F4_200: func_8007717C(&gObjects2F4[index]); diff --git a/src/main/fox_enmy2.c b/src/main/fox_enmy2.c index 81085baf..d000d772 100644 --- a/src/main/fox_enmy2.c +++ b/src/main/fox_enmy2.c @@ -114,7 +114,7 @@ bool func_8006ABA4(Object_2F4* obj2F4) { void func_8006AC08(Object_2F4* obj2F4) { f32 sp2C; - if ((func_8006ABA4(obj2F4) != 0) && (obj2F4->timer_0BC == 0)) { + if (func_8006ABA4(obj2F4) && (obj2F4->timer_0BC == 0)) { func_8007F11C(OBJ_8C_353, obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z, D_80177828); obj2F4->timer_0BC = 20; } @@ -735,7 +735,7 @@ void func_8006C008(Object_2F4* obj2F4) { Object_Kill(&obj2F4->obj, &obj2F4->sfxPos); func_8007A6F0(&obj2F4->obj.pos, 0x2903A008); } - if (func_800A73E4(&sp44, &sp40, obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z) != 0) { + if (func_800A73E4(&sp44, &sp40, obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z)) { func_8007B228(obj2F4->obj.pos.x, sp44, obj2F4->obj.pos.z, 2.0f); Object_Kill(&obj2F4->obj, &obj2F4->sfxPos); } @@ -1597,14 +1597,14 @@ void func_8006EC60(f32 xPos, f32 yPos, f32 zPos) { } } -void func_8006ECBC(s32 objId, PlayerShot* shot, s32 arg2, f32 xPos, f32 yPos, f32 zPos, f32 arg6, f32 arg7, f32 arg8, - f32 xRot, f32 yRot, f32 zRot) { +void func_8006ECBC(PlayerShotId objId, PlayerShot* shot, s32 unk0E4, f32 xPos, f32 yPos, f32 zPos, f32 arg6, f32 arg7, + f32 arg8, f32 xRot, f32 yRot, f32 zRot) { PlayerShot_Initialize(shot); shot->obj.status = 1; - shot->unk_20.z = arg8; - shot->unk_20.x = arg6; - shot->unk_20.y = arg7; + shot->vel.z = arg8; + shot->vel.x = arg6; + shot->vel.y = arg7; shot->obj.pos.x = xPos; shot->obj.pos.y = yPos; @@ -1618,22 +1618,22 @@ void func_8006ECBC(s32 objId, PlayerShot* shot, s32 arg2, f32 xPos, f32 yPos, f3 shot->unk_58 = 1; shot->unk_60 = 0; - if (objId == OBJ_80_9) { + if (objId == PLAYERSHOT_9) { shot->unk_64 = 120; } else { shot->unk_64 = 30; } - shot->playerNum = arg2 + 100; + shot->playerNum = unk0E4 + 100; if (gLevelMode == LEVELMODE_ALL_RANGE) { - if (arg2 + 100 < 104) { + if (unk0E4 + 100 < 104) { Audio_PlaySfx(0x2900000D, &shot->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); } else { Audio_PlaySfx(0x29002002, &shot->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); } - } else if ((arg2 < 60) && (gObjects2F4[arg2].obj.id == OBJ_2F4_200) && (gObjects2F4[arg2].unk_080 > 0)) { + } else if ((unk0E4 < 60) && (gObjects2F4[unk0E4].obj.id == OBJ_2F4_200) && (gObjects2F4[unk0E4].unk_080 > 0)) { Audio_PlaySfx(0x2900000D, &shot->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); - } else if (arg2 + 100 == 200) { + } else if (unk0E4 + 100 == 200) { shot->playerNum = 100; Audio_PlaySfx(0x19030037, &shot->sfxPos, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); } else { @@ -1641,25 +1641,25 @@ void func_8006ECBC(s32 objId, PlayerShot* shot, s32 arg2, f32 xPos, f32 yPos, f3 } } -void func_8006EEFC(s32 objId, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6, f32 xRot, f32 yRot, +void func_8006EEFC(s32 unk0E4, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6, f32 xRot, f32 yRot, f32 zRot) { s32 i; for (i = 0; i < 10; i++) { if (gPlayerShots[i].obj.status == 0) { - func_8006ECBC(PLAYERSHOT_1, &gPlayerShots[i], objId, xPos, yPos, zPos, arg4, arg5, arg6, xRot, yRot, zRot); + func_8006ECBC(PLAYERSHOT_1, &gPlayerShots[i], unk0E4, xPos, yPos, zPos, arg4, arg5, arg6, xRot, yRot, zRot); break; } } } -void func_8006EFA0(s32 objId, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6, f32 xRot, f32 yRot, +void func_8006EFA0(s32 unk0E4, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6, f32 xRot, f32 yRot, f32 zRot) { s32 i; for (i = 0; i < 10; i++) { if (gPlayerShots[i].obj.status == 0) { - func_8006ECBC(PLAYERSHOT_9, &gPlayerShots[i], objId, xPos, yPos, zPos, arg4, arg5, arg6, xRot, yRot, zRot); + func_8006ECBC(PLAYERSHOT_9, &gPlayerShots[i], unk0E4, xPos, yPos, zPos, arg4, arg5, arg6, xRot, yRot, zRot); break; } } @@ -2002,7 +2002,7 @@ void func_800701E0(Object_2F4* obj2F4) { f32 var_fv1; f32 temp_fv1; - if (func_800700A4(obj2F4) == 0) { + if (!func_800700A4(obj2F4)) { if ((obj2F4->unk_0D0 != 0) && (obj2F4->unk_0B4 == 0x43) && (obj2F4->unk_0D2 == 0)) { obj2F4->unk_0D0 = 0; } @@ -2029,7 +2029,7 @@ void func_800701E0(Object_2F4* obj2F4) { if (obj2F4->unk_0B4 == 0x6A) { func_80077240(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z, 3); gHitCount += 4; - D_80177850 = 0xF; + D_80177850 = 15; } if (obj2F4->unk_0B4 != 0x53) { @@ -2106,14 +2106,14 @@ void func_800701E0(Object_2F4* obj2F4) { func_8007D0E0(obj2F4->obj.pos.x - obj2F4->unk_0E8.x, obj2F4->obj.pos.y + 30.0f, obj2F4->obj.pos.z - obj2F4->unk_0E8.z, obj2F4->scale * 5.0f); obj2F4->unk_0D0 = 0; - obj2F4->timer_0C2 = 0x2710; + obj2F4->timer_0C2 = 10000; obj2F4->info.unk_1C = 0.0f; gHitCount += obj2F4->info.bonus; D_80177850 = 0xF; break; default: - obj2F4->timer_0BC = 0x23; + obj2F4->timer_0BC = 35; obj2F4->timer_04C = 2; obj2F4->unk_0E8.y = (Rand_ZeroOne() - 0.5f) * 20.0f; obj2F4->unk_0E8.x = (Rand_ZeroOne() - 0.5f) * 20.0f; @@ -2498,19 +2498,19 @@ void func_80070D44(Object_2F4* obj2F4) { break; case 36: - if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == 1)) { + if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == LASERS_TWIN)) { func_80070CEC(obj2F4); } break; case 37: - if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == 2)) { + if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == LASERS_HYPER)) { func_80070CEC(obj2F4); } break; case 38: - if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == 3)) { + if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == LASERS_UNK_3)) { func_80070CEC(obj2F4); } break; @@ -2725,7 +2725,7 @@ void func_80070D44(Object_2F4* obj2F4) { break; case 67: - if (gExpertMode != 0) { + if (gExpertMode) { func_80070CEC(obj2F4); } break; @@ -3422,7 +3422,7 @@ void func_80072594(Object_2F4* obj2F4) { break; case 46: - if (func_800A73E4(&spEC, &spFC, obj2F4->obj.pos.x, -100.0f, obj2F4->obj.pos.z) != 0) { + if (func_800A73E4(&spEC, &spFC, obj2F4->obj.pos.x, -100.0f, obj2F4->obj.pos.z)) { spF0 = 10.0f; if (Math_SmoothStepToF(&obj2F4->obj.pos.y, spEC, 0.5f, 7.0f, 0.0f) >= 0.0f) { @@ -3763,7 +3763,6 @@ void func_80074E3C(Object_2F4* obj2F4) { } bool func_80074F04(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { - gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN); if ((limbIndex == 3) || (limbIndex == 5)) { gSPTexture(gMasterDisp++, 5000, 5000, 0, G_TX_RENDERTILE, G_ON); @@ -4184,8 +4183,7 @@ void func_800763A4(Object_2F4* obj2F4) { func_8007D24C(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z, 2.2f); } - if ((D_80178294 != 0) && - (func_800A73E4(&sp58, &sp5C, obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z) != 0)) { + if ((D_80178294 != 0) && func_800A73E4(&sp58, &sp5C, obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z)) { func_8007BFFC(obj2F4->obj.pos.x, sp58 + 20.0f, obj2F4->obj.pos.z, 0.0f, 0.0f, 0.0f, obj2F4->scale * 3.0f, 5); func_8007B228(obj2F4->obj.pos.x, sp58, obj2F4->obj.pos.z, 2.0f); diff --git a/src/main/fox_game.c b/src/main/fox_game.c index 76ff4e63..867eb890 100644 --- a/src/main/fox_game.c +++ b/src/main/fox_game.c @@ -359,7 +359,7 @@ void func_800A26C0(void) { Save_Write(); } gGameState++; - Timer_CreateTask(MSEC_TO_CYCLES(1000), Timer_Increment, &gGameState, 1); + Timer_CreateTask(MSEC_TO_CYCLES(1000), Timer_Increment, (s32*) &gGameState, 1); /* fallthrough */ case GSTATE_LOGO_WAIT: RCP_SetupDL(&gMasterDisp, 0x4C); @@ -529,7 +529,7 @@ void func_800A26C0(void) { func_80040CDC(); func_8008865C(); func_8002E548(); - if ((gGameState == GSTATE_PLAY) && (gVersusMode)) { + if ((gGameState == GSTATE_PLAY) && gVersusMode) { func_800C1ED4(); } func_80084688(0, D_80177C50); diff --git a/src/main/fox_play.c b/src/main/fox_play.c index 2b2b24e6..2002b7af 100644 --- a/src/main/fox_play.c +++ b/src/main/fox_play.c @@ -29,7 +29,7 @@ extern s32 D_800D31A0[4]; #define MEM_ARRAY_ALLOCATE(arr, count) ((arr) = Memory_Allocate((count) * sizeof(*(arr)))) -s32 Play_CheckMedalStatus(u16 hitCount) { +bool Play_CheckMedalStatus(u16 hitCount) { if ((gTeamShields[2] > 0) && (gTeamShields[3] > 0) && (gTeamShields[1] > 0) && (gHitCount >= hitCount)) { return true; } @@ -42,9 +42,9 @@ void func_800A3FB0(void) { s32 Play_GetMaxShields(void) { if (gGoldRingCount[0] >= 3) { - return 0x17F; + return 383; } - return 0xFF; + return 255; } void func_800A3FEC(void) { @@ -155,7 +155,7 @@ void func_800A46A0(Player* player) { func_8007D10C(((Rand_ZeroOne() - 0.5f) * 10.0f) + player->hit1.x, (Rand_ZeroOne() * 5.0f) + player->hit1.y, player->hit1.z, 1.0f); } - if (!(gFrameCount & 1) && (Rand_ZeroOne() < 0.5f) && (!gVersusMode)) { + if (!(gFrameCount & 1) && (Rand_ZeroOne() < 0.5f) && !gVersusMode) { func_8007C484(((Rand_ZeroOne() - 0.5f) * 5.0f) + player->hit1.x, (Rand_ZeroOne() * 5.0f) + player->hit1.y, player->hit1.z, player->vel.x, player->vel.y, player->vel.z, (Rand_ZeroOne() * 0.02f) + 0.02f, player->num + 1); @@ -166,7 +166,7 @@ void func_800A46A0(Player* player) { func_8007D10C(((Rand_ZeroOne() - 0.5f) * 10.0f) + player->hit2.x, (Rand_ZeroOne() * 5.0f) + player->hit2.y, player->hit2.z, 1.0f); } - if (!(gFrameCount & 1) && (Rand_ZeroOne() < 0.5f) && (!gVersusMode)) { + if (!(gFrameCount & 1) && (Rand_ZeroOne() < 0.5f) && !gVersusMode) { func_8007C484(((Rand_ZeroOne() - 0.5f) * 5.0f) + player->hit2.x, (Rand_ZeroOne() * 5.0f) + player->hit2.y, player->hit2.z, player->vel.x, player->vel.y, player->vel.z, (Rand_ZeroOne() * 0.02f) + 0.02f, player->num + 1); @@ -983,7 +983,7 @@ bool func_800A73E4(f32* arg0, s32* arg1, f32 posX, f32 posY, f32 posZ) { sp9C = (s32) ((posX + 2400.0f) / 300.0f); sp98 = (s32) ((posZ + D_80177D20 + 1500.0f + 2400.0f) / 300.0f); if ((sp9C < 0) || (sp9C >= 16) || (sp98 < 0) || (sp98 >= 16)) { - return 0; + return false; } sp90 = Math_ModF(posX + 2400.0f, 300.0f); sp94 = Math_ModF(posZ + D_80177D20 + 1500.0f + 2400.0f, 300.0f); @@ -1028,7 +1028,7 @@ bool func_800A73E4(f32* arg0, s32* arg1, f32 posX, f32 posY, f32 posZ) { return false; } -s32 func_800A78C4(Hitbox* hitbox, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { +bool func_800A78C4(Hitbox* hitbox, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { if ((fabsf(hitbox->z.offset + arg3 - arg6) < (hitbox->z.size + D_8017853C)) && (fabsf(hitbox->x.offset + arg1 - arg4) < (hitbox->x.size + D_8017853C)) && (fabsf(hitbox->y.offset + arg2 - arg5) < (hitbox->y.size + D_8017853C))) { @@ -1156,14 +1156,15 @@ s32 func_800A7974(Player* player, f32* hitboxData, s32* index, f32 xPos, f32 yPo return 0; } -bool func_800A8054(s32 objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, Vec3f* arg7, Vec3f* arg8) { +bool func_800A8054(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, Vec3f* arg7, + Vec3f* arg8) { Vec3f sp54; Vec3f sp48; Vec3f sp3C; f32 pad1; f32 sp34; - s32 var_s0; - s32 var_v0; + s32 colId; + s32 useCol2; sp54.x = arg4; sp54.y = arg5; @@ -1172,104 +1173,104 @@ bool func_800A8054(s32 objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, sp48.y = arg2; sp48.z = arg3; - var_v0 = false; + useCol2 = false; switch (objId) { case OBJ_2F4_180: - var_s0 = 0; + colId = COL1_0; break; case OBJ_80_4: case OBJ_80_5: - var_s0 = 1; - var_v0 = true; + colId = COL2_1; + useCol2 = true; break; case OBJ_80_149: - var_s0 = 5; + colId = COL1_5; break; case OBJ_80_150: - var_s0 = 6; + colId = COL1_6; break; case OBJ_408_308: - var_s0 = 4; + colId = COL1_4; break; case OBJ_408_312: - var_s0 = 9; + colId = COL1_9; break; case OBJ_408_309: - var_s0 = 7; + colId = COL1_7; break; case OBJ_UNK_1000: - var_s0 = 3; + colId = COL1_3; break; case OBJ_408_313: - var_s0 = 8; + colId = COL1_8; break; case OBJ_80_39: - var_s0 = 1; + colId = COL1_1; break; case OBJ_80_120: - var_s0 = 18; - var_v0 = true; + colId = COL2_18; + useCol2 = true; break; case OBJ_80_124: - var_s0 = 15; - var_v0 = true; + colId = COL2_15; + useCol2 = true; break; case OBJ_80_126: - var_s0 = 16; - var_v0 = true; + colId = COL2_16; + useCol2 = true; break; case OBJ_80_47: - var_s0 = 7; - var_v0 = true; + colId = COL2_7; + useCol2 = true; break; case OBJ_80_2: - var_s0 = 2; - var_v0 = true; + colId = COL2_2; + useCol2 = true; break; case OBJ_80_3: case OBJ_80_69: - var_s0 = 3; - var_v0 = true; + colId = COL2_3; + useCol2 = true; break; case OBJ_80_143: - var_s0 = 17; - var_v0 = true; + colId = COL2_17; + useCol2 = true; break; case OBJ_80_140: - var_s0 = 4; - var_v0 = true; + colId = COL2_4; + useCol2 = true; break; case OBJ_80_141: - var_s0 = 6; - var_v0 = true; + colId = COL2_6; + useCol2 = true; break; case OBJ_80_117: - var_s0 = 14; - var_v0 = true; + colId = COL2_14; + useCol2 = true; break; case OBJ_80_70: - var_s0 = 8; - var_v0 = true; + colId = COL2_8; + useCol2 = true; break; case OBJ_80_72: - var_s0 = 9; - var_v0 = true; + colId = COL2_9; + useCol2 = true; break; case OBJ_80_71: - var_s0 = 10; - var_v0 = true; + colId = COL2_10; + useCol2 = true; break; case OBJ_80_73: - var_s0 = 11; - var_v0 = true; + colId = COL2_11; + useCol2 = true; break; case OBJ_80_67: - var_s0 = 12; - var_v0 = true; + colId = COL2_12; + useCol2 = true; break; case OBJ_80_74: - var_s0 = 13; - var_v0 = true; + colId = COL2_13; + useCol2 = true; break; case OBJ_80_118: case OBJ_80_119: @@ -1324,17 +1325,17 @@ bool func_800A8054(s32 objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, case OBJ_80_66: case OBJ_80_68: default: - var_s0 = 0; - var_v0 = true; + colId = COL2_0; + useCol2 = true; break; } - if (!var_v0) { - if (func_800998FC(&sp54, &sp48, arg8, var_s0, &sp3C, &sp34) > 0) { + if (!useCol2) { + if (func_800998FC(&sp54, &sp48, arg8, colId, &sp3C, &sp34) > 0) { return true; } } else { - if (func_800A3690(&sp54, &sp48, var_s0, arg7)) { + if (func_800A3690(&sp54, &sp48, colId, arg7)) { return true; } } @@ -1342,7 +1343,7 @@ bool func_800A8054(s32 objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, } // arg5 could be Vec3f (not Vec3f*) -s32 func_800A8304(Player* player, s32 objId, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { +s32 func_800A8304(Player* player, ObjectId objId, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { Vec3f sp84; Vec3f sp78; Vec3f sp6C; @@ -1563,7 +1564,7 @@ void func_800A8BA4(Player* player) { func_8007BC7C(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); } } - } else if ((player->form == FORM_LANDMASTER) && (!gVersusMode)) { + } else if ((player->form == FORM_LANDMASTER) && !gVersusMode) { func_800444BC(player); } @@ -2052,7 +2053,7 @@ void func_800AA800(Player* player) { Object_58* obj58; Object_80* obj80; s32 count; - s32 var_s0; + s32 colId; s32 i; f32 tempx; f32 tempy; @@ -2112,13 +2113,13 @@ void func_800AA800(Player* player) { spD4.x = player->pos.x; spD4.y = D_80177940; spD4.z = player->unk_138; - var_s0 = 4; + colId = COL2_4; if (obj58->obj.id == OBJ_80_141) { - var_s0 = 6; + colId = COL2_6; } else if (obj58->obj.id == OBJ_80_143) { - var_s0 = 17; + colId = COL2_17; } - if (func_800A3690(&spD4, &spC8, var_s0, &spBC) != 0) { + if (func_800A3690(&spD4, &spC8, colId, &spBC)) { player->unk_068 = spBC.y + 1.0f; player->unk_248 = spBC.x; player->unk_24C = spBC.z; @@ -2155,22 +2156,22 @@ void func_800AA800(Player* player) { if ((obj58->obj.id == OBJ_80_149) || (obj58->obj.id == OBJ_80_150)) { if (obj58->obj.id == OBJ_80_149) { - var_s0 = 5; + colId = COL1_5; } else { - var_s0 = 6; + colId = COL1_6; } - if (func_800998FC(&spD4, &spC8, &sp9C, var_s0, &spB0, spA8) > 0) { + if (func_800998FC(&spD4, &spC8, &sp9C, colId, &spB0, spA8) > 0) { player->unk_068 = spB0.y; player->unk_248 = spA8[0]; player->unk_24C = spA8[1]; player->unk_070 = (sp120 / 180.0f) * M_PI; } } else { - var_s0 = 0; + colId = COL2_0; if (obj58->obj.id == OBJ_80_3) { - var_s0 = 3; + colId = COL2_3; } - if (func_800A3690(&spD4, &spC8, var_s0, &spBC) != 0) { + if (func_800A3690(&spD4, &spC8, colId, &spBC)) { player->unk_068 = spBC.y; player->unk_248 = spBC.x; player->unk_24C = spBC.z; @@ -2207,19 +2208,19 @@ void func_800AA800(Player* player) { spC8.y = tempy; spC8.z = tempz; - var_s0 = 0; + colId = COL2_0; if (obj80->obj.id == OBJ_80_47) { - var_s0 = 7; + colId = COL2_7; } if (obj80->obj.id == OBJ_80_2) { - var_s0 = 2; + colId = COL2_2; } else if (obj80->obj.id == OBJ_80_3) { - var_s0 = 3; + colId = COL2_3; } else if ((obj80->obj.id == OBJ_80_4) || (obj80->obj.id == OBJ_80_5)) { - var_s0 = 1; + colId = COL2_1; } - if (func_800A3690(&spD4, &spC8, var_s0, &spBC) != 0) { + if (func_800A3690(&spD4, &spC8, colId, &spBC)) { player->unk_068 = spBC.y; player->unk_06C = player->unk_138 + var_fs1; player->unk_248 = spBC.x; @@ -2266,7 +2267,7 @@ void func_800AA800(Player* player) { break; } - if (func_800A78C4(hitbox, tempx, tempy, tempz, tempx2, tempy2, tempz2) != 0) { + if (func_800A78C4(hitbox, tempx, tempy, tempz, tempx2, tempy2, tempz2)) { if (D_80177940 < player->unk_068) { player->unk_068 = spEC.y + 15.0f + tempy; player->unk_06C = spEC.z + 10.0f + tempz; @@ -2348,11 +2349,7 @@ void func_800AB334(void) { case LEVEL_VENOM_ANDROSS: D_80177A98 = 0; D_80177AB0 = 6; - D_E9F1D0_801A7F78 = 0.0f; - D_E9F1D0_801A7F70 = D_E9F1D0_801A7F78; - D_E9F1D0_801A7F68 = D_E9F1D0_801A7F70; - D_E9F1D0_801A7F60 = D_E9F1D0_801A7F68; - D_E9F1D0_801A7F58 = D_E9F1D0_801A7F60; + D_E9F1D0_801A7F58 = D_E9F1D0_801A7F60 = D_E9F1D0_801A7F68 = D_E9F1D0_801A7F70 = D_E9F1D0_801A7F78 = 0.0f; break; case LEVEL_AQUAS: D_80137E78 = 3; @@ -2370,7 +2367,7 @@ void func_800AB334(void) { case LEVEL_ZONESS: MEM_ARRAY_ALLOCATE(D_801782C4, 200); ptr = (u8*) D_801782C4; - for (i = 0; i < 200 * sizeof(PosRot); i++, ptr++) { + for (i = 0; i < 200 * sizeof(*D_801782C4); i++, ptr++) { *ptr = 0; } D_801784A4 = 0; @@ -2452,7 +2449,7 @@ void func_800AB964(void) { for (j = 0; j < 10; j++) { D_80177DD0[i][j] = 0; } - gLaserStrength[i] = 0; + gLaserStrength[i] = LASERS_SINGLE; gBombCount[i] = 0; } D_80177E7C = D_80177E74 = 0; @@ -2480,7 +2477,7 @@ void func_800ABAB4(void) { gControllerRumble[i] = 0; } - if (gExpertMode != 0) { + if (gExpertMode) { D_80177828 = 200; } else { D_80177828 = 100; @@ -2631,7 +2628,7 @@ void func_800ABAB4(void) { func_800AB334(); } -void func_800AC290(Player* player, PlayerShot* shot, f32 arg2, f32 arg3, s32 objId, f32 arg5) { +void func_800AC290(Player* player, PlayerShot* shot, f32 arg2, f32 arg3, PlayerShotId shotId, f32 arg5) { Vec3f sp44; Vec3f sp38; Vec3f sp2C; @@ -2641,7 +2638,7 @@ void func_800AC290(Player* player, PlayerShot* shot, f32 arg2, f32 arg3, s32 obj Matrix_RotateX(gCalcMatrix, -((player->unk_120 + player->unk_0E4 + player->unk_4D8) * M_DTOR), 1); Matrix_RotateZ(gCalcMatrix, -((player->unk_0F8 + player->unk_0F0) * M_DTOR), 1); Matrix_Translate(gCalcMatrix, player->unk_084, player->unk_080, 0.0f, 1); - if ((gVersusMode) && (objId <= PLAYERSHOT_1)) { + if (gVersusMode && (shotId <= PLAYERSHOT_1)) { arg5 *= 0.5f; } sp44.x = 0.0f; @@ -2653,11 +2650,11 @@ void func_800AC290(Player* player, PlayerShot* shot, f32 arg2, f32 arg3, s32 obj sp44.z = 0.0f; Matrix_MultVec3f(gCalcMatrix, &sp44, &sp2C); shot->obj.status = 1; - shot->unk_20.x = sp38.x; - shot->unk_20.y = sp38.y; - shot->unk_20.z = sp38.z; + shot->vel.x = sp38.x; + shot->vel.y = sp38.y; + shot->vel.z = sp38.z; shot->unk_60 = 0; - shot->obj.id = objId; + shot->obj.id = shotId; if (!gVersusMode) { shot->unk_64 = 35; @@ -2677,7 +2674,7 @@ void func_800AC290(Player* player, PlayerShot* shot, f32 arg2, f32 arg3, s32 obj shot->obj.rot.x = player->unk_120 + player->unk_0E4 + player->unk_4D8; shot->obj.rot.y = player->unk_0E8 + player->unk_114; shot->obj.rot.z = player->unk_0F8; - if (objId == PLAYERSHOT_8) { + if (shotId == PLAYERSHOT_8) { if (gCurrentLevel == LEVEL_AQUAS) { shot->unk_58 = Rand_ZeroOne() * 360.0f; shot->unk_60 = Rand_ZeroOne() * 360.0f; @@ -2697,7 +2694,7 @@ void func_800AC290(Player* player, PlayerShot* shot, f32 arg2, f32 arg3, s32 obj shot->playerNum = player->num; } -void func_800AC650(Player* player, PlayerShot* shot, s32 objId, f32 arg3) { +void func_800AC650(Player* player, PlayerShot* shot, PlayerShotId shotId, f32 arg3) { Vec3f sp54; Vec3f sp48; Vec3f sp3C; @@ -2729,9 +2726,9 @@ void func_800AC650(Player* player, PlayerShot* shot, s32 objId, f32 arg3) { sp54.y = 7; sp54.z = 0; Matrix_MultVec3f(gCalcMatrix, &sp54, &sp3C); - shot->unk_20.x = sp48.x; - shot->unk_20.y = sp48.y; - shot->unk_20.z = sp48.z; + shot->vel.x = sp48.x; + shot->vel.y = sp48.y; + shot->vel.z = sp48.z; shot->obj.pos.x = player->pos.x + sp3C.x; shot->obj.pos.y = player->pos.y + sp3C.y; shot->obj.pos.z = player->unk_138 + sp3C.z; @@ -2743,10 +2740,10 @@ void func_800AC650(Player* player, PlayerShot* shot, s32 objId, f32 arg3) { shot->obj.rot.y = player->unk_0E8 + player->unk_114; shot->obj.rot.z = player->unk_0EC; shot->unk_64 = 40; - shot->obj.id = objId; + shot->obj.id = shotId; shot->playerNum = player->num; - if (objId == PLAYERSHOT_8) { + if (shotId == PLAYERSHOT_8) { if (arg3 <= 65.0f) { shot->unk_5C = 1; } @@ -2770,13 +2767,13 @@ void func_800ACA40(Player* player) { void func_800ACABC(Player* player) { s32 i; - s32 laser = gLaserStrength[gPlayerNum]; + LaserStrength laser = gLaserStrength[gPlayerNum]; if (player->wings.unk_14 > -8.0f) { - laser = 0; + laser = LASERS_SINGLE; } switch (laser) { - case 0: + case LASERS_SINGLE: for (i = 0; i < ARRAY_COUNT(gPlayerShots) - 1; i++) { if (gPlayerShots[i].obj.status == 0) { func_800AC290(player, &gPlayerShots[i], 0.0f, 0.0f, PLAYERSHOT_0, 400.0f / 3.0f); @@ -2786,12 +2783,12 @@ void func_800ACABC(Player* player) { } } break; - case 1: - case 2: + case LASERS_TWIN: + case LASERS_HYPER: for (i = 0; i < ARRAY_COUNT(gPlayerShots) - 1; i++) { if (gPlayerShots[i].obj.status == 0) { func_800AC290(player, &gPlayerShots[i], 0.0f, -10.0f, PLAYERSHOT_1, 400.0f / 3.0f); - if (laser == 1) { + if (laser == LASERS_TWIN) { func_800A5FA0(&player->unk_460, 0x0940800C, player->num); D_80177AA0[player->num] = 0.5f; } else { @@ -2827,7 +2824,7 @@ void func_800ACC7C(Player* player) { } } -void func_800ACDC0(Player* player, PlayerShot* shot, s32 objId) { +void func_800ACDC0(Player* player, PlayerShot* shot, PlayerShotId shotId) { Vec3f sp5C; Vec3f sp50; Vec3f sp44; @@ -2839,7 +2836,7 @@ void func_800ACDC0(Player* player, PlayerShot* shot, s32 objId) { Matrix_RotateX(gCalcMatrix, player->unk_154 * M_DTOR, 1); sp5C.x = 0.0f; sp5C.y = 0.0f; - if (objId == PLAYERSHOT_3) { + if (shotId == PLAYERSHOT_3) { sp5C.z = 100.0f; } else { sp5C.z = 150.0f; @@ -2855,9 +2852,9 @@ void func_800ACDC0(Player* player, PlayerShot* shot, s32 objId) { sp5C.y = 0.0f; sp5C.z = 0; Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp44); - shot->unk_20.x = sp50.x; - shot->unk_20.y = sp50.y; - shot->unk_20.z = sp50.z; + shot->vel.x = sp50.x; + shot->vel.y = sp50.y; + shot->vel.z = sp50.z; shot->obj.pos.x = player->pos.x + sp44.x; shot->obj.pos.y = player->pos.y + sp44.y; shot->obj.pos.z = player->unk_138 + sp44.z; @@ -2865,7 +2862,7 @@ void func_800ACDC0(Player* player, PlayerShot* shot, s32 objId) { shot->unk_44 = 1.0f; shot->obj.status = 1; - shot->obj.id = objId; + shot->obj.id = shotId; shot->unk_64 = 30; shot->unk_58 = 1; @@ -2886,7 +2883,7 @@ void func_800AD094(Player* player) { } } -s32 func_800AD118(s32 playerNum) { +bool func_800AD118(s32 playerNum) { Object_2F4* obj2F4; s32 i; @@ -2921,7 +2918,7 @@ bool func_800AD1F4(Player* player) { } if ((!(gInputHold->button & R_TRIG) || !(gInputHold->button & Z_TRIG) || (player->form != FORM_ARWING) || (player->state_1C8 != PLAYERSTATE_1C8_3)) && - !(gFrameCount & 3) && (func_800AD118(player->num) != 0)) { + !(gFrameCount & 3) && func_800AD118(player->num)) { if (gChargeTimers[player->num] >= 21) { for (i = 0; i < 13; i++) { if (gPlayerShots[i].obj.status == 0) { @@ -3016,10 +3013,10 @@ void func_800AD7F0(Player* player) { switch (player->form) { case FORM_ARWING: if ((player->wings.rightState <= WINGSTATE_BROKEN) || (player->wings.leftState <= WINGSTATE_BROKEN)) { - gLaserStrength[player->num] = 0; + gLaserStrength[player->num] = LASERS_SINGLE; } - if (func_800AD1F4(player) == 0) { - if (gLaserStrength[gPlayerNum] > 0) { + if (!func_800AD1F4(player)) { + if (gLaserStrength[gPlayerNum] > LASERS_SINGLE) { Math_SmoothStepToF(&player->wings.unk_14, -10.0f, 1.0f, 0.5f, 0.0f); } else { Math_SmoothStepToF(&player->wings.unk_14, 0.0f, 1.0f, 0.5f, 0.0f); @@ -3038,7 +3035,7 @@ void func_800AD7F0(Player* player) { } break; case FORM_LANDMASTER: - if (func_800AD1F4(player) == 0) { + if (!func_800AD1F4(player)) { if (gShootButton[player->num] & gInputPress->button) { func_800ACA40(player); } @@ -4094,10 +4091,8 @@ void func_800B0F50(Player* playerx) { D_80161684 = D_80161A50; D_80177DC8 = D_80177CA0; D_80161A88 = D_80161A8C; - player->unk_144 = D_80177CB0; - D_80177D20 = player->unk_144; - player->unk_138 = -player->unk_144; - player->pos.z = -player->unk_144; + D_80177D20 = player->unk_144 = D_80177CB0; + player->pos.z = player->unk_138 = -player->unk_144; if ((D_80177CA0 > 0) && (gLevelMode == LEVELMODE_ON_RAILS)) { if (gCurrentLevel == LEVEL_MACBETH) { sp2E = D_80177DC8; @@ -4116,7 +4111,7 @@ void func_800B0F50(Player* playerx) { D_801779E8.x = D_801779E8.y = D_801779E8.z = D_801779D8.x = D_801779D8.y = D_801779D8.z = 0.0f; if (gVersusMode) { - gLaserStrength[gPlayerNum] = 0; + gLaserStrength[gPlayerNum] = LASERS_SINGLE; player->pos.y = 500.0f; player->pos.x = D_800D3114[gPlayerNum]; player->pos.z = D_800D3124[gPlayerNum]; @@ -4287,7 +4282,7 @@ void func_800B0F50(Player* playerx) { for (j = 0; j < 6; j++) { D_80177CD0[j] = D_80177CF0[j] = 1; } - gLaserStrength[gPlayerNum] = 0; + gLaserStrength[gPlayerNum] = LASERS_SINGLE; gGoldRingCount[0] = D_80161A94[0] = D_80161714 = 0; gLifeCount[gPlayerNum] = 2; gBombCount[gPlayerNum] = 3; @@ -4324,7 +4319,7 @@ void func_800B0F50(Player* playerx) { break; } } - if (gLaserStrength[gPlayerNum] > 0) { + if (gLaserStrength[gPlayerNum] > LASERS_SINGLE) { player->wings.unk_14 = -10.0f; } D_801779BC = 0; @@ -5134,7 +5129,7 @@ void func_800B44C4(Player* player) { } void func_800B46F8(Player* player) { - s32 temp_ft2; + s32 teamId; if ((player->state_1C8 == PLAYERSTATE_1C8_3) && (D_8017796C >= 0)) { D_8017796C++; @@ -5144,10 +5139,10 @@ void func_800B46F8(Player* player) { if ((player->shields < 0x40) && ((gTeamShields[1] > 0) || (gTeamShields[3] > 0) || (gTeamShields[2] > 0))) { do { do { - temp_ft2 = (s32) (Rand_ZeroOne() * 2.9f) + 1; - } while (gTeamShields[temp_ft2] <= 0); + teamId = (s32) (Rand_ZeroOne() * 2.9f) + 1; + } while (gTeamShields[teamId] <= 0); } while (0); // macro? - switch (temp_ft2) { + switch (teamId) { case 1: if (Rand_ZeroOne() < 0.5f) { func_800BA808(gMsg_ID_20306, RCID_FALCO); @@ -5206,11 +5201,11 @@ void func_800B48BC(Player* player) { *D_80177984 = 1; } } - if (player->state_1C8 >= 2) { + if (player->state_1C8 >= PLAYERSTATE_1C8_2) { func_800B39E0(player); } player->unk_228 = 0; - if ((player->state_1C8 >= 2) && (player->form == FORM_ARWING) && !gVersusMode) { + if ((player->state_1C8 >= PLAYERSTATE_1C8_2) && (player->form == FORM_ARWING) && !gVersusMode) { switch (player->unk_204) { case 0: sp1C4 = Animation_GetFrameData(&D_3015AF4, 0, sp58); @@ -5440,7 +5435,7 @@ void func_800B48BC(Player* player) { D_80177854 = 1; } gBombCount[gPlayerNum] = 3; - gLaserStrength[gPlayerNum] = 0; + gLaserStrength[gPlayerNum] = LASERS_SINGLE; D_80178488 = true; gDrawMode = DRAWMODE_0; } @@ -5889,7 +5884,7 @@ void func_800B7184(Player* player, s32 arg1) { void func_800B71E4(Player* player) { switch (player->state_1C8) { - case 3: + case PLAYERSTATE_1C8_3: switch (gLevelMode) { case LEVELMODE_ON_RAILS: if (player->form == FORM_ARWING) { @@ -5912,11 +5907,11 @@ void func_800B71E4(Player* player) { break; } break; - case 5: + case PLAYERSTATE_1C8_5: player->unk_034 -= player->unk_034 * 0.1f; func_800B7184(player, 0); break; - case 4: + case PLAYERSTATE_1C8_4: if ((gLevelMode == LEVELMODE_ON_RAILS) && (player->form == FORM_ARWING)) { player->camEye.x += (player->pos.x - player->camEye.x) * 0.1f; player->camEye.y += (player->pos.y - player->camEye.y) * 0.1f; @@ -5929,8 +5924,8 @@ void func_800B71E4(Player* player) { player->camAt.z = player->unk_138 + D_80177D20 - 1.0f; } break; - case 6: - case 7: + case PLAYERSTATE_1C8_6: + case PLAYERSTATE_1C8_7: break; } } @@ -6038,8 +6033,8 @@ void func_800B79B0(void) { case LEVEL_VERSUS: func_800C26C8(); D_80177844++; - if ((D_80177844 == 200) && (gLaserStrength[0] == 0) && (gLaserStrength[1] == 0) && - (gLaserStrength[2] == 0) && (gLaserStrength[3] == 0)) { + if ((D_80177844 == 200) && (gLaserStrength[0] == LASERS_SINGLE) && (gLaserStrength[1] == LASERS_SINGLE) && + (gLaserStrength[2] == LASERS_SINGLE) && (gLaserStrength[3] == LASERS_SINGLE)) { func_800B852C(OBJ_ITEM_LASERS, &gItems[0]); } if ((D_80177844 == 400) && (gBombCount[0] == 0) && (gBombCount[1] == 0) && (gBombCount[2] == 0) && @@ -6235,7 +6230,7 @@ void func_800B832C(void) { func_800B79B0(); } -void func_800B852C(s32 objId, Item* item) { +void func_800B852C(ObjectId objId, Item* item) { u8 sp1F = Rand_ZeroOne() * 5.0f; if (D_800D317C == sp1F) { diff --git a/src/main/fox_radio.c b/src/main/fox_radio.c index 4e39a9e6..33ab75ab 100644 --- a/src/main/fox_radio.c +++ b/src/main/fox_radio.c @@ -671,10 +671,8 @@ void func_800BB5D0(void) { if (temp_ft0 == RCID_PEPPY) { var_v1 = 3; } - if ((((((gTeamShields[var_v1] <= 0) && (gFrameCount & 4)) && (gTeamShields[var_v1] != (-2))) && - (D_801782A4 != 2)) && - (D_801782A4 != 3)) && - (D_801782A4 != 1000)) { + if ((gTeamShields[var_v1] <= 0) && (gFrameCount & 4) && (gTeamShields[var_v1] != -2) && (D_801782A4 != 2) && + (D_801782A4 != 3) && (D_801782A4 != 1000)) { RCP_SetupDL(&gMasterDisp, 0x4C); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); Graphics_DisplaySmallText(31, 167, 1.0f, 1.0f, "DOWN"); @@ -687,12 +685,9 @@ void func_800BB5D0(void) { temp_ft0 = (s32) D_80177D68; - if ((((((((temp_ft0 == RCID_WOLF) || (temp_ft0 == RCID_PIGMA)) || (temp_ft0 == RCID_LEON)) || - (temp_ft0 == RCID_ANDREW)) || - (temp_ft0 == RCID_WOLF_2)) || - (temp_ft0 == RCID_PIGMA_2)) || - (temp_ft0 == RCID_LEON_2)) || - (temp_ft0 == RCID_ANDREW_2)) { + if ((temp_ft0 == RCID_WOLF) || (temp_ft0 == RCID_PIGMA) || (temp_ft0 == RCID_LEON) || + (temp_ft0 == RCID_ANDREW) || (temp_ft0 == RCID_WOLF_2) || (temp_ft0 == RCID_PIGMA_2) || + (temp_ft0 == RCID_LEON_2) || (temp_ft0 == RCID_ANDREW_2)) { switch (temp_ft0) { case RCID_WOLF: @@ -723,10 +718,8 @@ void func_800BB5D0(void) { break; } - if ((((((gObjects2F4[var_v1].obj.status != 2) && (gFrameCount & 4)) && - (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3)) && - (D_801782A4 != 2)) && - (D_801782A4 != 3)) && + if ((gObjects2F4[var_v1].obj.status != 2) && (gFrameCount & 4) && + (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) && (D_801782A4 != 2) && (D_801782A4 != 3) && (D_801782A4 != 1000)) { RCP_SetupDL(&gMasterDisp, 0x4C); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); diff --git a/src/main/fox_std_lib.c b/src/main/fox_std_lib.c index 4299a90b..5306934d 100644 --- a/src/main/fox_std_lib.c +++ b/src/main/fox_std_lib.c @@ -137,7 +137,7 @@ s32 Animation_GetLimbIndex(Limb* limb, Limb** skeleton) { void Animation_DrawLimb(s32 mode, Limb* limb, Limb** skeleton, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data) { - s32 override; + bool override; s32 limbIndex; Gfx* dList; Vec3f trans; @@ -194,7 +194,7 @@ void Animation_DrawLimb(s32 mode, Limb* limb, Limb** skeleton, Vec3f* jointTable void Animation_DrawSkeleton(s32 mode, Limb** skeletonSegment, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data, Matrix* transform) { - s32 override; + bool override; Limb** skeleton; Limb* rootLimb; s32 rootIndex; diff --git a/src/main/sf_43E80.c b/src/main/sf_43E80.c index b752171f..a77cb57d 100644 --- a/src/main/sf_43E80.c +++ b/src/main/sf_43E80.c @@ -43,7 +43,7 @@ extern f32 D_E6A810_801BE2A4; extern s16 D_E6A810_801BE2FA; void func_80189120(f32 x, f32 y, f32 z, f32, f32); -s32 func_801A3C20(f32); +bool func_801A3C20(f32); s32 func_801A3300(Player*, f32, f32); s32 func_801A3790(Player*, f32, f32); @@ -335,7 +335,7 @@ void func_800444BC(Player* player) { if (D_801784AC == 4) { func_E6A810_801B6E20(player->pos.x, player->unk_138 + player->unk_144, &sp40, &sp38, &sp3C); } - if (gCurrentLevel == 0xB) { + if (gCurrentLevel == LEVEL_MACBETH) { D_E6A810_801BE250.unk_6C = D_80177940; D_E6A810_801BE250.unk_70 = D_E6A810_801BE250.unk_74 = 0.0f; D_800C9F10 = 0.0f; @@ -515,7 +515,7 @@ void func_80044868(Player* player) { if ((gCurrentLevel == LEVEL_TITANIA) && (D_80178284 == 0)) { func_80043280(D_3005EA8, D_6009BB8, gFrameCount * -55.0f); } - if ((gCurrentLevel == LEVEL_MACBETH) && (player->state_1C8 == 7)) { + if ((gCurrentLevel == LEVEL_MACBETH) && (player->state_1C8 == PLAYERSTATE_1C8_7)) { func_80043280(D_3005EA8, *D_Unk_800DACB8, gFrameCount * -55.0f); } } @@ -877,7 +877,7 @@ void func_8004641C(Player* player, s32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 a D_E6A810_801BE250.unk_70 = sp58.x; D_E6A810_801BE250.unk_74 = sp58.z; } else if ((arg1 == OBJ_80_67) && (D_E6A810_801BE250.unk_6C == 0.0f) && - (func_800A8054(arg1, arg2 + 20.0f, arg3, arg4, sp84, sp80, sp7C, &sp58, &sp4C) != 0)) { + func_800A8054(arg1, arg2 + 20.0f, arg3, arg4, sp84, sp80, sp7C, &sp58, &sp4C)) { player->unk_1DC = 9; player->timer_1E8 = 15; if ((arg6 > 90.0f) && (arg6 < 270.0f)) { @@ -995,7 +995,7 @@ void func_80046704(Player* player) { (obj80->obj.pos.z <= (player->unk_138 + 220.0f)) && (player->pos.y >= 200.0f)) { player->unk_068 = obj80->obj.pos.y + 204.0f; } - } else if ((obj80->obj.id == OBJ_80_105) && (func_801A3C20(player->unk_138) != 0)) { + } else if ((obj80->obj.id == OBJ_80_105) && func_801A3C20(player->unk_138)) { if (((player->pos.x - 200.0f) < D_E6A810_801BE250.unk_54) && (D_E6A810_801BE250.unk_54 < (player->pos.x + 200.0f))) { player->unk_068 = D_E6A810_801BE250.unk_58 - 1.0f; @@ -1202,7 +1202,7 @@ void func_80047754(Player* player) { func_80047E7C(player, D_E6A810_801BE274, D_E6A810_801BE258 + 30.0f); } } - if (func_801A3C20(player->unk_138) != 0) { + if (func_801A3C20(player->unk_138)) { player->unk_0E4 = D_E6A810_801BE250.unk_5C; if (((player->pos.x - 200.0f) < D_E6A810_801BE250.unk_54) && (D_E6A810_801BE250.unk_54 < (player->pos.x + 200.0f))) { @@ -1317,7 +1317,7 @@ void func_80047FBC(Player* player) { if (!(D_800C9F08 & 1)) { Math_SmoothStepToF(&player->unk_0EC, -((player->vel.z / 5.0f) * 4.0f), 0.4f, 8.0f, 0.01f); if (player->unk_0EC >= 3.0f) { - if (gPlayer->state_1C8 != 7) { + if (gPlayer->state_1C8 != PLAYERSTATE_1C8_7) { Audio_PlaySfx(0x19000065, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); } D_800C9F08 |= 1; diff --git a/src/main/sf_77E40.c b/src/main/sf_77E40.c index 454f4249..7caf8282 100644 --- a/src/main/sf_77E40.c +++ b/src/main/sf_77E40.c @@ -109,7 +109,7 @@ void func_80077790(void) { } } -Object_8C* func_8007783C(s32 objId) { +Object_8C* func_8007783C(ObjectId objId) { Object_8C* obj8C; s32 i; @@ -612,11 +612,11 @@ void func_8007968C(Object_8C* obj8C) { } } -s32 func_800798C4(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* arg4) { +bool func_800798C4(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* arg4) { if ((arg0 != 1) && (arg0 != 5)) { *arg1 = NULL; } - return 0; + return false; } void func_800798F0(Object_8C* obj8C) { @@ -859,13 +859,13 @@ void func_8007A748(Object_8C* obj8C) { } } -s32 func_8007A774(Player* player, Object_8C* obj8C, f32 arg2) { +bool func_8007A774(Player* player, Object_8C* obj8C, f32 arg2) { if ((fabsf(player->unk_138 - obj8C->obj.pos.z) < arg2) && (fabsf(player->pos.x - obj8C->obj.pos.x) < arg2) && (fabsf(player->pos.y - obj8C->obj.pos.y) < arg2) && (player->timer_498 == 0)) { Player_ApplyDamage(player, 0, obj8C->info.damage); - return 1; + return true; } else { - return 0; + return false; } } diff --git a/src/main/sf_beam.c b/src/main/sf_beam.c deleted file mode 100644 index 24997fc8..00000000 --- a/src/main/sf_beam.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80035D30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80035DEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/PlayerShot_Initialize.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80035E78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036318.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036528.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_800365E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_800366CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036770.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036874.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036F88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80037438.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80037698.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003774C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80037CF4.s") - -void func_80038140(PlayerShot* shot); -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80038140.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80038F34.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80039210.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80039A50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003AF88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003AFD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003B00C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003B55C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BA80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BAA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BACC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BB4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BEF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003C008.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003C3D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003C4D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003CC08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003CF90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003D54C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003D854.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003D9B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003DA0C.s") diff --git a/src/main/sf_hud.c b/src/main/sf_hud.c index b1396e79..af539842 100644 --- a/src/main/sf_hud.c +++ b/src/main/sf_hud.c @@ -1520,7 +1520,7 @@ void func_8008E620(f32 arg0, f32 arg1) { break; default: - ret = 0; + ret = false; break; } @@ -1622,7 +1622,7 @@ void func_800907C4(Object_408* obj408) { func_8008FFF0(obj408, D_8015F928); } -s32 func_8009092C(Object_2F4* obj2F4) { +bool func_8009092C(Object_2F4* obj2F4) { bool var_s5 = false; Object_408* obj408; s32 i = 0; @@ -1648,7 +1648,7 @@ s32 func_8009092C(Object_2F4* obj2F4) { return var_s5; } -s32 func_80090A00(Object_2F4* obj2F4) { +bool func_80090A00(Object_2F4* obj2F4) { switch (obj2F4->unk_064) { case 0: obj2F4->unk_134 = 0.0f; @@ -1722,10 +1722,10 @@ s32 func_80090A00(Object_2F4* obj2F4) { return false; } -s32 func_80090CCC(Object_2F4* obj2F4) { - s32 ret = 0; +bool func_80090CCC(Object_2F4* obj2F4) { + bool ret = false; - if (func_8009092C(obj2F4) != 0) { + if (func_8009092C(obj2F4)) { obj2F4->unk_124.z = gObjects408[obj2F4->unk_0E6].obj.pos.z; obj2F4->unk_124.y = gObjects408[obj2F4->unk_0E6].obj.pos.y; obj2F4->unk_124.x = gObjects408[obj2F4->unk_0E6].obj.pos.x; @@ -1748,7 +1748,7 @@ s32 func_80090CCC(Object_2F4* obj2F4) { (fabsf(obj2F4->obj.pos.x - obj2F4->unk_124.x) < 700.0f)) { obj2F4->unk_0B8 = 1; obj2F4->unk_068 = 0; - ret = 1; + ret = true; } if (obj2F4->timer_0BE == 0) { @@ -1760,7 +1760,7 @@ s32 func_80090CCC(Object_2F4* obj2F4) { obj2F4->unk_0B8 = 1; obj2F4->unk_0E6 = 0; obj2F4->unk_068 = 0; - ret = 1; + ret = true; } return ret; @@ -1809,7 +1809,7 @@ s32 func_80090E8C(Object_2F4* obj2F4) { return false; } -s32 func_800910C0(Object_2F4* obj2F4) { +bool func_800910C0(Object_2F4* obj2F4) { f32 var_fv1; if (obj2F4->timer_0BC == 0) { @@ -1849,7 +1849,7 @@ void func_80091254(Object_2F4* obj2F4) { } } -s32 func_80091298(Object_2F4* obj2F4) { +bool func_80091298(Object_2F4* obj2F4) { obj2F4->unk_118 = gPlayer[0].unk_0D0 + 10.0f; obj2F4->unk_120 = 3.6f; obj2F4->unk_124.x = gPlayer[0].pos.x + ((f32) (obj2F4->unk_0E4 - 2) * 700.0f); @@ -1864,7 +1864,7 @@ s32 func_80091298(Object_2F4* obj2F4) { return false; } -s32 func_80091368(Object_2F4* obj2F4) { +bool func_80091368(Object_2F4* obj2F4) { switch (obj2F4->unk_064) { case 0: obj2F4->unk_124.y = 20000.0f; @@ -1910,7 +1910,7 @@ s32 func_80091368(Object_2F4* obj2F4) { void func_800914FC(Object_2F4* obj2F4) { switch (obj2F4->unk_0B8) { case 0: - if (func_80090CCC(obj2F4) == 0) { + if (!func_80090CCC(obj2F4)) { break; } case 1: @@ -1945,7 +1945,7 @@ void func_800914FC(Object_2F4* obj2F4) { #pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_800915FC.s") -s32 func_80091864(Object_2F4* obj2F4) { +bool func_80091864(Object_2F4* obj2F4) { f32 sp44; f32 sp40; f32 sp3C; @@ -2004,7 +2004,7 @@ s32 func_80091864(Object_2F4* obj2F4) { return false; } -s32 func_80091B90(Object_2F4* obj2F4) { +bool func_80091B90(Object_2F4* obj2F4) { Vec3f vec; obj2F4->obj.rot.x = -obj2F4->unk_0F4.x; @@ -2032,7 +2032,7 @@ s32 func_80091B90(Object_2F4* obj2F4) { return false; } -s32 func_80091CF8(Object_2F4* obj2F4) { +bool func_80091CF8(Object_2F4* obj2F4) { if (obj2F4->unk_054 != 0) { if (obj2F4->unk_13C < 0.1f) { obj2F4->unk_13C = 20.0f; @@ -2051,7 +2051,7 @@ s32 func_80091CF8(Object_2F4* obj2F4) { return false; } -s32 func_80091DF4(Object_2F4* obj2F4) { +bool func_80091DF4(Object_2F4* obj2F4) { Vec3f sp44; Vec3f sp38; @@ -2068,7 +2068,7 @@ s32 func_80091DF4(Object_2F4* obj2F4) { return false; } -s32 func_80091F00(Object_2F4* obj2F4) { +bool func_80091F00(Object_2F4* obj2F4) { u8 temp_v0 = obj2F4->unk_0D0; Vec3f sp40; Vec3f sp34; diff --git a/src/overlays/ovl_DF4260/DF4260.c b/src/overlays/ovl_DF4260/DF4260.c index dc362957..72e0c2a2 100644 --- a/src/overlays/ovl_DF4260/DF4260.c +++ b/src/overlays/ovl_DF4260/DF4260.c @@ -80,11 +80,11 @@ f32 func_DF4260_80187A88(s32 arg0) { #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_DF4260/DF4260/func_DF4260_8018BBF8.s") -s32 func_DF4260_8018BC50(s32 arg0, s32* arg1, s32 arg2, s32 arg3, UnkStruct_func_DF4260_8018BC50* arg4) { +bool func_DF4260_8018BC50(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, UnkStruct_func_DF4260_8018BC50* arg4) { if ((arg4->unkB8 == 0x65) && (arg0 != 8)) { - *arg1 = 0; + *arg1 = NULL; } - return 0; + return false; } #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_DF4260/DF4260/func_DF4260_8018BC84.s") diff --git a/src/overlays/ovl_EBFBE0/fox_option.c b/src/overlays/ovl_EBFBE0/fox_option.c index f3a79b6a..dffb38e4 100644 --- a/src/overlays/ovl_EBFBE0/fox_option.c +++ b/src/overlays/ovl_EBFBE0/fox_option.c @@ -1162,7 +1162,7 @@ void func_EBFBE0_80193C4C(void) { case 1: // clang-format off - if (func_EBFBE0_8019C418(&D_EBFBE0_801B91A8, 2, 1, 0, 20, 5, 4, gMainController, &D_EBFBE0_801B9188) != 0) { Audio_PlaySfx(0x49000022, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); } + if (func_EBFBE0_8019C418(&D_EBFBE0_801B91A8, 2, 1, 0, 20, 5, 4, gMainController, &D_EBFBE0_801B9188)) { Audio_PlaySfx(0x49000022, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); } // clang-format on if (gControllerPress[gMainController].button & (A_BUTTON | START_BUTTON)) { @@ -1380,7 +1380,7 @@ void func_EBFBE0_80194AEC(void) { s32 sp3C = gSoundMode; s32 pad; - if (func_EBFBE0_8019C418(&sp3C, 2, 0, 0, 20, 5, 4, gMainController, &D_EBFBE0_801B9260) != 0) { + if (func_EBFBE0_8019C418(&sp3C, 2, 0, 0, 20, 5, 4, gMainController, &D_EBFBE0_801B9260)) { Audio_PlaySfx(0x49000002, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); gSoundMode = sp3C; if (gSoundMode >= 3) { @@ -2056,7 +2056,7 @@ void func_EBFBE0_80196FC4(void) { } void func_EBFBE0_80197074(void) { - if (func_EBFBE0_8019C418(&D_EBFBE0_801B93E4, 9, 1, 0, 20, 5, 4, gMainController, &D_EBFBE0_801B9400) != 0) { + if (func_EBFBE0_8019C418(&D_EBFBE0_801B93E4, 9, 1, 0, 20, 5, 4, gMainController, &D_EBFBE0_801B9400)) { Audio_PlaySfx(0x49000002, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); D_EBFBE0_801B91D4 = 114.0f - D_EBFBE0_801B93E4 * 130.0f; D_EBFBE0_801B91DC = 114.0f - D_EBFBE0_801B93E4 * 130.0f; @@ -3748,10 +3748,10 @@ s32 func_EBFBE0_8019C5A0(s32* arg0) { return ret; } -s32 func_EBFBE0_8019C66C(f32* arg0, f32 arg1, f32 arg2, UnkStruct_D_EBFBE0_801B9250* arg3) { +bool func_EBFBE0_8019C66C(f32* arg0, f32 arg1, f32 arg2, UnkStruct_D_EBFBE0_801B9250* arg3) { f32 var_fv1; f32 temp2; - s32 var_a2 = 0; + bool var_a2 = false; f32 temp = *arg0; s32 x = gControllerPress[gMainController].stick_x; s32 y = -gControllerPress[gMainController].stick_y; @@ -3807,7 +3807,7 @@ s32 func_EBFBE0_8019C66C(f32* arg0, f32 arg1, f32 arg2, UnkStruct_D_EBFBE0_801B9 if ((s32) temp2 != (s32) temp) { Audio_PlaySfx(0x49004007, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); - var_a2 = 1; + var_a2 = true; } return var_a2; @@ -3964,7 +3964,7 @@ void func_EBFBE0_8019CD54(void) { case 0: if (D_EBFBE0_801B9138 == 0) { if (func_EBFBE0_8019C418(&D_EBFBE0_801B90A0[D_EBFBE0_801B9098], 36, 0, 0, 50, 5, 10, gMainController, - &D_EBFBE0_801B9160[D_EBFBE0_801B9098]) != 0) { + &D_EBFBE0_801B9160[D_EBFBE0_801B9098])) { Audio_PlaySfx(0x49000002, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); D_EBFBE0_801B9150[D_EBFBE0_801B9098][0] = D_EBFBE0_801AEF5C[D_EBFBE0_801B90A0[D_EBFBE0_801B9098]]; D_EBFBE0_801B90D0[D_EBFBE0_801B9098] = 0.0f; diff --git a/src/overlays/ovl_EBFBE0/fox_title.c b/src/overlays/ovl_EBFBE0/fox_title.c index a6306762..2774e95e 100644 --- a/src/overlays/ovl_EBFBE0/fox_title.c +++ b/src/overlays/ovl_EBFBE0/fox_title.c @@ -2522,7 +2522,7 @@ void func_EBFBE0_8018EA78(s32 arg0) { Matrix_Pop(&gGfxMatrix); } -s32 func_EBFBE0_8018EDC8(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* arg4) { +bool func_EBFBE0_8018EDC8(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* arg4) { f32 x; f32 y; f32 z; @@ -2655,7 +2655,7 @@ s32 func_EBFBE0_8018EDC8(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* a break; } - return 0; + return false; } void func_EBFBE0_8018F438(void) { diff --git a/yamls/us/main.yaml b/yamls/us/main.yaml index 66d2c615..2f9bc73e 100644 --- a/yamls/us/main.yaml +++ b/yamls/us/main.yaml @@ -171,7 +171,7 @@ # Game engine - [0x2EFE0, c, fox_360] - - [0x36930, c, sf_beam] + - [0x36930, c, fox_beam] - [0x3E6F0, c, fox_bg] - [0x43AC0, c, fox_43AC0] - [0x43E80, c, sf_43E80] @@ -264,7 +264,7 @@ # DATA - game engine - [0xCA690, .data, fox_360] - - [0xCA7C0, data, sf_beam] + - [0xCA7C0, .data, fox_beam] - [0xCA830, .data, fox_bg] - [0xCAA90, .data, fox_43AC0] - [0xCAB00, .data, sf_43E80] @@ -289,7 +289,7 @@ # RODATA - game engine - [0xD5A10, .rodata, fox_360] - - [0xD5CF0, .rodata, sf_beam] + - [0xD5CF0, .rodata, fox_beam] - [0xD5F90, .rodata, fox_bg] - [0xD61D0, .rodata, fox_43AC0] - [0xD61F0, .rodata, sf_43E80] @@ -357,7 +357,7 @@ # Game engine bss - { start: 0xDE480, type: .bss, vram: 0x8015F900, name: fox_360 } - - { start: 0xDE480, type: bss, vram: 0x8015F950, name: sf_beam } + - { start: 0xDE480, type: .bss, vram: 0x8015F950, name: fox_beam } - { start: 0xDE480, type: .bss, vram: 0x8015F960, name: fox_bg } - { start: 0xDE480, type: .bss, vram: 0x801613A0, name: fox_43AC0 } - { start: 0xDE480, type: .bss, vram: 0x801613B0, name: fox_display }