From 794d98e2df66b28e75eec7c91aaa7f656e5f8ce3 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 1 Apr 2020 22:20:07 +1000 Subject: [PATCH] Decompile func0f014f10 --- src/game/game_014f10.c | 73 +++++++--------------------------- src/include/game/game_014f10.h | 2 +- src/include/game/game_01e250.h | 2 +- src/include/game/game_0601b0.h | 2 +- 4 files changed, 18 insertions(+), 61 deletions(-) diff --git a/src/game/game_014f10.c b/src/game/game_014f10.c index c1dfe7f05..014df3da8 100644 --- a/src/game/game_014f10.c +++ b/src/game/game_014f10.c @@ -14,64 +14,21 @@ #include "gvars/gvars.h" #include "types.h" -GLOBAL_ASM( -glabel func0f014f10 -/* f014f10: 27bdffd8 */ addiu $sp,$sp,-40 -/* f014f14: 3c038006 */ lui $v1,%hi(g_NumChrsA) -/* f014f18: 8c63298c */ lw $v1,%lo(g_NumChrsA)($v1) -/* f014f1c: afb2001c */ sw $s2,0x1c($sp) -/* f014f20: afbf0024 */ sw $ra,0x24($sp) -/* f014f24: afb30020 */ sw $s3,0x20($sp) -/* f014f28: afb10018 */ sw $s1,0x18($sp) -/* f014f2c: afb00014 */ sw $s0,0x14($sp) -/* f014f30: 18600024 */ blez $v1,.L0f014fc4 -/* f014f34: 00009025 */ or $s2,$zero,$zero -/* f014f38: 3c118006 */ lui $s1,%hi(g_ChrsA) -/* f014f3c: 26312988 */ addiu $s1,$s1,%lo(g_ChrsA) -/* f014f40: 00008025 */ or $s0,$zero,$zero -/* f014f44: 24130003 */ addiu $s3,$zero,0x3 -.L0f014f48: -/* f014f48: 8e2e0000 */ lw $t6,0x0($s1) -/* f014f4c: 01d01021 */ addu $v0,$t6,$s0 -/* f014f50: 844f0000 */ lh $t7,0x0($v0) -/* f014f54: 05e20018 */ bltzl $t7,.L0f014fb8 -/* f014f58: 26520001 */ addiu $s2,$s2,0x1 -/* f014f5c: 8c44001c */ lw $a0,0x1c($v0) -/* f014f60: 50800015 */ beqzl $a0,.L0f014fb8 -/* f014f64: 26520001 */ addiu $s2,$s2,0x1 -/* f014f68: 90980000 */ lbu $t8,0x0($a0) -/* f014f6c: 56780012 */ bnel $s3,$t8,.L0f014fb8 -/* f014f70: 26520001 */ addiu $s2,$s2,0x1 -/* f014f74: 0fc08351 */ jal func0f020d44 -/* f014f78: 24050001 */ addiu $a1,$zero,0x1 -/* f014f7c: 8e390000 */ lw $t9,0x0($s1) -/* f014f80: 03304021 */ addu $t0,$t9,$s0 -/* f014f84: 0fc18171 */ jal func0f0605c4 -/* f014f88: 8d04001c */ lw $a0,0x1c($t0) -/* f014f8c: 8e290000 */ lw $t1,0x0($s1) -/* f014f90: 01305021 */ addu $t2,$t1,$s0 -/* f014f94: 0fc180c0 */ jal func0f060300 -/* f014f98: 8d44001c */ lw $a0,0x1c($t2) -/* f014f9c: 8e2b0000 */ lw $t3,0x0($s1) -/* f014fa0: 01706021 */ addu $t4,$t3,$s0 -/* f014fa4: 0fc1810e */ jal propFree -/* f014fa8: 8d84001c */ lw $a0,0x1c($t4) -/* f014fac: 3c038006 */ lui $v1,%hi(g_NumChrsA) -/* f014fb0: 8c63298c */ lw $v1,%lo(g_NumChrsA)($v1) -/* f014fb4: 26520001 */ addiu $s2,$s2,0x1 -.L0f014fb8: -/* f014fb8: 0243082a */ slt $at,$s2,$v1 -/* f014fbc: 1420ffe2 */ bnez $at,.L0f014f48 -/* f014fc0: 26100368 */ addiu $s0,$s0,0x368 -.L0f014fc4: -/* f014fc4: 8fbf0024 */ lw $ra,0x24($sp) -/* f014fc8: 8fb00014 */ lw $s0,0x14($sp) -/* f014fcc: 8fb10018 */ lw $s1,0x18($sp) -/* f014fd0: 8fb2001c */ lw $s2,0x1c($sp) -/* f014fd4: 8fb30020 */ lw $s3,0x20($sp) -/* f014fd8: 03e00008 */ jr $ra -/* f014fdc: 27bd0028 */ addiu $sp,$sp,0x28 -); +void func0f014f10(void) +{ + s32 i; + + for (i = 0; i < g_NumChrsA; i++) { + if (g_ChrsA[i].chrnum >= 0 + && g_ChrsA[i].prop + && g_ChrsA[i].prop->type == PROPTYPE_CHR) { + func0f020d44(g_ChrsA[i].prop, true); + func0f0605c4(g_ChrsA[i].prop); + func0f060300(g_ChrsA[i].prop); + propFree(g_ChrsA[i].prop); + } + } +} void func0f014fe0(void) { diff --git a/src/include/game/game_014f10.h b/src/include/game/game_014f10.h index 345881d8e..b6a622fd5 100644 --- a/src/include/game/game_014f10.h +++ b/src/include/game/game_014f10.h @@ -3,7 +3,7 @@ #include #include "types.h" -u32 func0f014f10(void); +void func0f014f10(void); void func0f014fe0(void); #endif diff --git a/src/include/game/game_01e250.h b/src/include/game/game_01e250.h index c58f9a344..005444ade 100644 --- a/src/include/game/game_01e250.h +++ b/src/include/game/game_01e250.h @@ -11,7 +11,7 @@ u32 func0f01f264(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3, bo u32 func0f020538(void); s32 getLowestUnusedChrId(void); struct prop *func0f020b14(struct prop *prop, s32 arg0, struct coord *pos, s16 *rooms, f32 arg3, u8 *ailist); -u32 func0f020d44(void); +void func0f020d44(struct prop *prop, bool arg1); u32 func0f021258(void); u32 func0f02133c(void); u32 func0f0213a0(void); diff --git a/src/include/game/game_0601b0.h b/src/include/game/game_0601b0.h index f03508db1..3fdac4efc 100644 --- a/src/include/game/game_0601b0.h +++ b/src/include/game/game_0601b0.h @@ -5,7 +5,7 @@ u32 func0f0601b0(void); void propHide(struct prop *prop); -u32 func0f060300(struct prop *prop); +void func0f060300(struct prop *prop); struct prop *propAllocate(void); void propFree(struct prop *prop); void func0f0604bc(struct prop *prop);