mirror of https://github.com/n64decomp/mk64.git
96 lines
3.5 KiB
C
96 lines
3.5 KiB
C
#ifndef WAYPOINTS_H
|
|
#define WAYPOINTS_H
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 posX;
|
|
/* 0x02 */ s16 posY;
|
|
/* 0x04 */ s16 posZ;
|
|
/* 0x06 */ u16 trackSegment;
|
|
} TrackWaypoint; // size = 0x08
|
|
|
|
/**
|
|
* 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, untracked/unused)
|
|
* Its unclear how these arrays relate to each other
|
|
**/
|
|
extern TrackWaypoint *D_80164550[];
|
|
extern TrackWaypoint *D_80164560[];
|
|
extern TrackWaypoint *D_80164570[];
|
|
|
|
/**
|
|
* Don't know what exactly these are, but like D_80164550, D_80164560, and D_80164570
|
|
* 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[];
|
|
// 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
|
|
* a given player is on, the specific value may change
|
|
**/
|
|
// Shadows values from gNearestWaypointByPlayerId
|
|
extern s16 D_80162FCE;
|
|
// Shadows values from gPathIndexByPlayerId
|
|
extern s32 D_80163448;
|
|
// Shadows values from gPathIndexByPlayerId, but is an array
|
|
extern u16 D_80165310[];
|
|
// Shadows values from gNearestWaypointByPlayerId, but is an array
|
|
extern s16 D_80165320[];
|
|
// Don't think this really belongs with waypoint stuff, but don't know where else to put it
|
|
extern s16 D_80165330[];
|
|
// Shadows values from D_80164560
|
|
extern TrackWaypoint *D_801631D0;
|
|
// Shadows values from D_80164570
|
|
extern TrackWaypoint *D_801631D4;
|
|
// Shadows values from D_80164580
|
|
extern s16 *D_801631D8;
|
|
// Shadows values from D_80164590
|
|
extern u16 *D_801631DC;
|
|
// Shadowd values from gWaypointCountByPathIndex
|
|
extern u16 D_80164430;
|
|
// Shadows values from D_80164550
|
|
extern TrackWaypoint *D_80164490;
|
|
// Shadows values from D_801645A0
|
|
extern s16 *D_801645E0;
|
|
|
|
|
|
extern u16 gNearestWaypointByPlayerId[]; // D_80164438
|
|
// Total waypoints passed by playerId?
|
|
extern s32 D_80164450[];
|
|
extern u16 gPathIndexByPlayerId[]; // D_801645B0
|
|
extern u16 gWaypointCountByPathIndex[]; // D_801645C8
|
|
// These values are only used when the camera is in "cinematic" mode
|
|
extern s16 gNearestWaypointByCameraId[]; // D_80164668
|
|
|
|
/**
|
|
* Stuff that may not be directly related to waypoints, but are only referenced in code_80005FD0.
|
|
* So they are at least waypoint adjacent.
|
|
**/
|
|
|
|
// Tracks something on a per-player basis, no idea what though
|
|
extern f32 D_80163068[];
|
|
// Track segment by playerId, although it curiously does NOT track values for human players
|
|
// So, in 2 Player Grand Prix, the first 2 entries are always 0
|
|
extern u16 D_80163318[];
|
|
// Seems to be a per-path overcount of the waypoint count
|
|
extern s32 D_80163368[];
|
|
// Seemingly the Z position of the 1st waypoint in the 0th path?
|
|
extern f32 D_8016344C;
|
|
// These seem to track whether a player has entered or exited the "unknown" zone in yoshi's valley
|
|
// See func_80009000 and func_800090F0
|
|
// Is 1 when a player is in the "unknown" zone in yoshi's valley
|
|
extern s16 D_80163490[];
|
|
// Is 1 when a player leaves the "unknown" zone in yoshi's valley
|
|
extern s16 D_801634A8[];
|
|
// Tracks whether a given player is in the "unknown" zone of yoshi's valley
|
|
extern s16 D_801644F8[];
|
|
|
|
#endif
|