From 98a62ce3085ff4dd787b1380effd2054bbb6f8c7 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 22 Dec 2019 15:26:04 +1000 Subject: [PATCH] Decompile chrCompareTeams --- src/game/chr/chr.c | 188 +++++++++++------------------------ src/game/chr/chraicommands.c | 12 +-- src/game/game_0601b0.c | 4 +- src/game/game_066310.c | 4 +- src/game/game_0b28d0.c | 4 +- src/game/game_0c37d0.c | 2 +- src/game/game_0d4690.c | 2 +- src/game/game_187770.c | 12 +-- src/include/game/chr/chr.h | 2 +- src/include/gvars/gvars.h | 1 + src/include/types.h | 2 +- 11 files changed, 80 insertions(+), 153 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index d0f2c0a70..b3dba46dd 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -40281,7 +40281,7 @@ glabel func0f0404d4 /* f04129c: 8faa025c */ lw $t2,0x25c($sp) /* f0412a0: 8d440004 */ lw $a0,0x4($t2) /* f0412a4: 8fa50278 */ lw $a1,0x278($sp) -/* f0412a8: 0fc12aa3 */ jal func0f04aa8c +/* f0412a8: 0fc12aa3 */ jal chrCompareTeams /* f0412ac: 24060002 */ addiu $a2,$zero,0x2 /* f0412b0: 1040003c */ beqz $v0,.L0f0413a4 /* f0412b4: 3c014170 */ lui $at,0x4170 @@ -40518,7 +40518,7 @@ glabel func0f0404d4 /* f041610: 31ab0040 */ andi $t3,$t5,0x40 /* f041614: 11600045 */ beqz $t3,.L0f04172c /* f041618: 24060002 */ addiu $a2,$zero,0x2 -/* f04161c: 0fc12aa3 */ jal func0f04aa8c +/* f04161c: 0fc12aa3 */ jal chrCompareTeams /* f041620: 8d440004 */ lw $a0,0x4($t2) /* f041624: 10400041 */ beqz $v0,.L0f04172c .L0f041628: @@ -48262,7 +48262,7 @@ glabel func0f048398 /* f0484a4: 50490006 */ beql $v0,$t1,.L0f0484c0 /* f0484a8: 8e220004 */ lw $v0,0x4($s1) .L0f0484ac: -/* f0484ac: 0fc12aa3 */ jal func0f04aa8c +/* f0484ac: 0fc12aa3 */ jal chrCompareTeams /* f0484b0: 8e250004 */ lw $a1,0x4($s1) /* f0484b4: 5440000a */ bnezl $v0,.L0f0484e0 /* f0484b8: 8fca0000 */ lw $t2,0x0($s8) @@ -50252,7 +50252,7 @@ glabel func0f04a110 /* f04a16c: 1040000a */ beqz $v0,.L0f04a198 /* f04a170: 00402825 */ or $a1,$v0,$zero /* f04a174: 24060001 */ addiu $a2,$zero,0x1 -/* f04a178: 0fc12aa3 */ jal func0f04aa8c +/* f04a178: 0fc12aa3 */ jal chrCompareTeams /* f04a17c: afa3001c */ sw $v1,0x1c($sp) /* f04a180: 14400005 */ bnez $v0,.L0f04a198 /* f04a184: 8fa3001c */ lw $v1,0x1c($sp) @@ -50297,7 +50297,7 @@ glabel chrSawDeath /* f04a204: 00402825 */ or $a1,$v0,$zero /* f04a208: 24060001 */ addiu $a2,$zero,0x1 /* f04a20c: afa3001c */ sw $v1,0x1c($sp) -/* f04a210: 0fc12aa3 */ jal func0f04aa8c +/* f04a210: 0fc12aa3 */ jal chrCompareTeams /* f04a214: afa40020 */ sw $a0,0x20($sp) /* f04a218: 8fa3001c */ lw $v1,0x1c($sp) /* f04a21c: 14400007 */ bnez $v0,.L0f04a23c @@ -50327,7 +50327,7 @@ glabel chrSawDeath // if (saw_death && arg1 == 1) { // struct chrdata *victim = chrFindById(chr, chr->chrseedie); // -// if (victim && !func0f04aa8c(chr, victim, 1)) { +// if (victim && !chrCompareTeams(chr, victim, 1)) { // saw_death = false; // chr->chrseedie = -1; // } @@ -50862,7 +50862,7 @@ glabel func0f04a848 /* f04aa04: 02802825 */ or $a1,$s4,$zero /* f04aa08: 4502000a */ bc1fl .L0f04aa34 /* f04aa0c: 86420002 */ lh $v0,0x2($s2) -/* f04aa10: 0fc12aa3 */ jal func0f04aa8c +/* f04aa10: 0fc12aa3 */ jal chrCompareTeams /* f04aa14: 33c600ff */ andi $a2,$s8,0xff /* f04aa18: 50400006 */ beqzl $v0,.L0f04aa34 /* f04aa1c: 86420002 */ lh $v0,0x2($s2) @@ -50898,130 +50898,56 @@ glabel func0f04a848 /* f04aa88: 27bd02e8 */ addiu $sp,$sp,0x2e8 ); -GLOBAL_ASM( -glabel func0f04aa8c -/* f04aa8c: afa60008 */ sw $a2,0x8($sp) -/* f04aa90: 10800066 */ beqz $a0,.L0f04ac2c -/* f04aa94: 30ce00ff */ andi $t6,$a2,0xff -/* f04aa98: 8c8f001c */ lw $t7,0x1c($a0) -/* f04aa9c: 51e00064 */ beqzl $t7,.L0f04ac30 -/* f04aaa0: 00001025 */ or $v0,$zero,$zero -/* f04aaa4: 15c00003 */ bnez $t6,.L0f04aab4 -/* f04aaa8: 01c01025 */ or $v0,$t6,$zero -/* f04aaac: 03e00008 */ jr $ra -/* f04aab0: 24020001 */ addiu $v0,$zero,0x1 -.L0f04aab4: -/* f04aab4: 24010001 */ addiu $at,$zero,0x1 -/* f04aab8: 1441002c */ bne $v0,$at,.L0f04ab6c -/* f04aabc: 3c03800a */ lui $v1,%hi(g_Vars) -/* f04aac0: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f04aac4: 8c780318 */ lw $t8,0x318($v1) -/* f04aac8: 3c19800b */ lui $t9,0x800b -/* f04aacc: 5300000c */ beqzl $t8,.L0f04ab00 -/* f04aad0: 8c6202a0 */ lw $v0,0x2a0($v1) -/* f04aad4: 8f39cb94 */ lw $t9,-0x346c($t9) -/* f04aad8: 33280002 */ andi $t0,$t9,0x2 -/* f04aadc: 11000051 */ beqz $t0,.L0f04ac24 -/* f04aae0: 00000000 */ sll $zero,$zero,0x0 -/* f04aae4: 90890125 */ lbu $t1,0x125($a0) -/* f04aae8: 90aa0125 */ lbu $t2,0x125($a1) -/* f04aaec: 152a004d */ bne $t1,$t2,.L0f04ac24 -/* f04aaf0: 00000000 */ sll $zero,$zero,0x0 -/* f04aaf4: 03e00008 */ jr $ra -/* f04aaf8: 24020001 */ addiu $v0,$zero,0x1 -/* f04aafc: 8c6202a0 */ lw $v0,0x2a0($v1) -.L0f04ab00: -/* f04ab00: 50400014 */ beqzl $v0,.L0f04ab54 -/* f04ab04: 90ad0125 */ lbu $t5,0x125($a1) -/* f04ab08: 8c4300bc */ lw $v1,0xbc($v0) -/* f04ab0c: 50600011 */ beqzl $v1,.L0f04ab54 -/* f04ab10: 90ad0125 */ lbu $t5,0x125($a1) -/* f04ab14: 8c620004 */ lw $v0,0x4($v1) -/* f04ab18: 14a20005 */ bne $a1,$v0,.L0f04ab30 -/* f04ab1c: 00000000 */ sll $zero,$zero,0x0 -/* f04ab20: 808b0006 */ lb $t3,0x6($a0) -/* f04ab24: 24010028 */ addiu $at,$zero,0x28 -/* f04ab28: 11610007 */ beq $t3,$at,.L0f04ab48 -/* f04ab2c: 00000000 */ sll $zero,$zero,0x0 -.L0f04ab30: -/* f04ab30: 54820008 */ bnel $a0,$v0,.L0f04ab54 -/* f04ab34: 90ad0125 */ lbu $t5,0x125($a1) -/* f04ab38: 80ac0006 */ lb $t4,0x6($a1) -/* f04ab3c: 24010028 */ addiu $at,$zero,0x28 -/* f04ab40: 55810004 */ bnel $t4,$at,.L0f04ab54 -/* f04ab44: 90ad0125 */ lbu $t5,0x125($a1) -.L0f04ab48: -/* f04ab48: 03e00008 */ jr $ra -/* f04ab4c: 24020001 */ addiu $v0,$zero,0x1 -/* f04ab50: 90ad0125 */ lbu $t5,0x125($a1) -.L0f04ab54: -/* f04ab54: 908e0125 */ lbu $t6,0x125($a0) -/* f04ab58: 01ae7824 */ and $t7,$t5,$t6 -/* f04ab5c: 11e00031 */ beqz $t7,.L0f04ac24 -/* f04ab60: 00000000 */ sll $zero,$zero,0x0 -/* f04ab64: 03e00008 */ jr $ra -/* f04ab68: 24020001 */ addiu $v0,$zero,0x1 -.L0f04ab6c: -/* f04ab6c: 24010002 */ addiu $at,$zero,0x2 -/* f04ab70: 1441002c */ bne $v0,$at,.L0f04ac24 -/* f04ab74: 3c03800a */ lui $v1,%hi(g_Vars) -/* f04ab78: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f04ab7c: 8c780318 */ lw $t8,0x318($v1) -/* f04ab80: 3c19800b */ lui $t9,0x800b -/* f04ab84: 5300000c */ beqzl $t8,.L0f04abb8 -/* f04ab88: 8c6202a0 */ lw $v0,0x2a0($v1) -/* f04ab8c: 8f39cb94 */ lw $t9,-0x346c($t9) -/* f04ab90: 33280002 */ andi $t0,$t9,0x2 -/* f04ab94: 11000005 */ beqz $t0,.L0f04abac -/* f04ab98: 00000000 */ sll $zero,$zero,0x0 -/* f04ab9c: 90890125 */ lbu $t1,0x125($a0) -/* f04aba0: 90aa0125 */ lbu $t2,0x125($a1) -/* f04aba4: 112a001f */ beq $t1,$t2,.L0f04ac24 -/* f04aba8: 00000000 */ sll $zero,$zero,0x0 -.L0f04abac: -/* f04abac: 03e00008 */ jr $ra -/* f04abb0: 24020001 */ addiu $v0,$zero,0x1 -/* f04abb4: 8c6202a0 */ lw $v0,0x2a0($v1) -.L0f04abb8: -/* f04abb8: 50400014 */ beqzl $v0,.L0f04ac0c -/* f04abbc: 90ad0125 */ lbu $t5,0x125($a1) -/* f04abc0: 8c4300bc */ lw $v1,0xbc($v0) -/* f04abc4: 50600011 */ beqzl $v1,.L0f04ac0c -/* f04abc8: 90ad0125 */ lbu $t5,0x125($a1) -/* f04abcc: 8c620004 */ lw $v0,0x4($v1) -/* f04abd0: 14a20005 */ bne $a1,$v0,.L0f04abe8 -/* f04abd4: 00000000 */ sll $zero,$zero,0x0 -/* f04abd8: 808b0006 */ lb $t3,0x6($a0) -/* f04abdc: 24010028 */ addiu $at,$zero,0x28 -/* f04abe0: 11610007 */ beq $t3,$at,.L0f04ac00 -/* f04abe4: 00000000 */ sll $zero,$zero,0x0 -.L0f04abe8: -/* f04abe8: 54820008 */ bnel $a0,$v0,.L0f04ac0c -/* f04abec: 90ad0125 */ lbu $t5,0x125($a1) -/* f04abf0: 80ac0006 */ lb $t4,0x6($a1) -/* f04abf4: 24010028 */ addiu $at,$zero,0x28 -/* f04abf8: 55810004 */ bnel $t4,$at,.L0f04ac0c -/* f04abfc: 90ad0125 */ lbu $t5,0x125($a1) -.L0f04ac00: -/* f04ac00: 03e00008 */ jr $ra -/* f04ac04: 00001025 */ or $v0,$zero,$zero -/* f04ac08: 90ad0125 */ lbu $t5,0x125($a1) -.L0f04ac0c: -/* f04ac0c: 908e0125 */ lbu $t6,0x125($a0) -/* f04ac10: 01ae7824 */ and $t7,$t5,$t6 -/* f04ac14: 15e00003 */ bnez $t7,.L0f04ac24 -/* f04ac18: 00000000 */ sll $zero,$zero,0x0 -/* f04ac1c: 03e00008 */ jr $ra -/* f04ac20: 24020001 */ addiu $v0,$zero,0x1 -.L0f04ac24: -/* f04ac24: 03e00008 */ jr $ra -/* f04ac28: 00001025 */ or $v0,$zero,$zero -.L0f04ac2c: -/* f04ac2c: 00001025 */ or $v0,$zero,$zero -.L0f04ac30: -/* f04ac30: 03e00008 */ jr $ra -/* f04ac34: 00000000 */ sll $zero,$zero,0x0 -); +bool chrCompareTeams(struct chrdata *chr1, struct chrdata *chr2, u8 checktype) +{ + if (chr1 && chr1->pos) { + if (checktype == 0) { + return true; + } + + if (checktype == 1) { // Return true if chrs are friends + if (g_Vars.unk000318) { + if ((var800acb94 & 2) && chr2->team == chr1->team) { + return true; + } + } else { + if (g_Vars.bond && g_Vars.bond->targetpos) { + struct chrdata *playerchr = g_Vars.bond->targetpos->chr; + if ((chr2 == playerchr && chr1->headnum == HEAD_JONATHAN) || + (chr1 == playerchr && chr2->headnum == HEAD_JONATHAN)) { + return true; + } + } + + if ((chr2->team & chr1->team) != 0) { + return true; + } + } + } else if (checktype == 2) { // Return true if chrs are enemies + if (g_Vars.unk000318) { + if ((var800acb94 & 2) == 0 || chr2->team != chr1->team) { + return true; + } + } else { + if (g_Vars.bond && g_Vars.bond->targetpos) { + struct chrdata *playerchr = g_Vars.bond->targetpos->chr; + if ((chr2 == playerchr && chr1->headnum == HEAD_JONATHAN) || + (chr1 == playerchr && chr2->headnum == HEAD_JONATHAN)) { + return false; + } + } + + if ((chr2->team & chr1->team) == 0) { + return true; + } + } + } + + return false; + } + + return false; +} void chrSetChrPreset(struct chrdata *chr, s32 chrpreset) { diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 18a9e8445..afce8a449 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -8711,7 +8711,7 @@ bool ai010c(void) chr = chrFindById(g_Vars.chrdata, CHR_PRESET); } - if (func0f04aa8c(chr, g_Vars.chrdata, cmd[2])) { + if (chrCompareTeams(chr, g_Vars.chrdata, cmd[2])) { g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[3]); } else { g_Vars.aioffset += 4; @@ -9168,7 +9168,7 @@ glabel ai0127 /* f0599e8: 10410045 */ beq $v0,$at,.L0f059b00 /* f0599ec: 02002825 */ or $a1,$s0,$zero /* f0599f0: 8e440424 */ lw $a0,0x424($s2) -/* f0599f4: 0fc12aa3 */ jal func0f04aa8c +/* f0599f4: 0fc12aa3 */ jal chrCompareTeams /* f0599f8: 24060002 */ addiu $a2,$zero,0x2 /* f0599fc: 10400040 */ beqz $v0,.L0f059b00 /* f059a00: 00000000 */ sll $zero,$zero,0x0 @@ -9369,7 +9369,7 @@ glabel ai0128 /* f059cc4: 10410050 */ beq $v0,$at,.L0f059e08 /* f059cc8: 02202825 */ or $a1,$s1,$zero /* f059ccc: 8e640424 */ lw $a0,0x424($s3) -/* f059cd0: 0fc12aa3 */ jal func0f04aa8c +/* f059cd0: 0fc12aa3 */ jal chrCompareTeams /* f059cd4: 24060002 */ addiu $a2,$zero,0x2 /* f059cd8: 5040004c */ beqzl $v0,.L0f059e0c /* f059cdc: 86840002 */ lh $a0,0x2($s4) @@ -10557,7 +10557,7 @@ glabel ai0133 /* f05aeec: 02002825 */ or $a1,$s0,$zero /* f05aef0: 11810022 */ beq $t4,$at,.L0f05af7c /* f05aef4: 24060001 */ addiu $a2,$zero,0x1 -/* f05aef8: 0fc12aa3 */ jal func0f04aa8c +/* f05aef8: 0fc12aa3 */ jal chrCompareTeams /* f05aefc: 8ea40424 */ lw $a0,0x424($s5) /* f05af00: 5040001f */ beqzl $v0,.L0f05af80 /* f05af04: 86240002 */ lh $a0,0x2($s1) @@ -10979,7 +10979,7 @@ glabel ai0137 /* f05b484: 24060001 */ addiu $a2,$zero,0x1 /* f05b488: 52690018 */ beql $s3,$t1,.L0f05b4ec /* f05b48c: 86240002 */ lh $a0,0x2($s1) -/* f05b490: 0fc12aa3 */ jal func0f04aa8c +/* f05b490: 0fc12aa3 */ jal chrCompareTeams /* f05b494: 8e440424 */ lw $a0,0x424($s2) /* f05b498: 50400014 */ beqzl $v0,.L0f05b4ec /* f05b49c: 86240002 */ lh $a0,0x2($s1) @@ -11050,7 +11050,7 @@ glabel ai0137 // // if (chr && chr->unk020 && chrIsDead(chr) == false && // chr->actiontype != ACT_DEAD && -// func0f04aa8c(g_Vars.chrdata, chr, 1) && +// chrCompareTeams(g_Vars.chrdata, chr, 1) && // g_Vars.chrdata->chrnum != chr->chrnum && // chrGetDistanceToChr(g_Vars.chrdata, chr->chrnum) < 3500 && // chr->myaction == cmd[2]) { diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index cd4c60386..a27fb7a2b 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -5449,7 +5449,7 @@ glabel func0f064a24 /* f064b54: 00402825 */ or $a1,$v0,$zero /* f064b58: 24060001 */ addiu $a2,$zero,0x1 /* f064b5c: 8d6c00bc */ lw $t4,0xbc($t3) -/* f064b60: 0fc12aa3 */ jal func0f04aa8c +/* f064b60: 0fc12aa3 */ jal chrCompareTeams /* f064b64: 8d840004 */ lw $a0,0x4($t4) /* f064b68: 54400044 */ bnezl $v0,.L0f064c7c /* f064b6c: 2673fc98 */ addiu $s3,$s3,-872 @@ -5937,7 +5937,7 @@ glabel func0f064ce8 /* f065258: 00402825 */ or $a1,$v0,$zero /* f06525c: 8f3800bc */ lw $t8,0xbc($t9) /* f065260: 24060001 */ addiu $a2,$zero,0x1 -/* f065264: 0fc12aa3 */ jal func0f04aa8c +/* f065264: 0fc12aa3 */ jal chrCompareTeams /* f065268: 8f040004 */ lw $a0,0x4($t8) /* f06526c: 1440002d */ bnez $v0,.L0f065324 /* f065270: 02002025 */ or $a0,$s0,$zero diff --git a/src/game/game_066310.c b/src/game/game_066310.c index a53973fe8..33fd24665 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -16514,7 +16514,7 @@ glabel func0f073478 /* f0738ec: 1440004f */ bnez $v0,.L0f073a2c /* f0738f0: 02802025 */ or $a0,$s4,$zero /* f0738f4: 02002825 */ or $a1,$s0,$zero -/* f0738f8: 0fc12aa3 */ jal func0f04aa8c +/* f0738f8: 0fc12aa3 */ jal chrCompareTeams /* f0738fc: 24060002 */ addiu $a2,$zero,0x2 /* f073900: 1040004a */ beqz $v0,.L0f073a2c /* f073904: 00002025 */ or $a0,$zero,$zero @@ -23887,7 +23887,7 @@ glabel func0f079f1c /* f07a3bc: 240e0001 */ addiu $t6,$zero,0x1 /* f07a3c0: 11a00009 */ beqz $t5,.L0f07a3e8 /* f07a3c4: 01a02825 */ or $a1,$t5,$zero -/* f07a3c8: 0fc12aa3 */ jal func0f04aa8c +/* f07a3c8: 0fc12aa3 */ jal chrCompareTeams /* f07a3cc: 24060001 */ addiu $a2,$zero,0x1 /* f07a3d0: 10400005 */ beqz $v0,.L0f07a3e8 /* f07a3d4: 240e0001 */ addiu $t6,$zero,0x1 diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 633fbdad4..5cd2725f8 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -5068,7 +5068,7 @@ glabel func0f0b69d0 /* f0b6b10: 12400008 */ beqz $s2,.L0f0b6b34 /* f0b6b14: 24060002 */ addiu $a2,$zero,0x2 /* f0b6b18: 8e440004 */ lw $a0,0x4($s2) -/* f0b6b1c: 0fc12aa3 */ jal func0f04aa8c +/* f0b6b1c: 0fc12aa3 */ jal chrCompareTeams /* f0b6b20: 8c450004 */ lw $a1,0x4($v0) /* f0b6b24: 50400026 */ beqzl $v0,.L0f0b6bc0 /* f0b6b28: 8faf0138 */ lw $t7,0x138($sp) @@ -5142,7 +5142,7 @@ glabel func0f0b69d0 /* f0b6c1c: 00000000 */ sll $zero,$zero,0x0 /* f0b6c20: 12400007 */ beqz $s2,.L0f0b6c40 /* f0b6c24: 24060002 */ addiu $a2,$zero,0x2 -/* f0b6c28: 0fc12aa3 */ jal func0f04aa8c +/* f0b6c28: 0fc12aa3 */ jal chrCompareTeams /* f0b6c2c: 8e440004 */ lw $a0,0x4($s2) /* f0b6c30: 10400028 */ beqz $v0,.L0f0b6cd4 /* f0b6c34: 00000000 */ sll $zero,$zero,0x0 diff --git a/src/game/game_0c37d0.c b/src/game/game_0c37d0.c index d936a0d06..1a85f2d7f 100644 --- a/src/game/game_0c37d0.c +++ b/src/game/game_0c37d0.c @@ -915,7 +915,7 @@ glabel func0f0c4250 /* f0c43ec: 24060001 */ addiu $a2,$zero,0x1 /* f0c43f0: 8f2900bc */ lw $t1,0xbc($t9) /* f0c43f4: 8d240004 */ lw $a0,0x4($t1) -/* f0c43f8: 0fc12aa3 */ jal func0f04aa8c +/* f0c43f8: 0fc12aa3 */ jal chrCompareTeams /* f0c43fc: afa00044 */ sw $zero,0x44($sp) /* f0c4400: 10400014 */ beqz $v0,.L0f0c4454 /* f0c4404: 8fa30044 */ lw $v1,0x44($sp) diff --git a/src/game/game_0d4690.c b/src/game/game_0d4690.c index 075e0784e..59b5611fa 100644 --- a/src/game/game_0d4690.c +++ b/src/game/game_0d4690.c @@ -3131,7 +3131,7 @@ glabel func0f0d7070 /* f0d7138: 8ce50004 */ lw $a1,0x4($a3) /* f0d713c: 24060001 */ addiu $a2,$zero,0x1 /* f0d7140: 8d4b00bc */ lw $t3,0xbc($t2) -/* f0d7144: 0fc12aa3 */ jal func0f04aa8c +/* f0d7144: 0fc12aa3 */ jal chrCompareTeams /* f0d7148: 8d640004 */ lw $a0,0x4($t3) .L0f0d714c: /* f0d714c: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 2db9db25f..eca90cae5 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -13708,7 +13708,7 @@ glabel func0f192e90 /* f1931cc: 02a02025 */ or $a0,$s5,$zero .L0f1931d0: /* f1931d0: 8e050004 */ lw $a1,0x4($s0) -/* f1931d4: 0fc12aa3 */ jal func0f04aa8c +/* f1931d4: 0fc12aa3 */ jal chrCompareTeams /* f1931d8: 24060001 */ addiu $a2,$zero,0x1 /* f1931dc: 10400002 */ beqz $v0,.L0f1931e8 /* f1931e0: 02a02025 */ or $a0,$s5,$zero @@ -13752,7 +13752,7 @@ glabel func0f192e90 /* f193268: 14400036 */ bnez $v0,.L0f193344 /* f19326c: 02a02025 */ or $a0,$s5,$zero /* f193270: 02202825 */ or $a1,$s1,$zero -/* f193274: 0fc12aa3 */ jal func0f04aa8c +/* f193274: 0fc12aa3 */ jal chrCompareTeams /* f193278: 24060002 */ addiu $a2,$zero,0x2 /* f19327c: 10400031 */ beqz $v0,.L0f193344 /* f193280: 02a02025 */ or $a0,$s5,$zero @@ -13877,7 +13877,7 @@ glabel func0f192e90 /* f193438: 14400015 */ bnez $v0,.L0f193490 /* f19343c: 02a02025 */ or $a0,$s5,$zero /* f193440: 02202825 */ or $a1,$s1,$zero -/* f193444: 0fc12aa3 */ jal func0f04aa8c +/* f193444: 0fc12aa3 */ jal chrCompareTeams /* f193448: 24060002 */ addiu $a2,$zero,0x2 /* f19344c: 10400010 */ beqz $v0,.L0f193490 /* f193450: 02a02025 */ or $a0,$s5,$zero @@ -17073,7 +17073,7 @@ glabel func0f194b40 /* f196134: 00026880 */ sll $t5,$v0,0x2 /* f196138: 00ad2821 */ addu $a1,$a1,$t5 /* f19613c: 8ca5c4d0 */ lw $a1,-0x3b30($a1) -/* f196140: 0fc12aa3 */ jal func0f04aa8c +/* f196140: 0fc12aa3 */ jal chrCompareTeams /* f196144: 24060001 */ addiu $a2,$zero,0x1 /* f196148: 54400004 */ bnezl $v0,.L0f19615c /* f19614c: 8e420114 */ lw $v0,0x114($s2) @@ -17122,7 +17122,7 @@ glabel func0f194b40 /* f1961e8: 1440000d */ bnez $v0,.L0f196220 /* f1961ec: 02802025 */ or $a0,$s4,$zero /* f1961f0: 8fa500d4 */ lw $a1,0xd4($sp) -/* f1961f4: 0fc12aa3 */ jal func0f04aa8c +/* f1961f4: 0fc12aa3 */ jal chrCompareTeams /* f1961f8: 24060002 */ addiu $a2,$zero,0x2 /* f1961fc: 10400008 */ beqz $v0,.L0f196220 /* f196200: 02802025 */ or $a0,$s4,$zero @@ -17162,7 +17162,7 @@ glabel func0f194b40 /* f19627c: 8fa500c0 */ lw $a1,0xc0($sp) /* f196280: 02802025 */ or $a0,$s4,$zero /* f196284: 24060002 */ addiu $a2,$zero,0x2 -/* f196288: 0fc12aa3 */ jal func0f04aa8c +/* f196288: 0fc12aa3 */ jal chrCompareTeams /* f19628c: afa500c0 */ sw $a1,0xc0($sp) /* f196290: 1040001f */ beqz $v0,.L0f196310 /* f196294: 8fa500c0 */ lw $a1,0xc0($sp) diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index c44f227e4..249f455ef 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -378,7 +378,7 @@ bool func0f04a76c(struct chrdata *chr, float distance); bool func0f04a79c(u8 chrnum, struct chrdata *chr, float distance); bool func0f04a7dc(u8 arg0, struct chrdata *chr, float distance, s32 arg3); bool func0f04a848(u8 chrnum, struct chrdata *chr, float distance, struct coord *coord, s16 *room); -u32 func0f04aa8c(struct chrdata *a, struct chrdata *b, u32 arg2); +bool chrCompareTeams(struct chrdata *chr1, struct chrdata *chr2, u8 checktype); void chrSetChrPresetByChrnum(struct chrdata *chr, s32 chrnum, s32 chrpreset); void chrSetPadPresetByChrnum(struct chrdata *chr, s32 chrnum, s32 pad_id); u32 func0f04ad08(struct chrdata *chr); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 92df08d77..9c29c81e5 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -870,6 +870,7 @@ extern u32 var800aca38; extern u32 var800acad8; extern u32 var800acb78; extern u32 var800acb88; +extern u32 var800acb94; extern u32 var800acba8; extern u32 var800acbb0; extern u32 var800acc10; diff --git a/src/include/types.h b/src/include/types.h index ed31a2609..e3333753f 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -91,7 +91,7 @@ struct chrdata { /*0x002*/ s8 accuracyrating; /*0x003*/ s8 speedrating; /*0x004*/ u16 firecount; - /*0x006*/ u8 headnum; + /*0x006*/ s8 headnum; /*0x007*/ s8 actiontype; /*0x008*/ u8 sleep; /*0x009*/ u8 invalidmove;