From d819f741525835a7e7c211d1ff51db1f3b48394c Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 12 Apr 2022 17:28:39 +1000 Subject: [PATCH] Decompile func0f06be44 --- src/game/propobj.c | 46 ++++++++++++++------------------------ src/include/game/propobj.h | 1 - 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/src/game/propobj.c b/src/game/propobj.c index 411a133d5..e636f830e 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -6373,35 +6373,23 @@ glabel func0f06b610 /* f06be40: 27bd0130 */ addiu $sp,$sp,0x130 ); -GLOBAL_ASM( -glabel func0f06be44 -/* f06be44: 27bdffe0 */ addiu $sp,$sp,-32 -/* f06be48: afb10018 */ sw $s1,0x18($sp) -/* f06be4c: afb00014 */ sw $s0,0x14($sp) -/* f06be50: afbf001c */ sw $ra,0x1c($sp) -/* f06be54: 00008025 */ or $s0,$zero,$zero -/* f06be58: 1080000b */ beqz $a0,.L0f06be88 -/* f06be5c: 00808825 */ or $s1,$a0,$zero -/* f06be60: 8e240014 */ lw $a0,0x14($s1) -.L0f06be64: -/* f06be64: 26100001 */ addiu $s0,$s0,0x1 -/* f06be68: 50800005 */ beqzl $a0,.L0f06be80 -/* f06be6c: 8e31000c */ lw $s1,0xc($s1) -/* f06be70: 0fc1af91 */ jal func0f06be44 -/* f06be74: 00000000 */ nop -/* f06be78: 02028021 */ addu $s0,$s0,$v0 -/* f06be7c: 8e31000c */ lw $s1,0xc($s1) -.L0f06be80: -/* f06be80: 5620fff8 */ bnezl $s1,.L0f06be64 -/* f06be84: 8e240014 */ lw $a0,0x14($s1) -.L0f06be88: -/* f06be88: 8fbf001c */ lw $ra,0x1c($sp) -/* f06be8c: 02001025 */ or $v0,$s0,$zero -/* f06be90: 8fb00014 */ lw $s0,0x14($sp) -/* f06be94: 8fb10018 */ lw $s1,0x18($sp) -/* f06be98: 03e00008 */ jr $ra -/* f06be9c: 27bd0020 */ addiu $sp,$sp,0x20 -); +s32 func0f06be44(struct modelnode *rootnode) +{ + s32 count = 0; + struct modelnode *node = rootnode; + + while (node) { + count++; + + if (node->child) { + count += func0f06be44(node->child); + } + + node = node->next; + } + + return count; +} bool func0f06bea0(struct model *model, struct modelnode *endnode, struct modelnode *node, struct coord *arg3, struct coord *arg4, void *arg5, f32 *arg6, struct modelnode **arg7, s32 *hitpart, s32 *arg9, struct modelnode **arg10) { diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index e300be62d..56e3e45a0 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -111,7 +111,6 @@ f32 objGetWidth(struct defaultobj *obj); bool func0f06b39c(struct coord *arg0, struct coord *arg1, struct coord *arg2, f32 arg3); u32 func0f06b488(void); u32 func0f06b610(void); -u32 func0f06be44(void); bool func0f06bea0(struct model *model, struct modelnode *arg1, struct modelnode *arg2, struct coord *arg3, struct coord *arg4, void *arg5, f32 *arg6, struct modelnode **arg7, s32 *hitpart, s32 *arg9, struct modelnode **arg10); u32 func0f06c28c(void); s32 func0f06c8ac(struct prop *prop, struct coord *pos, struct coord *arg2, u32 arg3, struct coord *arg4, struct coord *arg5, s16 *spcc);