From b96f72992d4c2b3baaa6077fa2401e324cc7c0d8 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 22 Jun 2020 08:18:49 +1000 Subject: [PATCH] Decompile propchrHasClearLineInVector --- src/game/chr/chraction.c | 38 +++++++++----------------------- src/include/game/chr/chraction.h | 2 +- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 5a73317b6..699113a78 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -8219,32 +8219,16 @@ bool propchrHasClearLineToPos(struct prop *prop, struct coord *dstpos, struct co return func0f03654c(prop->chr, &prop->pos, prop->rooms, dstpos, NULL, vector, prop->chr->chrwidth * 1.2f, 0x3f); } -GLOBAL_ASM( -glabel func0f036918 -/* f036918: 27bdffd8 */ addiu $sp,$sp,-40 -/* f03691c: afbf0014 */ sw $ra,0x14($sp) -/* f036920: afa5002c */ sw $a1,0x2c($sp) -/* f036924: 44866000 */ mtc1 $a2,$f12 -/* f036928: c4a40000 */ lwc1 $f4,0x0($a1) -/* f03692c: c4880008 */ lwc1 $f8,0x8($a0) -/* f036930: 00a03025 */ or $a2,$a1,$zero -/* f036934: 460c2182 */ mul.s $f6,$f4,$f12 -/* f036938: 46083280 */ add.s $f10,$f6,$f8 -/* f03693c: e7aa001c */ swc1 $f10,0x1c($sp) -/* f036940: c490000c */ lwc1 $f16,0xc($a0) -/* f036944: e7b00020 */ swc1 $f16,0x20($sp) -/* f036948: c4b20008 */ lwc1 $f18,0x8($a1) -/* f03694c: c4860010 */ lwc1 $f6,0x10($a0) -/* f036950: 27a5001c */ addiu $a1,$sp,0x1c -/* f036954: 460c9102 */ mul.s $f4,$f18,$f12 -/* f036958: 46062200 */ add.s $f8,$f4,$f6 -/* f03695c: 0fc0da2e */ jal propchrHasClearLineToPos -/* f036960: e7a80024 */ swc1 $f8,0x24($sp) -/* f036964: 8fbf0014 */ lw $ra,0x14($sp) -/* f036968: 27bd0028 */ addiu $sp,$sp,0x28 -/* f03696c: 03e00008 */ jr $ra -/* f036970: 00000000 */ sll $zero,$zero,0x0 -); +bool propchrHasClearLineInVector(struct prop *prop, struct coord *vector, f32 mult) +{ + struct coord dstpos; + + dstpos.x = vector->x * mult + prop->pos.x; + dstpos.y = prop->pos.y; + dstpos.z = vector->z * mult + prop->pos.z; + + return propchrHasClearLineToPos(prop, &dstpos, vector); +} GLOBAL_ASM( glabel func0f036974 @@ -13151,7 +13135,7 @@ void chrTickSurrender(struct chrdata *chr) coord.x = -sinf(value); coord.z = -cosf(value); - if (!func0f036918(chr->prop, &coord, 20)) { + if (!propchrHasClearLineInVector(chr->prop, &coord, 20)) { modelSetAnimation(chr->model, ANIM_SURRENDER_002E, random() & 1, 30, 0.5, 16); func0001ddec(chr->model, 30, 16); } diff --git a/src/include/game/chr/chraction.h b/src/include/game/chr/chraction.h index ab40cf421..f38ebe623 100644 --- a/src/include/game/chr/chraction.h +++ b/src/include/game/chr/chraction.h @@ -58,7 +58,7 @@ void func0f034524(struct chrdata *chr, f32 arg1, struct coord *vector, u8 *arg3, u32 func0f03645c(void); bool func0f03654c(struct chrdata *chr, struct coord *pos, s16 *rooms, struct coord *pos2, s16 *rooms2, struct coord *vector, f32 arg6, u32 arg7); bool propchrHasClearLineToPos(struct prop *prop, struct coord *dstpos, struct coord *vector); -bool func0f036918(struct prop *prop, struct coord *coord, f32 arg2); +bool propchrHasClearLineInVector(struct prop *prop, struct coord *coord, f32 arg2); bool func0f036974(struct prop *prop, struct coord *coord); void chrGetSideVectorToTarget(struct chrdata *chr, bool side, struct coord *vector); u32 chrCanRollInDirection(struct chrdata *chr, bool side, f32 distance);