diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index ee9160983..aee466eb3 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -1265,33 +1265,28 @@ struct attackanimgroup *g_KneelDualAttackAnims[][32] = { }, }; -// These 8 animations must be kept together because the code loads a pointer to -// the heavy anims then adds 4 to get to the light anims. Using an array here -// would be less hacky, but then the individual names would be lost. -struct attackanimconfig g_AttackAnimRollHeavyLeft1 = { 0x000b, 76, 0, 0, 20, -1, 98, 161, -1, -1, 93, 161, 0.87252569198608, -0.52351540327072, 0.69802057743073, -0.69802057743073, 1.7000000476837, 2 }; -struct attackanimconfig g_AttackAnimRollHeavyRight1 = { 0x000c, 58, 0, 0, 10, -1, 77, 104, -1, -1, 72, 104, 0.87252569198608, -0.34901028871536, 0.61076802015305, -0.69802057743073, 1.5499999523163, 1.5 }; -struct attackanimconfig g_AttackAnimRollHeavyLeft2 = { 0x000d, 61, 0, 0, 10, -1, 83, 128, -1, -1, 78, 128, 0.87252569198608, -0.52351540327072, 0.87252569198608, -0.52351540327072, 1.2000000476837, 1.2999999523163 }; -struct attackanimconfig g_AttackAnimRollHeavyRight2 = { 0x0027, 63, 0, 0, 10, -1, 73, 114, -1, -1, 68, 114, 0.87252569198608, -0.52351540327072, 0.61076802015305, -0.61076802015305, 1.6499999761581, 1.5 }; -struct attackanimconfig g_AttackAnimRollLightLeft1 = { 0x000b, 76, 0, 0, 20, 76, 98, 161, -1, -1, 93, 161, 0.87252569198608, -0.52351540327072, 0.69802057743073, -0.69802057743073, 1.7000000476837, 2 }; -struct attackanimconfig g_AttackAnimRollLightRight1 = { 0x000c, 58, 0, 0, 10, 63, 77, 104, -1, -1, 72, 104, 0.87252569198608, -0.34901028871536, 0.61076802015305, -0.69802057743073, 1.5499999523163, 1.5 }; -struct attackanimconfig g_AttackAnimRollLightLeft2 = { 0x000d, 61, 0, 0, 10, 56, 83, 128, -1, -1, 78, 128, 0.87252569198608, -0.52351540327072, 0.87252569198608, -0.52351540327072, 1.2000000476837, 1.2999999523163 }; -struct attackanimconfig g_AttackAnimRollLightRight2 = { 0x0027, 63, 0, 0, 10, 50, 73, 114, -1, -1, 68, 114, 0.87252569198608, -0.52351540327072, 0.61076802015305, -0.61076802015305, 1.6499999761581, 1.5 }; - -struct attackanimconfig var80067668 = { 0x0045, 0, 0, 0, 7, 64, 19, 51, 24, 46, 14, 58, 0.87252569198608, -0.69802057743073, 0.52351540327072, -0.7852731347084, 0, 0 }; -struct attackanimconfig var800676b0 = { 0x004a, 0, 0, 1.5707963705063, 14, 76, 26, 31, 31, 38, 15, 49, 0.87252569198608, -0.69802057743073, 0.52351540327072, -1.0470308065414, 0, 0 }; -struct attackanimconfig var800676f8 = { 0x004c, 26, 0, 0, 25, 89, 41, 63, 41, 51, 21, 80, 0.87252569198608, -0.69802057743073, 0.34901028871536, -1.1342834234238, 0, 0 }; -struct attackanimconfig var80067740 = { 0x0050, 18, 0, 1.5707963705063, 11, 78, 33, 52, 35, 45, 15, 66, 0.87252569198608, -0.087252572178841, 0.69802057743073, -0.7852731347084, 1.5, 1 }; -struct attackanimconfig var80067788 = { 0x007a, 26, 0, 0, 7, 92, 28, 68, -1, -1, 11, 73, 0.87252569198608, -0.69802057743073, 0.69802057743073, -0.69802057743073, 0, 0 }; -struct attackanimconfig var800677d0 = { 0x007b, 26, 0, 1.5707963705063, 9, 112, 38, 87, -1, -1, 19, 98, 0.87252569198608, -0.69802057743073, 0.43626284599304, -0.43626284599304, 0, 0 }; -struct attackanimconfig var80067818 = { 0x0074, 22, 0, 0, 10, 11, 34, 87, -1, -1, 17, 104, 0.87252569198608, -0.69802057743073, 0.61076802015305, -0.7852731347084, 0, 0 }; -struct attackanimconfig var80067860 = { 0x0075, 28, 0, 1.5707963705063, 15, 108, 34, 73, -1, -1, 17, 93, 0.87252569198608, -0.69802057743073, 0.52351540327072, -0.7852731347084, 0, 0 }; -struct attackanimconfig var800678a8 = { 0x007a, 26, 0, 0, 7, 92, 28, 68, -1, -1, 11, 73, 0.87252569198608, -0.69802057743073, 0.69802057743073, -0.69802057743073, 0, 0 }; -struct attackanimconfig var800678f0 = { 0x007d, 25, 0, 1.5707963705063, 10, 112, 32, 86, -1, -1, 19, 97, 0.87252569198608, -0.69802057743073, 0.43626284599304, -0.43626284599304, 0, 0 }; -struct attackanimconfig var80067938 = { 0x0077, 25, 0, 0, 9, 92, 33, 62, -1, -1, 18, 69, 0.87252569198608, -0.69802057743073, 0.61076802015305, -0.7852731347084, 0, 0 }; - -struct attackanimconfig var80067980[] = { - { 0x0078, 19, 0, 1.5707963705063, 3, 95, 30, 64, -1, -1, 14, 71, 0.87252569198608, -0.69802057743073, 0.52351540327072, -0.7852731347084, 1.5, 1 }, - { 0x0000, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +struct attackanimconfig g_RollAttackAnims[] = { + { 0x000b, 76, 0, 0, 20, -1, 98, 161, -1, -1, 93, 161, 0.87252569198608, -0.52351540327072, 0.69802057743073, -0.69802057743073, 1.7000000476837, 2 }, + { 0x000c, 58, 0, 0, 10, -1, 77, 104, -1, -1, 72, 104, 0.87252569198608, -0.34901028871536, 0.61076802015305, -0.69802057743073, 1.5499999523163, 1.5 }, + { 0x000d, 61, 0, 0, 10, -1, 83, 128, -1, -1, 78, 128, 0.87252569198608, -0.52351540327072, 0.87252569198608, -0.52351540327072, 1.2000000476837, 1.2999999523163 }, + { 0x0027, 63, 0, 0, 10, -1, 73, 114, -1, -1, 68, 114, 0.87252569198608, -0.52351540327072, 0.61076802015305, -0.61076802015305, 1.6499999761581, 1.5 }, + { 0x000b, 76, 0, 0, 20, 76, 98, 161, -1, -1, 93, 161, 0.87252569198608, -0.52351540327072, 0.69802057743073, -0.69802057743073, 1.7000000476837, 2 }, + { 0x000c, 58, 0, 0, 10, 63, 77, 104, -1, -1, 72, 104, 0.87252569198608, -0.34901028871536, 0.61076802015305, -0.69802057743073, 1.5499999523163, 1.5 }, + { 0x000d, 61, 0, 0, 10, 56, 83, 128, -1, -1, 78, 128, 0.87252569198608, -0.52351540327072, 0.87252569198608, -0.52351540327072, 1.2000000476837, 1.2999999523163 }, + { 0x0027, 63, 0, 0, 10, 50, 73, 114, -1, -1, 68, 114, 0.87252569198608, -0.52351540327072, 0.61076802015305, -0.61076802015305, 1.6499999761581, 1.5 }, + { 0x0045, 0, 0, 0, 7, 64, 19, 51, 24, 46, 14, 58, 0.87252569198608, -0.69802057743073, 0.52351540327072, -0.7852731347084, 0, 0 }, + { 0x004a, 0, 0, 1.5707963705063, 14, 76, 26, 31, 31, 38, 15, 49, 0.87252569198608, -0.69802057743073, 0.52351540327072, -1.0470308065414, 0, 0 }, + { 0x004c, 26, 0, 0, 25, 89, 41, 63, 41, 51, 21, 80, 0.87252569198608, -0.69802057743073, 0.34901028871536, -1.1342834234238, 0, 0 }, + { 0x0050, 18, 0, 1.5707963705063, 11, 78, 33, 52, 35, 45, 15, 66, 0.87252569198608, -0.087252572178841, 0.69802057743073, -0.7852731347084, 1.5, 1 }, + { 0x007a, 26, 0, 0, 7, 92, 28, 68, -1, -1, 11, 73, 0.87252569198608, -0.69802057743073, 0.69802057743073, -0.69802057743073, 0, 0 }, + { 0x007b, 26, 0, 1.5707963705063, 9, 112, 38, 87, -1, -1, 19, 98, 0.87252569198608, -0.69802057743073, 0.43626284599304, -0.43626284599304, 0, 0 }, + { 0x0074, 22, 0, 0, 10, 11, 34, 87, -1, -1, 17, 104, 0.87252569198608, -0.69802057743073, 0.61076802015305, -0.7852731347084, 0, 0 }, + { 0x0075, 28, 0, 1.5707963705063, 15, 108, 34, 73, -1, -1, 17, 93, 0.87252569198608, -0.69802057743073, 0.52351540327072, -0.7852731347084, 0, 0 }, + { 0x007a, 26, 0, 0, 7, 92, 28, 68, -1, -1, 11, 73, 0.87252569198608, -0.69802057743073, 0.69802057743073, -0.69802057743073, 0, 0 }, + { 0x007d, 25, 0, 1.5707963705063, 10, 112, 32, 86, -1, -1, 19, 97, 0.87252569198608, -0.69802057743073, 0.43626284599304, -0.43626284599304, 0, 0 }, + { 0x0077, 25, 0, 0, 9, 92, 33, 62, -1, -1, 18, 69, 0.87252569198608, -0.69802057743073, 0.61076802015305, -0.7852731347084, 0, 0 }, + { 0x0078, 19, 0, 1.5707963705063, 3, 95, 30, 64, -1, -1, 14, 71, 0.87252569198608, -0.69802057743073, 0.52351540327072, -0.7852731347084, 1.5, 1 }, + { 0x0000, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; struct attackanimconfig g_AttackAnimHeavyWalk = { 0x0030, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0.87252569198608, -0.52351540327072, 0.52351540327072, -0.52351540327072, 1.3999999761581, 1.2999999523163 }; @@ -2658,23 +2653,25 @@ void chrAttackRoll(struct chrdata *chr, bool toleft) } if ((toleft && !flip) || (!toleft && flip)) { + // Roll to left if (random() % 2) { - animcfg = &g_AttackAnimRollHeavyLeft1; + animcfg = &g_RollAttackAnims[0]; } else { - animcfg = &g_AttackAnimRollHeavyLeft2; + animcfg = &g_RollAttackAnims[2]; } } else { + // Roll to right if (random() % 2) { - animcfg = &g_AttackAnimRollHeavyRight1; + animcfg = &g_RollAttackAnims[1]; } else { - animcfg = &g_AttackAnimRollHeavyRight2; + animcfg = &g_RollAttackAnims[3]; } } if (onehanded) { - // Move the animation pointer to the light-weight version of the same - // animation. The light-weight versions are defined immediately after - // the heavy versions. + // Move the animation pointer to the one-handed version of the same + // animation. The one-handed versions are in the array immediately after + // the four heavy-weapon versions. animcfg += 4; } @@ -3853,10 +3850,10 @@ bool chrIsAnimPreventingArgh(struct chrdata *chr, f32 *dst) } else if (chr->actiontype == ACT_ATTACKROLL && modelGetAnimNum(chr->model) == chr->act_attack.animcfg->animnum) { if (chr->act_attack.onehanded) { - if (chr->act_attack.animcfg == &g_AttackAnimRollLightLeft1 - || chr->act_attack.animcfg == &g_AttackAnimRollLightRight1 - || chr->act_attack.animcfg == &g_AttackAnimRollLightLeft2 - || chr->act_attack.animcfg == &g_AttackAnimRollLightRight2) { + if (chr->act_attack.animcfg == &g_RollAttackAnims[4] + || chr->act_attack.animcfg == &g_RollAttackAnims[5] + || chr->act_attack.animcfg == &g_RollAttackAnims[6] + || chr->act_attack.animcfg == &g_RollAttackAnims[7]) { endframe = chr->act_attack.animcfg->unk04 - 8; if (chr->act_attack.animcfg->unk14 < chr->act_attack.animcfg->unk04) { @@ -18221,19 +18218,19 @@ glabel func0f041c44 /* f041c5c: 54400032 */ bnezl $v0,.L0f041d28 /* f041c60: 00001025 */ or $v0,$zero,$zero /* f041c64: 8c82002c */ lw $v0,0x2c($a0) -/* f041c68: 3c0e8006 */ lui $t6,%hi(g_AttackAnimRollHeavyLeft2) -/* f041c6c: 25ce74b8 */ addiu $t6,$t6,%lo(g_AttackAnimRollHeavyLeft2) +/* f041c68: 3c0e8006 */ lui $t6,%hi(g_RollAttackAnims+0x90) +/* f041c6c: 25ce74b8 */ addiu $t6,$t6,%lo(g_RollAttackAnims+0x90) /* f041c70: 11c20004 */ beq $t6,$v0,.L0f041c84 -/* f041c74: 3c0f8006 */ lui $t7,%hi(g_AttackAnimRollHeavyRight2) -/* f041c78: 25ef7500 */ addiu $t7,$t7,%lo(g_AttackAnimRollHeavyRight2) +/* f041c74: 3c0f8006 */ lui $t7,%hi(g_RollAttackAnims+0xd8) +/* f041c78: 25ef7500 */ addiu $t7,$t7,%lo(g_RollAttackAnims+0xd8) /* f041c7c: 55e2002a */ bnel $t7,$v0,.L0f041d28 /* f041c80: 00001025 */ or $v0,$zero,$zero .L0f041c84: /* f041c84: 8c820020 */ lw $v0,0x20($a0) -/* f041c88: 3c098006 */ lui $t1,%hi(g_AttackAnimRollHeavyRight1) +/* f041c88: 3c098006 */ lui $t1,%hi(g_RollAttackAnims+0x48) /* f041c8c: 24080002 */ addiu $t0,$zero,0x2 /* f041c90: 8c580020 */ lw $t8,0x20($v0) -/* f041c94: 25297470 */ addiu $t1,$t1,%lo(g_AttackAnimRollHeavyRight1) +/* f041c94: 25297470 */ addiu $t1,$t1,%lo(g_RollAttackAnims+0x48) /* f041c98: 3c053f33 */ lui $a1,0x3f33 /* f041c9c: 83190008 */ lb $t9,0x8($t8) /* f041ca0: 3c063f8f */ lui $a2,0x3f8f @@ -18247,17 +18244,17 @@ glabel func0f041c44 /* f041cc0: afa2002c */ sw $v0,0x2c($sp) /* f041cc4: 3c0141b0 */ lui $at,0x41b0 /* f041cc8: 44812000 */ mtc1 $at,$f4 -/* f041ccc: 3c058006 */ lui $a1,%hi(g_AttackAnimRollHeavyRight1) -/* f041cd0: 3c078006 */ lui $a3,%hi(g_AttackAnimRollHeavyRight1+0x1c) -/* f041cd4: 8ce7748c */ lw $a3,%lo(g_AttackAnimRollHeavyRight1+0x1c)($a3) -/* f041cd8: 84a57470 */ lh $a1,%lo(g_AttackAnimRollHeavyRight1)($a1) +/* f041ccc: 3c058006 */ lui $a1,%hi(g_RollAttackAnims+0x48) +/* f041cd0: 3c078006 */ lui $a3,%hi(g_RollAttackAnims+0x48+0x1c) +/* f041cd4: 8ce7748c */ lw $a3,%lo(g_RollAttackAnims+0x48+0x1c)($a3) +/* f041cd8: 84a57470 */ lh $a1,%lo(g_RollAttackAnims+0x48)($a1) /* f041cdc: 8fa4002c */ lw $a0,0x2c($sp) /* f041ce0: 8fa60024 */ lw $a2,0x24($sp) /* f041ce4: e7a00010 */ swc1 $f0,0x10($sp) /* f041ce8: 0c007733 */ jal modelSetAnimation /* f041cec: e7a40014 */ swc1 $f4,0x14($sp) -/* f041cf0: 3c018006 */ lui $at,%hi(g_AttackAnimRollHeavyRight1+0x14) -/* f041cf4: c4207484 */ lwc1 $f0,%lo(g_AttackAnimRollHeavyRight1+0x14)($at) +/* f041cf0: 3c018006 */ lui $at,%hi(g_RollAttackAnims+0x48+0x14) +/* f041cf4: c4207484 */ lwc1 $f0,%lo(g_RollAttackAnims+0x48+0x14)($at) /* f041cf8: 44803000 */ mtc1 $zero,$f6 /* f041cfc: 00000000 */ nop /* f041d00: 4600303e */ c.le.s $f6,$f0 @@ -20075,382 +20072,131 @@ void chrTickAttack(struct chrdata *chr) func0f041e48(chr); } -GLOBAL_ASM( -glabel chrTickAttackRoll -/* f0433e0: 27bdffb8 */ addiu $sp,$sp,-72 -/* f0433e4: afbf001c */ sw $ra,0x1c($sp) -/* f0433e8: afa40048 */ sw $a0,0x48($sp) -/* f0433ec: 8c8f0014 */ lw $t7,0x14($a0) -/* f0433f0: 000fc280 */ sll $t8,$t7,0xa -/* f0433f4: 0703000e */ bgezl $t8,.L0f043430 -/* f0433f8: 8fa90048 */ lw $t1,0x48($sp) -/* f0433fc: 0c0076e5 */ jal modelIsAnimMerging -/* f043400: 8c840020 */ lw $a0,0x20($a0) -/* f043404: 5440014c */ bnezl $v0,.L0f043938 -/* f043408: 8fbf001c */ lw $ra,0x1c($sp) -/* f04340c: 0fc0c290 */ jal chrAttackRollChooseAnimation -/* f043410: 8fa40048 */ lw $a0,0x48($sp) -/* f043414: 8fa20048 */ lw $v0,0x48($sp) -/* f043418: 3c01ffdf */ lui $at,0xffdf -/* f04341c: 3421ffff */ ori $at,$at,0xffff -/* f043420: 8c590014 */ lw $t9,0x14($v0) -/* f043424: 03214024 */ and $t0,$t9,$at -/* f043428: ac480014 */ sw $t0,0x14($v0) -/* f04342c: 8fa90048 */ lw $t1,0x48($sp) -.L0f043430: -/* f043430: 812a0035 */ lb $t2,0x35($t1) -/* f043434: 1140013d */ beqz $t2,.L0f04392c -/* f043438: 00000000 */ nop -/* f04343c: 8d240020 */ lw $a0,0x20($t1) -/* f043440: 0c00745f */ jal modelGetCurAnimFrame -/* f043444: afa40044 */ sw $a0,0x44($sp) -/* f043448: 8fa70048 */ lw $a3,0x48($sp) -/* f04344c: 3c0b8006 */ lui $t3,%hi(g_AttackAnimRollLightLeft1) -/* f043450: 256b7548 */ addiu $t3,$t3,%lo(g_AttackAnimRollLightLeft1) -/* f043454: 8ce2002c */ lw $v0,0x2c($a3) -/* f043458: 3c0c8006 */ lui $t4,%hi(g_AttackAnimRollLightRight1) -/* f04345c: 46000306 */ mov.s $f12,$f0 -/* f043460: 11620009 */ beq $t3,$v0,.L0f043488 -/* f043464: 258c7590 */ addiu $t4,$t4,%lo(g_AttackAnimRollLightRight1) -/* f043468: 11820007 */ beq $t4,$v0,.L0f043488 -/* f04346c: 3c0d8006 */ lui $t5,%hi(g_AttackAnimRollLightLeft2) -/* f043470: 25ad75d8 */ addiu $t5,$t5,%lo(g_AttackAnimRollLightLeft2) -/* f043474: 11a20004 */ beq $t5,$v0,.L0f043488 -/* f043478: 3c0f8006 */ lui $t7,%hi(g_AttackAnimRollLightRight2) -/* f04347c: 25ef7620 */ addiu $t7,$t7,%lo(g_AttackAnimRollLightRight2) -/* f043480: 15e200c8 */ bne $t7,$v0,.L0f0437a4 -/* f043484: 3c0c8006 */ lui $t4,%hi(var80067668) -.L0f043488: -/* f043488: c4440014 */ lwc1 $f4,0x14($v0) -/* f04348c: 8fb80044 */ lw $t8,0x44($sp) -/* f043490: 4600203e */ c.le.s $f4,$f0 -/* f043494: 00000000 */ nop -/* f043498: 450000c0 */ bc1f .L0f04379c -/* f04349c: 00000000 */ nop -/* f0434a0: 8f0e0020 */ lw $t6,0x20($t8) -/* f0434a4: 3c014180 */ lui $at,0x4180 -/* f0434a8: 44811000 */ mtc1 $at,$f2 -/* f0434ac: 81d90008 */ lb $t9,0x8($t6) -/* f0434b0: 24430120 */ addiu $v1,$v0,0x120 -/* f0434b4: afb90038 */ sw $t9,0x38($sp) -/* f0434b8: 80e80039 */ lb $t0,0x39($a3) -/* f0434bc: 11000010 */ beqz $t0,.L0f043500 -/* f0434c0: 00000000 */ nop -/* f0434c4: 80ea0038 */ lb $t2,0x38($a3) -/* f0434c8: 1140000d */ beqz $t2,.L0f043500 -/* f0434cc: 00000000 */ nop -/* f0434d0: afa3003c */ sw $v1,0x3c($sp) -/* f0434d4: 0c004b70 */ jal random -/* f0434d8: e7a20034 */ swc1 $f2,0x34($sp) -/* f0434dc: 30490001 */ andi $t1,$v0,0x1 -/* f0434e0: 8fa3003c */ lw $v1,0x3c($sp) -/* f0434e4: 15200004 */ bnez $t1,.L0f0434f8 -/* f0434e8: c7a20034 */ lwc1 $f2,0x34($sp) -/* f0434ec: 24630120 */ addiu $v1,$v1,0x120 -/* f0434f0: 10000003 */ b .L0f043500 -/* f0434f4: 8fa70048 */ lw $a3,0x48($sp) -.L0f0434f8: -/* f0434f8: 24630240 */ addiu $v1,$v1,0x240 -/* f0434fc: 8fa70048 */ lw $a3,0x48($sp) -.L0f043500: -/* f043500: 3c028006 */ lui $v0,%hi(g_AttackAnimRollHeavyLeft1) -/* f043504: 24427428 */ addiu $v0,$v0,%lo(g_AttackAnimRollHeavyLeft1) -/* f043508: 244b0240 */ addiu $t3,$v0,0x240 -/* f04350c: 146b0005 */ bne $v1,$t3,.L0f043524 -/* f043510: 00e02025 */ or $a0,$a3,$zero -/* f043514: 3c0141c0 */ lui $at,0x41c0 -/* f043518: 44811000 */ mtc1 $at,$f2 -/* f04351c: 10000043 */ b .L0f04362c -/* f043520: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043524: -/* f043524: 244c0288 */ addiu $t4,$v0,0x288 -/* f043528: 146c0005 */ bne $v1,$t4,.L0f043540 -/* f04352c: 244d02d0 */ addiu $t5,$v0,0x2d0 -/* f043530: 3c0141c0 */ lui $at,0x41c0 -/* f043534: 44811000 */ mtc1 $at,$f2 -/* f043538: 1000003c */ b .L0f04362c -/* f04353c: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043540: -/* f043540: 146d0005 */ bne $v1,$t5,.L0f043558 -/* f043544: 244f0318 */ addiu $t7,$v0,0x318 -/* f043548: 3c014200 */ lui $at,0x4200 -/* f04354c: 44811000 */ mtc1 $at,$f2 -/* f043550: 10000036 */ b .L0f04362c -/* f043554: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043558: -/* f043558: 146f0005 */ bne $v1,$t7,.L0f043570 -/* f04355c: 24580360 */ addiu $t8,$v0,0x360 -/* f043560: 3c014230 */ lui $at,0x4230 -/* f043564: 44811000 */ mtc1 $at,$f2 -/* f043568: 10000030 */ b .L0f04362c -/* f04356c: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043570: -/* f043570: 14780005 */ bne $v1,$t8,.L0f043588 -/* f043574: 244e03a8 */ addiu $t6,$v0,0x3a8 -/* f043578: 3c0141c0 */ lui $at,0x41c0 -/* f04357c: 44811000 */ mtc1 $at,$f2 -/* f043580: 1000002a */ b .L0f04362c -/* f043584: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043588: -/* f043588: 146e0005 */ bne $v1,$t6,.L0f0435a0 -/* f04358c: 245903f0 */ addiu $t9,$v0,0x3f0 -/* f043590: 3c014208 */ lui $at,0x4208 -/* f043594: 44811000 */ mtc1 $at,$f2 -/* f043598: 10000024 */ b .L0f04362c -/* f04359c: 240d0002 */ addiu $t5,$zero,0x2 -.L0f0435a0: -/* f0435a0: 14790005 */ bne $v1,$t9,.L0f0435b8 -/* f0435a4: 24480438 */ addiu $t0,$v0,0x438 -/* f0435a8: 3c014200 */ lui $at,0x4200 -/* f0435ac: 44811000 */ mtc1 $at,$f2 -/* f0435b0: 1000001e */ b .L0f04362c -/* f0435b4: 240d0002 */ addiu $t5,$zero,0x2 -.L0f0435b8: -/* f0435b8: 14680005 */ bne $v1,$t0,.L0f0435d0 -/* f0435bc: 244a0480 */ addiu $t2,$v0,0x480 -/* f0435c0: 3c014230 */ lui $at,0x4230 -/* f0435c4: 44811000 */ mtc1 $at,$f2 -/* f0435c8: 10000018 */ b .L0f04362c -/* f0435cc: 240d0002 */ addiu $t5,$zero,0x2 -.L0f0435d0: -/* f0435d0: 146a0005 */ bne $v1,$t2,.L0f0435e8 -/* f0435d4: 244904c8 */ addiu $t1,$v0,0x4c8 -/* f0435d8: 3c0141c0 */ lui $at,0x41c0 -/* f0435dc: 44811000 */ mtc1 $at,$f2 -/* f0435e0: 10000012 */ b .L0f04362c -/* f0435e4: 240d0002 */ addiu $t5,$zero,0x2 -.L0f0435e8: -/* f0435e8: 14690005 */ bne $v1,$t1,.L0f043600 -/* f0435ec: 244b0510 */ addiu $t3,$v0,0x510 -/* f0435f0: 3c014208 */ lui $at,0x4208 -/* f0435f4: 44811000 */ mtc1 $at,$f2 -/* f0435f8: 1000000c */ b .L0f04362c -/* f0435fc: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043600: -/* f043600: 146b0005 */ bne $v1,$t3,.L0f043618 -/* f043604: 244c0558 */ addiu $t4,$v0,0x558 -/* f043608: 3c014200 */ lui $at,0x4200 -/* f04360c: 44811000 */ mtc1 $at,$f2 -/* f043610: 10000006 */ b .L0f04362c -/* f043614: 240d0002 */ addiu $t5,$zero,0x2 -.L0f043618: -/* f043618: 146c0003 */ bne $v1,$t4,.L0f043628 -/* f04361c: 3c014230 */ lui $at,0x4230 -/* f043620: 44811000 */ mtc1 $at,$f2 -/* f043624: 00000000 */ nop -.L0f043628: -/* f043628: 240d0002 */ addiu $t5,$zero,0x2 -.L0f04362c: -/* f04362c: a0ed0030 */ sb $t5,0x30($a3) -/* f043630: ace3002c */ sw $v1,0x2c($a3) -/* f043634: a0e00008 */ sb $zero,0x8($a3) -/* f043638: 3c063f4c */ lui $a2,0x3f4c -/* f04363c: 34c6cccd */ ori $a2,$a2,0xcccd -/* f043640: e7a20034 */ swc1 $f2,0x34($sp) -/* f043644: afa3003c */ sw $v1,0x3c($sp) -/* f043648: 0fc0b857 */ jal chrGetRangedSpeed -/* f04364c: 3c053f00 */ lui $a1,0x3f00 -/* f043650: 8fa3003c */ lw $v1,0x3c($sp) -/* f043654: c7a20034 */ lwc1 $f2,0x34($sp) -/* f043658: 8fa40044 */ lw $a0,0x44($sp) -/* f04365c: 84650000 */ lh $a1,0x0($v1) -/* f043660: 8c670010 */ lw $a3,0x10($v1) -/* f043664: e7a00010 */ swc1 $f0,0x10($sp) -/* f043668: 8fa60038 */ lw $a2,0x38($sp) -/* f04366c: 0c007733 */ jal modelSetAnimation -/* f043670: e7a20014 */ swc1 $f2,0x14($sp) -/* f043674: 8faf0048 */ lw $t7,0x48($sp) -/* f043678: 8fa3003c */ lw $v1,0x3c($sp) -/* f04367c: c7a20034 */ lwc1 $f2,0x34($sp) -/* f043680: 81f80036 */ lb $t8,0x36($t7) -/* f043684: 53000014 */ beqzl $t8,.L0f0436d8 -/* f043688: c4600020 */ lwc1 $f0,0x20($v1) -/* f04368c: c4600024 */ lwc1 $f0,0x24($v1) -/* f043690: 44803000 */ mtc1 $zero,$f6 -/* f043694: 8fa40044 */ lw $a0,0x44($sp) -/* f043698: 4600303e */ c.le.s $f6,$f0 -/* f04369c: 00000000 */ nop -/* f0436a0: 45020008 */ bc1fl .L0f0436c4 -/* f0436a4: 8c65001c */ lw $a1,0x1c($v1) -/* f0436a8: 44050000 */ mfc1 $a1,$f0 -/* f0436ac: 8fa40044 */ lw $a0,0x44($sp) -/* f0436b0: 0c007787 */ jal modelSetAnimEndFrame -/* f0436b4: e7a20034 */ swc1 $f2,0x34($sp) -/* f0436b8: 1000001d */ b .L0f043730 -/* f0436bc: c7a20034 */ lwc1 $f2,0x34($sp) -/* f0436c0: 8c65001c */ lw $a1,0x1c($v1) -.L0f0436c4: -/* f0436c4: 0c007787 */ jal modelSetAnimEndFrame -/* f0436c8: e7a20034 */ swc1 $f2,0x34($sp) -/* f0436cc: 10000018 */ b .L0f043730 -/* f0436d0: c7a20034 */ lwc1 $f2,0x34($sp) -/* f0436d4: c4600020 */ lwc1 $f0,0x20($v1) -.L0f0436d8: -/* f0436d8: 44804000 */ mtc1 $zero,$f8 -/* f0436dc: 8fa40044 */ lw $a0,0x44($sp) -/* f0436e0: 4600403e */ c.le.s $f8,$f0 -/* f0436e4: 00000000 */ nop -/* f0436e8: 45020007 */ bc1fl .L0f043708 -/* f0436ec: c4600014 */ lwc1 $f0,0x14($v1) -/* f0436f0: 44050000 */ mfc1 $a1,$f0 -/* f0436f4: 0c007787 */ jal modelSetAnimEndFrame -/* f0436f8: e7a20034 */ swc1 $f2,0x34($sp) -/* f0436fc: 1000000c */ b .L0f043730 -/* f043700: c7a20034 */ lwc1 $f2,0x34($sp) -/* f043704: c4600014 */ lwc1 $f0,0x14($v1) -.L0f043708: -/* f043708: 44805000 */ mtc1 $zero,$f10 -/* f04370c: 8fa40044 */ lw $a0,0x44($sp) -/* f043710: 4600503e */ c.le.s $f10,$f0 -/* f043714: 00000000 */ nop -/* f043718: 45020006 */ bc1fl .L0f043734 -/* f04371c: 8fae0048 */ lw $t6,0x48($sp) -/* f043720: 44050000 */ mfc1 $a1,$f0 -/* f043724: 0c007787 */ jal modelSetAnimEndFrame -/* f043728: e7a20034 */ swc1 $f2,0x34($sp) -/* f04372c: c7a20034 */ lwc1 $f2,0x34($sp) -.L0f043730: -/* f043730: 8fae0048 */ lw $t6,0x48($sp) -.L0f043734: -/* f043734: 44808000 */ mtc1 $zero,$f16 -/* f043738: 8fa40044 */ lw $a0,0x44($sp) -/* f04373c: 8dd9002c */ lw $t9,0x2c($t6) -/* f043740: c732000c */ lwc1 $f18,0xc($t9) -/* f043744: 46128032 */ c.eq.s $f16,$f18 -/* f043748: 00000000 */ nop -/* f04374c: 45010013 */ bc1t .L0f04379c -/* f043750: 00000000 */ nop -/* f043754: 8c880008 */ lw $t0,0x8($a0) -/* f043758: 8d050000 */ lw $a1,0x0($t0) -/* f04375c: 0c006a87 */ jal modelGetNodeRwData -/* f043760: e7a20034 */ swc1 $f2,0x34($sp) -/* f043764: c7a20034 */ lwc1 $f2,0x34($sp) -/* f043768: e442005c */ swc1 $f2,0x5c($v0) -/* f04376c: 8faa0048 */ lw $t2,0x48($sp) -/* f043770: 8d49002c */ lw $t1,0x2c($t2) -/* f043774: c524000c */ lwc1 $f4,0xc($t1) -/* f043778: 46002187 */ neg.s $f6,$f4 -/* f04377c: 46023203 */ div.s $f8,$f6,$f2 -/* f043780: e4480058 */ swc1 $f8,0x58($v0) -/* f043784: 8fab0038 */ lw $t3,0x38($sp) -/* f043788: 11600004 */ beqz $t3,.L0f04379c -/* f04378c: 00000000 */ nop -/* f043790: c44a0058 */ lwc1 $f10,0x58($v0) -/* f043794: 46005407 */ neg.s $f16,$f10 -/* f043798: e4500058 */ swc1 $f16,0x58($v0) -.L0f04379c: -/* f04379c: 10000063 */ b .L0f04392c -/* f0437a0: 00000000 */ nop -.L0f0437a4: -/* f0437a4: 258c7668 */ addiu $t4,$t4,%lo(var80067668) -/* f0437a8: 11820022 */ beq $t4,$v0,.L0f043834 -/* f0437ac: 3c0d8006 */ lui $t5,%hi(var800676b0) -/* f0437b0: 25ad76b0 */ addiu $t5,$t5,%lo(var800676b0) -/* f0437b4: 11a2001f */ beq $t5,$v0,.L0f043834 -/* f0437b8: 3c0f8006 */ lui $t7,%hi(var800676f8) -/* f0437bc: 25ef76f8 */ addiu $t7,$t7,%lo(var800676f8) -/* f0437c0: 11e2001c */ beq $t7,$v0,.L0f043834 -/* f0437c4: 3c188006 */ lui $t8,%hi(var80067740) -/* f0437c8: 27187740 */ addiu $t8,$t8,%lo(var80067740) -/* f0437cc: 13020019 */ beq $t8,$v0,.L0f043834 -/* f0437d0: 3c0e8006 */ lui $t6,%hi(var80067788) -/* f0437d4: 25ce7788 */ addiu $t6,$t6,%lo(var80067788) -/* f0437d8: 11c20016 */ beq $t6,$v0,.L0f043834 -/* f0437dc: 3c198006 */ lui $t9,%hi(var800677d0) -/* f0437e0: 273977d0 */ addiu $t9,$t9,%lo(var800677d0) -/* f0437e4: 13220013 */ beq $t9,$v0,.L0f043834 -/* f0437e8: 3c088006 */ lui $t0,%hi(var80067818) -/* f0437ec: 25087818 */ addiu $t0,$t0,%lo(var80067818) -/* f0437f0: 11020010 */ beq $t0,$v0,.L0f043834 -/* f0437f4: 3c0a8006 */ lui $t2,%hi(var80067860) -/* f0437f8: 254a7860 */ addiu $t2,$t2,%lo(var80067860) -/* f0437fc: 1142000d */ beq $t2,$v0,.L0f043834 -/* f043800: 3c098006 */ lui $t1,%hi(var800678a8) -/* f043804: 252978a8 */ addiu $t1,$t1,%lo(var800678a8) -/* f043808: 1122000a */ beq $t1,$v0,.L0f043834 -/* f04380c: 3c0b8006 */ lui $t3,%hi(var800678f0) -/* f043810: 256b78f0 */ addiu $t3,$t3,%lo(var800678f0) -/* f043814: 11620007 */ beq $t3,$v0,.L0f043834 -/* f043818: 3c0c8006 */ lui $t4,%hi(var80067938) -/* f04381c: 258c7938 */ addiu $t4,$t4,%lo(var80067938) -/* f043820: 11820004 */ beq $t4,$v0,.L0f043834 -/* f043824: 3c0d8006 */ lui $t5,%hi(var80067980) -/* f043828: 25ad7980 */ addiu $t5,$t5,%lo(var80067980) -/* f04382c: 15a2003f */ bne $t5,$v0,.L0f04392c -/* f043830: 00000000 */ nop -.L0f043834: -/* f043834: 80ef0036 */ lb $t7,0x36($a3) -/* f043838: 15e0003c */ bnez $t7,.L0f04392c -/* f04383c: 00000000 */ nop -/* f043840: c4420024 */ lwc1 $f2,0x24($v0) -/* f043844: 44809000 */ mtc1 $zero,$f18 -/* f043848: 00000000 */ nop -/* f04384c: 4602903c */ c.lt.s $f18,$f2 -/* f043850: 00000000 */ nop -/* f043854: 45000035 */ bc1f .L0f04392c -/* f043858: 00000000 */ nop -/* f04385c: 4602003e */ c.le.s $f0,$f2 -/* f043860: 8fa40044 */ lw $a0,0x44($sp) -/* f043864: 45000031 */ bc1f .L0f04392c -/* f043868: 00000000 */ nop -/* f04386c: 0c007468 */ jal modelGetAnimEndFrame -/* f043870: e7ac0040 */ swc1 $f12,0x40($sp) -/* f043874: c7ac0040 */ lwc1 $f12,0x40($sp) -/* f043878: 460c003e */ c.le.s $f0,$f12 -/* f04387c: 00000000 */ nop -/* f043880: 4500002a */ bc1f .L0f04392c -/* f043884: 00000000 */ nop -/* f043888: 0c00744f */ jal modelGetAnimNum -/* f04388c: 8fa40044 */ lw $a0,0x44($sp) -/* f043890: 3c063f4c */ lui $a2,0x3f4c -/* f043894: 34c6cccd */ ori $a2,$a2,0xcccd -/* f043898: a7a20026 */ sh $v0,0x26($sp) -/* f04389c: 8fa40048 */ lw $a0,0x48($sp) -/* f0438a0: 0fc0b857 */ jal chrGetRangedSpeed -/* f0438a4: 3c053f00 */ lui $a1,0x3f00 -/* f0438a8: 8fa40044 */ lw $a0,0x44($sp) -/* f0438ac: 8fb90048 */ lw $t9,0x48($sp) -/* f0438b0: 3c014180 */ lui $at,0x4180 -/* f0438b4: 8c8e0020 */ lw $t6,0x20($a0) -/* f0438b8: 8f28002c */ lw $t0,0x2c($t9) -/* f0438bc: 44812000 */ mtc1 $at,$f4 -/* f0438c0: 81c60008 */ lb $a2,0x8($t6) -/* f0438c4: 8d070024 */ lw $a3,0x24($t0) -/* f0438c8: e7a00010 */ swc1 $f0,0x10($sp) -/* f0438cc: 87a50026 */ lh $a1,0x26($sp) -/* f0438d0: 0c007733 */ jal modelSetAnimation -/* f0438d4: e7a40014 */ swc1 $f4,0x14($sp) -/* f0438d8: 8faa0048 */ lw $t2,0x48($sp) -/* f0438dc: 8fac0048 */ lw $t4,0x48($sp) -/* f0438e0: 81490037 */ lb $t1,0x37($t2) -/* f0438e4: 5120000e */ beqzl $t1,.L0f043920 -/* f0438e8: 8d8d002c */ lw $t5,0x2c($t4) -/* f0438ec: 8d4b002c */ lw $t3,0x2c($t2) -/* f0438f0: 44803000 */ mtc1 $zero,$f6 -/* f0438f4: c5600014 */ lwc1 $f0,0x14($t3) -/* f0438f8: 4600303e */ c.le.s $f6,$f0 -/* f0438fc: 00000000 */ nop -/* f043900: 4500000a */ bc1f .L0f04392c -/* f043904: 00000000 */ nop -/* f043908: 44050000 */ mfc1 $a1,$f0 -/* f04390c: 0c007787 */ jal modelSetAnimEndFrame -/* f043910: 8fa40044 */ lw $a0,0x44($sp) -/* f043914: 10000005 */ b .L0f04392c -/* f043918: 00000000 */ nop -/* f04391c: 8d8d002c */ lw $t5,0x2c($t4) -.L0f043920: -/* f043920: 8fa40044 */ lw $a0,0x44($sp) -/* f043924: 0c007787 */ jal modelSetAnimEndFrame -/* f043928: 8da5001c */ lw $a1,0x1c($t5) -.L0f04392c: -/* f04392c: 0fc10792 */ jal func0f041e48 -/* f043930: 8fa40048 */ lw $a0,0x48($sp) -/* f043934: 8fbf001c */ lw $ra,0x1c($sp) -.L0f043938: -/* f043938: 27bd0048 */ addiu $sp,$sp,0x48 -/* f04393c: 03e00008 */ jr $ra -/* f043940: 00000000 */ nop -); +void chrTickAttackRoll(struct chrdata *chr) +{ + if (chr->hidden & CHRHFLAG_NEEDANIM) { + if (modelIsAnimMerging(chr->model)) { + return; + } + + chrAttackRollChooseAnimation(chr); + + chr->hidden &= ~CHRHFLAG_NEEDANIM; + } + + if (chr->act_attack.onehanded) { + struct model *model = chr->model; + f32 curframe = modelGetCurAnimFrame(model); + + if (chr->act_attack.animcfg == &g_RollAttackAnims[4] + || chr->act_attack.animcfg == &g_RollAttackAnims[5] + || chr->act_attack.animcfg == &g_RollAttackAnims[6] + || chr->act_attack.animcfg == &g_RollAttackAnims[7]) { + if (curframe >= chr->act_attack.animcfg->unk14) { + struct attackanimconfig *newanimcfg = chr->act_attack.animcfg + 4; + bool flip = model->anim->flip; + f32 sp34 = 16; + + if (chr->act_attack.firegun[HAND_LEFT] && chr->act_attack.firegun[HAND_RIGHT]) { + if (random() % 2 == 0) { + newanimcfg += 4; + } else { + newanimcfg += 8; + } + } + + if (newanimcfg == &g_RollAttackAnims[8]) { + sp34 = 24; + } else if (newanimcfg == &g_RollAttackAnims[9]) { + sp34 = 24; + } else if (newanimcfg == &g_RollAttackAnims[10]) { + sp34 = 32; + } else if (newanimcfg == &g_RollAttackAnims[11]) { + sp34 = 44; + } else if (newanimcfg == &g_RollAttackAnims[12]) { + sp34 = 24; + } else if (newanimcfg == &g_RollAttackAnims[13]) { + sp34 = 34; + } else if (newanimcfg == &g_RollAttackAnims[14]) { + sp34 = 32; + } else if (newanimcfg == &g_RollAttackAnims[15]) { + sp34 = 44; + } else if (newanimcfg == &g_RollAttackAnims[16]) { + sp34 = 24; + } else if (newanimcfg == &g_RollAttackAnims[17]) { + sp34 = 34; + } else if (newanimcfg == &g_RollAttackAnims[18]) { + sp34 = 32; + } else if (newanimcfg == &g_RollAttackAnims[19]) { + sp34 = 44; + } + + chr->act_attack.turning = 2; + chr->act_attack.animcfg = newanimcfg; + chr->sleep = 0; + + modelSetAnimation(model, newanimcfg->animnum, flip, newanimcfg->unk10, + chrGetRangedSpeed(chr, 0.5f, 0.8f), sp34); + + if (chr->act_attack.dorecoil) { + if (newanimcfg->unk24 >= 0.0f) { + modelSetAnimEndFrame(model, newanimcfg->unk24); + } else { + modelSetAnimEndFrame(model, newanimcfg->unk1c); + } + } else { + if (newanimcfg->unk20 >= 0.0f) { + modelSetAnimEndFrame(model, newanimcfg->unk20); + } else { + if (newanimcfg->unk14 >= 0.0f) { + modelSetAnimEndFrame(model, newanimcfg->unk14); + } + } + } + + if (chr->act_attack.animcfg->unk0c != 0.0f) { + union modelrwdata *rwdata = modelGetNodeRwData(model, model->filedata->rootnode); + rwdata->chrinfo.unk5c = sp34; + rwdata->chrinfo.unk58 = -chr->act_attack.animcfg->unk0c / sp34; + + if (flip) { + rwdata->chrinfo.unk58 = -rwdata->chrinfo.unk58; + } + } + } + } else if (chr->act_attack.animcfg == &g_RollAttackAnims[8] + || chr->act_attack.animcfg == &g_RollAttackAnims[9] + || chr->act_attack.animcfg == &g_RollAttackAnims[10] + || chr->act_attack.animcfg == &g_RollAttackAnims[11] + || chr->act_attack.animcfg == &g_RollAttackAnims[12] + || chr->act_attack.animcfg == &g_RollAttackAnims[13] + || chr->act_attack.animcfg == &g_RollAttackAnims[14] + || chr->act_attack.animcfg == &g_RollAttackAnims[15] + || chr->act_attack.animcfg == &g_RollAttackAnims[16] + || chr->act_attack.animcfg == &g_RollAttackAnims[17] + || chr->act_attack.animcfg == &g_RollAttackAnims[18] + || chr->act_attack.animcfg == &g_RollAttackAnims[19]) { + if (!chr->act_attack.dorecoil + && chr->act_attack.animcfg->unk24 > 0 + && curframe <= chr->act_attack.animcfg->unk24 + && curframe >= modelGetAnimEndFrame(model)) { + modelSetAnimation(model, modelGetAnimNum(model), model->anim->flip, + chr->act_attack.animcfg->unk24, chrGetRangedSpeed(chr, 0.5f, 0.8f), 16); + + if (chr->act_attack.dooneburst) { + if (chr->act_attack.animcfg->unk14 >= 0) { + modelSetAnimEndFrame(model, chr->act_attack.animcfg->unk14); + } + } else { + u32 stack; + modelSetAnimEndFrame(model, chr->act_attack.animcfg->unk1c); + } + } + } + } + + func0f041e48(chr); +} void propPrintDangerous(void) { diff --git a/src/game/game_000130.c b/src/game/game_000130.c index b895a3041..212918f10 100644 --- a/src/game/game_000130.c +++ b/src/game/game_000130.c @@ -408,8 +408,8 @@ glabel func0f000648 /* f000784: 3c148006 */ lui $s4,%hi(g_KneelHeavyAttackAnims) /* f000788: 3c158006 */ lui $s5,%hi(g_KneelLightAttackAnims) /* f00078c: 3c108006 */ lui $s0,%hi(g_KneelDualAttackAnims) -/* f000790: 3c168006 */ lui $s6,%hi(g_AttackAnimRollHeavyLeft1) -/* f000794: 26d67428 */ addiu $s6,$s6,%lo(g_AttackAnimRollHeavyLeft1) +/* f000790: 3c168006 */ lui $s6,%hi(g_RollAttackAnims) +/* f000794: 26d67428 */ addiu $s6,$s6,%lo(g_RollAttackAnims) /* f000798: 26107328 */ addiu $s0,$s0,%lo(g_KneelDualAttackAnims) /* f00079c: 26b56ef0 */ addiu $s5,$s5,%lo(g_KneelLightAttackAnims) /* f0007a0: 26946a70 */ addiu $s4,$s4,%lo(g_KneelHeavyAttackAnims) @@ -436,9 +436,9 @@ glabel func0f000648 /* f0007f0: 26940080 */ addiu $s4,$s4,0x80 /* f0007f4: 1616ffee */ bne $s0,$s6,.L0f0007b0 /* f0007f8: 26b50080 */ addiu $s5,$s5,0x80 -/* f0007fc: 3c048006 */ lui $a0,%hi(g_AttackAnimRollHeavyLeft1) +/* f0007fc: 3c048006 */ lui $a0,%hi(g_RollAttackAnims) /* f000800: 0fc00103 */ jal func0f00040c -/* f000804: 24847428 */ addiu $a0,$a0,%lo(g_AttackAnimRollHeavyLeft1) +/* f000804: 24847428 */ addiu $a0,$a0,%lo(g_RollAttackAnims) /* f000808: 3c048006 */ lui $a0,%hi(g_AttackAnimHeavyWalk) /* f00080c: 0fc00103 */ jal func0f00040c /* f000810: 24847a10 */ addiu $a0,$a0,%lo(g_AttackAnimHeavyWalk) diff --git a/src/include/data.h b/src/include/data.h index 7412aa849..a5a7f6d66 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -206,7 +206,7 @@ extern struct attackanimgroup *g_StandDualAttackAnims[][32]; extern struct attackanimgroup *g_KneelHeavyAttackAnims[][32]; extern struct attackanimgroup *g_KneelLightAttackAnims[][32]; extern struct attackanimgroup *g_KneelDualAttackAnims[][32]; -extern struct attackanimconfig g_AttackAnimRollHeavyLeft1; +extern struct attackanimconfig g_RollAttackAnims[]; extern struct attackanimconfig g_AttackAnimHeavyWalk; extern struct attackanimconfig g_AttackAnimHeavyRun; extern struct attackanimconfig g_AttackAnimLightWalk; diff --git a/src/include/types.h b/src/include/types.h index a402e5b43..4be36f4e6 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -724,7 +724,7 @@ struct modelrwdata_chrinfo { // type 0x01 struct coord unk34; struct coord unk40; // "2" version of unk24 struct coord unk4c; // "2" version of unk34 - u32 unk58; + f32 unk58; f32 unk5c; };