From 927ccae9ea6eaaf67ccaf66a1df66355656140ae Mon Sep 17 00:00:00 2001 From: tom-overton Date: Sun, 31 Oct 2021 20:04:51 -0700 Subject: [PATCH] ObjTokeidai_Init OK --- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c | 74 ++++++++++++++++++- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h | 9 ++- 2 files changed, 80 insertions(+), 3 deletions(-) diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c index fd417c8379..a6e709115f 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c @@ -36,6 +36,7 @@ void func_80AB3ED0(ObjTokeidai* this, GlobalContext* globalCtx); void func_80AB4040(ObjTokeidai* this, GlobalContext* globalCtx); void func_80AB4080(ObjTokeidai* this, GlobalContext* globalCtx); void func_80AB4160(ObjTokeidai* this, GlobalContext* globalCtx); +void func_80AB4394(Actor* thisx, GlobalContext* globalCtx); const ActorInit Obj_Tokeidai_InitVars = { ACTOR_OBJ_TOKEIDAI, @@ -49,12 +50,21 @@ const ActorInit Obj_Tokeidai_InitVars = { (ActorFunc)ObjTokeidai_Draw, }; -static s32 D_80AB49E0[] = { 0xC8580064, 0xB0FC0FA0, 0xB1000CE4, 0x30FC044C }; +// static InitChainEntry sInitChain +static InitChainEntry D_80AB49E0[] = { + ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneScale, 3300, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneForward, 1100, ICHAIN_STOP), +}; +extern UNK_TYPE D_06009A08; extern UNK_TYPE D_0600B208; extern UNK_TYPE D_0600BA78; extern UNK_TYPE D_0600CF28; extern UNK_TYPE D_0600D388; +extern UNK_TYPE D_0600D8E0; +extern UNK_TYPE D_0600D8E8; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokeidai/func_80AB2790.s") @@ -68,7 +78,67 @@ extern UNK_TYPE D_0600D388; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokeidai/func_80AB2BBC.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokeidai/ObjTokeidai_Init.s") +void ObjTokeidai_Init(Actor* thisx, GlobalContext* globalCtx) { + ObjTokeidai* this = THIS; + + Actor_ProcessInitChain(&this->actor, D_80AB49E0); + this->actionFunc = func_80AB3BD8; + this->unk_144 = NULL; + this->unk_148 = NULL; + this->unk_160 = 0; + this->unk_15E = 0; + this->unk_162 = 0; + this->unk_170 = gSaveContext.time; + this->actor.home.rot.x = 0; + switch ((this->actor.params & 0xF000) >> 0xC) { + case 4: + Actor_SetScale(&this->actor, 0.15f); + func_80AB28C8(this, globalCtx); + break; + case 0: + func_80AB28C8(this, globalCtx); + break; + case 1: + this->unk_144 = &D_0600D388; + break; + case 8: + Actor_SetScale(&this->actor, 1.0f); + this->unk_144 = &D_06009A08; + this->actionFunc = func_80AB365C; + break; + case 5: + Actor_SetScale(&this->actor, 0.15f); + func_80AB29F8(this, globalCtx); + break; + case 2: + func_80AB29F8(this, globalCtx); + break; + case 9: + Actor_SetScale(&this->actor, 0.02f); + this->actor.draw = func_80AB4394; + func_80AB2834(this); + this->actionFunc = func_80AB4040; + break; + case 10: + Actor_SetScale(&this->actor, 0.01f); + this->actor.draw = func_80AB4394; + func_80AB2834(this); + this->actionFunc = func_80AB4040; + break; + case 6: + Actor_SetScale(&this->actor, 0.15f); + func_80AB2BBC(this, globalCtx); + break; + case 3: + func_80AB2BBC(this, globalCtx); + break; + case 11: + this->unk_144 = &D_0600D8E8; + this->unk_148 = &D_0600D8E0; + this->actionFunc = func_80AB3BE8; + break; + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokeidai/ObjTokeidai_Destroy.s") diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h index f550606f05..e8d9979e60 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h @@ -9,7 +9,14 @@ typedef void (*ObjTokeidaiActionFunc)(struct ObjTokeidai*, GlobalContext*); typedef struct ObjTokeidai { /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x30]; + /* 0x0144 */ void* unk_144; + /* 0x0148 */ void* unk_148; + /* 0x014C */ char unk_14C[0x12]; + /* 0x015E */ s16 unk_15E; + /* 0x0160 */ s16 unk_160; + /* 0x0162 */ s16 unk_162; + /* 0x0164 */ char unk_164[0xC]; + /* 0x0170 */ u16 unk_170; /* 0x0174 */ ObjTokeidaiActionFunc actionFunc; } ObjTokeidai; // size = 0x178