From 156453ec642ba1bc9532c1895c6930a8741a8281 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 26 Dec 2019 13:45:11 +1000 Subject: [PATCH] Decompile func0f020cc8 --- src/game/chr/chr.c | 59 +++++++++++----------------------- src/game/chr/chraicommands.c | 2 +- src/game/game_0b28d0.c | 8 ++--- src/game/game_187770.c | 4 +-- src/include/game/chr/chr.h | 6 ++-- src/include/game/game_0601b0.h | 2 +- 6 files changed, 30 insertions(+), 51 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index f2816d65e..7f756b61c 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -3740,7 +3740,7 @@ glabel func0f020668 .L0f020934: /* f020934: a2070013 */ sb $a3,0x13($s0) /* f020938: a2080125 */ sb $t0,0x125($s0) -/* f02093c: 0fc0cfea */ jal func0f033fa8 +/* f02093c: 0fc0cfea */ jal chrSetShield /* f020940: afa60024 */ sw $a2,0x24($sp) /* f020944: a2000184 */ sb $zero,0x184($s0) /* f020948: a2000185 */ sb $zero,0x185($s0) @@ -3976,41 +3976,20 @@ glabel func0f020b14 /* f020cc4: 27bd0068 */ addiu $sp,$sp,0x68 ); -GLOBAL_ASM( -glabel func0f020cc8 -/* f020cc8: 27bdffd8 */ addiu $sp,$sp,-40 -/* f020ccc: afbf0024 */ sw $ra,0x24($sp) -/* f020cd0: afb00020 */ sw $s0,0x20($sp) -/* f020cd4: afa40028 */ sw $a0,0x28($sp) -/* f020cd8: afa5002c */ sw $a1,0x2c($sp) -/* f020cdc: afa60030 */ sw $a2,0x30($sp) -/* f020ce0: 0fc180d6 */ jal func0f060358 -/* f020ce4: afa70034 */ sw $a3,0x34($sp) -/* f020ce8: 10400011 */ beqz $v0,.L0f020d30 -/* f020cec: 00408025 */ or $s0,$v0,$zero -/* f020cf0: c7a40034 */ lwc1 $f4,0x34($sp) -/* f020cf4: 8fae0038 */ lw $t6,0x38($sp) -/* f020cf8: 00402025 */ or $a0,$v0,$zero -/* f020cfc: 8fa50028 */ lw $a1,0x28($sp) -/* f020d00: 8fa6002c */ lw $a2,0x2c($sp) -/* f020d04: 8fa70030 */ lw $a3,0x30($sp) -/* f020d08: e7a40010 */ swc1 $f4,0x10($sp) -/* f020d0c: 0fc082c5 */ jal func0f020b14 -/* f020d10: afae0014 */ sw $t6,0x14($sp) -/* f020d14: 00408025 */ or $s0,$v0,$zero -/* f020d18: 0fc41b99 */ jal cheatIsEnabled -/* f020d1c: 2404000c */ addiu $a0,$zero,0xc -/* f020d20: 10400003 */ beqz $v0,.L0f020d30 -/* f020d24: 3c054100 */ lui $a1,0x4100 -/* f020d28: 0fc0cfea */ jal func0f033fa8 -/* f020d2c: 8e040004 */ lw $a0,0x4($s0) -.L0f020d30: -/* f020d30: 8fbf0024 */ lw $ra,0x24($sp) -/* f020d34: 02001025 */ or $v0,$s0,$zero -/* f020d38: 8fb00020 */ lw $s0,0x20($sp) -/* f020d3c: 03e00008 */ jr $ra -/* f020d40: 27bd0028 */ addiu $sp,$sp,0x28 -); +struct prop *func0f020cc8(s32 arg0, s32 arg1, s32 arg2, f32 arg3, s32 arg4) +{ + struct prop *prop = func0f060358(); + + if (prop) { + prop = func0f020b14(prop, arg0, arg1, arg2, arg3, arg4); + + if (cheatIsEnabled(CHEAT_ENEMYSHIELDS)) { + chrSetShield(prop->chr, 8); + } + } + + return prop; +} GLOBAL_ASM( glabel func0f020d44 @@ -25246,7 +25225,7 @@ f32 chrGetShield(struct chrdata *chr) } GLOBAL_ASM( -glabel func0f033fa8 +glabel chrSetShield /* f033fa8: 44856000 */ mtc1 $a1,$f12 /* f033fac: 44800000 */ mtc1 $zero,$f0 /* f033fb0: 27bdffe0 */ addiu $sp,$sp,-32 @@ -26451,7 +26430,7 @@ glabel func0f034524 /* f0350d0: 53000007 */ beqzl $t8,.L0f0350f0 /* f0350d4: 4606a003 */ div.s $f0,$f20,$f6 /* f0350d8: 4480a000 */ mtc1 $zero,$f20 -/* f0350dc: 0fc0cfea */ jal func0f033fa8 +/* f0350dc: 0fc0cfea */ jal chrSetShield /* f0350e0: 24050000 */ addiu $a1,$zero,0x0 /* f0350e4: 10000013 */ beqz $zero,.L0f035134 /* f0350e8: 240f0001 */ addiu $t7,$zero,0x1 @@ -26466,13 +26445,13 @@ glabel func0f034524 /* f035108: 4480a000 */ mtc1 $zero,$f20 /* f03510c: 02002025 */ or $a0,$s0,$zero /* f035110: 44051000 */ mfc1 $a1,$f2 -/* f035114: 0fc0cfea */ jal func0f033fa8 +/* f035114: 0fc0cfea */ jal chrSetShield /* f035118: 00000000 */ sll $zero,$zero,0x0 /* f03511c: 10000005 */ beqz $zero,.L0f035134 /* f035120: 240f0001 */ addiu $t7,$zero,0x1 /* f035124: 4480a000 */ mtc1 $zero,$f20 .L0f035128: -/* f035128: 0fc0cfea */ jal func0f033fa8 +/* f035128: 0fc0cfea */ jal chrSetShield /* f03512c: 24050000 */ addiu $a1,$zero,0x0 /* f035130: 240f0001 */ addiu $t7,$zero,0x1 .L0f035134: diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index c154779d1..45f518cc7 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -4703,7 +4703,7 @@ glabel ai010e .L0f053ba0: /* f053ba0: 3c04800a */ lui $a0,0x800a /* f053ba4: 44050000 */ mfc1 $a1,$f0 -/* f053ba8: 0fc0cfea */ jal func0f033fa8 +/* f053ba8: 0fc0cfea */ jal chrSetShield /* f053bac: 8c84a3e4 */ lw $a0,-0x5c1c($a0) /* f053bb0: 3c0a800a */ lui $t2,0x800a /* f053bb4: 8d4aa3f8 */ lw $t2,-0x5c08($t2) diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 657fd0db8..e63a036d2 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -6407,7 +6407,7 @@ glabel func0f0b7c60 /* f0b7e84: 0fc0cfe8 */ jal chrGetShield /* f0b7e88: 02002025 */ or $a0,$s0,$zero /* f0b7e8c: 44050000 */ mfc1 $a1,$f0 -/* f0b7e90: 0fc0cfea */ jal func0f033fa8 +/* f0b7e90: 0fc0cfea */ jal chrSetShield /* f0b7e94: 8fa4003c */ lw $a0,0x3c($sp) /* f0b7e98: 3c02800a */ lui $v0,%hi(g_Vars) /* f0b7e9c: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) @@ -16417,7 +16417,7 @@ glabel func0f0c07c8 /* f0c0f14: 8dc40004 */ lw $a0,0x4($t6) /* f0c0f18: e7a0002c */ swc1 $f0,0x2c($sp) /* f0c0f1c: 44055000 */ mfc1 $a1,$f10 -/* f0c0f20: 0fc0cfea */ jal func0f033fa8 +/* f0c0f20: 0fc0cfea */ jal chrSetShield /* f0c0f24: 00000000 */ sll $zero,$zero,0x0 /* f0c0f28: 1000000e */ beqz $zero,.L0f0c0f64 /* f0c0f2c: c7a0002c */ lwc1 $f0,0x2c($sp) @@ -16426,7 +16426,7 @@ glabel func0f0c07c8 /* f0c0f34: 24050000 */ addiu $a1,$zero,0x0 /* f0c0f38: 8ded00bc */ lw $t5,0xbc($t7) /* f0c0f3c: 8da40004 */ lw $a0,0x4($t5) -/* f0c0f40: 0fc0cfea */ jal func0f033fa8 +/* f0c0f40: 0fc0cfea */ jal chrSetShield /* f0c0f44: e7a0002c */ swc1 $f0,0x2c($sp) /* f0c0f48: c7a0002c */ lwc1 $f0,0x2c($sp) /* f0c0f4c: c7b20070 */ lwc1 $f18,0x70($sp) @@ -17835,7 +17835,7 @@ glabel func0f0c2210 /* f0c2258: 8dcea244 */ lw $t6,-0x5dbc($t6) /* f0c225c: 8dcf00bc */ lw $t7,0xbc($t6) /* f0c2260: 44053000 */ mfc1 $a1,$f6 -/* f0c2264: 0fc0cfea */ jal func0f033fa8 +/* f0c2264: 0fc0cfea */ jal chrSetShield /* f0c2268: 8de40004 */ lw $a0,0x4($t7) /* f0c226c: 8fbf0014 */ lw $ra,0x14($sp) /* f0c2270: 27bd0018 */ addiu $sp,$sp,0x18 diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 8bdd8d8c4..bea518fc8 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -10352,7 +10352,7 @@ glabel func0f19028c /* f1902fc: e4820100 */ swc1 $f2,0x100($a0) /* f190300: a486017e */ sh $a2,0x17e($a0) /* f190304: a486012a */ sh $a2,0x12a($a0) -/* f190308: 0fc0cfea */ jal func0f033fa8 +/* f190308: 0fc0cfea */ jal chrSetShield /* f19030c: a4860292 */ sh $a2,0x292($a0) /* f190310: a2200184 */ sb $zero,0x184($s1) /* f190314: a2200185 */ sb $zero,0x185($s1) @@ -10950,7 +10950,7 @@ glabel func0f190784 /* f190b98: 8fa400a4 */ lw $a0,0xa4($sp) /* f190b9c: 46062202 */ mul.s $f8,$f4,$f6 /* f190ba0: 44054000 */ mfc1 $a1,$f8 -/* f190ba4: 0fc0cfea */ jal func0f033fa8 +/* f190ba4: 0fc0cfea */ jal chrSetShield /* f190ba8: 00000000 */ sll $zero,$zero,0x0 /* f190bac: 8fa4009c */ lw $a0,0x9c($sp) /* f190bb0: 00002825 */ or $a1,$zero,$zero diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 86a9947a8..aa7366e4f 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -50,8 +50,8 @@ void chrAddHealth(struct chrdata *chr, f32 health); f32 chrGetArmor(struct chrdata *chr); s32 getLowestUnusedChrId(void); u32 func0f020668(void); -u32 func0f020b14(void); -u32 func0f020cc8(void); +struct prop *func0f020b14(struct prop *prop, s32 arg0, s32 arg1, s32 arg2, f32 arg3, s32 arg4); +struct prop *func0f020cc8(s32 arg0, s32 arg1, s32 arg2, f32 arg3, s32 arg4); u32 func0f020d44(void); void func0f020f90(s32 propnum); u32 func0f021258(void); @@ -180,7 +180,7 @@ u32 func0f0336a8(void); u32 func0f033728(void); u32 func0f0338e0(void); f32 chrGetShield(struct chrdata *chr); -u32 func0f033fa8(void); +void chrSetShield(struct chrdata *chr, f32 shield); u32 func0f034080(void); u32 func0f034124(void); u32 func0f03417c(void); diff --git a/src/include/game/game_0601b0.h b/src/include/game/game_0601b0.h index 82ccbd8a0..2f940c5fc 100644 --- a/src/include/game/game_0601b0.h +++ b/src/include/game/game_0601b0.h @@ -6,7 +6,7 @@ u32 func0f0601b0(void); u32 func0f0602f0(struct prop *prop); u32 func0f060300(struct prop *prop); -u32 func0f060358(void); +struct prop *func0f060358(void); u32 func0f060438(void); void func0f0604bc(struct prop *prop); u32 func0f060538(void);