document waypoint and more

This commit is contained in:
coco875
2024-12-20 04:23:37 +01:00
parent 59c798fe02
commit 5e6eb4fbcc
15 changed files with 414 additions and 381 deletions
+3 -3
View File
@@ -18,9 +18,9 @@ typedef struct {
} TrackSections;
struct _struct_gCoursePathSizes_0x10 {
/* 0x00 */ u16 unk0;
/* 0x02 */ u16 unk2;
/* 0x04 */ u16 unk4;
/* 0x00 */ u16 numWaypoint;
/* 0x02 */ u16 numInnerWaypoint;
/* 0x04 */ u16 numOuterWaypoint;
/* 0x06 */ u16 unk6;
/* 0x08 */ u16 unk8;
/* 0x0A */ char padA[6];
+1
View File
@@ -325,6 +325,7 @@ enum DIRECTION { NORTH, EAST, SOUTH, WEST };
#define STAR_EFFECT 0x200 // being a star
#define BOOST_EFFECT 0x2000 // being boosted by trigger a mushroom
#define BOOST_RAMP_ASPHALT_EFFECT 0x100000 // being boosted by a boost pad
#define REVERSE_EFFECT 0x400000 // being in reverse of the course
#define HIT_BY_ITEM_EFFECT 0x2000000 // being hit by an item
#define HIT_EFFECT 0x4000000 // hitting an object
#define LIGHTNING_EFFECT 0x40000000 // being hit by lightning
+13 -13
View File
@@ -12,46 +12,46 @@ typedef struct {
/**
* These are per-path arrays that contain some information relating to waypoints
* The arrays in D_80164550 contain X/Y/Z and track segment information
* The arrays in D_80164560 and D_80164570 track some other X/Y/Z, but the track segment is always 0 (so,
* The arrays in gTrackWaypoints contain X/Y/Z and track segment information
* The arrays in gTrackInnerPath and gTrackOuterPath track some other X/Y/Z, but the track segment is always 0 (so,
*untracked/unused) Its unclear how these arrays relate to each other
**/
extern TrackWaypoint* D_80164550[];
extern TrackWaypoint* D_80164560[];
extern TrackWaypoint* D_80164570[];
extern TrackWaypoint* gTrackWaypoints[];
extern TrackWaypoint* gTrackInnerPath[];
extern TrackWaypoint* gTrackOuterPath[];
/**
* Don't know what exactly these are, but like D_80164550, D_80164560, and D_80164570
* Don't know what exactly these are, but like gTrackWaypoints, gTrackInnerPath, and gTrackOuterPath
* they track something about the waypoints on a per-path basis
**/
// Waypoint types?
extern s16* D_80164580[];
// Based on func_80010DBC this may be angles between waypoints
// D_80164590[i] = atan2(waypoint_i, waypoint_i+1)?
extern s16* D_80164590[];
// gWaypointExpectedRotation[i] = atan2(waypoint_i, waypoint_i+1)?
extern s16* gWaypointExpectedRotation[];
// No idea. Adjacency list?
extern s16* D_801645A0[];
/**
* Certain parts of the waypoint logic will copy some path/player specific data to a temporary variable.
* For example: D_80164490 is always a value from D_80164550. Depending on which path
* For example: D_80164490 is always a value from gTrackWaypoints. Depending on which path
* a given player is on, the specific value may change
**/
// Shadows values from gNearestWaypointByPlayerId
extern s16 sSomeNearestWaypoint;
// Shadows values from gPathIndexByPlayerId
extern s32 D_80163448;
// Shadows values from D_80164560
// Shadows values from gTrackInnerPath
extern TrackWaypoint* D_801631D0;
// Shadows values from D_80164570
// Shadows values from gTrackOuterPath
extern TrackWaypoint* D_801631D4;
// Shadows values from D_80164580
extern s16* D_801631D8;
// Shadows values from D_80164590
// Shadows values from gWaypointExpectedRotation
extern s16* D_801631DC;
// Shadowd values from gWaypointCountByPathIndex
extern u16 D_80164430;
// Shadows values from D_80164550
// Shadows values from gTrackWaypoints
extern TrackWaypoint* D_80164490;
// Shadows values from D_801645A0
extern s16* D_801645E0;