Decompile eyespyFindGround

This commit is contained in:
Ryan Dwyer 2020-03-15 19:08:05 +10:00
parent ebc190394a
commit 878158e596
5 changed files with 40 additions and 71 deletions

View File

@ -38,72 +38,40 @@ const char var7f1ada70[] = "g";
const char var7f1ada74[] = "l";
const char var7f1ada78[] = "%s%s";
GLOBAL_ASM(
glabel func0f0cf150
.late_rodata
glabel var7f1ada80
.word 0xc6ea6000
.text
/* f0cf150: 3c0e800a */ lui $t6,%hi(g_Vars+0x284)
/* f0cf154: 8dcea244 */ lw $t6,%lo(g_Vars+0x284)($t6)
/* f0cf158: 27bdffa8 */ addiu $sp,$sp,-88
/* f0cf15c: afbf002c */ sw $ra,0x2c($sp)
/* f0cf160: afa40058 */ sw $a0,0x58($sp)
/* f0cf164: 8dc20480 */ lw $v0,0x480($t6)
/* f0cf168: 3c014248 */ lui $at,0x4248
/* f0cf16c: 44810000 */ mtc1 $at,$f0
/* f0cf170: 3c018007 */ lui $at,0x8007
/* f0cf174: c4240ed0 */ lwc1 $f4,0xed0($at)
/* f0cf178: c4460060 */ lwc1 $f6,0x60($v0)
/* f0cf17c: 8c430000 */ lw $v1,0x0($v0)
/* f0cf180: 46062081 */ sub.s $f2,$f4,$f6
/* f0cf184: 4600103c */ c.lt.s $f2,$f0
/* f0cf188: 00000000 */ sll $zero,$zero,0x0
/* f0cf18c: 45020003 */ bc1fl .L0f0cf19c
/* f0cf190: 44801000 */ mtc1 $zero,$f2
/* f0cf194: 46001006 */ mov.s $f0,$f2
/* f0cf198: 44801000 */ mtc1 $zero,$f2
.L0f0cf19c:
/* f0cf19c: 00000000 */ sll $zero,$zero,0x0
/* f0cf1a0: 4602003c */ c.lt.s $f0,$f2
/* f0cf1a4: 00000000 */ sll $zero,$zero,0x0
/* f0cf1a8: 45020003 */ bc1fl .L0f0cf1b8
/* f0cf1ac: c4680008 */ lwc1 $f8,0x8($v1)
/* f0cf1b0: 46001006 */ mov.s $f0,$f2
/* f0cf1b4: c4680008 */ lwc1 $f8,0x8($v1)
.L0f0cf1b8:
/* f0cf1b8: 8faf0058 */ lw $t7,0x58($sp)
/* f0cf1bc: 27b80050 */ addiu $t8,$sp,0x50
/* f0cf1c0: e7a80040 */ swc1 $f8,0x40($sp)
/* f0cf1c4: c46a000c */ lwc1 $f10,0xc($v1)
/* f0cf1c8: 27b9004c */ addiu $t9,$sp,0x4c
/* f0cf1cc: 27a40040 */ addiu $a0,$sp,0x40
/* f0cf1d0: 46005400 */ add.s $f16,$f10,$f0
/* f0cf1d4: 3c0541d0 */ lui $a1,0x41d0
/* f0cf1d8: 24660028 */ addiu $a2,$v1,0x28
/* f0cf1dc: 00003825 */ or $a3,$zero,$zero
/* f0cf1e0: e7b00044 */ swc1 $f16,0x44($sp)
/* f0cf1e4: c4720010 */ lwc1 $f18,0x10($v1)
/* f0cf1e8: afb90020 */ sw $t9,0x20($sp)
/* f0cf1ec: afb8001c */ sw $t8,0x1c($sp)
/* f0cf1f0: afa00014 */ sw $zero,0x14($sp)
/* f0cf1f4: afa00010 */ sw $zero,0x10($sp)
/* f0cf1f8: afaf0018 */ sw $t7,0x18($sp)
/* f0cf1fc: 0c00a86c */ jal func0002a1b0
/* f0cf200: e7b20048 */ swc1 $f18,0x48($sp)
/* f0cf204: 3c017f1b */ lui $at,%hi(var7f1ada80)
/* f0cf208: c42cda80 */ lwc1 $f12,%lo(var7f1ada80)($at)
/* f0cf20c: 8fbf002c */ lw $ra,0x2c($sp)
/* f0cf210: 46000086 */ mov.s $f2,$f0
/* f0cf214: 460c003c */ c.lt.s $f0,$f12
/* f0cf218: 27bd0058 */ addiu $sp,$sp,0x58
/* f0cf21c: 45000002 */ bc1f .L0f0cf228
/* f0cf220: 00000000 */ sll $zero,$zero,0x0
/* f0cf224: 46006086 */ mov.s $f2,$f12
.L0f0cf228:
/* f0cf228: 03e00008 */ jr $ra
/* f0cf22c: 46001006 */ mov.s $f0,$f2
);
/**
* Determines the eyespy's ground Y value by doing a collision check for a
* position 50 units above the current position, or less if the eyespy is near
* the top of its height range.
*/
f32 eyespyFindGround(s16 *floorroom)
{
struct prop *prop = g_Vars.currentplayer->eyespy->prop;
bool thing;
struct prop *lift;
struct coord pos;
f32 yoffset = 50;
f32 ground;
if (g_EyespyMaxHeight - g_Vars.currentplayer->eyespy->height < 50) {
yoffset = g_EyespyMaxHeight - g_Vars.currentplayer->eyespy->height;
}
if (yoffset < 0) {
yoffset = 0;
}
pos.x = prop->pos.x;
pos.y = prop->pos.y + yoffset;
pos.z = prop->pos.z;
ground = func0002a1b0(&pos, 26, prop->rooms, NULL, NULL, NULL, floorroom, &thing, &lift);
if (ground < -30000) {
ground = -30000;
}
return ground;
}
GLOBAL_ASM(
glabel func0f0cf230
@ -224,7 +192,7 @@ glabel func0f0cf38c
/* f0cf3b4: 8f100000 */ lw $s0,0x0($t8)
/* f0cf3b8: 8e190004 */ lw $t9,0x4($s0)
/* f0cf3bc: afa600d0 */ sw $a2,0xd0($sp)
/* f0cf3c0: 0fc33c54 */ jal func0f0cf150
/* f0cf3c0: 0fc33c54 */ jal eyespyFindGround
/* f0cf3c4: afb900c4 */ sw $t9,0xc4($sp)
/* f0cf3c8: 8fa600d0 */ lw $a2,0xd0($sp)
/* f0cf3cc: 44800000 */ mtc1 $zero,$f0
@ -1074,7 +1042,7 @@ glabel var7f1ada94
/* f0cffe8: c58e00b4 */ lwc1 $f14,0xb4($t4)
/* f0cffec: e7b00078 */ swc1 $f16,0x78($sp)
/* f0cfff0: e7ae006c */ swc1 $f14,0x6c($sp)
/* f0cfff4: 0fc33c54 */ jal func0f0cf150
/* f0cfff4: 0fc33c54 */ jal eyespyFindGround
/* f0cfff8: e7ac0074 */ swc1 $f12,0x74($sp)
/* f0cfffc: 8fa30088 */ lw $v1,0x88($sp)
/* f0d0000: c7ac0074 */ lwc1 $f12,0x74($sp)

View File

@ -871,7 +871,7 @@ u32 var80070ec0 = 0x00000000;
u32 var80070ec4 = 0x00000000;
u32 var80070ec8 = 0x00000000;
u32 var80070ecc = 0x00000000;
u32 var80070ed0 = 0x43200000;
f32 g_EyespyMaxHeight = 160;
u32 var80070ed4 = 0x42a00000;
u32 var80070ed8 = 0x00000064;
u32 var80070edc = 0x00000bb8;

View File

@ -3,7 +3,7 @@
#include <ultra64.h>
#include "types.h"
u32 func0f0cf150(void);
f32 eyespyFindGround(s16 *floorroom);
u32 func0f0cf230(void);
u32 func0f0cf38c(void);
u32 func0f0cf728(void);

View File

@ -96,6 +96,7 @@ extern u32 var80070e9c;
extern u32 var80070ea8;
extern u32 var80070ec0;
extern u32 var80070ec4;
extern f32 g_EyespyMaxHeight;
extern u32 var80070ed4;
extern u32 var80070ed8;
extern u32 var80070edc;

View File

@ -1118,7 +1118,7 @@ struct eyespy {
/*0x4c*/ struct coord unk4c;
/*0x58*/ f32 speed;
/*0x5c*/ f32 oldground;
/*0x60*/ f32 height;
/*0x60*/ f32 height; // height above ground - 80 to 160
/*0x64*/ f32 gravity;
/*0x68*/ u8 camerashuttertime;
/*0x69*/ u8 hit;