En_Raf (Carnivorous Lily Pad) OK and documented, object_raf documented (#794)

* EnRaf_Init OK

* func_80A17060, func_80A18080, and func_80A180B4 OK

* EnRaf_Destroy, func_80A1712C, func_80A171D8, and func_80A17414 OK

* func_80A17464 and func_80A17530 OK

* EnRaf_Draw OK

* func_80A175E4, func_80A17848, and func_80A178A0 OK

* func_80A18A90 OK

* func_80A179C8 and func_80A17C6C OK

* func_80A1859C OK

* func_80A17D14 and EnRaf_Update OK

* func_80A18B8C and func_80A18DA0 OK, EnRafParticle documented

* func_80A16D40, func_80A16D6C, func_80A17D54, and func_80A17DDC OK

* func_80A17E1C OK

* Use object symbols

* Import data to C and use generated reloc

* Misc cleanup

* Document animations and skeleton

* Finish documenting object_raf

* Some low-hanging fruit

* Some actions I figured out

* Name revival stuff

* Document type stuff

* Bob and player height stuff

* Name a few more things (some of the names are bad but whatever)

* Finally move Vec3f data inline like I've wanted to do for ages

* Some more low-hanging fruit

* limbRot name

* Name the chew stuff

* First pass names on everything, even if they're bad

* Some last-minute stuff before PR

* Respond to Elliptic's review

* Manually specify texture dimensions

* Format

* Add comment about pointless check

* Respond to Elliptic's second review
This commit is contained in:
Tom Overton
2022-04-22 03:22:07 +01:00
committed by GitHub
parent 374c05fda3
commit 81efaf8551
7 changed files with 1004 additions and 133 deletions
+54 -38
View File
@@ -1,42 +1,58 @@
<Root>
<!-- Assets for the Carnivorous Lily Pad-->
<File Name="object_raf" Segment="6">
<Collision Name="object_raf_Colheader_000108" Offset="0x108" />
<DList Name="object_raf_DL_0001C0" Offset="0x1C0" />
<Animation Name="object_raf_Anim_0003FC" Offset="0x3FC" />
<Animation Name="object_raf_Anim_0007A8" Offset="0x7A8" />
<Animation Name="object_raf_Anim_000A64" Offset="0xA64" />
<Animation Name="object_raf_Anim_000B30" Offset="0xB30" />
<Animation Name="object_raf_Anim_000C7C" Offset="0xC7C" />
<DList Name="object_raf_DL_001630" Offset="0x1630" />
<DList Name="object_raf_DL_001790" Offset="0x1790" />
<DList Name="object_raf_DL_001838" Offset="0x1838" />
<DList Name="object_raf_DL_0018D0" Offset="0x18D0" />
<DList Name="object_raf_DL_001990" Offset="0x1990" />
<DList Name="object_raf_DL_001B90" Offset="0x1B90" />
<DList Name="object_raf_DL_001C28" Offset="0x1C28" />
<DList Name="object_raf_DL_001CE8" Offset="0x1CE8" />
<DList Name="object_raf_DL_001EE8" Offset="0x1EE8" />
<DList Name="object_raf_DL_001F80" Offset="0x1F80" />
<DList Name="object_raf_DL_002040" Offset="0x2040" />
<DList Name="object_raf_DL_002340" Offset="0x2340" />
<DList Name="object_raf_DL_002418" Offset="0x2418" />
<DList Name="object_raf_DL_0024E0" Offset="0x24E0" />
<Texture Name="object_raf_Tex_0024F8" OutName="tex_0024F8" Format="rgba16" Width="16" Height="32" Offset="0x24F8" />
<Texture Name="object_raf_Tex_0028F8" OutName="tex_0028F8" Format="rgba16" Width="16" Height="32" Offset="0x28F8" />
<Texture Name="object_raf_Tex_002CF8" OutName="tex_002CF8" Format="rgba16" Width="16" Height="16" Offset="0x2CF8" />
<Texture Name="object_raf_Tex_002EF8" OutName="tex_002EF8" Format="rgba16" Width="16" Height="32" Offset="0x2EF8" />
<Texture Name="object_raf_Tex_0032F8" OutName="tex_0032F8" Format="rgba16" Width="8" Height="8" Offset="0x32F8" />
<Limb Name="object_raf_Standardlimb_003378" Type="Standard" EnumName="OBJECT_RAF_LIMB_01" Offset="0x3378" />
<Limb Name="object_raf_Standardlimb_003384" Type="Standard" EnumName="OBJECT_RAF_LIMB_02" Offset="0x3384" />
<Limb Name="object_raf_Standardlimb_003390" Type="Standard" EnumName="OBJECT_RAF_LIMB_03" Offset="0x3390" />
<Limb Name="object_raf_Standardlimb_00339C" Type="Standard" EnumName="OBJECT_RAF_LIMB_04" Offset="0x339C" />
<Limb Name="object_raf_Standardlimb_0033A8" Type="Standard" EnumName="OBJECT_RAF_LIMB_05" Offset="0x33A8" />
<Limb Name="object_raf_Standardlimb_0033B4" Type="Standard" EnumName="OBJECT_RAF_LIMB_06" Offset="0x33B4" />
<Limb Name="object_raf_Standardlimb_0033C0" Type="Standard" EnumName="OBJECT_RAF_LIMB_07" Offset="0x33C0" />
<Limb Name="object_raf_Standardlimb_0033CC" Type="Standard" EnumName="OBJECT_RAF_LIMB_08" Offset="0x33CC" />
<Limb Name="object_raf_Standardlimb_0033D8" Type="Standard" EnumName="OBJECT_RAF_LIMB_09" Offset="0x33D8" />
<Limb Name="object_raf_Standardlimb_0033E4" Type="Standard" EnumName="OBJECT_RAF_LIMB_0A" Offset="0x33E4" />
<Limb Name="object_raf_Standardlimb_0033F0" Type="Standard" EnumName="OBJECT_RAF_LIMB_0B" Offset="0x33F0" />
<Skeleton Name="object_raf_Skel_003428" Type="Flex" LimbType="Standard" LimbNone="OBJECT_RAF_LIMB_NONE" LimbMax="OBJECT_RAF_LIMB_MAX" EnumName="object_raf_Limbs" Offset="0x3428" />
<!-- Carnivorous Lily Pad Collision -->
<Collision Name="gCarnivorousLilyPadCol" Offset="0x108" />
<!-- Unused Textureless Platform DisplayList. Maybe used for testing collision? -->
<DList Name="gCarnivorousLilyPadTexturelessPlatformDL" Offset="0x1C0" />
<!-- Carnivorous Lily Pad Animations -->
<Animation Name="gCarnivorousLilyPadConvulseAnim" Offset="0x3FC" /> <!-- Original name is "raf_end01" -->
<Animation Name="gCarnivorousLilyPadDeathAnim" Offset="0x7A8" /> <!-- Original name is "raf_end02" -->
<Animation Name="gCarnivorousLilyPadSpitAnim" Offset="0xA64" /> <!-- Original name is "raf_haku" ("to spit up") -->
<Animation Name="gCarnivorousLilyPadChewAnim" Offset="0xB30" /> <!-- Original name is "raf_mogu" ("chew") -->
<Animation Name="gCarnivorousLilyPadCloseAnim" Offset="0xC7C" /> <!-- Original name is "raf_paku" ("devouring")-->
<!-- Carnivorous Lily Pad Limb DisplayLists -->
<DList Name="gCarnivorousLilyPadFlowerDL" Offset="0x1630" />
<DList Name="gCarnivorousLilyPadRootsDL" Offset="0x1790" />
<DList Name="gCarnivorousLilyPadTrap3LowerSegmentDL" Offset="0x1838" />
<DList Name="gCarnivorousLilyPadTrap3MiddleSegmentDL" Offset="0x18D0" />
<DList Name="gCarnivorousLilyPadTrap3UpperSegmentDL" Offset="0x1990" />
<DList Name="gCarnivorousLilyPadTrap2LowerSegmentDL" Offset="0x1B90" />
<DList Name="gCarnivorousLilyPadTrap2MiddleSegmentDL" Offset="0x1C28" />
<DList Name="gCarnivorousLilyPadTrap2UpperSegmentDL" Offset="0x1CE8" />
<DList Name="gCarnivorousLilyPadTrap1LowerSegmentDL" Offset="0x1EE8" />
<DList Name="gCarnivorousLilyPadTrap1MiddleSegmentDL" Offset="0x1F80" />
<DList Name="gCarnivorousLilyPadTrap1UpperSegmentDL" Offset="0x2040" />
<!-- Carnivorous Lily Pad Particle DisplayLists -->
<DList Name="gCarnivorousLilyPadParticlePetalDL" Offset="0x2340" />
<DList Name="gCarnivorousLilyPadParticleTeethDL" Offset="0x2418" />
<DList Name="gCarnivorousLilyPadParticleDL" Offset="0x24E0" />
<!-- Carnivorous Lily Pad Textures -->
<Texture Name="gCarnivorousLilyPadRootsTex" OutName="carnivorous_lily_pad_roots" Format="rgba16" Width="16" Height="32" Offset="0x24F8" />
<Texture Name="gCarnivorousLilyPadFlowerPetalTex" OutName="carnivorous_lily_pad_flower_petal" Format="rgba16" Width="16" Height="32" Offset="0x28F8" />
<Texture Name="gCarnivorousLilyPadFlowerCenterTex" OutName="carnivorous_lily_pad_flower_center" Format="rgba16" Width="16" Height="16" Offset="0x2CF8" />
<Texture Name="gCarnivorousLilyPadTrapPetalTex" OutName="carnivorous_lily_pad_trap_petal" Format="rgba16" Width="16" Height="32" Offset="0x2EF8" />
<Texture Name="gCarnivorousLilyPadTrapTeethTex" OutName="carnivorous_lily_pad_trap_teeth" Format="rgba16" Width="8" Height="8" Offset="0x32F8" />
<!-- Carnivorous Lily Pad Limbs -->
<Limb Name="gCarnivorousLilyPadFlowerLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_FLOWER" Offset="0x3378" />
<Limb Name="gCarnivorousLilyPadTrap1LowerSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_1_LOWER_SEGMENT" Offset="0x3384" />
<Limb Name="gCarnivorousLilyPadTrap1MiddleSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_1_MIDDLE_SEGMENT" Offset="0x3390" />
<Limb Name="gCarnivorousLilyPadTrap1UpperSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_1_UPPER_SEGMENT" Offset="0x339C" />
<Limb Name="gCarnivorousLilyPadTrap2LowerSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_2_LOWER_SEGMENT" Offset="0x33A8" />
<Limb Name="gCarnivorousLilyPadTrap2MiddleSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_2_MIDDLE_SEGMENT" Offset="0x33B4" />
<Limb Name="gCarnivorousLilyPadTrap2UpperSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_2_UPPER_SEGMENT" Offset="0x33C0" />
<Limb Name="gCarnivorousLilyPadTrap3LowerSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_3_LOWER_SEGMENT" Offset="0x33CC" />
<Limb Name="gCarnivorousLilyPadTrap3MiddleSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_3_MIDDLE_SEGMENT" Offset="0x33D8" />
<Limb Name="gCarnivorousLilyPadTrap3UpperSegmentLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_TRAP_3_UPPER_SEGMENT" Offset="0x33E4" />
<Limb Name="gCarnivorousLilyPadRootsLimb" Type="Standard" EnumName="CARNIVOROUS_LILY_PAD_LIMB_ROOTS" Offset="0x33F0" />
<!-- Carnivorous Lily Pad Skeleton -->
<Skeleton Name="gCarnivorousLilyPadSkel" Type="Flex" LimbType="Standard" LimbNone="CARNIVOROUS_LILY_PAD_LIMB_NONE" LimbMax="CARNIVOROUS_LILY_PAD_LIMB_MAX" EnumName="CarnivorousLilyPadLimbs" Offset="0x3428" />
</File>
</Root>
+1 -2
View File
@@ -2547,8 +2547,7 @@ beginseg
name "ovl_En_Raf"
compress
include "build/src/overlays/actors/ovl_En_Raf/z_en_raf.o"
include "build/data/ovl_En_Raf/ovl_En_Raf.data.o"
include "build/data/ovl_En_Raf/ovl_En_Raf.reloc.o"
include "build/src/overlays/actors/ovl_En_Raf/ovl_En_Raf_reloc.o"
endseg
beginseg
File diff suppressed because it is too large Load Diff
+52 -4
View File
@@ -2,16 +2,64 @@
#define Z_EN_RAF_H
#include "global.h"
#include "objects/object_raf/object_raf.h"
#define EN_RAF_GET_TYPE(thisx) (((thisx)->params >> 12) & 0xF)
#define EN_RAF_GET_REVIVE_TIMER(thisx) (((thisx)->params >> 7) & 0x1F)
#define EN_RAF_GET_SWITCH_FLAG(thisx) ((thisx)->params & 0x7F)
typedef enum {
/* 0 */ EN_RAF_TYPE_NORMAL,
/* 1 */ EN_RAF_TYPE_DORMANT, // Spawns without trap, so it can't eat bombs/player
/* 2 */ EN_RAF_TYPE_NO_WATER_INTERACTIONS // Won't produce ripples, and particles won't produce splashes
} EnRafType;
struct EnRaf;
typedef void (*EnRafActionFunc)(struct EnRaf*, GlobalContext*);
typedef struct {
/* 0x00 */ u8 isVisible;
/* 0x04 */ Vec3f position;
/* 0x10 */ Vec3f velocity;
/* 0x1C */ Vec3f acceleration;
/* 0x28 */ Vec3s rotation;
/* 0x30 */ f32 scale;
/* 0x34 */ s16 timer;
} EnRafParticle; // size = 0x38
typedef struct EnRaf {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0xEC];
/* 0x0230 */ EnRafActionFunc actionFunc;
/* 0x0234 */ char unk_234[0x8B0];
/* 0x000 */ DynaPolyActor dyna;
/* 0x15C */ SkelAnime skelAnime;
/* 0x1A0 */ Vec3s jointTable[CARNIVOROUS_LILY_PAD_LIMB_MAX];
/* 0x1E8 */ Vec3s morphTable[CARNIVOROUS_LILY_PAD_LIMB_MAX];
/* 0x230 */ EnRafActionFunc actionFunc;
/* 0x234 */ Vec3f limbScale[CARNIVOROUS_LILY_PAD_LIMB_MAX];
/* 0x2C4 */ Vec3f targetLimbScale[CARNIVOROUS_LILY_PAD_LIMB_MAX];
/* 0x354 */ Vec3s chewLimbRot[CARNIVOROUS_LILY_PAD_LIMB_MAX];
/* 0x39C */ s16 grabTarget;
/* 0x39E */ u8 isCurrentlyInRidingMovingState;
/* 0x3A0 */ f32 endFrame;
/* 0x3A4 */ f32 chewScale;
/* 0x3A8 */ f32 bobOffset;
/* 0x3AC */ f32 heightDiffFromPlayer;
/* 0x3B0 */ f32 bobPhase;
/* 0x3B4 */ s16 timer;
/* 0x3B6 */ s16 dissolveTimer;
/* 0x3B8 */ s16 rippleTimer;
/* 0x3BA */ s16 reviveTimer;
/* 0x3BC */ s16 playerRotYWhenGrabbed;
/* 0x3BE */ s16 mainType;
/* 0x3C0 */ s16 switchFlag;
/* 0x3C2 */ s16 petalScaleType;
/* 0x3C4 */ s16 chewCount;
/* 0x3C6 */ s16 action;
/* 0x3C8 */ s16 petalClearPixelFirstPassIndex;
/* 0x3CA */ s16 teethClearPixelFirstPassIndex;
/* 0x3CC */ s16 petalClearPixelSecondPassIndex;
/* 0x3CE */ s16 teethClearPixelSecondPassIndex;
/* 0x3D0 */ ColliderCylinder collider;
/* 0x41C */ EnRafParticle particles[31];
} EnRaf; // size = 0xAE4
extern const ActorInit En_Raf_InitVars;
+23 -23
View File
@@ -9745,33 +9745,33 @@
0x80A15D04:("EnGo_OverrideLimbDraw",),
0x80A15E38:("EnGo_TransfromLimbDraw",),
0x80A15FEC:("func_80A15FEC",),
0x80A16D40:("func_80A16D40",),
0x80A16D6C:("func_80A16D6C",),
0x80A16D40:("EnRaf_ClearPixelTeeth",),
0x80A16D6C:("EnRaf_ClearPixelPetal",),
0x80A16D90:("EnRaf_Init",),
0x80A17018:("EnRaf_Destroy",),
0x80A17060:("func_80A17060",),
0x80A1712C:("func_80A1712C",),
0x80A171D8:("func_80A171D8",),
0x80A17414:("func_80A17414",),
0x80A17464:("func_80A17464",),
0x80A17530:("func_80A17530",),
0x80A175E4:("func_80A175E4",),
0x80A17848:("func_80A17848",),
0x80A178A0:("func_80A178A0",),
0x80A179C8:("func_80A179C8",),
0x80A17C6C:("func_80A17C6C",),
0x80A17D14:("func_80A17D14",),
0x80A17D54:("func_80A17D54",),
0x80A17DDC:("func_80A17DDC",),
0x80A17E1C:("func_80A17E1C",),
0x80A18080:("func_80A18080",),
0x80A180B4:("func_80A180B4",),
0x80A17060:("EnRaf_ChangeAnimation",),
0x80A1712C:("EnRaf_SetupIdle",),
0x80A171D8:("EnRaf_Idle",),
0x80A17414:("EnRaf_SetupGrab",),
0x80A17464:("EnRaf_Grab",),
0x80A17530:("EnRaf_SetupChew",),
0x80A175E4:("EnRaf_Chew",),
0x80A17848:("EnRaf_SetupThrow",),
0x80A178A0:("EnRaf_Throw",),
0x80A179C8:("EnRaf_Explode",),
0x80A17C6C:("EnRaf_PostDetonation",),
0x80A17D14:("EnRaf_SetupConvulse",),
0x80A17D54:("EnRaf_Convulse",),
0x80A17DDC:("EnRaf_SetupDissolve",),
0x80A17E1C:("EnRaf_Dissolve",),
0x80A18080:("EnRaf_SetupDormant",),
0x80A180B4:("EnRaf_Dormant",),
0x80A181B4:("EnRaf_Update",),
0x80A1859C:("func_80A1859C",),
0x80A1859C:("EnRaf_TransformLimbDraw",),
0x80A18A08:("EnRaf_Draw",),
0x80A18A90:("func_80A18A90",),
0x80A18B8C:("func_80A18B8C",),
0x80A18DA0:("func_80A18DA0",),
0x80A18A90:("EnRaf_InitializeParticle",),
0x80A18B8C:("EnRaf_UpdateParticles",),
0x80A18DA0:("EnRaf_DrawParticles",),
0x80A19740:("ObjFunen_Init",),
0x80A19778:("ObjFunen_Draw",),
0x80A19910:("ObjRaillift_UpdatePosition",),
+6 -8
View File
@@ -10887,10 +10887,10 @@
0x80A16818:("jtbl_80A16818","UNK_PTR","",0x4),
0x80A18EC0:("En_Raf_InitVars","UNK_TYPE1","",0x1),
0x80A18EE0:("D_80A18EE0","UNK_TYPE1","",0x1),
0x80A18F0C:("D_80A18F0C","UNK_TYPE1","",0x1),
0x80A18F4C:("D_80A18F4C","UNK_TYPE1","",0x1),
0x80A18F8C:("D_80A18F8C","UNK_TYPE1","",0x1),
0x80A1918C:("D_80A1918C","UNK_TYPE1","",0x1),
0x80A18F0C:("D_80A18F0C","u8","[0x40]",0x40),
0x80A18F4C:("D_80A18F4C","u8","[0x40]",0x40),
0x80A18F8C:("D_80A18F8C","u8","[0x200]",0x200),
0x80A1918C:("D_80A1918C","u8","[0x200]",0x200),
0x80A1939C:("D_80A1939C","UNK_TYPE1","",0x1),
0x80A193BC:("D_80A193BC","UNK_TYPE4","",0x4),
0x80A193C8:("D_80A193C8","UNK_TYPE1","",0x1),
@@ -10900,10 +10900,8 @@
0x80A19400:("D_80A19400","UNK_TYPE4","",0x4),
0x80A1940C:("D_80A1940C","UNK_TYPE4","",0x4),
0x80A19418:("D_80A19418","UNK_TYPE2","",0x2),
0x80A19420:("D_80A19420","UNK_TYPE1","",0x1),
0x80A19438:("D_80A19438","UNK_TYPE1","",0x1),
0x80A19444:("D_80A19444","UNK_TYPE1","",0x1),
0x80A1945C:("D_80A1945C","UNK_TYPE1","",0x1),
0x80A19420:("D_80A19420","Vec3f","[3]",0x24),
0x80A19444:("D_80A19444","Vec3f","[3]",0x24),
0x80A19468:("D_80A19468","UNK_TYPE2","",0x2),
0x80A19474:("D_80A19474","UNK_TYPE1","",0x1),
0x80A194B0:("D_80A194B0","UNK_TYPE1","",0x1),
-9
View File
@@ -1441,15 +1441,6 @@ D_06004340 = 0x06004340;
D_06001A80 = 0x06001A80;
// ovl_En_Raf
D_06000108 = 0x06000108;
D_06000A64 = 0x06000A64;
D_060024E0 = 0x060024E0;
D_06002EF8 = 0x06002EF8;
D_060032F8 = 0x060032F8;
D_06003428 = 0x06003428;
// ovl_En_Rat
D_06000174 = 0x06000174;