summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEthan Roseman <ethteck@gmail.com>2020-07-22 23:44:18 -0400
committerGitHub <noreply@github.com>2020-07-22 23:44:18 -0400
commit5f3f065aa71ef75e28e5e9280657267bbdca24ff (patch)
treeaf60815d602711a1afeec47699c6e055ee16810c /src
parent8a309a4e19c3015530b4519ee66fe1184bae5df6 (diff)
Decompiled ovl_Bg_Jya_Block (#286)
* Decompiled ovl_Bg_Jya_Block * PR comments
Diffstat (limited to 'src')
-rw-r--r--src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c59
1 files changed, 53 insertions, 6 deletions
diff --git a/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c b/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c
index 6abf8fe6d..1231ab962 100644
--- a/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c
+++ b/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c
@@ -15,7 +15,6 @@ void BgJyaBlock_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgJyaBlock_Update(Actor* thisx, GlobalContext* globalCtx);
void BgJyaBlock_Draw(Actor* thisx, GlobalContext* globalCtx);
-/*
const ActorInit Bg_Jya_Block_InitVars = {
ACTOR_BG_JYA_BLOCK,
ACTORTYPE_PROP,
@@ -27,11 +26,59 @@ const ActorInit Bg_Jya_Block_InitVars = {
(ActorFunc)BgJyaBlock_Update,
(ActorFunc)BgJyaBlock_Draw,
};
-*/
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Jya_Block/BgJyaBlock_Init.s")
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Jya_Block/BgJyaBlock_Destroy.s")
+static InitChainEntry sInitChain[] = {
+ ICHAIN_VEC3F_DIV1000(scale, 333, ICHAIN_CONTINUE),
+ ICHAIN_F32(uncullZoneForward, 1800, ICHAIN_CONTINUE),
+ ICHAIN_F32(uncullZoneScale, 500, ICHAIN_CONTINUE),
+ ICHAIN_F32(uncullZoneDownward, 1500, ICHAIN_STOP),
+};
+
+extern UNK_TYPE D_05004350;
+extern Gfx D_05004CD0[];
+extern UNK_TYPE D_05004E98;
+
+void BgJyaBlock_Init(Actor* thisx, GlobalContext* globalCtx) {
+ s32 pad;
+ BgJyaBlock* this = THIS;
+ s32 localC = 0;
+
+ DynaPolyInfo_SetActorMove(&this->dyna, 0);
+ DynaPolyInfo_Alloc(&D_05004E98, &localC);
+ this->dyna.dynaPolyId = DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, localC);
+ Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
+
+ if ((LINK_AGE_IN_YEARS != YEARS_CHILD) || !Flags_GetSwitch(globalCtx, thisx->params & 0x3F)) {
+ Actor_Kill(&this->dyna.actor);
+ }
+}
+
+void BgJyaBlock_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+ BgJyaBlock* this = THIS;
+
+ DynaPolyInfo_Free(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
+}
+
+void BgJyaBlock_Update(Actor* thisx, GlobalContext* globalCtx) {
+ BgJyaBlock* this = THIS;
+ Player* player = PLAYER;
+
+ player->stateFlags2 &= ~0x10;
+ this->dyna.unk_150 = 0.0f;
+}
+
+void BgJyaBlock_Draw(Actor* thisx, GlobalContext* globalCtx) {
+ GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
+ Gfx* dispRefs[4];
+
+ Graph_OpenDisps(dispRefs, globalCtx->state.gfxCtx, "../z_bg_jya_block.c", 145);
+ func_80093D18(globalCtx->state.gfxCtx);
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Jya_Block/BgJyaBlock_Update.s")
+ gSPSegment(gfxCtx->polyOpa.p++, 0x08, SEGMENTED_TO_VIRTUAL(&D_05004350));
+ gSPMatrix(gfxCtx->polyOpa.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_jya_block.c", 153),
+ G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gDPSetEnvColor(gfxCtx->polyOpa.p++, 232, 210, 176, 255);
+ gSPDisplayList(gfxCtx->polyOpa.p++, D_05004CD0);
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Jya_Block/BgJyaBlock_Draw.s")
+ Graph_CloseDisps(dispRefs, globalCtx->state.gfxCtx, "../z_bg_jya_block.c", 158);
+}