From 28815c4d24845e42d59fcc251d9b1396537f30e2 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 28 Jun 2020 17:44:23 +1000 Subject: [PATCH] Decompile hoverpropGetTurnAngle --- src/game/bondbike.c | 8 +++--- src/game/propobj.c | 55 +++++++++++++++++--------------------- src/include/game/propobj.h | 2 +- 3 files changed, 30 insertions(+), 35 deletions(-) diff --git a/src/game/bondbike.c b/src/game/bondbike.c index 3fbdd1f1f..06ea00b12 100644 --- a/src/game/bondbike.c +++ b/src/game/bondbike.c @@ -184,7 +184,7 @@ glabel var7f1adb34 /* f0d2320: 8fbf002c */ lw $ra,0x2c($sp) /* f0d2324: 8c4f1a6c */ lw $t7,0x1a6c($v0) /* f0d2328: 8de40004 */ lw $a0,0x4($t7) -/* f0d232c: 0fc1c836 */ jal func0f0720d8 +/* f0d232c: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0d2330: afa40068 */ sw $a0,0x68($sp) /* f0d2334: 8e180284 */ lw $t8,0x284($s0) /* f0d2338: 27a50038 */ addiu $a1,$sp,0x38 @@ -1307,7 +1307,7 @@ glabel var7f1adb7c /* f0d3154: 00000000 */ nop /* f0d3158: 45030023 */ bc1tl .L0f0d31e8 /* f0d315c: 8fab0134 */ lw $t3,0x134($sp) -/* f0d3160: 0fc1c836 */ jal func0f0720d8 +/* f0d3160: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0d3164: afa90040 */ sw $t1,0x40($sp) /* f0d3168: c7a6013c */ lwc1 $f6,0x13c($sp) /* f0d316c: 3c017f1b */ lui $at,%hi(var7f1adb7c) @@ -1517,7 +1517,7 @@ glabel var7f1adb84 /* f0d3438: 8dcf1a6c */ lw $t7,0x1a6c($t6) /* f0d343c: 8de40004 */ lw $a0,0x4($t7) /* f0d3440: afa00048 */ sw $zero,0x48($sp) -/* f0d3444: 0fc1c836 */ jal func0f0720d8 +/* f0d3444: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0d3448: afa40064 */ sw $a0,0x64($sp) /* f0d344c: 8fb80064 */ lw $t8,0x64($sp) /* f0d3450: e7a00060 */ swc1 $f0,0x60($sp) @@ -2489,7 +2489,7 @@ glabel var7f1adb9c /* f0d4224: c7280014 */ lwc1 $f8,0x14($t9) /* f0d4228: 0c0057c1 */ jal func00015f04 /* f0d422c: 46083303 */ div.s $f12,$f6,$f8 -/* f0d4230: 0fc1c836 */ jal func0f0720d8 +/* f0d4230: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0d4234: 8fa4021c */ lw $a0,0x21c($sp) /* f0d4238: 46000306 */ mov.s $f12,$f0 /* f0d423c: 0c0058dd */ jal func00016374 diff --git a/src/game/propobj.c b/src/game/propobj.c index 067b3fc0c..0b4b78e6d 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -13934,25 +13934,20 @@ glabel func0f0720b4 /* f0720d4: 00000000 */ nop ); -GLOBAL_ASM( -glabel func0f0720d8 -/* f0720d8: 90820003 */ lbu $v0,0x3($a0) -/* f0720dc: 44801000 */ mtc1 $zero,$f2 -/* f0720e0: 24010035 */ addiu $at,$zero,0x35 -/* f0720e4: 54410005 */ bnel $v0,$at,.L0f0720fc -/* f0720e8: 24010033 */ addiu $at,$zero,0x33 -/* f0720ec: c482006c */ lwc1 $f2,0x6c($a0) -/* f0720f0: 03e00008 */ jr $ra -/* f0720f4: 46001006 */ mov.s $f0,$f2 -/* f0720f8: 24010033 */ addiu $at,$zero,0x33 -.L0f0720fc: -/* f0720fc: 14410002 */ bne $v0,$at,.L0f072108 -/* f072100: 00000000 */ nop -/* f072104: c482006c */ lwc1 $f2,0x6c($a0) -.L0f072108: -/* f072108: 03e00008 */ jr $ra -/* f07210c: 46001006 */ mov.s $f0,$f2 -); +f32 hoverpropGetTurnAngle(struct defaultobj *obj) +{ + f32 angle = 0; + + if (obj->type == OBJTYPE_HOVERPROP) { + struct hoverpropobj *hoverprop = (struct hoverpropobj *)obj; + angle = hoverprop->hov.unk10; + } else if (obj->type == OBJTYPE_HOVERBIKE) { + struct hoverbikeobj *hoverbike = (struct hoverbikeobj *)obj; + angle = hoverbike->hov.unk10; + } + + return angle; +} void hoverpropSetTurnAngle(struct defaultobj *obj, f32 angle) { @@ -13995,7 +13990,7 @@ glabel var7f1aa31c /* f072190: 00000000 */ nop /* f072194: 45010017 */ bc1t .L0f0721f4 /* f072198: 00000000 */ nop -/* f07219c: 0fc1c836 */ jal func0f0720d8 +/* f07219c: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0721a0: e7ac0490 */ swc1 $f12,0x490($sp) /* f0721a4: c7ac0490 */ lwc1 $f12,0x490($sp) /* f0721a8: 3c017f1b */ lui $at,%hi(var7f1aa318) @@ -14019,7 +14014,7 @@ glabel var7f1aa31c /* f0721ec: 10000004 */ b .L0f072200 /* f0721f0: e7aa045c */ swc1 $f10,0x45c($sp) .L0f0721f4: -/* f0721f4: 0fc1c836 */ jal func0f0720d8 +/* f0721f4: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0721f8: 02002025 */ or $a0,$s0,$zero /* f0721fc: e7a0045c */ swc1 $f0,0x45c($sp) .L0f072200: @@ -14778,7 +14773,7 @@ glabel var7f1aa3b8 /* f072b9c: 460a2182 */ mul.s $f6,$f4,$f10 /* f072ba0: afa30064 */ sw $v1,0x64($sp) /* f072ba4: 4606a200 */ add.s $f8,$f20,$f6 -/* f072ba8: 0fc1c836 */ jal func0f0720d8 +/* f072ba8: 0fc1c836 */ jal hoverpropGetTurnAngle /* f072bac: e7a8006c */ swc1 $f8,0x6c($sp) /* f072bb0: e7a00080 */ swc1 $f0,0x80($sp) /* f072bb4: 0c0068f7 */ jal sinf @@ -30573,7 +30568,7 @@ glabel func0f081220 /* f08126c: 14610011 */ bne $v1,$at,.L0f0812b4 /* f081270: 00000000 */ nop .L0f081274: -/* f081274: 0fc1c836 */ jal func0f0720d8 +/* f081274: 0fc1c836 */ jal hoverpropGetTurnAngle /* f081278: 02002025 */ or $a0,$s0,$zero /* f08127c: 8e020014 */ lw $v0,0x14($s0) /* f081280: 3c0141a0 */ lui $at,0x41a0 @@ -30592,7 +30587,7 @@ glabel func0f081220 .L0f0812b4: /* f0812b4: 58400011 */ blezl $v0,.L0f0812fc /* f0812b8: 8fbf002c */ lw $ra,0x2c($sp) -/* f0812bc: 0fc1c836 */ jal func0f0720d8 +/* f0812bc: 0fc1c836 */ jal hoverpropGetTurnAngle /* f0812c0: 02002025 */ or $a0,$s0,$zero /* f0812c4: 8e020014 */ lw $v0,0x14($s0) /* f0812c8: 3c0141f0 */ lui $at,0x41f0 @@ -37185,17 +37180,17 @@ bool currentPlayerTryMountHoverbike(struct prop *prop) } if (pass) { - f32 thing = func0f096750( + f32 angle = func0f096750( prop->pos.x - g_Vars.currentplayer->prop->pos.x, prop->pos.z - g_Vars.currentplayer->prop->pos.z); - thing -= func0f0720d8(obj); + angle -= hoverpropGetTurnAngle(obj); - if (thing < 0) { - thing += M_BADTAU; + if (angle < 0) { + angle += M_BADTAU; } - if ((thing > 0.3926365673542f && thing < 2.3558194637299f) - || (thing < 5.8895483016968f && thing > 3.9263656139374f)) { + if ((angle > 0.3926365673542f && angle < 2.3558194637299f) + || (angle < 5.8895483016968f && angle > 3.9263656139374f)) { g_Vars.currentplayer->hoverbike = prop; currentPlayerSetMoveMode(MOVEMODE_BIKE); return true; diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index e6d85087c..7b33c4ebf 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -135,7 +135,7 @@ u32 func0f071360(void); void func0f0713e4(struct defaultobj *obj, struct hov *hov, struct coord *coord, s16 *rooms, f32 *matrix); void func0f0714b8(struct defaultobj *obj, struct hov *hov); u32 func0f0720b4(void); -f32 func0f0720d8(struct defaultobj *obj); +f32 hoverpropGetTurnAngle(struct defaultobj *obj); void hoverpropSetTurnAngle(struct defaultobj *obj, f32 angle); u32 func0f072144(void); u32 func0f072650(void);