From 8907181d74d8b35fc432809ac4346f32b614604f Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 18 Mar 2021 08:17:47 +1000 Subject: [PATCH] Decompile objSetBlockedPathUnblocked --- src/game/game_00c490.c | 4 +-- src/game/propobj.c | 2 +- src/include/lib/lib_184d0.h | 2 +- src/lib/lib_184d0.c | 71 +++++++++++-------------------------- 4 files changed, 24 insertions(+), 55 deletions(-) diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index cf6700a45..a0d879508 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -3586,7 +3586,7 @@ void setupParseObjects(s32 stagenum) } if (trigger->hidden & OBJHFLAG_02000000) { - func000185d0(trigger, false); + objSetBlockedPathUnblocked(trigger, false); } } } @@ -3605,7 +3605,7 @@ void setupParseObjects(s32 stagenum) blocker->hidden |= OBJHFLAG_02000000; if (blocker->hidden & OBJHFLAG_01000000) { - func000185d0(blocker, false); + objSetBlockedPathUnblocked(blocker, false); } } } diff --git a/src/game/propobj.c b/src/game/propobj.c index 965098dfc..28edddba8 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -554,7 +554,7 @@ void objUpdateLinkedScenery(struct defaultobj *obj) link->exp->flags2 &= ~OBJFLAG2_INVISIBLE; } - func000185d0(obj, 1); + objSetBlockedPathUnblocked(obj, true); return; } diff --git a/src/include/lib/lib_184d0.h b/src/include/lib/lib_184d0.h index 43c709534..7b2a53375 100644 --- a/src/include/lib/lib_184d0.h +++ b/src/include/lib/lib_184d0.h @@ -5,7 +5,7 @@ #include "types.h" u8 *ailistFindById(s32 ailistid); -void func000185d0(struct defaultobj *obj, s32 arg1); +void objSetBlockedPathUnblocked(struct defaultobj *blocker, bool unblocked); u32 func00018680(void); u32 func00019634(void); u32 func000198dc(void); diff --git a/src/lib/lib_184d0.c b/src/lib/lib_184d0.c index 44b43e799..caae42fba 100644 --- a/src/lib/lib_184d0.c +++ b/src/lib/lib_184d0.c @@ -164,57 +164,26 @@ u8 *ailistFindById(s32 ailistid) return NULL; } -GLOBAL_ASM( -glabel func000185d0 -/* 185d0: 27bdffe8 */ addiu $sp,$sp,-24 -/* 185d4: afbf0014 */ sw $ra,0x14($sp) -/* 185d8: 8c8e0040 */ lw $t6,0x40($a0) -/* 185dc: 3c028007 */ lui $v0,%hi(g_BlockedPaths) -/* 185e0: 000e7980 */ sll $t7,$t6,0x6 -/* 185e4: 05e30023 */ bgezl $t7,.L00018674 -/* 185e8: 8fbf0014 */ lw $ra,0x14($sp) -/* 185ec: 8c42992c */ lw $v0,%lo(g_BlockedPaths)($v0) -/* 185f0: 3c03800a */ lui $v1,%hi(g_StageSetup) -/* 185f4: 5040001f */ beqzl $v0,.L00018674 -/* 185f8: 8fbf0014 */ lw $ra,0x14($sp) -/* 185fc: 8c580004 */ lw $t8,0x4($v0) -.L00018600: -/* 18600: 54980019 */ bnel $a0,$t8,.L00018668 -/* 18604: 8c42000c */ lw $v0,0xc($v0) -/* 18608: 50a0000d */ beqzl $a1,.L00018640 -/* 1860c: 844b0008 */ lh $t3,0x8($v0) -/* 18610: 84590008 */ lh $t9,0x8($v0) -/* 18614: 8449000a */ lh $t1,0xa($v0) -/* 18618: 3c03800a */ lui $v1,%hi(g_StageSetup) -/* 1861c: 8c63d030 */ lw $v1,%lo(g_StageSetup)($v1) -/* 18620: 00194100 */ sll $t0,$t9,0x4 -/* 18624: 00095100 */ sll $t2,$t1,0x4 -/* 18628: 01432821 */ addu $a1,$t2,$v1 -/* 1862c: 0fc4569e */ jal waypointEnableSegment -/* 18630: 01032021 */ addu $a0,$t0,$v1 -/* 18634: 1000000f */ b .L00018674 -/* 18638: 8fbf0014 */ lw $ra,0x14($sp) -/* 1863c: 844b0008 */ lh $t3,0x8($v0) -.L00018640: -/* 18640: 844d000a */ lh $t5,0xa($v0) -/* 18644: 8c63d030 */ lw $v1,%lo(g_StageSetup)($v1) -/* 18648: 000b6100 */ sll $t4,$t3,0x4 -/* 1864c: 000d7100 */ sll $t6,$t5,0x4 -/* 18650: 01c32821 */ addu $a1,$t6,$v1 -/* 18654: 0fc45692 */ jal waypointDisableSegment -/* 18658: 01832021 */ addu $a0,$t4,$v1 -/* 1865c: 10000005 */ b .L00018674 -/* 18660: 8fbf0014 */ lw $ra,0x14($sp) -/* 18664: 8c42000c */ lw $v0,0xc($v0) -.L00018668: -/* 18668: 5440ffe5 */ bnezl $v0,.L00018600 -/* 1866c: 8c580004 */ lw $t8,0x4($v0) -/* 18670: 8fbf0014 */ lw $ra,0x14($sp) -.L00018674: -/* 18674: 27bd0018 */ addiu $sp,$sp,0x18 -/* 18678: 03e00008 */ jr $ra -/* 1867c: 00000000 */ nop -); +void objSetBlockedPathUnblocked(struct defaultobj *blocker, bool unblocked) +{ + if (blocker->hidden & OBJHFLAG_02000000) { + struct blockedpathobj *bp = g_BlockedPaths; + + while (bp) { + if (bp->blocker == blocker) { + if (unblocked) { + waypointEnableSegment(&g_StageSetup.waypoints[bp->waypoint1], &g_StageSetup.waypoints[bp->waypoint2]); + break; + } else { + waypointDisableSegment(&g_StageSetup.waypoints[bp->waypoint1], &g_StageSetup.waypoints[bp->waypoint2]); + break; + } + } + + bp = bp->next; + } + } +} GLOBAL_ASM( glabel func00018680