bg_haka_megane documentation pass (#2684)

* document bg_haka_megane

* BGHAKAMEGANE_TYPE_MAX

* dragorn suggestion
This commit is contained in:
mzxrules
2026-02-18 02:15:05 -05:00
committed by GitHub
parent 1884569a98
commit b0a03cc1a4
4 changed files with 77 additions and 58 deletions
+27 -27
View File
@@ -5,52 +5,52 @@
</Array>
<DList Name="object_haka_objects_DL_000040" Offset="0x40"/>
<Collision Name="object_haka_objects_Col_000118" Offset="0x118"/>
<Array Name="object_haka_objects_Vtx_000150" Count="253" Offset="0x150">
<Array Name="gShadowTempleRoom3HiddenPlatformsVtx" Count="253" Offset="0x150">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_001120" Offset="0x1120"/>
<Array Name="object_haka_objects_Vtx_001450" Count="74" Offset="0x1450">
<DList Name="gShadowTempleRoom3HiddenPlatformsDL" Offset="0x1120"/>
<Array Name="gShadowTempleRoom9HiddenPlatformsVtx" Count="74" Offset="0x1450">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_0018F0" Offset="0x18F0"/>
<Array Name="object_haka_objects_Vtx_001AF0" Count="318" Offset="0x1AF0">
<DList Name="gShadowTempleRoom9HiddenPlatformsDL" Offset="0x18F0"/>
<Array Name="gShadowTempleRoom11HiddenObjectsVtx" Count="318" Offset="0x1AF0">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_002ED0" Offset="0x2ED0"/>
<Array Name="object_haka_objects_Vtx_0032F0" Count="160" Offset="0x32F0">
<DList Name="gShadowTempleRoom11HiddenObjectsDL" Offset="0x2ED0"/>
<Array Name="gShadowTempleRoom15HiddenWallsVtx" Count="160" Offset="0x32F0">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_003CF0" Offset="0x3CF0"/>
<Array Name="object_haka_objects_Vtx_003F70" Count="24" Offset="0x3F70">
<DList Name="gShadowTempleRoom15HiddenWallsDL" Offset="0x3CF0"/>
<Array Name="gShadowTempleFakeCryptWallGlowingSkullVtx" Count="24" Offset="0x3F70">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_0040F0" Offset="0x40F0"/>
<Collision Name="object_haka_objects_Col_004330" Offset="0x4330"/>
<Array Name="object_haka_objects_Vtx_004360" Count="5" Offset="0x4360">
<DList Name="gShadowTempleFakeCryptWallGlowingSkullDL" Offset="0x40F0"/>
<Collision Name="gShadowTempleFakeCryptWallGlowingSkullCol" Offset="0x4330"/>
<Array Name="gShadowTempleFakeWallStrangeFaceVtx" Count="5" Offset="0x4360">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_0043B0" Offset="0x43B0"/>
<Collision Name="object_haka_objects_Col_0044D0" Offset="0x44D0"/>
<Array Name="object_haka_objects_Vtx_004500" Count="10" Offset="0x4500">
<DList Name="gShadowTempleFakeWallStrangeFaceDL" Offset="0x43B0"/>
<Collision Name="gShadowTempleFakeWallStrangeFaceCol" Offset="0x44D0"/>
<Array Name="gShadowTempleRoom5FakeWallsVtx" Count="10" Offset="0x4500">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_0045A0" Offset="0x45A0"/>
<Collision Name="object_haka_objects_Col_004780" Offset="0x4780"/>
<Array Name="object_haka_objects_Vtx_0047B0" Count="4" Offset="0x47B0">
<DList Name="gShadowTempleRoom5FakeWallsDL" Offset="0x45A0"/>
<Collision Name="gShadowTempleRoom5FakeWallsCol" Offset="0x4780"/>
<Array Name="gShadowTempleRoom6FakeFloorVtx" Count="4" Offset="0x47B0">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_0047F0" Offset="0x47F0"/>
<Collision Name="object_haka_objects_Col_004940" Offset="0x4940"/>
<Array Name="object_haka_objects_Vtx_004970" Count="4" Offset="0x4970">
<DList Name="gShadowTempleRoom6FakeFloorDL" Offset="0x47F0"/>
<Collision Name="gShadowTempleRoom6FakeFloorCol" Offset="0x4940"/>
<Array Name="gShadowTempleRoom10FakeWallVtx" Count="4" Offset="0x4970">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_0049B0" Offset="0x49B0"/>
<Collision Name="object_haka_objects_Col_004B00" Offset="0x4B00"/>
<Array Name="object_haka_objects_Vtx_004B30" Count="4" Offset="0x4B30">
<DList Name="gShadowTempleRoom10FakeWallDL" Offset="0x49B0"/>
<Collision Name="gShadowTempleRoom10FakeWallCol" Offset="0x4B00"/>
<Array Name="gShadowTempleRoom18FakeWallVtx" Count="4" Offset="0x4B30">
<Vtx/>
</Array>
<DList Name="object_haka_objects_DL_004B70" Offset="0x4B70"/>
<Collision Name="object_haka_objects_Col_004CC0" Offset="0x4CC0"/>
<DList Name="gShadowTempleRoom18FakeWallDL" Offset="0x4B70"/>
<Collision Name="gShadowTempleRoom18FakeWallCol" Offset="0x4CC0"/>
<Array Name="object_haka_objects_Vtx_004CF0" Count="49" Offset="0x4CF0">
<Vtx/>
</Array>
@@ -148,7 +148,7 @@
<Texture Name="object_haka_objects_Tex_0131F0" Format="ia8" Width="32" Height="32" Offset="0x131F0"/>
<Texture Name="object_haka_objects_Tex_0135F0" Format="rgba16" Width="32" Height="32" Offset="0x135F0"/>
<Texture Name="object_haka_objects_Tex_013DF0" Format="rgba16" Width="32" Height="32" Offset="0x13DF0"/>
<Texture Name="object_haka_objects_Tex_0145F0" Format="rgba16" Width="32" Height="64" Offset="0x145F0"/>
<Texture Name="gShadowTempleCryptWallTex" Format="rgba16" Width="32" Height="64" Offset="0x145F0"/>
<Texture Name="object_haka_objects_Tex_0155F0" Format="rgba16" Width="32" Height="64" Offset="0x155F0"/>
<Texture Name="object_haka_objects_Tex_0165F0" Format="rgba16" Width="32" Height="8" Offset="0x165F0"/>
<Texture Name="object_haka_objects_Tex_0167F0" Format="rgba16" Width="32" Height="16" Offset="0x167F0"/>
+7 -7
View File
@@ -4,10 +4,10 @@
<Vtx/>
</Array>
<DList Name="gBotwHoleTrap1DL" Offset="0x01B0"/>
<Array Name="gBotwHoleTrap2Vtx" Count="19" Offset="0x2C0">
<Array Name="gBotwRoom5HiddenPlatformVtx" Count="19" Offset="0x2C0">
<Vtx/>
</Array>
<DList Name="gBotwHoleTrap2DL" Offset="0x03F0"/>
<DList Name="gBotwRoom5HiddenPlatformDL" Offset="0x03F0"/>
<Array Name="gBotwCoffinLidVtx" Count="23" Offset="0x540">
<Vtx/>
</Array>
@@ -19,15 +19,15 @@
<Array Name="gBotwFakeWallsAndFloorsVtx" Count="60" Offset="0xC60">
<Vtx/>
</Array>
<DList Name="gBotwFakeWallsAndFloorsDL" Offset="0x1060"/>
<DList Name="gBotwRoom0FakeWallsAndFloorsDL" Offset="0x1060"/>
<Array Name="gBotwBloodSplatterVtx" Count="4" Offset="0x1020">
<Vtx/>
</Array>
<DList Name="gBotwBloodSplatterDL" Offset="0x1250"/>
<Array Name="gBotwThreeFakeFloorsVtx" Count="12" Offset="0x1860">
<Array Name="gBotwRoom3ThreeFakeFloorsVtx" Count="12" Offset="0x1860">
<Vtx/>
</Array>
<DList Name="gBotwThreeFakeFloorsDL" Offset="0x1920"/>
<DList Name="gBotwRoom3ThreeFakeFloorsDL" Offset="0x1920"/>
<Array Name="gBotwWaterRingVtx" Count="54" Offset="0x1AF0">
<Vtx/>
</Array>
@@ -39,8 +39,8 @@
<Collision Name="gBotwCoffinLidCol" Offset="0x0870"/>
<Collision Name="gBotwBombableRubbleCol" Offset="0x0C2C"/>
<Collision Name="gBotw1Col" Offset="0x1830"/>
<Collision Name="gBotw2Col" Offset="0x1AB8"/>
<Collision Name="gBotwRoom0FakeWallsAndFloorsCol" Offset="0x1830"/>
<Collision Name="gBotwRoom3ThreeFakeFloorsCol" Offset="0x1AB8"/>
<Texture Name="gBotwWater1Tex" Format="ia16" Width="32" Height="32" Offset="0x028F0"/>
<Texture Name="gBotwWater2Tex" Format="rgba16" Width="32" Height="32" Offset="0x020F0"/>
@@ -1,7 +1,7 @@
/*
* File: z_bg_haka_megane.c
* Overlay: ovl_Bg_Haka_Megane
* Description: Shadow Temple Fake Walls
* Description: Shadow Temple and Bottom of the Well Lens of Truth objects
*/
#include "z_bg_haka_megane.h"
@@ -19,8 +19,8 @@ void BgHakaMegane_Destroy(Actor* thisx, PlayState* play);
void BgHakaMegane_Update(Actor* thisx, PlayState* play);
void BgHakaMegane_Draw(Actor* thisx, PlayState* play);
void func_8087DB24(BgHakaMegane* this, PlayState* play);
void func_8087DBF0(BgHakaMegane* this, PlayState* play);
void BgHakaMegane_WaitForObject(BgHakaMegane* this, PlayState* play);
void BgHakaMegane_UpdateState(BgHakaMegane* this, PlayState* play);
void BgHakaMegane_DoNothing(BgHakaMegane* this, PlayState* play);
ActorProfile Bg_Haka_Megane_Profile = {
@@ -39,28 +39,30 @@ static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
static CollisionHeader* sCollisionHeaders[] = {
&gBotw1Col,
&gBotw2Col,
static CollisionHeader* sCollisionHeaders[BGHAKAMEGANE_TYPE_MAX] = {
&gBotwRoom0FakeWallsAndFloorsCol,
&gBotwRoom3ThreeFakeFloorsCol,
NULL,
&object_haka_objects_Col_004330,
&object_haka_objects_Col_0044D0,
&gShadowTempleFakeCryptWallGlowingSkullCol,
&gShadowTempleFakeWallStrangeFaceCol,
NULL,
&object_haka_objects_Col_004780,
&object_haka_objects_Col_004940,
&gShadowTempleRoom5FakeWallsCol,
&gShadowTempleRoom6FakeFloorCol,
NULL,
&object_haka_objects_Col_004B00,
&gShadowTempleRoom10FakeWallCol,
NULL,
&object_haka_objects_Col_004CC0,
&gShadowTempleRoom18FakeWallCol,
NULL,
};
static Gfx* sDLists[] = {
gBotwFakeWallsAndFloorsDL, gBotwThreeFakeFloorsDL, gBotwHoleTrap2DL,
object_haka_objects_DL_0040F0, object_haka_objects_DL_0043B0, object_haka_objects_DL_001120,
object_haka_objects_DL_0045A0, object_haka_objects_DL_0047F0, object_haka_objects_DL_0018F0,
object_haka_objects_DL_0049B0, object_haka_objects_DL_003CF0, object_haka_objects_DL_004B70,
object_haka_objects_DL_002ED0,
static Gfx* sDLists[BGHAKAMEGANE_TYPE_MAX] = {
gBotwRoom0FakeWallsAndFloorsDL, gBotwRoom3ThreeFakeFloorsDL,
gBotwRoom5HiddenPlatformDL, gShadowTempleFakeCryptWallGlowingSkullDL,
gShadowTempleFakeWallStrangeFaceDL, gShadowTempleRoom3HiddenPlatformsDL,
gShadowTempleRoom5FakeWallsDL, gShadowTempleRoom6FakeFloorDL,
gShadowTempleRoom9HiddenPlatformsDL, gShadowTempleRoom10FakeWallDL,
gShadowTempleRoom15HiddenWallsDL, gShadowTempleRoom18FakeWallDL,
gShadowTempleRoom11HiddenObjectsDL,
};
void BgHakaMegane_Init(Actor* thisx, PlayState* play) {
@@ -78,7 +80,7 @@ void BgHakaMegane_Init(Actor* thisx, PlayState* play) {
if (this->requiredObjectSlot < 0) {
Actor_Kill(thisx);
} else {
this->actionFunc = func_8087DB24;
this->actionFunc = BgHakaMegane_WaitForObject;
}
}
@@ -88,16 +90,17 @@ void BgHakaMegane_Destroy(Actor* thisx, PlayState* play) {
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
}
void func_8087DB24(BgHakaMegane* this, PlayState* play) {
void BgHakaMegane_WaitForObject(BgHakaMegane* this, PlayState* play) {
if (Object_IsLoaded(&play->objectCtx, this->requiredObjectSlot)) {
this->dyna.actor.objectSlot = this->requiredObjectSlot;
this->dyna.actor.draw = BgHakaMegane_Draw;
Actor_SetObjectDependency(play, &this->dyna.actor);
if (play->roomCtx.curRoom.lensMode != LENS_MODE_SHOW_ACTORS) {
CollisionHeader* colHeader;
CollisionHeader* collision;
this->actionFunc = func_8087DBF0;
this->actionFunc = BgHakaMegane_UpdateState;
collision = sCollisionHeaders[this->dyna.actor.params];
if (collision != NULL) {
CollisionHeader_GetVirtual(collision, &colHeader);
@@ -109,7 +112,7 @@ void func_8087DB24(BgHakaMegane* this, PlayState* play) {
}
}
void func_8087DBF0(BgHakaMegane* this, PlayState* play) {
void BgHakaMegane_UpdateState(BgHakaMegane* this, PlayState* play) {
Actor* thisx = &this->dyna.actor;
if (play->actorCtx.lensActive) {
@@ -139,7 +142,7 @@ void BgHakaMegane_Draw(Actor* thisx, PlayState* play) {
Gfx_DrawDListOpa(play, sDLists[thisx->params]);
}
if (thisx->params == 0) {
if (thisx->params == BGHAKAMEGANE_TYPE_BOTW_ROOM_0_FAKE) {
Gfx_DrawDListXlu(play, gBotwBloodSplatterDL);
}
}
@@ -4,6 +4,23 @@
#include "ultra64.h"
#include "actor.h"
typedef enum BgHakaMeganeType {
/* 0 */ BGHAKAMEGANE_TYPE_BOTW_ROOM_0_FAKE,
/* 1 */ BGHAKAMEGANE_TYPE_BOTW_ROOM_3_FAKE,
/* 2 */ BGHAKAMEGANE_TYPE_BOTW_ROOM_5_HIDDEN,
/* 3 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_0_FAKE_WALL,
/* 4 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_2_FAKE_WALL,
/* 5 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_3_HIDDEN,
/* 6 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_5_FAKE,
/* 7 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_6_FAKE,
/* 8 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_9_HIDDEN,
/* 9 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_10_FAKE,
/* 10 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_15_HIDDEN,
/* 11 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_18_FAKE,
/* 12 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_11_HIDDEN,
/* 13 */ BGHAKAMEGANE_TYPE_MAX
} BgHakaMeganeType;
struct BgHakaMegane;
typedef void (*BgHakaMeganeActionFunc)(struct BgHakaMegane*, struct PlayState*);
@@ -13,7 +30,6 @@ typedef struct BgHakaMegane {
/* 0x0164 */ BgHakaMeganeActionFunc actionFunc;
/* 0x0168 */ char unk_168[0x1];
/* 0x0169 */ s8 requiredObjectSlot;
/* 0x016A */ char unk_16A[0x2];
} BgHakaMegane; // size = 0x016C
#endif