En_Niw (Cucco) (#191)

* EnNiw: Rebase of WIP to work on collsion

init almost matches

EnNiw: WIP

EnNiw: running low, and too many not-matches for my liking

EnNiw: WIP 3

* EnNiw: update to master

* EnNiw: fix late rodata

* wtf is going on

* EnNiw: update is a thing, glad I'm doing it last

* EnNiw: likely branch mysery

* EnNiw: a horrible little draw function

* EnNiw: nope, feather draw still fucked

* EnNiw: fixing merge issues with master

* EnNiw: update is no longer non-matching

* EnNiw: cleaning/docs

* EnNiw: cleaning/docs 3

* EnNiw: more docs 4

* EnNiw: OKs again now that data was removed

* EnNiw: Docs and cleaning 5

* EnNiw: Docs and cleaning 6

* EnNiw: Docs/cleaning and changed a function and that changed a bunch ugh

* EnNiw: format and make check

* EnNiw: data re-merged, and matches

* EnNiw: forgot about these

* EnNiw: another attempt at feather draw, still not even close

* Multiple: now that we know the last paramter is a flag, change all to hex

* Player: fix wrong padding

* EnNiw

parameter name consistency

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

REG

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.h

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.h

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Niw/z_en_niw.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* EnNiw: Likely suggestions first

easy suggestions first, then I'll attempt the stuff I'm not sure will match

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* EnNiw: compiling again

* EnNiw: more suggestions added

* EnNiw: last of minor changes

* EnNiw: shorten overly long float

* EnNiw: feather counts as define

* EnNiw: add c file description

* EnNiw: Some Suggested Changes

Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>

* EnNiw: more suggestions

* EnNiw: More suggestions

Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>

* EnNiw: moved OPEN_DISPS to contentional location, still not close

* BgIcicle/EnSb: renamed func_800B78B8 to Actor_UpdateBgCheckInfo

Co-authored-by: isghj8 <isghj8@gmail.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>
This commit is contained in:
Isghj
2021-07-01 22:20:34 -04:00
committed by GitHub
co-authored by isghj8 engineer124 Anghelo Carvajal
parent 0f1027fae1
commit abef65a6db
31 changed files with 1172 additions and 85 deletions
+4 -4
View File
@@ -799,7 +799,7 @@ s32 Actor_IsActorFacingActorAndWithinRange(Actor* actor, Actor* other, f32 range
void func_800B75A0(CollisionPoly* param_1, Vec3f* param_2, s16* param_3);
// UNK_TYPE4 func_800B761C(Actor* param_1, UNK_TYPE4 param_2, u32 param_3);
// UNK_TYPE4 func_800B7678(GlobalContext* globalCtx, Actor* param_2, s32 param_3, u32 param_4);
void func_800B78B8(GlobalContext* globalCtx, Actor* actor, f32 uParm3, f32 uParm4, f32 param_5, u32 param_6);
void Actor_UpdateBgCheckInfo(GlobalContext* globalCtx, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, f32 ceilingCheckHeight, u32 flags);
// void func_800B7E04(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
s32 func_800B7FE0(f32* param_1, f32* param_2, f32* param_3, GraphicsContext* gfxCtx);
// void func_800B8018(void);
@@ -829,16 +829,16 @@ s32 func_800B8934(GlobalContext* globalCtx, Actor* actor);
u32 Actor_HasParent(Actor* actor, GlobalContext* globalCtx);
UNK_TYPE4 func_800B8A1C(Actor* actor, GlobalContext* globalCtx, s32 iParm3, f32 fParm4, f32 param_5);
// void func_800B8B84(void);
// void func_800B8BB0(void);
void func_800B8BB0(Actor* actor, GlobalContext* globalCtx);
// void func_800B8BD0(void);
s32 func_800B8BFC(Actor* actor, GlobalContext* globalCtx);
s32 Actor_HasNoParent(Actor* actor, GlobalContext* globalCtx);
// void func_800B8C20(void);
void func_800B8C50(Actor* actor, GlobalContext* globalCtx);
// void func_800B8C78(void);
// void func_800B8C9C(void);
// void func_800B8CEC(void);
// void func_800B8D10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_800B8D50(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
void func_800B8D50(GlobalContext* globalCtx, Actor* actor, f32 param_3, s16 param_4, f32 param_5, u32 param_6);
void func_800B8D98(GlobalContext* globalCtx, Actor* actor, f32 param_3, s16 param_4, f32 param_5);
// void func_800B8DD4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_800B8E1C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
+3 -1
View File
@@ -273,7 +273,9 @@ typedef struct {
/* 0xBEC */ Vec3f bodyPartsPos[18];
/* 0xCC4 */ MtxF mf_CC4;
/* 0xD04 */ MtxF unkD04;
/* 0xD44 */ UNK_TYPE1 padD44[0x34];
/* 0xD44 */ UNK_TYPE1 padD44[0x18];
/* 0xD5C */ s8 invincibilityTimer;
/* 0xD5D */ UNK_TYPE1 padD5D[0x1B];
} ActorPlayer; // size = 0xD78
typedef enum {
+7 -1
View File
@@ -1041,9 +1041,15 @@ SECTIONS
ovl_En_Niw : AT(RomLocation)
{
build/src/overlays/actors/ovl_En_Niw/z_en_niw.o(.text)
build/asm/overlays/ovl_En_Niw_data.o(.data)
build/src/overlays/actors/ovl_En_Niw/z_en_niw.o(.data)
#ifdef NON_EQUIVALENT
build/src/overlays/actors/ovl_En_Niw_rodata_overlay.o(.ovl)
#elseif NON_MATCHING
build/src/overlays/actors/ovl_En_Niw_rodata_overlay.o(.ovl)
#else
build/src/overlays/actors/ovl_En_Niw/z_en_niw.o(.rodata)
build/asm/overlays/ovl_En_Niw_rodata.o(.rodata)
#endif
}
SegmentEnd = .;
SegmentSize = SegmentEnd - SegmentStart;
+4
View File
@@ -208,6 +208,10 @@ D_06007750 = 0x06007750;
D_0600A390 = 0x0600A390;
D_0600A490 = 0x0600A490;
/* en_niw */
D_06002530 = 0x06002530;
D_060000E8 = 0x060000E8;
/* dm_char07 */
D_06000100 = 0x06000100;
D_06000240 = 0x06000240;
+12 -6
View File
@@ -242,8 +242,8 @@ void Actor_TitleCardContextInit(GlobalContext* globalCtx, TitleCardContext* titl
titleCardCtx->alpha = 0;
}
void Actor_TitleCardCreate(GlobalContext* globalCtx, TitleCardContext* titleCardCtx, u32 texture, s16 param_4, s16 param_5,
u8 param_6, u8 param_7) {
void Actor_TitleCardCreate(GlobalContext* globalCtx, TitleCardContext* titleCardCtx, u32 texture, s16 param_4,
s16 param_5, u8 param_6, u8 param_7) {
titleCardCtx->texture = texture;
titleCardCtx->unk4 = param_4;
titleCardCtx->unk6 = param_5;
@@ -568,7 +568,7 @@ s32 Actor_IsActorFacingActorAndWithinRange(Actor* actor, Actor* other, f32 range
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B7678.asm")
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B78B8.asm")
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//Actor_UpdateBgCheckInfo.asm")
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B7E04.asm")
@@ -624,9 +624,9 @@ s32 Actor_IsActorFacingActorAndWithinRange(Actor* actor, Actor* other, f32 range
u32 Actor_HasParent(Actor* actor, GlobalContext* globalCtx) {
if (actor->parent != NULL) {
return 1;
return true;
} else {
return 0;
return false;
}
}
@@ -638,7 +638,13 @@ u32 Actor_HasParent(Actor* actor, GlobalContext* globalCtx) {
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B8BD0.asm")
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B8BFC.asm")
s32 Actor_HasNoParent(Actor* actor, GlobalContext* globalCtx) {
if (!actor->parent) {
return true;
} else {
return false;
}
}
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B8C20.asm")
+1 -1
View File
@@ -461,7 +461,7 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
if (this->actor.gravity != 0.0f) {
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 15.0f, 15.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 15.0f, 15.0f, 0x1D);
if (this->actor.floorHeight <= -32000.0f) {
Actor_MarkForDeath(&this->actor);
@@ -186,7 +186,7 @@ void BgIcicle_Fall(BgIcicle* this, GlobalContext* globalCtx) {
} else {
Actor_SetVelocityAndMoveYRotationAndGravity(&this->dyna.actor);
this->dyna.actor.world.pos.y += 40.0f;
func_800B78B8(globalCtx, &this->dyna.actor, 0.0f, 0.0f, 0.0f, 4);
Actor_UpdateBgCheckInfo(globalCtx, &this->dyna.actor, 0.0f, 0.0f, 0.0f, 4);
this->dyna.actor.world.pos.y -= 40.0f;
CollisionCheck_SetAT(globalCtx, &globalCtx->colCheckCtx, &this->collider.base);
}
+1 -1
View File
@@ -90,7 +90,7 @@ void DmNb_Update(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
func_800B78B8(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 0x4);
}
void DmNb_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* actor) {
@@ -72,7 +72,7 @@ void EnEndingHero_Update(Actor* thisx, GlobalContext* globalCtx) {
}
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
static UNK_PTR D_80C1E970[] = { D_06007350, D_06009590, D_06009F90, D_0600A790, D_0600AB90 };
@@ -57,7 +57,7 @@ void EnEndingHero2_Update(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
void EnEndingHero2_Draw(Actor* thisx, GlobalContext* globalCtx) {
@@ -57,7 +57,7 @@ void EnEndingHero3_Update(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
void EnEndingHero3_Draw(Actor* thisx, GlobalContext* globalCtx) {
@@ -57,7 +57,7 @@ void EnEndingHero4_Update(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
void EnEndingHero4_Draw(Actor* thisx, GlobalContext* globalCtx) {
@@ -64,7 +64,7 @@ void EnEndingHero5_Update(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
Gfx* D_80C23BF0[] = { D_060070C0, D_06006FB0, D_06006E80, D_06006D70, D_0600A390 };
+1 -1
View File
@@ -329,7 +329,7 @@ void EnFg_Update(Actor* thisx, GlobalContext* globalCtx) {
if (1) {}
if (!flagSet) {
this->actionFunc(this, globalCtx);
func_800B78B8(globalCtx, &this->actor, BASE_REG(16, 0), BASE_REG(16, 1), 0.0f, 5);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, BASE_REG(16, 0), BASE_REG(16, 1), 0.0f, 0x5);
}
}
@@ -430,7 +430,8 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx)
func_800BDC5C(&this->skelAnime, animations, GINKO_FLOORSMACKING);
func_801518B0(globalCtx, 0x476, &this->actor);
this->curTextId = 0x476; // you dont have enough deposited to withdrawl
} else if (D_801C1E2C[CUR_UPG_VALUE(UPG_WALLET)] < (globalCtx->msgCtx.bankRupeesSelected + gSaveContext.rupees)) {
} else if (D_801C1E2C[CUR_UPG_VALUE(UPG_WALLET)] <
(globalCtx->msgCtx.bankRupeesSelected + gSaveContext.rupees)) {
// check if wallet is big enough
play_sound(NA_SE_SY_ERROR);
func_801518B0(globalCtx, 0x475, &this->actor);
+1 -1
View File
@@ -1479,7 +1479,7 @@ void EnIn_Update(Actor* thisx, GlobalContext* globalCtx) {
this->unk4AC &= ~0x40;
}
this->actionFunc(this, globalCtx);
func_800B78B8(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 0x4);
func_808F3414(this, globalCtx);
func_808F32A0(this, globalCtx);
}
@@ -257,7 +257,7 @@ void EnMaYts_Init(Actor* thisx, GlobalContext* globalCtx) {
this->collider.dim.radius = 40;
}
func_800B78B8(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 0x4);
Actor_SetScale(&this->actor, 0.01f);
this->unk_1D8.unk_00 = 0;
@@ -591,7 +591,7 @@ void EnMinifrog_Update(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 25.0f, 12.0f, 0.0f, 0x1D);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 25.0f, 12.0f, 0.0f, 0x1D);
Collider_UpdateCylinder(&this->actor, &this->collider);
CollisionCheck_SetOC(globalCtx, &globalCtx->colCheckCtx, &this->collider.base);
this->actor.focus.rot.y = this->actor.shape.rot.y;
File diff suppressed because it is too large Load Diff
+84 -2
View File
@@ -5,11 +5,93 @@
struct EnNiw;
typedef void (*EnNiwActionFunc)(struct EnNiw*, GlobalContext*);
typedef struct {
/* 0x0000 */ u8 isEnabled;
/* 0x0004 */ Vec3f pos;
/* 0x0010 */ Vec3f vel;
/* 0x001C */ Vec3f accel;
/* 0x0028 */ s16 life;
/* 0x002A */ s16 zRotStart;
/* 0x002C */ f32 scale;
/* 0x0030 */ f32 zRot;
/* 0x0034 */ u8 timer;
} EnNiwFeather; // size = 0x38
#define ENNIW_LIMBCOUNT 16
#define ENNIW_FEATHERCOUNT 20
typedef struct EnNiw {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x678];
/* 0x144 */ SkelAnime skelanime;
/* 0x188 */ Vec3s limbDrawTbl[ENNIW_LIMBCOUNT];
/* 0x1E8 */ Vec3s transitionDrawtable[ENNIW_LIMBCOUNT];
/* 0x248 */ EnNiwActionFunc actionFunc;
/* 0x24C */ s16 unkTimer24C;
/* 0x24E */ s16 unkTimer24E;
/* 0x250 */ s16 unkTimer250;
/* 0x252 */ s16 unkTimer252;
/* 0x254 */ s16 unkTimer254;
/* 0x256 */ s16 sfxTimer1;
/* 0x258 */ s16 flutterSfxTimer;
/* 0x25A */ s16 unusedTimer25A;
/* 0x25C */ s16 yawTimer; // every 70 frames rechecks yawToPlayer
/* 0x25E */ s16 unusedTimer25E;
/* 0x260 */ s16 unkTimer260;
/* 0x264 */ f32 unk264[10];
/* 0x28C */ s16 unusedCounter28C;
/* 0x28E */ s16 unknownState28E;
/* 0x290 */ s16 unk290;
/* 0x292 */ s16 unk292;
/* 0x294 */ s16 pad294;
/* 0x296 */ s16 unk296;
/* 0x298 */ s16 unk298;
/* 0x29C */ s16 unk29A;
/* 0x29C */ u16 unk29C;
/* 0x29E */ s16 unk29E;
/* 0x2A0 */ s16 isStormActive;
/* 0x2A2 */ s16 niwType;
/* 0x2A4 */ Vec3f unk2A4;
/* 0x2B0 */ Vec3f unk2B0;
/* 0x2BC */ Vec3f unk2BC;
/* 0x2C8 */ f32 limb7Rotz;
/* 0x2CC */ f32 limb7Roty;
/* 0x2D0 */ f32 limb7Rotx;
/* 0x2D4 */ f32 limbBRotz;
/* 0x2D8 */ f32 limbBRoty;
/* 0x2DC */ f32 limbBRotx;
/* 0x2E0 */ f32 limbDRot;
/* 0x2E4 */ f32 limbFRot;
/* 0x2E8 */ s16 yawTowardsPlayer;
/* 0x2EA */ s16 unk2EA;
/* 0x2EC */ s16 unk2EC;
/* 0x2EE */ UNK_TYPE1 pad2EE[0x6];
/* 0x2F4 */ f32 unusedFloat2F4;
/* 0x2F8 */ f32 unusedFloat2F8;
/* 0x2FC */ f32 unusedFloat2FC;
/* 0x300 */ f32 unk300;
/* 0x304 */ f32 unk304;
/* 0x308 */ f32 unk308;
/* 0x30C */ s32 pad30C;
/* 0x310 */ ColliderCylinder collider;
/* 0x35C */ EnNiwFeather feathers[ENNIW_FEATHERCOUNT];
} EnNiw; // size = 0x7BC
extern const ActorInit En_Niw_InitVars;
// in init, any value below zero becomes zero
// however, in vanilla, only 0xFFFF (-1) exists
#define ENNIW_TYPE_VANILLA 0xFFFF
#define ENNIW_TYPE_REGULAR 0
#define ENNIW_TYPE_UNK1 1
#define ENNIW_TYPE_UNK2 2
// the attacking cuccos are not here, they are a different actor:
// ovl_En_Attack_Niw
extern FlexSkeletonHeader D_06002530;
extern AnimationHeader D_060000E8;
// feather display list?
extern Gfx D_060023B0[];
extern Gfx D_06002428[];
#endif // Z_EN_NIW_H

Some files were not shown because too many files have changed in this diff Show More