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
@@ -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