Match 9 Various NON_MATCHING functions (#811)

* Match func_80A3C8D8 (obj_vspinyroll OK)

* `EnHorse_Update` OK

* Match EnHorse_Init & EnHorse_FleePlayer (en_horse OK)

* Fake match func_80BF43FC (en_rg OK)

* func_80A66930 + func_80A671E0 (obj_driftice OK)

* Match func_80940588 (goroiwa OK)

* Match func_80ABBFC0 (@anon)

Co-authored-by: hensldm <https://github.com/hensldm>

* PR Suggestions

* PR suggestions
This commit is contained in:
engineer124
2022-05-25 21:33:31 -04:00
committed by GitHub
parent 0fb3fb8634
commit 9fcf1bd55b
16 changed files with 175 additions and 266 deletions
-24
View File
@@ -821,11 +821,7 @@ beginseg
name "ovl_En_Horse"
compress
include "build/src/overlays/actors/ovl_En_Horse/z_en_horse.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Horse/ovl_En_Horse_reloc.o"
#else
include "build/data/ovl_En_Horse/ovl_En_Horse.reloc.o"
#endif
endseg
beginseg
@@ -1501,11 +1497,7 @@ beginseg
name "ovl_En_Goroiwa"
compress
include "build/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Goroiwa/ovl_En_Goroiwa_reloc.o"
#else
include "build/data/ovl_En_Goroiwa/ovl_En_Goroiwa.reloc.o"
#endif
endseg
beginseg
@@ -2765,11 +2757,7 @@ beginseg
name "ovl_Obj_Vspinyroll"
compress
include "build/src/overlays/actors/ovl_Obj_Vspinyroll/z_obj_vspinyroll.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_Obj_Vspinyroll/ovl_Obj_Vspinyroll_reloc.o"
#else
include "build/data/ovl_Obj_Vspinyroll/ovl_Obj_Vspinyroll.reloc.o"
#endif
endseg
beginseg
@@ -3001,11 +2989,7 @@ beginseg
name "ovl_Obj_Driftice"
compress
include "build/src/overlays/actors/ovl_Obj_Driftice/z_obj_driftice.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_Obj_Driftice/ovl_Obj_Driftice_reloc.o"
#else
include "build/data/ovl_Obj_Driftice/ovl_Obj_Driftice.reloc.o"
#endif
endseg
beginseg
@@ -3287,11 +3271,7 @@ beginseg
name "ovl_Bg_Hakugin_Bombwall"
compress
include "build/src/overlays/actors/ovl_Bg_Hakugin_Bombwall/z_bg_hakugin_bombwall.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_Bg_Hakugin_Bombwall/ovl_Bg_Hakugin_Bombwall_reloc.o"
#else
include "build/data/ovl_Bg_Hakugin_Bombwall/ovl_Bg_Hakugin_Bombwall.reloc.o"
#endif
endseg
beginseg
@@ -4878,11 +4858,7 @@ beginseg
name "ovl_En_Rg"
compress
include "build/src/overlays/actors/ovl_En_Rg/z_en_rg.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Rg/ovl_En_Rg_reloc.o"
#else
include "build/data/ovl_En_Rg/ovl_En_Rg.reloc.o"
#endif
endseg
beginseg
@@ -121,10 +121,8 @@ static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
#ifdef NON_MATCHING
// Breaks relocs
void func_80ABBFC0(BgHakuginBombwall* this, GlobalContext* globalCtx) {
s32 temp;
f32 temp;
Vec3f spF0;
Vec3f spE4;
Vec3f spD8;
@@ -138,13 +136,13 @@ void func_80ABBFC0(BgHakuginBombwall* this, GlobalContext* globalCtx) {
Matrix_RotateY(this->dyna.actor.shape.rot.y, MTXMODE_NEW);
for (i = 0; i < 6; i++) {
temp = i + 1;
temp = (i + 1) * (80.0f / 3.0f);
for (j = 0; j < ARRAY_COUNT(D_80ABD020); j++) {
spD8.x = D_80ABD020[j] + (s32)((u32)Rand_Next() >> 0x1C);
spD8.y = ((Rand_ZeroOne() - 0.5f) * 15.0f) + (temp * 26.666666f);
spD8.y = ((Rand_ZeroOne() - 0.5f) * 15.0f) + temp;
spD8.z = (Rand_ZeroOne() * 20.0f) - 10.0f;
spCC.x = ((Rand_ZeroOne() - 0.5f) * 7.0f) + (spD8.x * 0.07777778f);
spCC.x = ((Rand_ZeroOne() - 0.5f) * 7.0f) + (spD8.x * (7.0f / 90.0f));
spCC.y = (Rand_ZeroOne() * 7.0f) - 2.0f;
spCC.z = spD8.z * 0.3f;
@@ -176,9 +174,6 @@ void func_80ABBFC0(BgHakuginBombwall* this, GlobalContext* globalCtx) {
}
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Hakugin_Bombwall/func_80ABBFC0.s")
#endif
void func_80ABC2E0(BgHakuginBombwall* this, GlobalContext* globalCtx) {
s32 pad;
+1 -1
View File
@@ -512,7 +512,7 @@ void Boss06_Draw(Actor* thisx, GlobalContext* globalCtx2) {
u16 pad;
u8 spD3;
u8 spD2;
s32 maxColor = 255; // Possible FAKE MATCH
s32 maxColor = 255; //! FAKE:
f32 sp68;
OPEN_DISPS(globalCtx->state.gfxCtx);
+1 -1
View File
@@ -603,7 +603,7 @@ void EnFsn_UpdateCursorAnim(EnFsn* this) {
void EnFsn_UpdateStickDirectionPromptAnim(EnFsn* this) {
f32 arrowAnimTween = this->arrowAnimTween;
f32 stickAnimTween = this->stickAnimTween;
s32 maxColor = 255; // POSSIBLY FAKE
s32 maxColor = 255; //! FAKE:
if (this->arrowAnimState == 0) {
arrowAnimTween += 0.05f;
@@ -739,24 +739,22 @@ void func_80940090(EnGoroiwa* this, GlobalContext* globalCtx) {
}
}
#ifdef NON_MATCHING
// Stack
void func_80940588(GlobalContext* globalCtx, Vec3f* arg1, Gfx* arg2[], Color_RGBA8* arg3, Color_RGBA8* arg4, f32 arg5) {
Gfx* phi_s7;
Vec3f sp100;
Vec3f spF4;
Vec3f spE8;
f32 temp_f20;
s32 phi_fp;
f32 spB0;
s32 j;
s32 i;
s32 phi_s0;
s32 spD0;
s16 spCE;
s16 spC8;
f32 spB0;
f32 spAC;
s16 spA8;
s16 phi_fp;
s16 spC8;
f32 spAC;
spD0 = (s32)(arg5 * 35.0f) + 6;
temp_f20 = (arg5 + 0.1f) * 0.5f;
@@ -815,10 +813,6 @@ void func_80940588(GlobalContext* globalCtx, Vec3f* arg1, Gfx* arg2[], Color_RGB
}
}
}
#else
void func_80940588(GlobalContext* globalCtx, Vec3f* arg1, Gfx* arg2[], Color_RGBA8* arg3, Color_RGBA8* arg4, f32 arg5);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Goroiwa/func_80940588.s")
#endif
void func_80940A1C(GlobalContext* globalCtx, Vec3f* arg1, Gfx** arg2, Color_RGBA8* arg3, Color_RGBA8* arg4, f32 arg5) {
s32 i;
File diff suppressed because it is too large Load Diff
@@ -170,7 +170,7 @@ void EnKakasi_Init(Actor* thisx, GlobalContext* globalCtx) {
i = 0;
tempCutscene = this->actor.cutscene;
while (tempCutscene != -1) {
// This might be a fake match, no others found yet
//! FAKE:
tempCutscene = ActorCutscene_GetAdditionalCutscene(this->actorCutscenes[i] = tempCutscene);
i++;
}
@@ -1277,7 +1277,7 @@ void EnOssan_UpdateCursorAnim(EnOssan* this) {
void EnOssan_UpdateStickDirectionPromptAnim(EnOssan* this) {
f32 arrowAnimTween = this->arrowAnimTween;
f32 stickAnimTween = this->stickAnimTween;
s32 maxColor = 255; // POSSIBLY FAKE
s32 maxColor = 255; //! FAKE:
if (this->arrowAnimState == 0) {
arrowAnimTween += 0.05f;
+3 -11
View File
@@ -368,7 +368,6 @@ s32 func_80BF42BC(EnRg* this, f32 arg1) {
return false;
}
#ifdef NON_MATCHING
s32 func_80BF43FC(EnRg* this) {
Vec3f sp9C;
Vec3f sp90;
@@ -378,11 +377,11 @@ s32 func_80BF43FC(EnRg* this) {
f32 phi_f20 = 0.0f;
s32 temp_s7 = ENRG_GET_7F80(&this->actor);
s32 phi_s4 = -1;
s16 phi_s6 = 0;
s32 temp_s5 = this->unk_344;
s16 phi_s6 = 0;
s32 phi_s0 = D_80BF57E4[this->unk_344][temp_s7];
while (true) {
do {
SubS_CopyPointFromPathCheckBounds(this->path, phi_s0 - 1, &sp9C);
SubS_CopyPointFromPathCheckBounds(this->path, phi_s0 + 1, &sp90);
if (Math3D_PointDistToLine2D(this->actor.world.pos.x, this->actor.world.pos.z, sp9C.x, sp9C.z, sp90.x, sp90.z,
@@ -393,17 +392,10 @@ s32 func_80BF43FC(EnRg* this) {
phi_s4 = phi_s0;
}
phi_s0++;
if ((temp_s5 == 18) || (phi_s0 >= D_80BF57E4[temp_s5 + 1][temp_s7])) {
break;
}
}
} while ((temp_s5 != 18) && (phi_s0 < D_80BF57E4[temp_s5 + 1][temp_s7]));
return phi_s4;
}
#else
s32 func_80BF43FC(EnRg* this);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Rg/func_80BF43FC.s")
#endif
s32 func_80BF4560(EnRg* this, GlobalContext* globalCtx) {
s32 temp_v0 = SurfaceType_GetSceneExitIndex(&globalCtx->colCtx, this->actor.floorPoly, this->actor.floorBgId);
+1 -1
View File
@@ -1191,7 +1191,7 @@ void EnSob1_UpdateCursorAnim(EnSob1* this) {
void EnSob1_UpdateStickDirectionPromptAnim(EnSob1* this) {
f32 arrowAnimTween = this->arrowAnimTween;
f32 stickAnimTween = this->stickAnimTween;
s32 maxColor = 255; // POSSIBLY FAKE
s32 maxColor = 255; //! FAKE:
if (this->arrowAnimState == 0) {
arrowAnimTween += 0.05f;
+1 -1
View File
@@ -1221,7 +1221,7 @@ void EnTrt_UpdateCursorAnim(EnTrt* this) {
void EnTrt_UpdateStickDirectionPromptAnim(EnTrt* this) {
f32 arrowAnimTween = this->arrowAnimTween;
f32 stickAnimTween = this->stickAnimTween;
s32 maxColor = 255; // POSSIBLY FAKE
s32 maxColor = 255; //! FAKE:
if (this->arrowAnimState == 0) {
arrowAnimTween += 0.05f;
@@ -148,7 +148,6 @@ f32 func_80A667F0(ObjDrifticeStruct3* arg0, ObjDriftice* this) {
return temp_f20;
}
#ifdef NON_MATCHING
void func_80A66930(ObjDrifticeStruct2* arg0, ObjDriftice* this, s16* arg2, s16* arg3) {
ObjDrifticeStruct3* temp_s0;
f32 temp_f22 = 0.0f;
@@ -157,6 +156,7 @@ void func_80A66930(ObjDrifticeStruct2* arg0, ObjDriftice* this, s16* arg2, s16*
if (this->unk_248 > 0) {
f32 temp_f20 = this->dyna.actor.xzDistToPlayer * this->unk_240 * 0.0007075472f;
if (temp_f20 > 1.0f) {
temp_f20 = 1.0f;
} else if (temp_f20 < 0.01f) {
@@ -195,12 +195,9 @@ void func_80A66930(ObjDrifticeStruct2* arg0, ObjDriftice* this, s16* arg2, s16*
temp_f22 *= arg0->unk_08;
*arg2 = (s32)temp_f22 + arg0->unk_00[2];
//! FAKE:
*arg2 = arg0->unk_00[2] + (s32)((void)0, temp_f22);
}
#else
void func_80A66930(ObjDrifticeStruct2* arg0, ObjDriftice* this, s16* arg2, s16* arg3);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Driftice/func_80A66930.s")
#endif
void func_80A66C4C(ObjDrifticeStruct4* arg0, ObjDriftice* this, s16* arg2, s16* arg3) {
ObjDrifticeStruct3* temp_s0;
@@ -340,8 +337,6 @@ void func_80A671CC(ObjDriftice* this) {
this->actionFunc = func_80A671E0;
}
#ifdef NON_MATCHING
// stack
void func_80A671E0(ObjDriftice* this, GlobalContext* globalCtx) {
f32 phi_f0;
Vec3f sp40;
@@ -349,12 +344,12 @@ void func_80A671E0(ObjDriftice* this, GlobalContext* globalCtx) {
f32 phi_f12;
Vec3s* points;
s32 sp30;
Vec3s* points2;
Actor* thisx = &this->dyna.actor;
Math_Vec3s_ToVec3f(&sp40, &(&this->unk_16C[this->unk_164])[this->unk_168]);
Math_Vec3f_Diff(&sp40, &this->dyna.actor.world.pos, &this->dyna.actor.velocity);
Math_Vec3f_Diff(&sp40, &this->dyna.actor.world.pos, &thisx->velocity);
sp3C = Math3D_Vec3fMagnitude(&this->dyna.actor.velocity);
sp3C = Math3D_Vec3fMagnitude(&thisx->velocity);
if (sp3C < (this->unk_23C * 8.0f)) {
phi_f0 = this->unk_23C * 0.4f;
phi_f12 = this->unk_23C * 0.05f;
@@ -391,8 +386,8 @@ void func_80A671E0(ObjDriftice* this, GlobalContext* globalCtx) {
this->unk_164 = this->unk_160;
}
points2 = &this->unk_16C[0];
if ((points2->x != points->x) || (points2->y != points->y) || (points2->z != points->z)) {
if ((this->unk_16C[0].x != points->x) || (this->unk_16C[0].y != points->y) ||
(this->unk_16C[0].z != points->z)) {
func_80A6743C(this);
func_800C62BC(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
sp30 = false;
@@ -405,9 +400,6 @@ void func_80A671E0(ObjDriftice* this, GlobalContext* globalCtx) {
}
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Driftice/func_80A671E0.s")
#endif
void func_80A6743C(ObjDriftice* this) {
this->actionFunc = func_80A67450;
@@ -557,7 +557,8 @@ void ObjSpidertent_Init(Actor* thisx, GlobalContext* globalCtx) {
ColliderTrisElementInit* element;
Vec3f sp70[3];
Vec3f sp64;
s32 i, j;
s32 i;
s32 j;
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
DynaPolyActor_Init(&this->dyna, 0);
@@ -698,8 +699,9 @@ void func_80B30AD4(ObjSpidertent* this) {
void func_80B30AF8(ObjSpidertent* this, GlobalContext* globalCtx) {
ObjSpidertentStruct* temp_s0 = &D_80B31350[OBJSPIDERTENT_GET_1(&this->dyna.actor)];
TriNorm* triNorm;
s32 i, j;
ObjSpidertentStruct2* ptr;
s32 i;
s32 j;
s32 pad;
Vec3f sp60;
f32 sp5C;
@@ -397,7 +397,8 @@ void ObjSwitch_Init(Actor* thisx, GlobalContext* globalCtx) {
}
if (type == OBJSWITCH_TYPE_EYE) {
if (sIsSegmentTableInit == false) {
s32 i, j;
s32 i;
s32 j;
sIsSegmentTableInit = true;
@@ -141,15 +141,15 @@ void func_80A3C7E8(ObjVspinyroll* this) {
s32 index = D_80A3D450[OBJVSPINYROLL_GET_4000(&this->dyna.actor)] * 120.0f * (1.0f / 58.0f);
index += 2;
this->unk_38C = index * 4;
this->unk_1A8.unk_1E4 = index * 4;
tempf = ((D_80A3D450[OBJVSPINYROLL_GET_4000(&this->dyna.actor)] * 120.0f) - 2.0f) / (index - 1);
phi_f2 = 1.0f;
for (i = 0, j = 0; i < this->unk_38C; i++) {
this->unk_1A8[i].unk_00.x = D_80A3D4C4[j];
this->unk_1A8[i].unk_00.y = phi_f2;
this->unk_1A8[i].unk_00.z = D_80A3D4B4[j];
for (i = 0, j = 0; i < this->unk_1A8.unk_1E4; i++) {
this->unk_1A8.unk_000[i].unk_00.x = D_80A3D4C4[j];
this->unk_1A8.unk_000[i].unk_00.y = phi_f2;
this->unk_1A8.unk_000[i].unk_00.z = D_80A3D4B4[j];
j++;
if (j >= 4) {
@@ -159,11 +159,10 @@ void func_80A3C7E8(ObjVspinyroll* this) {
}
}
#ifdef NON_MATCHING
s32 func_80A3C8D8(ObjVspinyroll* this, GlobalContext* globalCtx, Vec3f* arg2, s32 arg3) {
s32 pad;
ObjVspinyrollStruct2* ptr = &this->unk_1A8[0];
s32 pad2;
ObjVspinyrollStruct3* unk_1A8 = &this->unk_1A8;
ObjVspinyrollStruct2* ptr;
s32 i;
Vec3f spE4;
Vec3f spD8;
@@ -177,9 +176,11 @@ s32 func_80A3C8D8(ObjVspinyroll* this, GlobalContext* globalCtx, Vec3f* arg2, s3
spE4.z = 0.0f;
sp9C = false;
this->unk_388 = NULL;
unk_1A8->unk_1E0 = NULL;
for (i = 0; i < unk_1A8->unk_1E4; i++) {
ptr = &unk_1A8->unk_000[i];
for (i = 0; i < this->unk_38C; i++, ptr++) {
spE4.x = ptr->unk_00.x;
spE4.y = ptr->unk_00.y;
func_80A3C4E0(&spD8, &spE4, this->dyna.actor.world.rot.y);
@@ -193,8 +194,8 @@ s32 func_80A3C8D8(ObjVspinyroll* this, GlobalContext* globalCtx, Vec3f* arg2, s3
spCC.x += 30.0f * this->unk_3B4.x;
spCC.z += 30.0f * this->unk_3B4.z;
if (BgCheck_EntityLineTest3(&globalCtx->colCtx, &spD8, &spCC, &spC0, &this->unk_1A8[i].collisionPoly, true,
false, false, true, &this->unk_1A8[i].bgId, &this->dyna.actor, 0.0f)) {
if (BgCheck_EntityLineTest3(&globalCtx->colCtx, &spD8, &spCC, &spC0, &unk_1A8->unk_000[i].collisionPoly, true,
false, false, true, &unk_1A8->unk_000[i].bgId, &this->dyna.actor, 0.0f)) {
if ((arg3 != 0) && (this->dyna.actor.flags & ACTOR_FLAG_40)) {
spA8.x = ptr->unk_00.x * 0.2f;
spA8.y = ptr->unk_00.y;
@@ -215,17 +216,13 @@ s32 func_80A3C8D8(ObjVspinyroll* this, GlobalContext* globalCtx, Vec3f* arg2, s3
temp_f20 = temp_f0;
sp9C = true;
Math_Vec3f_Diff(&spC0, &spCC, arg2);
this->unk_388 = ptr;
unk_1A8->unk_1E0 = ptr;
}
}
}
return sp9C;
}
#else
s32 func_80A3C8D8(ObjVspinyroll* this, GlobalContext* globalCtx, Vec3f* arg2, s32 arg3);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Vspinyroll/func_80A3C8D8.s")
#endif
s32 func_80A3CB94(ObjVspinyroll* this, GlobalContext* globalCtx, s32 arg2) {
Vec3f sp1C;
@@ -239,8 +236,8 @@ s32 func_80A3CB94(ObjVspinyroll* this, GlobalContext* globalCtx, s32 arg2) {
}
DynaPolyActor* func_80A3CBF0(ObjVspinyroll* this, GlobalContext* globalCtx) {
if (this->unk_388 != NULL) {
return DynaPoly_GetActor(&globalCtx->colCtx, this->unk_388->bgId);
if (this->unk_1A8.unk_1E0 != NULL) {
return DynaPoly_GetActor(&globalCtx->colCtx, this->unk_1A8.unk_1E0->bgId);
}
return NULL;
}
@@ -21,12 +21,16 @@ typedef struct {
/* 0x10 */ s32 bgId;
} ObjVspinyrollStruct2; // size = 0x14
typedef struct {
/* 0x000 */ ObjVspinyrollStruct2 unk_000[24];
/* 0x1E0 */ ObjVspinyrollStruct2* unk_1E0;
/* 0x1E4 */ s32 unk_1E4;
} ObjVspinyrollStruct3; // size = 0x1E8
typedef struct ObjVspinyroll {
/* 0x0000 */ DynaPolyActor dyna;
/* 0x015C */ ColliderCylinder collider;
/* 0x01A8 */ ObjVspinyrollStruct2 unk_1A8[24];
/* 0x0388 */ ObjVspinyrollStruct2* unk_388;
/* 0x038C */ s32 unk_38C;
/* 0x01A8 */ ObjVspinyrollStruct3 unk_1A8;
/* 0x0390 */ ObjVspinyrollActionFunc actionFunc;
/* 0x0394 */ f32 unk_394;
/* 0x0398 */ s32 unk_398;