Decompile func00027738

This commit is contained in:
Ryan Dwyer
2021-02-07 09:30:04 +10:00
parent 17e48e7bb7
commit 85ced79c04
14 changed files with 244 additions and 503 deletions
+9 -2
View File
@@ -854,8 +854,6 @@
#define GAILIST_INIT_SEARCH 0x002c // unused
#define GAILIST_INVINCIBLE_AND_IDLE 0x002d
#define GEOTYPE_2 2
#define GOPOSFLAG_SPEED 0x03 // bits 0x01 and 0x02 combined
#define GOPOSFLAG_INIT 0x04
#define GOPOSFLAG_ONPRESETPATH 0x08
@@ -3182,9 +3180,18 @@
#define TICKMODE_CUTSCENE 6
#define TICKMODE_AUTOWALK 7
#define TILEFLAG_0004 0x0004
#define TILEFLAG_0008 0x0008
#define TILEFLAG_0010 0x0010
#define TILEFLAG_0020 0x0020
#define TILEFLAG_0080 0x0080
#define TILEFLAG_0200 0x0200
#define TILETYPE_00 0x00 // Standard BG tiles
#define TILETYPE_01 0x01 //
#define TILETYPE_02 0x02 //
#define TILETYPE_03 0x03 // Chr geometry
#define TITLEMODE_LEGAL 0
#define TITLEMODE_CHECKCONTROLLERS 1
#define TITLEMODE_PDLOGO 2
+1 -1
View File
@@ -88,7 +88,7 @@ struct chrdata *chrFindByLiteralId(s32 chrnum);
struct prop *chrGetEquippedWeaponProp(struct chrdata *chr, s32 hand);
struct prop *chrGetEquippedWeaponPropWithCheck(struct chrdata *chr, s32 hand);
struct prop *chrGetTargetProp(struct chrdata *chr);
bool chrUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2);
bool chrUpdateGeometry(struct prop *prop, struct tiletype3 **arg1, struct tiletype3 **arg2);
void propChrGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin);
#endif
+1 -1
View File
@@ -67,7 +67,7 @@ void func0f0c1ba4(struct coord *pos, struct coord *up, struct coord *look, struc
void func0f0c1bd8(struct coord *pos, struct coord *up, struct coord *look);
void allPlayersClearMemCamRoom(void);
void func0f0c1e54(struct prop *prop, bool enable);
bool playerUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2);
bool playerUpdateGeometry(struct prop *prop, struct tiletype3 **arg1, struct tiletype3 **arg2);
void currentPlayerUpdatePerimInfo(void);
void propPlayerGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin);
f32 currentPlayerGetHealthFrac(void);
+1 -1
View File
@@ -58,6 +58,6 @@ void func0f065e98(struct coord *pos, s16 *rooms, struct coord *pos2, s16 *rooms2
void roomGetProps(s16 *room, s16 *propnums, u32 size);
u32 func0f066054(void);
void propGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin);
bool propUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2);
bool propUpdateGeometry(struct prop *prop, struct tiletype3 **arg1, struct tiletype3 **arg2);
#endif
+2 -2
View File
@@ -89,7 +89,7 @@ void func0f069144(struct prop *prop, u8 *nextcol, u16 floorcol);
void func0f069630(struct prop *prop, u8 *nextcol, u16 floorcol);
void func0f069710(u8 *shadecol, u8 *nextcol);
void func0f069750(s32 *arg0, s32 arg1, f32 *arg2);
void func0f069850(struct defaultobj *obj, struct coord *pos, f32 *realrot, struct geo *geo);
void func0f069850(struct defaultobj *obj, struct coord *pos, f32 *realrot, struct tiletype3 *geo);
void func0f069b4c(struct defaultobj *obj);
void func0f069c1c(struct defaultobj *obj);
void func0f069c70(struct defaultobj *obj, bool arg1, bool arg2);
@@ -243,7 +243,7 @@ bool func0f0869cc(struct prop *prop);
bool currentPlayerTryMountHoverbike(struct prop *prop);
bool propobjInteract(struct prop *prop);
void propObjSetOrUnsetHiddenFlag00400000(struct prop *prop, bool enable);
bool objUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2);
bool objUpdateGeometry(struct prop *prop, struct tiletype3 **arg1, struct tiletype3 **arg2);
void propObjGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin);
void ammotypeGetPickedUpText(char *dst);
void ammotypeGetDeterminer(char *dst, s32 ammotype, s32 qty);
+7 -7
View File
@@ -60,14 +60,14 @@ u32 func000266a4(void);
void platformGetRidingProps(struct prop *platform, s16 *propnums, u32 len);
u32 func00026a04(void);
u32 func00026e7c(void);
u32 func0002709c(void);
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);
void func00027738(struct coord *pos, f32 width, void *arg2, void *arg3, u32 arg4, u32 arg5, f32 arg6, f32 arg7, struct prop *prop, struct collisionthing *arg9, u32 arg10, s32 *arg11, s16 roomnum);
s32 func0002709c(struct tiletype0 *tile, f32 x, f32 z, f32 width, struct prop *prop, struct collisionthing *thing);
s32 func000272f8(struct tiletype1 *tile, f32 x, f32 z, f32 width, struct prop *prop, struct collisionthing *thing);
s32 func000274e0(struct tiletype2 *tile, f32 x, f32 z, f32 width, struct prop *prop, struct collisionthing *thing);
s32 func000276c8(struct tiletype3 *tile, f32 x, f32 z, f32 width, struct prop *prop, struct collisionthing *thing);
void func00027738(struct coord *pos, f32 width, struct tile *start, struct tile *end, u16 flags, bool checkvertical, f32 arg6, f32 arg7, struct prop *prop, struct collisionthing *things, s32 maxthings, s32 *thingnum, s32 roomnum);
void func00027d1c(struct coord *pos, f32 width, s16 *rooms, u32 types, u16 arg4, u32 arg5, f32 arg6, f32 arg7, struct collisionthing *arg8, s32 arg9);
u32 func00027f78(void);
u32 func00028200(void);
s32 func00028200(struct tiletype0 *tile, struct coord *pos, f32 width, f32 y1, f32 y2);
u32 func0002840c(void);
u32 func00028638(void);
u32 func0002885c(void);
@@ -120,7 +120,7 @@ u32 func0002deac(void);
u32 func0002ded8(void);
u32 func0002dffc(void);
u32 func0002e278(void);
bool func0002e4c4(struct geo *geo, s16 *rooms, u32 arg2);
bool func0002e4c4(struct tiletype3 *geo, s16 *rooms, u32 arg2);
u32 func0002e680(void);
u32 func0002e82c(void);
u32 func0002e9d8(void);
+63 -38
View File
@@ -547,6 +547,60 @@ struct aibot {
/*0x2d4*/ f32 unk2d4;
};
struct tile {
/*0x00*/ u8 type;
/*0x01*/ u8 numvertices;
/*0x02*/ u16 flags;
};
struct tiletype0 {
struct tile header;
/*0x04*/ u16 floortype;
/*0x06*/ u8 xmin; // These are byte offsets relative to the start of tile
/*0x07*/ u8 ymin;
/*0x08*/ u8 zmin;
/*0x09*/ u8 xmax;
/*0x0a*/ u8 ymax;
/*0x0b*/ u8 zmax;
/*0x0c*/ u16 floorcol;
u16 unk0e;
};
struct tiletype1 {
struct tile header;
/*0x04*/ u16 floortype;
/*0x06*/ u8 xmin; // These are byte offsets relative to the start of tile
/*0x07*/ u8 ymin;
/*0x08*/ u8 zmin;
/*0x09*/ u8 xmax;
/*0x0a*/ u8 ymax;
/*0x0b*/ u8 zmax;
/*0x0c*/ u16 floorcol;
};
struct tiletype2 {
struct tile header;
/*0x04*/ f32 ymax;
/*0x04*/ f32 ymin;
};
struct tiletype3 {
struct tile header;
/*0x04*/ f32 ymax;
/*0x08*/ f32 ymin;
/*0x0c*/ f32 x;
/*0x10*/ f32 z;
/*0x14*/ f32 width;
};
struct tilething {
struct tile *tile;
u32 unk04;
u32 unk08;
struct prop *lift;
u32 floorroom;
};
struct act_stand {
/*0x2c*/ s32 unk02c;
/*0x30*/ u32 face_entitytype;
@@ -819,17 +873,6 @@ struct act_skjump {
/*0x50*/ f32 y;
};
struct geo {
/*0x00*/ u8 type;
/*0x01*/ u8 unk01;
/*0x02*/ u16 unk02;
/*0x04*/ f32 ymax;
/*0x08*/ f32 ymin;
/*0x0c*/ f32 x;
/*0x10*/ f32 z;
/*0x14*/ f32 width;
};
struct chrdata {
/*0x000*/ s16 chrnum;
/*0x002*/ s8 accuracyrating;
@@ -918,7 +961,7 @@ struct chrdata {
/*0x12e*/ s16 chrseeshot;
/*0x130*/ s16 chrseedie;
/*0x132*/ s16 chrdup;
struct geo geo;
struct tiletype3 geo;
/*0x14c*/ f32 shotbondsum;
/*0x150*/ f32 aimuplshoulder;
/*0x154*/ f32 aimuprshoulder;
@@ -1180,7 +1223,11 @@ struct defaultobj {
/*0x18*/ struct model *model;
/*0x1c*/ f32 realrot[9];
/*0x40*/ u32 hidden;
/*0x44*/ struct geo *geo;
union {
/*0x44*/ struct tiletype2 *geo2;
/*0x44*/ struct tiletype3 *geo3;
/*0x44*/ struct tiletype3 *unkgeo; // temporary, to indicate that I don't know which geo pointer is being used
};
union {
/*0x48*/ struct projectile *projectile;
/*0x48*/ struct monitorthing *monitorthing;
@@ -2688,8 +2735,8 @@ struct player {
/*0x19c0*/ f32 vv_headheight; // 172 when Jo, regardless of crouch state
/*0x19c4*/ f32 vv_eyeheight; // 159 when Jo, regardless of crouch state
/*0x19c8*/ bool haschrbody;
/*0x19cc*/ struct geo periminfo;
/*0x19e4*/ struct geo perimshoot;
/*0x19cc*/ struct tiletype3 periminfo;
/*0x19e4*/ struct tiletype3 perimshoot;
/*0x19fc*/ f32 bondprevtheta;
/*0x1a00*/ struct coord grabbedprevpos;
/*0x1a0c*/ f32 grabbedrotoffset;
@@ -5806,28 +5853,6 @@ struct mpconfigfull {
struct mpstrings strings;
};
struct tile {
/*0x00*/ u8 unk00; // 0 or 1 to enable floorcol, 2 or 3 to disable
/*0x01*/ u8 numvertices;
/*0x02*/ u16 flags;
/*0x04*/ u16 floortype;
/*0x06*/ u8 unk06;
/*0x07*/ u8 unk07;
/*0x08*/ u8 unk08;
/*0x09*/ u8 unk09;
/*0x0a*/ u8 unk0a;
/*0x0b*/ u8 unk0b;
/*0x0c*/ u16 floorcol;
};
struct tilething {
struct tile *tile;
u32 unk04;
u32 unk08;
struct prop *lift;
u32 floorroom;
};
struct movedata {
/*0x00*/ s32 canswivelgun;
/*0x04*/ s32 canmanualaim;
@@ -6888,7 +6913,7 @@ struct collisionthing {
u32 unk04;
u32 unk08;
u32 unk0c;
u32 unk10;
u32 roomnum;
};
struct escastepkeyframe {