summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEthan Roseman <ethteck@gmail.com>2020-03-22 16:40:08 -0400
committerEthan Roseman <ethteck@gmail.com>2020-03-22 16:40:08 -0400
commit4600faad8b04573c6eeacbd56dd15a427ff0a337 (patch)
tree25e4e2f8609c8edcaaedafdbbc40851b4a910855 /src
parent969c55bc297cf0274c0063be6fbcff92ea53926a (diff)
5 to go
Diffstat (limited to 'src')
-rw-r--r--src/overlays/actors/ovl_En_Ru2/z_en_ru2.c912
-rw-r--r--src/overlays/actors/ovl_En_Ru2/z_en_ru2.h5
2 files changed, 747 insertions, 170 deletions
diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
index 7b4657ee5..ee72c4d78 100644
--- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
+++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
@@ -8,7 +8,6 @@ void EnRu2_Destroy(EnRu2* this, GlobalContext* globalCtx);
void EnRu2_Update(EnRu2* this, GlobalContext* globalCtx);
void EnRu2_Draw(EnRu2* this, GlobalContext* globalCtx);
-
void func_80AF2CB4(EnRu2* this, GlobalContext* globalCtx);
void func_80AF2CD4(EnRu2* this, GlobalContext* globalCtx);
void func_80AF2CF4(EnRu2* this, GlobalContext* globalCtx);
@@ -42,7 +41,7 @@ ColliderCylinderInit D_80AF40E0 = {
{ 0x001E, 0x0064, 0x0000, 0x0000, 0x0000, 0x0000},
};
-u32 D_80AF410C[] = { 0x06000F20, 0x060022E0, 0x06002AE0 };
+u32 D_80AF410C[] = { 0x06000F20, 0x060022E0, 0x06002AE0, };
u32 D_80AF4118 = 0;
@@ -152,33 +151,33 @@ u32 D_80AF411C[] =
ActorFunc D_80AF50BC[] =
{
- func_80AF2CB4,
- func_80AF2CD4,
- func_80AF2CF4,
- func_80AF2D2C,
- func_80AF2D6C,
- func_80AF2DAC,
- func_80AF2DEC,
- func_80AF3144,
- func_80AF3174,
- func_80AF31C8,
- func_80AF3604,
- func_80AF3624,
- func_80AF366C,
- func_80AF36AC,
- func_80AF3BC8,
- func_80AF3C04,
- func_80AF3C64,
- func_80AF3CB8,
- func_80AF3D0C,
- func_80AF3D60
+ (ActorFunc)func_80AF2CB4,
+ (ActorFunc)func_80AF2CD4,
+ (ActorFunc)func_80AF2CF4,
+ (ActorFunc)func_80AF2D2C,
+ (ActorFunc)func_80AF2D6C,
+ (ActorFunc)func_80AF2DAC,
+ (ActorFunc)func_80AF2DEC,
+ (ActorFunc)func_80AF3144,
+ (ActorFunc)func_80AF3174,
+ (ActorFunc)func_80AF31C8,
+ (ActorFunc)func_80AF3604,
+ (ActorFunc)func_80AF3624,
+ (ActorFunc)func_80AF366C,
+ (ActorFunc)func_80AF36AC,
+ (ActorFunc)func_80AF3BC8,
+ (ActorFunc)func_80AF3C04,
+ (ActorFunc)func_80AF3C64,
+ (ActorFunc)func_80AF3CB8,
+ (ActorFunc)func_80AF3D0C,
+ (ActorFunc)func_80AF3D60
};
ActorFunc D_80AF510C[] =
{
- func_80AF3F14,
- func_80AF3F20,
- func_80AF321C
+ (ActorFunc)func_80AF3F14,
+ (ActorFunc)func_80AF3F20,
+ (ActorFunc)func_80AF321C
};
const ActorInit En_Ru2_InitVars =
@@ -203,155 +202,734 @@ extern u32 D_06000DE8;
extern u32 D_0600E630;
extern u32 D_0600F03C;
extern u32 D_0600F8B8;
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2550.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF259C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Destroy.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2608.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2690.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF26A0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF26AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF26D0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2744.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF278C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF27AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF27D0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF281C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2868.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF28E8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2978.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2994.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF29DC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2A38.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2AB4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2B44.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2B94.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2BC0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2C54.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2C68.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2CB4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2CD4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2CF4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2D2C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2D6C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2DAC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2DEC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2E1C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2E64.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2E84.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2F04.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2F58.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF30AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3144.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3174.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF31C8.s")
+extern u32 D_80116280; // z_actor.c
+extern u32 D_80116290;
+
+void func_80AF2550(EnRu2* this, GlobalContext* globalCtx) {
+ EnRu2* thisLocal = this;
+ ActorCollider_AllocCylinder(globalCtx, &thisLocal->collider);
+ func_8005C450(globalCtx, &thisLocal->collider, &this->actor, &D_80AF40E0);
+}
+
+void func_80AF259C(EnRu2* this, GlobalContext* globalCtx) {
+ s32 pad;
+ ColliderCylinderMain* collider = &this->collider;
+ Actor* thisx = &this->actor;
+ s32 pad2[2];
+
+ ActorCollider_Cylinder_Update(thisx, collider);
+ Actor_CollisionCheck_SetAC(globalCtx, &globalCtx->sub_11E60, collider);
+}
+
+void EnRu2_Destroy(EnRu2* this, GlobalContext* globalCtx) {
+ ColliderCylinderMain* collider = &this->collider;
+ ActorCollider_FreeCylinder(globalCtx, collider);
+}
+
+void func_80AF2608(EnRu2* this) {
+ s32 pad[3];
+ s16* unk_2A6 = &this->unk_2A6;
+ s16* unk_2A4 = &this->unk_2A4;
+
+ if (!DECR(*unk_2A6)) {
+ *unk_2A6 = Math_Rand_S16Offset(0x3C, 0x3C);
+ }
+
+ *unk_2A4 = *unk_2A6;
+ if (*unk_2A4 >= 3) {
+ *unk_2A4 = 0;
+ }
+}
+
+s32 func_80AF2690(EnRu2* this) {
+ s32 params_shift = this->actor.params >> 8;
+ return params_shift & 0xFF;
+}
+
+s32 func_80AF26A0(EnRu2* this) {
+ s16 params = this->actor.params;
+ return params & 0xFF;
+}
+
+void func_80AF26AC(EnRu2* this) {
+ this->action = 7;
+ this->drawConfig = 0;
+ this->unk_2B4 = 0;
+ this->unk_2B8 = 0;
+ this->actor.shape.unk_14 = 0;
+ this->unk_2B0 = 0.0f;
+}
+
+void func_80AF26D0(EnRu2* this, GlobalContext* globalCtx) {
+ s32 one;
+ if (globalCtx->csCtx.state == 0) {
+ if (D_80AF4118 != 0) {
+ if (this->actor.params == 2) {
+ func_80AF26AC(this);
+ }
+ D_80AF4118 = 0;
+ return;
+ }
+ }
+ else {
+ one = 1;
+ if (D_80AF4118 == 0) {
+ D_80AF4118 = one;
+ }
+ }
+}
+
+void func_80AF2744(EnRu2* this, GlobalContext* globalCtx) {
+ func_8002E4B4(globalCtx, &this->actor, 75.0f, 30.0f, 30.0f, 4);
+}
+
+s32 EnRu2_FrameUpdateMatrix(EnRu2* this) {
+ return SkelAnime_FrameUpdateMatrix(&this->skelAnime);
+}
+
+CsCmdActorAction* func_80AF27AC(GlobalContext* globalCtx, s32 actorActionIdx) {
+ if (globalCtx->csCtx.state != 0) {
+ return globalCtx->csCtx.actorActions[actorActionIdx];
+ }
+ return 0;
+}
+
+s32 func_80AF27D0(EnRu2* this, GlobalContext* globalCtx, u16 arg2, s32 actorActionIdx) {
+ CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, actorActionIdx);
+
+ if (csCmdActorAction != NULL && csCmdActorAction->action == arg2) {
+ return 1;
+ }
+ return 0;
+}
+
+s32 func_80AF281C(EnRu2* this, GlobalContext* globalCtx, u16 arg2, s32 actorActionIdx) {
+ CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, actorActionIdx);
+
+ if (csCmdActorAction != NULL && csCmdActorAction->action != arg2) {
+ return 1;
+ }
+ return 0;
+}
+
+void func_80AF2868(EnRu2* this, GlobalContext* globalCtx, u32 actorActionIdx) {
+ CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, actorActionIdx);
+ s16 newRotY;
+ Actor* thisx = &this->actor;
+
+ if (csCmdActorAction != NULL) {
+ thisx->posRot.pos.x = csCmdActorAction->startPos.x;
+ thisx->posRot.pos.y = csCmdActorAction->startPos.y;
+ thisx->posRot.pos.z = csCmdActorAction->startPos.z;
+ newRotY = csCmdActorAction->rot.y;
+ thisx->shape.rot.y = newRotY;
+ thisx->posRot.rot.y = newRotY;
+ }
+}
+
+void func_80AF28E8(EnRu2* this, u32 animation, u8 arg2, f32 transitionRate, s32 arg4) {
+ f32 frameCount = SkelAnime_GetFrameCount(animation);
+ f32 playbackSpeed;
+ f32 unk0;
+ f32 fc;
+
+ if (arg4 == 0) {
+ unk0 = 0.0f;
+ fc = frameCount;
+ playbackSpeed = 1.0f;
+ } else {
+ unk0 = frameCount;
+ fc = 0.0f;
+ playbackSpeed = -1.0f;
+ }
+
+ SkelAnime_ChangeAnimation(&this->skelAnime, animation, playbackSpeed, unk0, fc, arg2, transitionRate);
+}
+
+void func_80AF2978(EnRu2* this, GlobalContext* globalCtx) {
+ this->actor.shape.unk_08 += 83.333336f;
+}
+
+void func_80AF2994(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF28E8(this, &D_06000DE8, 0, 0.0f, 0);
+ this->actor.shape.unk_08 = -10000.0f;
+}
+
+void func_80AF29DC(EnRu2* this, GlobalContext* globalCtx) {
+ Actor* thisx = &this->actor;
+ f32 posX = thisx->posRot.pos.x;
+ f32 posY = thisx->posRot.pos.y;
+ f32 posZ = thisx->posRot.pos.z;
+ Actor_SpawnAttached(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DOOR_WARP1, posX, posY, posZ, 0, 0, 0, 2);
+}
+
+void func_80AF2A38(EnRu2* this, GlobalContext* globalCtx) {
+ Player* player = PLAYER;
+ f32 posX = player->actor.posRot.pos.x;
+ f32 posY = player->actor.posRot.pos.y + 50.0f;
+ f32 posZ = player->actor.posRot.pos.z;
+
+ Actor_SpawnAttached(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0, 10);
+ Item_Give(globalCtx, ITEM_MEDALLION_WATER);
+}
+
+void func_80AF2AB4(EnRu2* this, GlobalContext* globalCtx) {
+ s32 pad[2];
+ Player* player;
+ s16 temp;
+
+ if (gSaveContext.chamber_cutscene_num == 2 && gSaveContext.scene_setup_index < 4) {
+ player = PLAYER;
+ this->action = 1;
+ globalCtx->csCtx.segment = &D_80AF411C;
+ gSaveContext.cutscene_trigger = 2;
+ Item_Give(globalCtx, ITEM_MEDALLION_WATER);
+ temp = this->actor.posRot.rot.y + 0x8000;
+ player->actor.shape.rot.y = temp;
+ player->actor.posRot.rot.y = temp;
+ }
+}
+
+void func_80AF2B44(EnRu2* this, GlobalContext* globalCtx) {
+ CutsceneContext* csCtx = &globalCtx->csCtx;
+ CsCmdActorAction* csCmdActorAction;
+ if (csCtx->state != 0) {
+ csCmdActorAction = csCtx->actorActions[3];
+ if (csCmdActorAction != NULL && csCmdActorAction->action == 2) {
+ this->action = 2;
+ this->drawConfig = 1;
+ func_80AF29DC(this, globalCtx);
+ }
+ }
+}
+
+void func_80AF2B94(EnRu2* this) {
+ if (this->actor.shape.unk_08 >= 0.0f) {
+ this->action = 3;
+ this->actor.shape.unk_08 = 0.0f;
+ }
+}
+
+void func_80AF2BC0(EnRu2* this, GlobalContext* globalCtx) {
+ UNK_PTR animation = &D_0600D3DC;
+ CsCmdActorAction* csCmdActorAction;
+ if (globalCtx->csCtx.state != 0) {
+ csCmdActorAction = globalCtx->csCtx.actorActions[3];
+ if (csCmdActorAction != NULL && csCmdActorAction->action == 3) {
+ SkelAnime_ChangeAnimation(&this->skelAnime, animation, 1.0f, 0.0f, SkelAnime_GetFrameCount(animation), 2, 0.0f);
+ this->action = 4;
+ }
+ }
+}
+
+void func_80AF2C54(EnRu2* this, UNK_TYPE arg1) {
+ if (arg1 != 0) {
+ this->action = 5;
+ }
+}
+
+void func_80AF2C68(EnRu2* this, GlobalContext* globalCtx) {
+ CsCmdActorAction* csCmdActorAction;
+ if (globalCtx->csCtx.state != 0) {
+ csCmdActorAction = globalCtx->csCtx.actorActions[6];
+ if (csCmdActorAction != NULL && csCmdActorAction->action == 2) {
+ this->action = 6;
+ func_80AF2A38(this, globalCtx);
+ }
+ }
+}
+
+void func_80AF2CB4(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2AB4(this, globalCtx);
+}
+
+void func_80AF2CD4(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2B44(this, globalCtx);
+}
+
+void func_80AF2CF4(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2978(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF2B94(this);
+}
+
+void func_80AF2D2C(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF2BC0(this, globalCtx);
+}
+
+void func_80AF2D6C(EnRu2* this, GlobalContext* globalCtx) {
+ UNK_TYPE something;
+
+ func_80AF2744(this, globalCtx);
+ something = EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF2C54(this, something);
+}
+
+void func_80AF2DAC(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF2C68(this, globalCtx);
+}
+
+void func_80AF2DEC(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+}
+
+void func_80AF2E1C(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF28E8(this, &D_060004CC, 2, 0.0f, 0);
+ this->action = 7;
+ this->actor.shape.unk_14 = 0;
+}
+
+void func_80AF2E64() {
+ func_800788CC(NA_SE_SY_WHITE_OUT_T);
+}
+
+void func_80AF2E84(EnRu2* this, GlobalContext* globalCtx) {
+ Actor_SpawnAttached(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DEMO_6K, this->actor.posRot.pos.x,
+ kREG(19) + 24.0f + this->actor.posRot.pos.y, this->actor.posRot.pos.z, 0, 0, 0, 8);
+}
+
+void func_80AF2F04(EnRu2* this, GlobalContext* globalCtx) {
+ if (func_80AF27D0(this, globalCtx, 4, 3)) {
+ this->action = 8;
+ this->drawConfig = 2;
+ this->unk_2B4 = 0;
+ this->actor.shape.unk_14 = 0;
+ this->unk_2B0 = 0.0f;
+ func_80AF2E64();
+ }
+}
+
+void func_80AF2F58(EnRu2* this, GlobalContext* globalCtx) {
+ f32* unk_2B0 = &this->unk_2B0;
+ s32 something;
+
+ if (func_80AF27D0(this, globalCtx, 4, 3)) {
+ *unk_2B0 += 1.0f;
+ if (*unk_2B0 >= kREG(5) + 10.0f) {
+ this->action = 9;
+ this->drawConfig = 1;
+ *unk_2B0 = kREG(5) + 10.0f;
+ this->unk_2B4 = 0xFF;
+ this->actor.shape.unk_14 = 0xFF;
+ return;
+ }
+ } else {
+ *unk_2B0 -= 1.0f;
+ if (*unk_2B0 <= 0.0f) {
+ this->action = 7;
+ this->drawConfig = 0;
+ *unk_2B0 = 0.0f;
+ this->unk_2B4 = 0;
+ this->actor.shape.unk_14 = 0;
+ return;
+ }
+ }
+ something = (*unk_2B0 / (kREG(5) + 10.0f)) * 255.0f;
+ this->unk_2B4 = something;
+ this->actor.shape.unk_14 = something;
+}
+
+void func_80AF30AC(EnRu2* this, GlobalContext* globalCtx) {
+ if (func_80AF281C(this, globalCtx, 4, 3)) {
+ this->action = 8;
+ this->drawConfig = 2;
+ this->unk_2B0 = kREG(5) + 10.0f;
+ this->unk_2B4 = 0xFF;
+ if (this->unk_2B8 == 0) {
+ func_80AF2E84(this, globalCtx);
+ this->unk_2B8 = 1;
+ }
+ this->actor.shape.unk_14 = 0xFF;
+ }
+}
+
+void func_80AF3144(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2F04(this, globalCtx);
+ func_80AF26D0(this, globalCtx);
+}
+
+void func_80AF3174(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF2F58(this, globalCtx);
+ func_80AF26D0(this, globalCtx);
+}
+
+void func_80AF31C8(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF30AC(this, globalCtx);
+ func_80AF26D0(this, globalCtx);
+}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF321C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3394.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF33E0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF346C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF34A4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF34F0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3530.s")
+/*void func_80AF321C(EnRu2* this, GlobalContext* globalCtx) {
+ s32 pad[3];
+ u32 addr = D_80AF410C[this->unk_2A4];
+ SkelAnime* skelAnime = &this->skelAnime;
+ GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
+ Gfx* gfxArr[4];
+
+ func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2_inKenjyanomaDemo02.c", 264);
+ func_80093D84(globalCtx->state.gfxCtx);
+
+ gSPSegment(gfxCtx->polyXlu.p++, 0x08, SEGMENTED_TO_VIRTUAL(addr));
+ gSPSegment(gfxCtx->polyXlu.p++, 0x09, SEGMENTED_TO_VIRTUAL(addr));
+ gDPSetEnvColor(gfxCtx->polyXlu.p++, 0x00, 0x00, 0x00, this->unk_2B4);
+ gSPSegment(gfxCtx->polyXlu.p++, 0x0C, &D_80116280);
+
+ gfxCtx->polyXlu.p = func_800A273C(globalCtx, skelAnime->limbIndex, skelAnime->actorDrawTbl, skelAnime->dListCount,
+ 0, 0, 0, gfxCtx->polyXlu.p);
+
+ func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2_inKenjyanomaDemo02.c", 291);
+}*/
+
+void func_80AF3394(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF28E8(this, &D_0600E630, 0, 0.0f, 0);
+ this->action = 10;
+ this->drawConfig = 0;
+ this->actor.shape.unk_14 = 0;
+}
+
+void func_80AF33E0(EnRu2* this) {
+ f32* unk_2B0 = &this->unk_2B0;
+ f32 temp_f0;
+ s32 temp_f18;
+
+ *unk_2B0 += 1.0f;
+
+ temp_f0 = kREG(17) + 10.0f;
+ if (temp_f0 <= *unk_2B0) {
+ this->unk_2B4 = 0xFF;
+ this->actor.shape.unk_14 = 0xFF;
+ }
+ else {
+ temp_f18 = (*unk_2B0/ temp_f0) * 255.0f;
+ this->unk_2B4 = temp_f18;
+ this->actor.shape.unk_14 = temp_f18;
+ }
+}
+
+void func_80AF346C(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2868(this, globalCtx, 3);
+ this->action = 11;
+ this->drawConfig = 2;
+}
+
+void func_80AF34A4(EnRu2* this) {
+ if (kREG(17) + 10.0f <= this->unk_2B0) {
+ this->action = 12;
+ this->drawConfig = 1;
+ }
+}
+
+void func_80AF34F0(EnRu2* this) {
+ func_80AF28E8(this, &D_0600DCAC, 2, 0.0f, 0);
+ this->action = 13;
+}
+
+void func_80AF3530(EnRu2* this, UNK_TYPE arg1) {
+ if (arg1 != 0) {
+ func_80AF28E8(this, &D_0600F03C, 0, 0.0f, 0);
+ }
+}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3564.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3604.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3624.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF366C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF36AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF36EC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3718.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3744.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF37AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF37CC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF383C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3878.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF38D0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF390C.s")
+/*void func_80AF3564(EnRu2* this, GlobalContext* globalCtx) {
+ CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, 3);
+ s32 action;
+
+ if (csCmdActorAction != NULL) {
+ action = csCmdActorAction->action;
+ if (action != this->unk_2BC) {
+ switch (action) {
+ case 7:
+ func_80AF346C(this, globalCtx);
+ break;
+ case 8:
+ func_80AF34F0(this);
+ break;
+ default:
+ osSyncPrintf("En_Ru2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ break;
+ }
+ this->unk_2BC = action;
+ }
+ }
+}*/
+
+void func_80AF3604(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF3564(this, globalCtx);
+}
+
+void func_80AF3624(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF33E0(this);
+ func_80AF34A4(this);
+}
+
+void func_80AF366C(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF3564(this, globalCtx);
+}
+
+void func_80AF36AC(EnRu2* this, GlobalContext* globalCtx) {
+ UNK_TYPE something;
+
+ func_80AF2744(this, globalCtx);
+ something = EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ func_80AF3530(this, something);
+}
+
+void func_80AF36EC(EnRu2* this, GlobalContext* globalCtx) {
+ Flags_SetSwitch(globalCtx, func_80AF2690(this));
+}
+
+s32 func_80AF3718(EnRu2* this, GlobalContext* globalCtx) {
+ return Flags_GetSwitch(globalCtx, func_80AF2690(this));
+}
+
+void func_80AF3744(EnRu2* this, GlobalContext* globalCtx) {
+ if (func_80AF3718(this, globalCtx)) {
+ Actor_Kill(&this->actor);
+ return;
+ }
+ func_80AF28E8(this, &D_06000DE8, 0, 0.0f, 0);
+ this->action = 14;
+ this->drawConfig = 1;
+}
+
+void func_80AF37AC() {
+ func_800F5C64(0x51);
+}
+
+void func_80AF37CC(EnRu2* this) {
+ f32 funcFloat;
+ this->unk_2C0 += 1;
+ funcFloat = func_8006F9BC((kREG(2) + 0x96) & 0xFFFF, 0, this->unk_2C0, 8, 0);
+ this->actor.posRot.pos.y = this->actor.initPosRot.pos.y + (300.0f * funcFloat);
+}
+
+s32 func_80AF383C(EnRu2* this, GlobalContext* globalCtx) {
+ Player* player = PLAYER;
+ f32 thisPosX = this->actor.posRot.pos.x;
+ f32 playerPosX = player->actor.posRot.pos.x;
+ if (playerPosX - thisPosX >= -202.0f) {
+ return 1;
+ }
+ return 0;
+}
+
+void func_80AF3878(EnRu2* this, GlobalContext* globalCtx) {
+ if (func_80AF383C(this, globalCtx) && !func_800BFC84(globalCtx)) {
+ this->action = 16;
+ func_800800F8(globalCtx, 0xC3A, -0x63, &this->actor, 0);
+ }
+}
+
+void func_80AF38D0(EnRu2* this, GlobalContext* globalCtx) {
+ this->action = 16;
+ func_800800F8(globalCtx, 0xC3A, -0x63, &this->actor, 0);
+}
+
+
+void func_80AF390C(EnRu2* this, GlobalContext* globalCtx) {
+ f32* unk_2C4 = &this->unk_2C4;
+ *unk_2C4 += 1.0f;
+ if (*unk_2C4 == kREG(6) + 40.0f) {
+ func_80AF37AC();
+ return;
+ }
+
+ if (*unk_2C4 > kREG(4) + 50.0f) {
+ this->actor.textId = 0x403E;
+ func_8010B680(globalCtx, this->actor.textId, 0);
+ this->action = 17;
+ }
+}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF39DC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3ADC.s")
+/*void func_80AF39DC(EnRu2* this, GlobalContext* globalCtx) {
+ s32 pad;
+ MessageContext* msgCtx;
+ u8* unk_2C2;
+ u8 dialogState;
+ Player* player;
+ s32 pad2;
+
+ msgCtx = &globalCtx->msgCtx;
+ dialogState = func_8010BDBC(msgCtx);
+
+ if (dialogState == 3) {
+ if (this->unk_2C3 != 3) {
+ osSyncPrintf("おれが小松だ! \n");
+ unk_2C2 = &this->unk_2C2;
+ *unk_2C2 += 1;
+ *unk_2C2 = *unk_2C2 % 6;
+
+ if (*unk_2C2 == 3) {
+ player = PLAYER;
+ osSyncPrintf("うおりゃー! \n");
+ func_8005B1A4(globalCtx->cameraCtx.activeCameraPtrs[0]);
+ player->actor.posRot.pos.x = 820.0f;
+ player->actor.posRot.pos.y = 0.0f;
+ player->actor.posRot.pos.z = 180.0f;
+ }
+ }
+ }
+
+ this->unk_2C3 = dialogState;
+ if (func_8010BDBC(msgCtx) == 2) {
+ this->action = 18;
+ func_8005B1A4(globalCtx->cameraCtx.activeCameraPtrs[0]);
+ }
+}*/
+
+void func_80AF3ADC(EnRu2* this, GlobalContext* globalCtx) {
+ this->unk_2C4 += 1.0f;
+ if (this->unk_2C4 > kREG(5) + 100.0f) {
+ func_80AF28E8(this, &D_0600F8B8, 0, -12.0f, 0);
+ this->action = 0x13;
+ func_80AF36EC(this, globalCtx);
+ }
+}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3B74.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3BC8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3C04.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3C64.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3CB8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3D0C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3D60.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Update.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Init.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3F14.s")
+/*void func_80AF3B74(EnRu2* this, GlobalContext* globalCtx) {
+ u16 temp = (((u16)(kREG(3) + 0x28)) + ((u16)(kREG(2) + 0x96))) & 0xFFFFFFFFFFFFFFFF;
+
+ if (this->unk_2C0 > temp) {
+ Actor_Kill(&this->actor);
+ }
+}*/
+
+void func_80AF3BC8(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF3878(this, globalCtx);
+ Actor_SetHeight(&this->actor, 50.0f);
+ func_80AF259C(this, globalCtx);
+}
+
+void func_80AF3C04(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ func_80AF259C(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ Actor_SetHeight(&this->actor, 50.0f);
+ func_80AF38D0(this, globalCtx);
+}
+
+void func_80AF3C64(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ Actor_SetHeight(&this->actor, 50.0f);
+ func_80AF390C(this, globalCtx);
+}
+
+void func_80AF3CB8(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ Actor_SetHeight(&this->actor, 50.0f);
+ func_80AF39DC(this, globalCtx);
+}
+
+void func_80AF3D0C(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ Actor_SetHeight(&this->actor, 50.0f);
+ func_80AF3ADC(this, globalCtx);
+}
+
+void func_80AF3D60(EnRu2* this, GlobalContext* globalCtx) {
+ func_80AF37CC(this);
+ func_80AF2744(this, globalCtx);
+ EnRu2_FrameUpdateMatrix(this);
+ func_80AF2608(this);
+ Actor_SetHeight(&this->actor, 50.0f);
+ func_80AF3B74(this, globalCtx);
+}
+
+void EnRu2_Update(EnRu2* this, GlobalContext* globalCtx) {
+ if (this->action < 0 || this->action >= 20 || D_80AF50BC[this->action] == 0) {
+ osSyncPrintf("メインモードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+ return;
+ }
+ D_80AF50BC[this->action](this, globalCtx);
+}
+
+void EnRu2_Init(EnRu2* this, GlobalContext* globalCtx) {
+ ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, 30.0f);
+ func_80AF2550(this, globalCtx);
+ func_800A46F8(globalCtx, &this->skelAnime, &D_0600C700, 0, &this->unk_190, &this->unk_21A, 0x17);
+
+ switch (func_80AF26A0(this)) {
+ case 2:
+ func_80AF2E1C(this, globalCtx);
+ break;
+ case 3:
+ func_80AF3394(this, globalCtx);
+ break;
+ case 4:
+ func_80AF3744(this, globalCtx);
+ break;
+ default:
+ func_80AF2994(this, globalCtx);
+ break;
+ }
+
+ this->unk_2C2 = 0;
+ this->unk_2C3 = 3;
+}
+
+void func_80AF3F14(EnRu2* this, GlobalContext* globalCtx) {
+
+}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3F20.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Draw.s")
+/*void func_80AF3F20(EnRu2* this, GlobalContext* globalCtx) {
+ s32 pad[3];
+ u32 something = D_80AF410C[this->unk_2A4];
+ SkelAnime* skelAnime = &this->skelAnime;
+ GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
+ Gfx* gfxArr[4];
+
+ func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2.c", 642);
+ func_80093D18(globalCtx->state.gfxCtx);
+
+ gSPSegment(gfxCtx->polyOpa.p++, 0x08, SEGMENTED_TO_VIRTUAL(something));
+ gSPSegment(gfxCtx->polyOpa.p++, 0x09, SEGMENTED_TO_VIRTUAL(something));
+ gDPSetEnvColor(gfxCtx->polyOpa.p++, 0x00, 0x00, 0x00, 0xFF);
+ gSPSegment(gfxCtx->polyOpa.p++, 0x0C, &D_80116290);
+
+ func_800A1AC8(globalCtx, skelAnime->limbIndex, skelAnime->actorDrawTbl, skelAnime->dListCount,
+ NULL, NULL, &this->actor);
+ func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2.c", 663);
+}*/
+
+void EnRu2_Draw(EnRu2* this, GlobalContext* globalCtx) {
+if (this->drawConfig < 0 || this->drawConfig >= 3 || D_80AF510C[this->drawConfig] == 0)
+ {
+ osSyncPrintf("描画モードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+ return;
+ }
+ D_80AF510C[this->drawConfig](this, globalCtx);
+}
diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h
index 89e41d7c7..b8e47a90e 100644
--- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h
+++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h
@@ -19,10 +19,9 @@ typedef struct
/* 0x02B0 */ f32 unk_2B0;
/* 0x02B4 */ u32 unk_2B4;
/* 0x02B8 */ s32 unk_2B8;
- /* 0x02BC */ s16 unk_2BC;
- /* 0x02BE */ char unk_2BE[0x2];
+ /* 0x02BC */ s32 unk_2BC;
/* 0x02C0 */ u16 unk_2C0;
- /* 0x02C2 */ u8 unk_2C2;
+ /* 0x02C2 */ s8 unk_2C2;
/* 0x02C3 */ u8 unk_2C3;
/* 0x02C4 */ f32 unk_2C4;
/* 0x02C8 */ ColliderCylinderMain collider;