From 897c07baebad95506809525bf95b1534c24f37bd Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 29 Dec 2019 19:27:49 +1000 Subject: [PATCH] Decompile heliFromObj --- src/game/chr/chrai.c | 2 +- src/game/chr/chraicommands.c | 4 ++-- src/game/game_015010.c | 2 +- src/game/game_066310.c | 39 +++++++++++++++------------------- src/include/constants.h | 2 +- src/include/game/game_066310.h | 2 +- 6 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/game/chr/chrai.c b/src/game/chr/chrai.c index edb88f572..1de0c5871 100644 --- a/src/game/chr/chrai.c +++ b/src/game/chr/chrai.c @@ -69,7 +69,7 @@ void chraiExecute(void *entity, s32 proptype) g_Vars.objdata = entity; } else if (obj->type == OBJTYPE_28) { g_Vars.aicdata = entity; - } else if (obj->type == OBJTYPE_HOVERVEHICLE || obj->type == OBJTYPE_ARMEDVEHICLE) { + } else if (obj->type == OBJTYPE_HOVERVEHICLE || obj->type == OBJTYPE_HELI) { g_Vars.hovdata = entity; } } diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 84abf4022..972f7f330 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -6575,7 +6575,7 @@ glabel ai00d5 .L0f056968: /* f056968: 50800032 */ beqzl $a0,.L0f056a34 /* f05696c: 8cb80438 */ lw $t8,0x438($a1) -/* f056970: 0fc1eb7d */ jal objGetHeli +/* f056970: 0fc1eb7d */ jal heliFromObj /* f056974: afa60018 */ sw $a2,0x18($sp) /* f056978: 3c05800a */ lui $a1,%hi(g_Vars) /* f05697c: 24a59fc0 */ addiu $a1,$a1,%lo(g_Vars) @@ -11694,7 +11694,7 @@ bool aiIfY(void) f32 cutoff_y = ((cmd[4] | (cmd[3] << 8)) << 16) >> 16; if (cmd[2] == CHR_TARGET && g_Vars.hovdata) { - struct heliobj *heli = objGetHeli(&g_Vars.hovdata->base); + struct heliobj *heli = heliFromObj(&g_Vars.hovdata->base); if (heli) { struct prop *target = heliGetTargetProp(heli); diff --git a/src/game/game_015010.c b/src/game/game_015010.c index f5536ce71..d82320022 100644 --- a/src/game/game_015010.c +++ b/src/game/game_015010.c @@ -146,7 +146,7 @@ glabel setupParseObjects // case OBJTYPE_HOVERPROP: // case OBJTYPE_VENTFAN: // case OBJTYPE_HOVERVEHICLE: -// case OBJTYPE_ARMEDVEHICLE: +// case OBJTYPE_HELI: // case OBJTYPE_ESCALATOR: // setupParseObjectWithArg2False(ptr, 1); // } diff --git a/src/game/game_066310.c b/src/game/game_066310.c index c94742c52..3bb0eff9f 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -24583,25 +24583,20 @@ struct prop *heliGetTargetProp(struct heliobj *heli) return g_Vars.props + heli->target; } -GLOBAL_ASM( -glabel objGetHeli -/* f07adf4: 908e0003 */ lbu $t6,0x3($a0) -/* f07adf8: 24010039 */ addiu $at,$zero,0x39 -/* f07adfc: 00001025 */ or $v0,$zero,$zero -/* f07ae00: 15c10003 */ bne $t6,$at,.L0f07ae10 -/* f07ae04: 00000000 */ sll $zero,$zero,0x0 -/* f07ae08: 03e00008 */ jr $ra -/* f07ae0c: 00801025 */ or $v0,$a0,$zero -.L0f07ae10: -/* f07ae10: 03e00008 */ jr $ra -/* f07ae14: 00000000 */ sll $zero,$zero,0x0 -); +struct heliobj *heliFromObj(struct defaultobj *obj) +{ + if (obj->type == OBJTYPE_HELI) { + return (struct heliobj *) obj; + } + + return NULL; +} GLOBAL_ASM( glabel func0f07ae18 /* f07ae18: 27bdffd8 */ addiu $sp,$sp,-40 /* f07ae1c: afbf0014 */ sw $ra,0x14($sp) -/* f07ae20: 0fc1eb7d */ jal objGetHeli +/* f07ae20: 0fc1eb7d */ jal heliFromObj /* f07ae24: afa5002c */ sw $a1,0x2c($sp) /* f07ae28: 00402025 */ or $a0,$v0,$zero /* f07ae2c: 1040003c */ beqz $v0,.L0f07af20 @@ -24681,7 +24676,7 @@ GLOBAL_ASM( glabel func0f07af34 /* f07af34: 27bdffd8 */ addiu $sp,$sp,-40 /* f07af38: afbf001c */ sw $ra,0x1c($sp) -/* f07af3c: 0fc1eb7d */ jal objGetHeli +/* f07af3c: 0fc1eb7d */ jal heliFromObj /* f07af40: 00000000 */ sll $zero,$zero,0x0 /* f07af44: 1040001d */ beqz $v0,.L0f07afbc /* f07af48: 00402025 */ or $a0,$v0,$zero @@ -24728,7 +24723,7 @@ GLOBAL_ASM( glabel heliSetTarget /* f07afd0: 27bdffe0 */ addiu $sp,$sp,-32 /* f07afd4: afbf0014 */ sw $ra,0x14($sp) -/* f07afd8: 0fc1eb7d */ jal objGetHeli +/* f07afd8: 0fc1eb7d */ jal heliFromObj /* f07afdc: afa50024 */ sw $a1,0x24($sp) /* f07afe0: 10400011 */ beqz $v0,.L0f07b028 /* f07afe4: 00002025 */ or $a0,$zero,$zero @@ -24760,7 +24755,7 @@ GLOBAL_ASM( glabel func0f07b038 /* f07b038: 27bdffe8 */ addiu $sp,$sp,-24 /* f07b03c: afbf0014 */ sw $ra,0x14($sp) -/* f07b040: 0fc1eb7d */ jal objGetHeli +/* f07b040: 0fc1eb7d */ jal heliFromObj /* f07b044: 00000000 */ sll $zero,$zero,0x0 /* f07b048: 10400006 */ beqz $v0,.L0f07b064 /* f07b04c: 240e0001 */ addiu $t6,$zero,0x1 @@ -24782,7 +24777,7 @@ GLOBAL_ASM( glabel heliTryStop /* f07b078: 27bdffe8 */ addiu $sp,$sp,-24 /* f07b07c: afbf0014 */ sw $ra,0x14($sp) -/* f07b080: 0fc1eb7d */ jal objGetHeli +/* f07b080: 0fc1eb7d */ jal heliFromObj /* f07b084: 00000000 */ sll $zero,$zero,0x0 /* f07b088: 10400007 */ beqz $v0,.L0f07b0a8 /* f07b08c: 240e0078 */ addiu $t6,$zero,0x78 @@ -24803,7 +24798,7 @@ glabel heliTryStop bool heliSetField90(struct defaultobj *obj, bool value) { - struct heliobj *heli = objGetHeli(obj); + struct heliobj *heli = heliFromObj(obj); if (heli) { heli->unk90 = value; @@ -24817,7 +24812,7 @@ GLOBAL_ASM( glabel heliRestartTimer /* f07b0f4: 27bdffe8 */ addiu $sp,$sp,-24 /* f07b0f8: afbf0014 */ sw $ra,0x14($sp) -/* f07b0fc: 0fc1eb7d */ jal objGetHeli +/* f07b0fc: 0fc1eb7d */ jal heliFromObj /* f07b100: 00000000 */ sll $zero,$zero,0x0 /* f07b104: 50400003 */ beqzl $v0,.L0f07b114 /* f07b108: 8fbf0014 */ lw $ra,0x14($sp) @@ -24833,7 +24828,7 @@ GLOBAL_ASM( glabel heliGetTimer /* f07b120: 27bdffe8 */ addiu $sp,$sp,-24 /* f07b124: afbf0014 */ sw $ra,0x14($sp) -/* f07b128: 0fc1eb7d */ jal objGetHeli +/* f07b128: 0fc1eb7d */ jal heliFromObj /* f07b12c: 00000000 */ sll $zero,$zero,0x0 /* f07b130: 8c4e00c0 */ lw $t6,0xc0($v0) /* f07b134: 3c017f1b */ lui $at,%hi(var7f1aa5c8) @@ -50084,7 +50079,7 @@ glabel func0f0912dc /* f091638: 8fae0200 */ lw $t6,0x200($sp) /* f09163c: 15a1006d */ bne $t5,$at,.L0f0917f4 /* f091640: 00000000 */ sll $zero,$zero,0x0 -/* f091644: 0fc1eb7d */ jal objGetHeli +/* f091644: 0fc1eb7d */ jal heliFromObj /* f091648: 8dc40004 */ lw $a0,0x4($t6) /* f09164c: 104001c9 */ beqz $v0,.L0f091d74 /* f091650: 3c017f1b */ lui $at,%hi(var7f1ab20c) diff --git a/src/include/constants.h b/src/include/constants.h index 5057910c6..04a5971ca 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -646,7 +646,7 @@ #define OBJTYPE_VENTFAN 0x36 #define OBJTYPE_HOVERVEHICLE 0x37 #define OBJTYPE_PADEFFECT 0x38 -#define OBJTYPE_ARMEDVEHICLE 0x39 +#define OBJTYPE_HELI 0x39 #define OBJTYPE_MINE 0x3a #define OBJTYPE_ESCALATOR 0x3b diff --git a/src/include/game/game_066310.h b/src/include/game/game_066310.h index f21dddb86..e22122d07 100644 --- a/src/include/game/game_066310.h +++ b/src/include/game/game_066310.h @@ -161,7 +161,7 @@ u32 func0f078c78(void); u32 func0f079ca4(void); u32 func0f079f1c(void); u32 func0f07accc(void); -struct heliobj *objGetHeli(struct defaultobj *obj); +struct heliobj *heliFromObj(struct defaultobj *obj); u32 func0f07ae18(struct heliobj *heli, u32 arg1); u32 func0f07af34(struct heliobj *heli); void heliSetTarget(struct heliobj *heli, s32 arg1);