En_Bb (Blue Bubble) OK and documented. object_bb documented (#713)

* EnBb_Init OK

* EnBb_Destroy OK

* func_808C20D4 OK

* func_808C2238 OK

* func_808C1FF4 OK

* func_808C1E94 OK

* func_808C2344 OK

* func_808C23EC OK

* EnBb_Update OK

* func_808C2E34 OK

* func_808C254C OK

* func_808C272C OK

* func_808C2B94 OK

* func_808C2A00 OK

* func_808C1F00 OK

* func_808C1F74 OK

* func_808C25E0 OK

* func_808C28CC OK

* func_808C2B1C OK

* func_808C2BD0 OK

* func_808C2C38 OK

* func_808C2CB4 OK

* func_808C2CF0 OK

* func_808C2D78 OK

* EnBb_Draw OK

* func_808C32EC OK

* func_808C3324 OK

* Migrate data to C

* Use generated reloc

* Object symbols and misc cleanup

* Name struct vars that are used with Actor_DrawDamageEffects

* Name most things in the object

* Name attackRange

* Good enough names for limbs for now

* Might as well name the limb draw stuff for now

* Name flame width/height

* Enum for damage effects

* Name some more stuff from OoT

* Name a lot more stuff

* First pass names on all functions

* Name jinxTimer on gSaveContext

* Name sLimbIndexToLimbPos

* First pass name to the rest of the limb draw system

* More cleanup

* Last cleanup before PR

* Incorporate Actor_DrawDamageEffect stuff

* Respond to hensldm's review
This commit is contained in:
Tom Overton
2022-03-26 02:57:18 +00:00
committed by GitHub
parent 7d4aaef0cd
commit acd84bda77
9 changed files with 742 additions and 155 deletions
+43 -33
View File
@@ -1,37 +1,47 @@
<Root>
<!-- Assets for red and blue Bubbles -->
<File Name="object_bb" Segment="6">
<Animation Name="object_bb_Anim_000184" Offset="0x184" />
<Animation Name="object_bb_Anim_0002AC" Offset="0x2AC" />
<Animation Name="object_bb_Anim_000444" Offset="0x444" />
<DList Name="object_bb_DL_000C20" Offset="0xC20" />
<DList Name="object_bb_DL_000CB0" Offset="0xCB0" />
<DList Name="object_bb_DL_000D40" Offset="0xD40" />
<DList Name="object_bb_DL_000E08" Offset="0xE08" />
<DList Name="object_bb_DL_001100" Offset="0x1100" />
<DList Name="object_bb_DL_001190" Offset="0x1190" />
<Texture Name="object_bb_Tex_001220" OutName="tex_001220" Format="rgba16" Width="16" Height="16" Offset="0x1220" />
<Texture Name="object_bb_Tex_001420" OutName="tex_001420" Format="rgba16" Width="8" Height="8" Offset="0x1420" />
<Texture Name="object_bb_Tex_0014A0" OutName="tex_0014A0" Format="rgba16" Width="4" Height="4" Offset="0x14A0" />
<Texture Name="object_bb_Tex_0014C0" OutName="tex_0014C0" Format="rgba16" Width="8" Height="8" Offset="0x14C0" />
<Texture Name="object_bb_Tex_001540" OutName="tex_001540" Format="rgba16" Width="8" Height="8" Offset="0x1540" />
<Texture Name="object_bb_Tex_0015C0" OutName="tex_0015C0" Format="rgba16" Width="8" Height="8" Offset="0x15C0" />
<Texture Name="object_bb_Tex_001640" OutName="tex_001640" Format="rgba16" Width="16" Height="8" Offset="0x1640" />
<Texture Name="object_bb_Tex_001740" OutName="tex_001740" Format="rgba16" Width="16" Height="16" Offset="0x1740" />
<Limb Name="object_bb_Standardlimb_001940" Type="Standard" EnumName="OBJECT_BB_LIMB_01" Offset="0x1940" />
<Limb Name="object_bb_Standardlimb_00194C" Type="Standard" EnumName="OBJECT_BB_LIMB_02" Offset="0x194C" />
<Limb Name="object_bb_Standardlimb_001958" Type="Standard" EnumName="OBJECT_BB_LIMB_03" Offset="0x1958" />
<Limb Name="object_bb_Standardlimb_001964" Type="Standard" EnumName="OBJECT_BB_LIMB_04" Offset="0x1964" />
<Limb Name="object_bb_Standardlimb_001970" Type="Standard" EnumName="OBJECT_BB_LIMB_05" Offset="0x1970" />
<Limb Name="object_bb_Standardlimb_00197C" Type="Standard" EnumName="OBJECT_BB_LIMB_06" Offset="0x197C" />
<Limb Name="object_bb_Standardlimb_001988" Type="Standard" EnumName="OBJECT_BB_LIMB_07" Offset="0x1988" />
<Limb Name="object_bb_Standardlimb_001994" Type="Standard" EnumName="OBJECT_BB_LIMB_08" Offset="0x1994" />
<Limb Name="object_bb_Standardlimb_0019A0" Type="Standard" EnumName="OBJECT_BB_LIMB_09" Offset="0x19A0" />
<Limb Name="object_bb_Standardlimb_0019AC" Type="Standard" EnumName="OBJECT_BB_LIMB_0A" Offset="0x19AC" />
<Limb Name="object_bb_Standardlimb_0019B8" Type="Standard" EnumName="OBJECT_BB_LIMB_0B" Offset="0x19B8" />
<Limb Name="object_bb_Standardlimb_0019C4" Type="Standard" EnumName="OBJECT_BB_LIMB_0C" Offset="0x19C4" />
<Limb Name="object_bb_Standardlimb_0019D0" Type="Standard" EnumName="OBJECT_BB_LIMB_0D" Offset="0x19D0" />
<Limb Name="object_bb_Standardlimb_0019DC" Type="Standard" EnumName="OBJECT_BB_LIMB_0E" Offset="0x19DC" />
<Limb Name="object_bb_Standardlimb_0019E8" Type="Standard" EnumName="OBJECT_BB_LIMB_0F" Offset="0x19E8" />
<Skeleton Name="object_bb_Skel_001A30" Type="Normal" LimbType="Standard" LimbNone="OBJECT_BB_LIMB_NONE" LimbMax="OBJECT_BB_LIMB_MAX" EnumName="object_bb_Limbs" Offset="0x1A30" />
<!-- Bubble Animations -->
<Animation Name="gBubbleAttackAnim" Offset="0x184" /> <!-- Original name is "bb_atack" -->
<Animation Name="object_bb_Anim_0002AC" Offset="0x2AC" /> <!-- Original name might be "bb_damage". Maybe unused? -->
<Animation Name="gBubbleFlyingAnim" Offset="0x444" /> <!-- Original name is "bb_fly" -->
<!-- Bubble Limb DisplayLimbs -->
<DList Name="gBubbleLeftWingWebbingDL" Offset="0xC20" />
<DList Name="gBubbleLeftWingBoneDL" Offset="0xCB0" />
<DList Name="gBubbleJawDL" Offset="0xD40" />
<DList Name="gBubbleCraniumDL" Offset="0xE08" />
<DList Name="gBubbleRightWingBoneDL" Offset="0x1100" />
<DList Name="gBubbleRightWingWebbingDL" Offset="0x1190" />
<!-- Bubble Textures -->
<Texture Name="gBubbleEyeSocketBottomTex" OutName="eye_socket_bottom" Format="rgba16" Width="16" Height="16" Offset="0x1220" />
<Texture Name="gBubbleNostrilTex" OutName="nostril" Format="rgba16" Width="8" Height="8" Offset="0x1420" />
<Texture Name="gBubbleEyeSocketTopAndJawTex" OutName="eye_socket_top_and_jaw" Format="rgba16" Width="4" Height="4" Offset="0x14A0" />
<Texture Name="gBubbleCraniumTopTex" OutName="cranium_top" Format="rgba16" Width="8" Height="8" Offset="0x14C0" />
<Texture Name="gBubbleCraniumSidesAndBackTex" OutName="cranium_sides_and_back" Format="rgba16" Width="8" Height="8" Offset="0x1540" />
<Texture Name="gBubbleEyeGlowTex" OutName="eye_glow" Format="rgba16" Width="8" Height="8" Offset="0x15C0" />
<Texture Name="gBubbleWingBoneTex" OutName="wing_bone" Format="rgba16" Width="16" Height="8" Offset="0x1640" />
<Texture Name="gBubbleWingWebbingTex" OutName="wing_webbing" Format="rgba16" Width="16" Height="16" Offset="0x1740" />
<!-- Bubble Limbs -->
<Limb Name="gBubbleRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_ROOT" Offset="0x1940" />
<Limb Name="gBubbleCraniumRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_CRANIUM_ROOT" Offset="0x194C" />
<Limb Name="gBubbleJawRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_JAW_ROOT" Offset="0x1958" />
<Limb Name="gBubbleJawLimb" Type="Standard" EnumName="BUBBLE_LIMB_JAW" Offset="0x1964" />
<Limb Name="gBubbleLeftWingRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_LEFT_WING_ROOT" Offset="0x1970" />
<Limb Name="gBubbleLeftWingWrapperLimb" Type="Standard" EnumName="BUBBLE_LIMB_LEFT_WING_WRAPPER" Offset="0x197C" />
<Limb Name="gBubbleLeftWingWebbingRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_LEFT_WING_WEBBING_ROOT" Offset="0x1988" />
<Limb Name="gBubbleLeftWingWebbingLimb" Type="Standard" EnumName="BUBBLE_LIMB_LEFT_WING_WEBBING" Offset="0x1994" />
<Limb Name="gBubbleLeftWingBoneLimb" Type="Standard" EnumName="BUBBLE_LIMB_LEFT_WING_BONE" Offset="0x19A0" />
<Limb Name="gBubbleRightWingRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_RIGHT_WING_ROOT" Offset="0x19AC" />
<Limb Name="gBubbleRightWingWrapperLimb" Type="Standard" EnumName="BUBBLE_LIMB_RIGHT_WING_WRAPPER" Offset="0x19B8" />
<Limb Name="gBubbleRightWingWebbingRootLimb" Type="Standard" EnumName="BUBBLE_LIMB_RIGHT_WING_WEBBING_ROOT" Offset="0x19C4" />
<Limb Name="gBubbleRightWingWebbingLimb" Type="Standard" EnumName="BUBBLE_LIMB_RIGHT_WING_WEBBING" Offset="0x19D0" />
<Limb Name="gBubbleRightWingBoneLimb" Type="Standard" EnumName="BUBBLE_LIMB_RIGHT_WING_BONE" Offset="0x19DC" />
<Limb Name="gBubbleCraniumLimb" Type="Standard" EnumName="BUBBLE_LIMB_CRANIUM" Offset="0x19E8" />
<!-- Bubble Skeleton -->
<Skeleton Name="gBubbleSkel" Type="Normal" LimbType="Standard" LimbNone="BUBBLE_LIMB_NONE" LimbMax="BUBBLE_LIMB_MAX" EnumName="BubbleLimbs" Offset="0x1A30" />
</File>
</Root>
+1 -1
View File
@@ -134,7 +134,7 @@ typedef struct {
/* 0x100C */ u8 eventInf[8];
/* 0x1014 */ u8 unk_1014; // "stone_set_flag"
/* 0x1015 */ u8 unk_1015;
/* 0x1016 */ u16 unk_1016;
/* 0x1016 */ u16 jinxTimer;
/* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct"
/* 0x101A */ u8 unk_101A[6]; // "bottle_status", one entry for each bottle
/* 0x1020 */ OSTime unk_1020[6]; // "bottle_ostime", one entry for each bottle
+1 -2
View File
@@ -1080,8 +1080,7 @@ beginseg
name "ovl_En_Bb"
compress
include "build/src/overlays/actors/ovl_En_Bb/z_en_bb.o"
include "build/data/ovl_En_Bb/ovl_En_Bb.data.o"
include "build/data/ovl_En_Bb/ovl_En_Bb.reloc.o"
include "build/src/overlays/actors/ovl_En_Bb/ovl_En_Bb_reloc.o"
endseg
beginseg
File diff suppressed because it is too large Load Diff
+27 -4
View File
@@ -2,16 +2,39 @@
#define Z_EN_BB_H
#include "global.h"
#include "objects/object_bb/object_bb.h"
#define EN_BB_ATTACK_RANGE(thisx) (((thisx)->params >> 8) & 0xFF)
struct EnBb;
typedef void (*EnBbActionFunc)(struct EnBb*, GlobalContext*);
typedef struct EnBb {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0x104];
/* 0x0248 */ EnBbActionFunc actionFunc;
/* 0x024C */ char unk_24C[0x100];
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ Vec3s jointTable[BUBBLE_LIMB_MAX];
/* 0x1E8 */ Vec3s morphTable[BUBBLE_LIMB_MAX];
/* 0x248 */ EnBbActionFunc actionFunc;
/* 0x24C */ s8 bodyPartDrawStatus;
/* 0x24D */ u8 drawDmgEffType;
/* 0x24E */ UNK_TYPE1 unk_24E[0x2];
/* 0x250 */ s16 timer;
/* 0x252 */ s16 attackWaitTimer; // Cannot start attacking the player if this is non-zero
/* 0x254 */ s16 targetYRotation;
/* 0x256 */ s16 bobPhase;
/* 0x258 */ f32 maxSpeed;
/* 0x25C */ f32 flyHeightMod;
/* 0x260 */ f32 attackRange;
/* 0x264 */ f32 flameScaleX;
/* 0x268 */ f32 flameScaleY;
/* 0x26C */ f32 drawDmgEffAlpha;
/* 0x270 */ f32 drawDmgEffScale;
/* 0x274 */ f32 drawDmgEffFrozenSteamScale;
/* 0x278 */ Vec3f bodyPartsPos[5];
/* 0x2B4 */ Vec3f bodyPartsVelocity[5];
/* 0x2F0 */ Gfx* limbDList;
/* 0x2F4 */ ColliderSphere collider;
} EnBb; // size = 0x34C
extern const ActorInit En_Bb_InitVars;
+2 -2
View File
@@ -363,7 +363,7 @@ void EnElf_Init(Actor* thisx, GlobalContext* globalCtx2) {
case 1:
colorConfig = -1;
gSaveContext.unk_1016 = 0;
gSaveContext.jinxTimer = 0;
EnElf_SetupAction(this, func_8088E0F0);
this->unk_254 = Math_Vec3f_DistXZ(&thisx->world.pos, &player->actor.world.pos);
this->unk_248 = player->actor.shape.rot.y;
@@ -677,7 +677,7 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) {
if (this->fairyFlags & 0x200) {
Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.doubleMagic * 0x30) + 0x30);
}
gSaveContext.unk_1016 = 0;
gSaveContext.jinxTimer = 0;
this->unk_254 = 50.0f;
this->unk_248 = refActor->actor.shape.rot.y;
this->unk_24C = -0x1000;
+1
View File
@@ -493,6 +493,7 @@ animdict = {
"player->unk_38C": "player->mountSide",
"player->unk_394": "player->csMode",
"globalCtx->actorCtx.actorList[": "globalCtx->actorCtx.actorLists[",
"gSaveContext.unk_1016": "gSaveContext.jinxTimer",
"gSaveContext.unk_3F58": "gSaveContext.sunsSongState",
"globalCtx->msgCtx.unk1202A": "globalCtx->msgCtx.ocarinaMode",
"globalCtx->msgCtx.unk1202C": "globalCtx->msgCtx.ocarinaAction",
+23 -23
View File
@@ -6113,30 +6113,30 @@
0x808C1918:("ArmsHook_Draw",),
0x808C1D40:("EnBb_Init",),
0x808C1E68:("EnBb_Destroy",),
0x808C1E94:("func_808C1E94",),
0x808C1F00:("func_808C1F00",),
0x808C1F74:("func_808C1F74",),
0x808C1FF4:("func_808C1FF4",),
0x808C20D4:("func_808C20D4",),
0x808C2238:("func_808C2238",),
0x808C2344:("func_808C2344",),
0x808C23EC:("func_808C23EC",),
0x808C254C:("func_808C254C",),
0x808C25E0:("func_808C25E0",),
0x808C272C:("func_808C272C",),
0x808C28CC:("func_808C28CC",),
0x808C2A00:("func_808C2A00",),
0x808C2B1C:("func_808C2B1C",),
0x808C2B94:("func_808C2B94",),
0x808C2BD0:("func_808C2BD0",),
0x808C2C38:("func_808C2C38",),
0x808C2CB4:("func_808C2CB4",),
0x808C2CF0:("func_808C2CF0",),
0x808C2D78:("func_808C2D78",),
0x808C2E34:("func_808C2E34",),
0x808C1E94:("EnBb_CheckForWall",),
0x808C1F00:("EnBb_Freeze",),
0x808C1F74:("EnBb_Thaw",),
0x808C1FF4:("EnBb_UpdateStateForFlying",),
0x808C20D4:("EnBb_SetupFlyIdle",),
0x808C2238:("EnBb_FlyIdle",),
0x808C2344:("EnBb_SetupAttack",),
0x808C23EC:("EnBb_Attack",),
0x808C254C:("EnBb_SetupDown",),
0x808C25E0:("EnBb_Down",),
0x808C272C:("EnBb_SetupDead",),
0x808C28CC:("EnBb_Dead",),
0x808C2A00:("EnBb_SetupDamage",),
0x808C2B1C:("EnBb_Damage",),
0x808C2B94:("EnBb_SetupFrozen",),
0x808C2BD0:("EnBb_Frozen",),
0x808C2C38:("EnBb_SetupWaitForRevive",),
0x808C2CB4:("EnBb_WaitForRevive",),
0x808C2CF0:("EnBb_SetupRevive",),
0x808C2D78:("EnBb_Revive",),
0x808C2E34:("EnBb_UpdateDamage",),
0x808C30A0:("EnBb_Update",),
0x808C32EC:("func_808C32EC",),
0x808C3324:("func_808C3324",),
0x808C32EC:("EnBb_OverrideLimbDraw",),
0x808C3324:("EnBb_PostLimbDraw",),
0x808C351C:("EnBb_Draw",),
0x808C3A50:("BgKeikokuSpr_Init",),
0x808C3A78:("BgKeikokuSpr_Destroy",),
-6
View File
@@ -1075,12 +1075,6 @@ D_0600D530 = 0x0600D530;
D_060000A0 = 0x060000A0;
D_060000C8 = 0x060000C8;
// ovl_En_Bb
D_06000184 = 0x06000184;
D_06000444 = 0x06000444;
D_06001A30 = 0x06001A30;
// ovl_En_Bbfall
D_06000184 = 0x06000184;