diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index ac9a5264e..cae2c11e1 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -579,36 +579,28 @@ void propReparent(struct prop *mover, struct prop *adopter) adopter->child = mover; } -GLOBAL_ASM( -glabel func0f0606c0 -/* f0606c0: 8c820018 */ lw $v0,0x18($a0) -/* f0606c4: 10400013 */ beqz $v0,.L0f060714 -/* f0606c8: 00000000 */ sll $zero,$zero,0x0 -/* f0606cc: 8c4e001c */ lw $t6,0x1c($v0) -/* f0606d0: 548e0004 */ bnel $a0,$t6,.L0f0606e4 -/* f0606d4: 8c820020 */ lw $v0,0x20($a0) -/* f0606d8: 8c8f0020 */ lw $t7,0x20($a0) -/* f0606dc: ac4f001c */ sw $t7,0x1c($v0) -/* f0606e0: 8c820020 */ lw $v0,0x20($a0) -.L0f0606e4: -/* f0606e4: 50400004 */ beqzl $v0,.L0f0606f8 -/* f0606e8: 8c820024 */ lw $v0,0x24($a0) -/* f0606ec: 8c980024 */ lw $t8,0x24($a0) -/* f0606f0: ac580024 */ sw $t8,0x24($v0) -/* f0606f4: 8c820024 */ lw $v0,0x24($a0) -.L0f0606f8: -/* f0606f8: 50400004 */ beqzl $v0,.L0f06070c -/* f0606fc: ac800018 */ sw $zero,0x18($a0) -/* f060700: 8c990020 */ lw $t9,0x20($a0) -/* f060704: ac590020 */ sw $t9,0x20($v0) -/* f060708: ac800018 */ sw $zero,0x18($a0) -.L0f06070c: -/* f06070c: ac800020 */ sw $zero,0x20($a0) -/* f060710: ac800024 */ sw $zero,0x24($a0) -.L0f060714: -/* f060714: 03e00008 */ jr $ra -/* f060718: 00000000 */ sll $zero,$zero,0x0 -); +void propDetach(struct prop *prop) +{ + struct prop *parent = prop->parent; + + if (parent) { + if (prop == parent->child) { + parent->child = prop->next; + } + + if (prop->next) { + prop->next->prev = prop->prev; + } + + if (prop->prev) { + prop->prev->next = prop->next; + } + + prop->parent = NULL; + prop->next = NULL; + prop->prev = NULL; + } +} GLOBAL_ASM( glabel func0f06071c diff --git a/src/game/game_066310.c b/src/game/game_066310.c index 21776fc17..7f5758ee3 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -33632,7 +33632,7 @@ glabel func0f082f88 /* f082fa8: afa70028 */ sw $a3,0x28($sp) /* f082fac: afa50024 */ sw $a1,0x24($sp) /* f082fb0: afa20020 */ sw $v0,0x20($sp) -/* f082fb4: 0fc181b0 */ jal func0f0606c0 +/* f082fb4: 0fc181b0 */ jal propDetach /* f082fb8: afa3001c */ sw $v1,0x1c($sp) /* f082fbc: 8fa3001c */ lw $v1,0x1c($sp) /* f082fc0: 8fa20020 */ lw $v0,0x20($sp) diff --git a/src/include/game/game_0601b0.h b/src/include/game/game_0601b0.h index 6865e73a9..f8d6aa582 100644 --- a/src/include/game/game_0601b0.h +++ b/src/include/game/game_0601b0.h @@ -11,8 +11,8 @@ u32 func0f060438(void); void func0f0604bc(struct prop *prop); u32 func0f060538(void); u32 func0f0605c4(struct prop *prop); -void propReparent(struct prop *a, struct prop *b); -u32 func0f0606c0(void); +void propReparent(struct prop *mover, struct prop *adopter); +void propDetach(struct prop *prop); u32 func0f06071c(void); u32 func0f0607c8(void); u32 func0f060984(void);