mirror of
https://github.com/zeldaret/mm.git
synced 2024-11-23 04:49:45 +00:00
EnOkuta (Octorok and its projectiles) OK and documented (#1641)
* Match EnOkuta * Match data * Use the generated reloc * Delete extern stuff and format * Extract the DL * Fix lots of stuff * Copy a lot of names over from EnSyatekiOkuta * SFX enums * Lots more stuff * Constants and other stuff * Some more stuff I missed * Name more functions using OoT/SyatekiOkuta as reference * An easy function I missed * Some floats * Getter macros * Types enum * Name the cylinder inits a little clearer * Create bodyparts enum and name all data * Name all functions * Name `timer` struct var and all temps * Name the `jumpHeight` struct var * Create damage effect enum * Name the extracted DL * Name `numConsecutiveProjectiles` * Finish docs * Document XML * Clarify that this blue Octorok isn't the shooting gallery one * Respond to reviews * Stuff --------- Co-authored-by: Synray <31429825+Synray@users.noreply.github.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
This commit is contained in:
parent
3682a13ec5
commit
bb221b4a0f
7
assets/xml/overlays/ovl_En_Okuta.xml
Normal file
7
assets/xml/overlays/ovl_En_Okuta.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<Root>
|
||||
<!-- Octorok assets -->
|
||||
<File Name="ovl_En_Okuta" BaseAddress="0x8086DE20" RangeStart="0x2A50" RangeEnd="0x2A60">
|
||||
<!-- DisplayList that turns the Octorok blue. In the final game, the blue Octorok variant is unused. -->
|
||||
<DList Name="gOctorokBlueMaterialDL" Offset="0x2A50"/>
|
||||
</File>
|
||||
</Root>
|
@ -301,17 +301,6 @@ D_06021E34 = 0x06021E34;
|
||||
D_06022728 = 0x06022728;
|
||||
D_06022CAC = 0x06022CAC;
|
||||
|
||||
// ovl_En_Okuta
|
||||
|
||||
D_0600044C = 0x0600044C;
|
||||
D_06003250 = 0x06003250;
|
||||
D_060033D0 = 0x060033D0;
|
||||
D_06003958 = 0x06003958;
|
||||
D_06003B24 = 0x06003B24;
|
||||
D_06003EE4 = 0x06003EE4;
|
||||
D_06004204 = 0x06004204;
|
||||
D_0600466C = 0x0600466C;
|
||||
|
||||
// ovl_En_Zl4
|
||||
|
||||
D_06013328 = 0x06013328;
|
||||
|
3
spec
3
spec
@ -758,8 +758,7 @@ beginseg
|
||||
name "ovl_En_Okuta"
|
||||
compress
|
||||
include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/z_en_okuta.o"
|
||||
include "$(BUILD_DIR)/data/ovl_En_Okuta/ovl_En_Okuta.data.o"
|
||||
include "$(BUILD_DIR)/data/ovl_En_Okuta/ovl_En_Okuta.reloc.o"
|
||||
include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/ovl_En_Okuta_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
@ -616,32 +616,30 @@ s32 EnBb_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
|
||||
}
|
||||
|
||||
/**
|
||||
* This maps a given limb based on its limbIndex to its appropriate index
|
||||
* in the bodyPartsPos/Velocity arrays.
|
||||
* This maps a given limb based on its limbIndex to its appropriate index in the `bodyPartsPos/Velocity` arrays.
|
||||
*/
|
||||
static s8 sLimbToBodyParts[BUBBLE_LIMB_MAX] = {
|
||||
BODYPART_NONE, // BUBBLE_LIMB_NONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_CRANIUM_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_JAW_ROOT
|
||||
BUBBLE_BODYPART_0, // BUBBLE_LIMB_JAW
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_1, // BUBBLE_LIMB_LEFT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_BONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_2, // BUBBLE_LIMB_RIGHT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_BONE
|
||||
BUBBLE_BODYPART_3, // BUBBLE_LIMB_CRANIUM
|
||||
BODYPART_NONE, // BUBBLE_LIMB_NONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_CRANIUM_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_JAW_ROOT
|
||||
BUBBLE_BODYPART_JAW, // BUBBLE_LIMB_JAW
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_LEFT_WING_WEBBING, // BUBBLE_LIMB_LEFT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_BONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_RIGHT_WING_WEBBING, // BUBBLE_LIMB_RIGHT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_BONE
|
||||
BUBBLE_BODYPART_CRANIUM, // BUBBLE_LIMB_CRANIUM
|
||||
};
|
||||
|
||||
/**
|
||||
* The last element of the bodyParts arrays is a duplicate of the cranium
|
||||
* limb, which is then offset by a certain amount. There is no display list
|
||||
* associated with this, so it is only used for effects.
|
||||
* The last element of the `bodyParts` arrays is not tied to any particular limb and is instead used to control the
|
||||
* placement of effects. The positions of these effects are offset by a certain amount from the Bubble's cranium limb.
|
||||
*/
|
||||
static Vec3f sEffectsBodyPartOffset = { 1000.0f, -700.0f, 0.0f };
|
||||
|
||||
@ -652,10 +650,10 @@ void EnBb_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
|
||||
if (this->bodyPartDrawStatus == BB_BODY_PART_DRAW_STATUS_ALIVE) {
|
||||
if (sLimbToBodyParts[limbIndex] != BODYPART_NONE) {
|
||||
if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_0) {
|
||||
Matrix_MultVecX(1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_0]);
|
||||
} else if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_3) {
|
||||
Matrix_MultVecX(-1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_3]);
|
||||
if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_JAW) {
|
||||
Matrix_MultVecX(1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_JAW]);
|
||||
} else if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_CRANIUM) {
|
||||
Matrix_MultVecX(-1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_CRANIUM]);
|
||||
Matrix_MultVec3f(&sEffectsBodyPartOffset, &this->bodyPartsPos[BUBBLE_BODYPART_EFFECTS]);
|
||||
} else {
|
||||
Matrix_MultZero(&this->bodyPartsPos[sLimbToBodyParts[limbIndex]]);
|
||||
|
@ -11,10 +11,10 @@ struct EnBb;
|
||||
typedef void (*EnBbActionFunc)(struct EnBb*, PlayState*);
|
||||
|
||||
typedef enum BubbleBodyPart {
|
||||
/* 0 */ BUBBLE_BODYPART_0,
|
||||
/* 1 */ BUBBLE_BODYPART_1,
|
||||
/* 2 */ BUBBLE_BODYPART_2,
|
||||
/* 3 */ BUBBLE_BODYPART_3,
|
||||
/* 0 */ BUBBLE_BODYPART_JAW,
|
||||
/* 1 */ BUBBLE_BODYPART_LEFT_WING_WEBBING,
|
||||
/* 2 */ BUBBLE_BODYPART_RIGHT_WING_WEBBING,
|
||||
/* 3 */ BUBBLE_BODYPART_CRANIUM,
|
||||
/* 4 */ BUBBLE_BODYPART_EFFECTS,
|
||||
/* 5 */ BUBBLE_BODYPART_MAX
|
||||
} BubbleBodyPart;
|
||||
|
@ -652,32 +652,30 @@ s32 EnBbfall_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f
|
||||
}
|
||||
|
||||
/**
|
||||
* This maps a given limb based on its limbIndex to its appropriate index
|
||||
* in the bodyPartsPos/Velocity arrays.
|
||||
* This maps a given limb based on its limbIndex to its appropriate index in the `bodyPartsPos/Velocity` arrays.
|
||||
*/
|
||||
static s8 sLimbToBodyParts[BUBBLE_LIMB_MAX] = {
|
||||
BODYPART_NONE, // BUBBLE_LIMB_NONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_CRANIUM_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_JAW_ROOT
|
||||
BUBBLE_BODYPART_0, // BUBBLE_LIMB_JAW
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_1, // BUBBLE_LIMB_LEFT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_BONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_2, // BUBBLE_LIMB_RIGHT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_BONE
|
||||
BUBBLE_BODYPART_3, // BUBBLE_LIMB_CRANIUM
|
||||
BODYPART_NONE, // BUBBLE_LIMB_NONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_CRANIUM_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_JAW_ROOT
|
||||
BUBBLE_BODYPART_JAW, // BUBBLE_LIMB_JAW
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_LEFT_WING_WEBBING, // BUBBLE_LIMB_LEFT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_LEFT_WING_BONE
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_ROOT
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WRAPPER
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_WEBBING_ROOT
|
||||
BUBBLE_BODYPART_RIGHT_WING_WEBBING, // BUBBLE_LIMB_RIGHT_WING_WEBBING
|
||||
BODYPART_NONE, // BUBBLE_LIMB_RIGHT_WING_BONE
|
||||
BUBBLE_BODYPART_CRANIUM, // BUBBLE_LIMB_CRANIUM
|
||||
};
|
||||
|
||||
/**
|
||||
* The last element of the bodyParts arrays is a duplicate of the cranium
|
||||
* limb, which is then offset by a certain amount. There is no display list
|
||||
* associated with this, so it is only used for effects.
|
||||
* The last element of the `bodyParts` arrays is not tied to any particular limb and is instead used to control the
|
||||
* placement of effects. The positions of these effects are offset by a certain amount from the Bubble's cranium limb.
|
||||
*/
|
||||
static Vec3f sEffectsBodyPartOffset = { 1000.0f, -700.0f, 0.0f };
|
||||
|
||||
@ -688,10 +686,10 @@ void EnBbfall_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* r
|
||||
|
||||
if (this->bodyPartDrawStatus == BBFALL_BODY_PART_DRAW_STATUS_ALIVE) {
|
||||
if (sLimbToBodyParts[limbIndex] != BODYPART_NONE) {
|
||||
if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_0) {
|
||||
Matrix_MultVecX(1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_0]);
|
||||
} else if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_3) {
|
||||
Matrix_MultVecX(-1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_3]);
|
||||
if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_JAW) {
|
||||
Matrix_MultVecX(1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_JAW]);
|
||||
} else if (sLimbToBodyParts[limbIndex] == BUBBLE_BODYPART_CRANIUM) {
|
||||
Matrix_MultVecX(-1000.0f, &this->bodyPartsPos[BUBBLE_BODYPART_CRANIUM]);
|
||||
Matrix_MultVec3f(&sEffectsBodyPartOffset, &this->bodyPartsPos[BUBBLE_BODYPART_EFFECTS]);
|
||||
} else {
|
||||
Matrix_MultZero(&this->bodyPartsPos[sLimbToBodyParts[limbIndex]]);
|
||||
|
@ -551,7 +551,7 @@ void EnBigokuta_Update(Actor* thisx, PlayState* play) {
|
||||
Math_StepToF(&this->drawDmgEffAlpha, 0.0f, 0.05f);
|
||||
this->drawDmgEffScale = (this->drawDmgEffAlpha + 1.0f) * 0.6f;
|
||||
this->drawDmgEffScale = CLAMP_MAX(this->drawDmgEffScale, 1.2f);
|
||||
} else if (!Math_StepToF(&this->drawDmgEffFrozenSteamScale, 1.2f, 0.030000001f)) {
|
||||
} else if (!Math_StepToF(&this->drawDmgEffFrozenSteamScale, 1.2f, 30.0f * 0.001f)) {
|
||||
Actor_PlaySfx_Flagged(&this->picto.actor, NA_SE_EV_ICE_FREEZE - SFX_FLAG);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,16 +2,53 @@
|
||||
#define Z_EN_OKUTA_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_okuta/object_okuta.h"
|
||||
|
||||
struct EnOkuta;
|
||||
|
||||
typedef void (*EnOkutaActionFunc)(struct EnOkuta*, PlayState*);
|
||||
|
||||
#define EN_OKUTA_GET_NUM_CONSECUTIVE_PROJECTILES(thisx) (((thisx)->params >> 8) & 0xFF)
|
||||
#define EN_OKUTA_GET_TYPE(thisx) ((thisx)->params)
|
||||
|
||||
typedef enum EnOkutaType {
|
||||
/* 0 */ EN_OKUTA_TYPE_RED_OCTOROK,
|
||||
/* 1 */ EN_OKUTA_TYPE_BLUE_OCTOROK, // Unused in the final game. This variant is invincible to all attacks and can chase the player underwater if they dive.
|
||||
/* 16 */ EN_OKUTA_TYPE_PROJECTILE_BASE = 16,
|
||||
/* 16 */ EN_OKUTA_TYPE_RED_PROJECTILE = EN_OKUTA_TYPE_RED_OCTOROK + EN_OKUTA_TYPE_PROJECTILE_BASE,
|
||||
/* 17 */ EN_OKUTA_TYPE_BLUE_PROJECTILE = EN_OKUTA_TYPE_BLUE_OCTOROK + EN_OKUTA_TYPE_PROJECTILE_BASE
|
||||
} EnOkutaType;
|
||||
|
||||
typedef enum EnOkutaBodyPart {
|
||||
/* 0 */ EN_OKUTA_BODYPART_BODY,
|
||||
/* 1 */ EN_OKUTA_BODYPART_FRONT_LEFT_ARM_END,
|
||||
/* 2 */ EN_OKUTA_BODYPART_FRONT_RIGHT_ARM_END,
|
||||
/* 3 */ EN_OKUTA_BODYPART_BACK_LEFT_ARM_END,
|
||||
/* 4 */ EN_OKUTA_BODYPART_BACK_RIGHT_ARM_END,
|
||||
/* 5 */ EN_OKUTA_BODYPART_SNOUT,
|
||||
/* 6 */ EN_OKUTA_BODYPART_HEAD,
|
||||
/* 7 */ EN_OKUTA_BODYPART_EFFECTS_1,
|
||||
/* 8 */ EN_OKUTA_BODYPART_EFFECTS_2,
|
||||
/* 9 */ EN_OKUTA_BODYPART_EFFECTS_3,
|
||||
/* 10 */ EN_OKUTA_BODYPART_MAX
|
||||
} EnOkutaBodyPart;
|
||||
|
||||
typedef struct EnOkuta {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ char unk_144[0x44];
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ EnOkutaActionFunc actionFunc;
|
||||
/* 0x18C */ char unk_18C[0x1A8];
|
||||
/* 0x18C */ u8 drawDmgEffType;
|
||||
/* 0x18E */ s16 timer;
|
||||
/* 0x190 */ s16 numConsecutiveProjectiles; // when the Octorok starts shooting projectiles, it will shoot this many projectiles in a row before stopping
|
||||
/* 0x192 */ Vec3s jointTable[OCTOROK_LIMB_MAX];
|
||||
/* 0x1F2 */ Vec3s morphTable[OCTOROK_LIMB_MAX];
|
||||
/* 0x254 */ f32 drawDmgEffAlpha;
|
||||
/* 0x258 */ f32 drawDmgEffScale;
|
||||
/* 0x25C */ f32 drawDmgEffFrozenSteamScale;
|
||||
/* 0x260 */ f32 jumpHeight;
|
||||
/* 0x264 */ Vec3f headScale;
|
||||
/* 0x270 */ Vec3f bodyPartsPos[EN_OKUTA_BODYPART_MAX];
|
||||
/* 0x2E8 */ ColliderCylinder collider;
|
||||
} EnOkuta; // size = 0x334
|
||||
|
||||
#endif // Z_EN_OKUTA_H
|
||||
|
@ -124,11 +124,11 @@ void EnSyatekiOkuta_Destroy(Actor* thisx, PlayState* play) {
|
||||
/**
|
||||
* Spawns the puff of smoke that appears when the Octorok disappears when it dies.
|
||||
*/
|
||||
void EnSyatekiOkuta_SpawnDust(Vec3f* pos, Vec3f* velocity, s16 scaleStep, PlayState* play) {
|
||||
static Color_RGBA8 sDustPrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sDustEnvColor = { 150, 150, 150, 255 };
|
||||
void EnSyatekiOkuta_SpawnSmoke(Vec3f* pos, Vec3f* velocity, s16 scaleStep, PlayState* play) {
|
||||
static Color_RGBA8 sSmokePrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sSmokeEnvColor = { 150, 150, 150, 255 };
|
||||
|
||||
func_800B0DE0(play, pos, velocity, &gZeroVec3f, &sDustPrimColor, &sDustEnvColor, 400, scaleStep);
|
||||
func_800B0DE0(play, pos, velocity, &gZeroVec3f, &sSmokePrimColor, &sSmokeEnvColor, 400, scaleStep);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -308,7 +308,7 @@ void EnSyatekiOkuta_Die(EnSyatekiOkuta* this, PlayState* play) {
|
||||
velocity.x = 0.0f;
|
||||
velocity.y = -0.5f;
|
||||
velocity.z = 0.0f;
|
||||
EnSyatekiOkuta_SpawnDust(&pos, &velocity, -20, play);
|
||||
EnSyatekiOkuta_SpawnSmoke(&pos, &velocity, -20, play);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_OCTAROCK_DEAD2);
|
||||
}
|
||||
|
||||
@ -502,8 +502,9 @@ void EnSyatekiOkuta_UpdateHeadScale(EnSyatekiOkuta* this) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the snout scale should be updated, false otherwise. The snout scale is returned via the scale
|
||||
* parameter.
|
||||
* Gets the scaling factor for animating the snout limb. If the limb is not being transformed, no scale value is
|
||||
* returned. Returns true if the snout scale should be updated, false otherwise. The snout scale is returned via the
|
||||
* `scale` parameter.
|
||||
*/
|
||||
s32 EnSyatekiOkuta_GetSnoutScale(EnSyatekiOkuta* this, f32 curFrame, Vec3f* scale) {
|
||||
if (this->actionFunc == EnSyatekiOkuta_Appear) {
|
||||
|
@ -5060,41 +5060,41 @@
|
||||
0x8086D898:("EnPametfrog_Draw",),
|
||||
0x8086DE20:("EnOkuta_Init",),
|
||||
0x8086E058:("EnOkuta_Destroy",),
|
||||
0x8086E084:("func_8086E084",),
|
||||
0x8086E0F0:("func_8086E0F0",),
|
||||
0x8086E168:("func_8086E168",),
|
||||
0x8086E214:("func_8086E214",),
|
||||
0x8086E27C:("func_8086E27C",),
|
||||
0x8086E2C0:("func_8086E2C0",),
|
||||
0x8086E378:("func_8086E378",),
|
||||
0x8086E3B8:("func_8086E3B8",),
|
||||
0x8086E4FC:("func_8086E4FC",),
|
||||
0x8086E52C:("func_8086E52C",),
|
||||
0x8086E5E8:("func_8086E5E8",),
|
||||
0x8086E658:("func_8086E658",),
|
||||
0x8086E7A8:("func_8086E7A8",),
|
||||
0x8086E7E8:("func_8086E7E8",),
|
||||
0x8086E8E8:("func_8086E8E8",),
|
||||
0x8086E948:("func_8086E948",),
|
||||
0x8086EAE0:("func_8086EAE0",),
|
||||
0x8086EC00:("func_8086EC00",),
|
||||
0x8086EE8C:("func_8086EE8C",),
|
||||
0x8086EF14:("func_8086EF14",),
|
||||
0x8086EF90:("func_8086EF90",),
|
||||
0x8086EFE8:("func_8086EFE8",),
|
||||
0x8086F2FC:("func_8086F2FC",),
|
||||
0x8086F434:("func_8086F434",),
|
||||
0x8086F4B0:("func_8086F4B0",),
|
||||
0x8086F4F4:("func_8086F4F4",),
|
||||
0x8086F57C:("func_8086F57C",),
|
||||
0x8086F694:("func_8086F694",),
|
||||
0x8086F8FC:("func_8086F8FC",),
|
||||
0x8086FCA4:("func_8086FCA4",),
|
||||
0x8086E084:("EnOkuta_Freeze",),
|
||||
0x8086E0F0:("EnOkuta_Thaw",),
|
||||
0x8086E168:("EnOkuta_SpawnBubbles",),
|
||||
0x8086E214:("EnOkuta_SpawnSmoke",),
|
||||
0x8086E27C:("EnOkuta_SpawnSplash",),
|
||||
0x8086E2C0:("EnOkuta_SpawnRipple",),
|
||||
0x8086E378:("EnOkuta_GetFloatHeight",),
|
||||
0x8086E3B8:("EnOkuta_SpawnProjectile",),
|
||||
0x8086E4FC:("EnOkuta_SetupWaitToAppear",),
|
||||
0x8086E52C:("EnOkuta_WaitToAppear",),
|
||||
0x8086E5E8:("EnOkuta_SetupAppear",),
|
||||
0x8086E658:("EnOkuta_Appear",),
|
||||
0x8086E7A8:("EnOkuta_SetupHide",),
|
||||
0x8086E7E8:("EnOkuta_Hide",),
|
||||
0x8086E8E8:("EnOkuta_SetupFloat",),
|
||||
0x8086E948:("EnOkuta_Float",),
|
||||
0x8086EAE0:("EnOkuta_SetupShoot",),
|
||||
0x8086EC00:("EnOkuta_Shoot",),
|
||||
0x8086EE8C:("EnOkuta_SetupDamaged",),
|
||||
0x8086EF14:("EnOkuta_Damaged",),
|
||||
0x8086EF90:("EnOkuta_SetupDie",),
|
||||
0x8086EFE8:("EnOkuta_Die",),
|
||||
0x8086F2FC:("EnOkuta_SetupFrozen",),
|
||||
0x8086F434:("EnOkuta_FrozenInIceBlock",),
|
||||
0x8086F4B0:("EnOkuta_Frozen",),
|
||||
0x8086F4F4:("EnOkuta_SetupSpin",),
|
||||
0x8086F57C:("EnOkuta_Spin",),
|
||||
0x8086F694:("EnOkuta_Projectile_Fly",),
|
||||
0x8086F8FC:("EnOkuta_UpdateHeadScale",),
|
||||
0x8086FCA4:("EnOkuta_UpdateDamage",),
|
||||
0x8086FDE0:("EnOkuta_Update",),
|
||||
0x808700C0:("func_808700C0",),
|
||||
0x80870254:("func_80870254",),
|
||||
0x808704DC:("func_808704DC",),
|
||||
0x808705C8:("func_808705C8",),
|
||||
0x808700C0:("EnOkuta_Projectile_Update",),
|
||||
0x80870254:("EnOkuta_GetSnoutScale",),
|
||||
0x808704DC:("EnOkuta_OverrideLimbDraw",),
|
||||
0x808705C8:("EnOkuta_PostLimbDraw",),
|
||||
0x808706E0:("EnOkuta_Draw",),
|
||||
0x80870DB0:("EnBom_Init",),
|
||||
0x80870FF8:("EnBom_Destroy",),
|
||||
@ -10217,7 +10217,7 @@
|
||||
0x80A35DDC:("ObjBell_Draw",),
|
||||
0x80A35FF0:("EnSyatekiOkuta_Init",),
|
||||
0x80A3611C:("EnSyatekiOkuta_Destroy",),
|
||||
0x80A36148:("EnSyatekiOkuta_SpawnDust",),
|
||||
0x80A36148:("EnSyatekiOkuta_SpawnSmoke",),
|
||||
0x80A361B0:("EnSyatekiOkuta_SpawnSplash",),
|
||||
0x80A361F4:("EnSyatekiOkuta_IsHiddenByAnotherOctorok",),
|
||||
0x80A36260:("EnSyatekiOkuta_SetupAttachToShootingGalleryMan",),
|
||||
|
@ -5389,23 +5389,20 @@
|
||||
0x8086DA94:("D_8086DA94","f32","",0x4),
|
||||
0x8086DA98:("D_8086DA98","f32","",0x4),
|
||||
0x8086DA9C:("D_8086DA9C","f32","",0x4),
|
||||
0x80870870:("D_80870870","UNK_TYPE1","",0x1),
|
||||
0x80870880:("En_Okuta_InitVars","UNK_TYPE1","",0x1),
|
||||
0x808708A0:("D_808708A0","UNK_TYPE1","",0x1),
|
||||
0x808708CC:("D_808708CC","UNK_TYPE1","",0x1),
|
||||
0x808708EC:("D_808708EC","UNK_TYPE2","",0x2),
|
||||
0x808708EE:("D_808708EE","UNK_TYPE2","",0x2),
|
||||
0x808708F8:("D_808708F8","UNK_TYPE1","",0x1),
|
||||
0x80870900:("D_80870900","UNK_TYPE1","",0x1),
|
||||
0x80870920:("D_80870920","UNK_TYPE1","",0x1),
|
||||
0x80870928:("D_80870928","UNK_TYPE1","",0x1),
|
||||
0x8087092C:("D_8087092C","UNK_TYPE1","",0x1),
|
||||
0x80870930:("D_80870930","UNK_TYPE1","",0x1),
|
||||
0x8087093C:("D_8087093C","UNK_TYPE1","",0x1),
|
||||
0x80870940:("D_80870940","UNK_TYPE1","",0x1),
|
||||
0x80870944:("D_80870944","UNK_TYPE1","",0x1),
|
||||
0x80870954:("D_80870954","UNK_TYPE1","",0x1),
|
||||
0x80870978:("D_80870978","UNK_TYPE1","",0x1),
|
||||
0x80870870:("gOctorokBlueMaterialDL","Gfx","[2]",0x10),
|
||||
0x80870880:("En_Okuta_InitVars","ActorInit","",0x20),
|
||||
0x808708A0:("sProjectileCylinderInit","ColliderCylinderInit","",0x2C),
|
||||
0x808708CC:("sOctorokCylinderInit","ColliderCylinderInit","",0x2C),
|
||||
0x808708F8:("sColChkInfoInit","CollisionCheckInfoInit","",0x4),
|
||||
0x80870900:("sDamageTable","DamageTable","",0x20),
|
||||
0x80870920:("sInitChain","InitChainEntry","[2]",0x8),
|
||||
0x80870928:("sSmokePrimColor","Color_RGBA8","",0x4),
|
||||
0x8087092C:("sSmokeEnvColor","Color_RGBA8","",0x4),
|
||||
0x80870930:("sBubbleAccel","Vec3f","",0xC),
|
||||
0x8087093C:("sBubblePrimColor","Color_RGBA8","",0x4),
|
||||
0x80870940:("sBubbleEnvColor","Color_RGBA8","",0x4),
|
||||
0x80870944:("sLimbToBodyParts","s8","[16]",0x10),
|
||||
0x80870954:("sEffectsBodyPartOffsets","Vec3f","[3]",0x24),
|
||||
0x80870980:("D_80870980","f32","",0x4),
|
||||
0x80870984:("D_80870984","f32","",0x4),
|
||||
0x80870988:("D_80870988","f32","",0x4),
|
||||
@ -11058,8 +11055,8 @@
|
||||
0x80A37A88:("D_80A37A88","UNK_TYPE1","",0x1),
|
||||
0x80A37B08:("D_80A37B08","UNK_TYPE1","",0x1),
|
||||
0x80A37B88:("D_80A37B88","UNK_TYPE1","",0x1),
|
||||
0x80A37B90:("sDustPrimColor","UNK_TYPE1","",0x1),
|
||||
0x80A37B94:("sDustEnvColor","UNK_TYPE1","",0x1),
|
||||
0x80A37B90:("sSmokePrimColor","UNK_TYPE1","",0x1),
|
||||
0x80A37B94:("sSmokeEnvColor","UNK_TYPE1","",0x1),
|
||||
0x80A37B98:("sBubbleAccel","UNK_TYPE1","",0x1),
|
||||
0x80A37BA4:("sBubblePrimColor","UNK_TYPE1","",0x1),
|
||||
0x80A37BA8:("sBubbleEnvColor","UNK_TYPE1","",0x1),
|
||||
|
Loading…
Reference in New Issue
Block a user