Decompile coordFindGroundY

This commit is contained in:
Ryan Dwyer
2020-05-08 20:31:11 +10:00
parent 1789a611f7
commit b58ac827a5
11 changed files with 101 additions and 132 deletions
+2 -2
View File
@@ -52,7 +52,7 @@ u32 var80070edc = 0x00000bb8;
f32 eyespyFindGround(s16 *floorroom)
{
struct prop *prop = g_Vars.currentplayer->eyespy->prop;
bool thing;
s32 inlift;
struct prop *lift;
struct coord pos;
f32 yoffset = 50;
@@ -70,7 +70,7 @@ f32 eyespyFindGround(s16 *floorroom)
pos.y = prop->pos.y + yoffset;
pos.z = prop->pos.z;
ground = coordFindGroundY(&pos, 26, prop->rooms, NULL, NULL, NULL, floorroom, &thing, &lift);
ground = coordFindGroundY(&pos, 26, prop->rooms, NULL, NULL, NULL, floorroom, &inlift, &lift);
if (ground < -30000) {
ground = -30000;
+1 -1
View File
@@ -1638,7 +1638,7 @@ void func0f0ce1ac(void)
f32 stack;
s32 i;
f32 tmp;
bool inlift;
s32 inlift;
struct prop *lift = NULL;
f32 dist;
f32 f14;
+1 -1
View File
@@ -1352,7 +1352,7 @@ void currentPlayerUpdateVerticalMovement(void)
struct coord testpos;
struct coord newpos;
s16 newrooms[8];
bool newinlift;
s32 newinlift;
struct prop *lift = NULL;
f32 sumground;
f32 moveamount;
+6 -6
View File
@@ -32138,16 +32138,16 @@ s32 func0f004cd84(s32 arg0, s32 arg1)
void func0f04cf90(struct chrdata *chr, s32 arg1)
{
if (chr && chr->animdata && chr->animdata->unk08) {
s32 value = func0001a91c(chr->animdata->unk08, arg1);
u32 *ptr = NULL;
void *value = func0001a91c(chr->animdata->unk08, arg1);
struct animdata10 *animdata10 = NULL;
if (value != 0) {
ptr = func0001aa1c(chr->animdata, value);
animdata10 = func0001aa1c(chr->animdata, value);
}
if (ptr) {
u32 value = *ptr;
*ptr = (value == 0);
if (animdata10) {
u32 value = animdata10->unk00;
animdata10->unk00 = (value == 0);
}
}
}
+6 -6
View File
@@ -958,8 +958,8 @@ struct prop *propAllocateEyespy(struct pad *pad, s16 room)
s16 rooms[2];
struct prop *prop;
struct chrdata *chr;
u32 lVar3;
bool thing;
struct animdata *animdata;
s32 inlift;
struct prop *lift;
f32 ground;
u32 stack[2];
@@ -991,10 +991,10 @@ struct prop *propAllocateEyespy(struct pad *pad, s16 room)
}
#endif
lVar3 = func0f02d36c(BODY_EYESPY, 0, 0);
animdata = func0f02d36c(BODY_EYESPY, 0, 0);
if (lVar3) {
prop = func0f020cc8(lVar3, &pad->pos, rooms, 0, ailistFindById(GAILIST_IDLE));
if (animdata) {
prop = func0f020cc8(animdata, &pad->pos, rooms, 0, ailistFindById(GAILIST_IDLE));
if (prop) {
func0f0604bc(prop);
@@ -1009,7 +1009,7 @@ struct prop *propAllocateEyespy(struct pad *pad, s16 room)
chr->visionrange = 0;
chr->race = bodyGetRace(chr->bodynum);
ground = coordFindGroundY(&pad->pos, 30, rooms, NULL, NULL, NULL, NULL, &thing, &lift);
ground = coordFindGroundY(&pad->pos, 30, rooms, NULL, NULL, NULL, NULL, &inlift, &lift);
chr->ground = ground;
chr->manground = ground;
+8 -4
View File
@@ -551,6 +551,8 @@
#define FLOORFLAG_0100 0x0100
#define FLOORFLAG_DIE 0x4000
#define FLOORTYPE_ESCALATOR 4
#define FRFAILREASON_NOTFAILED 0
#define FRFAILREASON_OUTOFAMMO 1
#define FRFAILREASON_TIMEOVER 2
@@ -2527,6 +2529,11 @@
#define TEAM_32 0x32
#define TEAM_NONCOMBAT 0x80
#define TELEPORTSTATE_0 0
#define TELEPORTSTATE_STARTING 1
#define TELEPORTSTATE_3 3
#define TELEPORTSTATE_4 4
#define TICKMODE_0 0
#define TICKMODE_1 1
#define TICKMODE_3 3
@@ -2535,10 +2542,7 @@
#define TICKMODE_6 6
#define TICKMODE_AUTOWALK 7
#define TELEPORTSTATE_0 0
#define TELEPORTSTATE_STARTING 1
#define TELEPORTSTATE_3 3
#define TELEPORTSTATE_4 4
#define TILEFLAG_0020 0x0020
#define VISIONMODE_NORMAL 0
#define VISIONMODE_XRAY 1
+1 -1
View File
@@ -7,7 +7,7 @@ u32 bodyGetRace(s32 bodynum);
bool bodyLoad(u32 bodynum);
u32 func0f02ce8c(void);
u32 func0f02d338(void);
u32 func0f02d36c(u32 bodynum, u32 arg1, u32 arg2);
struct animdata *func0f02d36c(u32 bodynum, u32 arg1, u32 arg2);
u32 func0f02d3f8(void);
u32 bodyGetHead(u32 bodynum);
u32 func0f02d4fc(void);
+1 -1
View File
@@ -14,7 +14,7 @@ u32 func0001a740(void);
u32 func0001a784(void);
u32 func0001a7cc(void);
u32 func0001a85c(void);
s32 func0001a91c(u32 arg0, s32 arg1);
void *func0001a91c(struct animdata08 *arg0, s32 arg1);
u32 func0001a9bc(void);
u32 func0001a9e8(void);
struct animdata10 *func0001aa1c(struct animdata *animdata, void *arg1);
+5 -5
View File
@@ -47,8 +47,8 @@ u32 func00025724(void);
u32 func00025774(void);
u32 func00025848(void);
u32 func00025928(void);
u32 func00025b70(void);
u32 func00025bdc(void);
void func00025b70(struct tile *tile, u16 *floorcol);
void func00025bdc(struct tile *tile, u8 *floortype);
u32 func00025c74(void);
u32 func00025f90(void);
u32 func000260cc(void);
@@ -65,7 +65,7 @@ u32 func000272f8(void);
s32 func000274e0(struct geo *geo, f32 x, f32 z, f32 angle, s32 arg4, s32 arg5);
s32 func000276c8(struct geo *geo, f32 x, f32 z, f32 angle, s32 arg4, s32 arg5);
u32 func00027738(void);
u32 func00027d1c(void);
void func00027d1c(struct coord *pos, f32 width, s16 *rooms, u32 arg3, u32 arg4, u32 arg5, f32 arg6, f32 arg7, u32 *arg8, u32 arg9);
u32 func00027f78(void);
u32 func00028200(void);
u32 func0002840c(void);
@@ -74,10 +74,10 @@ u32 func0002885c(void);
u32 func00028914(void);
u32 func00028df0(void);
u32 func0002901c(void);
u32 func000296a0(void);
f32 func000296a0(u32 *arg0, struct coord *pos, struct tilething **arg2, f32 width);
bool func00029ffc(struct coord *pos, f32 width, f32 foreheadheight, f32 inversefeettoeyesheight, s16 *rooms, u32 arg5, struct coord *laddernormal);
u32 func0002a13c(void);
f32 coordFindGroundY(struct coord *pos, f32 width, s16 *rooms, u16 *floorcol, u8 *floortype, u16 *floorflags, s16 *floorroom, bool *inlift, struct prop **lift);
f32 coordFindGroundY(struct coord *pos, f32 width, s16 *rooms, u16 *floorcol, u8 *floortype, u16 *floorflags, s16 *floorroom, s32 *inlift, struct prop **lift);
f32 func0002a330(struct coord *pos, f32 width, s16 *rooms, s32 arg3, s32 arg4);
f32 func0002a36c(struct coord *coord, s16 *arg1, s32 arg2, s32 arg3);
u32 func0002a400(void);
+17
View File
@@ -5683,4 +5683,21 @@ struct mpconfigfull {
struct mpstrings strings;
};
struct tile {
/*0x00*/ u8 unk00; // 0 or 1 to enable floorcol, 2 or 3 to disable
/*0x01*/ u8 unk01;
/*0x02*/ u16 flags;
/*0x04*/ u8 floortype;
/*0x08*/ u32 unk08;
/*0x0c*/ u32 floorcol;
};
struct tilething {
struct tile *tile;
u32 unk04;
u32 unk08;
struct prop *lift;
u32 floorroom;
};
#endif
+53 -105
View File
@@ -7782,112 +7782,60 @@ glabel func0002a13c
/* 2a1ac: 27bd0058 */ addiu $sp,$sp,0x58
);
f32 coordFindGroundY(struct coord *pos, f32 width, s16 *rooms, u16 *floorcol,
u8 *floortype, u16 *floorflags, s16 *floorroom, s32 *inlift, struct prop **lift)
{
u32 sp76[105];
struct tilething *sp72 = NULL;
f32 ground;
struct tile *tile = NULL;
func00027d1c(pos, width, rooms, 0x3f, 3, 0, 0, 0, sp76, 20);
ground = func000296a0(sp76, pos, &sp72, width);
if (sp72) {
tile = sp72->tile;
}
if (floorcol) {
func00025b70(tile, floorcol);
}
if (floortype) {
func00025bdc(tile, floortype);
}
if (floorflags && tile) {
*floorflags = tile->flags;
}
if (floorroom) {
if (sp72) {
*floorroom = sp72->floorroom;
} else {
*floorroom = -1;
}
}
if (inlift) {
if (tile && tile->unk00 == 1 && (tile->flags & TILEFLAG_0020)) {
*inlift = true;
*lift = sp72->lift;
if (*lift && (*lift)->obj->obj == MODEL_ESCA_STEP && floortype) {
*floortype = FLOORTYPE_ESCALATOR;
}
} else {
*inlift = false;
*lift = NULL;
}
}
return ground;
}
GLOBAL_ASM(
glabel coordFindGroundY
/* 2a1b0: 27bdfe10 */ addiu $sp,$sp,-496
/* 2a1b4: 44800000 */ mtc1 $zero,$f0
/* 2a1b8: afbf0034 */ sw $ra,0x34($sp)
/* 2a1bc: afb00030 */ sw $s0,0x30($sp)
/* 2a1c0: afa701fc */ sw $a3,0x1fc($sp)
/* 2a1c4: 27af004c */ addiu $t7,$sp,0x4c
/* 2a1c8: 240e0003 */ addiu $t6,$zero,0x3
/* 2a1cc: 24180014 */ addiu $t8,$zero,0x14
/* 2a1d0: afa401f0 */ sw $a0,0x1f0($sp)
/* 2a1d4: afa501f4 */ sw $a1,0x1f4($sp)
/* 2a1d8: afa00048 */ sw $zero,0x48($sp)
/* 2a1dc: 00008025 */ or $s0,$zero,$zero
/* 2a1e0: afb80024 */ sw $t8,0x24($sp)
/* 2a1e4: afae0010 */ sw $t6,0x10($sp)
/* 2a1e8: afaf0020 */ sw $t7,0x20($sp)
/* 2a1ec: 2407003f */ addiu $a3,$zero,0x3f
/* 2a1f0: afa00014 */ sw $zero,0x14($sp)
/* 2a1f4: e7a00018 */ swc1 $f0,0x18($sp)
/* 2a1f8: 0c009f47 */ jal func00027d1c
/* 2a1fc: e7a0001c */ swc1 $f0,0x1c($sp)
/* 2a200: 27a4004c */ addiu $a0,$sp,0x4c
/* 2a204: 8fa501f0 */ lw $a1,0x1f0($sp)
/* 2a208: 27a60048 */ addiu $a2,$sp,0x48
/* 2a20c: 0c00a5a8 */ jal func000296a0
/* 2a210: 8fa701f4 */ lw $a3,0x1f4($sp)
/* 2a214: 8fb90048 */ lw $t9,0x48($sp)
/* 2a218: e7a00044 */ swc1 $f0,0x44($sp)
/* 2a21c: 8fa501fc */ lw $a1,0x1fc($sp)
/* 2a220: 13200002 */ beqz $t9,.L0002a22c
/* 2a224: 00000000 */ sll $zero,$zero,0x0
/* 2a228: 8f300000 */ lw $s0,0x0($t9)
.L0002a22c:
/* 2a22c: 50a00004 */ beqzl $a1,.L0002a240
/* 2a230: 8fa50200 */ lw $a1,0x200($sp)
/* 2a234: 0c0096dc */ jal func00025b70
/* 2a238: 02002025 */ or $a0,$s0,$zero
/* 2a23c: 8fa50200 */ lw $a1,0x200($sp)
.L0002a240:
/* 2a240: 50a00005 */ beqzl $a1,.L0002a258
/* 2a244: 8fa20204 */ lw $v0,0x204($sp)
/* 2a248: 0c0096f7 */ jal func00025bdc
/* 2a24c: 02002025 */ or $a0,$s0,$zero
/* 2a250: 8fa50200 */ lw $a1,0x200($sp)
/* 2a254: 8fa20204 */ lw $v0,0x204($sp)
.L0002a258:
/* 2a258: 50400006 */ beqzl $v0,.L0002a274
/* 2a25c: 8fa20208 */ lw $v0,0x208($sp)
/* 2a260: 52000004 */ beqzl $s0,.L0002a274
/* 2a264: 8fa20208 */ lw $v0,0x208($sp)
/* 2a268: 96080002 */ lhu $t0,0x2($s0)
/* 2a26c: a4480000 */ sh $t0,0x0($v0)
/* 2a270: 8fa20208 */ lw $v0,0x208($sp)
.L0002a274:
/* 2a274: 8fa90048 */ lw $t1,0x48($sp)
/* 2a278: 50400008 */ beqzl $v0,.L0002a29c
/* 2a27c: 8fa3020c */ lw $v1,0x20c($sp)
/* 2a280: 11200004 */ beqz $t1,.L0002a294
/* 2a284: 240bffff */ addiu $t3,$zero,-1
/* 2a288: 8d2a0010 */ lw $t2,0x10($t1)
/* 2a28c: 10000002 */ beqz $zero,.L0002a298
/* 2a290: a44a0000 */ sh $t2,0x0($v0)
.L0002a294:
/* 2a294: a44b0000 */ sh $t3,0x0($v0)
.L0002a298:
/* 2a298: 8fa3020c */ lw $v1,0x20c($sp)
.L0002a29c:
/* 2a29c: 5060001d */ beqzl $v1,.L0002a314
/* 2a2a0: 8fbf0034 */ lw $ra,0x34($sp)
/* 2a2a4: 12000018 */ beqz $s0,.L0002a308
/* 2a2a8: 8fa40210 */ lw $a0,0x210($sp)
/* 2a2ac: 920c0000 */ lbu $t4,0x0($s0)
/* 2a2b0: 24060001 */ addiu $a2,$zero,0x1
/* 2a2b4: 54cc0015 */ bnel $a2,$t4,.L0002a30c
/* 2a2b8: ac600000 */ sw $zero,0x0($v1)
/* 2a2bc: 960d0002 */ lhu $t5,0x2($s0)
/* 2a2c0: 31ae0020 */ andi $t6,$t5,0x20
/* 2a2c4: 51c00011 */ beqzl $t6,.L0002a30c
/* 2a2c8: ac600000 */ sw $zero,0x0($v1)
/* 2a2cc: 8fa40210 */ lw $a0,0x210($sp)
/* 2a2d0: ac660000 */ sw $a2,0x0($v1)
/* 2a2d4: 8faf0048 */ lw $t7,0x48($sp)
/* 2a2d8: 8df8000c */ lw $t8,0xc($t7)
/* 2a2dc: 1300000c */ beqz $t8,.L0002a310
/* 2a2e0: ac980000 */ sw $t8,0x0($a0)
/* 2a2e4: 8f190004 */ lw $t9,0x4($t8)
/* 2a2e8: 240100e4 */ addiu $at,$zero,0xe4
/* 2a2ec: 87280004 */ lh $t0,0x4($t9)
/* 2a2f0: 55010008 */ bnel $t0,$at,.L0002a314
/* 2a2f4: 8fbf0034 */ lw $ra,0x34($sp)
/* 2a2f8: 10a00005 */ beqz $a1,.L0002a310
/* 2a2fc: 24090004 */ addiu $t1,$zero,0x4
/* 2a300: 10000003 */ beqz $zero,.L0002a310
/* 2a304: a0a90000 */ sb $t1,0x0($a1)
.L0002a308:
/* 2a308: ac600000 */ sw $zero,0x0($v1)
.L0002a30c:
/* 2a30c: ac800000 */ sw $zero,0x0($a0)
.L0002a310:
/* 2a310: 8fbf0034 */ lw $ra,0x34($sp)
.L0002a314:
/* 2a314: c7a00044 */ lwc1 $f0,0x44($sp)
/* 2a318: 8fb00030 */ lw $s0,0x30($sp)
/* 2a31c: 03e00008 */ jr $ra
/* 2a320: 27bd01f0 */ addiu $sp,$sp,0x1f0
glabel func0002a324
/* 2a324: 44800000 */ mtc1 $zero,$f0
/* 2a328: 03e00008 */ jr $ra
/* 2a32c: 00000000 */ sll $zero,$zero,0x0