From d928fd81ece8a91d01666050ce1ff3d8340c7b57 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 9 Jun 2020 08:19:03 +1000 Subject: [PATCH] Decompile hoverbikeTick --- src/game/propobj.c | 59 +++++++++++--------------------------- src/include/game/propobj.h | 6 ++-- 2 files changed, 19 insertions(+), 46 deletions(-) diff --git a/src/game/propobj.c b/src/game/propobj.c index 03529dd13..fbb25a66e 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -27653,52 +27653,25 @@ void hoverpropTick(struct prop *prop, bool arg1) if ((obj->base.hidden & OBJHFLAG_GRABBED) == 0 && (arg1 || (prop->flags & PROPFLAG_80) || (obj->base.flags & OBJFLAG_CHOPPER_INACTIVE))) { - func0f0714b8(obj, &obj->hov); + func0f0714b8(&obj->base, &obj->hov); } } -GLOBAL_ASM( -glabel hoverbikeTick -/* f07dfd0: 27bdffe0 */ addiu $sp,$sp,-32 -/* f07dfd4: afbf001c */ sw $ra,0x1c($sp) -/* f07dfd8: afb00018 */ sw $s0,0x18($sp) -/* f07dfdc: 8c900004 */ lw $s0,0x4($a0) -/* f07dfe0: 8e020040 */ lw $v0,0x40($s0) -/* f07dfe4: 00027140 */ sll $t6,$v0,0x5 -/* f07dfe8: 05c00016 */ bltz $t6,.L0f07e044 -/* f07dfec: 00027900 */ sll $t7,$v0,0x4 -/* f07dff0: 05e2000a */ bltzl $t7,.L0f07e01c -/* f07dff4: 8e080008 */ lw $t0,0x8($s0) -/* f07dff8: 54a00005 */ bnezl $a1,.L0f07e010 -/* f07dffc: 02002025 */ or $a0,$s0,$zero -/* f07e000: 90980001 */ lbu $t8,0x1($a0) -/* f07e004: 33190080 */ andi $t9,$t8,0x80 -/* f07e008: 13200003 */ beqz $t9,.L0f07e018 -/* f07e00c: 02002025 */ or $a0,$s0,$zero -.L0f07e010: -/* f07e010: 0fc1c52e */ jal func0f0714b8 -/* f07e014: 2605005c */ addiu $a1,$s0,0x5c -.L0f07e018: -/* f07e018: 8e080008 */ lw $t0,0x8($s0) -.L0f07e01c: -/* f07e01c: 00084840 */ sll $t1,$t0,0x1 -/* f07e020: 05230009 */ bgezl $t1,.L0f07e048 -/* f07e024: 8fbf001c */ lw $ra,0x1c($sp) -/* f07e028: 44800000 */ mtc1 $zero,$f0 -/* f07e02c: 02002025 */ or $a0,$s0,$zero -/* f07e030: 44050000 */ mfc1 $a1,$f0 -/* f07e034: 44060000 */ mfc1 $a2,$f0 -/* f07e038: 44070000 */ mfc1 $a3,$f0 -/* f07e03c: 0fc1cab7 */ jal func0f072adc -/* f07e040: 00000000 */ sll $zero,$zero,0x0 -.L0f07e044: -/* f07e044: 8fbf001c */ lw $ra,0x1c($sp) -.L0f07e048: -/* f07e048: 8fb00018 */ lw $s0,0x18($sp) -/* f07e04c: 27bd0020 */ addiu $sp,$sp,0x20 -/* f07e050: 03e00008 */ jr $ra -/* f07e054: 00000000 */ sll $zero,$zero,0x0 -); +void hoverbikeTick(struct prop *prop, bool arg1) +{ + struct hoverbikeobj *obj = (struct hoverbikeobj *)prop->obj; + + if ((obj->base.hidden & OBJHFLAG_04000000) == 0) { + if ((obj->base.hidden & OBJHFLAG_GRABBED) == 0 + && (arg1 || (prop->flags & PROPFLAG_80))) { + func0f0714b8(&obj->base, &obj->hov); + } + + if (obj->base.flags & OBJFLAG_DOORKEEPOPEN) { + func0f072adc(obj, 0, 0, 0); + } + } +} GLOBAL_ASM( glabel func0f07e058 diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index c0aa5f189..ab9056289 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -133,7 +133,7 @@ void func0f070f08(struct liftobj *lift, u32 arg0); void liftGoToStop(struct liftobj *lift, s32 stopnum); u32 func0f071360(void); void func0f0713e4(struct defaultobj *obj, struct hov *hov, struct coord *coord, s16 *rooms, f32 *matrix); -void func0f0714b8(struct hoverpropobj *obj, struct hov *hov); +void func0f0714b8(struct defaultobj *obj, struct hov *hov); u32 func0f0720b4(void); f32 func0f0720d8(struct defaultobj *obj); void func0f072110(struct defaultobj *obj, f32 angle); @@ -142,7 +142,7 @@ u32 func0f072650(void); u32 func0f0726ec(void); u32 func0f072774(void); u32 func0f0727d4(void); -u32 func0f072adc(void); +void func0f072adc(struct hoverbikeobj *hoverbike, f32 arg1, f32 arg2, f32 arg3); u32 func0f0732d4(void); u32 func0f073478(void); u32 func0f073ae8(void); @@ -181,7 +181,7 @@ void chopperTickAttackMode0(struct prop *chopper); void chopperTickAttackMode1(struct prop *chopper); void hovercarTick(struct prop *hovercar); void hoverpropTick(struct prop *hoverprop, bool arg1); -void hoverbikeTick(struct prop *hoverbike, s32 arg1); +void hoverbikeTick(struct prop *hoverbike, bool arg1); void func0f07e058(struct prop *prop); void func0f07e0b8(struct prop *glass, s32 playercount, u32 *arg2); u32 func0f07e184(void);