fox_ve2 decompiled (#96)

* match remaining funcs

* arg renames and cleanup pt 1

* hex pass, id to enum and some basic docs

* data, bss and format

* change file name

* commit pr suggestions
This commit is contained in:
inspectredc 2024-01-21 15:30:53 +00:00 committed by GitHub
parent 2b101658fe
commit 770f48bf4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 4163 additions and 732 deletions

View File

@ -1174,4 +1174,17 @@ extern Gfx D_9005380[];
extern Gfx D_90075A0[]; extern Gfx D_90075A0[];
extern Gfx D_9004230[]; extern Gfx D_9004230[];
extern Gfx D_C001880[];
extern f32 D_C037FCC[];
extern f32 D_C0380C0[];
extern f32 D_C0381B4[];
extern f32 D_C0382A8[];
extern f32 D_C03839C[];
extern f32 D_C038490[];
extern f32 D_C038584[];
extern f32 D_C038678[];
extern f32 D_C03876C[];
extern f32 D_C038860[];
extern f32 D_C038954[];
#endif // ASSETS_H #endif // ASSETS_H

View File

@ -8,11 +8,22 @@
#include "sf64player.h" #include "sf64player.h"
#include "sf64mesg.h" #include "sf64mesg.h"
extern f32 D_i6_801A7F40;
extern f32 D_i6_801A7F44;
extern f32 D_i6_801A7F48;
extern f32 D_i6_801A7F4C;
extern f32 D_i6_801A7F50;
extern f32 D_i6_801A7F54;
extern f32 D_i6_801A7F58; extern f32 D_i6_801A7F58;
extern f32 D_i6_801A7F5C;
extern f32 D_i6_801A7F60; extern f32 D_i6_801A7F60;
extern f32 D_i6_801A7F64;
extern f32 D_i6_801A7F68; extern f32 D_i6_801A7F68;
extern f32 D_i6_801A7F6C;
extern f32 D_i6_801A7F70; extern f32 D_i6_801A7F70;
extern f32 D_i6_801A7F74;
extern f32 D_i6_801A7F78; extern f32 D_i6_801A7F78;
extern f32 D_i6_801A7F7C;
void func_i6_80193C4C(Player*); void func_i6_80193C4C(Player*);
void func_i6_80195E44(Actor*); void func_i6_80195E44(Actor*);

View File

@ -831,3 +831,18 @@ D_9002EA0 = 0x09002EA0;
D_9005380 = 0x09005380; D_9005380 = 0x09005380;
D_90075A0 = 0x090075A0; D_90075A0 = 0x090075A0;
D_9004230 = 0x09004230; D_9004230 = 0x09004230;
D_C001880 = 0x0C001880;
D_C037FCC = 0x0C037FCC;
D_C0380C0 = 0x0C0380C0;
D_C0381B4 = 0x0C0381B4;
D_C0382A8 = 0x0C0382A8;
D_C03839C = 0x0C03839C;
D_C038490 = 0x0C038490;
D_C038584 = 0x0C038584;
D_C038678 = 0x0C038678;
D_C03876C = 0x0C03876C;
D_C038860 = 0x0C038860;
D_C038954 = 0x0C038954;
D_fake_i6_80196D00 = 0x80196D00;

File diff suppressed because it is too large Load Diff

View File

@ -1,728 +0,0 @@
#include "global.h"
extern s32 D_i6_801A6760[12];
extern f32 D_i6_801A7F64[2];
void func_i6_80187530(Actor* actor) {
s32 index;
switch (actor->unk_048) {
case 0:
break;
case 1:
actor->unk_0B6 += (s32) actor->fwork[22];
if (actor->unk_0B6 >= Animation_GetFrameCount(&D_6014658)) {
actor->unk_0B6 = Animation_GetFrameCount(&D_6014658) - 1;
}
break;
case 2:
actor->unk_0B6 -= (s32) actor->fwork[22];
if (actor->unk_0B6 <= 0) {
actor->unk_0B6 = 0;
}
break;
default:
break;
}
index = actor->unk_0B6 / 18.0f;
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_i6_801A6760[index]);
actor->obj.rot.z = D_i6_801A7F64[1];
}
s32 func_i6_8018767C(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* arg4) {
if (arg0 == 13) {
*arg1 = 0;
}
return 0;
}
extern Limb* D_6014844[];
void func_i6_8018769C(Actor* actor) {
Vec3f sp28[20];
Animation_GetFrameData(&D_6014658, actor->unk_0B6, sp28);
Animation_DrawSkeleton(1, D_6014844, sp28, func_i6_8018767C, NULL, NULL, &gIdentityMatrix);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801876FC.s")
extern ObjectInit* D_C0356CC;
extern f32* D_C038CCC;
void func_i6_801878A8() {
Actor* var_s0_2;
Item* var_s0_3;
Object_58* var_s0;
s32 i;
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C0356CC);
for (var_s0 = gObjects58, i = 0; i < 1000; i++) {
if (D_80178310[i].id < 0) {
break;
}
if (D_80178310[i].id < 0xA1) {
func_800A4F4C(var_s0);
var_s0->obj.status = 2;
var_s0->obj.id = D_80178310[i].id;
var_s0->obj.pos.x = D_80178310[i].xPos;
var_s0->obj.pos.z = -D_80178310[i].zPos1;
var_s0->obj.pos.z += D_80178310[i].zPos2;
var_s0->obj.pos.y = D_80178310[i].yPos;
var_s0->obj.rot.y = D_80178310[i].rot.y;
Object_SetInfo(&var_s0->info, var_s0->obj.id);
if (var_s0->obj.id == 0x83) {
var_s0->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_C038CCC);
}
var_s0++;
}
}
for (var_s0_2 = &gActors[1], i = 0; i < 1000; i++) {
if (D_80178310[i].id < 0) {
break;
}
if ((D_80178310[i].id < 0x124) && (D_80178310[i].id >= 0xB0)) {
Actor_Initialize(var_s0_2);
var_s0_2->obj.status = 2;
var_s0_2->obj.id = D_80178310[i].id;
var_s0_2->obj.pos.x = D_80178310[i].xPos;
var_s0_2->obj.pos.z = -D_80178310[i].zPos1;
var_s0_2->obj.pos.z += D_80178310[i].zPos2;
var_s0_2->obj.pos.y = D_80178310[i].yPos;
var_s0_2->obj.rot.y = D_80178310[i].rot.y;
Object_SetInfo(&var_s0_2->info, var_s0_2->obj.id);
var_s0_2++;
}
}
for (var_s0_3 = gItems, i = 0; i < 1000; i++) {
if (D_80178310[i].id < 0) {
break;
}
if ((D_80178310[i].id < 0x153) && (D_80178310[i].id >= 0x142)) {
Item_Initialize(var_s0_3);
var_s0_3->obj.status = 2;
var_s0_3->obj.id = D_80178310[i].id;
var_s0_3->obj.pos.x = D_80178310[i].xPos;
var_s0_3->obj.pos.z = -D_80178310[i].zPos1;
var_s0_3->obj.pos.z += D_80178310[i].zPos2;
var_s0_3->obj.pos.y = D_80178310[i].yPos;
Object_SetInfo(&var_s0_3->info, var_s0_3->obj.id);
var_s0_3++;
}
}
}
extern ObjectInit* D_C036310;
extern ObjectInit* D_C036B6C;
extern ObjectInit* D_C03733C;
void func_i6_80187C5C(void) {
Actor* var_s0_2;
Item* var_s0_3;
Object_58* var_s0;
s32 i;
switch ((s32) (Rand_ZeroOne() * 2.9f)) {
case 0:
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C036310);
break;
case 1:
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C036B6C);
break;
default:
case 2:
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C03733C);
break;
}
for (var_s0 = gObjects58, i = 0; i < 1000; i++) {
if (D_80178310[i].id < 0) {
break;
}
if (D_80178310[i].id < 0xA1) {
func_800A4F4C(var_s0);
var_s0->obj.status = 2;
var_s0->obj.id = D_80178310[i].id;
var_s0->obj.pos.x = D_80178310[i].xPos;
var_s0->obj.pos.z = -D_80178310[i].zPos1;
var_s0->obj.pos.z += D_80178310[i].zPos2;
var_s0->obj.pos.y = D_80178310[i].yPos;
var_s0->obj.rot.y = D_80178310[i].rot.y;
if (var_s0->obj.id == 0x93) {
var_s0->unk40[0] = D_80178310[i].rot.z;
}
Object_SetInfo(&var_s0->info, var_s0->obj.id);
if (var_s0->obj.id == 0x83) {
var_s0->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_C038CCC);
}
var_s0++;
}
}
for (var_s0_2 = &gActors[1], i = 0; i < 1000; i++) {
if (D_80178310[i].id < 0) {
break;
}
if ((D_80178310[i].id < 0x124) && (D_80178310[i].id >= 0xB0)) {
Actor_Initialize(var_s0_2);
var_s0_2->obj.status = 2;
var_s0_2->obj.id = D_80178310[i].id;
var_s0_2->obj.pos.x = D_80178310[i].xPos;
var_s0_2->obj.pos.z = -D_80178310[i].zPos1;
var_s0_2->obj.pos.z += D_80178310[i].zPos2;
var_s0_2->obj.pos.y = D_80178310[i].yPos;
var_s0_2->obj.rot.y = D_80178310[i].rot.y;
Object_SetInfo(&var_s0_2->info, var_s0_2->obj.id);
var_s0_2++;
}
}
for (var_s0_3 = gItems, i = 0; i < 1000; i++) {
if (D_80178310[i].id < 0) {
break;
}
if ((D_80178310[i].id < 0x153) && (D_80178310[i].id >= 0x142)) {
Item_Initialize(var_s0_3);
var_s0_3->obj.status = 2;
var_s0_3->obj.id = D_80178310[i].id;
var_s0_3->obj.pos.x = D_80178310[i].xPos;
var_s0_3->obj.pos.z = -D_80178310[i].zPos1;
var_s0_3->obj.pos.z += D_80178310[i].zPos2;
var_s0_3->obj.pos.y = D_80178310[i].yPos;
Object_SetInfo(&var_s0_3->info, var_s0_3->obj.id);
var_s0_3++;
}
}
}
void func_i6_801880E4(Actor* arg0) {
s32 i;
Vec3f sp60;
Object_58* var_v0;
f32 sp58;
f32 var_fv0;
Vec3f sp48;
Vec3f sp3C;
f32 temp_fv1;
for (var_v0 = gObjects58, i = 0; i < 0xC8; i++, var_v0++) {
if ((var_v0->obj.id == 0x93) && ((u8) arg0->unk_04E == (u8) var_v0->unk40[0])) {
arg0->fwork[3] = var_v0->obj.pos.x;
arg0->fwork[4] = var_v0->obj.pos.y;
arg0->fwork[5] = var_v0->obj.pos.z;
break;
}
}
arg0->fwork[2] = 3.0f;
sp60.z = arg0->fwork[3] - arg0->obj.pos.x;
sp60.y = arg0->fwork[4] - arg0->obj.pos.y;
sp60.x = arg0->fwork[5] - arg0->obj.pos.z;
if ((fabsf(sp60.z) < 300.0f) && (fabsf(sp60.y) < 300.0f) && (fabsf(sp60.x) < 300.0f)) {
arg0->unk_04E += 1;
}
if (!(gGameFrameCount & 0x1F)) {
arg0->iwork[0xB] = 1;
arg0->fwork[1] = 47.0f;
if ((fabsf(arg0->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) &&
(fabsf(arg0->obj.pos.y - gPlayer[0].pos.y) < 500.0f) &&
(fabsf(arg0->obj.pos.z - gPlayer[0].unk_138) < 1000.0f)) {
arg0->iwork[0xB] = 2;
arg0->fwork[1] = 65.0f;
}
}
Math_SmoothStepToF(arg0->fwork, arg0->fwork[1], 0.2f, 3.0f, 0.00001f);
sp58 = Math_RadToDeg(Math_Atan2F(sp60.z, sp60.x));
Math_SmoothStepToAngle(&arg0->unk_0F4.x, Math_RadToDeg(Math_Atan2F(sp60.y, sqrtf(SQ(sp60.z) + SQ(sp60.x)))), 0.1f,
arg0->fwork[2], 0.0f);
temp_fv1 = Math_SmoothStepToAngle(&arg0->unk_0F4.y, sp58, 0.1f, arg0->fwork[2], 0.0001f) * 40.0f;
if (temp_fv1 < 0.0f) {
var_fv0 = temp_fv1 * -1.0f;
} else {
var_fv0 = 360.0f - temp_fv1;
}
Math_SmoothStepToAngle(&arg0->obj.rot.z, var_fv0, 0.1f, 3.0f, 0.01f);
arg0->obj.rot.y = arg0->unk_0F4.y;
arg0->obj.rot.x = -arg0->unk_0F4.x;
Matrix_RotateY(gCalcMatrix, arg0->unk_0F4.y * M_DTOR, 0);
Matrix_RotateX(gCalcMatrix, -arg0->unk_0F4.x * M_DTOR, 1);
sp48.x = 0;
sp48.y = 0;
sp48.z = arg0->fwork[0];
Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp48, &sp3C);
arg0->vel.x = sp3C.x;
arg0->vel.y = sp3C.y;
arg0->vel.z = sp3C.z;
}
void func_i6_80188448(Actor* arg0) {
func_8005B388(arg0);
}
void func_i6_80188468(void) {
Actor* actor = &gActors[0];
Actor_Initialize(actor);
actor->obj.status = 2;
actor->obj.pos.x = -23180.0f;
actor->obj.pos.y = 300.0f;
actor->obj.pos.z = -11959.0f;
actor->iwork[0xB] = 1;
actor->iwork[0xE] = 1;
actor->obj.id = 0xC7;
Object_SetInfo(&actor->info, actor->obj.id);
Audio_PlaySfx(0x3100000C, &actor->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
}
void func_i6_80188528(Actor* arg0) {
Math_SmoothStepToF(&arg0->vel.x, 0.0f, 0.2f, 0.5f, 0.0f);
Math_SmoothStepToF(&arg0->vel.y, 0.0f, 0.2f, 0.5f, 0.0f);
Math_SmoothStepToF(&arg0->vel.z, 0.0f, 0.2f, 0.5f, 0.0f);
if (arg0->unk_0D0 != 0) {
func_8007A6F0(&arg0->obj.pos, 0x2903A008);
Object_Kill(&arg0->obj, &arg0->sfxPos);
func_8007B344(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 3.0f, 5);
} else if (arg0->timer_0BC == 0) {
Object_Kill(&arg0->obj, &arg0->sfxPos);
}
arg0->obj.rot.y = RAD_TO_DEG(-gPlayer[0].unk_058);
arg0->obj.rot.x = RAD_TO_DEG(gPlayer[0].unk_05C);
arg0->unk_0F4.z += arg0->fwork[0];
}
extern Gfx* D_6009300;
void func_i6_80188660(Actor* arg0) {
RCP_SetupDL(&gMasterDisp, 0x3D);
GPC(255, 255, 255, 255);
Matrix_RotateZ(gGfxMatrix, arg0->unk_0F4.z * M_DTOR, 1);
Matrix_Scale(gGfxMatrix, 1.1f, 0.9f, 1.0f, 1);
Matrix_RotateZ(gGfxMatrix, -arg0->unk_0F4.z * M_DTOR, 1);
Matrix_Scale(gGfxMatrix, 1.1f, 0.9f, 1.0f, 1);
Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
GDL(&D_6009300);
}
void func_i6_801887B0(Actor* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) {
Actor_Initialize(arg0);
arg0->obj.status = 2;
arg0->obj.id = 0x11E;
arg0->vel.x = arg4;
arg0->vel.y = arg5;
arg0->vel.z = arg6;
arg0->obj.pos.x = arg1;
arg0->obj.pos.y = arg2;
arg0->obj.pos.z = arg3;
if (Rand_ZeroOne() < 0.5f) {
arg0->fwork[0] = 10.0f;
} else {
arg0->fwork[0] = -10.0f;
}
arg0->timer_0BC = 300;
Object_SetInfo(&arg0->info, arg0->obj.id);
}
void func_i6_8018887C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
s32 i;
for (i = 0; i < ARRAY_COUNT(gActors); i++) {
if (gActors[i].obj.status == 0) {
func_i6_801887B0(&gActors[i], arg0, arg1, arg2, arg3, arg4, arg5);
break;
}
}
}
void func_i6_801888F4(Actor* arg0) {
s32 i;
arg0->obj.rot.z -= 8.0f;
if ((arg0->timer_0BC & 1) == 1) {
func_8007D2C8(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 5.0f);
}
if ((arg0->timer_0BC == 0) || (arg0->unk_0D0 != 0)) {
func_8007BFFC(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, arg0->vel.x, arg0->vel.y, arg0->vel.z, 7.0f,
20);
func_8007B344(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 10.0f, 5);
for (i = 0; i < 6; i++) {
func_800794CC(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1.0f);
}
func_8007A6F0(&arg0->obj.pos, 0x2903B009);
Object_Kill(&arg0->obj, &arg0->sfxPos);
func_80077240(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 5);
gHitCount += 6;
D_80177850 = 0xF;
}
}
void func_i6_80188A4C(Boss* arg0) {
if (arg0->damage >= 21) {
arg0->damage = 20;
}
if (arg0->dmgType != 0) {
arg0->dmgType = 0;
if (arg0->actionState < 0xA && !(arg0->fwork[0x15] < 250.0f)) {
switch (arg0->dmgPart) {
case 0:
arg0->swork[1] = 0xF;
arg0->swork[7] = 0x1E;
return;
case 1:
case 2:
if (arg0->swork[4] == 0) {
arg0->swork[2] = 0xA;
arg0->swork[3] = 0xF;
Audio_PlaySfx(0x2943500FU, &arg0->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
arg0->health -= arg0->damage;
if ((arg0->health != 0) && (arg0->health <= 0)) {
D_Timer_80161A60 = 8;
Audio_PlaySfx(0x2940D09AU, &arg0->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
func_80042EC0(arg0);
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_0;
arg0->actionState = 20;
arg0->swork[1] = 1000;
arg0->swork[2] = 1000;
arg0->swork[6] = 1;
D_80177A48[0] = 0.0f;
D_80177A48[1] = 0.1f;
D_80177A80 = 0;
func_8001A55C(&arg0->sfxPos, 0x11034074U);
func_8001A55C(&arg0->sfxPos, 0x31408097U);
func_800182F4(0x100100FF);
func_800182F4(0x110100FF);
}
}
break;
default:
if (arg0->swork[4] == 0) {
arg0->swork[8]++;
if (arg0->swork[8] >= 6) {
arg0->swork[8] = 0;
arg0->actionState = 12;
arg0->timer_050 = 50;
arg0->fwork[3] = gPlayer[0].pos.x;
arg0->fwork[5] = gPlayer[0].unk_138;
Audio_PlaySfx(0x2940B096U, &arg0->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
}
}
break;
}
}
}
}
extern AnimationHeader D_600C038;
void func_i6_80188CB8(Boss* arg0) {
s32 i;
Vec3f sp50;
Vec3f sp44;
arg0->unk_04C++;
if (arg0->unk_04C >= Animation_GetFrameCount(&D_600C038)) {
arg0->unk_04C = 0;
}
Animation_GetFrameData(&D_600C038, arg0->unk_04C, arg0->vwork);
if (arg0->swork[3] != 0) {
arg0->swork[3]--;
}
if (arg0->swork[2] != 0) {
arg0->swork[2]--;
Math_SmoothStepToF(&arg0->fwork[15], -15.0f, 0.8f, 5.0f, 0.0f);
Math_SmoothStepToF(&arg0->fwork[16], 0.05f, 0.8f, 0.02f, 0.0f);
} else {
Math_SmoothStepToF(&arg0->fwork[15], 4.0f, 0.05f, 0.2f, 0.0f);
Math_SmoothStepToF(&arg0->fwork[16], 0.03f, 0.05f, 0.001f, 0.0f);
}
Math_SmoothStepToF(&arg0->fwork[10], arg0->fwork[11], arg0->fwork[12], arg0->fwork[13], 0.0f);
if (arg0->swork[1] != 0) {
arg0->swork[1]--;
arg0->fwork[11] = 30.0f;
arg0->fwork[12] = 0.8f;
arg0->fwork[13] = 3.0f;
} else {
arg0->fwork[11] = 8.0f;
arg0->fwork[12] = 0.05f;
arg0->fwork[13] = 0.5f;
}
if (arg0->swork[7] != 0) {
arg0->swork[7]--;
if (!(gGameFrameCount & 1)) {
func_i6_8018887C(((Rand_ZeroOne() - 0.5f) * 100.0f) + arg0->obj.pos.x,
((Rand_ZeroOne() - 0.5f) * 300.0f) + (arg0->obj.pos.y - 250.0f),
((Rand_ZeroOne() - 0.5f) * 100.0f) + arg0->obj.pos.z, (Rand_ZeroOne() - 0.5f) * 50.0f,
(Rand_ZeroOne() - 0.5f) * 10.0f, (Rand_ZeroOne() - 0.5f) * 50.0f);
}
}
arg0->fwork[14] += arg0->fwork[15];
Matrix_RotateY(gCalcMatrix, -gPlayer[0].unk_058, 0);
sp50.x = arg0->vel.z * 0.25f;
sp50.y = 0.0f;
sp50.z = arg0->vel.x * 0.25f;
Matrix_MultVec3f(gCalcMatrix, &sp50, &sp44);
arg0->fwork[18] = -sp44.z;
arg0->fwork[17] = sp44.x;
arg0->swork[4] = 0;
arg0->fwork[19] = -26.0f;
for (i = 10; i < 12; i++) {
if ((gActors[i].obj.status == 2) && (gActors[i].obj.id == 0xC5)) {
gUnkEntities30[i].mode = 50;
gUnkEntities30[i].unk_28 = 1.0f;
gUnkEntities30[i].unk_04.x = arg0->obj.pos.x;
gUnkEntities30[i].unk_04.y = arg0->obj.pos.y - 200.0f;
gUnkEntities30[i].unk_04.z = arg0->obj.pos.z;
gUnkEntities30[i].timer = 3;
gUnkEntities30[i].unk_10.x = gActors[i].obj.pos.x;
gUnkEntities30[i].unk_10.y = gActors[i].obj.pos.y;
gUnkEntities30[i].unk_10.z = gActors[i].obj.pos.z;
arg0->swork[4] = 1;
}
}
}
void func_i6_80189098(Object* arg0) {
Actor* actor = &gActors[10];
Actor_Initialize(actor);
actor->obj.status = 1;
actor->obj.id = 0xC5;
actor->unk_0E4 = 10;
actor->unk_0E6 = 0;
actor->unk_0CE = 200;
actor->obj.pos.x = 200.0f;
actor->obj.pos.y = 0.0f;
actor->obj.pos.z = arg0->pos.z;
Object_SetInfo(&actor->info, actor->obj.id);
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_800CBEA8);
actor++;
Actor_Initialize(actor);
actor->obj.status = 1;
actor->obj.id = 0xC5;
actor->unk_0E4 = 0xA;
actor->unk_0E6 = 0;
actor->unk_0CE = 200;
actor->obj.pos.x = -200.0f;
actor->obj.pos.y = 0.0f;
actor->obj.pos.z = arg0->pos.z;
Object_SetInfo(&actor->info, actor->obj.id);
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_800CBEA8);
gActors[0].unk_0B8 = 2;
}
extern void func_800B56BC(Player*);
void func_i6_80189214(void) {
s32 i;
Player* player = &gPlayer[0];
func_800A6148();
for (i = 0; i < 200; i++) {
gObjects58[i].obj.status = 0;
}
gLevelMode = 0;
player->unk_204 = 0;
gPlayer[0].pos.x = 0.0f;
player->camEye.z = 400.0f;
player->camAt.z = player->camEye.z - 1000.0f;
player->unk_148 = player->unk_14C = 0.74f;
player->camEye.y = player->pos.y * player->unk_14C + 10.0f;
player->camEye.x = player->pos.x * player->unk_148;
D_80177DC8 = 0;
// FAKE
if (1) {}
player->camAt.x = 0.0f;
player->camAt.y = 0.0f;
player->unk_114 = 0.0f;
player->unk_144 = 0.0f;
D_80177D20 = 0.0f;
player->unk_018 = player->unk_014 = 1.0f;
player->pos.z = player->unk_138 = -player->unk_144;
func_800B56BC(player);
}
void func_i6_8018933C(Actor* arg0) {
if ((fabsf(arg0->obj.pos.x - gPlayer->pos.x) < 1000.0f) && (fabsf(arg0->obj.pos.z - gPlayer->unk_138) < 1000.0f)) {
D_Timer_80177B44 = 0x32;
Object_Kill(&arg0->obj, &arg0->sfxPos);
}
}
void func_i6_801893B8(Actor* arg0) {
if (D_8015F924 == 0) {
arg0->unk_04E++;
switch (arg0->unk_04E) {
case 200:
func_800BA808(gMsg_ID_8250, RCID_ANDROSS_RED);
return;
case 400:
func_800BA808(gMsg_ID_8255, RCID_ANDROSS_RED);
return;
case 600:
func_800BA808(gMsg_ID_8260, RCID_ANDROSS_RED);
return;
case 800:
func_800BA808(gMsg_ID_19325, RCID_ANDROSS_RED);
break;
}
}
}
void func_i6_80193710(void);
void func_i6_80189470(Actor* arg0) {
s32 i;
Player* player = &gPlayer[0];
if ((D_80177AB0 != 7) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) &&
(fabsf(arg0->obj.pos.x - gPlayer[0].pos.x) < 9000.0f) &&
(fabsf(arg0->obj.pos.z - gPlayer[0].unk_138) < 9000.0f)) {
D_80177AB0 = 7;
func_800BA808(gMsg_ID_19370, RCID_JAMES);
func_800182F4(0x101400FF);
func_800182F4(0x111400FF);
}
if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) && (fabsf(arg0->obj.pos.x - gPlayer[0].pos.x) < 500.0f) &&
(fabsf(arg0->obj.pos.z - gPlayer[0].unk_138) < 500.0f)) {
func_8001A838(0x11403076);
func_8001D400(0);
gCurrentLevel = LEVEL_VENOM_2;
D_8017827C = 1;
D_800D2F68 = 1;
player->state_1C8 = PLAYERSTATE_1C8_7;
player->unk_1D0 = 3;
player->unk_144 = D_80177D20 = 0.0f;
D_80177AB0 = D_80177A98 = 1;
player->camEye.x = 1200.0f;
player->camEye.z = 1200.0f;
player->camEye.y = 1800.0f;
D_801779A0 = 0.0f;
D_801779B8 = 620.0f;
D_801779C0 = 0.0f;
player->unk_234 = 0;
player->unk_034 = 0.0f;
D_80177A48[0] = 1.0f;
func_800A6148();
for (i = 0; i < 200; i++) {
gObjects58[i].obj.status = 0;
}
func_i6_80193710();
D_8017782C = 1;
func_800A594C();
D_80178348 = D_80178350 = D_80178354 = 0;
D_80178340 = D_80178358 = 0xFF;
player->timer_1F8 = 2;
D_80177A80 = 0;
D_80177A48[1] = 0.0f;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80189724.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801899E4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80189B00.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80189B70.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018B47C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018B8C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018BDD8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018C390.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018C660.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018C734.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018C7A0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018C8D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018C958.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018CA50.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018CAD4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018CF98.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018D0D8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018D16C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018D2B0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018D9C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018DA94.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8018DBF0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801917F0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801924B4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801928C8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80192E94.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80193244.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80193380.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801934EC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8019350C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_8019356C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801935B4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801935D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80193668.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80193710.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801939A0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80193AE4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80193C4C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_80195E44.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/func_i6_801961AC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/sf_i6_1/D_i6_801A6BA0.s")

View File

@ -140,22 +140,22 @@
symbol_name_format: i6_$VRAM symbol_name_format: i6_$VRAM
subsegments: subsegments:
- [0xE9F1D0, c, fox_i6] - [0xE9F1D0, c, fox_i6]
- [0xE9F1E0, c, sf_i6_1] - [0xE9F1E0, c, fox_ve2]
- [0xEADEC0, c, sf_i6_2] - [0xEADEC0, c, sf_i6_2]
- [0xEAF7E0, c, fox_sy] - [0xEAF7E0, c, fox_sy]
- [0xEBD210, c, sf_i6_4] - [0xEBD210, c, sf_i6_4]
- [0xEBE400, .data, fox_i6] - [0xEBE400, .data, fox_i6]
- [0xEBE410, data, sf_i6_1] - [0xEBE410, .data, fox_ve2]
- [0xEBE560, data, sf_i6_2] - [0xEBE560, data, sf_i6_2]
- [0xEBE5C0, data, fox_sy] - [0xEBE5C0, data, fox_sy]
- [0xEBE830, data, sf_i6_4] - [0xEBE830, data, sf_i6_4]
- [0xEBE840, .rodata, fox_i6] - [0xEBE840, .rodata, fox_i6]
- [0xEBE850, .rodata, sf_i6_1] - [0xEBE850, .rodata, fox_ve2]
- [0xEBF0F0, .rodata, sf_i6_2] - [0xEBF0F0, .rodata, sf_i6_2]
- [0xEBF130, .rodata, fox_sy] - [0xEBF130, .rodata, fox_sy]
- [0xEBFB80, .rodata, sf_i6_4] - [0xEBFB80, .rodata, sf_i6_4]
- { start: 0xEBFBE0, type: .bss, vram: 0x801A7F30, name: fox_i6 } - { start: 0xEBFBE0, type: .bss, vram: 0x801A7F30, name: fox_i6 }
- { type: bss, vram: 0x801A7F40, name: sf_i6_1 } - { type: .bss, vram: 0x801A7F40, name: fox_ve2 }
- { type: bss, vram: 0x801A8440, name: fox_sy } - { type: bss, vram: 0x801A8440, name: fox_sy }
- name: ovl_menu - name: ovl_menu