From c840e04c278c65e782cc061b5e875a0d57fbc738 Mon Sep 17 00:00:00 2001 From: Maide <34639600+Kelebek1@users.noreply.github.com> Date: Sat, 29 Jan 2022 23:45:32 +0000 Subject: [PATCH] En_Trt2 (#448) * Trt2 * Whoops * PR * PR * PR * Merge * Merge * Merge * bgcheck * I got trolled >: --- spec | 3 +- src/overlays/actors/ovl_En_Trt2/z_en_trt2.c | 915 ++++++++++++++++++-- src/overlays/actors/ovl_En_Trt2/z_en_trt2.h | 34 +- tools/disasm/functions.txt | 6 +- undefined_syms.txt | 5 - 5 files changed, 867 insertions(+), 96 deletions(-) diff --git a/spec b/spec index ded63c1d35..7dc17a9c0e 100644 --- a/spec +++ b/spec @@ -3589,8 +3589,7 @@ beginseg name "ovl_En_Trt2" compress include "build/src/overlays/actors/ovl_En_Trt2/z_en_trt2.o" - include "build/data/ovl_En_Trt2/ovl_En_Trt2.data.o" - include "build/data/ovl_En_Trt2/ovl_En_Trt2.reloc.o" + include "build/src/overlays/actors/ovl_En_Trt2/ovl_En_Trt2_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c index e74a5dd4d6..0d93560323 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c @@ -5,8 +5,9 @@ */ #include "z_en_trt2.h" +#include "objects/object_trt/object_trt.h" -#define FLAGS 0x00000009 +#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8) #define THIS ((EnTrt2*)thisx) @@ -14,10 +15,25 @@ void EnTrt2_Init(Actor* thisx, GlobalContext* globalCtx); void EnTrt2_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnTrt2_Update(Actor* thisx, GlobalContext* globalCtx); +void func_80AD46F8(EnTrt2* this); +s32 func_80AD475C(EnTrt2* this, Path* path, s32 arg2); +s16 func_80AD48F8(Path* path, s32 arg1, Vec3f* arg2, f32* arg3); +f32 func_80AD49B8(Path* path, s32 arg1, Vec3f* arg2, Vec3s* arg3); +void func_80AD4A78(EnTrt2* this, GlobalContext* globalCtx); +s32 func_80AD4B08(GlobalContext* globalCtx); void func_80AD4DB4(EnTrt2* this, GlobalContext* globalCtx); void func_80AD4FE4(EnTrt2* this, GlobalContext* globalCtx); +void func_80AD5234(EnTrt2* this, GlobalContext* globalCtx); +void func_80AD56E8(Actor* thisx, GlobalContext* globalCtx); + +static ActorAnimationEntryS sAnimations[] = { + { &object_trt_Anim_00DE68, 1.0f, 0, -1, 2, 0 }, { &object_trt_Anim_00EE98, 1.0f, 0, -1, 2, 0 }, + { &object_trt_Anim_00FD34, 1.0f, 0, -1, 0, 0 }, { &object_trt_Anim_0030EC, 1.0f, 0, -1, 2, 0 }, + { &object_trt_Anim_003D78, 1.0f, 0, -1, 2, 0 }, { &object_trt_Anim_00D52C, 1.0f, 0, -1, 0, 0 }, + { &object_trt_Anim_000A44, 1.0f, 0, -1, 0, 0 }, { &object_trt_Anim_001EF4, 1.0f, 0, -1, 0, 0 }, + { &object_trt_Anim_002224, 1.0f, 0, -1, 0, 0 }, { &object_trt_Anim_002CB0, 1.0f, 0, -1, 0, 0 }, +}; -#if 0 const ActorInit En_Trt2_InitVars = { ACTOR_EN_TRT2, ACTORCAT_NPC, @@ -30,18 +46,29 @@ const ActorInit En_Trt2_InitVars = { (ActorFunc)NULL, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80AD58A0 = { - { COLTYPE_NONE, AT_NONE, AC_NONE, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK1, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_NONE, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_NONE, + AT_NONE, + AC_NONE, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK1, + { 0x00000000, 0x00, 0x00 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_NONE, + OCELEM_ON, + }, { 32, 56, 30, { 0, 0, 0 } }, }; -// sColChkInfoInit -static CollisionCheckInfoInit2 D_80AD58CC = { 1, 0, 0, 0, MASS_IMMOVABLE }; +static CollisionCheckInfoInit2 sColChkInfoInit = { 1, 0, 0, 0, MASS_IMMOVABLE }; -// static DamageTable sDamageTable = { -static DamageTable D_80AD58D8 = { +static DamageTable sDamageTable = { /* Deku Nut */ DMG_ENTRY(1, 0x0), /* Deku Stick */ DMG_ENTRY(1, 0x0), /* Horse trample */ DMG_ENTRY(1, 0x0), @@ -76,111 +103,833 @@ static DamageTable D_80AD58D8 = { /* Powder Keg */ DMG_ENTRY(1, 0x0), }; -// static InitChainEntry sInitChain[] = { -static InitChainEntry D_80AD5964[] = { +void func_80AD3380(SkelAnime* skelAnime, ActorAnimationEntryS* animation, s32 arg2) { + f32 phi_f0; + + animation += arg2; + + if (animation->frameCount < 0) { + phi_f0 = Animation_GetLastFrame(animation->animationSeg); + } else { + phi_f0 = animation->frameCount; + } + Animation_Change(skelAnime, animation->animationSeg, animation->playbackSpeed, animation->frame, phi_f0, + animation->mode, animation->transitionRate); +} + +void func_80AD341C(EnTrt2* this, GlobalContext* globalCtx) { + this->collider.dim.pos.x = this->actor.world.pos.x; + this->collider.dim.pos.y = this->actor.world.pos.y; + this->collider.dim.pos.z = this->actor.world.pos.z; + CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); +} + +void func_80AD349C(EnTrt2* this) { + if ((gSaveContext.weekEventReg[85] & 0x10) && !(gSaveContext.weekEventReg[84] & 0x40)) { + this->unk_3A8 = 0x88F; + } else if (this->unk_3A8 == 0) { + this->unk_3A8 = 0x84B; + } else if (gSaveContext.weekEventReg[16] & 0x10) { + this->unk_3A8 = 0x838; + } else if (gSaveContext.weekEventReg[17] & 1) { + this->unk_3A8 = 0x84D; + } else { + this->unk_3A8 = 0x849; + } +} + +void func_80AD3530(EnTrt2* this, GlobalContext* globalCtx) { + s16 phi_a1; + f32 sp30; + + func_80AD46F8(this); + if (this->path != NULL) { + phi_a1 = func_80AD48F8(this->path, this->unk_1E4, &this->actor.world.pos, &sp30); + if (this->actor.bgCheckFlags & 8) { + phi_a1 = this->actor.wallYaw; + } + Math_SmoothStepToS(&this->actor.world.rot.y, phi_a1, 4, 1000, 1); + this->actor.shape.rot.y = this->actor.world.rot.y; + if (func_80AD475C(this, this->path, this->unk_1E4)) { + if (this->unk_1E4 >= (this->path->count - 1)) { + this->unk_1E4 = 0; + } else { + this->unk_1E4++; + } + } + Math_ApproachF(&this->actor.speedXZ, 1.5f, 0.2f, 1.0f); + } + + Actor_MoveWithGravity(&this->actor); + + if (DECR(this->unk_3AE) == 0) { + this->unk_3AE = Rand_S16Offset(20, 20); + func_80AD3380(&this->skelAnime, sAnimations, 7); + this->unk_3B2 = 5; + } +} + +void func_80AD3664(EnTrt2* this, GlobalContext* globalCtx) { + if (ActorCutscene_GetCanPlayNext(this->unk_3DA)) { + ActorCutscene_StartAndSetUnkLinkFields(this->unk_3DA, &this->actor); + if (this->unk_3D9 == 0) { + this->unk_3B2 = 1; + } else { + this->unk_3B2 = 2; + } + } else { + ActorCutscene_SetIntentToPlay(this->unk_3DA); + return; + } + func_800B9010(&this->actor, NA_SE_EN_KOTAKE_FLY - SFX_FLAG); +} + +void func_80AD36EC(EnTrt2* this, GlobalContext* globalCtx) { + Vec3s sp30; + f32 sp2C; + + if (this->path != NULL) { + sp2C = func_80AD49B8(this->path, this->unk_1E4, &this->actor.world.pos, &sp30); + this->actor.shape.rot.y += 0x1000; + Math_ApproachF(&this->actor.velocity.y, 0.5f, 0.2f, 1.0f); + if (sp2C < 5.0f) { + if (this->unk_1E4 >= (this->path->count - 1)) { + this->unk_1E4 = 0; + this->unk_3D9 = 1; + this->actor.velocity.y = 0.0f; + this->path = func_8013D648(globalCtx, this->path->unk1, -1); + ActorCutscene_Stop(this->unk_3DA); + this->unk_3DA = ActorCutscene_GetAdditionalCutscene(this->unk_3DA); + ActorCutscene_SetIntentToPlay(this->unk_3DA); + this->unk_3B2 = 0; + } else { + this->unk_1E4++; + } + } + } + Actor_MoveWithGravity(&this->actor); + func_800B9010(&this->actor, NA_SE_EN_KOTAKE_FLY - SFX_FLAG); + if ((this->actor.shape.rot.y >= 0x2800) && (this->actor.shape.rot.y < 0x3800)) { + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KOTAKE_ROLL); + } +} + +void func_80AD381C(EnTrt2* this, GlobalContext* globalCtx) { + if ((CURRENT_DAY == 2) || (CURRENT_DAY == 3)) { + if (func_80AD4B08(globalCtx) == 1) { + this->actor.world.pos.y -= 50.0f; + this->unk_3D9 = 0; + this->unk_3B2 = 0; + this->actor.flags &= ~ACTOR_FLAG_1; + this->actor.flags |= ACTOR_FLAG_10; + } + } else { + Actor_MarkForDeath(&this->actor); + } +} + +void func_80AD38B8(EnTrt2* this, GlobalContext* globalCtx) { + Vec3s sp30; + + if (this->unk_3D9 == 2) { + Actor_MarkForDeath(&this->actor); + } + + if (this->path != NULL) { + func_80AD49B8(this->path, this->unk_1E4, &this->actor.world.pos, &sp30); + Math_SmoothStepToS(&this->actor.world.rot.y, sp30.y, 4, 1000, 1); + this->actor.shape.rot.y = this->actor.world.rot.y; + Math_SmoothStepToS(&this->actor.shape.rot.x, sp30.x, 4, 1000, 1); + this->actor.world.rot.x = -this->actor.shape.rot.x; + if (func_80AD475C(this, this->path, this->unk_1E4)) { + if (this->unk_1E4 >= (this->path->count - 1)) { + ActorCutscene_Stop(this->unk_3DA); + this->unk_3D9 = 2; + } else { + this->unk_1E4++; + } + } + + if (this->actor.bgCheckFlags & 8) { + if (this->unk_1E4 >= (this->path->count - 1)) { + ActorCutscene_Stop(this->unk_3DA); + this->unk_3D9 = 2; + } else { + sp30.y = this->actor.wallYaw; + } + } + Math_ApproachF(&this->actor.speedXZ, 5.0f, 0.2f, 1.0f); + } + + Actor_MoveWithoutGravity(&this->actor); + func_800B9010(&this->actor, NA_SE_EN_KOTAKE_FLY - SFX_FLAG); +} + +void func_80AD3A24(EnTrt2* this, GlobalContext* globalCtx) { + func_80AD46F8(this); + if (this->actor.speedXZ > 0.05f) { + Math_ApproachF(&this->actor.speedXZ, 0.0f, 0.2f, 1.0f); + } else if (DECR(this->unk_3AE) == 0) { + this->unk_3AE = Rand_S16Offset(100, 50); + func_80AD3380(&this->skelAnime, sAnimations, 6); + this->unk_3B2 = 4; + } + Actor_MoveWithGravity(&this->actor); +} + +void func_80AD3AE4(EnTrt2* this, GlobalContext* globalCtx) { + if (this->actor.world.pos.y < this->actor.home.pos.y) { + Math_ApproachF(&this->actor.velocity.y, 0.5f, 0.2f, 0.1f); + } else { + this->actor.velocity.y = 0.0f; + func_80AD3380(&this->skelAnime, sAnimations, 6); + this->unk_3B2 = 4; + } + Actor_MoveWithGravity(&this->actor); +} + +void func_80AD3B6C(EnTrt2* this, GlobalContext* globalCtx) { + if (DECR(this->unk_3B0) == 0) { + this->unk_3B0 = 10; + this->actor.velocity.y = -1.0f; + func_80AD3380(&this->skelAnime, sAnimations, 8); + this->unk_3B2 = 8; + } +} + +void func_80AD3BE4(EnTrt2* this, GlobalContext* globalCtx) { + s16 sp2E = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; + + Math_ScaledStepToS(&this->unk_3C0, sp2E, 400); + Math_SmoothStepToS(&this->unk_3C0, sp2E, 4, 10000, 0); + this->actor.world.rot.y += this->unk_3C0; + this->actor.shape.rot.y = this->actor.world.rot.y; + if (this->actor.world.pos.y < 5.0f) { + func_80AD3380(&this->skelAnime, sAnimations, 9); + this->unk_3B2 = 9; + } +} + +void func_80AD3C94(EnTrt2* this, GlobalContext* globalCtx) { + if (this->actor.world.pos.y < 5.0f) { + func_80AD4A78(this, globalCtx); + if (this->actor.bgCheckFlags & 1) { + this->unk_3B2 = 0xF; + } + } +} + +void func_80AD3CEC(EnTrt2* this, GlobalContext* globalCtx) { + u8 sp27 = Message_GetState(&globalCtx->msgCtx); + + func_80AD46F8(this); + if (this->unk_3D8) { + func_801518B0(globalCtx, this->unk_3A8, &this->actor); + this->unk_3D8 = false; + } else if ((sp27 == 5) && func_80147624(globalCtx)) { + globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.unk12023 = 4; + func_80AD3380(&this->skelAnime, sAnimations, 6); + this->unk_3B2 = 4; + } +} + +void func_80AD3DA4(EnTrt2* this, GlobalContext* globalCtx) { + this->actor.velocity.y = 0.0f; + func_801518B0(globalCtx, this->unk_3A8, &this->actor); + + if (this->unk_3A8 == 0x838) { + this->unk_3B2 = 11; + return; + } else if (this->unk_3A8 == 0x88F) { + if (func_80114E90()) { + this->unk_3B2 = 11; + } else { + this->unk_3B2 = 10; + } + } else { + this->unk_3B2 = 10; + } +} + +void func_80AD3E34(EnTrt2* this, GlobalContext* globalCtx) { + if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { + if (func_80114E90()) { + globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.unk12023 = 4; + this->unk_3B2 = 12; + } else { + gSaveContext.weekEventReg[85] |= 0x10; + this->unk_3A8 = 0x88E; + func_801518B0(globalCtx, this->unk_3A8, &this->actor); + this->unk_3B2 = 10; + } + } +} + +void func_80AD3EF0(EnTrt2* this, GlobalContext* globalCtx) { + u8 temp_v0 = Message_GetState(&globalCtx->msgCtx); + + if (temp_v0 == 6) { + if (func_80147624(globalCtx)) { + if ((func_80114E90() && !(gSaveContext.weekEventReg[84] & 0x40)) || + !(gSaveContext.weekEventReg[12] & 0x10)) { + this->unk_3B2 = 12; + } else { + gSaveContext.weekEventReg[85] |= 0x10; + this->unk_3A8 = 0x88E; + func_801518B0(globalCtx, this->unk_3A8, &this->actor); + this->unk_3B2 = 10; + } + } + } else if ((temp_v0 == 5) && func_80147624(globalCtx)) { + globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.unk12023 = 4; + this->unk_3B2 = 12; + } +} + +void func_80AD3FF4(EnTrt2* this, GlobalContext* globalCtx) { + if (Actor_HasParent(&this->actor, globalCtx)) { + if (!(gSaveContext.weekEventReg[12] & 0x10)) { + gSaveContext.weekEventReg[12] |= 0x10; + } + gSaveContext.weekEventReg[84] |= 0x40; + this->actor.parent = NULL; + this->unk_3B2 = 14; + } else if (gSaveContext.weekEventReg[12] & 0x10) { + Actor_PickUp(&this->actor, globalCtx, GI_POTION_RED, 300.0f, 300.0f); + } else { + Actor_PickUp(&this->actor, globalCtx, GI_BOTTLE_POTION_RED, 300.0f, 300.0f); + } +} + +void func_80AD40AC(EnTrt2* this, GlobalContext* globalCtx) { + if ((Message_GetState(&globalCtx->msgCtx) == 6) && func_80147624(globalCtx)) { + func_800B85E0(&this->actor, globalCtx, 400.0f, -1); + this->unk_3B2 = 13; + } +} + +void func_80AD4110(EnTrt2* this, GlobalContext* globalCtx) { + if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { + this->unk_3A8 = 0x84C; + func_80151938(globalCtx, this->unk_3A8); + this->unk_3B2 = 10; + } else { + func_800B85E0(&this->actor, globalCtx, 400.0f, -1); + } +} + +void func_80AD417C(EnTrt2* this, GlobalContext* globalCtx) { + if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { + if (this->unk_3A8 == 0x84B) { + func_80AD349C(this); + func_80AD3DA4(this, globalCtx); + } else { + globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.unk12023 = 4; + if (this->unk_3A8 == 0x84C) { + func_80AD3380(&this->skelAnime, sAnimations, 6); + this->path = func_8013D648(globalCtx, ENTRT2_GET_FC00(&this->actor), 0x3F); + this->unk_3B2 = 18; + } else if (this->unk_3A8 == 0x88F) { + this->unk_3A8 = 0x88E; + func_801518B0(globalCtx, this->unk_3A8, &this->actor); + } else { + this->actor.textId = 0; + this->unk_3B2 = 15; + } + } + } +} + +void func_80AD4298(EnTrt2* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + if (ActorCutscene_GetCanPlayNext(this->unk_3DA)) { + ActorCutscene_StartAndSetUnkLinkFields(this->unk_3DA, &this->actor); + player->stateFlags1 |= 0x20; + this->unk_3B2 = 6; + } else { + if (ActorCutscene_GetCurrentIndex() == 0x7C) { + ActorCutscene_Stop(0x7C); + } + ActorCutscene_SetIntentToPlay(this->unk_3DA); + } +} + +void func_80AD431C(EnTrt2* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + player->stateFlags1 &= ~0x20; + Actor_MarkForDeath(&this->actor); +} + +void func_80AD434C(EnTrt2* this, GlobalContext* globalCtx) { + this->actor.shape.rot.y += 0x1000; + Math_ApproachF(&this->actor.velocity.y, 1.5f, 0.2f, 0.1f); + + if (this->actor.world.pos.y > 200.0f) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->unk_3B2 = 0x13; + ActorCutscene_Stop(this->unk_3DA); + } else { + s32 i; + Vec3f sp68; + Vec3f sp5C = { 0.0f, 0.5f, 0.0f }; + + for (i = (s32)this->skelAnime.animLength - (s32)this->skelAnime.curFrame; i >= 0; i -= 2) { + sp68.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x; + sp68.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z; + sp68.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f); + func_800B3030(globalCtx, &sp68, &sp5C, &sp5C, 100, 0, 3); + } + + func_800B9010(&this->actor, NA_SE_EN_COMMON_EXTINCT_LEV - SFX_FLAG); + } + } else if (this->actor.world.pos.y < 5.0f) { + func_80AD4A78(this, globalCtx); + } + + Actor_MoveWithGravity(&this->actor); + + if ((this->actor.shape.rot.y >= 0x2800) && (this->actor.shape.rot.y < 0x3800)) { + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KOTAKE_ROLL); + } +} + +void func_80AD4550(EnTrt2* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + u8 sp23 = Message_GetState(&globalCtx->msgCtx); + + if ((player->transformation != PLAYER_FORM_HUMAN) && (player->transformation != PLAYER_FORM_FIERCE_DEITY)) { + func_80AD3380(&this->skelAnime, sAnimations, 7); + this->unk_3B2 = 17; + } + + if ((sp23 == 5) && func_80147624(globalCtx)) { + globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.unk12023 = 4; + } +} + +void func_80AD4608(EnTrt2* this) { + s16 temp = this->unk_3B6 - 1; + + if (temp != 0) { + this->unk_3B6 = temp; + return; + } + + temp = this->unk_3B8 + 1; + if (temp >= 3) { + this->unk_3B8 = 0; + this->unk_3B6 = (s32)(Rand_ZeroOne() * 60.0f) + 20; + } else { + this->unk_3B8 = temp; + this->unk_3B6 = 1; + } +} + +void func_80AD469C(EnTrt2* this, GlobalContext* globalCtx) { + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_trt_Skel_00FEF0, &object_trt_Anim_000A44, NULL, NULL, 0); + this->actor.draw = func_80AD56E8; +} + +void func_80AD46F8(EnTrt2* this) { + if ((this->actor.home.pos.y + 60.0f) < this->actor.world.pos.y) { + this->actor.velocity.y = -0.2f; + } else if (this->actor.world.pos.y <= (this->actor.home.pos.y + 50.0f)) { + this->actor.velocity.y = 0.2f; + } +} + +s32 func_80AD475C(EnTrt2* this, Path* path, s32 arg2) { + Vec3s* points; + s32 count; + f32 phi_f12; + s32 ret; + f32 phi_f14; + s32 arg = arg2; + f32 sp44; + f32 sp40; + f32 sp3C; + Vec3f sp30; + + points = Lib_SegmentedToVirtual(path->points); + count = path->count; + ret = false; + Math_Vec3s_ToVec3f(&sp30, &points[arg]); + + if (arg == 0) { + phi_f12 = points[1].x - points[0].x; + phi_f14 = points[1].z - points[0].z; + } else if ((count - 1) == arg) { + phi_f12 = points[count - 1].x - points[count - 2].x; + phi_f14 = points[count - 1].z - points[count - 2].z; + } else { + phi_f12 = points[arg + 1].x - points[arg - 1].x; + phi_f14 = points[arg + 1].z - points[arg - 1].z; + } + + func_8017B7F8(&sp30, RADF_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + + if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { + ret = true; + } + return ret; +} + +s16 func_80AD48F8(Path* path, s32 arg1, Vec3f* arg2, f32* arg3) { + Vec3s* points; + f32 phi_f14; + f32 phi_f12; + + if (path != NULL) { + points = Lib_SegmentedToVirtual(path->points); + points = &points[arg1]; + phi_f14 = points->x - arg2->x; + phi_f12 = points->z - arg2->z; + } else { + phi_f14 = 0.0f; + phi_f12 = 0.0f; + } + *arg3 = SQ(phi_f14) + SQ(phi_f12); + return RADF_TO_BINANG(Math_Acot2F(phi_f12, phi_f14)); +} + +f32 func_80AD49B8(Path* path, s32 arg1, Vec3f* arg2, Vec3s* arg3) { + s32 pad; + Vec3f sp20; + Vec3s* temp_v1; + + if (path != NULL) { + temp_v1 = Lib_SegmentedToVirtual(path->points); + temp_v1 = &temp_v1[arg1]; + + sp20.x = temp_v1->x; + sp20.y = temp_v1->y; + sp20.z = temp_v1->z; + } + arg3->y = Math_Vec3f_Yaw(arg2, &sp20); + arg3->x = Math_Vec3f_Pitch(arg2, &sp20); + return sp20.y - arg2->y; +} + +void func_80AD4A78(EnTrt2* this, GlobalContext* globalCtx) { + Vec3f sp34; + + sp34.x = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.x; + sp34.y = this->actor.world.pos.y; + sp34.z = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.z; + Actor_SpawnFloorDustRing(globalCtx, &this->actor, &sp34, 50.0f, 0, 2.0f, 0, 0, 0); +} + +s32 func_80AD4B08(GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + s32 ret; + + if (SurfaceType_GetSceneExitIndex(&globalCtx->colCtx, player->actor.floorPoly, player->actor.floorBgId) == 0x15) { + ret = true; + } else { + ret = false; + } + return ret; +} + +s32 func_80AD4B4C(EnTrt2* this, GlobalContext* globalCtx) { + s32 sp24 = false; + Player* player = GET_PLAYER(globalCtx); + + if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { + sp24 = true; + this->actor.speedXZ = 0.0f; + func_80AD349C(this); + this->unk_3B4 = this->unk_3B2; + if (this->actor.bgCheckFlags & 1) { + if ((player->transformation != PLAYER_FORM_HUMAN) && (player->transformation != PLAYER_FORM_FIERCE_DEITY)) { + this->unk_3A8 = 0x84F; + } + func_80AD3DA4(this, globalCtx); + } else if ((player->transformation == PLAYER_FORM_HUMAN) || + (player->transformation == PLAYER_FORM_FIERCE_DEITY)) { + this->unk_3B2 = 16; + this->actor.velocity.y = 1.5f; + } else { + this->unk_3A8 = 0x84F; + this->unk_3D8 = true; + func_80AD3380(&this->skelAnime, sAnimations, 7); + this->unk_3B2 = 7; + } + } + return sp24; +} + +s32 func_80AD4C4C(EnTrt2* this) { + if (this->actor.bgCheckFlags & 1) { + if (this->actor.xzDistToPlayer < 100.0f) { + return true; + } + } else if ((this->actor.xzDistToPlayer > 50.0f) && (this->actor.xzDistToPlayer < 200.0f)) { + return true; + } + return false; +} + +s32 func_80AD4CCC(EnTrt2* this, GlobalContext* globalCtx) { + s16 sp1E = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; + Player* player = GET_PLAYER(globalCtx); + + if (((this->unk_3B2 == 4) || (this->unk_3B2 == 5)) && this->actor.isTargeted && !(this->actor.bgCheckFlags & 1) && + ((player->transformation == PLAYER_FORM_HUMAN) || (player->transformation == PLAYER_FORM_FIERCE_DEITY))) { + this->actor.speedXZ = 0.0f; + this->actor.velocity.y = 1.5f; + this->unk_3B2 = 16; + return true; + } + + if (func_80AD4C4C(this) && this->actor.isTargeted && (sp1E < 0x4000) && (sp1E > -0x4000)) { + func_800B863C(&this->actor, globalCtx); + } + + return true; +} + +void func_80AD4DB4(EnTrt2* this, GlobalContext* globalCtx) { + static Vec3f D_80AD5904 = { 0.0f, 50.0f, 0.0 }; + + this->actor.flags &= ~ACTOR_FLAG_10; + Actor_SetObjectDependency(globalCtx, &this->actor); + Actor_SetScale(&this->actor, 0.008f); + this->path = func_8013D648(globalCtx, ENTRT2_GET_FC00(&this->actor), 0x3F); + this->unk_3AE = Rand_S16Offset(100, 50); + this->unk_3B0 = 10; + this->unk_3A8 = 0; + + this->actor.world.pos.x += D_80AD5904.x; + this->actor.world.pos.y += D_80AD5904.y; + this->actor.world.pos.z += D_80AD5904.z; + + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f); + func_80AD469C(this, globalCtx); + this->actor.colChkInfo.mass = MASS_IMMOVABLE; + this->actor.colChkInfo.cylRadius = 50; + + this->unk_3C0 = 0; + this->unk_3D8 = false; + this->unk_3DA = this->actor.cutscene; + this->unk_3B6 = 20; + this->unk_3B8 = 0; + this->unk_3BC = func_80AD4608; + + if (gSaveContext.weekEventReg[12] & 8) { + Actor_MarkForDeath(&this->actor); + return; + } + + if (gSaveContext.weekEventReg[84] & 0x40) { + Actor_MarkForDeath(&this->actor); + return; + } + + if ((globalCtx->sceneNum == SCENE_20SICHITAI) || (globalCtx->sceneNum == SCENE_20SICHITAI2)) { + if (gSaveContext.day == 2) { + if (!(gSaveContext.weekEventReg[15] & 0x80)) { + gSaveContext.weekEventReg[15] |= 0x80; + this->unk_3B2 = 3; + } else { + Actor_MarkForDeath(&this->actor); + return; + } + } else { + Actor_MarkForDeath(&this->actor); + return; + } + } else if (gSaveContext.day == 2) { + if (gSaveContext.weekEventReg[15] & 0x80) { + this->unk_3B2 = 4; + } else { + Actor_MarkForDeath(&this->actor); + return; + } + } else if (gSaveContext.day == 3) { + this->unk_3B2 = 4; + } + this->actionFunc = func_80AD4FE4; +} + +void func_80AD4FE4(EnTrt2* this, GlobalContext* globalCtx) { + static EnTrt2UnkFunc2 D_80AD5910[] = { + func_80AD3664, func_80AD36EC, func_80AD38B8, func_80AD381C, func_80AD3530, func_80AD3A24, func_80AD434C, + func_80AD3CEC, func_80AD3BE4, func_80AD3C94, func_80AD417C, func_80AD3EF0, func_80AD3FF4, func_80AD4110, + func_80AD40AC, func_80AD4550, func_80AD3B6C, func_80AD3AE4, func_80AD4298, func_80AD431C, func_80AD3E34, + }; + + this->unk_3BC(this); + + D_80AD5910[this->unk_3B2](this, globalCtx); + Actor_MoveWithGravity(&this->actor); + + if (globalCtx->sceneNum != SCENE_20SICHITAI) { + Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 26.0f, 10.0f, 0.0f, 5); + } + + Actor_SetFocus(&this->actor, 90.0f); + SkelAnime_Update(&this->skelAnime); +} + +static InitChainEntry sInitChain[] = { ICHAIN_U8(targetMode, 3, ICHAIN_CONTINUE), ICHAIN_F32(targetArrowOffset, 500, ICHAIN_STOP), }; -#endif +void EnTrt2_Init(Actor* thisx, GlobalContext* globalCtx) { + EnTrt2* this = THIS; -extern ColliderCylinderInit D_80AD58A0; -extern CollisionCheckInfoInit2 D_80AD58CC; -extern DamageTable D_80AD58D8; -extern InitChainEntry D_80AD5964[]; + Collider_InitCylinder(globalCtx, &this->collider); + Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); + CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); + Actor_ProcessInitChain(&this->actor, sInitChain); + this->actionFunc = func_80AD4DB4; +} -extern UNK_TYPE D_06000A44; +void EnTrt2_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnTrt2* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3380.s") + SkelAnime_Free(&this->skelAnime, globalCtx); + Collider_DestroyCylinder(globalCtx, &this->collider); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD341C.s") +void EnTrt2_Update(Actor* thisx, GlobalContext* globalCtx) { + EnTrt2* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD349C.s") + if ((this->unk_3B2 != 6) && (this->unk_3B2 != 10) && (this->unk_3B2 != 13) && (this->unk_3B2 != 14) && + (this->unk_3B2 != 16) && (this->unk_3B2 != 8) && (this->unk_3B2 != 9)) { + func_80AD4B4C(this, globalCtx); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3530.s") + this->actionFunc(this, globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3664.s") + func_80AD341C(this, globalCtx); + func_80AD5234(this, globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD36EC.s") + if ((this->unk_3B2 != 6) && (this->unk_3B2 != 10) && (this->unk_3B2 != 13) && (this->unk_3B2 != 14) && + (this->unk_3B2 != 16) && (this->unk_3B2 != 8) && (this->unk_3B2 != 9)) { + func_80AD4CCC(this, globalCtx); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD381C.s") +void func_80AD5234(EnTrt2* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + Vec3f sp40; + Vec3f sp34; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD38B8.s") + Math_SmoothStepToS(&this->unk_3D6, this->actor.yawTowardsPlayer - this->actor.shape.rot.y, 4, 0x38E0, 1); + this->unk_3D6 = CLAMP(this->unk_3D6, -0x38E0, 0x38E0); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3A24.s") + sp40 = player->actor.world.pos; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3AE4.s") + if (this->unk_3B2 == 8) { + sp40.y = player->bodyPartsPos[7].y + 3.0f; + } else { + sp40.y = player->bodyPartsPos[7].y + 45.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3B6C.s") + sp34 = this->actor.world.pos; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3BE4.s") + Math_SmoothStepToS(&this->unk_3D4, Math_Vec3f_Pitch(&sp34, &sp40), 4, 0x1C70, 1); + this->unk_3D4 = CLAMP(this->unk_3D4, -0x1C70, 0x1C70); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3C94.s") +void func_80AD5394(s16 arg0, s16 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4) { + Vec3f sp7C; + Vec3f sp70 = gZeroVec3f; + Vec3s sp68; + MtxF sp28; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3CEC.s") + Matrix_MultiplyVector3fByState(&sp70, &sp7C); + Matrix_CopyCurrentState(&sp28); + func_8018219C(&sp28, &sp68, 0); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3DA4.s") + *arg2 = sp7C; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3E34.s") + if (arg4) { + sp68.x += arg0; + sp68.y += arg1; + Math_SmoothStepToS(&arg3->x, sp68.x, 4, 0x1FFE, 1); + Math_SmoothStepToS(&arg3->y, sp68.y, 4, 0x1FFE, 1); + Math_SmoothStepToS(&arg3->z, sp68.z, 4, 0x1FFE, 1); + } else { + arg3->x = sp68.x; + arg3->y = sp68.y; + arg3->z = sp68.z; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3EF0.s") +s32 EnTrt2_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, + Actor* thisx) { + EnTrt2* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD3FF4.s") + if ((limbIndex == 8) || (limbIndex == 13) || (limbIndex == 19)) { + rot->y += (s16)Math_SinS(this->unk_33C[limbIndex]) * 200; + rot->z += (s16)Math_CosS(this->unk_372[limbIndex]) * 200; + } + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD40AC.s") +void EnTrt2_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + EnTrt2* this = THIS; + Vec3f sp30 = { 0.0f, -30.0f, 0.0f }; + s32 phi_v0 = false; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4110.s") + if (this->unk_3B2 >= 8) { + phi_v0 = true; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD417C.s") + if (limbIndex == 21) { + func_80AD5394(this->unk_3D4, this->unk_3D6, &this->unk_3C8, &this->unk_3C2, phi_v0); + Matrix_InsertTranslation(this->unk_3C8.x, this->unk_3C8.y, this->unk_3C8.z, MTXMODE_NEW); + Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); + Matrix_RotateY(this->unk_3C2.y, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_3C2.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_3C2.z, MTXMODE_APPLY); + Matrix_MultiplyVector3fByState(&sp30, &this->actor.focus.pos); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4298.s") +void EnTrt2_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) { + EnTrt2* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD431C.s") + if (limbIndex == 21) { + Matrix_InsertTranslation(this->unk_3C8.x, this->unk_3C8.y, this->unk_3C8.z, MTXMODE_NEW); + Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); + Matrix_RotateY(this->unk_3C2.y, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_3C2.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_3C2.z, MTXMODE_APPLY); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD434C.s") +void func_80AD56E8(Actor* thisx, GlobalContext* globalCtx) { + static TexturePtr D_80AD5978[] = { + object_trt_Tex_00B0B8, + object_trt_Tex_00B8B8, + object_trt_Tex_00C0B8, + }; + s32 pad; + EnTrt2* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4550.s") + OPEN_DISPS(globalCtx->state.gfxCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4608.s") + func_8012C28C(globalCtx->state.gfxCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD469C.s") + gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80AD5978[this->unk_3B8])); + gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80AD5978[this->unk_3B8])); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD46F8.s") + SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, EnTrt2_OverrideLimbDraw, EnTrt2_PostLimbDraw, + EnTrt2_UnkDraw, &this->actor); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD475C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD48F8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD49B8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4A78.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4B08.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4B4C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4C4C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4CCC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4DB4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD4FE4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/EnTrt2_Init.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/EnTrt2_Destroy.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/EnTrt2_Update.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD5234.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD5394.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD54C8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD5584.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD566C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Trt2/func_80AD56E8.s") + CLOSE_DISPS(globalCtx->state.gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.h b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.h index 11320af0cb..bab2747212 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.h +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.h @@ -6,11 +6,39 @@ struct EnTrt2; typedef void (*EnTrt2ActionFunc)(struct EnTrt2*, GlobalContext*); +typedef void (*EnTrt2UnkFunc)(struct EnTrt2*); +typedef void (*EnTrt2UnkFunc2)(struct EnTrt2*, GlobalContext*); + +#define ENTRT2_GET_FC00(thisx) (((thisx)->params & 0xFC00) >> 0xA) typedef struct EnTrt2 { - /* 0x0000 */ Actor actor; - /* 0x0144 */ EnTrt2ActionFunc actionFunc; - /* 0x0148 */ char unk_148[0x294]; + /* 0x000 */ Actor actor; + /* 0x144 */ EnTrt2ActionFunc actionFunc; + /* 0x148 */ UNK_TYPE1 unk_148[8]; + /* 0x150 */ SkelAnime skelAnime; + /* 0x194 */ ColliderCylinder collider; + /* 0x1E0 */ Path* path; + /* 0x1E4 */ s32 unk_1E4; + /* 0x1E8 */ UNK_TYPE1 unk_1E8[0x154]; + /* 0x33C */ s16 unk_33C[27]; + /* 0x372 */ s16 unk_372[27]; + /* 0x3A8 */ u16 unk_3A8; + /* 0x3AA */ UNK_TYPE1 unk_3AA[4]; + /* 0x3AE */ s16 unk_3AE; + /* 0x3B0 */ s16 unk_3B0; + /* 0x3B2 */ s16 unk_3B2; + /* 0x3B4 */ s16 unk_3B4; + /* 0x3B6 */ s16 unk_3B6; + /* 0x3B8 */ s16 unk_3B8; + /* 0x3BC */ EnTrt2UnkFunc unk_3BC; + /* 0x3C0 */ s16 unk_3C0; + /* 0x3C2 */ Vec3s unk_3C2; + /* 0x3C8 */ Vec3f unk_3C8; + /* 0x3D4 */ s16 unk_3D4; + /* 0x3D6 */ s16 unk_3D6; + /* 0x3D8 */ u8 unk_3D8; + /* 0x3D9 */ u8 unk_3D9; + /* 0x3DA */ s16 unk_3DA; } EnTrt2; // size = 0x3DC extern const ActorInit En_Trt2_InitVars; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index c7f34296f6..7bb9dbea6f 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -12206,9 +12206,9 @@ 0x80AD5150:("EnTrt2_Update",), 0x80AD5234:("func_80AD5234",), 0x80AD5394:("func_80AD5394",), - 0x80AD54C8:("func_80AD54C8",), - 0x80AD5584:("func_80AD5584",), - 0x80AD566C:("func_80AD566C",), + 0x80AD54C8:("EnTrt2_OverrideLimbDraw",), + 0x80AD5584:("EnTrt2_PostLimbDraw",), + 0x80AD566C:("EnTrt2_UnkDraw",), 0x80AD56E8:("func_80AD56E8",), 0x80AD5BB0:("ObjTokeiStep_SetSysMatrix",), 0x80AD5BE8:("ObjTokeiStep_AddQuake",), diff --git a/undefined_syms.txt b/undefined_syms.txt index cff072061c..971cc4c7aa 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -2067,11 +2067,6 @@ D_0600B2B0 = 0x0600B2B0; D_0600FEF0 = 0x0600FEF0; D_06000A44 = 0x06000A44; -// ovl_En_Trt2 - -D_06000A44 = 0x06000A44; -D_0600FEF0 = 0x0600FEF0; - // ovl_En_Tru D_0601A820 = 0x0601A820;