From b9b886344acf56e29d3d647561d4e4dcb873d66b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 20 Dec 2019 22:41:32 +1000 Subject: [PATCH] Decompile func0f04d44c --- src/game/chr/chr.c | 46 +++++++++++--------------------------- src/include/game/chr/chr.h | 3 ++- 2 files changed, 15 insertions(+), 34 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index ff9da4e88..573326e79 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -53855,39 +53855,19 @@ glabel func0f04d000 /* f04d448: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f04d44c -/* f04d44c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f04d450: afbf0014 */ sw $ra,0x14($sp) -/* f04d454: 00802825 */ or $a1,$a0,$zero -/* f04d458: 8c840020 */ lw $a0,0x20($a0) -/* f04d45c: 0c00744f */ jal func0001d13c -/* f04d460: afa50018 */ sw $a1,0x18($sp) -/* f04d464: 8fa50018 */ lw $a1,0x18($sp) -/* f04d468: 3c01efff */ lui $at,0xefff -/* f04d46c: 3421ffff */ ori $at,$at,0xffff -/* f04d470: 8cae0018 */ lw $t6,0x18($a1) -/* f04d474: 01c17824 */ and $t7,$t6,$at -/* f04d478: 24010064 */ addiu $at,$zero,0x64 -/* f04d47c: acaf0018 */ sw $t7,0x18($a1) -/* f04d480: 1041000a */ beq $v0,$at,.L0f04d4ac -/* f04d484: 8fbf0014 */ lw $ra,0x14($sp) -/* f04d488: 24010065 */ addiu $at,$zero,0x65 -/* f04d48c: 10410007 */ beq $v0,$at,.L0f04d4ac -/* f04d490: 24010066 */ addiu $at,$zero,0x66 -/* f04d494: 10410005 */ beq $v0,$at,.L0f04d4ac -/* f04d498: 24010067 */ addiu $at,$zero,0x67 -/* f04d49c: 10410003 */ beq $v0,$at,.L0f04d4ac -/* f04d4a0: 000fc8c0 */ sll $t9,$t7,0x3 -/* f04d4a4: 07210003 */ bgez $t9,.L0f04d4b4 -/* f04d4a8: 00001025 */ or $v0,$zero,$zero -.L0f04d4ac: -/* f04d4ac: 10000001 */ beqz $zero,.L0f04d4b4 -/* f04d4b0: 24020001 */ addiu $v0,$zero,0x1 -.L0f04d4b4: -/* f04d4b4: 03e00008 */ jr $ra -/* f04d4b8: 27bd0018 */ addiu $sp,$sp,0x18 -); +bool func0f04d44c(struct chrdata *chr) +{ + s32 val = func0001d13c(chr->unk020); + chr->chrflags &= ~CHRFLAG3_10000000; + + // Possible @bug or just sloppy code: The flag check below can never pass + // because that flag was just turned off above. + if (val == 100 || val == 101 || val == 102 || val == 103 || (chr->chrflags & CHRFLAG3_10000000)) { + return true; + } + + return false; +} void chrEmitSparks(struct chrdata *chr) { diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 0354e02ee..5dab936a5 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -408,8 +408,9 @@ u32 func0f04ceec(void); u32 func0f04cf34(void); u32 func0f04cf90(struct chrdata *chr, u32 arg1); u32 func0f04d000(struct chrdata *chr); -u32 func0f04d44c(void); +bool func0f04d44c(struct chrdata *chr); void chrEmitSparks(struct chrdata *chr); + u32 func0f04e418(void); u32 getNumChrs(void); void incrementByte(u8 *dst, u8 amount);