From 01ff7f7d29ba3b5bc4462924ea5a57e5433c461d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 4 Jan 2021 08:02:57 +1000 Subject: [PATCH] Decompile chrIsUsingPaintball --- src/game/chr/chr.c | 4 +- src/game/chr/chraction.c | 4 +- src/game/game_0601b0.c | 4 +- src/game/propobj.c | 10 ++-- src/game/wallhit.c | 101 +++++++------------------------------ src/include/game/wallhit.h | 2 +- 6 files changed, 30 insertions(+), 95 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 35a6bf37c..545129cf2 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -7534,7 +7534,7 @@ void func0f025ea4(struct chrdata *chr, struct prop *prop, s32 arg2, struct coord struct prop *chrprop = chr->prop; s32 race; - if (func0f13e4a8(chr2)) { + if (chrIsUsingPaintball(chr2)) { func0f12f9f0(chrprop->rooms[0], chrprop, coord, coord2, 0, 25); return; } @@ -10056,7 +10056,7 @@ glabel func0f027e1c /* f028414: 8f39a244 */ lw $t9,%lo(g_Vars+0x284)($t9) /* f028418: 8f2b00bc */ lw $t3,0xbc($t9) /* f02841c: 8d640004 */ lw $a0,0x4($t3) -/* f028420: 0fc4f92a */ jal func0f13e4a8 +/* f028420: 0fc4f92a */ jal chrIsUsingPaintball /* f028424: a3a30057 */ sb $v1,0x57($sp) /* f028428: 14400008 */ bnez $v0,.L0f02844c /* f02842c: 93a30057 */ lbu $v1,0x57($sp) diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 6d37b05cd..322a60bbd 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -17320,7 +17320,7 @@ glabel var7f1a9184 /* f04179c: 27a70214 */ addiu $a3,$sp,0x214 /* f0417a0: 240b0001 */ addiu $t3,$zero,0x1 /* f0417a4: afab0210 */ sw $t3,0x210($sp) -/* f0417a8: 0fc4f92a */ jal func0f13e4a8 +/* f0417a8: 0fc4f92a */ jal chrIsUsingPaintball /* f0417ac: 8fa40278 */ lw $a0,0x278($sp) /* f0417b0: 1040000b */ beqz $v0,.L0f0417e0 /* f0417b4: 87a40214 */ lh $a0,0x214($sp) @@ -17382,7 +17382,7 @@ glabel var7f1a9184 /* f041884: 2406ffff */ addiu $a2,$zero,-1 /* f041888: 0fc2a132 */ jal func0f0a84c8 /* f04188c: 27a70214 */ addiu $a3,$sp,0x214 -/* f041890: 0fc4f92a */ jal func0f13e4a8 +/* f041890: 0fc4f92a */ jal chrIsUsingPaintball /* f041894: 8fa40278 */ lw $a0,0x278($sp) /* f041898: 1040000b */ beqz $v0,.L0f0418c8 /* f04189c: 87a40214 */ lh $a0,0x214($sp) diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index ce2b4e45d..db978a919 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -1549,7 +1549,7 @@ glabel var7f1a9eb8 .L0f061898: /* f061898: 8d4aa244 */ lw $t2,%lo(g_Vars+0x284)($t2) /* f06189c: 8d4900bc */ lw $t1,0xbc($t2) -/* f0618a0: 0fc4f92a */ jal func0f13e4a8 +/* f0618a0: 0fc4f92a */ jal chrIsUsingPaintball /* f0618a4: 8d240004 */ lw $a0,0x4($t1) /* f0618a8: 14400033 */ bnez $v0,.L0f061978 /* f0618ac: 3c0c800a */ lui $t4,%hi(g_Vars+0x6c) @@ -1689,7 +1689,7 @@ glabel var7f1a9eb8 /* f061a8c: 8defa244 */ lw $t7,%lo(g_Vars+0x284)($t7) /* f061a90: 00008025 */ or $s0,$zero,$zero /* f061a94: 8dea00bc */ lw $t2,0xbc($t7) -/* f061a98: 0fc4f92a */ jal func0f13e4a8 +/* f061a98: 0fc4f92a */ jal chrIsUsingPaintball /* f061a9c: 8d440004 */ lw $a0,0x4($t2) /* f061aa0: 10400003 */ beqz $v0,.L0f061ab0 /* f061aa4: 93a90214 */ lbu $t1,0x214($sp) diff --git a/src/game/propobj.c b/src/game/propobj.c index e8b8294b3..56374ef6f 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -18039,7 +18039,7 @@ glabel var7f1aa438 /* f075f34: afa90088 */ sw $t1,0x88($sp) /* f075f38: afa00088 */ sw $zero,0x88($sp) .L0f075f3c: -/* f075f3c: 0fc4f92a */ jal func0f13e4a8 +/* f075f3c: 0fc4f92a */ jal chrIsUsingPaintball /* f075f40: 8fa40088 */ lw $a0,0x88($sp) /* f075f44: 1040000c */ beqz $v0,.L0f075f78 /* f075f48: 02402825 */ or $a1,$s2,$zero @@ -23252,7 +23252,7 @@ glabel var7f1aa5a8 /* f07a580: afa300a8 */ sw $v1,0xa8($sp) /* f07a584: 0fc68330 */ jal frCalculateHit /* f07a588: afab00a0 */ sw $t3,0xa0($sp) -/* f07a58c: 0fc4f92a */ jal func0f13e4a8 +/* f07a58c: 0fc4f92a */ jal chrIsUsingPaintball /* f07a590: 8fa40110 */ lw $a0,0x110($sp) /* f07a594: 1040000b */ beqz $v0,.L0f07a5c4 /* f07a598: 8fa500a8 */ lw $a1,0xa8($sp) @@ -23467,7 +23467,7 @@ glabel var7f1aa5a8 /* f07a8a4: afa00010 */ sw $zero,0x10($sp) /* f07a8a8: 0c006052 */ jal func00018148 /* f07a8ac: afa00014 */ sw $zero,0x14($sp) -/* f07a8b0: 0fc4f92a */ jal func0f13e4a8 +/* f07a8b0: 0fc4f92a */ jal chrIsUsingPaintball /* f07a8b4: 8fa40110 */ lw $a0,0x110($sp) /* f07a8b8: 1040000b */ beqz $v0,.L0f07a8e8 /* f07a8bc: 8faa0194 */ lw $t2,0x194($sp) @@ -36184,7 +36184,7 @@ glabel func0f085eac /* f085fb0: 8fa30124 */ lw $v1,0x124($sp) /* f085fb4: 8d6ba244 */ lw $t3,%lo(g_Vars+0x284)($t3) /* f085fb8: 8d6c00bc */ lw $t4,0xbc($t3) -/* f085fbc: 0fc4f92a */ jal func0f13e4a8 +/* f085fbc: 0fc4f92a */ jal chrIsUsingPaintball /* f085fc0: 8d840004 */ lw $a0,0x4($t4) /* f085fc4: 10400002 */ beqz $v0,.L0f085fd0 /* f085fc8: 240d0001 */ addiu $t5,$zero,0x1 @@ -36277,7 +36277,7 @@ glabel func0f085eac /* f0860fc: 8479003a */ lh $t9,0x3a($v1) /* f086100: 8d8ca244 */ lw $t4,%lo(g_Vars+0x284)($t4) /* f086104: 8d8d00bc */ lw $t5,0xbc($t4) -/* f086108: 0fc4f92a */ jal func0f13e4a8 +/* f086108: 0fc4f92a */ jal chrIsUsingPaintball /* f08610c: 8da40004 */ lw $a0,0x4($t5) /* f086110: 1040000b */ beqz $v0,.L0f086140 /* f086114: 8fa5010c */ lw $a1,0x10c($sp) diff --git a/src/game/wallhit.c b/src/game/wallhit.c index 265ddda67..0c87e6115 100644 --- a/src/game/wallhit.c +++ b/src/game/wallhit.c @@ -358,88 +358,23 @@ glabel func0f13e40c /* f13e4a4: 27bd0020 */ addiu $sp,$sp,0x20 ); -GLOBAL_ASM( -glabel func0f13e4a8 -/* f13e4a8: 3c07800a */ lui $a3,%hi(g_Vars) -/* f13e4ac: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) -/* f13e4b0: 8cee028c */ lw $t6,0x28c($a3) -/* f13e4b4: 27bdffe0 */ addiu $sp,$sp,-32 -/* f13e4b8: afbf0014 */ sw $ra,0x14($sp) -/* f13e4bc: 1080000f */ beqz $a0,.L0f13e4fc -/* f13e4c0: afae001c */ sw $t6,0x1c($sp) -/* f13e4c4: 8c84001c */ lw $a0,0x1c($a0) -/* f13e4c8: 1080000c */ beqz $a0,.L0f13e4fc -/* f13e4cc: 00000000 */ nop -/* f13e4d0: 908f0000 */ lbu $t7,0x0($a0) -/* f13e4d4: 24010006 */ addiu $at,$zero,0x6 -/* f13e4d8: 15e10008 */ bne $t7,$at,.L0f13e4fc -/* f13e4dc: 00000000 */ nop -/* f13e4e0: 0fc4a25f */ jal propGetPlayerNum -/* f13e4e4: 00000000 */ nop -/* f13e4e8: 0fc4a24b */ jal setCurrentPlayerNum -/* f13e4ec: 00402025 */ or $a0,$v0,$zero -/* f13e4f0: 3c07800a */ lui $a3,%hi(g_Vars) -/* f13e4f4: 10000029 */ b .L0f13e59c -/* f13e4f8: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) -.L0f13e4fc: -/* f13e4fc: 0c004b70 */ jal random -/* f13e500: 00000000 */ nop -/* f13e504: 3c07800a */ lui $a3,%hi(g_Vars) -/* f13e508: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) -/* f13e50c: 8cf8006c */ lw $t8,0x6c($a3) -/* f13e510: 00404025 */ or $t0,$v0,$zero -/* f13e514: 00003025 */ or $a2,$zero,$zero -/* f13e518: 13000003 */ beqz $t8,.L0f13e528 -/* f13e51c: 00001825 */ or $v1,$zero,$zero -/* f13e520: 10000001 */ b .L0f13e528 -/* f13e524: 24060001 */ addiu $a2,$zero,0x1 -.L0f13e528: -/* f13e528: 8cf90068 */ lw $t9,0x68($a3) -/* f13e52c: 00002825 */ or $a1,$zero,$zero -/* f13e530: 00001025 */ or $v0,$zero,$zero -/* f13e534: 13200003 */ beqz $t9,.L0f13e544 -/* f13e538: 00000000 */ nop -/* f13e53c: 10000001 */ b .L0f13e544 -/* f13e540: 24030001 */ addiu $v1,$zero,0x1 -.L0f13e544: -/* f13e544: 8ce90064 */ lw $t1,0x64($a3) -/* f13e548: 11200003 */ beqz $t1,.L0f13e558 -/* f13e54c: 00000000 */ nop -/* f13e550: 10000001 */ b .L0f13e558 -/* f13e554: 24050001 */ addiu $a1,$zero,0x1 -.L0f13e558: -/* f13e558: 8cea0070 */ lw $t2,0x70($a3) -/* f13e55c: 11400003 */ beqz $t2,.L0f13e56c -/* f13e560: 00000000 */ nop -/* f13e564: 10000001 */ b .L0f13e56c -/* f13e568: 24020001 */ addiu $v0,$zero,0x1 -.L0f13e56c: -/* f13e56c: 00455821 */ addu $t3,$v0,$a1 -/* f13e570: 01636021 */ addu $t4,$t3,$v1 -/* f13e574: 01866821 */ addu $t5,$t4,$a2 -/* f13e578: 010d001b */ divu $zero,$t0,$t5 -/* f13e57c: 00002010 */ mfhi $a0 -/* f13e580: 15a00002 */ bnez $t5,.L0f13e58c -/* f13e584: 00000000 */ nop -/* f13e588: 0007000d */ break 0x7 -.L0f13e58c: -/* f13e58c: 0fc4a24b */ jal setCurrentPlayerNum -/* f13e590: 00000000 */ nop -/* f13e594: 3c07800a */ lui $a3,%hi(g_Vars) -/* f13e598: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) -.L0f13e59c: -/* f13e59c: 8cee0288 */ lw $t6,0x288($a3) -/* f13e5a0: 0fc54a31 */ jal optionsGetPaintball -/* f13e5a4: 8dc40070 */ lw $a0,0x70($t6) -/* f13e5a8: afa20018 */ sw $v0,0x18($sp) -/* f13e5ac: 0fc4a24b */ jal setCurrentPlayerNum -/* f13e5b0: 8fa4001c */ lw $a0,0x1c($sp) -/* f13e5b4: 8fbf0014 */ lw $ra,0x14($sp) -/* f13e5b8: 8fa20018 */ lw $v0,0x18($sp) -/* f13e5bc: 27bd0020 */ addiu $sp,$sp,0x20 -/* f13e5c0: 03e00008 */ jr $ra -/* f13e5c4: 00000000 */ nop -); +bool chrIsUsingPaintball(struct chrdata *chr) +{ + s32 prevplayernum = g_Vars.currentplayernum; + bool paintball; + + if (chr && chr->prop && chr->prop->type == PROPTYPE_PLAYER) { + setCurrentPlayerNum(propGetPlayerNum(chr->prop)); + } else { + setCurrentPlayerNum(random() % PLAYERCOUNT()); + } + + paintball = optionsGetPaintball(g_Vars.currentplayerstats->mpindex); + + setCurrentPlayerNum(prevplayernum); + + return paintball; +} GLOBAL_ASM( glabel func0f13e5c8 @@ -1608,7 +1543,7 @@ glabel var7f1b5d6c /* f13f550: 240603bc */ addiu $a2,$zero,0x3bc /* f13f554: 0fc5dc59 */ jal func0f177164 /* f13f558: e7a401c0 */ swc1 $f4,0x1c0($sp) -/* f13f55c: 0fc4f92a */ jal func0f13e4a8 +/* f13f55c: 0fc4f92a */ jal chrIsUsingPaintball /* f13f560: 8fa4022c */ lw $a0,0x22c($sp) /* f13f564: 10400017 */ beqz $v0,.L0f13f5c4 /* f13f568: 00408025 */ or $s0,$v0,$zero diff --git a/src/include/game/wallhit.h b/src/include/game/wallhit.h index 843909d31..f0727187c 100644 --- a/src/include/game/wallhit.h +++ b/src/include/game/wallhit.h @@ -6,7 +6,7 @@ u32 func0f13e0e0(void); u32 func0f13e1b0(void); void func0f13e40c(struct prop *prop, bool arg1); -bool func0f13e4a8(struct chrdata *chr); +bool chrIsUsingPaintball(struct chrdata *chr); u32 func0f13e5c8(void); u32 func0f13e640(void); u32 func0f13e744(void);