diff --git a/src/game/chraction.c b/src/game/chraction.c index 014a5a3dc..99af3c02b 100644 --- a/src/game/chraction.c +++ b/src/game/chraction.c @@ -1297,29 +1297,20 @@ struct attackanimconfig g_RollAttackAnims[] = { { 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; -struct attackanimconfig g_AttackAnimHeavyWalk = { ANIM_0030, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 1.3999999761581, 1.2999999523163 }; -struct attackanimconfig g_AttackAnimHeavyRun = { ANIM_0031, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 1.1000000238419, 1.2000000476837 }; -struct attackanimconfig g_AttackAnimLightWalk = { ANIM_0052, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }; -struct attackanimconfig g_AttackAnimLightRun = { ANIM_0055, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }; -struct attackanimconfig g_AttackAnimDualWalk = { ANIM_006C, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }; -struct attackanimconfig g_AttackAnimDualRun = { ANIM_006E, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }; -struct attackanimconfig g_AttackAnimDualCrossedWalk = { ANIM_006D, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }; -struct attackanimconfig g_AttackAnimDualCrossedRun = { ANIM_006F, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }; - -#ifdef AVOID_UB -// don't depend on global var order -struct attackanimconfig *g_AttackAnimArray[] = { - &g_AttackAnimHeavyWalk, - &g_AttackAnimHeavyRun, - &g_AttackAnimLightWalk, - &g_AttackAnimLightRun, - &g_AttackAnimDualWalk, - &g_AttackAnimDualRun, - &g_AttackAnimDualCrossedWalk, - &g_AttackAnimDualCrossedRun, - NULL -}; +struct attackanimconfig g_WalkAttackAnims[] = { + { ANIM_0030, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 1.3999999761581, 1.2999999523163 }, + { ANIM_0031, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 1.1000000238419, 1.2000000476837 }, + { ANIM_0052, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, + { ANIM_0055, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, + { ANIM_006C, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, + { ANIM_006E, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, + { ANIM_006D, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, + { ANIM_006F, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, +#ifndef PLATFORM_N64 + // ensure this is terminated + { 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, #endif +}; struct attackanimconfig var80067c50[] = { { ANIM_0057, 0, 0, 1.5707963705063, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 0, 0 }, @@ -2385,9 +2376,9 @@ void chrAttackWalk(struct chrdata *chr, bool run) if (style == 0) { if (run) { - animcfg = &g_AttackAnimLightRun; + animcfg = &g_WalkAttackAnims[3]; } else { - animcfg = &g_AttackAnimLightWalk; + animcfg = &g_WalkAttackAnims[2]; } if (flip) { @@ -2397,17 +2388,17 @@ void chrAttackWalk(struct chrdata *chr, bool run) } } else if (style == 1) { if (run) { - animcfg = &g_AttackAnimDualRun; + animcfg = &g_WalkAttackAnims[5]; } else { - animcfg = &g_AttackAnimDualWalk; + animcfg = &g_WalkAttackAnims[4]; } firing[HAND_LEFT] = firing[HAND_RIGHT] = true; } else { if (run) { - animcfg = &g_AttackAnimDualCrossedRun; + animcfg = &g_WalkAttackAnims[7]; } else { - animcfg = &g_AttackAnimDualCrossedWalk; + animcfg = &g_WalkAttackAnims[6]; } firing[HAND_LEFT] = firing[HAND_RIGHT] = true; @@ -2417,9 +2408,9 @@ void chrAttackWalk(struct chrdata *chr, bool run) flip = (bool)leftgun != false; if (run) { - animcfg = &g_AttackAnimLightRun; + animcfg = &g_WalkAttackAnims[3]; } else { - animcfg = &g_AttackAnimLightWalk; + animcfg = &g_WalkAttackAnims[2]; } if (flip) { @@ -2431,9 +2422,9 @@ void chrAttackWalk(struct chrdata *chr, bool run) flip = (bool)leftgun != false; if (run) { - animcfg = &g_AttackAnimHeavyRun; + animcfg = &g_WalkAttackAnims[1]; } else { - animcfg = &g_AttackAnimHeavyWalk; + animcfg = &g_WalkAttackAnims[0]; } if (flip) { diff --git a/src/game/game_1531a0.c b/src/game/game_1531a0.c index 5c7729897..24fd38485 100644 --- a/src/game/game_1531a0.c +++ b/src/game/game_1531a0.c @@ -119,33 +119,14 @@ u16 var8007fb3c[] = { u16 var8007fb5c[] = { 0xff00, 0xff58, 0xff74, 0xff90, 0xffac, 0xffc8, 0xffe4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, -#ifndef AVOID_UB // these are actually loaded as one big palette -}; - -u16 var8007fb7c[] = { -#endif 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff18, 0xff30, 0xff5c, 0xff88, 0xffb4, 0xffd8, 0xffff, }; #if VERSION == VERSION_JPN_FINAL u16 var800801d8jf[] = { - 0xff00, - 0xff11, - 0xff22, - 0xff33, - 0xff44, - 0xff55, - 0xff66, - 0xff77, - 0xff88, - 0xff99, - 0xffaa, - 0xffbb, - 0xffcc, - 0xffdd, - 0xffee, - 0xffff, + 0xff00, 0xff11, 0xff22, 0xff33, 0xff44, 0xff55, 0xff66, 0xff77, + 0xff88, 0xff99, 0xffaa, 0xffbb, 0xffcc, 0xffdd, 0xffee, 0xffff, }; #endif diff --git a/src/game/player.c b/src/game/player.c index 4d332a320..9be5e7989 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -4187,37 +4187,37 @@ struct var80070ba4 { struct var80070ba4 var80070ba4[4][7] = { // [wieldmode][turnmode] { - { var80065be0, 0, 0.1, 79, 87, 1.0470308065414 }, - { &g_AttackAnimLightWalk, 0, 0.5, -1, -1, 1.0470308065414 }, - { &g_AttackAnimLightRun, 0, 0.5, -1, -1, 1.0470308065414 }, - { &var800709f4, 0, 0.001, 0, 0.1, 1.0470308065414 }, - { &var800709f4, 0, 0.503, -1, -1, 1.0470308065414 }, - { &var80070a3c, 0, 0.001, 0, 0.1, 0.52351540327072 }, - { &var80070a3c, 0, 0.45, -1, -1, 0.52351540327072 }, + { var80065be0, 0, 0.1, 79, 87, 1.0470308065414 }, + { &g_WalkAttackAnims[2], 0, 0.5, -1, -1, 1.0470308065414 }, + { &g_WalkAttackAnims[3], 0, 0.5, -1, -1, 1.0470308065414 }, + { &var800709f4, 0, 0.001, 0, 0.1, 1.0470308065414 }, + { &var800709f4, 0, 0.503, -1, -1, 1.0470308065414 }, + { &var80070a3c, 0, 0.001, 0, 0.1, 0.52351540327072 }, + { &var80070a3c, 0, 0.45, -1, -1, 0.52351540327072 }, }, { - { var800656c0, 0, 0.05, 35, 40, 1.0470308065414 }, - { &g_AttackAnimHeavyWalk, 0, 0.5, -1, -1, 1.0470308065414 }, - { &g_AttackAnimHeavyRun, 0, 0.5, -1, -1, 1.0470308065414 }, - { &var80070a84, 0, 0.001, 0, 0.1, 1.0470308065414 }, - { &var80070a84, 0, 0.503, -1, -1, 1.0470308065414 }, - { &var80070acc, 0, 0.001, 0, 0.1, 0.52351540327072 }, - { &var80070acc, 0, 0.45, -1, -1, 0.52351540327072 }, + { var800656c0, 0, 0.05, 35, 40, 1.0470308065414 }, + { &g_WalkAttackAnims[0], 0, 0.5, -1, -1, 1.0470308065414 }, + { &g_WalkAttackAnims[1], 0, 0.5, -1, -1, 1.0470308065414 }, + { &var80070a84, 0, 0.001, 0, 0.1, 1.0470308065414 }, + { &var80070a84, 0, 0.503, -1, -1, 1.0470308065414 }, + { &var80070acc, 0, 0.001, 0, 0.1, 0.52351540327072 }, + { &var80070acc, 0, 0.45, -1, -1, 0.52351540327072 }, }, { - { NULL, ANIM_006A, 0.25, 0, -1, 1.0470308065414 }, - { NULL, ANIM_006B, 0.5, -1, -1, 1.0470308065414 }, - { NULL, ANIM_RUNNING_ONEHANDGUN, 0.5, -1, -1, 1.0470308065414 }, - { NULL, ANIM_0280, 0.001, 0, 0.1, 1.0470308065414 }, - { NULL, ANIM_0280, 0.503, -1, -1, 1.0470308065414 }, - { NULL, ANIM_0284, 0.001, 0, 0.1, 0.52351540327072 }, - { NULL, ANIM_0284, 0.45, -1, -1, 0.52351540327072 }, + { NULL, ANIM_006A, 0.25, 0, -1, 1.0470308065414 }, + { NULL, ANIM_006B, 0.5, -1, -1, 1.0470308065414 }, + { NULL, ANIM_RUNNING_ONEHANDGUN, 0.5, -1, -1, 1.0470308065414 }, + { NULL, ANIM_0280, 0.001, 0, 0.1, 1.0470308065414 }, + { NULL, ANIM_0280, 0.503, -1, -1, 1.0470308065414 }, + { NULL, ANIM_0284, 0.001, 0, 0.1, 0.52351540327072 }, + { NULL, ANIM_0284, 0.45, -1, -1, 0.52351540327072 }, }, { - { var800663d8, 0, 0.1, 32, 42, 1.0470308065414 }, - { &g_AttackAnimDualWalk, 0, 0.5, -1, -1, 1.0470308065414 }, - { &g_AttackAnimDualRun, 0, 0.5, -1, -1, 1.0470308065414 }, - { &var80070b14, 0, 0.001, 0, 0.1, 1.0470308065414 }, - { &var80070b14, 0, 0.503, -1, -1, 1.0470308065414 }, - { &var80070b5c, 0, 0.001, 0, 0.1, 0.52351540327072 }, - { &var80070b5c, 0, 0.45, -1, -1, 0.52351540327072 }, + { var800663d8, 0, 0.1, 32, 42, 1.0470308065414 }, + { &g_WalkAttackAnims[4], 0, 0.5, -1, -1, 1.0470308065414 }, + { &g_WalkAttackAnims[5], 0, 0.5, -1, -1, 1.0470308065414 }, + { &var80070b14, 0, 0.001, 0, 0.1, 1.0470308065414 }, + { &var80070b14, 0, 0.503, -1, -1, 1.0470308065414 }, + { &var80070b5c, 0, 0.001, 0, 0.1, 0.52351540327072 }, + { &var80070b5c, 0, 0.45, -1, -1, 0.52351540327072 }, }, }; diff --git a/src/game/portalconv_c.c b/src/game/portalconv_c.c index f968ce872..287e4e936 100644 --- a/src/game/portalconv_c.c +++ b/src/game/portalconv_c.c @@ -33,7 +33,7 @@ s32 portalConvertCoordinates(s32 portalnum, s32 *start, struct portalthing2 *thi right->coord.y += mtx->m[3][1]; right->coord.z += mtx->m[3][2]; - if (right->coord.z <= 0.0f) { + if (right->coord.z < 0.0f) { right->behind = false; } else { right->behind = true; @@ -72,14 +72,14 @@ s32 portalConvertCoordinates(s32 portalnum, s32 *start, struct portalthing2 *thi left++; numfinalvertices++; - mult = -(right[0].coord.z / (right[1].coord.z - right[0].coord.z)); + mult = -right[0].coord.z / (right[1].coord.z - right[0].coord.z); left->coord.x = (right[1].coord.x - right[0].coord.x) * mult + right[0].coord.x; left->coord.y = (right[1].coord.y - right[0].coord.y) * mult + right[0].coord.y; left->coord.z = 0.0f; left++; numfinalvertices++; - } else { - mult = -(right[0].coord.z / (right[1].coord.z - right[0].coord.z)); + } else if (value == 2) { + mult = -right[0].coord.z / (right[1].coord.z - right[0].coord.z); left->coord.x = (right[1].coord.x - right[0].coord.x) * mult + right[0].coord.x; left->coord.y = (right[1].coord.y - right[0].coord.y) * mult + right[0].coord.y; left->coord.z = 0.0f; diff --git a/src/game/race.c b/src/game/race.c index 9aa63a616..d6ada679a 100644 --- a/src/game/race.c +++ b/src/game/race.c @@ -59,33 +59,6 @@ s32 raceInitAnimGroup(struct attackanimconfig *configs) return count; } -#ifdef AVOID_UB -// TODO: make raceInitAnimGroup call this or something -s32 raceInitAnimConfigSingle(struct attackanimconfig *config) -{ - s32 count = 0; - - - if (config->animnum != 0) { - u16 angle = raceGetAnimSumAngleAsInt(config->animnum, 0, floortoint(config->unk04)); - - if (config->unk04 > 0) { - if (angle < 0x8000) { - config->unk08 = angle * 0.00009585853695171f / config->unk04; - } else { - config->unk08 = (angle * 0.00009585853695171f - M_BADTAU) / config->unk04; - } - } else { - config->unk08 = 0; - } - - count++; - } - - return count; -} -#endif - void raceInitAnimGroups(struct attackanimgroup **groups) { s32 i; @@ -152,13 +125,5 @@ void raceInitAnims(void) } raceInitAnimGroup(g_RollAttackAnims); - -#ifdef AVOID_UB - // don't depend on globalvar order - for (s32 i = 0; g_AttackAnimArray[i]; ++i) { - raceInitAnimConfigSingle(g_AttackAnimArray[i]); - } -#else - raceInitAnimGroup(&g_AttackAnimHeavyWalk); -#endif + raceInitAnimGroup(g_WalkAttackAnims); } diff --git a/src/include/data.h b/src/include/data.h index d913fa477..df3ee8ed1 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -181,15 +181,7 @@ extern struct attackanimgroup *g_KneelHeavyAttackAnims[][32]; extern struct attackanimgroup *g_KneelLightAttackAnims[][32]; extern struct attackanimgroup *g_KneelDualAttackAnims[][32]; extern struct attackanimconfig g_RollAttackAnims[]; -extern struct attackanimconfig g_AttackAnimHeavyWalk; -extern struct attackanimconfig g_AttackAnimHeavyRun; -extern struct attackanimconfig g_AttackAnimLightWalk; -extern struct attackanimconfig g_AttackAnimLightRun; -extern struct attackanimconfig g_AttackAnimDualWalk; -extern struct attackanimconfig g_AttackAnimDualRun; -#ifdef AVOID_UB -extern struct attackanimconfig *g_AttackAnimArray[]; -#endif +extern struct attackanimconfig g_WalkAttackAnims[]; extern u32 g_StageFlags; extern struct chrdata *g_BgChrs; extern s16 *g_BgChrnums; diff --git a/src/include/game/chraction.h b/src/include/game/chraction.h index e981d0369..ec85d4269 100644 --- a/src/include/game/chraction.h +++ b/src/include/game/chraction.h @@ -4,16 +4,6 @@ #include "data.h" #include "types.h" -extern struct attackanimconfig var800656c0[]; -extern struct attackanimconfig var80065be0[]; -extern struct attackanimconfig var800663d8[]; -extern struct attackanimconfig g_AttackAnimHeavyWalk; -extern struct attackanimconfig g_AttackAnimHeavyRun; -extern struct attackanimconfig g_AttackAnimLightWalk; -extern struct attackanimconfig g_AttackAnimLightRun; -extern struct attackanimconfig g_AttackAnimDualWalk; -extern struct attackanimconfig g_AttackAnimDualRun; - f32 func0f02dff0(s16 animnum); bool chrGoPosIsWaiting(struct chrdata *chr); bool weaponIsOneHanded(struct prop *prop); diff --git a/src/lib/modelasm_c.c b/src/lib/modelasm_c.c index c6a92477e..c443b9b91 100644 --- a/src/lib/modelasm_c.c +++ b/src/lib/modelasm_c.c @@ -1616,7 +1616,7 @@ f32 sinf(f32 radians) if (t0 < 310) { f14 = radians * 0.31830987334251f; - t1 = (s32) (f14 + 0.5f); + t1 = (s32) (f14 > 0.0f ? f14 + 0.5f : f14 - 0.5f); f14 = t1; f15 = M_PI;