Boss01 (Odolwa) OK and documented (#1452)

* Boss01 (Odolwa) OK and documented

* Unify existing InitRand implementations

* Remove newlines after `// fallthrough`

* Respond to the rest of engineer's review

* Respond to most of anon's review

* Try to comment the shadow thing correctly

* Fix boss_01 after merge

* SEGMENTED_TO_VIRTUAL -> SEGMENTED_TO_K0

* Review

* Use DMG_SWORD_BEAM and update the comment in z64collision_check.h

* Respond to engineer's review
This commit is contained in:
Tom Overton 2023-10-28 14:29:43 -07:00 committed by GitHub
parent e634be7cd4
commit 2859cbbf5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 3827 additions and 582 deletions

View File

@ -142,10 +142,10 @@
<!-- Odolwa Animations -->
<Animation Name="gOdolwaClimbAnim" Offset="0xF918" /> <!-- Unused and glitchy. Original name might be "jmp_crym" -->
<Animation Name="gOdolwaDamageStartAnim" Offset="0xFDEC" /> <!-- Original name is "jmp_dam02" -->
<Animation Name="gOdolwaDamagedStartAnim" Offset="0xFDEC" /> <!-- Original name is "jmp_dam02" -->
<Animation Name="gOdolwaShieldGuardAnim" Offset="0xFF94" /> <!-- Original name is "jmp_def" -->
<Animation Name="gOdolwaSwordGuardAnim" Offset="0x10150" /> <!-- Original name is "jmp_def02" -->
<Animation Name="gOdolwaDamageLoopAnim" Offset="0x10980" /> <!-- Original name is "jmp_dm01" -->
<Animation Name="gOdolwaDamagedLoopAnim" Offset="0x10980" /> <!-- Original name is "jmp_dm01" -->
<Animation Name="gOdolwaDeathAnim" Offset="0x124CC" /> <!-- Original name is "jmp_down" -->
<Animation Name="gOdolwaMothSummonDanceAnim" Offset="0x12B70" /> <!-- Named "dance_bug" in MM3D, but it was probably renamed by Grezzo, since it doesn't fit with other names. -->
<Animation Name="gOdolwaCrouchAnim" Offset="0x12D10" /> <!-- Original name is "jmp_jmp01" -->

View File

@ -649,12 +649,12 @@ typedef enum {
/* 0x5B */ TATL_HINT_ID_SKULLFISH,
/* 0x5C */ TATL_HINT_ID_DESBREKO,
/* 0x5D */ TATL_HINT_ID_GREEN_CHUCHU,
/* 0x5E */ TATL_HINT_ID_ODOLWA_1,
/* 0x5E */ TATL_HINT_ID_ODOLWA_PHASE_ONE, // 799 or fewer frames have passed, says Odolwa is dangerous to get close to
/* 0x5F */ TATL_HINT_ID_GEKKO_GIANT_SLIME,
/* 0x60 */ TATL_HINT_ID_BAD_BAT,
/* 0x61 */ TATL_HINT_ID_REAL_BOMBCHU,
/* 0x62 */ TATL_HINT_ID_ODOLWA_2,
/* 0x63 */ TATL_HINT_ID_ODOLWA_3,
/* 0x62 */ TATL_HINT_ID_ODOLWA_CLOSE_TO_PHASE_TWO, // 800 frames have passed, warns that Odolwa will attack after dancing
/* 0x63 */ TATL_HINT_ID_ODOLWA_PHASE_TWO, // 1000 or more frames have passed, explains that the bugs are drawn to fire
/* 0x64 */ TATL_HINT_ID_MUSHROOM,
/* 0xFF */ TATL_HINT_ID_NONE = 0xFF
} TatlHintId;

View File

@ -394,7 +394,8 @@ typedef enum {
#define DMG_ENTRY(damage, effect) ((damage) | ((effect) << 4))
// These flags are not to be used in code until we figure out how we want to format them. They are only here for reference
// Don't use combinations of these flags in code until we figure out how we want to format them.
// It's okay to use these flags if the code is only checking a single flag, though.
#define DMG_DEKU_NUT (1 << 0x00)
#define DMG_DEKU_STICK (1 << 0x01)
#define DMG_HORSE_TRAMPLE (1 << 0x02)

4
spec
View File

@ -2297,9 +2297,7 @@ beginseg
name "ovl_Boss_01"
compress
include "build/src/overlays/actors/ovl_Boss_01/z_boss_01.o"
include "build/data/ovl_Boss_01/ovl_Boss_01.data.o"
include "build/data/ovl_Boss_01/ovl_Boss_01.bss.o"
include "build/data/ovl_Boss_01/ovl_Boss_01.reloc.o"
include "build/src/overlays/actors/ovl_Boss_01/ovl_Boss_01_reloc.o"
endseg
beginseg

File diff suppressed because it is too large Load Diff

View File

@ -2,16 +2,153 @@
#define Z_BOSS_01_H
#include "global.h"
#include "assets/objects/object_boss01/object_boss01.h"
struct Boss01;
#define ODOLWA_GET_TYPE(thisx) ((thisx)->params)
#define ODOLWA_GET_AFTERIMAGE_DESPAWN_TIMER(thisx) ((thisx)->world.rot.z)
#define ODOLWA_SHADOW_TEX_WIDTH 64
#define ODOLWA_SHADOW_TEX_HEIGHT 64
#define ODOLWA_SHADOW_TEX_SIZE ((s32)sizeof(u8[ODOLWA_SHADOW_TEX_HEIGHT][ODOLWA_SHADOW_TEX_WIDTH]))
typedef void (*Boss01ActionFunc)(struct Boss01*, PlayState*);
typedef enum OdolwaType {
/* 0 */ ODOLWA_TYPE_ODOLWA,
/* 10 */ ODOLWA_TYPE_BUG = 10,
/* 35 */ ODOLWA_TYPE_AFTERIMAGE = 35
} OdolwaType;
typedef enum OdolwaBodyPart {
/* 0 */ ODOLWA_BODYPART_HEAD,
/* 1 */ ODOLWA_BODYPART_TORSO,
/* 2 */ ODOLWA_BODYPART_PELVIS,
/* 3 */ ODOLWA_BODYPART_LEFT_UPPER_ARM,
/* 4 */ ODOLWA_BODYPART_LEFT_FOREARM,
/* 5 */ ODOLWA_BODYPART_SHIELD,
/* 6 */ ODOLWA_BODYPART_RIGHT_UPPER_ARM,
/* 7 */ ODOLWA_BODYPART_RIGHT_FOREARM,
/* 8 */ ODOLWA_BODYPART_SWORD,
/* 9 */ ODOLWA_BODYPART_RIGHT_THIGH,
/* 10 */ ODOLWA_BODYPART_RIGHT_SHIN,
/* 11 */ ODOLWA_BODYPART_RIGHT_FOOT,
/* 12 */ ODOLWA_BODYPART_LEFT_THIGH,
/* 13 */ ODOLWA_BODYPART_LEFT_SHIN,
/* 14 */ ODOLWA_BODYPART_LEFT_FOOT,
/* 15 */ ODOLWA_BODYPART_MAX
} OdolwaBodyPart;
typedef enum OdolwaColliderBodyPart {
/* 0 */ ODOLWA_COLLIDER_BODYPART_HEAD,
/* 1 */ ODOLWA_COLLIDER_BODYPART_TORSO,
/* 2 */ ODOLWA_COLLIDER_BODYPART_PELVIS,
/* 3 */ ODOLWA_COLLIDER_BODYPART_LEFT_UPPER_ARM,
/* 4 */ ODOLWA_COLLIDER_BODYPART_LEFT_FOREARM,
/* 5 */ ODOLWA_COLLIDER_BODYPART_RIGHT_UPPER_ARM,
/* 6 */ ODOLWA_COLLIDER_BODYPART_RIGHT_FOREARM,
/* 7 */ ODOLWA_COLLIDER_BODYPART_LEFT_THIGH,
/* 8 */ ODOLWA_COLLIDER_BODYPART_LEFT_SHIN,
/* 9 */ ODOLWA_COLLIDER_BODYPART_RIGHT_THIGH,
/* 10 */ ODOLWA_COLLIDER_BODYPART_RIGHT_SHIN,
/* 11 */ ODOLWA_COLLIDER_BODYPART_MAX
} OdolwaColliderBodyPart;
typedef enum OdolwaSwordCollider {
/* 0 */ ODOLWA_SWORD_COLLIDER_SWORD_BASE,
/* 1 */ ODOLWA_SWORD_COLLIDER_SWORD_TIP,
/* 2 */ ODOLWA_SWORD_COLLIDER_PELVIS,
/* 3 */ ODOLWA_SWORD_COLLIDER_MAX
} OdolwaSwordCollider;
typedef enum OdolwaShieldCollider {
/* 0 */ ODOLWA_SHIELD_COLLIDER_SHIELD,
/* 1 */ ODOLWA_SHIELD_COLLIDER_MAX
} OdolwaShieldCollider;
typedef enum OdolwaKickAndShieldBashCollider {
/* 0 */ ODOLWA_KICK_AND_SHIELD_BASH_COLLIDER_SHIELD,
/* 1 */ ODOLWA_KICK_AND_SHIELD_BASH_COLLIDER_LEFT_FOOT,
/* 2 */ ODOLWA_KICK_AND_SHIELD_BASH_COLLIDER_MAX
} OdolwaKickAndShieldBashCollider;
typedef struct Boss01 {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x320];
/* 0x144 */ s16 frameCounter;
/* 0x148 */ s32 phaseFrameCounter;
/* 0x14C */ union {
u8 jumpIfPlayerIsClose;
u8 shouldPerformFallingSlash;
u8 bugDrawDmgEffType;
};
/* 0x14E */ s16 timers[3];
/* 0x154 */ f32 animMorphFrames1;
/* 0x158 */ f32 animMorphFrames2;
/* 0x15C */ s16 damageTimer;
/* 0x15E */ s16 damageFlashTimer;
/* 0x160 */ u8 isPerformingVerticalSlash; // set, but never checked
/* 0x160 */ u8 landedFromJump;
/* 0x162 */ u8 waitType;
/* 0x163 */ u8 lookAtPlayer;
/* 0x164 */ SkelAnime skelAnime;
/* 0x1A8 */ f32 animEndFrame;
/* 0x1AC */ f32 prevJumpVelocityY;
/* 0x1B0 */ f32 runTargetPosAngularVelocityY;
/* 0x1B4 */ f32 runTargetPosRotY;
/* 0x1B8 */ u8 swordState;
/* 0x1B9 */ u8 kickAndShieldBashCollisionEnabled;
/* 0x1BA */ u8 swordAndShieldCollisionEnabled;
/* 0x1BB */ u8 canGuardOrEvade;
/* 0x1BC */ u8 bodyInvincibilityTimer;
/* 0x1BE */ s16 disableCollisionTimer;
/* 0x1C0 */ u8 afterimageSpawnFrameMask; // used as a bitmask with frameCounter to control how often to spawn afterimages
/* 0x1C1 */ u8 hasPlayedSummonBugCs;
/* 0x1C4 */ f32 additionalVelocityX;
/* 0x1C8 */ f32 additionalVelocityZ;
/* 0x1CC */ s16 headRotY;
/* 0x1CE */ s16 headRotX;
/* 0x1D0 */ Vec3s jointTable[ODOLWA_LIMB_MAX];
/* 0x308 */ Vec3s morphTable[ODOLWA_LIMB_MAX];
/* 0x440 */ Vec3f feetPos[2];
/* 0x458 */ Vec3f pelvisPos;
/* 0x464 */ Boss01ActionFunc actionFunc;
/* 0x468 */ char unk_468[0x674];
/* 0x468 */ ColliderJntSph swordCollider;
/* 0x488 */ ColliderJntSphElement swordColliderElements[ODOLWA_SWORD_COLLIDER_MAX];
/* 0x548 */ ColliderJntSph shieldCollider;
/* 0x568 */ ColliderJntSphElement shieldColliderElements[ODOLWA_SHIELD_COLLIDER_MAX];
/* 0x5A8 */ ColliderJntSph bodyCollider;
/* 0x5C8 */ ColliderJntSphElement bodyColliderElements[ODOLWA_COLLIDER_BODYPART_MAX];
/* 0x888 */ ColliderJntSph kickAndShieldBashCollider;
/* 0x8A8 */ ColliderJntSphElement kickAndShieldBashColliderElements[ODOLWA_KICK_AND_SHIELD_BASH_COLLIDER_MAX];
/* 0x928 */ Vec3f bodyPartsPos[ODOLWA_BODYPART_MAX];
/* 0x9DC */ union {
u32 cutsceneTimer;
u32 waitTimer;
u32 summonMothsTimer;
};
/* 0x9E0 */ s16 cutsceneState;
/* 0x9E2 */ s16 subCamId;
/* 0x9E4 */ Vec3f subCamEye;
/* 0x9F0 */ Vec3f subCamAt;
/* 0x9FC */ Vec3f subCamUp;
/* 0xA08 */ Vec3f subCamEyeNext;
/* 0xA14 */ f32 deathCsInitialSubCamRot;
/* 0xA18 */ f32 deathCsSubCamRot;
/* 0xA1C */ f32 subCamVelocity;
/* 0xA20 */ f32 deathShrinkSpeed;
/* 0xA24 */ f32 screenShakeOffsetY;
/* 0xA28 */ f32 screenShakeMagnitude;
/* 0xA2C */ ColliderCylinder bugACCollider;
/* 0xA78 */ ColliderCylinder bugATCollider;
/* 0xAC4 */ f32 bugDrawDmgEffScale;
/* 0xAC8 */ f32 bugDrawDmgEffAlpha;
/* 0xACC */ f32 drawDmgEffScale;
/* 0xAD0 */ f32 drawDmgEffFrozenSteamScale;
/* 0xAD4 */ f32 drawDmgEffAlpha;
/* 0xAD8 */ u8 drawDmgEffType;
/* 0xAD9 */ u8 drawDmgEffState;
/* 0xADA */ s16 drawDmgEffTimer;
} Boss01; // size = 0xADC
#endif // Z_BOSS_01_H

View File

@ -69,9 +69,9 @@ u8 sIsInGiantMode;
Boss02* sRedTwinmold;
Boss02* sBlueTwinmold;
Boss02* sTwinmoldStatic;
u8 sMusicStartTimer;
u8 sTwinmoldMusicStartTimer;
DoorWarp1* sBlueWarp;
TwinmoldEffect sEffects[TWINMOLD_EFFECT_COUNT];
TwinmoldEffect sTwinmoldEffects[TWINMOLD_EFFECT_COUNT];
static DamageTable sBlueTwinmoldDamageTable = {
/* Deku Nut */ DMG_ENTRY(0, 0x0),
@ -588,7 +588,7 @@ void Boss02_Init(Actor* thisx, PlayState* play) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_CLEARED_STONE_TOWER_TEMPLE) &&
(TWINMOLD_GET_TYPE(&this->actor) == TWINMOLD_TYPE_RED)) {
sBlueWarp = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, 60.0f,
0.0f, 0, 0, 0, 1);
0.0f, 0, 0, 0, ENDOORWARP1_FF_1);
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 0.0f, 30.0f, -150.0f, 0, 1, 0, BHEART_PARAM_NORMAL);
}
@ -597,14 +597,14 @@ void Boss02_Init(Actor* thisx, PlayState* play) {
this->subCamUp.y = 1.0f;
if (TWINMOLD_GET_TYPE(&this->actor) == TWINMOLD_TYPE_STATIC) {
sTwinmoldStatic = this;
play->specialEffects = (void*)sEffects;
play->specialEffects = (void*)sTwinmoldEffects;
this->actor.update = Boss02_Static_Update;
this->actor.draw = Boss02_Static_Draw;
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
this->playerScale = 0.01f;
if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_55) || (sBlueWarp != NULL)) {
this->unk_1D20 = 0;
sMusicStartTimer = KREG(15) + 20;
sTwinmoldMusicStartTimer = KREG(15) + 20;
} else {
this->unk_1D20 = 1;
}
@ -1346,9 +1346,9 @@ void Boss02_Static_Update(Actor* thisx, PlayState* play) {
}
if (sBlueWarp == NULL) {
if (sMusicStartTimer != 0) {
sMusicStartTimer--;
if (sMusicStartTimer == 0) {
if (sTwinmoldMusicStartTimer != 0) {
sTwinmoldMusicStartTimer--;
if (sTwinmoldMusicStartTimer == 0) {
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, NA_BGM_BOSS | SEQ_FLAG_ASYNC);
}
}
@ -2173,7 +2173,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
if (this->unk_1D1C == 45) {
func_800B7298(play, &this->actor, PLAYER_CSACTION_21);
sMusicStartTimer = KREG(91) + 43;
sTwinmoldMusicStartTimer = KREG(91) + 43;
}
if (this->unk_1D1C == 85) {
@ -2304,7 +2304,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
phi_f0 = 3155.0f;
}
sBlueWarp = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1,
0.0f, phi_f0, 0.0f, 0, 0, 0, 1);
0.0f, phi_f0, 0.0f, 0, 0, 0, ENDOORWARP1_FF_1);
if (!sIsInGiantMode) {
sBlueWarp->unk_203 = 0;

View File

@ -231,30 +231,30 @@ void Boss03_UpdateSphereElement(s32 index, ColliderJntSph* collider, Vec3f* sphe
/* Start of RNG section */
static s32 sRandSeed0;
static s32 sRandSeed1;
static s32 sRandSeed2;
s32 sGyorgRandSeed1;
s32 sGyorgRandSeed2;
s32 sGyorgRandSeed3;
void Boss03_SeedRand(s32 seed0, s32 seed1, s32 seed2) {
sRandSeed0 = seed0;
sRandSeed1 = seed1;
sRandSeed2 = seed2;
void Boss03_InitRand(s32 seedInit1, s32 seedInit2, s32 seedInit3) {
sGyorgRandSeed1 = seedInit1;
sGyorgRandSeed2 = seedInit2;
sGyorgRandSeed3 = seedInit3;
}
f32 Boss03_RandZeroOne(void) {
f32 rand;
// Wichmann-Hill algorithm
sRandSeed0 = (sRandSeed0 * 171) % 30269;
sRandSeed1 = (sRandSeed1 * 172) % 30307;
sRandSeed2 = (sRandSeed2 * 170) % 30323;
f32 randFloat;
rand = (sRandSeed0 / 30269.0f) + (sRandSeed1 / 30307.0f) + (sRandSeed2 / 30323.0f);
while (rand >= 1.0f) {
rand -= 1.0f;
sGyorgRandSeed1 = (sGyorgRandSeed1 * 171) % 30269;
sGyorgRandSeed2 = (sGyorgRandSeed2 * 172) % 30307;
sGyorgRandSeed3 = (sGyorgRandSeed3 * 170) % 30323;
randFloat = (sGyorgRandSeed1 / 30269.0f) + (sGyorgRandSeed2 / 30307.0f) + (sGyorgRandSeed3 / 30323.0f);
while (randFloat >= 1.0f) {
randFloat -= 1.0f;
}
return fabsf(rand);
return fabsf(randFloat);
}
/* End of RNG section */
@ -483,7 +483,7 @@ void Boss03_Init(Actor* thisx, PlayState* play2) {
this->actor.world.pos = sGyorgInitialPos;
// Since Boss03_RandZeroOne is only used on this Init function, the resulting values end up being deterministic
Boss03_SeedRand(1, 29093, 9786);
Boss03_InitRand(1, 29093, 9786);
for (i = 0; i < 5; i++) {
f32 rand;

View File

@ -147,9 +147,9 @@ f32 sSubCamVelFactor;
f32 D_80911F50;
Vec3f sSinkingLureBasePos;
f32 D_80911F64;
s32 sRandSeed0;
s32 sRandSeed1;
s32 sRandSeed2;
s32 sFishingRandSeed1;
s32 sFishingRandSeed2;
s32 sFishingRandSeed3;
FishingProp sPondProps[POND_PROP_COUNT];
FishingGroupFish sGroupFishes[GROUP_FISH_COUNT];
f32 sFishGroupAngle1;
@ -404,26 +404,26 @@ void EnFishing_SetColliderElement(s32 index, ColliderJntSph* collider, Vec3f* po
collider->elements[index].dim.modelSphere.radius * collider->elements[index].dim.scale * scale * 1.6f;
}
void EnFishing_SeedRand(s32 seed0, s32 seed1, s32 seed2) {
sRandSeed0 = seed0;
sRandSeed1 = seed1;
sRandSeed2 = seed2;
void EnFishing_InitRand(s32 seedInit1, s32 seedInit2, s32 seedInit3) {
sFishingRandSeed1 = seedInit1;
sFishingRandSeed2 = seedInit2;
sFishingRandSeed3 = seedInit3;
}
f32 EnFishing_RandZeroOne(void) {
f32 rand;
// Wichmann-Hill algorithm
sRandSeed0 = (sRandSeed0 * 171) % 30269;
sRandSeed1 = (sRandSeed1 * 172) % 30307;
sRandSeed2 = (sRandSeed2 * 170) % 30323;
f32 randFloat;
rand = (sRandSeed0 / 30269.0f) + (sRandSeed1 / 30307.0f) + (sRandSeed2 / 30323.0f);
while (rand >= 1.0f) {
rand -= 1.0f;
sFishingRandSeed1 = (sFishingRandSeed1 * 171) % 30269;
sFishingRandSeed2 = (sFishingRandSeed2 * 172) % 30307;
sFishingRandSeed3 = (sFishingRandSeed3 * 170) % 30323;
randFloat = (sFishingRandSeed1 / 30269.0f) + (sFishingRandSeed2 / 30307.0f) + (sFishingRandSeed3 / 30323.0f);
while (randFloat >= 1.0f) {
randFloat -= 1.0f;
}
return fabsf(rand);
return fabsf(randFloat);
}
s16 EnFishing_SmoothStepToS(s16* pValue, s16 target, s16 scale, s16 step) {
@ -730,7 +730,7 @@ void EnFishing_InitPondProps(EnFishing* this, PlayState* play) {
Vec3f colliderPos;
s16 i;
EnFishing_SeedRand(1, 29100, 9786);
EnFishing_InitRand(1, 29100, 9786);
for (i = 0; i < POND_PROP_COUNT; i++) {
if (sPondPropInits[i].type == FS_PROP_INIT_STOP) {

View File

@ -6819,7 +6819,7 @@
0x808FC5AC:("EnFr_Destroy",),
0x808FC5BC:("EnFr_Update",),
0x808FC6C0:("EnFishing_SetColliderElement",),
0x808FC770:("EnFishing_SeedRand",),
0x808FC770:("EnFishing_InitRand",),
0x808FC790:("EnFishing_RandZeroOne",),
0x808FC8B8:("EnFishing_SmoothStepToS",),
0x808FC964:("EnFishing_SpawnRipple",),
@ -9217,81 +9217,81 @@
0x809D0090:("EnMttag_Init",),
0x809D0138:("EnMttag_Destroy",),
0x809D0168:("EnMttag_Update",),
0x809D0530:("func_809D0530",),
0x809D0550:("func_809D0550",),
0x809D0678:("func_809D0678",),
0x809D082C:("func_809D082C",),
0x809D089C:("func_809D089C",),
0x809D092C:("func_809D092C",),
0x809D0AA4:("func_809D0AA4",),
0x809D0530:("Boss01_InitRand",),
0x809D0550:("Boss01_RandZeroOne",),
0x809D0678:("Boss01_SpawnEffectFallingBlock",),
0x809D082C:("Boss01_SpawnEffectRingOfFire",),
0x809D089C:("Boss01_SetColliderSphere",),
0x809D092C:("Boss01_SelectAttack",),
0x809D0AA4:("Boss01_SpawnDustAtFeet",),
0x809D0CE8:("Boss01_Init",),
0x809D118C:("Boss01_Destroy",),
0x809D119C:("func_809D119C",),
0x809D1258:("func_809D1258",),
0x809D12B4:("func_809D12B4",),
0x809D1AB8:("func_809D1AB8",),
0x809D1B2C:("func_809D1B2C",),
0x809D1E5C:("func_809D1E5C",),
0x809D1E74:("func_809D1E74",),
0x809D1EA4:("func_809D1EA4",),
0x809D20D0:("func_809D20D0",),
0x809D2588:("func_809D2588",),
0x809D25E8:("func_809D25E8",),
0x809D2664:("func_809D2664",),
0x809D26B8:("func_809D26B8",),
0x809D2780:("func_809D2780",),
0x809D27D4:("func_809D27D4",),
0x809D2858:("func_809D2858",),
0x809D2914:("func_809D2914",),
0x809D2A44:("func_809D2A44",),
0x809D2AA0:("func_809D2AA0",),
0x809D2BCC:("func_809D2BCC",),
0x809D2CDC:("func_809D2CDC",),
0x809D2DE8:("func_809D2DE8",),
0x809D2E4C:("func_809D2E4C",),
0x809D3074:("func_809D3074",),
0x809D30D0:("func_809D30D0",),
0x809D32B4:("func_809D32B4",),
0x809D3374:("func_809D3374",),
0x809D3400:("func_809D3400",),
0x809D345C:("func_809D345C",),
0x809D34D4:("func_809D34D4",),
0x809D3530:("func_809D3530",),
0x809D35A8:("func_809D35A8",),
0x809D365C:("func_809D365C",),
0x809D370C:("func_809D370C",),
0x809D3A7C:("func_809D3A7C",),
0x809D3ADC:("func_809D3ADC",),
0x809D3C10:("func_809D3C10",),
0x809D3CD0:("func_809D3CD0",),
0x809D441C:("func_809D441C",),
0x809D4464:("func_809D4464",),
0x809D44C0:("func_809D44C0",),
0x809D4668:("func_809D4668",),
0x809D119C:("Boss01_JumpAwayFromExplosive",),
0x809D1258:("Boss01_SetupIntroCutscene",),
0x809D12B4:("Boss01_IntroCutscene",),
0x809D1AB8:("Boss01_SetupSummonBugsCutscene",),
0x809D1B2C:("Boss01_SummonBugsCutscene",),
0x809D1E5C:("Boss01_Afterimage_SetupWaitToDespawn",),
0x809D1E74:("Boss01_Afterimage_WaitToDespawn",),
0x809D1EA4:("Boss01_SetupWait",),
0x809D20D0:("Boss01_Wait",),
0x809D2588:("Boss01_SetupDazed",),
0x809D25E8:("Boss01_Dazed",),
0x809D2664:("Boss01_SetupSpinAttack",),
0x809D26B8:("Boss01_SpinAttack",),
0x809D2780:("Boss01_SetupDanceBeforeAttack",),
0x809D27D4:("Boss01_DanceBeforeAttack",),
0x809D2858:("Boss01_SetupRun",),
0x809D2914:("Boss01_Run",),
0x809D2A44:("Boss01_SetupJump",),
0x809D2AA0:("Boss01_JumpSquat",),
0x809D2BCC:("Boss01_Jump",),
0x809D2CDC:("Boss01_JumpLand",),
0x809D2DE8:("Boss01_SetupVerticalSlash",),
0x809D2E4C:("Boss01_VerticalSlash",),
0x809D3074:("Boss01_SetupHorizontalSlash",),
0x809D30D0:("Boss01_HorizontalSlash",),
0x809D32B4:("Boss01_SetupGuard",),
0x809D3374:("Boss01_Guard",),
0x809D3400:("Boss01_SetupKick",),
0x809D345C:("Boss01_Kick",),
0x809D34D4:("Boss01_SetupShieldBash",),
0x809D3530:("Boss01_ShieldBash",),
0x809D35A8:("Boss01_SetupDamaged",),
0x809D365C:("Boss01_Damaged",),
0x809D370C:("Boss01_UpdateDamage",),
0x809D3A7C:("Boss01_SetupSummonMoths",),
0x809D3ADC:("Boss01_SummonMoths",),
0x809D3C10:("Boss01_SetupDeathCutscene",),
0x809D3CD0:("Boss01_DeathCutscene",),
0x809D441C:("Boss01_SetupStunned",),
0x809D4464:("Boss01_Stunned",),
0x809D44C0:("Boss01_Thaw",),
0x809D4668:("Boss01_ArePlayerAndOdolwaFacing",),
0x809D46E4:("Boss01_Update",),
0x809D519C:("func_809D519C",),
0x809D5584:("func_809D5584",),
0x809D55CC:("func_809D55CC",),
0x809D519C:("Boss01_DrawSwordTrail",),
0x809D5584:("Boss01_OverrideLimbDraw",),
0x809D55CC:("Boss01_PostLimbDraw",),
0x809D5988:("Boss01_Draw",),
0x809D5B0C:("func_809D5B0C",),
0x809D5BC4:("func_809D5BC4",),
0x809D5FB4:("func_809D5FB4",),
0x809D606C:("func_809D606C",),
0x809D62D4:("func_809D62D4",),
0x809D6314:("func_809D6314",),
0x809D6424:("func_809D6424",),
0x809D6488:("func_809D6488",),
0x809D64E0:("func_809D64E0",),
0x809D6540:("func_809D6540",),
0x809D6588:("func_809D6588",),
0x809D65E0:("func_809D65E0",),
0x809D670C:("func_809D670C",),
0x809D694C:("func_809D694C",),
0x809D6B08:("func_809D6B08",),
0x809D6BB4:("func_809D6BB4",),
0x809D6C98:("func_809D6C98",),
0x809D6E7C:("func_809D6E7C",),
0x809D73D4:("func_809D73D4",),
0x809D5B0C:("Boss01_Afterimage_Draw",),
0x809D5BC4:("Boss01_FillShadowTex",),
0x809D5FB4:("Boss01_GenShadowTex",),
0x809D606C:("Boss01_DrawShadowTex",),
0x809D62D4:("Boss01_Bug_SetupCrawl",),
0x809D6314:("Boss01_Bug_Crawl",),
0x809D6424:("Boss01_Bug_SetupDamaged",),
0x809D6488:("Boss01_Bug_Damaged",),
0x809D64E0:("Boss01_Bug_SetupDead",),
0x809D6540:("Boss01_Bug_SetupStunned",),
0x809D6588:("Boss01_Bug_Stunned",),
0x809D65E0:("Boss01_Bug_Dead",),
0x809D670C:("Boss01_Bug_UpdateDamage",),
0x809D694C:("Boss01_Bug_Update",),
0x809D6B08:("Boss01_Bug_OverrideLimbDraw",),
0x809D6BB4:("Boss01_Bug_Draw",),
0x809D6C98:("Boss01_SpawnDustForFallingBlock",),
0x809D6E7C:("Boss01_UpdateEffects",),
0x809D73D4:("Boss01_DrawEffects",),
0x809DA1D0:("Boss02_FillScreen",),
0x809DA22C:("Boss02_SetFillScreenAlpha",),
0x809DA24C:("Boss02_StopFillScreen",),
@ -9321,7 +9321,7 @@
0x809E299C:("Boss03_SpawnEffectSplash",),
0x809E2AB4:("Boss03_SpawnEffectBubble",),
0x809E2B8C:("Boss03_UpdateSphereElement",),
0x809E2C1C:("Boss03_SeedRand",),
0x809E2C1C:("Boss03_InitRand",),
0x809E2C3C:("Boss03_RandZeroOne",),
0x809E2D64:("Boss03_FindActorDblueMovebg",),
0x809E2DA0:("Boss03_SpawnDust",),

View File

@ -7537,9 +7537,9 @@
0x80911F50:("D_80911F50","UNK_TYPE1","",0x1),
0x80911F58:("sSinkingLureBasePos","Vec3f","",0xC),
0x80911F64:("D_80911F64","f32","",0x4),
0x80911F68:("sRandSeed0","s32","",0x4),
0x80911F6C:("sRandSeed1","s32","",0x4),
0x80911F70:("sRandSeed2","s32","",0x4),
0x80911F68:("sFishingRandSeed1","s32","",0x4),
0x80911F6C:("sFishingRandSeed2","s32","",0x4),
0x80911F70:("sFishingRandSeed3","s32","",0x4),
0x80911F78:("sPondProps","UNK_TYPE1","[140]",0x20D0),
0x80914048:("sGroupFishes","UNK_TYPE1","[60]",0x10E0),
0x80915128:("sFishGroupAngle1","f32","",0x4),
@ -9862,54 +9862,45 @@
0x809D0434:("D_809D0434","f32","",0x4),
0x809D0438:("D_809D0438","f32","",0x4),
0x809D043C:("D_809D043C","f32","",0x4),
0x809D7980:("D_809D7980","UNK_TYPE1","",0x1),
0x809D798C:("D_809D798C","f32","",0x4),
0x809D7990:("D_809D7990","UNK_TYPE1","",0x1),
0x809D79B0:("D_809D79B0","UNK_TYPE1","",0x1),
0x809D79D0:("D_809D79D0","UNK_TYPE1","",0x1),
0x809D7A3C:("D_809D7A3C","UNK_TYPE1","",0x1),
0x809D7A4C:("D_809D7A4C","UNK_TYPE1","",0x1),
0x809D7A70:("D_809D7A70","UNK_TYPE1","",0x1),
0x809D7A80:("D_809D7A80","UNK_TYPE1","",0x1),
0x809D7C0C:("D_809D7C0C","UNK_TYPE1","",0x1),
0x809D7C1C:("D_809D7C1C","UNK_TYPE1","",0x1),
0x809D7C64:("D_809D7C64","UNK_TYPE1","",0x1),
0x809D7C74:("D_809D7C74","UNK_TYPE1","",0x1),
0x809D7CA0:("D_809D7CA0","UNK_TYPE1","",0x1),
0x809D7CCC:("Boss_01_InitVars","UNK_TYPE1","",0x1),
0x809D7CEC:("D_809D7CEC","UNK_TYPE1","",0x1),
0x809D7CF0:("D_809D7CF0","UNK_TYPE1","",0x1),
0x809D7CF4:("D_809D7CF4","UNK_TYPE1","",0x1),
0x809D7D24:("D_809D7D24","UNK_TYPE4","",0x4),
0x809D7D38:("D_809D7D38","UNK_TYPE4","",0x4),
0x809D7D4C:("D_809D7D4C","UNK_TYPE1","",0x1),
0x809D7D50:("D_809D7D50","UNK_TYPE1","",0x1),
0x809D7D54:("D_809D7D54","UNK_TYPE1","",0x1),
0x809D7D60:("D_809D7D60","UNK_TYPE1","",0x1),
0x809D7D6C:("D_809D7D6C","UNK_TYPE1","",0x1),
0x809D7D78:("D_809D7D78","UNK_TYPE1","",0x1),
0x809D7D7A:("D_809D7D7A","UNK_TYPE1","",0x1),
0x809D7D7E:("D_809D7D7E","UNK_TYPE1","",0x1),
0x809D7D7F:("D_809D7D7F","UNK_TYPE1","",0x1),
0x809D7D84:("D_809D7D84","UNK_TYPE1","",0x1),
0x809D7D8E:("D_809D7D8E","UNK_TYPE1","",0x1),
0x809D7D8F:("D_809D7D8F","UNK_TYPE1","",0x1),
0x809D7D96:("D_809D7D96","UNK_TYPE1","",0x1),
0x809D7D97:("D_809D7D97","UNK_TYPE1","",0x1),
0x809D7D98:("D_809D7D98","UNK_TYPE1","",0x1),
0x809D7DB4:("D_809D7DB4","UNK_TYPE1","",0x1),
0x809D7E38:("D_809D7E38","UNK_TYPE1","",0x1),
0x809D7E44:("D_809D7E44","UNK_TYPE1","",0x1),
0x809D7E50:("D_809D7E50","UNK_TYPE1","",0x1),
0x809D7E5C:("D_809D7E5C","UNK_TYPE1","",0x1),
0x809D7E68:("D_809D7E68","UNK_TYPE1","",0x1),
0x809D7EA0:("D_809D7EA0","UNK_TYPE1","",0x1),
0x809D7EAC:("D_809D7EAC","UNK_TYPE4","",0x4),
0x809D7EC4:("D_809D7EC4","UNK_TYPE4","",0x4),
0x809D7EE0:("D_809D7EE0","UNK_TYPE4","",0x4),
0x809D7F00:("D_809D7F00","UNK_TYPE4","",0x4),
0x809D7F30:("D_809D7F30","UNK_TYPE4","",0x4),
0x809D7F6C:("D_809D7F6C","UNK_TYPE1","",0x1),
0x809D7980:("sFallingBlockSfxPos","Vec3f","",0xC),
0x809D798C:("sSwordTrailAngularRangeDivisor","f32","",0x4),
0x809D7990:("sOdolwaDamageTable","DamageTable","",0x20),
0x809D79B0:("sBugDamageTable","DamageTable","",0x20),
0x809D79D0:("sSwordColliderJntSphElementsInit","ColliderJntSphElementInit","[3]",0x6C),
0x809D7A3C:("sSwordColliderJntSphInit","ColliderJntSphInit","",0x10),
0x809D7A4C:("sShieldColliderJntSphElementsInit","ColliderJntSphElementInit","[1]",0x24),
0x809D7A70:("sShieldColliderJntSphInit","ColliderJntSphInit","",0x10),
0x809D7A80:("sBodyColliderJntSphElementsInit","ColliderJntSphElementInit","[11]", 0x18C),
0x809D7C0C:("sBodyColliderJntSphInit","ColliderJntSphInit","",0x10),
0x809D7C1C:("sKickAndShieldBashColliderJntSphElementsInit","ColliderJntSphElementInit","[2]",0x48),
0x809D7C64:("sKickAndShieldBashColliderJntSphInit","ColliderJntSphInit","",0x10),
0x809D7C74:("sBugACColliderCylinderInit","ColliderCylinderInit","",0x2C),
0x809D7CA0:("sBugATColliderCylinderInit","ColliderCylinderInit","",0x2C),
0x809D7CCC:("Boss_01_InitVars","ActorInit","",0x20),
0x809D7CEC:("sDustPrimColor","Color_RGBA8","",0x4),
0x809D7CF0:("sDustEnvColor","Color_RGBA8","",0x4),
0x809D7CF4:("sWaitAnimations","AnimationHeader*","[12]",0x30),
0x809D7D24:("sBlueWarpSpawnsX","f32","[5]",0x14),
0x809D7D38:("sBlueWarpSpawnsZ","f32","[5]",0x14),
0x809D7D4C:("sIcePrimColor","Color_RGBA8","",0x4),
0x809D7D50:("sIceEnvColor","Color_RGBA8","",0x4),
0x809D7D54:("sIceAccel","Vec3f","",0xC),
0x809D7D60:("sSwordTrailOuterVertexIndices","u8","[11]",0xB),
0x809D7D6C:("sSwordTrailInnerVertexIndices","u8","[11]",0xB),
0x809D7D78:("sLimbToColliderBodyParts","s8","[60]",0x3C),
0x809D7DB4:("sLimbColliderOffsets","Vec3f","[11]",0x84),
0x809D7E38:("sShieldColliderOffset","Vec3f","",0xC),
0x809D7E44:("sSwordBaseColliderOffset","Vec3f","",0xC),
0x809D7E50:("sSwordTipColliderOffset","Vec3f","",0xC),
0x809D7E5C:("sHorizontalSlashPelvisColliderOffset","Vec3f","",0xC),
0x809D7E68:("sLimbToBodyParts","s8","[53]",0x35),
0x809D7EA0:("sDefaultPelvisColliderOffset","Vec3f","",0xC),
0x809D7EAC:("sShadowSmallMap","s32","[6]",0x18),
0x809D7EC4:("sShadowMediumMap","s32","[7]",0x1C),
0x809D7EE0:("sShadowLargeMap","s32","[8]",0x20),
0x809D7F00:("sShadowExtraLargeMap","s32","[12]",0x30),
0x809D7F30:("sParentShadowBodyParts","s32","[15]",0x3C),
0x809D7F6C:("sShadowSizes","u8","[15]",0xF),
0x809D7F80:("D_809D7F80","f32","",0x4),
0x809D7F84:("D_809D7F84","f32","",0x4),
0x809D7F88:("D_809D7F88","f32","",0x4),
@ -9967,22 +9958,22 @@
0x809D8150:("D_809D8150","f32","",0x4),
0x809D8154:("D_809D8154","f32","",0x4),
0x809D8158:("D_809D8158","f32","",0x4),
0x809D8A10:("D_809D8A10","UNK_TYPE2","",0x2),
0x809D8A14:("D_809D8A14","UNK_TYPE4","",0x4),
0x809D8A18:("D_809D8A18","UNK_TYPE4","",0x4),
0x809D8A1C:("D_809D8A1C","f32","",0x4),
0x809D8A20:("D_809D8A20","f32","",0x4),
0x809D8A24:("D_809D8A24","f32","",0x4),
0x809D8A28:("D_809D8A28","f32","",0x4),
0x809D8A2C:("D_809D8A2C","f32","",0x4),
0x809D8A30:("D_809D8A30","f32","",0x4),
0x809D8A34:("D_809D8A34","f32","",0x4),
0x809D8A38:("D_809D8A38","UNK_TYPE1","",0x1),
0x809D8A40:("D_809D8A40","UNK_TYPE1","",0x1),
0x809D8A4C:("D_809D8A4C","UNK_TYPE4","",0x4),
0x809D8A50:("D_809D8A50","UNK_TYPE4","",0x4),
0x809D8A54:("D_809D8A54","UNK_TYPE4","",0x4),
0x809D8A58:("D_809D8A58","UNK_TYPE1","",0x1),
0x809D8A10:("sOdolwaBugCount","s16","",0x2),
0x809D8A14:("sOdolwa","Boss01*","",0x4),
0x809D8A18:("sMothSwarm","EnTanron1*","",0x4),
0x809D8A1C:("sOdolwaSwordTrailPosX","f32","",0x4),
0x809D8A20:("sOdolwaSwordTrailPosY","f32","",0x4),
0x809D8A24:("sOdolwaSwordTrailPosZ","f32","",0x4),
0x809D8A28:("sOdolwaSwordTrailRotX","f32","",0x4),
0x809D8A2C:("sOdolwaSwordTrailRotY","f32","",0x4),
0x809D8A30:("sOdolwaSwordTrailRotZ","f32","",0x4),
0x809D8A34:("sOdolwaSwordTrailAlpha","f32","",0x4),
0x809D8A38:("sOdolwaMusicStartTimer","u8","",0x1),
0x809D8A40:("sOdolwaDamageSfxPos","Vec3f","",0xC),
0x809D8A4C:("sOdolwaRandSeed1","s32","",0x4),
0x809D8A50:("sOdolwaRandSeed2","s32","",0x4),
0x809D8A54:("sOdolwaRandSeed3","s32","",0x4),
0x809D8A58:("sOdolwaEffects","OdolwaEffect","[100]",0x1770),
0x809DF550:("D_809DF550","UNK_TYPE1","",0x1),
0x809DF570:("D_809DF570","UNK_TYPE1","",0x1),
0x809DF590:("Boss_02_InitVars","UNK_TYPE1","",0x1),
@ -10077,9 +10068,9 @@
0x809E0424:("sRedTwinmold","UNK_TYPE4","",0x4),
0x809E0428:("sBlueTwinmold","UNK_TYPE4","",0x4),
0x809E042C:("sTwinmoldStatic","UNK_TYPE4","",0x4),
0x809E0430:("sMusicStartTimer","UNK_TYPE1","",0x1),
0x809E0430:("sTwinmoldMusicStartTimer","UNK_TYPE1","",0x1),
0x809E0434:("sBlueWarp","UNK_TYPE4","",0x4),
0x809E0438:("sEffects","UNK_TYPE1","",0x1),
0x809E0438:("sTwinmoldEffects","UNK_TYPE1","",0x1),
0x809E8EA0:("D_809E8EA0","UNK_TYPE4","",0x4),
0x809E8EAC:("Boss_03_InitVars","UNK_TYPE1","",0x1),
0x809E8ECC:("D_809E8ECC","UNK_TYPE1","",0x1),
@ -10161,9 +10152,9 @@
0x809E9848:("D_809E9848","UNK_TYPE1","",0x1),
0x809E9858:("sGyorgEffects","UNK_TYPE1","[150]",0x27D8),
0x809EC030:("sGyorgBossInstance","UNK_TYPE4","",0x4),
0x809EC034:("sRandSeed0","UNK_TYPE4","",0x4),
0x809EC038:("sRandSeed1","UNK_TYPE4","",0x4),
0x809EC03C:("sRandSeed2","UNK_TYPE4","",0x4),
0x809EC034:("sGyorgRandSeed1","UNK_TYPE4","",0x4),
0x809EC038:("sGyorgRandSeed2","UNK_TYPE4","",0x4),
0x809EC03C:("sGyorgRandSeed3","UNK_TYPE4","",0x4),
0x809EE150:("D_809EE150","UNK_TYPE1","",0x1),
0x809EE170:("Boss_04_InitVars","UNK_TYPE1","",0x1),
0x809EE190:("D_809EE190","UNK_TYPE1","",0x1),

View File

@ -196,42 +196,6 @@ D_060005C4 = 0x060005C4;
D_06000A20 = 0x06000A20;
D_06000040 = 0x06000040;
// ovl_Boss_01
D_06000C44 = 0x06000C44;
D_06001884 = 0x06001884;
D_0600C338 = 0x0600C338;
D_0600C498 = 0x0600C498;
D_0600C5E0 = 0x0600C5E0;
D_0600C7A8 = 0x0600C7A8;
D_0600C7C8 = 0x0600C7C8;
D_0600C7F8 = 0x0600C7F8;
D_0600E3E8 = 0x0600E3E8;
D_0600F0A8 = 0x0600F0A8;
D_0600FDEC = 0x0600FDEC;
D_0600FF94 = 0x0600FF94;
D_06010150 = 0x06010150;
D_06010980 = 0x06010980;
D_060124CC = 0x060124CC;
D_06012B70 = 0x06012B70;
D_06012D10 = 0x06012D10;
D_06012EBC = 0x06012EBC;
D_06013480 = 0x06013480;
D_0601407C = 0x0601407C;
D_06014F14 = 0x06014F14;
D_06015A30 = 0x06015A30;
D_06016168 = 0x06016168;
D_060164CC = 0x060164CC;
D_06018438 = 0x06018438;
D_06019C10 = 0x06019C10;
D_0601F6A4 = 0x0601F6A4;
D_060204AC = 0x060204AC;
D_060213A8 = 0x060213A8;
D_060220A0 = 0x060220A0;
D_06022118 = 0x06022118;
D_060222D0 = 0x060222D0;
D_06022550 = 0x06022550;
// ovl_Boss_05
D_060006A4 = 0x060006A4;