diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index cd502afb6..3ba5e8deb 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -5678,7 +5678,7 @@ glabel func0f022214 ); GLOBAL_ASM( -glabel func0f022484 +glabel chrCloak /* f022484: 27bdffb8 */ addiu $sp,$sp,-72 /* f022488: afbf0044 */ sw $ra,0x44($sp) /* f02248c: afa40048 */ sw $a0,0x48($sp) @@ -5720,7 +5720,7 @@ glabel func0f022484 ); GLOBAL_ASM( -glabel func0f022518 +glabel chrUncloak /* f022518: 27bdffb8 */ addiu $sp,$sp,-72 /* f02251c: afbf0044 */ sw $ra,0x44($sp) /* f022520: afa40048 */ sw $a0,0x48($sp) @@ -5787,7 +5787,7 @@ glabel func0f0225f4 /* f0225f4: 27bdffe8 */ addiu $sp,$sp,-24 /* f0225f8: afbf0014 */ sw $ra,0x14($sp) /* f0225fc: afa40018 */ sw $a0,0x18($sp) -/* f022600: 0fc08946 */ jal func0f022518 +/* f022600: 0fc08946 */ jal chrUncloak /* f022604: 24050001 */ addiu $a1,$zero,0x1 /* f022608: 8faf0018 */ lw $t7,0x18($sp) /* f02260c: 240e0078 */ addiu $t6,$zero,0x78 @@ -5976,14 +5976,14 @@ glabel func0f022624 /* f02289c: 02002025 */ or $a0,$s0,$zero /* f0228a0: 5dc0005c */ bgtzl $t6,.L0f022a14 /* f0228a4: 8e090014 */ lw $t1,0x14($s0) -/* f0228a8: 0fc08921 */ jal func0f022484 +/* f0228a8: 0fc08921 */ jal chrCloak /* f0228ac: 24050001 */ addiu $a1,$zero,0x1 /* f0228b0: 10000058 */ beqz $zero,.L0f022a14 /* f0228b4: 8e090014 */ lw $t1,0x14($s0) .L0f0228b8: /* f0228b8: 10800055 */ beqz $a0,.L0f022a10 /* f0228bc: 24050001 */ addiu $a1,$zero,0x1 -/* f0228c0: 0fc08946 */ jal func0f022518 +/* f0228c0: 0fc08946 */ jal chrUncloak /* f0228c4: 02002025 */ or $a0,$s0,$zero /* f0228c8: 10000052 */ beqz $zero,.L0f022a14 /* f0228cc: 8e090014 */ lw $t1,0x14($s0) @@ -6058,7 +6058,7 @@ glabel func0f022624 /* f0229c8: 02002025 */ or $a0,$s0,$zero /* f0229cc: 1f00000e */ bgtz $t8,.L0f022a08 /* f0229d0: 00000000 */ sll $zero,$zero,0x0 -/* f0229d4: 0fc08921 */ jal func0f022484 +/* f0229d4: 0fc08921 */ jal chrCloak /* f0229d8: 24050001 */ addiu $a1,$zero,0x1 /* f0229dc: 1000000a */ beqz $zero,.L0f022a08 /* f0229e0: 00000000 */ sll $zero,$zero,0x0 @@ -6070,7 +6070,7 @@ glabel func0f022624 /* f0229f4: 00194080 */ sll $t0,$t9,0x2 /* f0229f8: 05010003 */ bgez $t0,.L0f022a08 /* f0229fc: 00000000 */ sll $zero,$zero,0x0 -/* f022a00: 0fc08946 */ jal func0f022518 +/* f022a00: 0fc08946 */ jal chrUncloak /* f022a04: 24050001 */ addiu $a1,$zero,0x1 .L0f022a08: /* f022a08: 0fc4a24b */ jal setCurrentPlayerNum @@ -23256,7 +23256,7 @@ glabel func0f0319a8 /* f031dac: 0fc0fe3d */ jal func0f03f8f4 /* f031db0: 02002025 */ or $a0,$s0,$zero /* f031db4: 02002025 */ or $a0,$s0,$zero -/* f031db8: 0fc08946 */ jal func0f022518 +/* f031db8: 0fc08946 */ jal chrUncloak /* f031dbc: 24050001 */ addiu $a1,$zero,0x1 /* f031dc0: 8e0f0018 */ lw $t7,0x18($s0) /* f031dc4: 2401fbff */ addiu $at,$zero,-1025 @@ -24847,7 +24847,7 @@ glabel func0f03323c /* f0334c8: 0fc0fe3d */ jal func0f03f8f4 /* f0334cc: 02002025 */ or $a0,$s0,$zero /* f0334d0: 02002025 */ or $a0,$s0,$zero -/* f0334d4: 0fc08946 */ jal func0f022518 +/* f0334d4: 0fc08946 */ jal chrUncloak /* f0334d8: 24050001 */ addiu $a1,$zero,0x1 /* f0334dc: 8e0d0018 */ lw $t5,0x18($s0) /* f0334e0: 8fa20040 */ lw $v0,0x40($sp) @@ -28126,7 +28126,7 @@ glabel func0f036358 /* f03637c: 0fc0fe3d */ jal func0f03f8f4 /* f036380: 00000000 */ sll $zero,$zero,0x0 /* f036384: 02002025 */ or $a0,$s0,$zero -/* f036388: 0fc08946 */ jal func0f022518 +/* f036388: 0fc08946 */ jal chrUncloak /* f03638c: 24050001 */ addiu $a1,$zero,0x1 /* f036390: 921802ff */ lbu $t8,0x2ff($s0) /* f036394: 3c01bf80 */ lui $at,0xbf80 @@ -36596,7 +36596,7 @@ glabel func0f03d7ec /* f03d8a0: afa00088 */ sw $zero,0x88($sp) .L0f03d8a4: /* f03d8a4: 8fd70020 */ lw $s7,0x20($s8) -/* f03d8a8: 0fc08946 */ jal func0f022518 +/* f03d8a8: 0fc08946 */ jal chrUncloak /* f03d8ac: 03c02025 */ or $a0,$s8,$zero /* f03d8b0: 2418001e */ addiu $t8,$zero,0x1e /* f03d8b4: 3c014180 */ lui $at,0x4180 diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 2245bca00..97a71b44b 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -13914,52 +13914,25 @@ glabel ai01b5 /** * @cmd 01b7 */ -GLOBAL_ASM( -glabel ai01b7 -/* f05e870: 3c02800a */ lui $v0,%hi(g_Vars) -/* f05e874: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f05e878: 8c4e0434 */ lw $t6,0x434($v0) -/* f05e87c: 8c4f0438 */ lw $t7,0x438($v0) -/* f05e880: 27bdffe0 */ addiu $sp,$sp,-32 -/* f05e884: afbf0014 */ sw $ra,0x14($sp) -/* f05e888: 01cf1821 */ addu $v1,$t6,$t7 -/* f05e88c: 90650002 */ lbu $a1,0x2($v1) -/* f05e890: afa3001c */ sw $v1,0x1c($sp) -/* f05e894: 0fc126d1 */ jal chrFindById -/* f05e898: 8c440424 */ lw $a0,0x424($v0) -/* f05e89c: 8fa3001c */ lw $v1,0x1c($sp) -/* f05e8a0: 10400013 */ beqz $v0,.L0f05e8f0 -/* f05e8a4: 00402025 */ or $a0,$v0,$zero -/* f05e8a8: 8c58001c */ lw $t8,0x1c($v0) -/* f05e8ac: 13000010 */ beqz $t8,.L0f05e8f0 -/* f05e8b0: 00000000 */ sll $zero,$zero,0x0 -/* f05e8b4: afa3001c */ sw $v1,0x1c($sp) -/* f05e8b8: 0fc0e6a5 */ jal func0f039a94 -/* f05e8bc: afa20018 */ sw $v0,0x18($sp) -/* f05e8c0: 8fa3001c */ lw $v1,0x1c($sp) -/* f05e8c4: 1440000a */ bnez $v0,.L0f05e8f0 -/* f05e8c8: 8fa40018 */ lw $a0,0x18($sp) -/* f05e8cc: 90790003 */ lbu $t9,0x3($v1) -/* f05e8d0: 13200005 */ beqz $t9,.L0f05e8e8 -/* f05e8d4: 00000000 */ sll $zero,$zero,0x0 -/* f05e8d8: 0fc08921 */ jal func0f022484 -/* f05e8dc: 90650004 */ lbu $a1,0x4($v1) -/* f05e8e0: 10000003 */ beqz $zero,.L0f05e8f0 -/* f05e8e4: 00000000 */ sll $zero,$zero,0x0 -.L0f05e8e8: -/* f05e8e8: 0fc08946 */ jal func0f022518 -/* f05e8ec: 90650004 */ lbu $a1,0x4($v1) -.L0f05e8f0: -/* f05e8f0: 3c03800a */ lui $v1,%hi(g_Vars) -/* f05e8f4: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f05e8f8: 8c680438 */ lw $t0,0x438($v1) -/* f05e8fc: 8fbf0014 */ lw $ra,0x14($sp) -/* f05e900: 27bd0020 */ addiu $sp,$sp,0x20 -/* f05e904: 25090005 */ addiu $t1,$t0,0x5 -/* f05e908: ac690438 */ sw $t1,0x438($v1) -/* f05e90c: 03e00008 */ jr $ra -/* f05e910: 00001025 */ or $v0,$zero,$zero -); +bool aiChrSetCloaked(void) +{ + u8 *cmd = g_Vars.ailist + g_Vars.aioffset; + struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[2]); + + if (chr && chr->pos) { + if (!func0f039a94(chr)) { + if (cmd[3]) { + chrCloak(chr, cmd[4]); + } else { + chrUncloak(chr, cmd[4]); + } + } + } + + g_Vars.aioffset += 5; + + return false; +} /** * @cmd 01b8 diff --git a/src/game/game_005fd0.c b/src/game/game_005fd0.c index fdfad628a..b79c32032 100644 --- a/src/game/game_005fd0.c +++ b/src/game/game_005fd0.c @@ -4226,7 +4226,7 @@ glabel func0f0099e4 /* f009cc8: 05e10004 */ bgez $t7,.L0f009cdc /* f009ccc: ae0d0018 */ sw $t5,0x18($s0) /* f009cd0: 02002025 */ or $a0,$s0,$zero -/* f009cd4: 0fc08946 */ jal func0f022518 +/* f009cd4: 0fc08946 */ jal chrUncloak /* f009cd8: 24050001 */ addiu $a1,$zero,0x1 .L0f009cdc: /* f009cdc: 86620002 */ lh $v0,0x2($s3) diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 4fa65f172..8e6f3143c 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -16807,7 +16807,7 @@ glabel func0f0c1404 .L0f0c148c: /* f0c148c: 24050001 */ addiu $a1,$zero,0x1 /* f0c1490: 8d6c00bc */ lw $t4,0xbc($t3) -/* f0c1494: 0fc08946 */ jal func0f022518 +/* f0c1494: 0fc08946 */ jal chrUncloak /* f0c1498: 8d840004 */ lw $a0,0x4($t4) /* f0c149c: 8e0d0314 */ lw $t5,0x314($s0) /* f0c14a0: 51a0000d */ beqzl $t5,.L0f0c14d8 diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 15f81e117..d5ab94e5c 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -62,8 +62,8 @@ u32 func0f022084(void); u32 func0f0220ac(struct chrdata *chr); u32 func0f0220ec(void); u32 func0f022214(void); -u32 func0f022484(void); -u32 func0f022518(void); +void chrCloak(struct chrdata *chr, bool arg1); +void chrUncloak(struct chrdata *chr, bool arg1); u32 func0f0225f4(void); u32 func0f022624(void); u32 func0f022be4(void); diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index 1626df3a7..f08ea6a54 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -402,7 +402,7 @@ /*0x01b4*/ bool ai01b4(void); /*0x01b5*/ bool ai01b5(void); /*0x01b6*/ bool aiConfigureSnow(void); -/*0x01b7*/ bool ai01b7(void); +/*0x01b7*/ bool aiChrSetCloaked(void); /*0x01b8*/ bool aiSetAutogunType(void); /*0x01b9*/ bool ai01b9(void); /*0x01ba*/ bool ai01ba(void); diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index 0af48fb19..f86faa37b 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -14571,7 +14571,7 @@ bool (*g_CommandPointers[])(void) = { /*0x01b4*/ ai01b4, /*0x01b5*/ ai01b5, /*0x01b6*/ aiConfigureSnow, - /*0x01b7*/ ai01b7, + /*0x01b7*/ aiChrSetCloaked, /*0x01b8*/ aiSetAutogunType, /*0x01b9*/ ai01b9, /*0x01ba*/ ai01ba,