mirror of
https://github.com/HarbourMasters/Starship.git
synced 2025-04-28 20:37:58 +03:00
improve match on i3, add scratches, some linker cleanup (#127)
* stuff * fixes * addrs
This commit is contained in:
parent
503ec0a01b
commit
f83d179ea9
11 changed files with 248 additions and 531 deletions
|
@ -25,6 +25,7 @@ extern f32 D_i6_801A7F74;
|
|||
extern f32 D_i6_801A7F78;
|
||||
extern f32 D_i6_801A7F7C;
|
||||
|
||||
void func_i6_80187530(Actor*);
|
||||
void func_i6_80193C4C(Player*);
|
||||
void func_i6_80195E44(Actor*);
|
||||
void func_i6_80196BF8(Player*);
|
||||
|
|
|
@ -392,8 +392,8 @@ extern GameState gGameState;
|
|||
extern s32 D_80177838;
|
||||
extern s32 D_Timer_8017783C;
|
||||
extern s32 D_80177840; // Stage clear time
|
||||
extern s32 gBossHealthBar;
|
||||
extern s32 D_80177844;
|
||||
extern s32 gBossHealthBar;
|
||||
extern OptionState gOptionMenuStatus;
|
||||
extern s32 D_80177850;
|
||||
extern s32 D_80177854;
|
||||
|
|
|
@ -379,6 +379,8 @@ D_Timer_80161A60 = 0x80161A60;
|
|||
D_80161A62 = 0x80161A62;
|
||||
D_80161A64 = 0x80161A64;
|
||||
sEnvSettings = 0x80161A68;
|
||||
|
||||
// fox_context
|
||||
D_80161A70 = 0x80161A70;
|
||||
D_80161A74 = 0x80161A74;
|
||||
D_80161A78 = 0x80161A78;
|
||||
|
|
|
@ -1,272 +1,3 @@
|
|||
|
||||
func_80187530 = 0x80187530;
|
||||
func_8018753C = 0x8018753C;
|
||||
func_8018756C = 0x8018756C;
|
||||
func_801875A4 = 0x801875A4;
|
||||
func_80187650 = 0x80187650;
|
||||
func_801877C4 = 0x801877C4;
|
||||
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;
|
||||
func_8018933C = 0x8018933C;
|
||||
func_801893B8 = 0x801893B8;
|
||||
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;
|
||||
func_801923C0 = 0x801923C0;
|
||||
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;
|
||||
|
||||
// rsp_boot
|
||||
func_84001008 = 0x84001008;
|
||||
func_84001064 = 0x84001064;
|
||||
|
@ -998,8 +729,6 @@ D_C03876C = 0x0C03876C;
|
|||
D_C038860 = 0x0C038860;
|
||||
D_C038954 = 0x0C038954;
|
||||
|
||||
D_fake_i6_80196D00 = 0x80196D00;
|
||||
|
||||
// fox_end2
|
||||
D_3016CC0 = 0x03016CC0;
|
||||
D_50054B0 = 0x050054B0;
|
||||
|
|
|
@ -21,13 +21,6 @@ extern Animation D_602A2CC[];
|
|||
extern Animation D_602CEB4[];
|
||||
extern Animation D_602B778[];
|
||||
|
||||
extern f32 D_80178454;
|
||||
extern f32 D_80178458;
|
||||
extern f32 D_80178464;
|
||||
extern f32 D_80178468;
|
||||
extern f32 D_80178474;
|
||||
extern f32 D_80178478;
|
||||
|
||||
extern Gfx D_400AAE0[];
|
||||
extern Gfx D_6000D80[];
|
||||
extern Gfx D_600BAA0[];
|
||||
|
@ -1216,9 +1209,9 @@ void func_8004B368(Player* player) {
|
|||
|
||||
Matrix_MultVec3f(gCalcMatrix, &sp78, &sp6C);
|
||||
|
||||
D_80178454 = player->pos.x + sp6C.x;
|
||||
D_80178464 = player->pos.y + sp6C.y;
|
||||
D_80178474 = player->unk_138 + sp6C.z;
|
||||
D_80178450[1] = player->pos.x + sp6C.x;
|
||||
D_80178460[1] = player->pos.y + sp6C.y;
|
||||
D_80178470[1] = player->unk_138 + sp6C.z;
|
||||
|
||||
sp78.x = gActors[2].fwork[0] * gActors[2].fwork[3];
|
||||
sp78.y = gActors[2].fwork[1] * gActors[2].fwork[3];
|
||||
|
@ -1226,9 +1219,9 @@ void func_8004B368(Player* player) {
|
|||
|
||||
Matrix_MultVec3f(gCalcMatrix, &sp78, &sp6C);
|
||||
|
||||
D_80178458 = player->pos.x + sp6C.x;
|
||||
D_80178468 = player->pos.y + sp6C.y;
|
||||
D_80178478 = player->unk_138 + sp6C.z;
|
||||
D_80178450[2] = player->pos.x + sp6C.x;
|
||||
D_80178460[2] = player->pos.y + sp6C.y;
|
||||
D_80178470[2] = player->unk_138 + sp6C.z;
|
||||
|
||||
switch (gCsFrameCount) {
|
||||
case 330:
|
||||
|
|
|
@ -6,8 +6,6 @@ s32 D_80161690;
|
|||
|
||||
#include "fox_enmy2_assets.h"
|
||||
|
||||
void func_80187530(Actor*); // figure out which one later
|
||||
|
||||
void func_8006A7B0(u16* msg, s32 character) {
|
||||
PRINTF("Enm->obj.pos.y + tmp_xyz.y=<%10.3f>\n");
|
||||
if ((gRadioState == 0) || (D_80177D68 != character)) {
|
||||
|
@ -3659,7 +3657,7 @@ void func_80072594(Actor* actor) {
|
|||
|
||||
case 103:
|
||||
case 104:
|
||||
func_80187530(actor);
|
||||
func_i6_80187530(actor); // might be i5 or i2
|
||||
break;
|
||||
|
||||
case 106:
|
||||
|
|
|
@ -425,7 +425,7 @@ f32 D_i3_801BF3F4[12] = {
|
|||
f32 D_i3_801BF424[12] = {
|
||||
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
|
||||
};
|
||||
Color_RGBAF32 D_i3_801BF454[4] = {
|
||||
f32 D_i3_801BF454[4][4] = {
|
||||
{ 255.0f, 0.0f, 0.0f, 0.0f },
|
||||
{ 255.0f, 255.0f, 0.0f, 0.0f },
|
||||
{ 0.0f, 255.0f, 255.0f, 0.0f },
|
||||
|
@ -529,26 +529,27 @@ void func_i3_80187754(Boss* bossA6) {
|
|||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// var_s0 = D_i3_801C2250[A6_BSS_9]; is using the wrong variable, but unclear what correct one is.
|
||||
// https://decomp.me/scratch/P3kGr
|
||||
void func_i3_80187944(Boss* bossA6) {
|
||||
s32 i;
|
||||
f32 var_fv1;
|
||||
s32 pad;
|
||||
s32 var_s0;
|
||||
s32 sp128;
|
||||
Color_RGBAF32* sp68;
|
||||
s32 spf124;
|
||||
f32 sp120;
|
||||
f32 sp11C;
|
||||
f32 sp118;
|
||||
f32 sp114;
|
||||
f32 sp110;
|
||||
f32 sp10C;
|
||||
Effect* temp_s0_3;
|
||||
f32 dx_11C;
|
||||
f32 dy_118;
|
||||
f32 dz_114;
|
||||
f32 pitch_110;
|
||||
f32 yaw_10C;
|
||||
f32 temp2;
|
||||
f32 sp104;
|
||||
Vec3f spC8[5];
|
||||
Vec3f spA4[3];
|
||||
Vec3f sp98;
|
||||
Vec3f sp8C;
|
||||
s32 temp_1;
|
||||
f32 temp2;
|
||||
Effect* temp_s0_3;
|
||||
|
||||
gBossFrameCount++;
|
||||
if ((bossA6->state < 6) || ((bossA6->state >= 8) && (bossA6->state < 12))) {
|
||||
|
@ -565,8 +566,9 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
bossA6->dmgType = DMG_NONE;
|
||||
if (bossA6->fwork[A6_FWK_0] > 5.0f) {
|
||||
if ((bossA6->dmgPart == 0) && (bossA6->swork[A6_SWK_25] == 0) && (bossA6->fwork[A6_FWK_29] < 30.0f)) {
|
||||
bossA6->health -= bossA6->damage;
|
||||
bossA6->timer_05C = 15;
|
||||
bossA6->health -= bossA6->damage;
|
||||
|
||||
if (bossA6->health < 390) {
|
||||
Audio_PlaySfx(0x2943500F, bossA6->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
} else {
|
||||
|
@ -629,17 +631,17 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
func_8007C120(bossA6->obj.pos.x, bossA6->obj.pos.y, bossA6->obj.pos.z + 200.0f, bossA6->vel.x, bossA6->vel.y,
|
||||
bossA6->vel.z, 0.3f, 1);
|
||||
}
|
||||
temp2 = 0.5f;
|
||||
if ((gBosses)[0].swork[A6_SWK_25] == 1) {
|
||||
temp2 = 2.0f;
|
||||
sp120 = 0.5f;
|
||||
if (gBosses[0].swork[A6_SWK_25] == 1) {
|
||||
sp120 = 2.0f;
|
||||
}
|
||||
if (D_i3_801C2250[A6_BSS_10] != 0) {
|
||||
D_i3_801C22F0.unk_34 += temp2;
|
||||
D_i3_801C22F0.unk_34 += sp120;
|
||||
if (D_i3_801C22F0.unk_34 > 360.0f) {
|
||||
D_i3_801C22F0.unk_34 -= 360.0f;
|
||||
}
|
||||
} else {
|
||||
D_i3_801C22F0.unk_34 -= temp2;
|
||||
D_i3_801C22F0.unk_34 -= sp120;
|
||||
if (D_i3_801C22F0.unk_34 < 0.0f) {
|
||||
D_i3_801C22F0.unk_34 += 360.0f;
|
||||
}
|
||||
|
@ -649,25 +651,25 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
Math_SmoothStepToAngle(&bossA6->obj.rot.z, bossA6->fwork[A6_FWK_8], 0.05f, bossA6->fwork[A6_FWK_9], 0.00001f);
|
||||
if (bossA6->swork[A6_SWK_25] >= 2) {
|
||||
if (!(gGameFrameCount & 0x3F) && (Rand_ZeroOne() < 0.5f)) {
|
||||
bossA6->fwork[A6_FWK_6] = gPlayer[0].camEye.x + RAND_FLOAT_CENTERED(500.0f);
|
||||
bossA6->fwork[A6_FWK_6] = RAND_FLOAT_CENTERED(500.0f) + gPlayer[0].camEye.x;
|
||||
}
|
||||
if (!(gGameFrameCount & 0x3F) && (Rand_ZeroOne() < 0.5f)) {
|
||||
bossA6->fwork[A6_FWK_7] = gPlayer[0].camEye.y + RAND_FLOAT_CENTERED(500.0f);
|
||||
bossA6->fwork[A6_FWK_7] = RAND_FLOAT_CENTERED(500.0f) + gPlayer[0].camEye.y;
|
||||
}
|
||||
} else {
|
||||
if (!(gGameFrameCount & 0x1F) && (Rand_ZeroOne() < 0.7f)) {
|
||||
bossA6->fwork[A6_FWK_6] = gPlayer[0].camEye.x + RAND_FLOAT_CENTERED(1000.0f);
|
||||
bossA6->fwork[A6_FWK_6] = RAND_FLOAT_CENTERED(1000.0f) + gPlayer[0].camEye.x;
|
||||
bossA6->fwork[A6_FWK_30] = 0.0f;
|
||||
}
|
||||
if (!(gGameFrameCount & 0x1F) && (Rand_ZeroOne() < 0.7f)) {
|
||||
bossA6->fwork[A6_FWK_7] = gPlayer[0].camEye.y + RAND_FLOAT_CENTERED(1000.0f);
|
||||
bossA6->fwork[A6_FWK_7] = RAND_FLOAT_CENTERED(1000.0f) + gPlayer[0].camEye.y;
|
||||
bossA6->fwork[A6_FWK_31] = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bossA6->state != 0) {
|
||||
Math_SmoothStepToF(&bossA6->fwork[A6_FWK_4], bossA6->fwork[A6_FWK_5], 0.1f, 2.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&bossA6->obj.pos.z, bossA6->fwork[A6_FWK_3] + (gPlayer[0].camEye.z - D_80177D20), 0.1f,
|
||||
Math_SmoothStepToF(&bossA6->obj.pos.z, gPlayer[0].camEye.z - D_80177D20 + bossA6->fwork[A6_FWK_3], 0.1f,
|
||||
bossA6->fwork[A6_FWK_4], 0.00001f);
|
||||
if (bossA6->state < 5) {
|
||||
sp120 = 2.0f;
|
||||
|
@ -724,41 +726,41 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
}
|
||||
}
|
||||
if (!(gGameFrameCount & 0xF)) {
|
||||
sp114 = fabsf(bossA6->fwork[A6_FWK_3] / -1700.0f);
|
||||
if (sp114 < 1.0f) {
|
||||
sp114 = 1.0f;
|
||||
dz_114 = fabsf(bossA6->fwork[A6_FWK_3] / -1700.0f);
|
||||
if (dz_114 < 1.0f) {
|
||||
dz_114 = 1.0f;
|
||||
}
|
||||
if (sp114 > 3.0f) {
|
||||
sp114 = 3.0f;
|
||||
if (dz_114 > 3.0f) {
|
||||
dz_114 = 3.0f;
|
||||
}
|
||||
for (i = 0; i < 3; i++) {
|
||||
var_fv1 = sp114;
|
||||
sp120 = dz_114;
|
||||
if (bossA6->swork[A6_SWK_18 + i] != 0) {
|
||||
var_fv1 = 1.0f;
|
||||
sp120 = 1.0f;
|
||||
}
|
||||
A6_HIT_1_2(bossA6, i)->z.size = 195.0f * var_fv1;
|
||||
A6_HIT_1_2(bossA6, i)->y.size = 147.0f * var_fv1;
|
||||
A6_HIT_1_2(bossA6, i)->x.size = 153.0f * var_fv1;
|
||||
A6_HIT_1_2(bossA6, i)->z.size = 195.0f * sp120;
|
||||
A6_HIT_1_2(bossA6, i)->y.size = 147.0f * sp120;
|
||||
A6_HIT_1_2(bossA6, i)->x.size = 153.0f * sp120;
|
||||
}
|
||||
}
|
||||
switch (bossA6->state) {
|
||||
case 0:
|
||||
bossA6->info.hitbox[0] = 0;
|
||||
|
||||
sp11C = gPlayer[0].pos.x - bossA6->obj.pos.x;
|
||||
sp118 = gPlayer[0].pos.y - bossA6->obj.pos.y;
|
||||
sp114 = gPlayer[0].pos.z - 700.0f - bossA6->obj.pos.z;
|
||||
dx_11C = gPlayer[0].pos.x - bossA6->obj.pos.x;
|
||||
dy_118 = gPlayer[0].pos.y - bossA6->obj.pos.y;
|
||||
dz_114 = gPlayer[0].pos.z - 700.0f - bossA6->obj.pos.z;
|
||||
sp104 = 10.0f;
|
||||
if ((bossA6->timer_050 != 0) && (bossA6->timer_050 < 200)) {
|
||||
sp11C = gPlayer[0].camEye.x - bossA6->obj.pos.x;
|
||||
sp118 = gPlayer[0].camEye.y - bossA6->obj.pos.y;
|
||||
sp114 = gPlayer[0].camEye.z - D_80177D20 + bossA6->fwork[A6_FWK_3] - bossA6->obj.pos.z;
|
||||
dx_11C = gPlayer[0].camEye.x - bossA6->obj.pos.x;
|
||||
dy_118 = gPlayer[0].camEye.y - bossA6->obj.pos.y;
|
||||
dz_114 = gPlayer[0].camEye.z - D_80177D20 + bossA6->fwork[A6_FWK_3] - bossA6->obj.pos.z;
|
||||
sp104 = 100.0f;
|
||||
}
|
||||
sp10C = Math_RadToDeg(Math_Atan2F(sp11C, sp114));
|
||||
sp110 = Math_RadToDeg(-Math_Atan2F(sp118, sqrtf(SQ(sp11C) + SQ(sp114))));
|
||||
Math_SmoothStepToAngle(&bossA6->unk_078.y, sp10C, 1.0f, sp104, 0.00001f);
|
||||
Math_SmoothStepToAngle(&bossA6->unk_078.x, sp110, 1.0f, sp104, 0.00001f);
|
||||
yaw_10C = Math_RadToDeg(Math_Atan2F(dx_11C, dz_114));
|
||||
pitch_110 = Math_RadToDeg(-Math_Atan2F(dy_118, sqrtf(SQ(dx_11C) + SQ(dz_114))));
|
||||
Math_SmoothStepToAngle(&bossA6->unk_078.y, yaw_10C, 1.0f, sp104, 0.00001f);
|
||||
Math_SmoothStepToAngle(&bossA6->unk_078.x, pitch_110, 1.0f, sp104, 0.00001f);
|
||||
Matrix_RotateY(gCalcMatrix, bossA6->unk_078.y * M_DTOR, 0);
|
||||
Matrix_RotateX(gCalcMatrix, bossA6->unk_078.x * M_DTOR, 1);
|
||||
sp98.x = sp98.y = 0.0f;
|
||||
|
@ -804,8 +806,8 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
Math_SmoothStepToF(&bossA6->fwork[A6_FWK_34], 2.0f, 0.1f, 0.1f, 0.0f);
|
||||
Math_SmoothStepToF(&bossA6->fwork[A6_FWK_35], 1.2f, 0.1f, 0.1f, 0.0f);
|
||||
if (D_i3_801C22F0.unk_24 < 1.0f) {
|
||||
bossA6->fwork[A6_FWK_6] = gPlayer[0].camEye.x + RAND_FLOAT_CENTERED(1000.0f);
|
||||
bossA6->fwork[A6_FWK_7] = gPlayer[0].camEye.y + RAND_FLOAT_CENTERED(1000.0f);
|
||||
bossA6->fwork[A6_FWK_6] = RAND_FLOAT_CENTERED(1000.0f) + gPlayer[0].camEye.x;
|
||||
bossA6->fwork[A6_FWK_7] = RAND_FLOAT_CENTERED(1000.0f) + gPlayer[0].camEye.y;
|
||||
bossA6->fwork[A6_FWK_3] = -3700.0f + RAND_FLOAT_CENTERED(3000.0f);
|
||||
bossA6->fwork[A6_FWK_34] = 2.0f;
|
||||
bossA6->fwork[A6_FWK_35] = 1.2f;
|
||||
|
@ -1020,17 +1022,18 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
bossA6->obj.pos.z -= bossA6->fwork[A6_FWK_37];
|
||||
Math_SmoothStepToF(&bossA6->fwork[A6_FWK_37], 0.0f, 1.0f, 10.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&bossA6->fwork[A6_FWK_3], -6000.0f, 10.0f, 100.0f, 0.00001f);
|
||||
sp68 = &D_i3_801BF454[D_i3_801C2250[A6_BSS_9]];
|
||||
Math_SmoothStepToF(&D_i3_801C22F0.unk_28[0], sp68->r, 0.5f, 100.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&D_i3_801C22F0.unk_28[2], sp68->g, 0.5f, 100.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&D_i3_801C22F0.unk_28[1], sp68->b, 0.5f, 100.0f, 0.00001f);
|
||||
var_s0 = D_i3_801C2250[A6_BSS_9];
|
||||
// sp68 = &D_i3_801BF454[];
|
||||
Math_SmoothStepToF(&D_i3_801C22F0.unk_28[0], D_i3_801BF454[var_s0][0], 0.5f, 100.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&D_i3_801C22F0.unk_28[2], D_i3_801BF454[var_s0][1], 0.5f, 100.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&D_i3_801C22F0.unk_28[1], D_i3_801BF454[var_s0][2], 0.5f, 100.0f, 0.00001f);
|
||||
if (!(gGameFrameCount & 0xF)) {
|
||||
D_i3_801C2250[A6_BSS_9]++;
|
||||
D_i3_801C2250[A6_BSS_9] &= 3;
|
||||
}
|
||||
if (bossA6->timer_050 == 0) {
|
||||
bossA6->state = 7;
|
||||
bossA6->fwork[A6_FWK_1] = 0.0f;
|
||||
bossA6->state = 7;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
|
@ -1087,28 +1090,28 @@ void func_i3_80187944(Boss* bossA6) {
|
|||
if (bossA6->swork[A6_SWK_25] == 2) {
|
||||
sp128 = 12;
|
||||
}
|
||||
for (i = 0; i < sp128; i++) {
|
||||
for (var_s0 = 0; var_s0 < sp128; var_s0++) {
|
||||
Matrix_RotateZ(gCalcMatrix, (360.0f / sp128) * M_DTOR, 1);
|
||||
sp98.x = 0.0f;
|
||||
sp98.y = 400.0f;
|
||||
sp98.z = 0.0f;
|
||||
Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp98, &sp8C);
|
||||
sp10C = Math_RadToDeg(Math_Atan2F(sp8C.x, sp8C.z));
|
||||
sp110 = Math_RadToDeg(-Math_Atan2F(sp8C.y, sqrtf(SQ(sp8C.x) + SQ(sp8C.z))));
|
||||
temp_1 = D_i3_801C2250[A6_BSS_12_0 + i] - 1;
|
||||
if (temp_1 < 0) {
|
||||
temp_1 = 0;
|
||||
yaw_10C = Math_RadToDeg(Math_Atan2F(sp8C.x, sp8C.z));
|
||||
pitch_110 = Math_RadToDeg(-Math_Atan2F(sp8C.y, sqrtf(SQ(sp8C.x) + SQ(sp8C.z))));
|
||||
spf124 = D_i3_801C2250[A6_BSS_12_0 + var_s0] - 1;
|
||||
if (spf124 < 0) {
|
||||
spf124 = 0;
|
||||
}
|
||||
if ((gActors[temp_1].obj.status == OBJ_FREE) || (gActors[temp_1].obj.id != OBJ_ACTOR_191) ||
|
||||
if ((gActors[spf124].obj.status == OBJ_FREE) || (gActors[spf124].obj.id != OBJ_ACTOR_191) ||
|
||||
(D_i3_801C2250[A6_BSS_24] == 0)) {
|
||||
D_i3_801C2250[A6_BSS_12_0 + i] = 0;
|
||||
temp_1 = 0;
|
||||
D_i3_801C2250[A6_BSS_12_0 + var_s0] = 0;
|
||||
spf124 = 0;
|
||||
if (bossA6->swork[A6_SWK_25] == 1) {
|
||||
temp_1 = 1;
|
||||
spf124 = 1;
|
||||
}
|
||||
func_i3_801875E4(bossA6->obj.pos.x + sp8C.x, bossA6->obj.pos.y + sp8C.y,
|
||||
bossA6->obj.pos.z + sp8C.z, 25.0f, sp110, sp10C, 10, temp_1);
|
||||
D_i3_801C2250[A6_BSS_12_0 + i] = D_i3_801C2250[A6_BSS_11];
|
||||
bossA6->obj.pos.z + sp8C.z, 25.0f, pitch_110, yaw_10C, 10, spf124);
|
||||
D_i3_801C2250[A6_BSS_12_0 + var_s0] = D_i3_801C2250[A6_BSS_11];
|
||||
}
|
||||
}
|
||||
D_i3_801C2250[A6_BSS_24] = 1;
|
||||
|
@ -1344,7 +1347,7 @@ void func_i3_8018A464(Boss* bossA6, s32 arg1) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 1: /* switch 1 */
|
||||
case 1:
|
||||
if (bossA6->swork[A6_SWK_34] != 0) {
|
||||
for (i = 1; i < 12; i++) {
|
||||
D_i3_801BF010[i] = 3.0f;
|
||||
|
@ -1388,7 +1391,7 @@ void func_i3_8018A464(Boss* bossA6, s32 arg1) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 2: /* switch 1 */
|
||||
case 2:
|
||||
if (bossA6->swork[A6_SWK_35] != 0) {
|
||||
for (i = 1; i < 12; i++) {
|
||||
D_i3_801BF190[i] = 3.0f;
|
||||
|
@ -1774,6 +1777,8 @@ void func_i3_8018C0D0(f32* arg0, f32 arg1, Vec3f* arg2, f32 arg3, s32 arg4) {
|
|||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// weirdness on setting spAC.x to 0.0f and in loading bossA6 near the fakeness
|
||||
// https://decomp.me/scratch/mwrs8
|
||||
void func_i3_8018C54C(Boss* bossA6) {
|
||||
Vec3f spD0[30];
|
||||
Vec3f spC4;
|
||||
|
@ -1794,8 +1799,9 @@ void func_i3_8018C54C(Boss* bossA6) {
|
|||
Animation_GetFrameData(&D_6018994, 0, spD0);
|
||||
if (D_i3_801C22F0.unk_24 != 255.0f) {
|
||||
RCP_SetupDL(&gMasterDisp, 0x47);
|
||||
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) D_i3_801C22F0.unk_24);
|
||||
spAC.x = 0.0f;
|
||||
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) D_i3_801C22F0.unk_24);
|
||||
|
||||
if ((gSysFrameCount & 1) == 0) {
|
||||
spAC.x = 0.0f;
|
||||
}
|
||||
|
@ -1829,12 +1835,13 @@ void func_i3_8018C54C(Boss* bossA6) {
|
|||
Matrix_RotateY(gCalcMatrix, bossA6->obj.rot.y * M_DTOR, 0);
|
||||
Matrix_RotateX(gCalcMatrix, bossA6->obj.rot.x * M_DTOR, 1);
|
||||
Matrix_RotateZ(gCalcMatrix, bossA6->obj.rot.z * M_DTOR, 1);
|
||||
Matrix_MultVec3f(gCalcMatrix, &bossA6->vwork[A6_VWK_1 + i], &spC4);
|
||||
Matrix_MultVec3f(gCalcMatrix, &bossA6->vwork[A6_VWK_1] + i, &spC4);
|
||||
func_8007D0E0(bossA6->obj.pos.x + spC4.x, bossA6->obj.pos.y + spC4.y, bossA6->obj.pos.z + spC4.z,
|
||||
20.0f);
|
||||
spB8.x = bossA6->obj.pos.x + spC4.x;
|
||||
spB8.y = bossA6->obj.pos.y + spC4.y;
|
||||
spB8.z = bossA6->obj.pos.z + spC4.z;
|
||||
if ((!bossA6) && (!bossA6)) {} // fake
|
||||
if (D_i3_801C2250[A6_BSS_26] == 0) {
|
||||
func_8007A6F0(&spB8, 0x2903B009);
|
||||
}
|
||||
|
@ -1847,28 +1854,23 @@ void func_i3_8018C54C(Boss* bossA6) {
|
|||
bossA6->fwork[A6_FWK_10 + i] = bossA6->fwork[A6_FWK_19 + i] = bossA6->fwork[A6_FWK_13 + i] =
|
||||
bossA6->fwork[A6_FWK_22 + i] = 0.0f;
|
||||
bossA6->fwork[A6_FWK_25 + i] = -90.0f;
|
||||
|
||||
for (j = 0; j < 12; j++) {
|
||||
if (i == 0) {
|
||||
D_i3_801BED70[j].x = 0.0f;
|
||||
D_i3_801BED70[j].y = 0.0f;
|
||||
D_i3_801BEE00[j].x = 0.0f;
|
||||
D_i3_801BEE00[j].y = 0.0f;
|
||||
D_i3_801BED70[j].y = D_i3_801BED70[j].x = D_i3_801BEE00[j].y = D_i3_801BEE00[j].x =
|
||||
0.0f;
|
||||
D_i3_801BEE90[j] = 3.0f;
|
||||
D_i3_801BEEC0[j] = 3.0f;
|
||||
}
|
||||
if (i == 1) {
|
||||
D_i3_801BEEF0[j].x = 0.0f;
|
||||
D_i3_801BEEF0[j].y = 0.0f;
|
||||
D_i3_801BEF80[j].x = 0.0f;
|
||||
D_i3_801BEF80[j].y = 0.0f;
|
||||
D_i3_801BEEF0[j].y = D_i3_801BEEF0[j].x = D_i3_801BEF80[j].y = D_i3_801BEF80[j].x =
|
||||
0.0f;
|
||||
D_i3_801BF010[j] = 3.0f;
|
||||
D_i3_801BF040[j] = 3.0f;
|
||||
}
|
||||
if (i == 2) {
|
||||
D_i3_801BF070[j].x = 0.0f;
|
||||
D_i3_801BF070[j].y = 0.0f;
|
||||
D_i3_801BF100[j].x = 0.0f;
|
||||
D_i3_801BF100[j].y = 0.0f;
|
||||
D_i3_801BF070[j].y = D_i3_801BF070[j].x = D_i3_801BF100[j].y = D_i3_801BF100[j].x =
|
||||
0.0f;
|
||||
D_i3_801BF190[j] = 3.0f;
|
||||
D_i3_801BF1C0[j] = 3.0f;
|
||||
}
|
||||
|
@ -2446,7 +2448,6 @@ void func_i3_8018EC38(Actor* actor, s32 arg1) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void func_i3_8018ED78(Player* player) {
|
||||
s32 i;
|
||||
Vec3f spf90;
|
||||
|
@ -2455,9 +2456,10 @@ void func_i3_8018ED78(Player* player) {
|
|||
f32 sp84;
|
||||
Vec3f sp78;
|
||||
Vec3f sp6C;
|
||||
s32 pad[2];
|
||||
Actor* actor4 = &gActors[4];
|
||||
s32 pad;
|
||||
|
||||
switch (player->unk_1D0) { /* irregular */
|
||||
switch (player->unk_1D0) {
|
||||
case 0:
|
||||
gCsFrameCount = 0;
|
||||
player->unk_1D0 = 1;
|
||||
|
@ -2506,10 +2508,10 @@ void func_i3_8018ED78(Player* player) {
|
|||
D_801779C0 = gBosses[0].obj.pos.z + D_80177D20;
|
||||
D_80177A48[0] = 0.04f;
|
||||
if (gCsFrameCount == 140) {
|
||||
func_i3_8018EA88(&gActors[4]);
|
||||
func_i3_8018EA88(actor4);
|
||||
func_i3_8018EA88(&gActors[5]);
|
||||
func_i3_8018EA88(&gActors[6]);
|
||||
gActors[4].fwork[4] = 0.5f;
|
||||
actor4->fwork[4] = 0.5f;
|
||||
}
|
||||
if (gCsFrameCount >= 200) {
|
||||
if (D_80178340 == 255) {
|
||||
|
@ -2529,33 +2531,34 @@ void func_i3_8018ED78(Player* player) {
|
|||
if ((gCsFrameCount == 146) || (gCsFrameCount == 150)) {
|
||||
Audio_PlaySfx(0x2940F026, gActors[5].sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
}
|
||||
if (gCsFrameCount >= 147) {
|
||||
gActors[4].iwork[3] -= 4;
|
||||
if (gActors[4].iwork[3] < 0) {
|
||||
gActors[4].iwork[3] = 0;
|
||||
if (gCsFrameCount > 146) {
|
||||
actor4->iwork[3] -= 4;
|
||||
if (actor4->iwork[3] < 0) {
|
||||
actor4->iwork[3] = 0;
|
||||
}
|
||||
gActors[4].iwork[7] -= 4;
|
||||
if (gActors[4].iwork[7] < 0) {
|
||||
gActors[4].iwork[7] = 0;
|
||||
actor4->iwork[7] -= 4;
|
||||
if (actor4->iwork[7] < 0) {
|
||||
actor4->iwork[7] = 0;
|
||||
}
|
||||
Math_SmoothStepToF(&gActors[5].fwork[4], 450.0f, 0.03f, 1000.0f, 1.0f);
|
||||
Math_SmoothStepToF(&gActors[5].scale, 450.0f, 0.03f, 1000.0f, 1.0f);
|
||||
}
|
||||
if (gCsFrameCount >= 161) {
|
||||
if (gCsFrameCount > 160) {
|
||||
Math_SmoothStepToF(&gActors[6].fwork[4], 350.0f, 0.03f, 1000.0f, 1.0f);
|
||||
Math_SmoothStepToF(&gActors[6].scale, 350.0f, 0.03f, 1000.0f, 1.0f);
|
||||
}
|
||||
if (gCsFrameCount >= 141) {
|
||||
gActors[4].obj.pos.x = gActors[5].obj.pos.x = gActors[6].obj.pos.x = gBosses[0].obj.pos.x;
|
||||
gActors[4].obj.pos.y = gActors[5].obj.pos.y = gActors[6].obj.pos.y = gBosses[0].obj.pos.y;
|
||||
gActors[4].obj.pos.z = gActors[5].obj.pos.z = gActors[6].obj.pos.z = gBosses[0].obj.pos.z;
|
||||
Math_SmoothStepToF(&gActors[4].scale, 600.0f, 0.03f, 1000.0f, 0.01f);
|
||||
if (gCsFrameCount > 140) {
|
||||
actor4->obj.pos.x = gActors[5].obj.pos.x = gActors[6].obj.pos.x = gBosses[0].obj.pos.x;
|
||||
actor4->obj.pos.y = gActors[5].obj.pos.y = gActors[6].obj.pos.y = gBosses[0].obj.pos.y;
|
||||
actor4->obj.pos.z = gActors[5].obj.pos.z = gActors[6].obj.pos.z = gBosses[0].obj.pos.z + 500.0f;
|
||||
Math_SmoothStepToF(&actor4->scale, 600.0f, 0.03f, 1000.0f, 0.01f);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (gCsFrameCount < 300) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (gCsFrameCount == 300) {
|
||||
player->unk_234 = 1;
|
||||
player->pos.x = 0.0f;
|
||||
|
@ -2663,43 +2666,43 @@ void func_i3_8018ED78(Player* player) {
|
|||
}
|
||||
break;
|
||||
}
|
||||
switch (gCsFrameCount) { /* switch 1; irregular */
|
||||
case 380: /* switch 1 */
|
||||
switch (gCsFrameCount) {
|
||||
case 380:
|
||||
func_8001D444(0, 38, 0, 255);
|
||||
break;
|
||||
case 550: /* switch 1 */
|
||||
case 550:
|
||||
D_80177840 = 100;
|
||||
break;
|
||||
case 700: /* switch 1 */
|
||||
case 700:
|
||||
D_80177830 = 1;
|
||||
break;
|
||||
case 900: /* switch 1 */
|
||||
case 900:
|
||||
D_80177830 = 0;
|
||||
break;
|
||||
case 940: /* switch 1 */
|
||||
case 940:
|
||||
Radio_PlayMessage(gMsg_ID_7093, RCID_FOX);
|
||||
break;
|
||||
case 1070: /* switch 1 */
|
||||
case 1070:
|
||||
gActors[1].fwork[29] = 5.0f;
|
||||
Audio_PlaySfx(0x09000002, gActors[1].sfxPos, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
break;
|
||||
case 1072: /* switch 1 */
|
||||
case 1072:
|
||||
gActors[2].fwork[29] = 5.0f;
|
||||
Audio_PlaySfx(0x09000002, gActors[2].sfxPos, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
break;
|
||||
case 1074: /* switch 1 */
|
||||
case 1074:
|
||||
gActors[3].fwork[29] = 5.0f;
|
||||
Audio_PlaySfx(0x09000002, gActors[3].sfxPos, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
break;
|
||||
}
|
||||
if (gCsFrameCount >= 1070) {
|
||||
Math_SmoothStepToF(&gActors[1].fwork[12], 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
Math_SmoothStepToF(&gActors[1].fwork[0], 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
}
|
||||
if (gCsFrameCount >= 1072) {
|
||||
Math_SmoothStepToF(&gActors[2].fwork[12], 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
Math_SmoothStepToF(&gActors[2].fwork[0], 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
}
|
||||
if (gCsFrameCount >= 1074) {
|
||||
Math_SmoothStepToF(&gActors[3].fwork[12], 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
Math_SmoothStepToF(&gActors[3].fwork[0], 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
}
|
||||
if (gCsFrameCount >= 1076) {
|
||||
Math_SmoothStepToF(&player->unk_0D0, 50.0f, 0.1f, 1000.0f, 0.001f);
|
||||
|
@ -2725,7 +2728,3 @@ void func_i3_8018ED78(Player* player) {
|
|||
Math_SmoothStepToF(&player->camAt.y, D_801779B8, D_80177A48[0], 50000.0f, 0.0001f);
|
||||
Math_SmoothStepToF(&player->camAt.z, D_801779C0, D_80177A48[0], 50000.0f, 0.0001f);
|
||||
}
|
||||
#else
|
||||
void func_i3_8018ED78(Player* player);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i3/fox_a6/func_i3_8018ED78.s")
|
||||
#endif
|
||||
|
|
|
@ -2001,6 +2001,7 @@ void func_i3_801AF9FC(Actor* actor) {
|
|||
|
||||
#ifdef NON_MATCHING
|
||||
// saved register use at start of case 3
|
||||
// https://decomp.me/scratch/gNkkb
|
||||
void func_i3_801AFA5C(Actor* actor) {
|
||||
s32 i;
|
||||
f32 sp70;
|
||||
|
@ -2409,7 +2410,10 @@ void func_i3_801B10F8(Boss* bossAQ) {
|
|||
|
||||
// OBJ_BOSS_AQ action
|
||||
#ifdef NON_MATCHING
|
||||
// lots of float stuff, and unclear how to use the 4 indices
|
||||
// unclear how to use the 4 indices
|
||||
// loop at 2854 unrolls incorrectly
|
||||
// sp100 shouldn't be on the stack
|
||||
// https://decomp.me/scratch/M6ghQ
|
||||
void func_i3_801B134C(Boss* bossAQ) {
|
||||
s32 i;
|
||||
s32 i2;
|
||||
|
@ -2952,7 +2956,7 @@ void func_i3_801B134C(Boss* bossAQ) {
|
|||
D_i3_801C42A0[i3 + 10]++;
|
||||
if (D_i3_801C42A0[i3 + 10] >= D_i3_801BFDB4[4 * i3 + i2]) {
|
||||
D_i3_801C42A0[i3 + 16]++;
|
||||
if ((D_i3_801C42A0[i3 + 16] >= 4) || (D_i3_801BFDB4[4 * i3 + D_i3_801C42A0[i3 + 16]] == 10000)) {
|
||||
if ((D_i3_801C42A0[i3 + 16] >= 4) || (D_i3_801BFDB4[4 * i3 + D_i3_801C42A0[i3 + 16]] == 100000)) {
|
||||
D_i3_801C42A0[i3 + 10] = 0;
|
||||
D_i3_801C42A0[i3 + 16] = 0;
|
||||
}
|
||||
|
@ -3822,7 +3826,8 @@ void func_i3_801B6344(Actor* actor) {
|
|||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// annoying float reg swap around 3880
|
||||
// The big spherical angle calculation has some reg swaps. BonusText_Display has a return?
|
||||
// https://decomp.me/scratch/DLrGN
|
||||
void func_i3_801B638C(Actor* actor) {
|
||||
Actor* var_v0;
|
||||
s32 i;
|
||||
|
@ -4005,7 +4010,8 @@ void func_i3_801B6E54(Actor* actor) {
|
|||
|
||||
// OBJ_ACTOR_262 action
|
||||
#ifdef NON_MATCHING
|
||||
// annoying float reg swaps around 4000
|
||||
// reloads 0.0f for temp_fs2_2. BonusText_Display has a return?
|
||||
// https://decomp.me/scratch/02s9H
|
||||
void func_i3_801B6FF8(Actor* actor) {
|
||||
s32 i;
|
||||
f32 temp_dx;
|
||||
|
@ -4057,9 +4063,9 @@ void func_i3_801B6FF8(Actor* actor) {
|
|||
temp_dz = actor->fwork[3] - actor->obj.pos.z;
|
||||
spA8 = Math_RadToDeg(Math_Atan2F(temp_dx, temp_dz));
|
||||
var_fs0 = Math_RadToDeg(-Math_Atan2F(temp_dy, sqrtf(SQ(temp_dx) + SQ(temp_dz))));
|
||||
temp_fs2_2 = Math_SmoothStepToAngle(&actor->obj.rot.y, spA8, 0.1f, 1.0f, 0);
|
||||
temp_fs2_2 = Math_SmoothStepToAngle(&actor->obj.rot.y, spA8, 0.1f, 1.0f, 0.0f);
|
||||
Math_SmoothStepToAngle(&actor->obj.rot.x, var_fs0, 0.1f, 1.0f, 0.0f);
|
||||
|
||||
Math_SmoothStepToAngle(&actor->obj.rot.x, var_fs0, 0.1f, 1.0f, 0);
|
||||
var_fs0 = 340.0f;
|
||||
if (temp_fs2_2 < 0.0f) {
|
||||
var_fs0 = 20.0f;
|
||||
|
@ -4604,6 +4610,7 @@ void func_i3_801B90DC(Actor* actor) {
|
|||
// OBJ_ACTOR_263 action
|
||||
#ifdef NON_MATCHING
|
||||
// BonusText_Display has a return?
|
||||
// https://decomp.me/scratch/OwFpS
|
||||
void func_i3_801B91A4(Actor* actor) {
|
||||
Vec3f spDC = { 0.0f, 0.0f, 50.0f };
|
||||
Vec3f spD0;
|
||||
|
|
|
@ -2038,11 +2038,16 @@ f32 D_i3_801BF6CC[2] = { 250.0f, -250.0f };
|
|||
f32 D_i3_801BF6D4[2] = { 330.0f, 30.0f };
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// loop iterator problems with noted loops
|
||||
// float ordering in the boss health bar calculation
|
||||
// incorrect loading of sZoLimbTimers
|
||||
// compiler stack too large
|
||||
// https://decomp.me/scratch/jNmle
|
||||
void func_i3_80194A84(Boss* bossZO) {
|
||||
f32 sp134;
|
||||
s32 sp130;
|
||||
s32 i;
|
||||
s16 var_s0;
|
||||
s32 var_s0;
|
||||
s32 sp124;
|
||||
f32 sp120;
|
||||
f32 sp11C;
|
||||
|
@ -2055,8 +2060,8 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
f32 sp100;
|
||||
f32 spFC;
|
||||
s32 dmgType;
|
||||
s32* temp2;
|
||||
f32* temp3;
|
||||
s32 pad1;
|
||||
s32 pad2;
|
||||
Vec3f spE4;
|
||||
Vec3f spD8;
|
||||
Vec3f spCC;
|
||||
|
@ -2077,7 +2082,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
if (sZoSwork[ZO_BSS_24] == 0) {
|
||||
Math_SmoothStepToF(&sZoFwork[ZO_BSF_27], sZoFwork[ZO_BSF_26], 0.1f, 2.0f, 0.00001f);
|
||||
Math_SmoothStepToF(&bossZO->obj.pos.z, sZoFwork[ZO_BSF_28] + (gPlayer[0].camEye.z - D_80177D20), 0.1f,
|
||||
Math_SmoothStepToF(&bossZO->obj.pos.z, gPlayer[0].camEye.z - D_80177D20 + sZoFwork[ZO_BSF_28], 0.1f,
|
||||
sZoFwork[ZO_BSF_27], 0.00001f);
|
||||
}
|
||||
if (!(gGameFrameCount & 3)) {
|
||||
|
@ -2132,20 +2137,22 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
func_8007AFD0(bossZO->obj.pos.x, bossZO->obj.pos.z, -19.0f, 46.0f, 5.0f);
|
||||
func_8007AFD0(bossZO->obj.pos.x, bossZO->obj.pos.z, 0.0f, 50.0f, 5.0f);
|
||||
}
|
||||
bossZO->swork[ZO_SWK_9] = 20;
|
||||
|
||||
bossZO->swork[ZO_SWK_11] += 1;
|
||||
bossZO->swork[ZO_SWK_11] &= 1;
|
||||
bossZO->swork[ZO_SWK_9] = 20;
|
||||
if (bossZO->swork[ZO_SWK_11] == 0) {
|
||||
bossZO->swork[ZO_SWK_9] = 100;
|
||||
|
||||
bossZO->swork[ZO_SWK_10] += 1;
|
||||
bossZO->swork[ZO_SWK_10] &= 1;
|
||||
bossZO->swork[ZO_SWK_9] = 100;
|
||||
}
|
||||
}
|
||||
if (bossZO->swork[ZO_SWK_9] != 0) {
|
||||
bossZO->swork[ZO_SWK_9]--;
|
||||
}
|
||||
switch (bossZO->state) { /* switch 1 */
|
||||
case 0: /* switch 1 */
|
||||
switch (bossZO->state) {
|
||||
case 0:
|
||||
if ((!(gGameFrameCount & 7) || (bossZO->timer_050 == 43)) && (bossZO->swork[ZO_SWK_13] == 0) &&
|
||||
((bossZO->swork[ZO_SWK_12] < 7) || (bossZO->timer_050 == 43))) {
|
||||
D_801779A8[0] = 20.0f;
|
||||
|
@ -2191,7 +2198,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 1: /* switch 1 */
|
||||
case 1:
|
||||
Math_SmoothStepToF(&bossZO->fwork[ZO_FWK_4], 100.0f, 0.1f, 1.0f, 0.0f);
|
||||
func_i3_8019962C(bossZO, 0.0f);
|
||||
Math_SmoothStepToF(&sZoFwork[ZO_BSF_1], sZoFwork[ZO_BSF_74], 0.1f, 2.0f, 0.00001f);
|
||||
|
@ -2222,8 +2229,8 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
if ((sZoSwork[ZO_BSS_7] == 1) && (sZoSwork[ZO_BSS_25] == 0) && (sZoSwork[ZO_BSS_19] != 0)) {
|
||||
Radio_PlayMessage(gMsg_ID_6072, RCID_BOSS_ZONESS);
|
||||
sZoSwork[ZO_BSS_34] = 333;
|
||||
sZoSwork[ZO_BSS_25]++;
|
||||
sZoSwork[ZO_BSS_34] = 333;
|
||||
}
|
||||
if (sZoSwork[ZO_BSS_7] >= 2) {
|
||||
sZoSwork[ZO_BSS_7] = 0;
|
||||
|
@ -2240,7 +2247,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 2: /* switch 1 */
|
||||
case 2:
|
||||
if (bossZO->timer_050 == 1) {
|
||||
sZoSwork[ZO_BSS_20]++;
|
||||
sZoFwork[ZO_BSF_77] = 0.0f;
|
||||
|
@ -2255,7 +2262,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 3: /* switch 1 */
|
||||
case 3:
|
||||
if (ZO_HIT_12(bossZO)->z.offset != -883.99994f) {
|
||||
ZO_HIT_12(bossZO)->z.offset = -883.99994f;
|
||||
ZO_HIT_12(bossZO)->z.size = 244.4f;
|
||||
|
@ -2279,9 +2286,8 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
} else {
|
||||
bossZO->timer_058 = 100;
|
||||
sZoFwork[ZO_BSF_20] = 5.0f;
|
||||
sZoFwork[ZO_BSF_78] = 2.0f;
|
||||
|
||||
sZoFwork[ZO_BSF_21] = sZoFwork[ZO_BSF_79] = 0.0f;
|
||||
sZoFwork[ZO_BSF_78] = 2.0f;
|
||||
sZoSwork[ZO_BSS_21]++;
|
||||
if (sZoSwork[ZO_BSS_21] >= 2) {
|
||||
sZoSwork[ZO_BSS_21] = 0;
|
||||
|
@ -2306,18 +2312,18 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
Radio_PlayMessage(gMsg_ID_6078, RCID_BOSS_ZONESS);
|
||||
}
|
||||
if (bossZO->timer_056 == 0) {
|
||||
bossZO->timer_056 = 100;
|
||||
bossZO->swork[ZO_SWK_1] += 1;
|
||||
bossZO->swork[ZO_SWK_1] &= 1;
|
||||
bossZO->timer_056 = 100;
|
||||
}
|
||||
bossZO->fwork[ZO_FWK_5] += 4.0f;
|
||||
bossZO->vel.x = COS_DEG(bossZO->fwork[ZO_FWK_5]) * 40.0f;
|
||||
Math_SmoothStepToAngle(&bossZO->fwork[ZO_FWK_7],
|
||||
Math_RadToDeg(Math_Atan2F(bossZO->fwork[ZO_FWK_6] - bossZO->obj.pos.x,
|
||||
(D_i3_801BF6BC[bossZO->swork[ZO_SWK_1]] +
|
||||
(gPlayer[0].camEye.z - D_80177D20)) -
|
||||
bossZO->obj.pos.z)),
|
||||
0.1f, 100.0f, 0.001f);
|
||||
Math_SmoothStepToAngle(
|
||||
&bossZO->fwork[ZO_FWK_7],
|
||||
Math_RadToDeg(Math_Atan2F(bossZO->fwork[ZO_FWK_6] - bossZO->obj.pos.x,
|
||||
gPlayer[0].camEye.z - D_80177D20 +
|
||||
D_i3_801BF6BC[bossZO->swork[ZO_SWK_1]] - bossZO->obj.pos.z)),
|
||||
0.1f, 100.0f, 0.001f);
|
||||
Matrix_RotateY(gCalcMatrix, bossZO->fwork[ZO_FWK_7] * M_DTOR, 0);
|
||||
spE4.x = spE4.y = 0.0f;
|
||||
spE4.z = 20.0f;
|
||||
|
@ -2343,7 +2349,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
spE4.z = gPlayer[0].unk_138 - sZoFwork[ZO_BSF_93_Z];
|
||||
Matrix_MultVec3f(gCalcMatrix, &spE4, &spC0);
|
||||
sp10C = Math_RadToDeg(Math_Atan2F(spC0.x, spC0.z));
|
||||
sp110 = Math_RadToDeg(-Math_Atan2F(spC0.y, sqrtf((spC0.x * spC0.x) + (spC0.z * spC0.z))));
|
||||
sp110 = Math_RadToDeg(-Math_Atan2F(spC0.y, sqrtf(SQ(spC0.x) + SQ(spC0.z))));
|
||||
if ((sp10C > 40.0f) && (sp10C < 180.0f)) {
|
||||
sp10C = 40.0f;
|
||||
}
|
||||
|
@ -2382,12 +2388,9 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
func_i3_80198BE8(bossZO, 1);
|
||||
}
|
||||
break;
|
||||
case 4: /* switch 1 */
|
||||
case 4:
|
||||
if (bossZO->swork[ZO_SWK_15] == 0) {
|
||||
D_80178340 = 0;
|
||||
D_80178354 = 0;
|
||||
D_80178350 = 0;
|
||||
D_80178348 = 0;
|
||||
D_80178348 = D_80178350 = D_80178354 = D_80178340 = 0;
|
||||
}
|
||||
Math_SmoothStepToAngle(&bossZO->obj.rot.z, bossZO->fwork[ZO_FWK_9], 0.1f, 100.0f, 0.00001f);
|
||||
Math_SmoothStepToAngle(&bossZO->fwork[ZO_FWK_9], 0.0f, 0.1f, 100.0f, 0.00001f);
|
||||
|
@ -2422,11 +2425,11 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 5: /* switch 1 */
|
||||
case 5:
|
||||
Math_SmoothStepToAngle(&bossZO->obj.rot.z, bossZO->fwork[ZO_FWK_9], 0.1f, 100.0f, 0.00001f);
|
||||
Math_SmoothStepToAngle(&bossZO->fwork[ZO_FWK_9], 0.0f, 0.1f, 100.0f, 0.00001f);
|
||||
switch (sZoSwork[ZO_BSS_16]) { /* switch 3; irregular */
|
||||
case 0: /* switch 3 */
|
||||
switch (sZoSwork[ZO_BSS_16]) {
|
||||
case 0:
|
||||
if (sZoSwork[ZO_BSS_13] != 0) {
|
||||
func_i3_8019962C(bossZO, 180.0f);
|
||||
if (bossZO->obj.rot.y == 180.0f) {
|
||||
|
@ -2452,13 +2455,13 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 1: /* switch 3 */
|
||||
case 1:
|
||||
func_i3_80199470(bossZO, 0);
|
||||
break;
|
||||
case 2: /* switch 3 */
|
||||
case 2:
|
||||
func_i3_80199470(bossZO, 1);
|
||||
break;
|
||||
case 3: /* switch 3 */
|
||||
case 3:
|
||||
if (sZoSwork[ZO_BSS_13] != 0) {
|
||||
if (bossZO->timer_050 == 0) {
|
||||
Math_SmoothStepToF(&sZoFwork[ZO_BSF_4], 0.0f, 1.0f, 5.0f, 0.001f);
|
||||
|
@ -2489,7 +2492,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case 6: /* switch 1 */
|
||||
case 6:
|
||||
D_801779A8[0] = 20.0f;
|
||||
if (D_80178480 == 0) {
|
||||
D_80178348 = D_80178350 = D_80178354 = 255;
|
||||
|
@ -2528,7 +2531,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
Radio_PlayMessage(gMsg_ID_6079, RCID_BOSS_ZONESS);
|
||||
}
|
||||
if (bossZO->timer_050 == 0) {
|
||||
gEffects[98].obj.status = gEffects[99].obj.status = OBJ_FREE;
|
||||
gEffects[99].obj.status = gEffects[98].obj.status = OBJ_FREE;
|
||||
sZoFwork[ZO_BSF_25] = -1000.0f;
|
||||
sZoFwork[ZO_BSF_23] = 10.0f;
|
||||
gShowBossHealth = 0;
|
||||
|
@ -2545,7 +2548,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
gPlayer[0].unk_0E8 += 360.0f;
|
||||
}
|
||||
gPlayer[0].unk_114 = 0.0f;
|
||||
func_8004319C(gPlayer, bossZO->obj.pos.x, 0.0f, bossZO->obj.pos.z);
|
||||
func_8004319C(&gPlayer[0], bossZO->obj.pos.x, 0.0f, bossZO->obj.pos.z);
|
||||
}
|
||||
bossZO->timer_050 = 70;
|
||||
sZoSwork[ZO_BSS_5] = 0;
|
||||
|
@ -2554,7 +2557,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
bossZO->state = 7;
|
||||
}
|
||||
break;
|
||||
case 7: /* switch 1 */
|
||||
case 7:
|
||||
D_801779A8[0] = 20.0f;
|
||||
if (!(gGameFrameCount & 7) &&
|
||||
(func_800A73E4(&sp134, &sp130, bossZO->obj.pos.x, -300.0f, bossZO->obj.pos.z) != 0)) {
|
||||
|
@ -2565,7 +2568,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
Object_Kill(&bossZO->obj, bossZO->sfxPos);
|
||||
}
|
||||
break;
|
||||
case 8: /* switch 1 */
|
||||
case 8:
|
||||
if (sZoSwork[ZO_BSS_18] != 0) {
|
||||
if ((sZoSwork[ZO_BSS_27] != 2) && (bossZO->swork[ZO_SWK_5] == 0) && (bossZO->swork[ZO_SWK_6] < 2) &&
|
||||
((sZoSwork[ZO_BSS_33] == 0) || (sZoSwork[ZO_BSS_33] >= 30))) {
|
||||
|
@ -2748,9 +2751,9 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
if ((sZoSwork[ZO_BSS_13] < 2) && (sZoLimbTimers[ZO_LIMB_5] != LIMB_DESTROYED)) {
|
||||
D_801779A8[0] = 20.0f;
|
||||
if (!(gGameFrameCount & 1)) {
|
||||
func_8007D0E0(RAND_FLOAT_CENTERED(200.0f) + sZoFwork[ZO_BSF_52_X],
|
||||
RAND_FLOAT_CENTERED(200.0f) + sZoFwork[ZO_BSF_52_Y],
|
||||
RAND_FLOAT_CENTERED(100.0f) + sZoFwork[ZO_BSF_52_Z], 5.0f);
|
||||
func_8007D0E0(sZoFwork[ZO_BSF_52_X] + RAND_FLOAT_CENTERED(200.0f),
|
||||
sZoFwork[ZO_BSF_52_Y] + RAND_FLOAT_CENTERED(200.0f),
|
||||
sZoFwork[ZO_BSF_52_Z] + RAND_FLOAT_CENTERED(100.0f), 5.0f);
|
||||
}
|
||||
if (bossZO->swork[ZO_SWK_14] != 0) {
|
||||
if (sZoLimbTimers[ZO_LIMB_5] == 0) {
|
||||
|
@ -2784,21 +2787,21 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
if (dmgType == DMG_BEAM) {
|
||||
Audio_PlaySfx(0x29121007, bossZO->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
}
|
||||
switch (bossZO->dmgPart) { /* switch 2 */
|
||||
case 0: /* switch 2 */
|
||||
switch (bossZO->dmgPart) {
|
||||
case 0:
|
||||
if ((sZoSwork[ZO_BSS_8] != 0) && (dmgType == DMG_BOMB) &&
|
||||
((bossZO->state == 3) || (bossZO->state == 8))) {
|
||||
sZoLimbTimers[ZO_LIMB_1] = sZoLimbTimers[ZO_LIMB_14] = sZoLimbTimers[ZO_LIMB_15] = 15;
|
||||
sZoSwork[ZO_BSS_49] = 60;
|
||||
sZoSwork[ZO_BSS_8] -= bossZO->damage;
|
||||
if (sZoSwork[ZO_BSS_8] <= 0) {
|
||||
sZoSwork[ZO_BSS_8] = 0;
|
||||
sZoSwork[ZO_BSS_49] = 0;
|
||||
|
||||
sZoSwork[ZO_BSS_49] = sZoSwork[ZO_BSS_8] = 0;
|
||||
bossZO->swork[ZO_SWK_5] = 30;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3: /* switch 2 */
|
||||
case 3:
|
||||
if ((sZoSwork[ZO_BSS_9] != 0) && (bossZO->state == 3) && (dmgType == DMG_BOMB) &&
|
||||
(sZoSwork[ZO_BSS_50] == 0)) {
|
||||
sZoLimbTimers[ZO_LIMB_10] = 15;
|
||||
|
@ -2814,7 +2817,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 4: /* switch 2 */
|
||||
case 4:
|
||||
if ((sZoSwork[ZO_BSS_10] != 0) && (bossZO->state == 3) && (dmgType == DMG_BOMB) &&
|
||||
(sZoSwork[ZO_BSS_51] == 0)) {
|
||||
sZoLimbTimers[ZO_LIMB_2] = 15;
|
||||
|
@ -2830,7 +2833,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 5: /* switch 2 */
|
||||
case 5:
|
||||
if ((sZoSwork[ZO_BSS_9] != 0) && (bossZO->state == 3) && (dmgType == DMG_BOMB) &&
|
||||
(sZoSwork[ZO_BSS_50] == 0)) {
|
||||
sZoLimbTimers[ZO_LIMB_10] = 15;
|
||||
|
@ -2860,7 +2863,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
/* fallthrough */
|
||||
case 6: /* switch 2 */
|
||||
case 6:
|
||||
if ((bossZO->health != 0) && (sZoSwork[ZO_BSS_9] == 0) && (sZoSwork[ZO_BSS_10] == 0) &&
|
||||
(sZoSwork[ZO_BSS_11] == 0) && (sZoSwork[ZO_BSS_12] == 0) && (sZoSwork[ZO_BSS_13] == 0) &&
|
||||
(bossZO->state == 3)) {
|
||||
|
@ -2888,8 +2891,8 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 7: /* switch 2 */
|
||||
case 12: /* switch 2 */
|
||||
case 7:
|
||||
case 12:
|
||||
if ((sZoSwork[ZO_BSS_13] >= 2) && (bossZO->state == 5) && (dmgType == DMG_BOMB)) {
|
||||
sZoLimbTimers[ZO_LIMB_5] = sZoLimbTimers[ZO_LIMB_6] = 15;
|
||||
sZoSwork[ZO_BSS_52] = 30;
|
||||
|
@ -2905,8 +2908,8 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 8 + 0: /* switch 2 */
|
||||
case 10 + 0: /* switch 2 */
|
||||
case 8 + 0:
|
||||
case 10 + 0:
|
||||
if ((sZoSwork[ZO_BSS_11] != 0) && (bossZO->state == 3) && (dmgType == DMG_BOMB) &&
|
||||
(sZoSwork[ZO_BSS_53] == 0)) {
|
||||
sZoLimbTimers[ZO_LIMB_7] = sZoLimbTimers[ZO_LIMB_21] = sZoLimbTimers[ZO_LIMB_22] = 15;
|
||||
|
@ -2931,8 +2934,8 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 8 + 1: /* switch 2 */
|
||||
case 10 + 1: /* switch 2 */
|
||||
case 8 + 1:
|
||||
case 10 + 1:
|
||||
if ((sZoSwork[ZO_BSS_12] != 0) && (bossZO->state == 3) && (dmgType == DMG_BOMB) &&
|
||||
(sZoSwork[ZO_BSS_54] == 0)) {
|
||||
sZoLimbTimers[ZO_LIMB_11] = sZoLimbTimers[ZO_LIMB_23] = sZoLimbTimers[ZO_LIMB_24] = 15;
|
||||
|
@ -3009,9 +3012,9 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
sZoLimbTimers[sp124]--;
|
||||
}
|
||||
}
|
||||
for (sp124 = 0, temp2 = &sZoSwork[ZO_BSS_49]; sp124 < 6; sp124++, temp2++) {
|
||||
if (*temp2 != 0) {
|
||||
(*temp2)--;
|
||||
for (sp124 = 0; sp124 < 6; sp124++) { // may be using pointer iterators
|
||||
if (sZoSwork[ZO_BSS_49 + sp124] != 0) {
|
||||
sZoSwork[ZO_BSS_49 + sp124]--;
|
||||
}
|
||||
}
|
||||
if (bossZO->state < 4) {
|
||||
|
@ -3025,7 +3028,6 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
func_8007A6F0(&spD8, 0x29034003);
|
||||
}
|
||||
if ((sZoSwork[ZO_BSS_54] & 1) && (sZoSwork[ZO_BSS_12] != 0)) {
|
||||
// if (gCalcMatrix) {}
|
||||
func_8007A6F0(&spCC, 0x29034003);
|
||||
}
|
||||
}
|
||||
|
@ -3070,7 +3072,7 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
Radio_PlayMessage(gMsg_ID_2225, RCID_SLIPPY);
|
||||
}
|
||||
if (gBossFrameCount == 686) {
|
||||
gShowBossHealth = 1;
|
||||
gShowBossHealth = true;
|
||||
}
|
||||
if (gBossFrameCount > 686) {
|
||||
gBossHealthBar = bossZO->health / 300.0f * 64.0f;
|
||||
|
@ -3097,9 +3099,9 @@ void func_i3_80194A84(Boss* bossZO) {
|
|||
}
|
||||
}
|
||||
|
||||
for (sp124 = 0, temp2 = &sZoSwork[ZO_BSS_49], temp3 = &sZoFwork[ZO_BSF_112]; sp124 < 6; sp124++, temp2++, temp3++) {
|
||||
if ((!(&gPlayer[0].pos)) && (!(&gPlayer[0].pos))) {}
|
||||
*temp3 = SIN_DEG(*temp2 * 50.0f) * func_i3_80193CC8(*temp2);
|
||||
for (sp124 = 0; sp124 < 6; sp124++) { // may be using pointer iterators
|
||||
sZoFwork[ZO_BSF_112 + sp124] =
|
||||
SIN_DEG(sZoSwork[ZO_BSS_49 + sp124] * 50.0f) * func_i3_80193CC8(sZoSwork[ZO_BSS_49 + sp124]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
@ -3553,12 +3555,12 @@ void func_i3_80199F10(Actor* actor) {
|
|||
actor->obj.rot.y += 2.0f;
|
||||
func_i3_80199E9C(actor, 0.0f, 20.0f);
|
||||
switch (sZoSwork[ZO_BSS_16]) { /* switch 1; irregular */
|
||||
case 1: /* switch 1 */
|
||||
case 1:
|
||||
actor->fwork[1] = sZoFwork[ZO_BSF_68_Y] - sZoFwork[ZO_BSF_60_Y];
|
||||
Audio_PlaySfx(0x3100503E, actor->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
actor->state++;
|
||||
break;
|
||||
case 2: /* switch 1 */
|
||||
case 2:
|
||||
actor->fwork[1] = sZoFwork[ZO_BSF_71_Y] - sZoFwork[ZO_BSF_60_Y];
|
||||
Audio_PlaySfx(0x3100503E, actor->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
actor->state++;
|
||||
|
@ -3571,15 +3573,15 @@ void func_i3_80199F10(Actor* actor) {
|
|||
func_i3_80199E9C(actor, actor->fwork[1], 20.0f);
|
||||
} else {
|
||||
switch (sZoSwork[ZO_BSS_16]) {
|
||||
case 1: /* switch 2 */
|
||||
case 1:
|
||||
actor->fwork[1] = sZoFwork[ZO_BSF_68_Y] - sZoFwork[ZO_BSF_60_Y];
|
||||
func_i3_80199E9C(actor, actor->fwork[1], 20.0f);
|
||||
break;
|
||||
case 2: /* switch 2 */
|
||||
case 2:
|
||||
actor->fwork[1] = sZoFwork[ZO_BSF_71_Y] - sZoFwork[ZO_BSF_60_Y];
|
||||
func_i3_80199E9C(actor, actor->fwork[1], 20.0f);
|
||||
break;
|
||||
case 3: /* switch 2 */
|
||||
case 3:
|
||||
actor->obj.rot.y += 2.0f;
|
||||
if (gBosses[0].timer_050 != 0) {
|
||||
func_i3_80199E9C(actor, 0.0f, 10.0f);
|
||||
|
@ -4433,33 +4435,28 @@ void func_i3_8019CE58(Actor* actor) {
|
|||
gSPDisplayList(gMasterDisp++, D_60181E0);
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void func_i3_8019D060(Actor* actor) {
|
||||
s32 i;
|
||||
Actor* newActor;
|
||||
|
||||
for (i = 0, newActor = gActors; i < 60; i++, newActor++) {
|
||||
if (newActor->obj.status == OBJ_FREE) {
|
||||
Actor_Initialize(newActor);
|
||||
newActor->obj.status = OBJ_ACTIVE;
|
||||
newActor->obj.id = OBJ_ACTOR_247;
|
||||
newActor->obj.pos.x = actor->obj.pos.x;
|
||||
newActor->obj.pos.y = actor->obj.pos.y - 60.0f;
|
||||
newActor->fwork[2] = newActor->obj.pos.y;
|
||||
newActor->obj.pos.z = actor->obj.pos.z;
|
||||
for (i = 0; i < 60; i++) {
|
||||
if (gActors[i].obj.status == OBJ_FREE) {
|
||||
Actor_Initialize(&gActors[i]);
|
||||
gActors[i].obj.status = OBJ_ACTIVE;
|
||||
gActors[i].obj.id = OBJ_ACTOR_247;
|
||||
gActors[i].obj.pos.x = actor->obj.pos.x;
|
||||
gActors[i].obj.pos.y = actor->obj.pos.y - 60.0f;
|
||||
gActors[i].fwork[2] = gActors[i].obj.pos.y;
|
||||
gActors[i].obj.pos.z = actor->obj.pos.z;
|
||||
|
||||
newActor->state = 1;
|
||||
gActors[i].state = 1;
|
||||
|
||||
actor->unk_046 = i + 1;
|
||||
Object_SetInfo(&newActor->info, newActor->obj.id);
|
||||
newActor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_602C028);
|
||||
Object_SetInfo(&gActors[i].info, gActors[i].obj.id);
|
||||
gActors[i].info.hitbox = SEGMENTED_TO_VIRTUAL(D_602C028);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i3/fox_zo/func_i3_8019D060.s")
|
||||
#endif
|
||||
|
||||
void func_i3_8019D15C(Actor* actor) {
|
||||
Actor* temp_v0;
|
||||
|
@ -4573,17 +4570,15 @@ void func_i3_8019D428(Player* player) {
|
|||
D_80177CE8 += 40.0f;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// more use of temps and chain assigns
|
||||
void func_i3_8019D76C(Player* player) {
|
||||
f32 pad[4];
|
||||
f32 temp_fa0;
|
||||
f32 temp_ft5;
|
||||
f32 dx;
|
||||
f32 dz;
|
||||
s32 i;
|
||||
Vec3f sp58;
|
||||
Vec3f sp4C;
|
||||
Actor* var_a0;
|
||||
f32 temp_fa0;
|
||||
f32 temp_ft5;
|
||||
f32 pa2[2];
|
||||
Boss* boss = &gBosses[0];
|
||||
|
||||
switch (player->unk_1D0) {
|
||||
case 0:
|
||||
|
@ -4592,14 +4587,9 @@ void func_i3_8019D76C(Player* player) {
|
|||
player->unk_4D8 = 0.0f;
|
||||
player->unk_034 = 0.0f;
|
||||
player->unk_0D0 = 40.0f;
|
||||
player->unk_110 = 0.0f;
|
||||
player->unk_12C = 0.0f;
|
||||
player->unk_234 = 1;
|
||||
player->wings.unk_04 = 0.0f;
|
||||
player->wings.unk_0C = 0.0f;
|
||||
player->wings.unk_08 = 0.0f;
|
||||
player->wings.unk_10 = 0.0f;
|
||||
player->unk_130 = 0.0f;
|
||||
player->wings.unk_04 = player->wings.unk_0C = player->wings.unk_08 = player->wings.unk_10 =
|
||||
player->unk_130 = player->unk_12C = player->unk_110 = 0.0f;
|
||||
D_80177978 = player->camEye.x;
|
||||
D_80177980 = player->camEye.y;
|
||||
D_80177988 = player->camEye.z;
|
||||
|
@ -4628,8 +4618,9 @@ void func_i3_8019D76C(Player* player) {
|
|||
Math_SmoothStepToF(&player->pos.y, 200.0f, 0.05f, 10.0f, 0.0f);
|
||||
Math_SmoothStepToF(&D_80177980, 250.0f, 1.0f, 20.0f, 0.0f);
|
||||
Math_SmoothStepToF(&D_801779B8, 240.0f, 1.0f, 20.0f, 0.0f);
|
||||
temp_ft5 = Math_RadToDeg(
|
||||
-Math_Atan2F(player->pos.x - gBosses[0].obj.pos.x, (player->pos.z - gBosses[0].obj.pos.z) * 0.05f));
|
||||
dx = player->pos.x - boss->obj.pos.x;
|
||||
dz = (player->pos.z - boss->obj.pos.z) * 0.05f;
|
||||
temp_ft5 = Math_RadToDeg(-Math_Atan2F(dx, dz));
|
||||
temp_fa0 = Math_SmoothStepToAngle(&player->unk_0E8, temp_ft5, 0.5f, 2.0f, 0.0001f) * 30.0f;
|
||||
if (gCsFrameCount >= 14) {
|
||||
Math_SmoothStepToAngle(&player->unk_0EC, temp_fa0, 0.1f, 5.0f, 0.0001f);
|
||||
|
@ -4656,7 +4647,7 @@ void func_i3_8019D76C(Player* player) {
|
|||
player->unk_0EC = 0.0f;
|
||||
}
|
||||
break;
|
||||
case 2: /* switch 1 */
|
||||
case 2:
|
||||
D_80177CE8 += 60.0f;
|
||||
if (player->timer_1F8 == 0) {
|
||||
player->pos.x = 0.0f;
|
||||
|
@ -4673,9 +4664,7 @@ void func_i3_8019D76C(Player* player) {
|
|||
if (D_80161684 == 0) {
|
||||
D_80177A48[1] = 330.0f;
|
||||
player->camEye.x = 1350.0f;
|
||||
|
||||
player->camAt.x = D_801779A0 = 1450.0f;
|
||||
// 1350.0f;
|
||||
D_80177A48[3] = 800.0f;
|
||||
D_80177A48[4] = -0.15f;
|
||||
D_80177A48[5] = -250.0f;
|
||||
|
@ -4694,7 +4683,7 @@ void func_i3_8019D76C(Player* player) {
|
|||
D_80177A48[0] = 0.0f;
|
||||
}
|
||||
break;
|
||||
case 3: /* switch 1 */
|
||||
case 3:
|
||||
D_80177CE8 += 60.0f;
|
||||
D_80178358 = 0;
|
||||
D_8017835C = 4;
|
||||
|
@ -4734,9 +4723,7 @@ void func_i3_8019D76C(Player* player) {
|
|||
}
|
||||
if (gCsFrameCount >= 1271) {
|
||||
D_80178358 = 255;
|
||||
D_80178354 = 0;
|
||||
D_80178350 = 0;
|
||||
D_80178348 = 0;
|
||||
D_80178348 = D_80178350 = D_80178354 = 0;
|
||||
D_8017835C = 8;
|
||||
if (D_80178340 == 255) {
|
||||
func_8001CA24(0);
|
||||
|
@ -4803,31 +4790,31 @@ void func_i3_8019D76C(Player* player) {
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case 906: /* switch 2 */
|
||||
case 906:
|
||||
D_80177830 = 1;
|
||||
break;
|
||||
case 1106: /* switch 2 */
|
||||
case 1106:
|
||||
D_80177830 = 0;
|
||||
break;
|
||||
case 1180: /* switch 2 */
|
||||
case 1180:
|
||||
Audio_PlaySfx(0x09000002, player->sfxPos, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
player->unk_190 = player->unk_194 = 5.0f;
|
||||
break;
|
||||
case 1240: /* switch 2 */
|
||||
case 1240:
|
||||
func_800182F4(0x103200FF);
|
||||
func_800182F4(0x113200FF);
|
||||
break;
|
||||
case 1120: /* switch 2 */
|
||||
case 1120:
|
||||
if (gTeamShields[3] > 0) {
|
||||
gActors[0].state = 2;
|
||||
}
|
||||
break;
|
||||
case 1140: /* switch 2 */
|
||||
case 1140:
|
||||
if (gTeamShields[2] > 0) {
|
||||
gActors[1].state = 2;
|
||||
}
|
||||
break;
|
||||
case 1160: /* switch 2 */
|
||||
case 1160:
|
||||
if (gTeamShields[1] > 0) {
|
||||
gActors[2].state = 2;
|
||||
}
|
||||
|
@ -4863,16 +4850,11 @@ void func_i3_8019D76C(Player* player) {
|
|||
player->unk_0F4 += 8.0f;
|
||||
player->unk_0F0 = SIN_DEG(player->unk_0F4);
|
||||
}
|
||||
#else
|
||||
// zoness outro
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i3/fox_zo/func_i3_8019D76C.s")
|
||||
#endif
|
||||
|
||||
void func_i3_8019E5F0(Actor* actor) {
|
||||
Vec3f sp34;
|
||||
Vec3f sp28;
|
||||
|
||||
(void) "Demo_Time %d\n"; // goes in above function, probably
|
||||
switch (actor->state) {
|
||||
case 4:
|
||||
case 5:
|
||||
|
|
|
@ -3511,7 +3511,9 @@ void func_i6_80193AE4(s32 actorIndex) {
|
|||
Audio_PlaySfx(0x3100000C, actor->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
}
|
||||
|
||||
extern s32 D_fake_i6_80196D00;
|
||||
//! @bug This references a variable in another overlay, causing undefined behavior
|
||||
//! In US v1.1, that address contains the store instruction for player->vel.y = vel.y; in func_i6_80196BF8
|
||||
extern s32 D_ending_80196D00;
|
||||
|
||||
void func_i6_80193C4C(Player* player) {
|
||||
s32 i;
|
||||
|
@ -3983,7 +3985,7 @@ void func_i6_80193C4C(Player* player) {
|
|||
D_80178358 = 255;
|
||||
if (D_80178340 == 0xFF) {
|
||||
gNextGameState = GSTATE_CREDITS;
|
||||
D_fake_i6_80196D00 = 0;
|
||||
D_ending_80196D00 = 0;
|
||||
D_800D3180[9] = Play_CheckMedalStatus(200) + 1;
|
||||
func_8001DC6C(0, 0x1B);
|
||||
}
|
||||
|
|
|
@ -16,11 +16,15 @@ compiler_type = "ido"
|
|||
"RAD_TO_DEG" = "float"
|
||||
"DEG_TO_RAD" = "float"
|
||||
"NULL" = "void*"
|
||||
"RAND_F*" = "float"
|
||||
"RAND_I*" = "int"
|
||||
"RAND_D*" = "double"
|
||||
"RAND_F.*" = "float"
|
||||
"RAND_I.*" = "int"
|
||||
"RAND_D.*" = "double"
|
||||
"RAND_RANGE" = "float"
|
||||
|
||||
"SIN_DEG" = "float"
|
||||
"COS_DEG" = "float"
|
||||
"true" = "int"
|
||||
"false" = "int"
|
||||
"DMG_.*" = "int"
|
||||
|
||||
[decompme.compilers]
|
||||
"tools/ido-recomp/linux/cc" = "ido5.3"
|
Loading…
Add table
Add a link
Reference in a new issue