match fish_tai

This commit is contained in:
roeming
2024-12-27 20:01:46 -05:00
parent 9cbb27120b
commit 0567b62237
11 changed files with 573 additions and 72 deletions
+3 -2
View File
@@ -17,6 +17,7 @@ typedef struct _FISH_PRIVATE_DATA;
typedef void (*PRIV_FISH_CONSTRUCTOR)(struct _FISH_PRIVATE_DATA*, GAME*);
typedef void (*PRIV_FISH_MOVE)(struct _FISH_PRIVATE_DATA*, GAME*);
typedef void (*PRIV_FISH_DRAW)(struct _FISH_PRIVATE_DATA*, GAME*);
// typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*);
typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*);
// unsure temp structs
@@ -316,7 +317,7 @@ void mfish_tai_normal();
void mfish_tai_turn_init();
void mfish_tai_turn();
void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
void* arg, s_xyz* joint1, xyz_t* trans);
void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
@@ -418,7 +419,7 @@ void mfish_namazu_ground_sweep_process_init();
void mfish_namazu_ground_sweep_process();
void mfish_namazu_base_FishMove();
void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
void* arg, s_xyz* joint1, xyz_t* trans);
void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
+1 -1
View File
@@ -1444,7 +1444,7 @@ void mfish_point_light_mv(MUSEUM_FISH_ACTOR* actor, GAME* game) {
actor->actor.world.position.x = sin_s(actor->_14dc0) * 200.0f;
actor->actor.world.position.y = sin_s(actor->_14dc0 * 2) * 10.0f;
actor->actor.world.position.z = cos_s(actor->_14dc0) * 200.0f;
actor->_14dc0 += 0x111;
actor->_14dc0 += DEG2SHORT_ANGLE(1.5f);
}
void mfish_normal_light_set(ACTOR* actor, GAME* _game) {
+1 -1
View File
@@ -103,7 +103,7 @@ void mfish_afish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
void mfish_afish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
s16 s3 = DEG2SHORT_ANGLE(RANDOM_F(75.0f)) + DEG2SHORT_ANGLE(45.0f);
actor->_618.y = ABS(DEG2SHORT_ANGLE2(((s3 * (360.0f / 0x10000)) / 120.0f) * 4.0f + 2.5f));
actor->_618.y = ABS(DEG2SHORT_ANGLE2((SHORT2DEG_ANGLE2(s3) / 120.0f) * 4.0f + 2.5f));
if (actor->_62E & 0x1e) {
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
s3 = -s3;
+1 -1
View File
@@ -100,7 +100,7 @@ void mfish_aroana_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
void mfish_aroana_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
s16 s3 = DEG2SHORT_ANGLE(RANDOM_F(55.0f)) + DEG2SHORT_ANGLE(45.0f);
actor->_618.y = ABS(DEG2SHORT_ANGLE2(((s3 * (360.0f / 0x10000)) / 120.0f) * 2.5f + 2.0f));
actor->_618.y = ABS(DEG2SHORT_ANGLE2((SHORT2DEG_ANGLE2(s3) / 120.0f) * 2.5f + 2.0f));
if (actor->_62E & 0x1e) {
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
s3 = -s3;
+8 -6
View File
@@ -124,9 +124,11 @@ void mfish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* prv) {
void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
// no clue what's going on here
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(3.75f), 0x2d);
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), 0x2d);
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), 0x2d);
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(3.75f),
DEG2SHORT_ANGLE(0.25f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f),
DEG2SHORT_ANGLE(0.25f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), DEG2SHORT_ANGLE(0.25f));
if (actor->_630 == 2) {
if (actor->_612.y < 0) {
@@ -334,9 +336,9 @@ void mfish_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
actor->_632 = DEG2SHORT_ANGLE((fVar8 * 30.0f) + 20.0f);
if (qrand() & 0x8000) {
actor->_636 = 0x4000;
actor->_636 = DEG2SHORT_ANGLE(90);
} else {
actor->_636 = -0x4000;
actor->_636 = DEG2SHORT_ANGLE(-90);
}
actor->_62E &= ~0xC0;
@@ -1034,7 +1036,7 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
if (t > 4.0f) {
xyz_t_mult_v(&actor->prvKusa[j]._540, 4.0f / t);
}
actor->prvKusa[j]._538.y = 0x27d;
actor->prvKusa[j]._538.y = DEG2SHORT_ANGLE(3.5f);
}
}
// asm 3fc-410
+8 -5
View File
@@ -42,7 +42,8 @@ void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
actor->_634 = actor->_62C - DEG2SHORT_ANGLE(90);
}
} else {
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(22.5), 0x5b);
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(22.5),
DEG2SHORT_ANGLE(0.5f));
}
actor->_5EC = 0.0f;
@@ -53,9 +54,11 @@ void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
// no clue what's going on here
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), 0x1c7, 0x2d);
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f), 0xe3, 0x2d);
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), 0xe3, 0x2d);
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.25f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.25f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.25f));
}
void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) {
@@ -167,7 +170,7 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
s16 a;
s16 b;
b = a = 0x2000 + DEG2SHORT_ANGLE(RANDOM_F(75));
b = a = DEG2SHORT_ANGLE(90) + DEG2SHORT_ANGLE(RANDOM_F(75));
actor->_618.y =
DEG2SHORT_ANGLE((actor->_5AC.y * 4.0f + 4.0f) * (SHORT2DEG_ANGLE2(a) / 120.0f) + 2.0f + actor->_5AC.y);
if (actor->_62E & 0x1e) {
+1 -1
View File
@@ -29,7 +29,7 @@ void mfish_kaseki_normal_init() {
void mfish_kaseki_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 s = ABS(actor->_622) * (actor->init_data._30 * (GETREG(TAKREG, 0x1d) * 0.001f + 0.5f) / 32749.0f);
s = MIN(actor->_634, MAX(s, 0x38E));
s = MIN(actor->_634, MAX(s, DEG2SHORT_ANGLE(5)));
add_calc_short_angle2(&actor->_632, 0, CALC_EASE(0.5), DEG2SHORT_ANGLE(5), DEG2SHORT_ANGLE(0.5f));
actor->_636 += 455;
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
+3 -3
View File
@@ -194,7 +194,7 @@ void mfish_koi_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
void mfish_koi_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
s16 s3 = DEG2SHORT_ANGLE(RANDOM_F(55.0f)) + DEG2SHORT_ANGLE(60.0f);
actor->_618.y = ABS(DEG2SHORT_ANGLE2(((s3 * (360.0f / 0x10000)) / 120.0f) * 2.5f + 2.0f));
actor->_618.y = ABS(DEG2SHORT_ANGLE2((SHORT2DEG_ANGLE2(s3) / 120.0f) * 2.5f + 2.0f));
if (actor->_62E & 0x1e) {
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
s3 = -s3;
@@ -303,9 +303,9 @@ void mfish_koi_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
actor->_632 = DEG2SHORT_ANGLE((fVar8 * 30.0f) + 20.0f);
if (qrand() & 0x8000) {
actor->_636 = 0x4000;
actor->_636 = DEG2SHORT_ANGLE(90);
} else {
actor->_636 = -0x4000;
actor->_636 = DEG2SHORT_ANGLE(-90);
}
actor->_62E &= ~0xC0;
+292 -29
View File
@@ -1,61 +1,324 @@
void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
mfish_onefish_ct(actor, gamex);
actor->_5E8 = 0.0f;
actor->_5D0 = ZeroVec;
actor->_60C.y = qrand();
actor->_612.y = actor->_60C.y;
actor->_5F4 = 0.0f;
actor->_5AC = ZeroVec;
if (actor->_59C == 4) {
actor->_5AC.y = 1500.f;
} else {
actor->_5AC.y = 1700.f;
}
actor->_638 = qrand();
actor->_622 = actor->_60C.y;
actor->_5A0.z += 40.0f;
actor->_624 = 10;
// maybe s_xyz? but because we're not assigning a ZeroSVec, i'm thinking not?
actor->_640 = 0;
actor->_642 = 0;
actor->_644 = 0;
mfish_namazu_normal_process_init(actor);
}
void mfish_namazu_body_wind_anime_play() {
return;
void mfish_namazu_body_wind_anime_play(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_63A += (s16)DEG2SHORT_ANGLE2(2.0f + RANDOM_F(1.0f));
actor->_63C += (s16)DEG2SHORT_ANGLE2(1.0f + RANDOM_F(0.5f));
}
void mfish_namazu_normal_process_init() {
return;
void mfish_namazu_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
f32 s;
f32 p;
f32 f;
p = RANDOM_F(actor->init_data._14) + actor->init_data._10;
s = MAX(actor->init_data._14 + actor->init_data._10, 1.0f);
f = p / s;
if (p > actor->_5E8) {
actor->_5F0 = p;
}
actor->_5F4 = 0.0f;
actor->_5D0.y = 0.0f;
if (RANDOM_F(1.0f) > actor->init_data._1C) {
actor->_612.y += (s16)Rnd_EX_fx(actor->init_data._30 * 2.0f);
if (ABS((s16)(actor->_612.y - actor->_60C.y)) < DEG2SHORT_ANGLE(20)) {
if ((s16)(actor->_612.y - actor->_60C.y) > 0) {
actor->_612.y += DEG2SHORT_ANGLE(20);
} else {
actor->_612.y -= DEG2SHORT_ANGLE(20);
}
}
actor->_632 = DEG2SHORT_ANGLE(30.0f + f * 40.0f);
} else {
if ((s16)(actor->_612.y - actor->_60C.y) > 0) {
actor->_612.y += DEG2SHORT_ANGLE(15);
} else {
actor->_612.y -= DEG2SHORT_ANGLE(15);
}
actor->_632 = DEG2SHORT_ANGLE(40.0f + f * 50.0f);
}
if ((s16)(actor->_60C.y - actor->_612.y) > 0) {
actor->_636 = DEG2SHORT_ANGLE(0);
} else {
actor->_636 = DEG2SHORT_ANGLE(-180);
}
actor->_62E &= ~0xC0;
actor->_34 = mfish_namazu_normal_process;
}
void mfish_namazu_normal_process() {
return;
void mfish_namazu_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if (actor->_632 > DEG2SHORT_ANGLE(20)) {
add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.75f),
(0.4f + ((DEG2SHORT_ANGLE(-20) + actor->_632) / DEG2SHORT_ANGLE(2)) * 0.02f) * 0.5f);
}
add_calc_short_angle2(&actor->_632, DEG2SHORT_ANGLE(0), CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.25f),
DEG2SHORT_ANGLE(0.125f));
actor->_636 += DEG2SHORT_ANGLE(1.25f);
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
CALC_EASE2(0.1f), DEG2SHORT_ANGLE(1.25f), DEG2SHORT_ANGLE(0.065f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.105f), DEG2SHORT_ANGLE(0.8125f),
DEG2SHORT_ANGLE(0.0625f));
if (actor->_5E8 < 0.01f) {
mfish_namazu_dummy_process_init(actor);
} else if (actor->_5E8 > 1.0f && actor->_62E & 0x1e) {
if ((s16)(actor->_60C.y - actor->_62C) > 0) {
actor->_612.y = actor->_62C + DEG2SHORT_ANGLE(112.5f);
} else {
actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(112.5f);
}
actor->_632 = 0;
}
}
void mfish_namazu_dummy_process_init() {
return;
void mfish_namazu_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
actor->_634 = mfish_get_hide_camera_angle(actor);
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(10), DEG2SHORT_ANGLE(0.5f));
actor->_34 = mfish_namazu_dummy_process;
}
void mfish_namazu_dummy_process() {
return;
void mfish_namazu_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
if (actor->_5E8 < 0.5f) {
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.125f));
}
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.05f), DEG2SHORT_ANGLE(0.8125f),
DEG2SHORT_ANGLE(0.065f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.055f), DEG2SHORT_ANGLE(0.5f),
DEG2SHORT_ANGLE(0.0625f));
}
void mfish_namazu_turn_process_init() {
return;
void mfish_namazu_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
s16 angle = DEG2SHORT_ANGLE(RANDOM_F(60.0f)) + DEG2SHORT_ANGLE(30);
actor->_618.y = DEG2SHORT_ANGLE(0.5f + SHORT2DEG_ANGLE2(angle) / 90.f);
if (actor->_62E & 0x1e) {
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
angle = -angle;
}
} else if (actor->_62E & 0xc0) {
if (actor->_62E & 0x40) {
angle = ABS(angle);
} else {
angle = -ABS(angle);
}
} else if (actor->_62E & 0x20) {
if ((s16)(actor->_62A - actor->_60C.y) < 0) {
angle = -angle;
}
}
if (angle > 0) {
actor->_62E |= 0x40;
} else {
actor->_62E |= 0x80;
}
actor->_612.y += angle;
actor->_5F0 = 0.06f;
actor->_34 = mfish_namazu_turn_process;
}
void mfish_namazu_turn_process() {
return;
void mfish_namazu_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.05f), 0.0625f);
add_calc2(&actor->_5F0, 0.05f, CALC_EASE(0.1f), 0.0025f);
add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.29f), DEG2SHORT_ANGLE(1.25f), DEG2SHORT_ANGLE(0.125f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE(0.035f), (s16)(actor->_618.y >> 1),
DEG2SHORT_ANGLE(0.05f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE(0.025f), DEG2SHORT_ANGLE(0.75f),
DEG2SHORT_ANGLE(0.25f));
if (actor->_60C.y == actor->_612.y) {
mfish_namazu_dummy_process_init(actor);
}
}
void mfish_namazu_ground_sweep_process_init() {
return;
void mfish_namazu_ground_sweep_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
f32 s;
f32 p;
f32 f;
p = RANDOM_F(actor->init_data._14) + actor->init_data._10;
s = MAX(actor->init_data._14 + actor->init_data._10, 1.0f);
f = p / s;
if (p > actor->_5E8) {
actor->_5F0 = p;
}
actor->_5F4 = 0.0f;
actor->_5D0.y = 0.0f;
if ((s16)(actor->_612.y - actor->_60C.y) > 0) {
actor->_612.y += DEG2SHORT_ANGLE(15);
} else {
actor->_612.y -= DEG2SHORT_ANGLE(15);
}
actor->_632 = DEG2SHORT_ANGLE(30.f + f * 60.f);
if ((s16)(actor->_60C.y - actor->_612.y) > 0) {
actor->_636 = DEG2SHORT_ANGLE(0);
} else {
actor->_636 = DEG2SHORT_ANGLE(-180);
}
actor->_62E &= ~0xc0;
actor->_34 = mfish_namazu_ground_sweep_process;
}
void mfish_namazu_ground_sweep_process() {
return;
void mfish_namazu_ground_sweep_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
if (actor->_632 > DEG2SHORT_ANGLE(20)) {
add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.075f),
(0.4f + 0.02f * ((actor->_632 - DEG2SHORT_ANGLE(20)) / DEG2SHORT_ANGLE(2))) * 0.5f);
}
add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.0625f), DEG2SHORT_ANGLE(0.025f));
actor->_636 += DEG2SHORT_ANGLE(3);
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
CALC_EASE2(0.25f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.125f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.875f),
DEG2SHORT_ANGLE(0.125f));
if (actor->_5E8 < 0.01f) {
mfish_namazu_dummy_process_init(actor);
} else if (actor->_5E8 > 1.0f && actor->_62E & 0x1e) {
if ((s16)(actor->_612.y - actor->_62C) > 0) {
actor->_612.y = actor->_62C + DEG2SHORT_ANGLE(112.5f);
} else {
actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(112.5f);
}
}
}
void mfish_namazu_base_FishMove() {
return;
void mfish_namazu_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
add_calc2(&actor->_5E8, 0.05f, 1.0f - actor->init_data._18, 0.025f);
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
add_calc(&actor->_5D0.y, MAX(ABS(sin_s(actor->_60C.x) * actor->_5E8), 0.1f), 0.1f, 0.1f, 0.005f);
add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.1f, actor->_5D0.y);
mfish_move_smooth(actor, gamex);
actor->_5A0.x += actor->_5D0.x;
actor->_5A0.z += actor->_5D0.z;
actor->_5A0.y = MAX(60.f, MIN(110.f, actor->_5A0.y));
}
void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
xyz_t p = suisou_pos[actor->_630];
f32 v;
int s;
mfish_onefish_mv(actor, gamex);
if (actor->_5F8 > actor->init_data._08 * 10.0f) {
actor->_5F8 = 0.0f;
actor->_626 = 0;
}
if (actor->_626-- <= 0) {
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
actor->_628 = actor->_626;
if (actor->_644 <= 0 && RANDOM_F(1.0f) < 0.2f) {
actor->_644 = (s16)RANDOM_F(300.f) + 300;
mfish_namazu_ground_sweep_process_init(actor);
} else if (mfish_WallCheck(actor)) {
mfish_namazu_turn_process_init(actor);
} else {
mfish_namazu_normal_process_init(actor);
}
} else if (actor->_34 == mfish_namazu_normal_process) {
if ((actor->_62E & 0x1e && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(45)) ||
(actor->_62E & 0x20 &&
ABS((s16)(actor->_62A + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
actor->_628 = actor->_626;
mfish_namazu_turn_process_init(actor);
}
}
actor->_638 += DEG2SHORT_ANGLE(10);
actor->_34(actor, gamex);
if (ABS(actor->_618.z) > DEG2SHORT_ANGLE(20) && ABS(actor->_622 - actor->_618.z) < DEG2SHORT_ANGLE(30)) {
add_calc2(&actor->_5E8, 0.2f + 0.01f * GETREG(TAKREG, 0x2d), 0.25f + 0.01f * GETREG(TAKREG, 0x2e),
0.05f + 0.01f * GETREG(TAKREG, 0x2f));
}
s = GETREG(TAKREG, 0x4c);
if (s == 1) {
actor->_644 = (s16)RANDOM_F(300.f) + 300;
} else if (s == -1) {
actor->_644 = 0;
}
if (actor->_644 > 0) {
actor->_644--;
actor->_642 = DEG2SHORT_ANGLE(GETREG(TAKREG, 0x4d) + 35.0f);
} else {
actor->_642 = 0;
}
add_calc_short_angle2(&actor->_640, actor->_642, CALC_EASE(0.2f), DEG2SHORT_ANGLE(0.25f), DEG2SHORT_ANGLE(0.05f));
actor->_38._00.frame_control.speed = (actor->_5E8 * 0.75f) / (actor->init_data._10 + actor->init_data._14) + 0.125f;
mfish_namazu_base_FishMove(actor, gamex);
Museum_Fish_BGCheck(actor, gamex);
xyz_t_sub(&p, &actor->_5A0, &p);
v = 60.f + MAX(ABS(p.x), ABS(p.z)) * -0.15f;
actor->_5A0.y = v + actor->init_data._04;
mfish_namazu_body_wind_anime_play(actor, gamex);
}
void mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
void* arg, s_xyz* joint1, xyz_t* trans) {
return;
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
int s;
if (joint_num == 0) {
trans->y = -(actor->_5AC.y * MIN(sin_s(actor->_640), 0.5f));
} else if (joint_num == 1) {
s = joint1->z + actor->_640;
joint1->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30));
s = joint1->x + (actor->_618.z >> 2);
joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
Matrix_scale(1.0f, 1.0f + 0.01f * sin_s(actor->_63A + actor->_63C), 1.0f + 0.01f * sin_s(actor->_63A), 1);
} else if (joint_num == 2) {
s = joint1->y - (actor->_618.z << 1);
joint1->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60));
s = joint1->x - (actor->_618.z >> 2);
joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
s = joint1->z - (s16)(actor->_640 * (0.6f + GETREG(TAKREG, 0x4E) * 0.01f));
joint1->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30));
Matrix_scale(1.0f, 1.0f + 0.005f * sin_s(actor->_63A + DEG2SHORT_ANGLE(270)),
1.0f + 0.005f * sin_s(actor->_63A + DEG2SHORT_ANGLE(90)), 1);
}
return TRUE;
}
void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
YET_SKELETON* skele = &actor->_38;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
} else {
mtxp = &skele->_2b0;
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->_5A0.x, actor->_5A0.y, actor->_5A0.z, 0);
Matrix_rotateXYZ(actor->_60C.x, actor->_60C.y, actor->_60C.z, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24, 1);
Matrix_scale(actor->init_data._00, actor->init_data._00, actor->init_data._00, 1);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(gamex->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
cKF_Si3_draw_R_SV(gamex, &skele->_00, mtxp, mfish_zarigani_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+253 -21
View File
@@ -1,43 +1,275 @@
void mfish_tai_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
s16 s = qrand();
mfish_onefish_ct(actor, gamex);
actor->_5E8 = RANDOM_F(actor->init_data._14) + actor->init_data._10;
actor->_5F0 = actor->_5E8;
actor->_60C.y = s;
actor->_612.y = actor->_60C.y;
actor->_5F4 = 0.0f;
actor->_5D0.y = 0.0f;
actor->_5AC = ZeroVec;
actor->_638 = qrand();
actor->_622 = 0;
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
actor->_628 = actor->_626;
actor->_624 = 2;
actor->_594 = NULL;
actor->_598 = NULL;
actor->_5AC.x = 30.f;
actor->_5AC.x = 30.f;
mfish_tai_normal_init(actor, gamex);
}
void mfish_tai_normal_init() {
// NOT BAD
return;
void mfish_tai_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if (actor->_34 == mfish_tai_turn) {
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
actor->_628 = actor->_626;
actor->_5F0 = RANDOM_F(actor->init_data._14) + actor->init_data._10;
}
actor->_34 = mfish_tai_normal;
}
void mfish_tai_normal() {
return;
void mfish_tai_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 ss = (ABS(actor->_622) * ((0.75f * actor->init_data._30) / 32749.0f));
// extra extsh here
int s = (s16)MIN(DEG2SHORT_ANGLE2(25), MAX(ss, DEG2SHORT_ANGLE2(5)));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(sin_s(actor->_636) * actor->_632),
CALC_EASE2(0.3f), (s16)(s >> 1) >> 1, DEG2SHORT_ANGLE(0.125f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.15f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.125f));
if (actor->_598) {
f32 d = (actor->_598->init_data._08 + actor->init_data._08);
f32 o_y = actor->_598->_5A0.y;
f32 o_z = actor->_598->_5A0.z;
f32 v = MAX(d - ABS(actor->_598->_5A0.z - actor->_5A0.z), 0.0f);
v = v / d;
if (actor->_598->_59C != 0x23) {
if (actor->_598->_5A0.y < actor->_5A0.y) {
if (actor->_5A0.y < (o_y + (actor->_598->init_data._04 + actor->init_data._04))) {
add_calc2(&actor->_5A0.y, (o_y + (actor->_598->init_data._04 + actor->init_data._04)) + 2.0f, 0.2f,
v * 0.1f);
}
} else {
if (actor->_5A0.y > o_y - (actor->_598->init_data._04 + actor->init_data._04)) {
add_calc2(&actor->_5A0.y, (o_y - (actor->_598->init_data._04 + actor->init_data._04)) - 2.0f, 0.2f,
v * 0.1f);
}
}
}
if (actor->_598->_5A0.z < actor->_5A0.z) {
add_calc2(&actor->_5A0.z, o_z + d, 0.05f, v * 0.1f);
} else {
add_calc2(&actor->_5A0.z, o_z - d, 0.05f, v * 0.1f);
}
}
if (actor->_5FC < actor->_5AC.x - actor->init_data._28 * 0.5f) {
if (actor->_612.y < 0) {
s16 s;
if (actor->_604 > actor->_608) {
s = actor->_60C.y - DEG2SHORT_ANGLE(90);
} else {
s = actor->_60C.y + DEG2SHORT_ANGLE(90);
}
actor->_612.y = s;
actor->_5AC.x = RANDOM_F(80.f) + 30.f;
} else {
add_calc_short_angle2(&actor->_612.y, DEG2SHORT_ANGLE(90), CALC_EASE(0.5f), DEG2SHORT_ANGLE(7.5f),
DEG2SHORT_ANGLE(0.5f));
}
} else if (actor->_600 < actor->_5AC.x - actor->init_data._28 * 0.5f) {
if (actor->_612.y > 0) {
s16 s;
if (actor->_604 > actor->_608) {
s = actor->_60C.y + DEG2SHORT_ANGLE(90);
} else {
s = actor->_60C.y - DEG2SHORT_ANGLE(90);
}
actor->_612.y = s;
actor->_5AC.x = RANDOM_F(80.f) + 30.f;
} else {
add_calc_short_angle2(&actor->_612.y, DEG2SHORT_ANGLE(-90), CALC_EASE(0.5f), DEG2SHORT_ANGLE(7.5f),
DEG2SHORT_ANGLE(0.5f));
}
} else if (actor->_62E & 0x100) {
actor->_5A0.z += 0.05f;
if (ABS((s16)(actor->_612.y - DEG2SHORT_ANGLE(180))) < DEG2SHORT_ANGLE(110)) {
if (actor->_612.y > DEG2SHORT_ANGLE(0)) {
actor->_612.y -= DEG2SHORT_ANGLE(1.5f);
} else {
actor->_612.y += DEG2SHORT_ANGLE(1.5f);
}
}
} else if (actor->_62E & 0x1e) {
mfish_tai_turn_init(actor, gamex);
} else if (actor->_62E & 0x20 && actor->_5F8 > actor->init_data._08 * 0.5f) {
if (actor->init_data._20 < actor->_594->init_data._20) {
s16 escAngle = mfish_get_escape_angle(actor, gamex);
add_calc_short_angle2(&actor->_612.y, escAngle, CALC_EASE(0.25f), DEG2SHORT_ANGLE(2.5f),
DEG2SHORT_ANGLE(0));
}
} else if (actor->_626 < 0) {
f32 f = RANDOM_F(1.0f);
actor->_612.y = actor->_60C.y;
if (RANDOM_F(1.0f) < GETREG(TAKREG, 0x1c) * 0.1f + 0.1f) {
if (actor->_612.y < 0) {
if (actor->_604 > actor->_608) {
actor->_612.y = actor->_60C.y - DEG2SHORT_ANGLE(157.5f);
} else {
actor->_612.y = actor->_60C.y + DEG2SHORT_ANGLE(157.5f);
}
} else {
if (actor->_604 > actor->_608) {
actor->_612.y = actor->_60C.y + DEG2SHORT_ANGLE(157.5f);
} else {
actor->_612.y = actor->_60C.y - DEG2SHORT_ANGLE(157.5f);
}
}
} else {
if ((actor->_608 - actor->_604) * cos_s(actor->_60C.y) < 0.0f) {
actor->_612.y += (s16)(f * actor->init_data._30);
} else {
actor->_612.y -= (s16)(f * actor->init_data._30);
}
}
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
actor->_628 = actor->_626;
actor->_5F0 = actor->init_data._10 + Rnd_EX_f(actor->init_data._14);
}
}
void mfish_tai_turn_init() {
// NOT BAD
void mfish_tai_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 b = (s16)actor->_62C;
return;
if (ABS(actor->_622) > DEG2SHORT_ANGLE(45)) {
return;
}
if ((s16)(actor->_60C.y - b) > 0) {
if (actor->_62E & 6) {
b = b + DEG2SHORT_ANGLE(170);
} else {
b = b + DEG2SHORT_ANGLE(95);
}
} else {
if (actor->_62E & 6) {
b = b - DEG2SHORT_ANGLE(170);
} else {
b = b - DEG2SHORT_ANGLE(95);
}
}
if (ABS((s16)(b - actor->_612.y)) > DEG2SHORT_ANGLE(45)) {
actor->_34 = mfish_tai_turn;
}
actor->_612.y = b;
}
void mfish_tai_turn() {
return;
void mfish_tai_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f + GETREG(TAKREG, 0x17) * 0.01f),
(s16)(DEG2SHORT_ANGLE2(15.0f + 0.1f * GETREG(TAKREG, 0x18)) >> 1) >> 1,
DEG2SHORT_ANGLE(0.125f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.2f + GETREG(TAKREG, 0x19) * 0.01f),
(s16)(DEG2SHORT_ANGLE(15.0f + 0.1f * GETREG(TAKREG, 0x1a)) >> 1) >> 1,
DEG2SHORT_ANGLE(0.125f));
if (ABS((s16)actor->_622) < DEG2SHORT_ANGLE(3)) {
mfish_tai_normal_init(actor, gamex);
}
}
void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
xyz_t p;
f32 v;
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
actor->_34(actor, gamex);
actor->_618.x += DEG2SHORT_ANGLE(RANDOM_F(3.0f) * actor->_5E8 + 0.1f);
actor->_5F4 = sin_s(actor->_618.x) * 5.0f;
if (actor->_62E & 0x20) {
add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.02f, 0.05f);
} else {
add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.1f, 0.125f);
}
if (ABS(actor->_622) > DEG2SHORT_ANGLE(20)) {
add_calc_short_angle2(&actor->_632, MAX(DEG2SHORT_ANGLE2((GETREG(TAKREG, 0x27) + 5.0f) * actor->_5E8), 0),
CALC_EASE(0.25f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.5f));
} else if ((actor->_62E & 0x20) == 0) {
add_calc_short_angle2(&actor->_632, MAX(DEG2SHORT_ANGLE2((GETREG(TAKREG, 0x28) + 30.0f) * actor->_5E8), 0),
CALC_EASE(0.25f), DEG2SHORT_ANGLE(5.0f), DEG2SHORT_ANGLE(0.5f));
} else {
add_calc_short_angle2(&actor->_632, DEG2SHORT_ANGLE(5), CALC_EASE(0.1f), DEG2SHORT_ANGLE(2.5f),
DEG2SHORT_ANGLE(0.25f));
}
actor->_636 += (s16)DEG2SHORT_ANGLE2((GETREG(TAKREG, 0x29) + 10.0f) * 0.5f);
if (ABS(actor->_622) > DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x37) + 60.f) ||
(s16)(ABS(actor->_622) - ABS(actor->_618.z)) < DEG2SHORT_ANGLE(5)) {
add_calc2(&actor->_5EC, 0.05f, 0.1f, 0.005f);
add_calc2(&actor->_5E8, MAX(actor->_5F0, actor->init_data._10), 0.05f, actor->_5EC);
} else {
add_calc0(&actor->_5EC, 0.1f, 0.002f);
add_calc2(&actor->_5E8, 0.16f, 1.0f - actor->init_data._18, 0.001f);
}
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
mfish_get_flow_vec(&p, actor, gamex);
actor->_5A0.x += actor->_5D0.x + p.x;
actor->_5A0.z += actor->_5D0.z + p.z;
mfish_onefish_mv(actor, gamex);
actor->_38._00.frame_control.speed =
(0.1f + 0.01f * GETREG(TAKREG, 0x14)) * 0.5f + (1.5f + 0.01f * GETREG(TAKREG, 0x15)) * actor->_5E8;
add_calc0(&actor->_5F8, 0.25f, 0.05f);
actor->_5F8 = MIN(1.0f, actor->_5F8);
mfish_body_wind_anime_play(actor, gamex);
Museum_Fish_BGCheck(actor, gamex);
if (actor->_5A0.y < (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data._04) {
actor->_5A0.y = (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data._04;
}
actor->_626--;
}
void mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
void* arg, s_xyz* joint1, xyz_t* trans) {
return;
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
if (joint_num == 1) {
int s = (joint1->x + actor->_618.z) >> 3;
joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-15), DEG2SHORT_ANGLE(15));
} else if (joint_num == 2) {
int s = joint1->y - (int)(actor->_618.z * (0.01f * GETREG(TAKREG, 0x4b) + 1.5f));
joint1->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90));
}
return TRUE;
}
void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
// NOT BAD
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
YET_SKELETON* skele = &actor->_38;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
} else {
mtxp = &skele->_2b0;
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->_5A0.x, actor->_5A0.y, actor->_5A0.z, 0);
Matrix_rotateXYZ(actor->_60C.x, actor->_60C.y, actor->_60C.z, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24, 1);
Matrix_scale(actor->init_data._00, actor->init_data._00, actor->init_data._00, 1);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(gamex->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
cKF_Si3_draw_R_SV(gamex, &skele->_00, mtxp, mfish_zarigani_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+2 -2
View File
@@ -122,7 +122,7 @@ void mfish_zarigani_stand_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex)
}
}
v = (-(actor->_60C.x * (360.0f / 0x10000)) / 90.0f);
v = (-SHORT2DEG_ANGLE2(actor->_60C.x) / 90.0f);
v *= (20.0f + GETREG(TAKREG, 0x1b) * 0.1f);
actor->_5AC.x = sin_s(actor->_60C.y) * v;
actor->_5AC.z = cos_s(actor->_60C.y) * v;
@@ -155,7 +155,7 @@ void mfish_zarigani_jump_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
mfish_zarigani_wait_process_init(actor, gamex);
return;
}
actor->_5AC.y = (actor->_60C.x * (360.f / 0x10000)) / 90.f;
actor->_5AC.y = SHORT2DEG_ANGLE2(actor->_60C.x) / 90.f;
actor->_5AC.y *= 20.f + GETREG(TAKREG, 0x1c) * 0.1f;
}