From e648b050b74a903cf7f8b7fa0882977a7c271fab Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 8 Apr 2021 21:41:25 +1000 Subject: [PATCH] Decompile func0f09aba4 --- src/game/game_097ba0.c | 861 ++++++--------------------------- src/game/game_0b0fd0.c | 2 +- src/game/inventory/items.c | 132 ++--- src/include/constants.h | 2 + src/include/game/game_097ba0.h | 2 +- src/include/game/game_0b0fd0.h | 2 +- src/include/types.h | 12 +- 7 files changed, 223 insertions(+), 790 deletions(-) diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index cf6d7e4e3..bb9fe4a2c 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -6883,724 +6883,155 @@ glabel var7f1ac320 ); #endif +bool func0f09aba4(struct hand *hand, struct handweaponinfo *info, s32 handnum, struct weaponfunc_shoot *func) +{ + s32 unk24; + s32 unk25; + s32 sum; + s32 unk26; + s32 unk27; + s32 unk18; + s32 frames; + struct weapon *weapondef; + f32 mult1; + f32 recoil; + f32 unk2c; + f32 mult2; + u32 stack; + #if VERSION >= VERSION_PAL_FINAL -GLOBAL_ASM( -glabel func0f09aba4 -.late_rodata -glabel var7f1ac324 -.word 0x3fc90fdb -glabel var7f1ac328 -.word 0x40c907a9 -glabel var7f1ac32c -.word 0x3fc90fdb -glabel var7f1ac330 -.word 0x40490fdb -.text -/* f09ac20: 27bdffa0 */ addiu $sp,$sp,-96 -/* f09ac24: afbf001c */ sw $ra,0x1c($sp) -/* f09ac28: afb00018 */ sw $s0,0x18($sp) -/* f09ac2c: afa60068 */ sw $a2,0x68($sp) -/* f09ac30: 80ee0018 */ lb $t6,0x18($a3) -/* f09ac34: 80e80024 */ lb $t0,0x24($a3) -/* f09ac38: 80e90025 */ lb $t1,0x25($a3) -/* f09ac3c: 80e20026 */ lb $v0,0x26($a3) -/* f09ac40: 80ea0027 */ lb $t2,0x27($a3) -/* f09ac44: afae0048 */ sw $t6,0x48($sp) -/* f09ac48: 8caf0004 */ lw $t7,0x4($a1) -/* f09ac4c: 29010004 */ slti $at,$t0,0x4 -/* f09ac50: 00808025 */ move $s0,$a0 -/* f09ac54: 14200012 */ bnez $at,.PF0f09aca0 -/* f09ac58: afaf0040 */ sw $t7,0x40($sp) -/* f09ac5c: 24030032 */ li $v1,0x32 -/* f09ac60: 01030019 */ multu $t0,$v1 -/* f09ac64: 2404003c */ li $a0,0x3c -/* f09ac68: 0000c012 */ mflo $t8 -/* f09ac6c: 00000000 */ nop -/* f09ac70: 00000000 */ nop -/* f09ac74: 0304001a */ div $zero,$t8,$a0 -/* f09ac78: 00004012 */ mflo $t0 -/* f09ac7c: 14800002 */ bnez $a0,.PF0f09ac88 -/* f09ac80: 00000000 */ nop -/* f09ac84: 0007000d */ break 0x7 -.PF0f09ac88: -/* f09ac88: 2401ffff */ li $at,-1 -/* f09ac8c: 14810004 */ bne $a0,$at,.PF0f09aca0 -/* f09ac90: 3c018000 */ lui $at,0x8000 -/* f09ac94: 17010002 */ bne $t8,$at,.PF0f09aca0 -/* f09ac98: 00000000 */ nop -/* f09ac9c: 0006000d */ break 0x6 -.PF0f09aca0: -/* f09aca0: 29210004 */ slti $at,$t1,0x4 -/* f09aca4: 24030032 */ li $v1,0x32 -/* f09aca8: 14200010 */ bnez $at,.PF0f09acec -/* f09acac: 2404003c */ li $a0,0x3c -/* f09acb0: 01230019 */ multu $t1,$v1 -/* f09acb4: 0000c812 */ mflo $t9 -/* f09acb8: 00000000 */ nop -/* f09acbc: 00000000 */ nop -/* f09acc0: 0324001a */ div $zero,$t9,$a0 -/* f09acc4: 00004812 */ mflo $t1 -/* f09acc8: 14800002 */ bnez $a0,.PF0f09acd4 -/* f09accc: 00000000 */ nop -/* f09acd0: 0007000d */ break 0x7 -.PF0f09acd4: -/* f09acd4: 2401ffff */ li $at,-1 -/* f09acd8: 14810004 */ bne $a0,$at,.PF0f09acec -/* f09acdc: 3c018000 */ lui $at,0x8000 -/* f09ace0: 17210002 */ bne $t9,$at,.PF0f09acec -/* f09ace4: 00000000 */ nop -/* f09ace8: 0006000d */ break 0x6 -.PF0f09acec: -/* f09acec: 28410004 */ slti $at,$v0,0x4 -/* f09acf0: 14200010 */ bnez $at,.PF0f09ad34 -/* f09acf4: 8fad0048 */ lw $t5,0x48($sp) -/* f09acf8: 00430019 */ multu $v0,$v1 -/* f09acfc: 00005812 */ mflo $t3 -/* f09ad00: 00000000 */ nop -/* f09ad04: 00000000 */ nop -/* f09ad08: 0164001a */ div $zero,$t3,$a0 -/* f09ad0c: 00001012 */ mflo $v0 -/* f09ad10: 14800002 */ bnez $a0,.PF0f09ad1c -/* f09ad14: 00000000 */ nop -/* f09ad18: 0007000d */ break 0x7 -.PF0f09ad1c: -/* f09ad1c: 2401ffff */ li $at,-1 -/* f09ad20: 14810004 */ bne $a0,$at,.PF0f09ad34 -/* f09ad24: 3c018000 */ lui $at,0x8000 -/* f09ad28: 15610002 */ bne $t3,$at,.PF0f09ad34 -/* f09ad2c: 00000000 */ nop -/* f09ad30: 0006000d */ break 0x6 -.PF0f09ad34: -/* f09ad34: 29410004 */ slti $at,$t2,0x4 -/* f09ad38: 54200011 */ bnezl $at,.PF0f09ad80 -/* f09ad3c: 29a10004 */ slti $at,$t5,0x4 -/* f09ad40: 01430019 */ multu $t2,$v1 -/* f09ad44: 00006012 */ mflo $t4 -/* f09ad48: 00000000 */ nop -/* f09ad4c: 00000000 */ nop -/* f09ad50: 0184001a */ div $zero,$t4,$a0 -/* f09ad54: 00005012 */ mflo $t2 -/* f09ad58: 14800002 */ bnez $a0,.PF0f09ad64 -/* f09ad5c: 00000000 */ nop -/* f09ad60: 0007000d */ break 0x7 -.PF0f09ad64: -/* f09ad64: 2401ffff */ li $at,-1 -/* f09ad68: 14810004 */ bne $a0,$at,.PF0f09ad7c -/* f09ad6c: 3c018000 */ lui $at,0x8000 -/* f09ad70: 15810002 */ bne $t4,$at,.PF0f09ad7c -/* f09ad74: 00000000 */ nop -/* f09ad78: 0006000d */ break 0x6 -.PF0f09ad7c: -/* f09ad7c: 29a10004 */ slti $at,$t5,0x4 -.PF0f09ad80: -/* f09ad80: 54200012 */ bnezl $at,.PF0f09adcc -/* f09ad84: 01091821 */ addu $v1,$t0,$t1 -/* f09ad88: 01a30019 */ multu $t5,$v1 -/* f09ad8c: 00007012 */ mflo $t6 -/* f09ad90: 00000000 */ nop -/* f09ad94: 00000000 */ nop -/* f09ad98: 01c4001a */ div $zero,$t6,$a0 -/* f09ad9c: 00007812 */ mflo $t7 -/* f09ada0: afaf0048 */ sw $t7,0x48($sp) -/* f09ada4: 14800002 */ bnez $a0,.PF0f09adb0 -/* f09ada8: 00000000 */ nop -/* f09adac: 0007000d */ break 0x7 -.PF0f09adb0: -/* f09adb0: 2401ffff */ li $at,-1 -/* f09adb4: 14810004 */ bne $a0,$at,.PF0f09adc8 -/* f09adb8: 3c018000 */ lui $at,0x8000 -/* f09adbc: 15c10002 */ bne $t6,$at,.PF0f09adc8 -/* f09adc0: 00000000 */ nop -/* f09adc4: 0006000d */ break 0x6 -.PF0f09adc8: -/* f09adc8: 01091821 */ addu $v1,$t0,$t1 -.PF0f09adcc: -/* f09adcc: afa30054 */ sw $v1,0x54($sp) -/* f09add0: 8e1906a8 */ lw $t9,0x6a8($s0) -/* f09add4: 8e180614 */ lw $t8,0x614($s0) -/* f09add8: 1c600003 */ bgtz $v1,.PF0f09ade8 -/* f09addc: 03192823 */ subu $a1,$t8,$t9 -/* f09ade0: 100000ec */ b .PF0f09b194 -/* f09ade4: afa00054 */ sw $zero,0x54($sp) -.PF0f09ade8: -/* f09ade8: 8e0b0014 */ lw $t3,0x14($s0) -/* f09adec: 51600023 */ beqzl $t3,.PF0f09ae7c -/* f09adf0: afa50044 */ sw $a1,0x44($sp) -/* f09adf4: 8e0c000c */ lw $t4,0xc($s0) -/* f09adf8: 00a2082a */ slt $at,$a1,$v0 -/* f09adfc: 5180001f */ beqzl $t4,.PF0f09ae7c -/* f09ae00: afa50044 */ sw $a1,0x44($sp) -/* f09ae04: 5420001d */ bnezl $at,.PF0f09ae7c -/* f09ae08: afa50044 */ sw $a1,0x44($sp) -/* f09ae0c: 5840001b */ blezl $v0,.PF0f09ae7c -/* f09ae10: afa50044 */ sw $a1,0x44($sp) -/* f09ae14: 05420019 */ bltzl $t2,.PF0f09ae7c -/* f09ae18: afa50044 */ sw $a1,0x44($sp) -/* f09ae1c: 8e02060c */ lw $v0,0x60c($s0) -/* f09ae20: 00aa7021 */ addu $t6,$a1,$t2 -/* f09ae24: 01c3082a */ slt $at,$t6,$v1 -/* f09ae28: 304d0040 */ andi $t5,$v0,0x40 -/* f09ae2c: 55a00013 */ bnezl $t5,.PF0f09ae7c -/* f09ae30: afa50044 */ sw $a1,0x44($sp) -/* f09ae34: 10200010 */ beqz $at,.PF0f09ae78 -/* f09ae38: 344f0040 */ ori $t7,$v0,0x40 -/* f09ae3c: 44807000 */ mtc1 $zero,$f14 -/* f09ae40: c6040070 */ lwc1 $f4,0x70($s0) -/* f09ae44: c6060064 */ lwc1 $f6,0x64($s0) -/* f09ae48: c6080068 */ lwc1 $f8,0x68($s0) -/* f09ae4c: c60a006c */ lwc1 $f10,0x6c($s0) -/* f09ae50: ae0f060c */ sw $t7,0x60c($s0) -/* f09ae54: ae0506a8 */ sw $a1,0x6a8($s0) -/* f09ae58: e6040050 */ swc1 $f4,0x50($s0) -/* f09ae5c: e60e0060 */ swc1 $f14,0x60($s0) -/* f09ae60: e60e0054 */ swc1 $f14,0x54($s0) -/* f09ae64: e60e0058 */ swc1 $f14,0x58($s0) -/* f09ae68: e60e005c */ swc1 $f14,0x5c($s0) -/* f09ae6c: e6060044 */ swc1 $f6,0x44($s0) -/* f09ae70: e6080048 */ swc1 $f8,0x48($s0) -/* f09ae74: e60a004c */ swc1 $f10,0x4c($s0) -.PF0f09ae78: -/* f09ae78: afa50044 */ sw $a1,0x44($sp) -.PF0f09ae7c: -/* f09ae7c: afaa004c */ sw $t2,0x4c($sp) -/* f09ae80: 8e18060c */ lw $t8,0x60c($s0) -/* f09ae84: 33190040 */ andi $t9,$t8,0x40 -/* f09ae88: 53200047 */ beqzl $t9,.PF0f09afa8 -/* f09ae8c: 8fa50044 */ lw $a1,0x44($sp) -/* f09ae90: 8e0206a8 */ lw $v0,0x6a8($s0) -/* f09ae94: 01456023 */ subu $t4,$t2,$a1 -/* f09ae98: 00a25823 */ subu $t3,$a1,$v0 -/* f09ae9c: 016a082a */ slt $at,$t3,$t2 -/* f09aea0: 1020003b */ beqz $at,.PF0f09af90 -/* f09aea4: 01826821 */ addu $t5,$t4,$v0 -/* f09aea8: 448d2000 */ mtc1 $t5,$f4 -/* f09aeac: 3c017f1b */ lui $at,0x7f1b -/* f09aeb0: c428d520 */ lwc1 $f8,-0x2ae0($at) -/* f09aeb4: 468021a0 */ cvt.s.w $f6,$f4 -/* f09aeb8: 448a2000 */ mtc1 $t2,$f4 -/* f09aebc: afa30028 */ sw $v1,0x28($sp) -/* f09aec0: afa50044 */ sw $a1,0x44($sp) -/* f09aec4: afa7006c */ sw $a3,0x6c($sp) -/* f09aec8: afa8005c */ sw $t0,0x5c($sp) -/* f09aecc: 46083282 */ mul.s $f10,$f6,$f8 -/* f09aed0: afa90058 */ sw $t1,0x58($sp) -/* f09aed4: afaa004c */ sw $t2,0x4c($sp) -/* f09aed8: 468021a0 */ cvt.s.w $f6,$f4 -/* f09aedc: 0c006858 */ jal cosf -/* f09aee0: 46065303 */ div.s $f12,$f10,$f6 -/* f09aee4: 3c013f00 */ lui $at,0x3f00 -/* f09aee8: 44818000 */ mtc1 $at,$f16 -/* f09aeec: c60c0050 */ lwc1 $f12,0x50($s0) -/* f09aef0: c60e0060 */ lwc1 $f14,0x60($s0) -/* f09aef4: 46100202 */ mul.s $f8,$f0,$f16 -/* f09aef8: 46104480 */ add.s $f18,$f8,$f16 -/* f09aefc: 44069000 */ mfc1 $a2,$f18 -/* f09af00: 0c006b5e */ jal func0001afe8 -/* f09af04: e7b2003c */ swc1 $f18,0x3c($sp) -/* f09af08: c6020044 */ lwc1 $f2,0x44($s0) -/* f09af0c: c6040054 */ lwc1 $f4,0x54($s0) -/* f09af10: c7b2003c */ lwc1 $f18,0x3c($sp) -/* f09af14: c60e0048 */ lwc1 $f14,0x48($s0) -/* f09af18: 46022281 */ sub.s $f10,$f4,$f2 -/* f09af1c: c6040058 */ lwc1 $f4,0x58($s0) -/* f09af20: c610004c */ lwc1 $f16,0x4c($s0) -/* f09af24: 240e0001 */ li $t6,0x1 -/* f09af28: 46125182 */ mul.s $f6,$f10,$f18 -/* f09af2c: 460e2281 */ sub.s $f10,$f4,$f14 -/* f09af30: c604005c */ lwc1 $f4,0x5c($s0) -/* f09af34: e6000070 */ swc1 $f0,0x70($s0) -/* f09af38: ae0e00b4 */ sw $t6,0xb4($s0) -/* f09af3c: 26050074 */ addiu $a1,$s0,0x74 -/* f09af40: 46000306 */ mov.s $f12,$f0 -/* f09af44: 46023200 */ add.s $f8,$f6,$f2 -/* f09af48: 46125182 */ mul.s $f6,$f10,$f18 -/* f09af4c: 46102281 */ sub.s $f10,$f4,$f16 -/* f09af50: e6080064 */ swc1 $f8,0x64($s0) -/* f09af54: 460e3200 */ add.s $f8,$f6,$f14 -/* f09af58: 46125182 */ mul.s $f6,$f10,$f18 -/* f09af5c: e6080068 */ swc1 $f8,0x68($s0) -/* f09af60: 46103200 */ add.s $f8,$f6,$f16 -/* f09af64: e608006c */ swc1 $f8,0x6c($s0) -/* f09af68: 0c00581e */ jal func000162e8 -/* f09af6c: afa50020 */ sw $a1,0x20($sp) -/* f09af70: 26040064 */ addiu $a0,$s0,0x64 -/* f09af74: 0c0056d9 */ jal func00015dd4 -/* f09af78: 8fa50020 */ lw $a1,0x20($sp) -/* f09af7c: 8fa30028 */ lw $v1,0x28($sp) -/* f09af80: 8fa7006c */ lw $a3,0x6c($sp) -/* f09af84: 8fa8005c */ lw $t0,0x5c($sp) -/* f09af88: 10000006 */ b .PF0f09afa4 -/* f09af8c: 8fa90058 */ lw $t1,0x58($sp) -.PF0f09af90: -/* f09af90: 0c0055d0 */ jal func000159b0 -/* f09af94: 26040074 */ addiu $a0,$s0,0x74 -/* f09af98: ae0000b4 */ sw $zero,0xb4($s0) -/* f09af9c: 10000093 */ b .PF0f09b1ec -/* f09afa0: 24020001 */ li $v0,0x1 -.PF0f09afa4: -/* f09afa4: 8fa50044 */ lw $a1,0x44($sp) -.PF0f09afa8: -/* f09afa8: 8faa004c */ lw $t2,0x4c($sp) -/* f09afac: 00a3082a */ slt $at,$a1,$v1 -/* f09afb0: 50200079 */ beqzl $at,.PF0f09b198 -/* f09afb4: 8fb80054 */ lw $t8,0x54($sp) -/* f09afb8: 8e02060c */ lw $v0,0x60c($s0) -/* f09afbc: 26180074 */ addiu $t8,$s0,0x74 -/* f09afc0: 26190064 */ addiu $t9,$s0,0x64 -/* f09afc4: 304f0040 */ andi $t7,$v0,0x40 -/* f09afc8: 15e00072 */ bnez $t7,.PF0f09b194 -/* f09afcc: 304b0080 */ andi $t3,$v0,0x80 -/* f09afd0: c4e20028 */ lwc1 $f2,0x28($a3) -/* f09afd4: c4e0002c */ lwc1 $f0,0x2c($a3) -/* f09afd8: afb90028 */ sw $t9,0x28($sp) -/* f09afdc: 1560000b */ bnez $t3,.PF0f09b00c -/* f09afe0: afb80020 */ sw $t8,0x20($sp) -/* f09afe4: c6040070 */ lwc1 $f4,0x70($s0) -/* f09afe8: c60a0064 */ lwc1 $f10,0x64($s0) -/* f09afec: c6060068 */ lwc1 $f6,0x68($s0) -/* f09aff0: c608006c */ lwc1 $f8,0x6c($s0) -/* f09aff4: 344c0080 */ ori $t4,$v0,0x80 -/* f09aff8: ae0c060c */ sw $t4,0x60c($s0) -/* f09affc: e6040050 */ swc1 $f4,0x50($s0) -/* f09b000: e60a0044 */ swc1 $f10,0x44($s0) -/* f09b004: e6060048 */ swc1 $f6,0x48($s0) -/* f09b008: e608004c */ swc1 $f8,0x4c($s0) -.PF0f09b00c: -/* f09b00c: 3c017f1b */ lui $at,0x7f1b -/* f09b010: c42cd524 */ lwc1 $f12,-0x2adc($at) -/* f09b014: 3c0143b4 */ lui $at,0x43b4 -/* f09b018: 44815000 */ mtc1 $at,$f10 -/* f09b01c: 460c0102 */ mul.s $f4,$f0,$f12 -/* f09b020: 460a2183 */ div.s $f6,$f4,$f10 -/* f09b024: 46066201 */ sub.s $f8,$f12,$f6 -/* f09b028: e6080060 */ swc1 $f8,0x60($s0) -/* f09b02c: e7a20038 */ swc1 $f2,0x38($sp) -/* f09b030: afaa004c */ sw $t2,0x4c($sp) -/* f09b034: afa90058 */ sw $t1,0x58($sp) -/* f09b038: afa8005c */ sw $t0,0x5c($sp) -/* f09b03c: afa50044 */ sw $a1,0x44($sp) -/* f09b040: 0fc2c5f7 */ jal func0f0b131c -/* f09b044: 8fa40068 */ lw $a0,0x68($sp) -/* f09b048: c60401c0 */ lwc1 $f4,0x1c0($s0) -/* f09b04c: c7a20038 */ lwc1 $f2,0x38($sp) -/* f09b050: 3c01447a */ lui $at,0x447a -/* f09b054: 46040281 */ sub.s $f10,$f0,$f4 -/* f09b058: 44816000 */ mtc1 $at,$f12 -/* f09b05c: 44802000 */ mtc1 $zero,$f4 -/* f09b060: 8fa20044 */ lw $v0,0x44($sp) -/* f09b064: 46025182 */ mul.s $f6,$f10,$f2 -/* f09b068: 8fa8005c */ lw $t0,0x5c($sp) -/* f09b06c: 8fa90058 */ lw $t1,0x58($sp) -/* f09b070: e6040058 */ swc1 $f4,0x58($s0) -/* f09b074: 0048082a */ slt $at,$v0,$t0 -/* f09b078: 00487023 */ subu $t6,$v0,$t0 -/* f09b07c: 460c3203 */ div.s $f8,$f6,$f12 -/* f09b080: c60601c8 */ lwc1 $f6,0x1c8($s0) -/* f09b084: e6080054 */ swc1 $f8,0x54($s0) -/* f09b088: 8fad0040 */ lw $t5,0x40($sp) -/* f09b08c: c5aa0034 */ lwc1 $f10,0x34($t5) -/* f09b090: 46065201 */ sub.s $f8,$f10,$f6 -/* f09b094: 46024102 */ mul.s $f4,$f8,$f2 -/* f09b098: 460c2283 */ div.s $f10,$f4,$f12 -/* f09b09c: 1020000c */ beqz $at,.PF0f09b0d0 -/* f09b0a0: e60a005c */ swc1 $f10,0x5c($s0) -/* f09b0a4: 44823000 */ mtc1 $v0,$f6 -/* f09b0a8: 3c017f1b */ lui $at,0x7f1b -/* f09b0ac: c424d528 */ lwc1 $f4,-0x2ad8($at) -/* f09b0b0: 46803220 */ cvt.s.w $f8,$f6 -/* f09b0b4: 44883000 */ mtc1 $t0,$f6 -/* f09b0b8: 46044282 */ mul.s $f10,$f8,$f4 -/* f09b0bc: 46803220 */ cvt.s.w $f8,$f6 -/* f09b0c0: 0c00685b */ jal sinf -/* f09b0c4: 46085303 */ div.s $f12,$f10,$f8 -/* f09b0c8: 1000000f */ b .PF0f09b108 -/* f09b0cc: 46000486 */ mov.s $f18,$f0 -.PF0f09b0d0: -/* f09b0d0: 448e2000 */ mtc1 $t6,$f4 -/* f09b0d4: 3c017f1b */ lui $at,0x7f1b -/* f09b0d8: c42ad52c */ lwc1 $f10,-0x2ad4($at) -/* f09b0dc: 468021a0 */ cvt.s.w $f6,$f4 -/* f09b0e0: 44892000 */ mtc1 $t1,$f4 -/* f09b0e4: 460a3202 */ mul.s $f8,$f6,$f10 -/* f09b0e8: 468021a0 */ cvt.s.w $f6,$f4 -/* f09b0ec: 0c006858 */ jal cosf -/* f09b0f0: 46064303 */ div.s $f12,$f8,$f6 -/* f09b0f4: 3c013f00 */ lui $at,0x3f00 -/* f09b0f8: 44815000 */ mtc1 $at,$f10 -/* f09b0fc: 44814000 */ mtc1 $at,$f8 -/* f09b100: 460a0102 */ mul.s $f4,$f0,$f10 -/* f09b104: 46082480 */ add.s $f18,$f4,$f8 -.PF0f09b108: -/* f09b108: c60c0050 */ lwc1 $f12,0x50($s0) -/* f09b10c: c60e0060 */ lwc1 $f14,0x60($s0) -/* f09b110: 44069000 */ mfc1 $a2,$f18 -/* f09b114: 0c006b5e */ jal func0001afe8 -/* f09b118: e7b20030 */ swc1 $f18,0x30($sp) -/* f09b11c: c6020044 */ lwc1 $f2,0x44($s0) -/* f09b120: c6060054 */ lwc1 $f6,0x54($s0) -/* f09b124: c7b20030 */ lwc1 $f18,0x30($sp) -/* f09b128: c60e0048 */ lwc1 $f14,0x48($s0) -/* f09b12c: 46023281 */ sub.s $f10,$f6,$f2 -/* f09b130: c6060058 */ lwc1 $f6,0x58($s0) -/* f09b134: c610004c */ lwc1 $f16,0x4c($s0) -/* f09b138: 240f0001 */ li $t7,0x1 -/* f09b13c: 46125102 */ mul.s $f4,$f10,$f18 -/* f09b140: 460e3281 */ sub.s $f10,$f6,$f14 -/* f09b144: c606005c */ lwc1 $f6,0x5c($s0) -/* f09b148: e6000070 */ swc1 $f0,0x70($s0) -/* f09b14c: ae0f00b4 */ sw $t7,0xb4($s0) -/* f09b150: 46000306 */ mov.s $f12,$f0 -/* f09b154: 46022200 */ add.s $f8,$f4,$f2 -/* f09b158: 46125102 */ mul.s $f4,$f10,$f18 -/* f09b15c: 46103281 */ sub.s $f10,$f6,$f16 -/* f09b160: e6080064 */ swc1 $f8,0x64($s0) -/* f09b164: 460e2200 */ add.s $f8,$f4,$f14 -/* f09b168: 46125102 */ mul.s $f4,$f10,$f18 -/* f09b16c: e6080068 */ swc1 $f8,0x68($s0) -/* f09b170: 46102200 */ add.s $f8,$f4,$f16 -/* f09b174: e608006c */ swc1 $f8,0x6c($s0) -/* f09b178: 0c00581e */ jal func000162e8 -/* f09b17c: 8fa50020 */ lw $a1,0x20($sp) -/* f09b180: 8fa40028 */ lw $a0,0x28($sp) -/* f09b184: 0c0056d9 */ jal func00015dd4 -/* f09b188: 8fa50020 */ lw $a1,0x20($sp) -/* f09b18c: 8faa004c */ lw $t2,0x4c($sp) -/* f09b190: 8fa50044 */ lw $a1,0x44($sp) -.PF0f09b194: -/* f09b194: 8fb80054 */ lw $t8,0x54($sp) -.PF0f09b198: -/* f09b198: 00001025 */ move $v0,$zero -/* f09b19c: 00b8082a */ slt $at,$a1,$t8 -/* f09b1a0: 14200012 */ bnez $at,.PF0f09b1ec -/* f09b1a4: 00000000 */ nop -/* f09b1a8: 05400009 */ bltz $t2,.PF0f09b1d0 -/* f09b1ac: 8fac0054 */ lw $t4,0x54($sp) -/* f09b1b0: 8e190014 */ lw $t9,0x14($s0) -/* f09b1b4: 53200007 */ beqzl $t9,.PF0f09b1d4 -/* f09b1b8: 8fad0048 */ lw $t5,0x48($sp) -/* f09b1bc: 8e0b000c */ lw $t3,0xc($s0) -/* f09b1c0: 51600004 */ beqzl $t3,.PF0f09b1d4 -/* f09b1c4: 8fad0048 */ lw $t5,0x48($sp) -/* f09b1c8: 10000008 */ b .PF0f09b1ec -/* f09b1cc: 24020001 */ li $v0,0x1 -.PF0f09b1d0: -/* f09b1d0: 8fad0048 */ lw $t5,0x48($sp) -.PF0f09b1d4: -/* f09b1d4: 018d7021 */ addu $t6,$t4,$t5 -/* f09b1d8: 00ae082a */ slt $at,$a1,$t6 -/* f09b1dc: 14200003 */ bnez $at,.PF0f09b1ec -/* f09b1e0: 00000000 */ nop -/* f09b1e4: 10000001 */ b .PF0f09b1ec -/* f09b1e8: 24020001 */ li $v0,0x1 -.PF0f09b1ec: -/* f09b1ec: 8fbf001c */ lw $ra,0x1c($sp) -/* f09b1f0: 8fb00018 */ lw $s0,0x18($sp) -/* f09b1f4: 27bd0060 */ addiu $sp,$sp,0x60 -/* f09b1f8: 03e00008 */ jr $ra -/* f09b1fc: 00000000 */ nop -); + unk24 = func->unk24; + unk25 = func->unk25; + unk26 = func->unk26; + unk27 = func->unk27; + unk18 = func->unk18; + weapondef = info->definition; + + if (unk24 >= 4) { + unk24 = PALDOWN(unk24); + } + + if (unk25 >= 4) { + unk25 = PALDOWN(unk25); + } + + if (unk26 >= 4) { + unk26 = PALDOWN(unk26); + } + + if (unk27 >= 4) { + unk27 = PALDOWN(unk27); + } + + if (unk18 >= 4) { + unk18 = PALDOWN(unk18); + } + + sum = unk24 + unk25; #else -GLOBAL_ASM( -glabel func0f09aba4 -.late_rodata -glabel var7f1ac324 -.word 0x3fc90fdb -glabel var7f1ac328 -.word 0x40c907a9 -glabel var7f1ac32c -.word 0x3fc90fdb -glabel var7f1ac330 -.word 0x40490fdb -.text -/* f09aba4: 27bdffa0 */ addiu $sp,$sp,-96 -/* f09aba8: afbf001c */ sw $ra,0x1c($sp) -/* f09abac: afb10018 */ sw $s1,0x18($sp) -/* f09abb0: afb00014 */ sw $s0,0x14($sp) -/* f09abb4: afa60068 */ sw $a2,0x68($sp) -/* f09abb8: 80ee0024 */ lb $t6,0x24($a3) -/* f09abbc: 00808025 */ or $s0,$a0,$zero -/* f09abc0: afae005c */ sw $t6,0x5c($sp) -/* f09abc4: 80ef0025 */ lb $t7,0x25($a3) -/* f09abc8: 01cf1821 */ addu $v1,$t6,$t7 -/* f09abcc: afa30054 */ sw $v1,0x54($sp) -/* f09abd0: afaf0058 */ sw $t7,0x58($sp) -/* f09abd4: 80e80027 */ lb $t0,0x27($a3) -/* f09abd8: 80e20026 */ lb $v0,0x26($a3) -/* f09abdc: afa8004c */ sw $t0,0x4c($sp) -/* f09abe0: 80e90018 */ lb $t1,0x18($a3) -/* f09abe4: afa90048 */ sw $t1,0x48($sp) -/* f09abe8: 8caa0004 */ lw $t2,0x4($a1) -/* f09abec: afaa0040 */ sw $t2,0x40($sp) -/* f09abf0: 8c8c06a8 */ lw $t4,0x6a8($a0) -/* f09abf4: 8c8b0614 */ lw $t3,0x614($a0) -/* f09abf8: 1c600003 */ bgtz $v1,.L0f09ac08 -/* f09abfc: 016c8823 */ subu $s1,$t3,$t4 -/* f09ac00: 100000dc */ b .L0f09af74 -/* f09ac04: afa00054 */ sw $zero,0x54($sp) -.L0f09ac08: -/* f09ac08: 8e0d0014 */ lw $t5,0x14($s0) -/* f09ac0c: 51a00023 */ beqzl $t5,.L0f09ac9c -/* f09ac10: 8e09060c */ lw $t1,0x60c($s0) -/* f09ac14: 8e0e000c */ lw $t6,0xc($s0) -/* f09ac18: 0222082a */ slt $at,$s1,$v0 -/* f09ac1c: 51c0001f */ beqzl $t6,.L0f09ac9c -/* f09ac20: 8e09060c */ lw $t1,0x60c($s0) -/* f09ac24: 5420001d */ bnezl $at,.L0f09ac9c -/* f09ac28: 8e09060c */ lw $t1,0x60c($s0) -/* f09ac2c: 1840001a */ blez $v0,.L0f09ac98 -/* f09ac30: 8faf004c */ lw $t7,0x4c($sp) -/* f09ac34: 05e20019 */ bltzl $t7,.L0f09ac9c -/* f09ac38: 8e09060c */ lw $t1,0x60c($s0) -/* f09ac3c: 8e02060c */ lw $v0,0x60c($s0) -/* f09ac40: 022fc821 */ addu $t9,$s1,$t7 -/* f09ac44: 0323082a */ slt $at,$t9,$v1 -/* f09ac48: 30580040 */ andi $t8,$v0,0x40 -/* f09ac4c: 57000013 */ bnezl $t8,.L0f09ac9c -/* f09ac50: 8e09060c */ lw $t1,0x60c($s0) -/* f09ac54: 10200010 */ beqz $at,.L0f09ac98 -/* f09ac58: 34480040 */ ori $t0,$v0,0x40 -/* f09ac5c: 44807000 */ mtc1 $zero,$f14 -/* f09ac60: c6040070 */ lwc1 $f4,0x70($s0) -/* f09ac64: c6060064 */ lwc1 $f6,0x64($s0) -/* f09ac68: c6080068 */ lwc1 $f8,0x68($s0) -/* f09ac6c: c60a006c */ lwc1 $f10,0x6c($s0) -/* f09ac70: ae08060c */ sw $t0,0x60c($s0) -/* f09ac74: ae1106a8 */ sw $s1,0x6a8($s0) -/* f09ac78: e6040050 */ swc1 $f4,0x50($s0) -/* f09ac7c: e60e0060 */ swc1 $f14,0x60($s0) -/* f09ac80: e60e0054 */ swc1 $f14,0x54($s0) -/* f09ac84: e60e0058 */ swc1 $f14,0x58($s0) -/* f09ac88: e60e005c */ swc1 $f14,0x5c($s0) -/* f09ac8c: e6060044 */ swc1 $f6,0x44($s0) -/* f09ac90: e6080048 */ swc1 $f8,0x48($s0) -/* f09ac94: e60a004c */ swc1 $f10,0x4c($s0) -.L0f09ac98: -/* f09ac98: 8e09060c */ lw $t1,0x60c($s0) -.L0f09ac9c: -/* f09ac9c: 312a0040 */ andi $t2,$t1,0x40 -/* f09aca0: 51400042 */ beqzl $t2,.L0f09adac -/* f09aca4: 0223082a */ slt $at,$s1,$v1 -/* f09aca8: 8e0206a8 */ lw $v0,0x6a8($s0) -/* f09acac: 8fac004c */ lw $t4,0x4c($sp) -/* f09acb0: 02225823 */ subu $t3,$s1,$v0 -/* f09acb4: 016c082a */ slt $at,$t3,$t4 -/* f09acb8: 10200036 */ beqz $at,.L0f09ad94 -/* f09acbc: 01916823 */ subu $t5,$t4,$s1 -/* f09acc0: 01a27021 */ addu $t6,$t5,$v0 -/* f09acc4: 448e2000 */ mtc1 $t6,$f4 -/* f09acc8: 3c017f1b */ lui $at,%hi(var7f1ac324) -/* f09accc: c428c324 */ lwc1 $f8,%lo(var7f1ac324)($at) -/* f09acd0: 468021a0 */ cvt.s.w $f6,$f4 -/* f09acd4: 448c2000 */ mtc1 $t4,$f4 -/* f09acd8: afa30028 */ sw $v1,0x28($sp) -/* f09acdc: afa7006c */ sw $a3,0x6c($sp) -/* f09ace0: 46083282 */ mul.s $f10,$f6,$f8 -/* f09ace4: 468021a0 */ cvt.s.w $f6,$f4 -/* f09ace8: 0c0068f4 */ jal cosf -/* f09acec: 46065303 */ div.s $f12,$f10,$f6 -/* f09acf0: 3c013f00 */ lui $at,0x3f00 -/* f09acf4: 44818000 */ mtc1 $at,$f16 -/* f09acf8: c60c0050 */ lwc1 $f12,0x50($s0) -/* f09acfc: c60e0060 */ lwc1 $f14,0x60($s0) -/* f09ad00: 46100202 */ mul.s $f8,$f0,$f16 -/* f09ad04: 46104480 */ add.s $f18,$f8,$f16 -/* f09ad08: 44069000 */ mfc1 $a2,$f18 -/* f09ad0c: 0c006bfa */ jal func0001afe8 -/* f09ad10: e7b2003c */ swc1 $f18,0x3c($sp) -/* f09ad14: c6020044 */ lwc1 $f2,0x44($s0) -/* f09ad18: c6040054 */ lwc1 $f4,0x54($s0) -/* f09ad1c: c7b2003c */ lwc1 $f18,0x3c($sp) -/* f09ad20: c60e0048 */ lwc1 $f14,0x48($s0) -/* f09ad24: 46022281 */ sub.s $f10,$f4,$f2 -/* f09ad28: c6040058 */ lwc1 $f4,0x58($s0) -/* f09ad2c: c610004c */ lwc1 $f16,0x4c($s0) -/* f09ad30: 24180001 */ addiu $t8,$zero,0x1 -/* f09ad34: 46125182 */ mul.s $f6,$f10,$f18 -/* f09ad38: 460e2281 */ sub.s $f10,$f4,$f14 -/* f09ad3c: c604005c */ lwc1 $f4,0x5c($s0) -/* f09ad40: e6000070 */ swc1 $f0,0x70($s0) -/* f09ad44: ae1800b4 */ sw $t8,0xb4($s0) -/* f09ad48: 26050074 */ addiu $a1,$s0,0x74 -/* f09ad4c: 46000306 */ mov.s $f12,$f0 -/* f09ad50: 46023200 */ add.s $f8,$f6,$f2 -/* f09ad54: 46125182 */ mul.s $f6,$f10,$f18 -/* f09ad58: 46102281 */ sub.s $f10,$f4,$f16 -/* f09ad5c: e6080064 */ swc1 $f8,0x64($s0) -/* f09ad60: 460e3200 */ add.s $f8,$f6,$f14 -/* f09ad64: 46125182 */ mul.s $f6,$f10,$f18 -/* f09ad68: e6080068 */ swc1 $f8,0x68($s0) -/* f09ad6c: 46103200 */ add.s $f8,$f6,$f16 -/* f09ad70: e608006c */ swc1 $f8,0x6c($s0) -/* f09ad74: 0c0058ba */ jal func000162e8 -/* f09ad78: afa50020 */ sw $a1,0x20($sp) -/* f09ad7c: 26040064 */ addiu $a0,$s0,0x64 -/* f09ad80: 0c005775 */ jal func00015dd4 -/* f09ad84: 8fa50020 */ lw $a1,0x20($sp) -/* f09ad88: 8fa30028 */ lw $v1,0x28($sp) -/* f09ad8c: 10000006 */ b .L0f09ada8 -/* f09ad90: 8fa7006c */ lw $a3,0x6c($sp) -.L0f09ad94: -/* f09ad94: 0c00566c */ jal func000159b0 -/* f09ad98: 26040074 */ addiu $a0,$s0,0x74 -/* f09ad9c: ae0000b4 */ sw $zero,0xb4($s0) -/* f09ada0: 1000008b */ b .L0f09afd0 -/* f09ada4: 24020001 */ addiu $v0,$zero,0x1 -.L0f09ada8: -/* f09ada8: 0223082a */ slt $at,$s1,$v1 -.L0f09adac: -/* f09adac: 50200072 */ beqzl $at,.L0f09af78 -/* f09adb0: 8fb80054 */ lw $t8,0x54($sp) -/* f09adb4: 8e02060c */ lw $v0,0x60c($s0) -/* f09adb8: 26190074 */ addiu $t9,$s0,0x74 -/* f09adbc: 26080064 */ addiu $t0,$s0,0x64 -/* f09adc0: 304f0040 */ andi $t7,$v0,0x40 -/* f09adc4: 15e0006b */ bnez $t7,.L0f09af74 -/* f09adc8: 30490080 */ andi $t1,$v0,0x80 -/* f09adcc: c4e20028 */ lwc1 $f2,0x28($a3) -/* f09add0: c4e0002c */ lwc1 $f0,0x2c($a3) -/* f09add4: afa80028 */ sw $t0,0x28($sp) -/* f09add8: 1520000b */ bnez $t1,.L0f09ae08 -/* f09addc: afb90020 */ sw $t9,0x20($sp) -/* f09ade0: c6040070 */ lwc1 $f4,0x70($s0) -/* f09ade4: c60a0064 */ lwc1 $f10,0x64($s0) -/* f09ade8: c6060068 */ lwc1 $f6,0x68($s0) -/* f09adec: c608006c */ lwc1 $f8,0x6c($s0) -/* f09adf0: 344a0080 */ ori $t2,$v0,0x80 -/* f09adf4: ae0a060c */ sw $t2,0x60c($s0) -/* f09adf8: e6040050 */ swc1 $f4,0x50($s0) -/* f09adfc: e60a0044 */ swc1 $f10,0x44($s0) -/* f09ae00: e6060048 */ swc1 $f6,0x48($s0) -/* f09ae04: e608004c */ swc1 $f8,0x4c($s0) -.L0f09ae08: -/* f09ae08: 3c017f1b */ lui $at,%hi(var7f1ac328) -/* f09ae0c: c42cc328 */ lwc1 $f12,%lo(var7f1ac328)($at) -/* f09ae10: 3c0143b4 */ lui $at,0x43b4 -/* f09ae14: 44815000 */ mtc1 $at,$f10 -/* f09ae18: 460c0102 */ mul.s $f4,$f0,$f12 -/* f09ae1c: 460a2183 */ div.s $f6,$f4,$f10 -/* f09ae20: 46066201 */ sub.s $f8,$f12,$f6 -/* f09ae24: e6080060 */ swc1 $f8,0x60($s0) -/* f09ae28: e7a20038 */ swc1 $f2,0x38($sp) -/* f09ae2c: 0fc2c4c7 */ jal func0f0b131c -/* f09ae30: 8fa40068 */ lw $a0,0x68($sp) -/* f09ae34: c60401c0 */ lwc1 $f4,0x1c0($s0) -/* f09ae38: c7a20038 */ lwc1 $f2,0x38($sp) -/* f09ae3c: 3c01447a */ lui $at,0x447a -/* f09ae40: 46040281 */ sub.s $f10,$f0,$f4 -/* f09ae44: 44816000 */ mtc1 $at,$f12 -/* f09ae48: 44802000 */ mtc1 $zero,$f4 -/* f09ae4c: 8fa2005c */ lw $v0,0x5c($sp) -/* f09ae50: 46025182 */ mul.s $f6,$f10,$f2 -/* f09ae54: e6040058 */ swc1 $f4,0x58($s0) -/* f09ae58: 0222082a */ slt $at,$s1,$v0 -/* f09ae5c: 02226823 */ subu $t5,$s1,$v0 -/* f09ae60: 460c3203 */ div.s $f8,$f6,$f12 -/* f09ae64: c60601c8 */ lwc1 $f6,0x1c8($s0) -/* f09ae68: e6080054 */ swc1 $f8,0x54($s0) -/* f09ae6c: 8fab0040 */ lw $t3,0x40($sp) -/* f09ae70: c56a0034 */ lwc1 $f10,0x34($t3) -/* f09ae74: 46065201 */ sub.s $f8,$f10,$f6 -/* f09ae78: 46024102 */ mul.s $f4,$f8,$f2 -/* f09ae7c: 460c2283 */ div.s $f10,$f4,$f12 -/* f09ae80: 1020000c */ beqz $at,.L0f09aeb4 -/* f09ae84: e60a005c */ swc1 $f10,0x5c($s0) -/* f09ae88: 44913000 */ mtc1 $s1,$f6 -/* f09ae8c: 3c017f1b */ lui $at,%hi(var7f1ac32c) -/* f09ae90: c424c32c */ lwc1 $f4,%lo(var7f1ac32c)($at) -/* f09ae94: 46803220 */ cvt.s.w $f8,$f6 -/* f09ae98: 44823000 */ mtc1 $v0,$f6 -/* f09ae9c: 46044282 */ mul.s $f10,$f8,$f4 -/* f09aea0: 46803220 */ cvt.s.w $f8,$f6 -/* f09aea4: 0c0068f7 */ jal sinf -/* f09aea8: 46085303 */ div.s $f12,$f10,$f8 -/* f09aeac: 10000010 */ b .L0f09aef0 -/* f09aeb0: 46000486 */ mov.s $f18,$f0 -.L0f09aeb4: -/* f09aeb4: 448d2000 */ mtc1 $t5,$f4 -/* f09aeb8: 8fae0058 */ lw $t6,0x58($sp) -/* f09aebc: 3c017f1b */ lui $at,%hi(var7f1ac330) -/* f09aec0: 468021a0 */ cvt.s.w $f6,$f4 -/* f09aec4: c42ac330 */ lwc1 $f10,%lo(var7f1ac330)($at) -/* f09aec8: 448e2000 */ mtc1 $t6,$f4 -/* f09aecc: 460a3202 */ mul.s $f8,$f6,$f10 -/* f09aed0: 468021a0 */ cvt.s.w $f6,$f4 -/* f09aed4: 0c0068f4 */ jal cosf -/* f09aed8: 46064303 */ div.s $f12,$f8,$f6 -/* f09aedc: 3c013f00 */ lui $at,0x3f00 -/* f09aee0: 44815000 */ mtc1 $at,$f10 -/* f09aee4: 44814000 */ mtc1 $at,$f8 -/* f09aee8: 460a0102 */ mul.s $f4,$f0,$f10 -/* f09aeec: 46082480 */ add.s $f18,$f4,$f8 -.L0f09aef0: -/* f09aef0: c60c0050 */ lwc1 $f12,0x50($s0) -/* f09aef4: c60e0060 */ lwc1 $f14,0x60($s0) -/* f09aef8: 44069000 */ mfc1 $a2,$f18 -/* f09aefc: 0c006bfa */ jal func0001afe8 -/* f09af00: e7b20030 */ swc1 $f18,0x30($sp) -/* f09af04: c6020044 */ lwc1 $f2,0x44($s0) -/* f09af08: c6060054 */ lwc1 $f6,0x54($s0) -/* f09af0c: c7b20030 */ lwc1 $f18,0x30($sp) -/* f09af10: c60e0048 */ lwc1 $f14,0x48($s0) -/* f09af14: 46023281 */ sub.s $f10,$f6,$f2 -/* f09af18: c6060058 */ lwc1 $f6,0x58($s0) -/* f09af1c: c610004c */ lwc1 $f16,0x4c($s0) -/* f09af20: 240c0001 */ addiu $t4,$zero,0x1 -/* f09af24: 46125102 */ mul.s $f4,$f10,$f18 -/* f09af28: 460e3281 */ sub.s $f10,$f6,$f14 -/* f09af2c: c606005c */ lwc1 $f6,0x5c($s0) -/* f09af30: e6000070 */ swc1 $f0,0x70($s0) -/* f09af34: ae0c00b4 */ sw $t4,0xb4($s0) -/* f09af38: 46000306 */ mov.s $f12,$f0 -/* f09af3c: 46022200 */ add.s $f8,$f4,$f2 -/* f09af40: 46125102 */ mul.s $f4,$f10,$f18 -/* f09af44: 46103281 */ sub.s $f10,$f6,$f16 -/* f09af48: e6080064 */ swc1 $f8,0x64($s0) -/* f09af4c: 460e2200 */ add.s $f8,$f4,$f14 -/* f09af50: 46125102 */ mul.s $f4,$f10,$f18 -/* f09af54: e6080068 */ swc1 $f8,0x68($s0) -/* f09af58: 46102200 */ add.s $f8,$f4,$f16 -/* f09af5c: e608006c */ swc1 $f8,0x6c($s0) -/* f09af60: 0c0058ba */ jal func000162e8 -/* f09af64: 8fa50020 */ lw $a1,0x20($sp) -/* f09af68: 8fa40028 */ lw $a0,0x28($sp) -/* f09af6c: 0c005775 */ jal func00015dd4 -/* f09af70: 8fa50020 */ lw $a1,0x20($sp) -.L0f09af74: -/* f09af74: 8fb80054 */ lw $t8,0x54($sp) -.L0f09af78: -/* f09af78: 8faf004c */ lw $t7,0x4c($sp) -/* f09af7c: 00001025 */ or $v0,$zero,$zero -/* f09af80: 0238082a */ slt $at,$s1,$t8 -/* f09af84: 14200012 */ bnez $at,.L0f09afd0 -/* f09af88: 00000000 */ nop -/* f09af8c: 05e00009 */ bltz $t7,.L0f09afb4 -/* f09af90: 8fa90054 */ lw $t1,0x54($sp) -/* f09af94: 8e190014 */ lw $t9,0x14($s0) -/* f09af98: 53200007 */ beqzl $t9,.L0f09afb8 -/* f09af9c: 8faa0048 */ lw $t2,0x48($sp) -/* f09afa0: 8e08000c */ lw $t0,0xc($s0) -/* f09afa4: 51000004 */ beqzl $t0,.L0f09afb8 -/* f09afa8: 8faa0048 */ lw $t2,0x48($sp) -/* f09afac: 10000008 */ b .L0f09afd0 -/* f09afb0: 24020001 */ addiu $v0,$zero,0x1 -.L0f09afb4: -/* f09afb4: 8faa0048 */ lw $t2,0x48($sp) -.L0f09afb8: -/* f09afb8: 012a5821 */ addu $t3,$t1,$t2 -/* f09afbc: 022b082a */ slt $at,$s1,$t3 -/* f09afc0: 14200003 */ bnez $at,.L0f09afd0 -/* f09afc4: 00000000 */ nop -/* f09afc8: 10000001 */ b .L0f09afd0 -/* f09afcc: 24020001 */ addiu $v0,$zero,0x1 -.L0f09afd0: -/* f09afd0: 8fbf001c */ lw $ra,0x1c($sp) -/* f09afd4: 8fb00014 */ lw $s0,0x14($sp) -/* f09afd8: 8fb10018 */ lw $s1,0x18($sp) -/* f09afdc: 03e00008 */ jr $ra -/* f09afe0: 27bd0060 */ addiu $sp,$sp,0x60 -); + unk24 = func->unk24; + unk25 = func->unk25; + sum = unk24 + unk25; + unk26 = func->unk26; + unk27 = func->unk27; + unk18 = func->unk18; + weapondef = info->definition; #endif + frames = hand->stateframes - hand->statevar1; + + if (sum < 1) { + sum = 0; + } else { + if (hand->triggerreleased + && hand->triggeron + && frames >= unk26 + && unk26 > 0 + && unk27 >= 0 + && (hand->stateflags & HANDSTATEFLAG_00000040) == 0 + && frames + unk27 < sum) { + hand->stateflags |= HANDSTATEFLAG_00000040; + hand->statevar1 = frames; + + hand->rotxstart = hand->rotxoffset; + hand->rotxend = 0; + + hand->posend.x = 0; + hand->posend.y = 0; + hand->posend.z = 0; + + hand->posstart.x = hand->posoffset.x; + hand->posstart.y = hand->posoffset.y; + hand->posstart.z = hand->posoffset.z; + } + + if (hand->stateflags & HANDSTATEFLAG_00000040) { + if (unk27 > frames - hand->statevar1) { + mult1 = cosf((f32)(unk27 - frames + hand->statevar1) * 1.5707963705063f / (f32)unk27) * 0.5f + 0.5f; + + hand->rotxoffset = func0001afe8(hand->rotxstart, hand->rotxend, mult1); + hand->useposrot = true; + + hand->posoffset.x = (hand->posend.x - hand->posstart.x) * mult1 + hand->posstart.x; + hand->posoffset.y = (hand->posend.y - hand->posstart.y) * mult1 + hand->posstart.y; + hand->posoffset.z = (hand->posend.z - hand->posstart.z) * mult1 + hand->posstart.z; + + func000162e8(hand->rotxoffset, &hand->posrotmtx); + func00015dd4(&hand->posoffset, &hand->posrotmtx); + } else { + func000159b0(&hand->posrotmtx); + hand->useposrot = false; + return true; + } + } + + if (frames < sum && (hand->stateflags & HANDSTATEFLAG_00000040) == 0) { + recoil = func->recoil; + unk2c = func->unk2c; + + if ((hand->stateflags & HANDSTATEFLAG_00000080) == 0) { + hand->stateflags |= HANDSTATEFLAG_00000080; + hand->rotxstart = hand->rotxoffset; + hand->posstart.x = hand->posoffset.x; + hand->posstart.y = hand->posoffset.y; + hand->posstart.z = hand->posoffset.z; + } + + hand->rotxend = M_BADTAU - (unk2c * M_BADTAU) / 360.0f; + + hand->posend.x = (func0f0b131c(handnum) - hand->aimpos.x) * recoil / 1000.0f; + hand->posend.y = 0; + hand->posend.z = (weapondef->frontback - hand->aimpos.z) * recoil / 1000.0f; + + if (frames < unk24) { + mult2 = sinf(frames * 1.5707963705063f / (f32)unk24); + } else { + mult2 = cosf((f32)(frames - unk24) * M_PI / (f32)unk25) * 0.5f + 0.5f; + } + + hand->rotxoffset = func0001afe8(hand->rotxstart, hand->rotxend, mult2); + hand->useposrot = true; + + hand->posoffset.x = (hand->posend.x - hand->posstart.x) * mult2 + hand->posstart.x; + hand->posoffset.y = (hand->posend.y - hand->posstart.y) * mult2 + hand->posstart.y; + hand->posoffset.z = (hand->posend.z - hand->posstart.z) * mult2 + hand->posstart.z; + + func000162e8(hand->rotxoffset, &hand->posrotmtx); + func00015dd4(&hand->posoffset, &hand->posrotmtx); + } + } + + if (sum <= frames) { + if (unk27 >= 0 && hand->triggerreleased && hand->triggeron) { + return true; + } else if (sum + unk18 <= frames) { + return true; + } + } + + return false; +} + bool handTickIncAttackingShoot(struct handweaponinfo *info, s32 handnum, struct hand *hand) { static u32 var80070128 = 99; @@ -7677,7 +7108,7 @@ bool handTickIncAttackingShoot(struct handweaponinfo *info, s32 handnum, struct if (hand->stateminor == HANDSTATEMINOR_ANIM) { if (hand->stateflags & HANDSTATEFLAG_00000020) { - sp68 = func0f09aba4(hand, info, handnum, func); + sp68 = func0f09aba4(hand, info, handnum, (struct weaponfunc_shoot *) func); } else { sp68 = true; } diff --git a/src/game/game_0b0fd0.c b/src/game/game_0b0fd0.c index 8e57dcd40..9b24775fa 100644 --- a/src/game/game_0b0fd0.c +++ b/src/game/game_0b0fd0.c @@ -152,7 +152,7 @@ f32 handGetXShift(s32 handnum) return g_Vars.currentplayer->hands[handnum].xshift; } -f32 func0f0b131c(u32 hand) +f32 func0f0b131c(s32 hand) { f32 x; struct weapon *weapon; diff --git a/src/game/inventory/items.c b/src/game/inventory/items.c index b56d7fd27..04811c66b 100644 --- a/src/game/inventory/items.c +++ b/src/game/inventory/items.c @@ -119,7 +119,7 @@ struct weaponfunc_shootsingle invfunc_00011160 = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 6, // spread 6, 18, 2, 8, @@ -442,7 +442,7 @@ struct weaponfunc_shootsingle invfunc_falcon2_singleshot = { invanim_falcon2_shoot, // fire animation 0, // flags &invmenupos_00011098, - 0x10000000, + 16, 1, // damage 1, // spread 3, 5, 2, 0, @@ -464,7 +464,7 @@ struct weaponfunc_shootsingle invfunc_falcon2silenced_singleshot = { invanim_falcon2_shoot, // fire animation FUNCFLAG_NOMUZZLEFLASH, &invmenupos_00011098, - 0x10000000, + 16, 1, // damage 1, // spread 3, 5, 2, 0, @@ -671,7 +671,7 @@ struct weaponfunc_shootsingle invfunc_magsec_singleshot = { invanim_magsec_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x10000000, + 16, 1.1, // damage 6, // spread 4, 8, 3, 0, @@ -693,7 +693,7 @@ struct weaponfunc_shootsingle invfunc_magsec_burst = { invanim_magsec_equiporshoot, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x10000000, + 16, 1.1, // damage 10, // spread 9, 14, 0, 0, @@ -838,7 +838,7 @@ struct weaponfunc_shootsingle invfunc_dy357_singleshot = { invanim_dy357_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x14000000, + 20, 2, // damage 0, // spread 8, 16, 0, -1, @@ -860,7 +860,7 @@ struct weaponfunc_shootsingle invfunc_dy357lx_singleshot = { invanim_dy357_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x1e000000, + 30, 200, // damage 0, // spread 8, 24, 0, -1, @@ -1007,7 +1007,7 @@ struct weaponfunc_shootsingle invfunc_phoenix_singleshot = { invanim_phoenix_shoot, // fire animation 0, // flags &invmenupos_00011098, - 0x10000000, + 16, 1.1, // damage 3, // spread 3, 5, 2, 0, @@ -1029,7 +1029,7 @@ struct weaponfunc_shootsingle invfunc_phoenix_explosiveshells = { invanim_phoenix_shoot, // fire animation FUNCFLAG_EXPLOSIVESHELLS, &invmenupos_00011098, - 0x10000000, + 16, 1.2, // damage 5, // spread 13, 15, 25, 0, @@ -1147,7 +1147,7 @@ struct weaponfunc_shootsingle invfunc_mauler_singleshot = { invanim_mauler_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.2, // damage 6, // spread 3, 9, 32, 28, @@ -1169,7 +1169,7 @@ struct weaponfunc_shootsingle invfunc_mauler_chargeshot = { invanim_mauler_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.2, // damage 6, // spread 3, 9, 32, 28, @@ -1293,7 +1293,7 @@ struct weaponfunc_shootauto invfunc_cmp150_rapidfire = { invanim_cmp150_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 9, // spread 6, 18, 0, 6, @@ -1320,7 +1320,7 @@ struct weaponfunc_shootauto invfunc_cmp150_followlockon = { invanim_cmp150_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 9, // spread 6, 18, 0, 6, @@ -1419,7 +1419,7 @@ struct weaponfunc_shootauto invfunc_cyclone_rapidfire = { invanim_cyclone_shoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 0.8, // damage 6, // spread 6, 18, 2, 8, @@ -1446,7 +1446,7 @@ struct weaponfunc_shootauto invfunc_cyclone_magazinedischarge = { invanim_cyclone_shoot, // fire animation FUNCFLAG_BURST50, &invmenupos_00011098, - 0x00000000, + 0, 1.4, // damage 25, // spread 6, 18, 2, 8, @@ -1537,7 +1537,7 @@ struct weaponfunc_shootauto invfunc_rcp120_rapidfire = { invanim_rcp120_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.2, // damage 6, // spread 6, 18, 0, 6, @@ -1636,7 +1636,7 @@ struct weaponfunc_shootauto invfunc_callisto_rapidfire = { invanim_callisto_shoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.2, // damage 9, // spread 6, 18, 0, 6, @@ -1663,7 +1663,7 @@ struct weaponfunc_shootauto invfunc_callisto_highimpactshells = { invanim_callisto_shoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 2.4, // damage 9, // spread 6, 18, 0, 6, @@ -1751,7 +1751,7 @@ struct weaponfunc_shootauto invfunc_dragon_rapidfire = { invanim_dragon_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.1, // damage 6, // spread 6, 18, 2, 8, @@ -1884,7 +1884,7 @@ struct weaponfunc_shootauto invfunc_superdragon_rapidfire = { invanim_superdragon_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.2, // damage 6, // spread 6, 18, 2, 8, @@ -1910,8 +1910,8 @@ struct weaponfunc_shootprojectile invfunc_superdragon_grenadelauncher = { &invmenupos_00011048, // menupos invanim_superdragon_shootgrenade, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_10000000 | FUNCFLAG_20000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1.2, // damage 6, // spread 5, 15, -1, 0, @@ -2021,7 +2021,7 @@ struct weaponfunc_shootauto invfunc_ar34_burstfire = { NULL, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x00000000, + 0, 1.4, // damage 8, // spread 6, 18, 2, 8, @@ -2048,7 +2048,7 @@ struct weaponfunc_shootauto invfunc_ar34_usescope = { NULL, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x00000000, + 0, 1.4, // damage 8, // spread 6, 18, 2, 8, @@ -2160,7 +2160,7 @@ struct weaponfunc_shootauto invfunc_k7avenger_burstfire = { NULL, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x00000000, + 0, 1.5, // damage 6, // spread 6, 18, 2, 8, @@ -2187,7 +2187,7 @@ struct weaponfunc_shootauto invfunc_k7avenger_threatdetector = { NULL, // fire animation FUNCFLAG_BURST3 | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_THREATDETECTOR, &invmenupos_00011098, - 0x00000000, + 0, 1.5, // damage 6, // spread 6, 18, 2, 8, @@ -2306,7 +2306,7 @@ struct weaponfunc_shootauto invfunc_laptopgun_burstfire = { invanim_laptopgun_shoot, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x00000000, + 0, 1.15, // damage 6, // spread 6, 18, 2, 8, @@ -2416,7 +2416,7 @@ struct weaponfunc_shootsingle invfunc_shotgun_single = { invanim_shotgun_equiporsingleshot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 0.6, // damage 30, // spread 20, 28, 0, 0, @@ -2438,7 +2438,7 @@ struct weaponfunc_shootsingle invfunc_shotgun_double = { invanim_shotgun_doubleshot, // fire animation FUNCFLAG_BURST2, &invmenupos_00011098, - 0x00000000, + 0, 0.6, // damage 16, // spread 20, 28, 0, 0, @@ -2537,7 +2537,7 @@ struct weaponfunc_shootauto invfunc_reaper_shoot = { invanim_reaper_shoot, // fire animation FUNCFLAG_BURST3, &invmenupos_000110ac, - 0x00000000, + 0, 1.2, // damage 56, // spread 3, 9, 32, 28, @@ -2662,8 +2662,8 @@ struct weaponfunc_shootprojectile invfunc_rockerlauncher_shoot = { &invmenupos_00011048, // menupos invanim_rockerlauncher_equiporshoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 3, 12, 15, 0, @@ -2693,8 +2693,8 @@ struct weaponfunc_shootprojectile invfunc_rocketlauncher_homing = { &invmenupos_00011048, // menupos invanim_rockerlauncher_equiporshoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000 | FUNCFLAG_HOMINGROCKET, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 3, 12, 15, 0, @@ -2772,8 +2772,8 @@ struct weaponfunc_shootprojectile invfunc_slayer_shoot = { &invmenupos_00011048, // menupos invanim_slayer_equiporshoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 3, 12, 15, 0, @@ -2803,8 +2803,8 @@ struct weaponfunc_shootprojectile invfunc_slayer_flybywire = { &invmenupos_00011048, // menupos NULL, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_FLYBYWIRE | FUNCFLAG_08000000 | FUNCFLAG_20000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 3, 12, 15, 0, @@ -2892,8 +2892,8 @@ struct weaponfunc_shootprojectile invfunc_devastator_shoot = { &invmenupos_00011048, // menupos invanim_devastator_equiporshoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_10000000 | FUNCFLAG_20000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 5, 58, -1, 0, @@ -2923,8 +2923,8 @@ struct weaponfunc_shootprojectile invfunc_devastator_wallhugger = { &invmenupos_00011048, // menupos invanim_devastator_equiporshoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_STICKTOWALL | FUNCFLAG_10000000 | FUNCFLAG_20000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 5, 58, -1, 0, @@ -3465,7 +3465,7 @@ struct weaponfunc_shootsingle invfunc_farsight_shoot = { invanim_farsight_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 100, // damage 0, // spread 70, 40, 0, 0, @@ -3487,7 +3487,7 @@ struct weaponfunc_shootsingle invfunc_farsight_targetlocator = { invanim_farsight_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 100, // damage 0, // spread 70, 40, 0, 0, @@ -3588,8 +3588,8 @@ struct weaponfunc_shootprojectile invfunc_crossbow_lethal = { &invmenupos_00010fe4, // menupos invanim_crossbow_shoot, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_00800000, - 0x00000000, - 0x00000000, + NULL, + 0, 100, // damage 6, // spread 3, 12, 15, 0, @@ -3619,8 +3619,8 @@ struct weaponfunc_shootprojectile invfunc_crossbow_shoot = { &invmenupos_00010fe4, // menupos invanim_crossbow_shoot, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_00800000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 3, 12, 15, 0, @@ -3730,7 +3730,7 @@ struct weaponfunc_shootsingle invfunc_tranquilizer_shoot = { invanim_tranquilizer_equiporshoot, // fire animation FUNCFLAG_MAKEDIZZY, &invmenupos_00011098, - 0x10000000, + 16, 0.25, // damage 3, // spread 3, 5, 5, 0, @@ -3824,7 +3824,7 @@ struct weaponfunc_shootsingle invfunc_psychosisgun_shoot = { invanim_tranquilizer_equiporshoot, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_00200000, &invmenupos_00011098, - 0x10000000, + 16, 0.5, // damage 3, // spread 3, 5, 5, 0, @@ -3906,7 +3906,7 @@ struct weaponfunc_shootsingle invfunc_sniperrifle_singleshot = { NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, &invmenupos_00011098, - 0x10000000, + 16, 1.2, // damage 0, // spread 6, 10, 0, 0, @@ -3989,7 +3989,7 @@ struct weaponfunc_shootsingle invfunc_laser_pulse = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 0, // spread 6, 18, 24, -1, @@ -4011,7 +4011,7 @@ struct weaponfunc_shootauto invfunc_laser_stream = { NULL, // fire animation 0, // flags &invmenupos_00011084, - 0x00000000, + 0, 0.1, // damage 0, // spread 6, 18, 0, 6, @@ -4079,7 +4079,7 @@ struct weaponfunc_shootsingle invfunc_pp9i_shoot = { invanim_pp9i_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x10000000, + 16, 1, // damage 1, // spread 4, 8, 3, 0, @@ -4140,7 +4140,7 @@ struct weaponfunc_shootsingle invfunc_cc13_shoot = { invanim_cc13_equiporshoot, // fire animation 0, // flags &invmenupos_00011098, - 0x10000000, + 16, 1, // damage 6, // spread 4, 8, 3, 0, @@ -4195,7 +4195,7 @@ struct weaponfunc_shootauto invfunc_kl01313_shoot = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 0.6, // damage 15, // spread 0, 0, 0, 6, @@ -4255,7 +4255,7 @@ struct weaponfunc_shootauto invfunc_kf7special_shoot = { NULL, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 10, // spread 4, 12, 0, 6, @@ -4315,7 +4315,7 @@ struct weaponfunc_shootauto invfunc_zzt9mm_shoot = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 9, // spread 6, 18, 0, 6, @@ -4375,7 +4375,7 @@ struct weaponfunc_shootauto invfunc_dmc_shoot = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 7, // spread 6, 18, 0, 6, @@ -4435,7 +4435,7 @@ struct weaponfunc_shootauto invfunc_ar53_shoot = { NULL, // fire animation FUNCFLAG_BURST3, &invmenupos_00011098, - 0x00000000, + 0, 1.4, // damage 6, // spread 6, 18, 2, 8, @@ -4495,7 +4495,7 @@ struct weaponfunc_shootauto invfunc_rcp45_shoot = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1.8, // damage 6, // spread 4, 8, 0, 3, @@ -4595,7 +4595,7 @@ struct weaponfunc_shootauto invfunc_59_rapidfire = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 6, // spread 6, 18, 2, 8, @@ -4655,7 +4655,7 @@ struct weaponfunc_shootauto invfunc_5a_rapidfire = { NULL, // fire animation 0, // flags &invmenupos_00011098, - 0x00000000, + 0, 1, // damage 6, // spread 6, 18, 2, 8, @@ -5893,8 +5893,8 @@ struct weaponfunc_shootprojectile invfunc_rocketlauncher34_primary = { &invmenupos_00011048, // menupos invanim_rockerlauncher_equiporshoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000, - 0x00000000, - 0x00000000, + NULL, + 0, 1, // damage 6, // spread 3, 12, 15, 0, @@ -5963,7 +5963,7 @@ struct weaponfunc_shootsingle invfunc_tester_primary = { invanim_tester_shoot, // fire animation 0, // flags &invmenupos_00011070, - 0x10000000, + 16, 1, // damage 6, // spread 4, 8, 3, 0, diff --git a/src/include/constants.h b/src/include/constants.h index f39fbfdcf..1ff5ba4de 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -981,6 +981,8 @@ #define HANDSTATEFLAG_00000010 0x00000010 #define HANDSTATEFLAG_00000020 0x00000020 +#define HANDSTATEFLAG_00000040 0x00000040 +#define HANDSTATEFLAG_00000080 0x00000080 #define HANDSTATEMINOR_IDLE 0 #define HANDSTATEMINOR_START 1 diff --git a/src/include/game/game_097ba0.h b/src/include/game/game_097ba0.h index 4d05fa9a8..445c458dd 100644 --- a/src/include/game/game_097ba0.h +++ b/src/include/game/game_097ba0.h @@ -33,7 +33,7 @@ s32 handTickIncReload(struct handweaponinfo *info, s32 handnum, struct hand *han s32 handTickIncChangeFunc(struct handweaponinfo *info, s32 handnum, struct hand *hand, s32 lvupdate); s32 func0f09a3f8(struct hand *hand, struct weaponfunc *func); void func0f09a6f8(struct handweaponinfo *info, s32 handnum, struct hand *hand, struct weaponfunc *func); -bool func0f09aba4(struct hand *hand, struct handweaponinfo *info, s32 handnum, struct weaponfunc *func); +bool func0f09aba4(struct hand *hand, struct handweaponinfo *info, s32 handnum, struct weaponfunc_shoot *func); bool handTickIncAttackingShoot(struct handweaponinfo *info, s32 handnum, struct hand *hand); bool handTickIncAttackingThrow(s32 handnum, struct hand *hand); s32 weaponGetMinClipQty(s32 weaponnum, s32 funcnum); diff --git a/src/include/game/game_0b0fd0.h b/src/include/game/game_0b0fd0.h index e43826922..2939a9e6f 100644 --- a/src/include/game/game_0b0fd0.h +++ b/src/include/game/game_0b0fd0.h @@ -13,7 +13,7 @@ struct weaponfunc *currentPlayerGetWeaponFunction(u32 hand); struct inventory_class *func0f0b11bc(struct shorthand *hand); struct inventory_ammo *weaponGetAmmoByFunction(u32 weaponnum, u32 funcnum); f32 handGetXShift(s32 handnum); -f32 func0f0b131c(u32 hand); +f32 func0f0b131c(s32 handnum); f32 currentPlayerGetGunZoomFov(void); void currentPlayerZoomOut(f32 fovpersec); void currentPlayerZoomIn(f32 fovpersec); diff --git a/src/include/types.h b/src/include/types.h index 7a30d4c09..180ca355f 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2096,13 +2096,13 @@ struct hand { /*0x0674*/ u32 pausechange; /*0x0678*/ u32 nextprevchange; // " /*0x067c*/ struct coord posstart; - /*0x0688*/ u32 rotxstart; + /*0x0688*/ f32 rotxstart; /*0x068c*/ struct coord posend; - /*0x0698*/ u32 rotxend; + /*0x0698*/ f32 rotxend; /*0x069c*/ struct coord posoffset; - /*0x06a8*/ u32 rotxoffset; + /*0x06a8*/ f32 rotxoffset; /*0x06ac*/ Mtxf posrotmtx; - /*0x06ec*/ u32 useposrot; + /*0x06ec*/ bool useposrot; /*0x06f0*/ struct coord damppos; /*0x06fc*/ struct coord damplook; /*0x0708*/ struct coord dampup; @@ -2378,7 +2378,7 @@ struct hand { /*0x0cd4*/ f32 unk0cd4; /*0x0cd8*/ f32 unk0cd8; /*0x0cdc*/ u32 unk0cdc; - /*0x0ce0*/ u32 unk0ce0; + /*0x0ce0*/ s32 statevar1; /*0x0ce4*/ u32 attacktype; /*0x0ce8*/ struct guncmd *unk0ce8; /*0x0cec*/ ubool unk0cec; @@ -3112,7 +3112,7 @@ struct weaponfunc { struct weaponfunc_shoot { struct weaponfunc base; /*0x14*/ struct inventory_menupos *unk14; - /*0x18*/ u32 unk18; + /*0x18*/ s8 unk18; /*0x1c*/ f32 damage; /*0x20*/ f32 spread;