From bdc9ea0ebc9d3c754e05aa95de2feb25f69f870c Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 29 Mar 2020 20:02:01 +1000 Subject: [PATCH] Decompile objIsHealthy --- src/game/chr/chraicommands.c | 2 +- src/game/game_0d7070.c | 2 +- src/game/game_190260.c | 2 +- src/game/propobj.c | 50 +++++++++++++++--------------------- src/include/game/propobj.h | 4 +-- 5 files changed, 26 insertions(+), 34 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 3300417bd..855cc3748 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -2347,7 +2347,7 @@ bool aiDestroyObject(void) u8 *cmd = g_Vars.ailist + g_Vars.aioffset; struct defaultobj *obj = objFindByTagId(cmd[2]); - if (obj && obj->prop && func0f0687b8(obj) == 0) { + if (obj && obj->prop && objIsBroken(obj) == 0) { struct defaultobj *entity = obj->prop->obj; if (entity->obj == MODEL_ELVIS_SAUCER) { diff --git a/src/game/game_0d7070.c b/src/game/game_0d7070.c index bf711f8c4..af29b082c 100644 --- a/src/game/game_0d7070.c +++ b/src/game/game_0d7070.c @@ -215,7 +215,7 @@ glabel func0f0d7240 /* f0d72b4: 10000018 */ beqz $zero,.L0f0d7318 /* f0d72b8: 24020001 */ addiu $v0,$zero,0x1 .L0f0d72bc: -/* f0d72bc: 0fc1a1ee */ jal func0f0687b8 +/* f0d72bc: 0fc1a1ee */ jal objIsBroken /* f0d72c0: 00000000 */ sll $zero,$zero,0x0 /* f0d72c4: 58400014 */ blezl $v0,.L0f0d7318 /* f0d72c8: 24020001 */ addiu $v0,$zero,0x1 diff --git a/src/game/game_190260.c b/src/game/game_190260.c index 119d4927d..0eda7de31 100644 --- a/src/game/game_190260.c +++ b/src/game/game_190260.c @@ -839,7 +839,7 @@ glabel var7f1b8ea8 /* f190ea8: 8df00004 */ lw $s0,0x4($t7) /* f190eac: 24180001 */ addiu $t8,$zero,0x1 /* f190eb0: afb80064 */ sw $t8,0x64($sp) -/* f190eb4: 0fc1a1ee */ jal func0f0687b8 +/* f190eb4: 0fc1a1ee */ jal objIsBroken /* f190eb8: 8fa40084 */ lw $a0,0x84($sp) /* f190ebc: 10400005 */ beqz $v0,.L0f190ed4 /* f190ec0: 02001825 */ or $v1,$s0,$zero diff --git a/src/game/propobj.c b/src/game/propobj.c index 127091192..f102d54e4 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -2902,7 +2902,7 @@ glabel func0f068760 ); GLOBAL_ASM( -glabel func0f0687b8 +glabel objIsBroken /* f0687b8: 908e0002 */ lbu $t6,0x2($a0) /* f0687bc: 31cf0040 */ andi $t7,$t6,0x40 /* f0687c0: 55e00004 */ bnezl $t7,.L0f0687d4 @@ -30777,7 +30777,7 @@ glabel func0f0809c4 /* f080d40: 1000001e */ beqz $zero,.L0f080dbc /* f080d44: ae0b0034 */ sw $t3,0x34($s0) .L0f080d48: -/* f080d48: 0fc1a1ee */ jal func0f0687b8 +/* f080d48: 0fc1a1ee */ jal objIsBroken /* f080d4c: 8fa40074 */ lw $a0,0x74($sp) /* f080d50: 8e080030 */ lw $t0,0x30($s0) /* f080d54: 240e0001 */ addiu $t6,$zero,0x1 @@ -32150,7 +32150,7 @@ glabel var7f1aa838 /* f0820b0: 968f0014 */ lhu $t7,0x14($s4) /* f0820b4: 8d8d0010 */ lw $t5,0x10($t4) /* f0820b8: 000f7080 */ sll $t6,$t7,0x2 -/* f0820bc: 0fc1a1ee */ jal func0f0687b8 +/* f0820bc: 0fc1a1ee */ jal objIsBroken /* f0820c0: 01ae9821 */ addu $s3,$t5,$t6 /* f0820c4: 86840010 */ lh $a0,0x10($s4) /* f0820c8: 24050001 */ addiu $a1,$zero,0x1 @@ -34652,7 +34652,7 @@ glabel func0f0841dc /* f0841fc: 01cf082a */ slt $at,$t6,$t7 /* f084200: 54200006 */ bnezl $at,.L0f08421c /* f084204: 86180004 */ lh $t8,0x4($s0) -/* f084208: 0fc1a1ee */ jal func0f0687b8 +/* f084208: 0fc1a1ee */ jal objIsBroken /* f08420c: 00000000 */ sll $zero,$zero,0x0 /* f084210: 504000dc */ beqzl $v0,.L0f084584 /* f084214: 8fbf0024 */ lw $ra,0x24($sp) @@ -34688,7 +34688,7 @@ glabel func0f0841dc /* f08427c: afa30068 */ sw $v1,0x68($sp) .L0f084280: /* f084280: afa5006c */ sw $a1,0x6c($sp) -/* f084284: 0fc1a1ee */ jal func0f0687b8 +/* f084284: 0fc1a1ee */ jal objIsBroken /* f084288: a7a60066 */ sh $a2,0x66($sp) /* f08428c: 14400079 */ bnez $v0,.L0f084474 /* f084290: 8fa30068 */ lw $v1,0x68($sp) @@ -34856,7 +34856,7 @@ glabel func0f0841dc /* f0844f0: 0fc4a640 */ jal func0f129900 /* f0844f4: afaf0010 */ sw $t7,0x10($sp) .L0f0844f8: -/* f0844f8: 0fc1a1ee */ jal func0f0687b8 +/* f0844f8: 0fc1a1ee */ jal objIsBroken /* f0844fc: 02002025 */ or $a0,$s0,$zero /* f084500: 58400012 */ blezl $v0,.L0f08454c /* f084504: 8fad0030 */ lw $t5,0x30($sp) @@ -35923,7 +35923,7 @@ glabel var7f1aab30 .L0f085318: /* f085318: 14410006 */ bne $v0,$at,.L0f085334 /* f08531c: 02002025 */ or $a0,$s0,$zero -/* f085320: 0fc1a1ee */ jal func0f0687b8 +/* f085320: 0fc1a1ee */ jal objIsBroken /* f085324: e7ac00c4 */ swc1 $f12,0xc4($sp) /* f085328: 24010001 */ addiu $at,$zero,0x1 /* f08532c: 10410197 */ beq $v0,$at,.L0f08598c @@ -36038,7 +36038,7 @@ glabel var7f1aab30 /* f0854b4: 46046302 */ mul.s $f12,$f12,$f4 /* f0854b8: 00000000 */ sll $zero,$zero,0x0 .L0f0854bc: -/* f0854bc: 0fc1a1ee */ jal func0f0687b8 +/* f0854bc: 0fc1a1ee */ jal objIsBroken /* f0854c0: e7ac00c4 */ swc1 $f12,0xc4($sp) /* f0854c4: 1440000d */ bnez $v0,.L0f0854fc /* f0854c8: c7ac00c4 */ lwc1 $f12,0xc4($sp) @@ -36138,7 +36138,7 @@ glabel var7f1aab30 .L0f085618: /* f085618: 5441005c */ bnel $v0,$at,.L0f08578c /* f08561c: 24010039 */ addiu $at,$zero,0x39 -/* f085620: 0fc1a1ee */ jal func0f0687b8 +/* f085620: 0fc1a1ee */ jal objIsBroken /* f085624: 02002025 */ or $a0,$s0,$zero /* f085628: 24010001 */ addiu $at,$zero,0x1 /* f08562c: 144100c7 */ bne $v0,$at,.L0f08594c @@ -36252,7 +36252,7 @@ glabel var7f1aab30 /* f0857c0: 3c014000 */ lui $at,0x4000 /* f0857c4: 02002025 */ or $a0,$s0,$zero /* f0857c8: 01e14825 */ or $t1,$t7,$at -/* f0857cc: 0fc1a1ee */ jal func0f0687b8 +/* f0857cc: 0fc1a1ee */ jal objIsBroken /* f0857d0: ae090008 */ sw $t1,0x8($s0) /* f0857d4: 24010001 */ addiu $at,$zero,0x1 /* f0857d8: 1441005c */ bne $v0,$at,.L0f08594c @@ -36266,7 +36266,7 @@ glabel var7f1aab30 .L0f0857f8: /* f0857f8: 5441000c */ bnel $v0,$at,.L0f08582c /* f0857fc: 2401000a */ addiu $at,$zero,0xa -/* f085800: 0fc1a1ee */ jal func0f0687b8 +/* f085800: 0fc1a1ee */ jal objIsBroken /* f085804: 02002025 */ or $a0,$s0,$zero /* f085808: 24010001 */ addiu $at,$zero,0x1 /* f08580c: 1441004f */ bne $v0,$at,.L0f08594c @@ -36280,7 +36280,7 @@ glabel var7f1aab30 .L0f08582c: /* f08582c: 5441000c */ bnel $v0,$at,.L0f085860 /* f085830: 2401000b */ addiu $at,$zero,0xb -/* f085834: 0fc1a1ee */ jal func0f0687b8 +/* f085834: 0fc1a1ee */ jal objIsBroken /* f085838: 02002025 */ or $a0,$s0,$zero /* f08583c: 24010001 */ addiu $at,$zero,0x1 /* f085840: 14410042 */ bne $v0,$at,.L0f08594c @@ -36294,7 +36294,7 @@ glabel var7f1aab30 .L0f085860: /* f085860: 54410018 */ bnel $v0,$at,.L0f0858c4 /* f085864: 24010024 */ addiu $at,$zero,0x24 -/* f085868: 0fc1a1ee */ jal func0f0687b8 +/* f085868: 0fc1a1ee */ jal objIsBroken /* f08586c: 02002025 */ or $a0,$s0,$zero /* f085870: 24010001 */ addiu $at,$zero,0x1 /* f085874: 14410035 */ bne $v0,$at,.L0f08594c @@ -36320,7 +36320,7 @@ glabel var7f1aab30 .L0f0858c4: /* f0858c4: 5441000c */ bnel $v0,$at,.L0f0858f8 /* f0858c8: 24010015 */ addiu $at,$zero,0x15 -/* f0858cc: 0fc1a1ee */ jal func0f0687b8 +/* f0858cc: 0fc1a1ee */ jal objIsBroken /* f0858d0: 02002025 */ or $a0,$s0,$zero /* f0858d4: 24010001 */ addiu $at,$zero,0x1 /* f0858d8: 1441001c */ bne $v0,$at,.L0f08594c @@ -36334,7 +36334,7 @@ glabel var7f1aab30 .L0f0858f8: /* f0858f8: 14410014 */ bne $v0,$at,.L0f08594c /* f0858fc: 00000000 */ sll $zero,$zero,0x0 -/* f085900: 0fc1a1ee */ jal func0f0687b8 +/* f085900: 0fc1a1ee */ jal objIsBroken /* f085904: 02002025 */ or $a0,$s0,$zero /* f085908: 5440000e */ bnezl $v0,.L0f085944 /* f08590c: 44803000 */ mtc1 $zero,$f6 @@ -36355,7 +36355,7 @@ glabel var7f1aab30 /* f085944: 00000000 */ sll $zero,$zero,0x0 /* f085948: e6060060 */ swc1 $f6,0x60($s0) .L0f08594c: -/* f08594c: 0fc1a1ee */ jal func0f0687b8 +/* f08594c: 0fc1a1ee */ jal objIsBroken /* f085950: 02002025 */ or $a0,$s0,$zero /* f085954: 24010001 */ addiu $at,$zero,0x1 /* f085958: 5441000d */ bnel $v0,$at,.L0f085990 @@ -37509,18 +37509,10 @@ glabel propobjGetCiTagId /* f0869a4: 27bd0040 */ addiu $sp,$sp,0x40 ); -GLOBAL_ASM( -glabel objIsHealthy -/* f0869a8: 27bdffe8 */ addiu $sp,$sp,-24 -/* f0869ac: afbf0014 */ sw $ra,0x14($sp) -/* f0869b0: 0fc1a1ee */ jal func0f0687b8 -/* f0869b4: 00000000 */ sll $zero,$zero,0x0 -/* f0869b8: 8fbf0014 */ lw $ra,0x14($sp) -/* f0869bc: 2c4e0001 */ sltiu $t6,$v0,0x1 -/* f0869c0: 01c01025 */ or $v0,$t6,$zero -/* f0869c4: 03e00008 */ jr $ra -/* f0869c8: 27bd0018 */ addiu $sp,$sp,0x18 -); +bool objIsHealthy(struct defaultobj *obj) +{ + return !objIsBroken(obj); +} GLOBAL_ASM( glabel func0f0869cc @@ -40305,7 +40297,7 @@ glabel var7f1aae84 /* f089544: 8d300004 */ lw $s0,0x4($t1) /* f089548: 240a0001 */ addiu $t2,$zero,0x1 /* f08954c: afaa0064 */ sw $t2,0x64($sp) -/* f089550: 0fc1a1ee */ jal func0f0687b8 +/* f089550: 0fc1a1ee */ jal objIsBroken /* f089554: 00a02025 */ or $a0,$a1,$zero /* f089558: 10400003 */ beqz $v0,.L0f089568 /* f08955c: 02001825 */ or $v1,$s0,$zero diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 713e35f6b..4e0e07c2a 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -62,7 +62,7 @@ u32 func0f068694(void); u32 func0f0686e0(void); u32 func0f0686f0(void); u32 func0f068760(void); -s32 func0f0687b8(struct defaultobj *obj); +bool objIsBroken(struct defaultobj *obj); u32 func0f0687e4(void); u32 func0f0688f4(void); u32 func0f06896c(void); @@ -226,7 +226,7 @@ u32 func0f0859a0(void); u32 func0f085e00(void); u32 func0f085eac(void); u32 propobjGetCiTagId(struct prop *prop); -u32 objIsHealthy(struct defaultobj *obj); +bool objIsHealthy(struct defaultobj *obj); u32 func0f0869cc(void); bool currentPlayerTryMountHoverbike(struct prop *prop); bool propobjInteract(struct prop *prop);