Merge branch 'ovl_Boss_Hakugin-goht' of https://github.com/Decompollaborate/mm into zret

This commit is contained in:
RevoSucks
2023-10-30 21:46:11 -04:00
10 changed files with 3182 additions and 300 deletions
+1 -1
View File
@@ -133,7 +133,7 @@ s32 SubS_CopyPointFromPathCheckBounds(Path* path, s32 pointIndex, Vec3f* dst);
s32 SubS_Offer(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 itemId, SubSOfferMode mode);
void SubS_FillShadowTex(s32 startCol, s32 startRow, u8* tex, s32 size);
void SubS_GenShadowTex(Vec3f bodyPartsPos[], Vec3f* worldPos, u8* tex, f32 tween, u8 bodyPartsNum, u8 sizes[], s8 parentBodyParts[]);
void SubS_GenShadowTex(Vec3f bodyPartsPos[], Vec3f* worldPos, u8* tex, f32 weight, u8 bodyPartsNum, u8 sizes[], s8 parentBodyParts[]);
void SubS_DrawShadowTex(Actor* actor, struct GameState* gameState, u8* tex);
s16 SubS_ComputeTrackPointRot(s16* rot, s16 rotMax, s16 target, f32 slowness, f32 stepMin, f32 stepMax);
+1 -2
View File
@@ -3503,8 +3503,7 @@ beginseg
name "ovl_Boss_Hakugin"
compress
include "build/src/overlays/actors/ovl_Boss_Hakugin/z_boss_hakugin.o"
include "build/data/ovl_Boss_Hakugin/ovl_Boss_Hakugin.data.o"
include "build/data/ovl_Boss_Hakugin/ovl_Boss_Hakugin.reloc.o"
include "build/src/overlays/actors/ovl_Boss_Hakugin/ovl_Boss_Hakugin_reloc.o"
endseg
beginseg
+4 -4
View File
@@ -963,7 +963,7 @@ void SubS_FillShadowTex(s32 startCol, s32 startRow, u8* tex, s32 size) {
}
}
void SubS_GenShadowTex(Vec3f bodyPartsPos[], Vec3f* worldPos, u8* tex, f32 tween, u8 bodyPartsNum, u8 sizes[],
void SubS_GenShadowTex(Vec3f bodyPartsPos[], Vec3f* worldPos, u8* tex, f32 weight, u8 bodyPartsNum, u8 sizes[],
s8 parentBodyParts[]) {
Vec3f pos;
Vec3f startVec;
@@ -978,9 +978,9 @@ void SubS_GenShadowTex(Vec3f bodyPartsPos[], Vec3f* worldPos, u8* tex, f32 tween
parentBodyPart = parentBodyParts[i];
bodyPartPos = &bodyPartsPos[i];
pos.x = (bodyPartsPos[parentBodyPart].x - bodyPartPos->x) * tween + (bodyPartPos->x - worldPos->x);
pos.y = (bodyPartsPos[parentBodyPart].y - bodyPartPos->y) * tween + (bodyPartPos->y - worldPos->y);
pos.z = (bodyPartsPos[parentBodyPart].z - bodyPartPos->z) * tween + (bodyPartPos->z - worldPos->z);
pos.x = (bodyPartsPos[parentBodyPart].x - bodyPartPos->x) * weight + (bodyPartPos->x - worldPos->x);
pos.y = (bodyPartsPos[parentBodyPart].y - bodyPartPos->y) * weight + (bodyPartPos->y - worldPos->y);
pos.z = (bodyPartsPos[parentBodyPart].z - bodyPartPos->z) * weight + (bodyPartPos->z - worldPos->z);
} else {
bodyPartPos = &bodyPartsPos[i];
File diff suppressed because it is too large Load Diff
@@ -2,9 +2,14 @@
#define Z_BOSS_HAKUGIN_H
#include "global.h"
#include "objects/object_boss_hakugin/object_boss_hakugin.h"
struct BossHakugin;
#define GOHT_SHADOW_TEX_WIDTH 64
#define GOHT_SHADOW_TEX_HEIGHT 64
#define GOHT_SHADOW_TEX_SIZE ((s32)sizeof(u8[GOHT_SHADOW_TEX_HEIGHT][GOHT_SHADOW_TEX_WIDTH]))
typedef void (*BossHakuginActionFunc)(struct BossHakugin*, PlayState*);
typedef struct BossHakuginEffect {
@@ -18,22 +23,104 @@ typedef struct BossHakuginEffect {
#define BOSS_HAKUGIN_EFFECT_COUNT 180
typedef struct BossHakuginUnkStruct_2618 {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ s16 unk_0C;
/* 0x0E */ Vec3s unk_0E;
/* 0x14 */ ColliderTris unk_14;
/* 0x34 */ ColliderTrisElement unk_34;
} BossHakuginUnkStruct_2618; // size = 0x90
typedef struct BossHakuginFhgFlashUnkStruct {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ char unk_0C[0x8];
/* 0x0C */ f32 unk_0C;
/* 0x10 */ s16 unk_10;
/* 0x12 */ s16 unk_12;
} BossHakuginFhgFlashUnkStruct; // size = 0x14
typedef enum GohtBodyPart {
/* 0 */ GOHT_BODYPART_PELVIS,
/* 1 */ GOHT_BODYPART_THORAX,
/* 2 */ GOHT_BODYPART_HEAD,
/* 3 */ GOHT_BODYPART_FRONT_RIGHT_UPPER_LEG,
/* 4 */ GOHT_BODYPART_FRONT_RIGHT_LOWER_LEG,
/* 5 */ GOHT_BODYPART_FRONT_RIGHT_HOOF,
/* 6 */ GOHT_BODYPART_FRONT_LEFT_UPPER_LEG,
/* 7 */ GOHT_BODYPART_FRONT_LEFT_LOWER_LEG,
/* 8 */ GOHT_BODYPART_FRONT_LEFT_HOOF,
/* 9 */ GOHT_BODYPART_BACK_RIGHT_THIGH,
/* 10 */ GOHT_BODYPART_BACK_RIGHT_SHIN,
/* 11 */ GOHT_BODYPART_BACK_RIGHT_HOOF,
/* 12 */ GOHT_BODYPART_BACK_LEFT_THIGH,
/* 13 */ GOHT_BODYPART_BACK_LEFT_SHIN,
/* 14 */ GOHT_BODYPART_BACK_LEFT_HOOF,
/* 15 */ GOHT_BODYPART_MAX
} GohtBodyPart;
typedef struct BossHakugin {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_0144[0x44];
/* 0x0144 */ SkelAnime skelAnime;
/* 0x0188 */ BossHakuginActionFunc actionFunc;
/* 0x018C */ char unk_018C[0x5];
/* 0x0191 */ u8 unk_191;
/* 0x018C */ char unk_0192[0x866];
/* 0x09F8 */ BossHakuginEffect unk_9F8[BOSS_HAKUGIN_EFFECT_COUNT];
/* 0x2618 */ char unk_2618[0x8E8];
/* 0x2F00 */ BossHakuginFhgFlashUnkStruct unk_2F00[7][15];
/* 0x3734 */ char unk_3734[0xDC];
/* 0x018C */ u8 unk_018C;
/* 0x018D */ u8 unk_018D;
/* 0x018E */ u8 unk_018E;
/* 0x018F */ u8 unk_018F;
/* 0x0190 */ u8 unk_0190; // boolean?
/* 0x0191 */ u8 unk_0191;
/* 0x0192 */ u8 unk_0192;
/* 0x0193 */ u8 unk_0193;
/* 0x0194 */ u8 unk_0194;
/* 0x0194 */ u8 unk_0195;
/* 0x0196 */ u8 unk_0196;
/* 0x0198 */ s16 unk_0198;
/* 0x019A */ s16 unk_019A;
/* 0x019C */ s16 unk_019C;
/* 0x019E */ s16 unk_019E;
/* 0x01A0 */ s16 unk_01A0;
/* 0x01A2 */ s16 unk_01A2;
/* 0x01A4 */ s16 unk_01A4;
/* 0x01A6 */ s16 unk_01A6;
/* 0x01A8 */ s16 unk_01A8; // Counter of some kind?
/* 0x01AA */ s16 unk_01AA;
/* 0x01AC */ s16 unk_01AC;
/* 0x01AE */ s16 unk_01AE;
/* 0x01B0 */ u32 unk_01B0;
/* 0x01B4 */ s32 unk_01B4;
/* 0x01B8 */ f32 unk_01B8;
/* 0x01BC */ f32 unk_01BC;
/* 0x01C0 */ f32 unk_01C0;
/* 0x01C4 */ f32 unk_01C4;
/* 0x01C8 */ f32 unk_01C8;
/* 0x01CC */ f32 unk_01CC;
/* 0x01D0 */ f32 unk_01D0;
/* 0x01D4 */ f32 unk_01D4;
/* 0x01D8 */ char unk_01D8[0x4]; // probably unused float
/* 0x01DC */ f32 unk_01DC;
/* 0x01E0 */ f32 unk_01E0;
/* 0x01E4 */ f32 unk_01E4;
/* 0x01E8 */ Vec3s jointTable[GOHT_LIMB_MAX];
/* 0x02AE */ Vec3s morphTable[GOHT_LIMB_MAX];
/* 0x0374 */ Vec3s unk_0374;
/* 0x037A */ Vec3s unk_037A;
/* 0x0380 */ Vec3f unk_0380;
/* 0x038C */ Vec3f unk_038C;
/* 0x0398 */ Vec3f bodyPartsPos[GOHT_BODYPART_MAX];
/* 0x044C */ Vec3f unk_044C;
/* 0x0458 */ Vec3f unk_0458;
/* 0x0464 */ Vec3f unk_0464;
/* 0x0470 */ LightNode* lightNode;
/* 0x0474 */ LightInfo lightInfo;
/* 0x0484 */ ColliderJntSph unk_0484;
/* 0x04A4 */ ColliderJntSphElement unk_04A4[19];
/* 0x0964 */ ColliderCylinder unk_0964;
/* 0x09B0 */ Actor* unk_09B0[8];
/* 0x09D0 */ Actor* unk_09D0[10];
/* 0x09F8 */ BossHakuginEffect unk_09F8[BOSS_HAKUGIN_EFFECT_COUNT];
/* 0x2618 */ BossHakuginUnkStruct_2618 unk_2618[20];
/* 0x3158 */ BossHakuginFhgFlashUnkStruct unk_3158[5][15];
/* 0x3734 */ Vec3f unk_3734[10];
/* 0x37AC */ Vec3f unk_37AC;
/* 0x37B8 */ ColliderSphere unk_37B8;
} BossHakugin; // size = 0x3810
#endif // Z_BOSS_HAKUGIN_H
@@ -93,8 +93,8 @@ void EnHakurock_Destroy(Actor* thisx, PlayState* play) {
void func_80B21BE0(BossHakugin* parent, Vec3f* arg1, s32 arg2) {
s32 i;
for (i = 0; i < ARRAY_COUNT(parent->unk_9F8); i++) {
BossHakuginEffect* gohtEffect = &parent->unk_9F8[i];
for (i = 0; i < ARRAY_COUNT(parent->unk_09F8); i++) {
BossHakuginEffect* gohtEffect = &parent->unk_09F8[i];
if (gohtEffect->unk_18 < 0) {
s16 sp2E;
s16 sp2C;
@@ -97,12 +97,12 @@ void EffectSsFhgFlash_Update(PlayState* play, u32 index, EffectSs* this) {
s32 pad;
Vec3f* bodyPartPos;
BossHakugin* goht = (BossHakugin*)this->actor;
s32 gohtIndex = goht->unk_191 - 3;
s32 gohtIndex = goht->unk_0191 - 3;
if (gohtIndex < 0) {
bodyPartPos = &goht->unk_2F00[this->rParams][12].unk_00;
bodyPartPos = &goht->unk_3158[this->rParams - FHGFLASH_SHOCK_GOHT_2][12].unk_00;
} else {
bodyPartPos = &goht->unk_2F00[this->rParams][gohtIndex].unk_00;
bodyPartPos = &goht->unk_3158[this->rParams - FHGFLASH_SHOCK_GOHT_2][gohtIndex].unk_00;
}
this->pos.x = Rand_CenteredFloat(70.0f) + bodyPartPos->x;
+5 -5
View File
@@ -12970,8 +12970,8 @@
0x80B0B548:("func_80B0B548",),
0x80B0B660:("func_80B0B660",),
0x80B0BAE0:("BossHakugin_Update",),
0x80B0C000:("func_80B0C000",),
0x80B0C1BC:("func_80B0C1BC",),
0x80B0C000:("BossHakugin_OverrideLimbDraw",),
0x80B0C1BC:("BossHakugin_PostLimbDraw",),
0x80B0C398:("func_80B0C398",),
0x80B0C570:("func_80B0C570",),
0x80B0C7B0:("func_80B0C7B0",),
@@ -12979,9 +12979,9 @@
0x80B0CCD8:("func_80B0CCD8",),
0x80B0CF24:("func_80B0CF24",),
0x80B0D0D4:("BossHakugin_Draw",),
0x80B0D2B8:("func_80B0D2B8",),
0x80B0D69C:("func_80B0D69C",),
0x80B0D750:("func_80B0D750",),
0x80B0D2B8:("BossHakugin_FillShadowTex",),
0x80B0D69C:("BossHakugin_GenShadowTex",),
0x80B0D750:("BossHakugin_DrawShadowTex",),
0x80B0D9CC:("func_80B0D9CC",),
0x80B0DFA8:("func_80B0DFA8",),
0x80B0E548:("func_80B0E548",),
+3 -9
View File
@@ -13424,13 +13424,7 @@
0x80B0EA60:("D_80B0EA60","UNK_TYPE1","",0x1),
0x80B0EA80:("D_80B0EA80","UNK_TYPE1","",0x1),
0x80B0EA88:("D_80B0EA88","UNK_TYPE4","",0x4),
0x80B0EA8C:("D_80B0EA8C","UNK_TYPE1","",0x1),
0x80B0EA94:("D_80B0EA94","UNK_TYPE1","",0x1),
0x80B0EA95:("D_80B0EA95","UNK_TYPE1","",0x1),
0x80B0EA9A:("D_80B0EA9A","UNK_TYPE1","",0x1),
0x80B0EA9C:("D_80B0EA9C","UNK_TYPE1","",0x1),
0x80B0EAA4:("D_80B0EAA4","UNK_TYPE1","",0x1),
0x80B0EAA5:("D_80B0EAA5","UNK_TYPE1","",0x1),
0x80B0EA8C:("sLimbToBodyParts","s8","[]", 0x20),
0x80B0EAAC:("D_80B0EAAC","UNK_TYPE1","",0x1),
0x80B0EAB0:("D_80B0EAB0","UNK_TYPE1","",0x1),
0x80B0EAC4:("D_80B0EAC4","UNK_TYPE1","",0x1),
@@ -13453,8 +13447,8 @@
0x80B0EB88:("D_80B0EB88","UNK_TYPE4","",0x4),
0x80B0EBA4:("D_80B0EBA4","UNK_TYPE4","",0x4),
0x80B0EBC4:("D_80B0EBC4","UNK_TYPE4","",0x4),
0x80B0EBFC:("D_80B0EBFC","UNK_TYPE4","",0x4),
0x80B0EC38:("D_80B0EC38","UNK_TYPE1","",0x1),
0x80B0EBFC:("sParentShadowBodyParts","UNK_TYPE4","",0x4),
0x80B0EC38:("sShadowSizes","UNK_TYPE1","",0x1),
0x80B0EC50:("D_80B0EC50","f32","",0x4),
0x80B0EC54:("D_80B0EC54","f32","",0x4),
0x80B0EC58:("D_80B0EC58","f32","",0x4),
-17
View File
@@ -283,23 +283,6 @@ D_06042330 = 0x06042330;
D_06043330 = 0x06043330;
D_06045B30 = 0x06045B30;
// ovl_Boss_Hakugin
D_06002054 = 0x06002054;
D_0600319C = 0x0600319C;
D_06010488 = 0x06010488;
D_06010500 = 0x06010500;
D_06011100 = 0x06011100;
D_06011178 = 0x06011178;
D_06011208 = 0x06011208;
D_06011278 = 0x06011278;
D_06012ED0 = 0x06012ED0;
D_06012F40 = 0x06012F40;
D_06013158 = 0x06013158;
D_060134D0 = 0x060134D0;
D_06013828 = 0x06013828;
D_06014040 = 0x06014040;
// ovl_Dm_Tsg
D_06002D30 = 0x06002D30;