From 81c22ab87793abb5a2c2de6269ccaf21c78644c9 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 24 May 2020 17:00:10 +1000 Subject: [PATCH] Decompile func0f02f530 --- src/game/chr/chraction.c | 90 ++++++++++------------------------------ 1 file changed, 21 insertions(+), 69 deletions(-) diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index e57d0e157..999de6e90 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -1438,75 +1438,27 @@ glabel var7f1a8d04 /* f02f52c: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f02f530 -.late_rodata -glabel var7f1a8d08 -.word 0x3e32b17a -glabel var7f1a8d0c -.word 0x40c3721d -.text -/* f02f530: 27bdffe0 */ addiu $sp,$sp,-32 -/* f02f534: afbf001c */ sw $ra,0x1c($sp) -/* f02f538: afb00018 */ sw $s0,0x18($sp) -/* f02f53c: 0fc0a221 */ jal chrGetTargetProp -/* f02f540: 00808025 */ or $s0,$a0,$zero -/* f02f544: 02002025 */ or $a0,$s0,$zero -/* f02f548: 0fc122a1 */ jal chrGetAngleToPos -/* f02f54c: 24450008 */ addiu $a1,$v0,0x8 -/* f02f550: 3c017f1b */ lui $at,%hi(var7f1a8d08) -/* f02f554: c4248d08 */ lwc1 $f4,%lo(var7f1a8d08)($at) -/* f02f558: 3c017f1b */ lui $at,%hi(var7f1a8d0c) -/* f02f55c: 4604003c */ c.lt.s $f0,$f4 -/* f02f560: 00000000 */ sll $zero,$zero,0x0 -/* f02f564: 45010006 */ bc1t .L0f02f580 -/* f02f568: 00000000 */ sll $zero,$zero,0x0 -/* f02f56c: c4268d0c */ lwc1 $f6,%lo(var7f1a8d0c)($at) -/* f02f570: 4600303c */ c.lt.s $f6,$f0 -/* f02f574: 00000000 */ sll $zero,$zero,0x0 -/* f02f578: 45000019 */ bc1f .L0f02f5e0 -/* f02f57c: 00000000 */ sll $zero,$zero,0x0 -.L0f02f580: -/* f02f580: 0fc0fe3d */ jal chrStopFiring -/* f02f584: 02002025 */ or $a0,$s0,$zero -/* f02f588: 240e0012 */ addiu $t6,$zero,0x12 -/* f02f58c: 240f0001 */ addiu $t7,$zero,0x1 -/* f02f590: a20e0007 */ sb $t6,0x7($s0) -/* f02f594: ae0f002c */ sw $t7,0x2c($s0) -/* f02f598: a2000008 */ sb $zero,0x8($s0) -/* f02f59c: 0c0076e5 */ jal func0001db94 -/* f02f5a0: 8e040020 */ lw $a0,0x20($s0) -/* f02f5a4: 10400006 */ beqz $v0,.L0f02f5c0 -/* f02f5a8: 00000000 */ sll $zero,$zero,0x0 -/* f02f5ac: 8e180014 */ lw $t8,0x14($s0) -/* f02f5b0: 3c010020 */ lui $at,0x20 -/* f02f5b4: 0301c825 */ or $t9,$t8,$at -/* f02f5b8: 1000000f */ beqz $zero,.L0f02f5f8 -/* f02f5bc: ae190014 */ sw $t9,0x14($s0) -.L0f02f5c0: -/* f02f5c0: 0fc0bcc5 */ jal func0f02f314 -/* f02f5c4: 02002025 */ or $a0,$s0,$zero -/* f02f5c8: 8e080014 */ lw $t0,0x14($s0) -/* f02f5cc: 3c01ffdf */ lui $at,0xffdf -/* f02f5d0: 3421ffff */ ori $at,$at,0xffff -/* f02f5d4: 01014824 */ and $t1,$t0,$at -/* f02f5d8: 10000007 */ beqz $zero,.L0f02f5f8 -/* f02f5dc: ae090014 */ sw $t1,0x14($s0) -.L0f02f5e0: -/* f02f5e0: 0fc0e576 */ jal chrIsStopped -/* f02f5e4: 02002025 */ or $a0,$s0,$zero -/* f02f5e8: 54400004 */ bnezl $v0,.L0f02f5fc -/* f02f5ec: 8fbf001c */ lw $ra,0x1c($sp) -/* f02f5f0: 0fc0baaf */ jal chrStand -/* f02f5f4: 02002025 */ or $a0,$s0,$zero -.L0f02f5f8: -/* f02f5f8: 8fbf001c */ lw $ra,0x1c($sp) -.L0f02f5fc: -/* f02f5fc: 8fb00018 */ lw $s0,0x18($sp) -/* f02f600: 27bd0020 */ addiu $sp,$sp,0x20 -/* f02f604: 03e00008 */ jr $ra -/* f02f608: 00000000 */ sll $zero,$zero,0x0 -); +void func0f02f530(struct chrdata *chr) +{ + struct prop *prop = chrGetTargetProp(chr); + f32 angle = chrGetAngleToPos(chr, &prop->pos); + + if (angle < DEG2RAD(10) || angle > DEG2RAD(350)) { + chrStopFiring(chr); + chr->actiontype = ACT_SURPRISED; + chr->act_surprised.unk02c = 1; + chr->sleep = 0; + + if (func0001db94(chr->animdata)) { + chr->hidden |= CHRHFLAG_00200000; + } else { + func0f02f314(chr); + chr->hidden &= ~CHRHFLAG_00200000; + } + } else if (!chrIsStopped(chr)) { + chrStand(chr); + } +} void func0f02f60c(struct chrdata *chr) {