Decompile doorActivateWrapper

This commit is contained in:
Ryan Dwyer
2020-01-25 21:23:07 +10:00
parent b93cbe076a
commit 7284b7c157
3 changed files with 32 additions and 86 deletions
+1 -1
View File
@@ -3137,7 +3137,7 @@ bool ai0065(void)
if (obj && obj->prop) {
if (obj->prop->type == PROPTYPE_DOOR) {
func0f08fee8(obj->prop, 0);
doorActivateWrapper(obj->prop, 0);
} else if (obj->prop->type == PROPTYPE_OBJ || obj->prop->type == PROPTYPE_WEAPON) {
func0f086f40(obj->prop);
}
+29 -83
View File
@@ -1340,7 +1340,7 @@ glabel func0f066310
/* f0663b8: 24010030 */ addiu $at,$zero,0x30
/* f0663bc: 14550005 */ bne $v0,$s5,.L0f0663d4
/* f0663c0: 00000000 */ sll $zero,$zero,0x0
/* f0663c4: 0fc23fba */ jal func0f08fee8
/* f0663c4: 0fc23fba */ jal doorActivateWrapper
/* f0663c8: 03c02825 */ or $a1,$s8,$zero
/* f0663cc: 10000068 */ beqz $zero,.L0f066570
/* f0663d0: 8e73000c */ lw $s3,0xc($s3)
@@ -20395,7 +20395,7 @@ glabel func0f076f30
/* f0771bc: 02002025 */ or $a0,$s0,$zero
/* f0771c0: 10400003 */ beqz $v0,.L0f0771d0
/* f0771c4: 8fa40078 */ lw $a0,0x78($sp)
/* f0771c8: 0fc23fba */ jal func0f08fee8
/* f0771c8: 0fc23fba */ jal doorActivateWrapper
/* f0771cc: 00002825 */ or $a1,$zero,$zero
.L0f0771d0:
/* f0771d0: 3c0e800a */ lui $t6,0x800a
@@ -48184,86 +48184,32 @@ glabel func0f08fcb8
/* f08fee4: 27bd00b8 */ addiu $sp,$sp,0xb8
);
GLOBAL_ASM(
glabel func0f08fee8
/* f08fee8: 27bdffe0 */ addiu $sp,$sp,-32
/* f08feec: afbf001c */ sw $ra,0x1c($sp)
/* f08fef0: afb00018 */ sw $s0,0x18($sp)
/* f08fef4: 0fc198c4 */ jal func0f066310
/* f08fef8: 8c900004 */ lw $s0,0x4($a0)
/* f08fefc: 14400025 */ bnez $v0,.L0f08ff94
/* f08ff00: 00000000 */ sll $zero,$zero,0x0
/* f08ff04: 82020084 */ lb $v0,0x84($s0)
/* f08ff08: 24010001 */ addiu $at,$zero,0x1
/* f08ff0c: 02002025 */ or $a0,$s0,$zero
/* f08ff10: 10410003 */ beq $v0,$at,.L0f08ff20
/* f08ff14: 24010003 */ addiu $at,$zero,0x3
/* f08ff18: 54410006 */ bnel $v0,$at,.L0f08ff34
/* f08ff1c: 24010002 */ addiu $at,$zero,0x2
.L0f08ff20:
/* f08ff20: 0fc23922 */ jal doorActivate
/* f08ff24: 24050002 */ addiu $a1,$zero,0x2
/* f08ff28: 1000001a */ beqz $zero,.L0f08ff94
/* f08ff2c: 00000000 */ sll $zero,$zero,0x0
/* f08ff30: 24010002 */ addiu $at,$zero,0x2
.L0f08ff34:
/* f08ff34: 14410005 */ bne $v0,$at,.L0f08ff4c
/* f08ff38: 02002025 */ or $a0,$s0,$zero
/* f08ff3c: 0fc23922 */ jal doorActivate
/* f08ff40: 24050001 */ addiu $a1,$zero,0x1
/* f08ff44: 10000013 */ beqz $zero,.L0f08ff94
/* f08ff48: 00000000 */ sll $zero,$zero,0x0
.L0f08ff4c:
/* f08ff4c: 14400011 */ bnez $v0,.L0f08ff94
/* f08ff50: 3c013f00 */ lui $at,0x3f00
/* f08ff54: 44812000 */ mtc1 $at,$f4
/* f08ff58: c606005c */ lwc1 $f6,0x5c($s0)
/* f08ff5c: c60a007c */ lwc1 $f10,0x7c($s0)
/* f08ff60: 24050002 */ addiu $a1,$zero,0x2
/* f08ff64: 46062202 */ mul.s $f8,$f4,$f6
/* f08ff68: 02002025 */ or $a0,$s0,$zero
/* f08ff6c: 460a403c */ c.lt.s $f8,$f10
/* f08ff70: 00000000 */ sll $zero,$zero,0x0
/* f08ff74: 45000005 */ bc1f .L0f08ff8c
/* f08ff78: 00000000 */ sll $zero,$zero,0x0
/* f08ff7c: 0fc23922 */ jal doorActivate
/* f08ff80: 02002025 */ or $a0,$s0,$zero
/* f08ff84: 10000003 */ beqz $zero,.L0f08ff94
/* f08ff88: 00000000 */ sll $zero,$zero,0x0
.L0f08ff8c:
/* f08ff8c: 0fc23922 */ jal doorActivate
/* f08ff90: 24050001 */ addiu $a1,$zero,0x1
.L0f08ff94:
/* f08ff94: 3c03800a */ lui $v1,%hi(g_Vars)
/* f08ff98: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
/* f08ff9c: 8c62028c */ lw $v0,0x28c($v1)
/* f08ffa0: 8c6e0298 */ lw $t6,0x298($v1)
/* f08ffa4: 55c20007 */ bnel $t6,$v0,.L0f08ffc4
/* f08ffa8: 8c790294 */ lw $t9,0x294($v1)
/* f08ffac: 8e0f0040 */ lw $t7,0x40($s0)
/* f08ffb0: 3c010004 */ lui $at,0x4
/* f08ffb4: 01e1c025 */ or $t8,$t7,$at
/* f08ffb8: 10000007 */ beqz $zero,.L0f08ffd8
/* f08ffbc: ae180040 */ sw $t8,0x40($s0)
/* f08ffc0: 8c790294 */ lw $t9,0x294($v1)
.L0f08ffc4:
/* f08ffc4: 57220005 */ bnel $t9,$v0,.L0f08ffdc
/* f08ffc8: 8e0a000c */ lw $t2,0xc($s0)
/* f08ffcc: 8e080040 */ lw $t0,0x40($s0)
/* f08ffd0: 35094000 */ ori $t1,$t0,0x4000
/* f08ffd4: ae090040 */ sw $t1,0x40($s0)
.L0f08ffd8:
/* f08ffd8: 8e0a000c */ lw $t2,0xc($s0)
.L0f08ffdc:
/* f08ffdc: 2401fff7 */ addiu $at,$zero,-9
/* f08ffe0: 01415824 */ and $t3,$t2,$at
/* f08ffe4: ae0b000c */ sw $t3,0xc($s0)
/* f08ffe8: 8fbf001c */ lw $ra,0x1c($sp)
/* f08ffec: 8fb00018 */ lw $s0,0x18($sp)
/* f08fff0: 27bd0020 */ addiu $sp,$sp,0x20
/* f08fff4: 03e00008 */ jr $ra
/* f08fff8: 00000000 */ sll $zero,$zero,0x0
);
void doorActivateWrapper(struct prop *doorprop, bool arg1)
{
struct doorobj *door = doorprop->door;
if (func0f066310(doorprop, arg1) == 0) {
if (door->mode == DOORMODE_OPENING || door->mode == DOORMODE_3) {
doorActivate(door, DOORMODE_CLOSING);
} else if (door->mode == DOORMODE_CLOSING) {
doorActivate(door, DOORMODE_OPENING);
} else if (door->mode == DOORMODE_IDLE) {
if (door->frac > 0.5f * door->maxfrac) {
doorActivate(door, DOORMODE_CLOSING);
} else {
doorActivate(door, DOORMODE_OPENING);
}
}
}
if (g_Vars.currentplayernum == g_Vars.coopplayernum) {
door->base.hidden |= OBJHFLAG_ACTIVATED_BY_COOP;
} else if (g_Vars.currentplayernum == g_Vars.bondplayernum) {
door->base.hidden |= OBJHFLAG_ACTIVATED_BY_BOND;
}
door->base.flags2 &= ~OBJFLAG2_00000008;
}
GLOBAL_ASM(
glabel func0f08fffc
@@ -48389,7 +48335,7 @@ bool func0f09018c(struct prop *doorprop)
if (func0f08bd00(playerprop, doorprop)) {
func0f0900c0(playerprop, door);
func0f08fee8(doorprop, 1);
doorActivateWrapper(doorprop, 1);
} else if (door->mode == DOORMODE_IDLE && door->frac < 0.5f * door->maxfrac) {
if ((door->base.flags2 & OBJFLAG2_00000004) == 0) {
struct textoverride *override = objGetTextOverride(&door->base);
+2 -2
View File
@@ -14,7 +14,7 @@ void countdownTimerSetRunning(bool running);
void countdownTimerSetValue(f32 frames);
void countdownTimerSetVisible(u32 flag, bool show);
void countdownTimerTick(void);
u32 func0f066310(struct prop *prop, u32 arg1);
bool func0f066310(struct prop *doorprop, bool arg1);
u32 func0f0665ac(void);
u32 func0f066640(void);
u32 func0f0666cc(void);
@@ -322,7 +322,7 @@ u32 func0f08f538(void);
u32 func0f08f604(void);
u32 func0f08f968(void);
u32 func0f08fcb8(void);
void func0f08fee8(struct prop *prop, s32 arg1);
void doorActivateWrapper(struct prop *prop, bool arg1);
u32 func0f08fffc(void);
void func0f0900c0(struct prop *prop, struct doorobj *door);
bool func0f09018c(struct prop *doorprop);