Decompile objPassesSafePickupChecks

This commit is contained in:
Ryan Dwyer 2021-02-28 22:28:34 +10:00
parent a7e772d278
commit 23b615f957
3 changed files with 24 additions and 45 deletions

View File

@ -763,7 +763,7 @@ glabel var7f1b8ea8
.L0f190d2c:
/* f190d2c: 0fc47bba */ jal dprint
/* f190d30: 00000000 */ nop
/* f190d34: 0fc19990 */ jal func0f066640
/* f190d34: 0fc19990 */ jal objPassesSafePickupChecks
/* f190d38: 8fa40084 */ lw $a0,0x84($sp)
/* f190d3c: 14400003 */ bnez $v0,.L0f190d4c
/* f190d40: 00000000 */ nop
@ -1138,7 +1138,7 @@ glabel var7f1b8ea8
//
// dprint();
//
// if (!func0f066640(obj)) {
// if (!objPassesSafePickupChecks(obj)) {
// return false;
// }
//

View File

@ -537,47 +537,26 @@ bool doorIsPadlockFree(struct doorobj *door)
return true;
}
GLOBAL_ASM(
glabel func0f066640
/* f066640: 8c8e000c */ lw $t6,0xc($a0)
/* f066644: 3c028007 */ lui $v0,%hi(g_SafeItems)
/* f066648: 31cf0400 */ andi $t7,$t6,0x400
/* f06664c: 51e0001d */ beqzl $t7,.L0f0666c4
/* f066650: 24020001 */ addiu $v0,$zero,0x1
/* f066654: 8c429924 */ lw $v0,%lo(g_SafeItems)($v0)
/* f066658: 3c013f00 */ lui $at,0x3f00
/* f06665c: 50400019 */ beqzl $v0,.L0f0666c4
/* f066660: 24020001 */ addiu $v0,$zero,0x1
/* f066664: 44810000 */ mtc1 $at,$f0
/* f066668: 00000000 */ nop
/* f06666c: 8c580004 */ lw $t8,0x4($v0)
.L0f066670:
/* f066670: 54980011 */ bnel $a0,$t8,.L0f0666b8
/* f066674: 8c420010 */ lw $v0,0x10($v0)
/* f066678: 8c43000c */ lw $v1,0xc($v0)
/* f06667c: 5060000e */ beqzl $v1,.L0f0666b8
/* f066680: 8c420010 */ lw $v0,0x10($v0)
/* f066684: 8c790014 */ lw $t9,0x14($v1)
/* f066688: 5320000b */ beqzl $t9,.L0f0666b8
/* f06668c: 8c420010 */ lw $v0,0x10($v0)
/* f066690: c464005c */ lwc1 $f4,0x5c($v1)
/* f066694: c468007c */ lwc1 $f8,0x7c($v1)
/* f066698: 46040182 */ mul.s $f6,$f0,$f4
/* f06669c: 4606403e */ c.le.s $f8,$f6
/* f0666a0: 00000000 */ nop
/* f0666a4: 45020004 */ bc1fl .L0f0666b8
/* f0666a8: 8c420010 */ lw $v0,0x10($v0)
/* f0666ac: 03e00008 */ jr $ra
/* f0666b0: 00001025 */ or $v0,$zero,$zero
/* f0666b4: 8c420010 */ lw $v0,0x10($v0)
.L0f0666b8:
/* f0666b8: 5440ffed */ bnezl $v0,.L0f066670
/* f0666bc: 8c580004 */ lw $t8,0x4($v0)
/* f0666c0: 24020001 */ addiu $v0,$zero,0x1
.L0f0666c4:
/* f0666c4: 03e00008 */ jr $ra
/* f0666c8: 00000000 */ nop
);
bool objPassesSafePickupChecks(struct defaultobj *obj)
{
if (obj->flags2 & OBJFLAG2_LINKEDTOSAFE) {
struct safeitemobj *link = g_SafeItems;
while (link) {
struct defaultobj *loopobj = link->item;
if (obj == link->item && link->door && link->door->base.prop) {
if (link->door->frac <= 0.5f * link->door->maxfrac) {
return false;
}
}
link = link->next;
}
}
return true;
}
GLOBAL_ASM(
glabel func0f0666cc
@ -39121,7 +39100,7 @@ glabel var7f1aae84
/* f089100: 10000231 */ b .L0f0899c8
/* f089104: 00001025 */ or $v0,$zero,$zero
.L0f089108:
/* f089108: 0fc19990 */ jal func0f066640
/* f089108: 0fc19990 */ jal objPassesSafePickupChecks
/* f08910c: 00000000 */ nop
/* f089110: 14400003 */ bnez $v0,.L0f089120
/* f089114: 8fa50084 */ lw $a1,0x84($sp)

View File

@ -29,7 +29,7 @@ void countdownTimerSetVisible(u32 flag, bool show);
void countdownTimerTick(void);
bool func0f066310(struct prop *doorprop, bool arg1);
bool doorIsPadlockFree(struct doorobj *door);
bool func0f066640(struct defaultobj *obj);
bool objPassesSafePickupChecks(struct defaultobj *obj);
u32 func0f0666cc(void);
u32 func0f0667ac(void);
u32 func0f0667b4(void);