fox_hud & fox_me Decompiled (#95)

* func_80092D48

* func_800927A0

* TempComp.bin.mio0 git ignored

* func_800924E0

* func_80094D20

* func_80096A74

* func_80095604

* all functions done

* symbols for segmented addresses

* move symbols to c file for now

* failed attempt to import data

* fix

* Import data

* move data below

* ready for BSS attempt

* fix warnings

* ordering

* symbols for some segmented addresses

* rename to fox_hud

* clear mess

* .

* .

* space

* .

* func_i2_80187530

* func_i2_8018756C

* func_i2_80187650

* func_i2_801877C4

* func_i2_8018795C

* func_i2_80187B08

* func_i2_80187C68

* bss again (#98)

* func_i2_80187D08

* func_i2_80187D98

* func_i2_80187FF8

* func_i2_801881A8

* func_i2_80188228

* func_i2_80188298

* ARRAY_COUNT

* func_i2_80188344

* func_i2_80188B84

* func_i2_80188C2C

* func_i2_80188E8C

* func_i2_80188F2C

* func_i2_80188CAC

* func_i2_80189114

* func_i2_8018B7C4

* func_i2_8018C77C

* func_i2_8018C8F4

* func_i2_8018CA10

* func_i2_8018CB50

* func_i2_8018BACC co-authored-by: @inspectredc

* func_i2_8018CCF8

* func_i2_8018CB50

* func_i2_8018CD8C co-authored-by: @inspectredc & @petrie911

* func_i2_8018D9EC

* func_i2_8018DA6C

* func_i2_8018DAEC

* func_i2_8018DB6C

* func_i2_8018DBEC

* func_i2_8018DCE4

* func_i2_8018DE14

* func_i2_8018DF08 co-authored-by @inspectredc & @petrie911

* func_i2_8018E084

* func_i2_8018ED9C

* func_i2_80188088

* func_i2_801892F0

* func_i2_8018978C co-authored-by @KiritoDv & inspectredc

* fox_me DATA IMPORTED

* resolve conflicts

* func_i6_80197B30

* func_i6_80197CC4

* func_i6_80197F84

* func_i6_80198244

* merge and solve bss

* func_i6_801983E4

* PR review

---------

Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com>
This commit is contained in:
Alejandro Asenjo Nitti 2024-01-21 13:27:47 -03:00 committed by GitHub
parent b8af624d0b
commit cc970381c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 4476 additions and 337 deletions

1
.gitignore vendored
View File

@ -17,3 +17,4 @@ tools/mio0
tools/ido-recomp tools/ido-recomp
.venv/ .venv/
m2cfiles/ m2cfiles/
TempComp.bin.mio0

View File

@ -39,6 +39,7 @@ void func_8001CA24(u8);
void func_8001CB80(u8, u8); void func_8001CB80(u8, u8);
void func_8001CCDC(u8, Vec3f *); void func_8001CCDC(u8, Vec3f *);
void func_8001CE28(u8, Vec3f *); void func_8001CE28(u8, Vec3f *);
void func_8001D034(Vec3f*, s32, u8);
void func_8001D10C(Vec3f*, u32); void func_8001D10C(Vec3f*, u32);
void func_8001D15C(u8); void func_8001D15C(u8);
void func_8001D1C8(u8, s32); void func_8001D1C8(u8, s32);
@ -302,6 +303,8 @@ void func_8006BB78(Actor*);
void func_8006C008(Actor*); void func_8006C008(Actor*);
void func_8006D350(Object_80*); void func_8006D350(Object_80*);
void func_8006EEFC(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32); void func_8006EEFC(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32);
void func_8006EFA0(s32 unk0E4, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6, f32 xRot, f32 yRot,
f32 zRot);
void func_8006F0D8(f32 xPos, f32 yPos, f32 zPos, f32 arg3); void func_8006F0D8(f32 xPos, f32 yPos, f32 zPos, f32 arg3);
void func_80072594(Actor*); void func_80072594(Actor*);
s32 func_80074F90(Object_80*); s32 func_80074F90(Object_80*);
@ -492,6 +495,9 @@ void func_80092D48(Actor *);
void func_80092EC0(Actor* actor); void func_80092EC0(Actor* actor);
void func_80093164(Actor*); void func_80093164(Actor*);
void func_800935E8(Player*); void func_800935E8(Player*);
void func_800953A0(Actor*, s32);
void func_8009546C(Actor*, s32);
void func_80095538(Actor*, s32);
void func_80095604(Player*); void func_80095604(Player*);
void func_80094954(Effect*); void func_80094954(Effect*);
void func_80094BBC(Effect*); void func_80094BBC(Effect*);

View File

@ -3,14 +3,18 @@
#include "global.h" #include "global.h"
typedef struct UnkStruct_func_80095350 { typedef struct {
/* 0x00 */ s8 unk0; /* 0x00 */ u8* unk_00;
/* 0x01 */ char pad_1[0x1]; /* 0x04 */ s32 width;
/* 0x02 */ s16 unk2; /* 0x08 */ s32 height;
/* 0x04 */ char pad_4[0xB2]; /* 0x0C */ u8* unk_0C;
/* 0xB6 */ s16 unkB6; /* 0x10 */ s32 unk_10;
} UnkStruct_func_80095350; /* 0x14 */ s32 unk_14;
} UnkStruct_D_800D1AEC;
void func_80084930(f32, f32, s32);
void func_80086444(void);
void func_80087788(void);
void func_80084E78(Gfx** gfxP, void* arg1, void* arg2, u32 arg3, u32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, void func_80084E78(Gfx** gfxP, void* arg1, void* arg2, u32 arg3, u32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8,
f32 arg9, f32 argA); f32 arg9, f32 argA);
void func_80085944(void); void func_80085944(void);
@ -36,44 +40,4 @@ void func_8008E5E8(void);
s32 func_80090E8C(Actor*); s32 func_80090E8C(Actor*);
s32 func_800910C0(Actor*); s32 func_800910C0(Actor*);
// Weird addresses, assets maybe?
extern u16 D_1000E80[];
extern u16 D_1002280[];
extern u16 D_10030D0[];
extern s32 D_1011280[];
extern s32 D_10116A0[];
extern s32 D_10116B0[];
extern s32 D_1011730[];
extern s32 D_1011AC0[];
extern s32 D_1011B90[];
extern s32 D_1011BB0[];
extern s32 D_1011C80[];
extern s32 D_1011CA0[];
extern s32 D_1011D70[];
extern s32 D_1011D90[];
extern s32 D_1011E60[];
extern s32 D_1013580[];
extern s32 D_1013700[];
extern Gfx D_20031B0[];
extern Gfx D_2010A30[];
extern u16 D_3000B20[];
extern u8 D_30013E0[];
extern s32 D_80161690;
extern s32 D_80161718;
extern s32 D_8016171C;
extern s32 D_801617E8[];
extern s32 D_801617FC;
extern s32 gHitCount;
extern s32 D_80177838;
extern s32 D_80177854;
extern s32 gTeamShields[];
extern s32 D_801778BC;
extern s32 gVersusMode;
extern s32 D_80177B50[];
extern s32 D_80177B70[];
extern s32 D_80177E7C;
extern LevelId gCurrentLevel;
extern s32 D_80178750;
#endif #endif

View File

@ -10,6 +10,8 @@
// extern f32 D_i3_801C4188; Currently externed in relevant files for bss ordering // extern f32 D_i3_801C4188; Currently externed in relevant files for bss ordering
void func_i3_801BE034(Actor*, Player*);
void func_i3_8018DA58(Actor*); void func_i3_8018DA58(Actor*);
void func_i3_8019E5F0(Actor*); void func_i3_8019E5F0(Actor*);
void func_i3_801A8BE8(Actor*); void func_i3_801A8BE8(Actor*);
@ -94,7 +96,6 @@ void func_i3_801AACF8(Player*);
void func_i3_801ABA40(PlayerShot*); void func_i3_801ABA40(PlayerShot*);
void func_i3_801AC274(Player*); void func_i3_801AC274(Player*);
void func_i3_801AC8A8(f32, f32, f32, f32, s32); void func_i3_801AC8A8(f32, f32, f32, f32, s32);
void func_i3_801AC8A8(f32, f32, f32, f32, s32);
void func_i3_801AC918(Effect*); void func_i3_801AC918(Effect*);
void func_i3_801ACBB4(void); void func_i3_801ACBB4(void);
void func_i3_801ACE50(Player*); void func_i3_801ACE50(Player*);
@ -140,6 +141,7 @@ void func_i3_801BC9A0(Actor*);
void func_i3_801BD264(Actor*); void func_i3_801BD264(Actor*);
void func_i3_801BD54C(Actor*); void func_i3_801BD54C(Actor*);
void func_i3_801BDE6C(Actor*); void func_i3_801BDE6C(Actor*);
void func_i3_801BDF14(void);
void func_i3_801BE1FC(Object_80*); void func_i3_801BE1FC(Object_80*);
void func_i3_801BE3F8(Actor*); void func_i3_801BE3F8(Actor*);
void func_i3_801BEB1C(Actor*); void func_i3_801BEB1C(Actor*);

View File

@ -1,7 +1,7 @@
#ifndef SF64_MATH_H #ifndef SF64_MATH_H
#define SF64_MATH_H #define SF64_MATH_H
#include "PR/ultratypes.h" #include "libultra/ultra64.h"
typedef struct { typedef struct {
/* 0x0 */ f32 x; /* 0x0 */ f32 x;

View File

@ -206,7 +206,9 @@ typedef struct {
/* 0x01C */ ObjectInfo info; /* 0x01C */ ObjectInfo info;
/* 0x040 */ s32 index; /* 0x040 */ s32 index;
/* 0x044 */ s16 unk_044; /* 0x044 */ s16 unk_044;
/* 0x046 */ char unk_46[6]; /* 0x046 */ s16 unk_046;
/* 0x048 */ s16 unk_048;
/* 0x04A */ s16 unk_04A;
/* 0x04C */ s16 unk_04C; /* 0x04C */ s16 unk_04C;
/* 0x04E */ s16 actionState; /* 0x04E */ s16 actionState;
/* 0x050 */ s16 timer_050; /* 0x050 */ s16 timer_050;

View File

@ -212,7 +212,7 @@ typedef struct Player {
/* 0x1CC */ PlayerForm form; /* 0x1CC */ PlayerForm form;
/* 0x1D0 */ s32 unk_1D0; /* 0x1D0 */ s32 unk_1D0;
/* 0x1D4 */ s32 unk_1D4; /* 0x1D4 */ s32 unk_1D4;
/* 0x1D8 */ char pad1D8[4]; /* 0x1D8 */ s32 unk_1D8;
/* 0x1DC */ s32 unk_1DC; /* 0x1DC */ s32 unk_1DC;
/* 0x1E0 */ s32 timer_1E0; /* 0x1E0 */ s32 timer_1E0;
/* 0x1E4 */ s32 timer_1E4; /* 0x1E4 */ s32 timer_1E4;
@ -224,7 +224,7 @@ typedef struct Player {
/* 0x1FC */ s32 timer_1FC; /* 0x1FC */ s32 timer_1FC;
/* 0x200 */ s32 unk_200; /* 0x200 */ s32 unk_200;
/* 0x204 */ s32 unk_204; /* 0x204 */ s32 unk_204;
/* 0x208 */ char pad208[4]; /* 0x208 */ s32 unk_208;
/* 0x20C */ s32 unk_20C; /* 0x20C */ s32 unk_20C;
/* 0x210 */ s32 timer_210; /* 0x210 */ s32 timer_210;
/* 0x214 */ s32 timer_214; /* 0x214 */ s32 timer_214;

View File

@ -209,7 +209,7 @@ extern f32 D_800CFFC4[];
// fox_effect // fox_effect
// sf_hud // fox_hud
extern s16 D_800D1970; extern s16 D_800D1970;
extern f32 D_800D19AC[]; extern f32 D_800D19AC[];
extern f32 D_800D19E0[]; extern f32 D_800D19E0[];
@ -308,38 +308,15 @@ extern u8 D_80161684;
// fox_6B3B0 // fox_6B3B0
extern s32 D_80161690; extern s32 D_80161690;
// sf_hud? // fox_hud
extern f32 D_801616A0;
extern f32 D_801616BC;
extern f32 D_801616C0;
extern f32 D_801616C4;
extern f32 D_801616C8;
extern s32 D_80161704; extern s32 D_80161704;
extern s32 D_80161708; extern s32 D_80161708;
extern s32 D_8016170C; extern s32 D_8016170C;
extern s32 gTotalHits; // gTotalGameScore extern s32 gTotalHits; // 0x80161714 gTotalGameScore
extern f32 D_80161720; extern f32 D_80161720[3];
extern f32 D_80161724;
extern f32 D_80161728;
extern s32 D_8016172C; extern s32 D_8016172C;
extern s32 D_80161730; extern s32 D_80161730;
extern s32 gShowBossHealth; extern s32 gShowBossHealth; // 0x80161734
extern s32 D_80161788;
extern s32 D_8016178C;
extern s32 D_80161790;
extern s32 D_80161794;
extern s32 D_80161798;
extern f32 D_8016179C;
extern f32 D_801617A0;
extern f32 D_801617A4;
extern f32 D_801617A8;
extern f32 D_801617AC;
extern s32 D_801617B0;
extern s32 gMedalStatus;
extern s32 gMedalFlashTimer;
extern s32 D_80161810[];
extern s32 D_80161900[];
extern s32 D_80161910[0x10]; // could be in fox_97F80
// fox_game // fox_game
extern f32 D_80161A10; extern f32 D_80161A10;

View File

@ -360,11 +360,13 @@ func_800A3608 = 0x800A3608;
// sf_hud // sf_hud
D_801616A0 = 0x801616A0; //type:s32 size:0xC
D_801616B0 = 0x801616B0; //type:s32 size:0xC
gTotalHits = 0x80161714; gTotalHits = 0x80161714;
gShowBossHealth = 0x80161734; gShowBossHealth = 0x80161734;
gMedalStatus = 0x801617B4; gMedalStatus = 0x801617B4;
gMedalFlashTimer = 0x801617B8; gMedalFlashTimer = 0x801617B8;
D_800D1AEC = 0x800D1AEC; //type:s32 size:0x1B0
// fox_play // fox_play
D_80161A50 = 0x80161A50; D_80161A50 = 0x80161A50;

View File

@ -353,6 +353,9 @@ D_5000300 = 0x05000300;
D_5000380 = 0x05000380; D_5000380 = 0x05000380;
D_5000400 = 0x05000400; D_5000400 = 0x05000400;
D_5000480 = 0x05000480; D_5000480 = 0x05000480;
D_500A5F0 = 0x0500A5F0;
D_500A6E0 = 0x0500A6E0;
D_500A7D0 = 0x0500A7D0;
D_6000E00 = 0x06000E00; D_6000E00 = 0x06000E00;
D_6001360 = 0x06001360; D_6001360 = 0x06001360;
@ -772,6 +775,32 @@ D_D000000 = 0x0D000000;
D_D00B5C0 = 0x0D00B5C0; D_D00B5C0 = 0x0D00B5C0;
D_D00B720 = 0x0D00B720; D_D00B720 = 0x0D00B720;
// fox_title, to be ordered later
D_602F8E0 = 0x0602F8E0;
D_60305C0 = 0x060305C0;
D_6031DB8 = 0x06031DB8;
D_6031120 = 0x06031120;
D_6035024 = 0x06035024;
D_60338DC = 0x060338DC;
D_603531C = 0x0603531C;
D_6036278 = 0x06036278;
D_602FBAC = 0x0602FBAC;
D_603088C = 0x0603088C;
D_6032084 = 0x06032084;
D_60313AC = 0x060313AC;
D_602F8E0 = 0x0602F8E0;
D_60305C0 = 0x060305C0;
D_6031DB8 = 0x06031DB8;
D_6031120 = 0x06031120;
D_60338DC = 0x060338DC;
D_6035024 = 0x06035024;
D_603531C = 0x0603531C;
D_6036278 = 0x06036278;
D_6036290 = 0x06036290;
D_6036B30 = 0x06036B30;
// fox_map, to be ordered later // fox_map, to be ordered later
D_6001C80 = 0x06001C80; D_6001C80 = 0x06001C80;
D_6002160 = 0x06002160; D_6002160 = 0x06002160;
@ -832,6 +861,24 @@ D_9005380 = 0x09005380;
D_90075A0 = 0x090075A0; D_90075A0 = 0x090075A0;
D_9004230 = 0x09004230; D_9004230 = 0x09004230;
// fox_hud, to be ordered later
D_101C170 = 0x0101C170;
D_101C000 = 0x0101C000;
D_101BE90 = 0x0101BE90;
D_101BD20 = 0x0101BD20;
D_101BBB0 = 0x0101BBB0;
D_101BA40 = 0x0101BA40;
D_101B8D0 = 0x0101B8D0;
D_101B760 = 0x0101B760;
D_101B5F0 = 0x0101B5F0;
D_101B480 = 0x0101B480;
D_101B310 = 0x0101B310;
D_101B1A0 = 0x0101B1A0;
D_3000000 = 0x03000000;
D_3000080 = 0x03000080;
D_6001B80 = 0x06001B80;
D_60020D0 = 0x060020D0;
D_C001880 = 0x0C001880; D_C001880 = 0x0C001880;
D_C037FCC = 0x0C037FCC; D_C037FCC = 0x0C037FCC;
D_C0380C0 = 0x0C0380C0; D_C0380C0 = 0x0C0380C0;

View File

@ -1,4 +1,5 @@
#include "global.h" #include "global.h"
#include "prevent_bss_reordering.h"
f32 __dx1; f32 __dx1;
f32 __dx2; f32 __dx2;

File diff suppressed because it is too large Load Diff

View File

@ -4123,9 +4123,9 @@ void func_800B0F50(Player* playerx) {
} }
gHitCount = gSavedHitCount = D_80177CA4; gHitCount = gSavedHitCount = D_80177CA4;
} }
D_80161720 = 0.0f; D_80161720[0] = 0.0f;
D_80161724 = 0.0f; D_80161720[1] = 0.0f;
D_80161728 = 0.0f; D_80161720[2] = 0.0f;
D_8016172C = gHitCount; D_8016172C = gHitCount;
D_80161730 = 0; D_80161730 = 0;
D_80161684 = D_80161A50; D_80161684 = D_80161A50;
@ -4328,9 +4328,9 @@ void func_800B0F50(Player* playerx) {
gBombCount[gPlayerNum] = 3; gBombCount[gPlayerNum] = 3;
D_80177B8C = 1; D_80177B8C = 1;
if (gCamCount == (gPlayerNum + 1)) { if (gCamCount == (gPlayerNum + 1)) {
D_80161720 = 0.0f; D_80161720[0] = 0.0f;
D_80161724 = 0.0f; D_80161720[1] = 0.0f;
D_80161728 = 0.0f; D_80161720[2] = 0.0f;
D_8016172C = 0; D_8016172C = 0;
gHitCount = 0; gHitCount = 0;
D_80177824 = 0; D_80177824 = 0;

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
#include "global.h" #include "global.h"
#include "prevent_bss_reordering.h"
typedef void (*BossSOfunc)(Boss*); typedef void (*BossSOfunc)(Boss*);

View File

@ -1,4 +1,4 @@
#include "common.h" #include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i4/fox_ka/func_i4_801927E0.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i4/fox_ka/func_i4_801927E0.s")

View File

@ -1,22 +1,331 @@
#include "common.h" #include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197B30.s") extern Gfx D_6014A40[];
extern u16* D_60342A0[];
extern u16* D_6034304[];
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197C64.s") void func_i6_80197F18(Boss*);
void func_i6_80198244(Boss*);
void func_i6_80198ABC(Boss*);
void func_i6_80199D64(Boss*);
void func_i6_8019AA08(Boss*);
void func_i6_8019AEC0(Boss*);
s32 func_i6_8019B528(Boss*);
s32 func_i6_8019B5CC(Boss*);
void func_i6_8019B6E8(Boss*);
void func_i6_8019BC14(Boss*);
void func_i6_8019C194(Boss*, f32, f32);
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197CB8.s") void func_i6_80197B30(Actor* actor, s32 timer) {
Actor_Initialize(actor);
actor->obj.status = 2;
actor->obj.id = 0xC3;
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197CC4.s") actor->obj.pos.x = gPlayer->pos.x;
actor->obj.pos.y = gPlayer->pos.y;
actor->obj.pos.z = gPlayer->pos.z;
actor->fwork[0] = gPlayer->unk_0D0;
actor->vel.x = gPlayer->vel.x;
actor->vel.y = gPlayer->vel.y;
actor->vel.z = gPlayer->vel.z;
actor->obj.rot.x = gPlayer->unk_4D8 + (gPlayer->unk_120 + gPlayer->unk_0E4);
actor->obj.rot.y = gPlayer->unk_0E8 + gPlayer->unk_114 + 180.0f;
actor->obj.rot.z = gPlayer->unk_0EC;
actor->unk_0B8 = 5;
actor->timer_04C = timer;
actor->iwork[11] = 1;
Object_SetInfo(&actor->info, actor->obj.id);
Audio_PlaySfx(0x3100000CU, &actor->sfxPos, 4U, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
}
void func_i6_80197C64(Effect* effect) {
RCP_SetupDL_21();
gSPDisplayList(gMasterDisp++, D_6014A40);
RCP_SetupDL(&gMasterDisp, 0x40);
}
void func_i6_80197CB8(Object_80* obj80) {
}
void func_i6_80197CC4(Boss* boss) {
boss->fwork[9] = 0.0f;
boss->swork[33] = 5500;
boss->timer_050 = 10;
boss->timer_058 = 0;
D_80177A10[8] = 0;
if (boss->index == 0) {
boss->info.hitbox = SEGMENTED_TO_VIRTUAL(D_60342A0);
boss->health = 150;
boss->swork[28] = 5;
boss->fwork[43] = 3.5f;
boss->fwork[45] = 40.0f;
if (gPlayer->state_1C8 == PLAYERSTATE_1C8_9) {
boss->obj.pos.z = -28900.0f;
gObjects58->obj.pos.z = -30000.0f;
}
boss->unk_078.y = 0.0f;
func_i6_8019AEC0(boss);
} else {
boss->fwork[34] = 2.8f;
boss->info.hitbox = SEGMENTED_TO_VIRTUAL(D_6034304);
boss->health = 100;
boss->swork[28] = 0;
boss->swork[25] = 1;
boss->fwork[45] = 35.0f;
if (boss->index == 1) {
boss->unk_078.y = 15.0f;
} else {
boss->unk_078.y = 345.0f;
}
boss->vel.x = __sinf(boss->unk_078.y * M_DTOR);
boss->vel.x = (boss->fwork[45] * boss->vel.x) * 0.2f;
boss->vel.z = __cosf(boss->unk_078.y * M_DTOR);
boss->vel.z = (boss->fwork[45] * boss->vel.z) * 0.2f;
func_i6_80198244(boss);
boss->timer_056 = 0xFA;
}
if (gLevelMode == LEVELMODE_ON_RAILS) {
if (gPlayer->state_1C8 == PLAYERSTATE_1C8_3) {
gPlayer->state_1C8 = PLAYERSTATE_1C8_9;
gPlayer->unk_1D0 = 0;
func_800182F4(0x103200FF);
func_800182F4(0x113200FF);
}
Object_Kill(&boss->obj, &boss->sfxPos);
}
}
// figure out arg0 type
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197F18.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197F18.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80197F84.s") void func_i6_80197F84(Boss* boss) {
f32 var_fv1;
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80198238.s") Math_SmoothStepToF(&boss->obj.pos.y, 0.0f, 0.5f, 15.0f, 0.1f);
Math_SmoothStepToF(&boss->vel.y, 0.0f, 0.1f, 0.2f, 0.1f);
Math_SmoothStepToF(&boss->vel.z, 0.0f, 0.1f, 0.2f, 0.1f);
Math_SmoothStepToF(&boss->vel.x, 0.0f, 0.1f, 0.2f, 0.1f);
Math_SmoothStepToAngle(&boss->unk_078.x, 0.0f, 0.1f, 4.0f, 0.1f);
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80198244.s") if (func_i6_8019B5CC(boss) != 0) {
Math_SmoothStepToF(&boss->obj.pos.y, 1000.0f, 0.1f, 30.0f, 0.1f);
} else {
Math_SmoothStepToF(&boss->obj.pos.y, 0.0f, 0.1f, 10.0f, 0.1f);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_801983E4.s") func_i6_8019B6E8(boss);
if (boss->timer_052 == 0) {
func_i6_8019BC14(boss);
}
Math_SmoothStepToAngle(
&boss->unk_078.y,
Math_RadToDeg(Math_Atan2F(boss->fwork[18] - boss->obj.pos.x, boss->fwork[20] - boss->obj.pos.z)), 0.1f, 8.0f,
0.1f);
if (boss->timer_050 == 0) {
func_i6_80198244(boss);
}
if (boss->swork[22] == 1) {
if (boss->vel.x >= 0) {
var_fv1 = boss->vel.x;
} else {
var_fv1 = -boss->vel.x;
}
if (var_fv1 <= 1.0f) {
if (boss->vel.z >= 0) {
var_fv1 = boss->vel.z;
} else {
var_fv1 = -boss->vel.z;
}
if (((var_fv1 <= 1.0f) && (fabsf(boss->fwork[18] - boss->obj.pos.x) <= 400.0f)) &&
(fabsf(boss->fwork[20] - boss->obj.pos.z) <= 1400.0f)) {
if ((Rand_ZeroOne() < 0.2f) && (boss->unk_078.x == 0.0f)) {
func_i6_8019AA08(boss);
}
if (Rand_ZeroOne() < 0.2f) {
func_i6_80198244(boss);
}
}
}
}
if (func_i6_8019B528(boss) != 0) {
func_i6_80198ABC(boss);
}
}
void func_i6_80198238(s32 arg0) {
}
void func_i6_80198244(Boss* boss) {
f32 var_fv0;
boss->swork[20] = 3;
boss->swork[21] = 1;
boss->timer_056 = (Rand_ZeroOne() * 500.0f) + 100.0f;
boss->fwork[11] = __sinf(boss->unk_078.y * M_DTOR) * boss->fwork[0x2D];
boss->fwork[13] = __cosf(boss->unk_078.y * M_DTOR) * boss->fwork[0x2D];
if (boss->vel.x >= 0) {
var_fv0 = boss->vel.x;
} else {
var_fv0 = -boss->vel.x;
}
if (var_fv0 < 5.0f) {
Math_SmoothStepToF(&boss->vel.x, boss->fwork[11], 0.1f, 5.0f, 0.1f);
}
if (boss->vel.z >= 0) {
var_fv0 = boss->vel.z;
} else {
var_fv0 = -boss->vel.z;
}
if (var_fv0 < 5.0f) {
Math_SmoothStepToF(&boss->vel.z, boss->fwork[13], 0.1f, 5.0f, 0.1f);
}
boss->fwork[10] = 181.0f;
boss->fwork[34] = 2.8f;
Audio_PlaySfx(0x2902306CU, &boss->sfxPos, 4U, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
}
void func_i6_801983E4(Boss* boss) {
f32 var_fv1;
f32 sp38;
f32 sp34;
func_i6_8019B6E8(boss);
if (boss->timer_052 == 0) {
func_i6_8019BC14(boss);
}
Math_SmoothStepToAngle(&boss->unk_078.z, 0.0f, 0.1f, 2.0f, 0.1f);
Math_SmoothStepToAngle(&boss->unk_078.x, 0.0f, 0.1f, 2.0f, 0.1f);
Math_SmoothStepToF(&boss->vel.x, boss->fwork[11], 0.1f, 0.5f, 0.1f);
Math_SmoothStepToF(&boss->vel.z, boss->fwork[13], 0.1f, 0.5f, 0.1f);
Math_SmoothStepToF(&boss->vel.y, 0.0f, 0.1f, 0.2f, 0.1f);
if (boss->obj.pos.x <= boss->fwork[18]) {
sp38 = boss->fwork[18] - boss->obj.pos.x;
} else {
sp38 = -(boss->fwork[18] - boss->obj.pos.x);
}
if (boss->obj.pos.z <= boss->fwork[20]) {
sp34 = boss->fwork[20] - boss->obj.pos.z;
} else {
sp34 = -(boss->fwork[20] - boss->obj.pos.z);
}
if (boss->unk_078.x != 0.0f) {
Math_SmoothStepToAngle(&boss->unk_078.x, boss->fwork[10], 0.1f, 6.0f, 0.1f);
if (boss->unk_078.x < 200.0f) {
boss->swork[21] = 1;
boss->unk_078.y -= 180.0f;
boss->unk_078.z -= 180.0f;
boss->fwork[10] = 0.0f;
boss->unk_078.x = 0.0f;
if (boss->unk_078.y < 0.0f) {
boss->unk_078.y = boss->unk_078.y + 360.0f;
}
if (boss->unk_078.z < 0.0f) {
boss->unk_078.z = boss->unk_078.z + 360.0f;
}
boss->fwork[11] = __sinf(boss->unk_078.y * M_DTOR) * boss->fwork[45];
boss->fwork[13] = __cosf(boss->unk_078.y * M_DTOR) * boss->fwork[45];
boss->fwork[34] = 2.8f;
}
}
func_i6_8019C194(boss, sp34, sp38);
if (boss->swork[0x16] == 1) {
var_fv1 = gPlayer->unk_114 - 180.0f;
if (var_fv1 < 0.0f) {
var_fv1 += 360.0f;
}
var_fv1 = boss->unk_078.y - var_fv1;
if (var_fv1 < 0.0f) {
var_fv1 += 360.0f;
}
if ((sp34 <= 1300.0f) && (sp38 <= 800.0f) && (var_fv1 < 260.0f) && (var_fv1 > 100.0f) &&
(boss->unk_078.x == 0.0f) && (boss->fwork[34] <= 2.0f)) {
if (Rand_ZeroOne() < 0.2f) {
func_i6_8019AA08(boss);
}
}
if ((sp34 < 3400.0f) || (sp38 < 2400.0f)) {
if (((var_fv1 >= 60.0f) && (var_fv1 <= 100.0f)) || ((var_fv1 <= 300.0f) && (var_fv1 >= 260.0f))) {
if (Rand_ZeroOne() < 0.3f) {
if (Rand_ZeroOne() < 0.4f) {
func_i6_80197F18(boss);
} else {
func_i6_80199D64(boss);
}
}
}
if (((var_fv1 > 300.0f) || (var_fv1 < 60.0f)) && (boss->unk_078.x == 0.0f)) {
if (Rand_ZeroOne() < 0.3f) {
if (Rand_ZeroOne() < 0.4f) {
func_i6_80197F18(boss);
} else {
func_i6_80199D64(boss);
}
} else if (gPlayer->state_1C8 != PLAYERSTATE_1C8_5) {
Math_SmoothStepToAngle(&boss->unk_078.x, 181.0f, 0.1f, 6.0f, 0.1f);
boss->swork[21] = 3;
boss->fwork[11] = __sinf(boss->unk_078.y * M_DTOR) * (boss->fwork[45] + 10.0f);
boss->fwork[13] = __cosf(boss->unk_078.y * M_DTOR) * (boss->fwork[45] + 10.0f);
boss->fwork[34] = 2.8f;
}
}
}
}
if (func_i6_8019B5CC(boss) != 0) {
Math_SmoothStepToF(&boss->obj.pos.y, 1000.0f, 0.1f, 30.0f, 0.1f);
} else {
Math_SmoothStepToF(&boss->obj.pos.y, 0.0f, 0.1f, 5.0f, 0.1f);
}
if (boss->timer_056 == 0) {
if (Rand_ZeroOne() <= 0.7f) {
func_i6_80199D64(boss);
} else {
func_i6_80197F18(boss);
}
}
if (func_i6_8019B528(boss) != 0) {
func_i6_80198ABC(boss);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80198ABC.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/fox_sy/func_i6_80198ABC.s")

View File

@ -11,15 +11,18 @@ extern AnimationHeader D_602F8E0;
extern AnimationHeader D_60305C0; extern AnimationHeader D_60305C0;
extern AnimationHeader D_6031DB8; extern AnimationHeader D_6031DB8;
extern AnimationHeader D_6031120; extern AnimationHeader D_6031120;
extern AnimationHeader D_60338DC;
extern AnimationHeader D_6035024; extern AnimationHeader D_6035024;
extern AnimationHeader D_60338DC;
extern AnimationHeader D_603531C; extern AnimationHeader D_603531C;
extern AnimationHeader D_6036278; extern AnimationHeader D_6036278;
extern SkelAnime D_602FBAC[]; extern SkelAnime D_602FBAC[];
extern SkelAnime D_603088C[]; extern SkelAnime D_603088C[];
extern SkelAnime D_60313AC[];
extern SkelAnime D_6032084[]; extern SkelAnime D_6032084[];
extern SkelAnime D_60313AC[];
extern Gfx D_6036290[];
extern Gfx D_6036B30[];
f32 D_menu_801B7BB0; f32 D_menu_801B7BB0;
f32 D_menu_801B7BB4; f32 D_menu_801B7BB4;
@ -157,14 +160,14 @@ f32 D_menu_801B9084;
//! TODO: Symbols for segmented addresses //! TODO: Symbols for segmented addresses
Animation D_menu_801ADA00[4] = { Animation D_menu_801ADA00[4] = {
{ (AnimationHeader*) 0x0602F8E0, (AnimationHeader*) 0x06035024, (SkelAnime*) 0x0602FBAC }, { &D_602F8E0, &D_6035024, D_602FBAC },
{ (AnimationHeader*) 0x060305C0, (AnimationHeader*) 0x060338DC, (SkelAnime*) 0x0603088C }, { &D_60305C0, &D_60338DC, D_603088C },
{ (AnimationHeader*) 0x06031DB8, (AnimationHeader*) 0x0603531C, (SkelAnime*) 0x06032084 }, { &D_6031DB8, &D_603531C, D_6032084 },
{ (AnimationHeader*) 0x06031120, (AnimationHeader*) 0x06036278, (SkelAnime*) 0x060313AC }, { &D_6031120, &D_6036278, D_60313AC },
}; };
u16* D_menu_801ADA30[5] = { u16* D_menu_801ADA30[5] = {
(u16*) 0x8017A150, (u16*) 0x8017A190, (u16*) 0x8017A1CC, (u16*) 0x8017A210, (u16*) 0x8017A260, gMsg_ID_10, gMsg_ID_20, gMsg_ID_30, gMsg_ID_40, gMsg_ID_50,
}; };
void func_menu_801875E0(void) { void func_menu_801875E0(void) {
@ -2953,8 +2956,8 @@ void func_menu_8018FD08(void) {
} }
static Gfx* D_menu_801AE48C[12] = { static Gfx* D_menu_801AE48C[12] = {
(Gfx*) 0x06036290, (Gfx*) 0x06036290, (Gfx*) 0x06036290, (Gfx*) 0x06036290, (Gfx*) 0x06036B30, (Gfx*) 0x06036290, D_6036290, D_6036290, D_6036290, D_6036290, D_6036B30, D_6036290,
(Gfx*) 0x06036290, (Gfx*) 0x06036290, (Gfx*) 0x06036290, (Gfx*) 0x06036290, (Gfx*) 0x06036B30, (Gfx*) 0x06036290, D_6036290, D_6036290, D_6036290, D_6036290, D_6036B30, D_6036290,
}; };
static f32 D_menu_801AE4BC[12] = { static f32 D_menu_801AE4BC[12] = {

View File

@ -185,7 +185,7 @@
- [0x77E40, c, fox_effect] - [0x77E40, c, fox_effect]
- [0x84F70, c, fox_fade] - [0x84F70, c, fox_fade]
- [0x852F0, c, fox_852F0] - [0x852F0, c, fox_852F0]
- [0x85530, c, sf_hud] - [0x85530, c, fox_hud]
- [0x97F80, c, fox_97F80] - [0x97F80, c, fox_97F80]
- [0x9A580, c, fox_std_lib] - [0x9A580, c, fox_std_lib]
- [0xA24B0, c, fox_game] - [0xA24B0, c, fox_game]
@ -276,7 +276,7 @@
- [0xD09A0, .data, fox_enmy] - [0xD09A0, .data, fox_enmy]
- [0xD0B80, .data, fox_enmy2] - [0xD0B80, .data, fox_enmy2]
- [0xD20E0, .data, fox_effect] - [0xD20E0, .data, fox_effect]
- [0xD2570, data, sf_hud] - [0xD2570, .data, fox_hud]
- [0xD31D0, .data, fox_std_lib] - [0xD31D0, .data, fox_std_lib]
- [0xD3460, .data, fox_game] - [0xD3460, .data, fox_game]
- [0xD3520, .data, fox_A4290] - [0xD3520, .data, fox_A4290]
@ -301,7 +301,7 @@
- [0xD7650, .rodata, fox_enmy2] - [0xD7650, .rodata, fox_enmy2]
- [0xD7E30, .rodata, fox_effect] - [0xD7E30, .rodata, fox_effect]
- [0xD82F0, .rodata, fox_fade] - [0xD82F0, .rodata, fox_fade]
- [0xD8320, .rodata, sf_hud] - [0xD8320, .rodata, fox_hud]
- [0xD8DE0, .rodata, fox_97F80] - [0xD8DE0, .rodata, fox_97F80]
- [0xD8DF0, .rodata, fox_std_lib] - [0xD8DF0, .rodata, fox_std_lib]
- [0xD8E50, .rodata, fox_game] - [0xD8E50, .rodata, fox_game]
@ -364,7 +364,7 @@
- { start: 0xDE480, type: .bss, vram: 0x801615D0, name: fox_edisplay } - { start: 0xDE480, type: .bss, vram: 0x801615D0, name: fox_edisplay }
- { start: 0xDE480, type: .bss, vram: 0x80161670, name: fox_enmy } - { start: 0xDE480, type: .bss, vram: 0x80161670, name: fox_enmy }
- { start: 0xDE480, type: .bss, vram: 0x80161690, name: fox_enmy2 } - { start: 0xDE480, type: .bss, vram: 0x80161690, name: fox_enmy2 }
- { start: 0xDE480, type: bss, vram: 0x801616A0, name: sf_hud } - { start: 0xDE480, type: .bss, vram: 0x801616A0, name: fox_hud }
- { start: 0xDE480, type: .bss, vram: 0x80161950, name: fox_97F80 } - { start: 0xDE480, type: .bss, vram: 0x80161950, name: fox_97F80 }
- { start: 0xDE480, type: .bss, vram: 0x801619A0, name: fox_std_lib } - { start: 0xDE480, type: .bss, vram: 0x801619A0, name: fox_std_lib }
- { start: 0xDE480, type: .bss, vram: 0x80161A10, name: fox_game } - { start: 0xDE480, type: .bss, vram: 0x80161A10, name: fox_game }

View File

@ -37,7 +37,7 @@
- [0xE08410, c, fox_me] - [0xE08410, c, fox_me]
- [0xE0FF10, c, fox_sx] - [0xE0FF10, c, fox_sx]
- [0xE16300, .data, fox_i2] - [0xE16300, .data, fox_i2]
- [0xE16310, data, fox_me] - [0xE16310, .data, fox_me]
- [0xE16520, .data, fox_sx] - [0xE16520, .data, fox_sx]
- [0xE16670, .rodata, fox_me] - [0xE16670, .rodata, fox_me]
- [0xE16930, .rodata, fox_sx] - [0xE16930, .rodata, fox_sx]