mirror of
https://github.com/n64decomp/mk64
synced 2026-08-08 18:23:08 -04:00
@@ -17,6 +17,9 @@ typedef unsigned int u32;
|
||||
typedef signed long long int s64;
|
||||
typedef unsigned long long int u64;
|
||||
|
||||
typedef signed int bool;
|
||||
typedef signed char bool8;
|
||||
|
||||
typedef volatile u8 vu8;
|
||||
typedef volatile u16 vu16;
|
||||
typedef volatile u32 vu32;
|
||||
|
||||
+11
-11
@@ -245,14 +245,14 @@ struct UnkPlayerInner {
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u16 unk_000; // playerType?
|
||||
/* 0x0000 */ u16 type; // playerType?
|
||||
/* 0x0002 */ u16 unk_002;
|
||||
/* 0x0004 */ s16 currentRank;
|
||||
/* 0x0006 */ u16 unk_006;
|
||||
/* 0x0008 */ s16 lapCount;
|
||||
/* 0x000A */ char unk_00A[0x2];
|
||||
/* 0x000C */ s32 statusEffects; // Bitflag.
|
||||
/* 0x0010 */ s16 unk_010;
|
||||
/* 0x0010 */ s16 currentItemCopy; // Has no effect on what item the players has, It is just a synced copy
|
||||
/* 0x0012 */ s16 unk_012;
|
||||
/* 0x0014 */ Vec3f pos;
|
||||
/* 0x0020 */ f32 rotX;
|
||||
@@ -260,7 +260,7 @@ typedef struct {
|
||||
/* 0x0028 */ f32 rotZ;
|
||||
/* 0x002C */ Vec3s unk_02C;
|
||||
/* 0x0032 */ char unk_032[0x2];
|
||||
/* 0x0034 */ Vec3f unk_034;
|
||||
/* 0x0034 */ Vec3f velocity;
|
||||
/* 0x0040 */ s16 unk_040;
|
||||
/* 0x0042 */ s16 unk_042;
|
||||
/* 0x0044 */ s16 unk_044;
|
||||
@@ -283,7 +283,7 @@ typedef struct {
|
||||
/* 0x0090 */ f32 unk_090;
|
||||
/* 0x0094 */ f32 unk_094;
|
||||
/* 0x0098 */ f32 unk_098;
|
||||
/* 0x009C */ f32 unk_09C;
|
||||
/* 0x009C */ f32 currentSpeed;
|
||||
/* 0x00A0 */ f32 unk_0A0;
|
||||
/* 0x00A4 */ f32 unk_0A4;
|
||||
/* 0x00A8 */ s16 unk_0A8;
|
||||
@@ -295,10 +295,10 @@ typedef struct {
|
||||
/* 0x00B4 */ u16 unk_0B4;
|
||||
/* 0x00B6 */ u16 unk_0B6;
|
||||
/* 0x00B8 */ f32 unk_0B8;
|
||||
/* 0x00BC */ u32 unk_0BC;
|
||||
/* 0x00BC */ u32 effects;
|
||||
/* 0x00C0 */ s16 unk_0C0;
|
||||
/* 0x00C2 */ s16 unk_0C2;
|
||||
/* 0x00C4 */ s16 unk_0C4;
|
||||
/* 0x00C4 */ s16 slopeAccel;
|
||||
/* 0x00C6 */ s16 unk_0C6;
|
||||
/* 0x00C8 */ s16 unk_0C8;
|
||||
/* 0x00CA */ s16 unk_0CA;
|
||||
@@ -323,7 +323,7 @@ typedef struct {
|
||||
/* 0x010E */ char unk_10E[0x2];
|
||||
/* 0x0110 */ Collision unk_110;
|
||||
/* 0x0150 */ Mat3 unk_150;
|
||||
/* 0x0174 */ Mat3 unk_174;
|
||||
/* 0x0174 */ Mat3 orientationMatrix;
|
||||
/* 0x0198 */ KartBoundingBoxCorner boundingBoxCorners[4];
|
||||
/* 0x01F8 */ f32 unk_1F8;
|
||||
/* 0x01FC */ f32 unk_1FC;
|
||||
@@ -333,12 +333,12 @@ typedef struct {
|
||||
/* 0x0208 */ f32 unk_208;
|
||||
/* 0x020C */ f32 unk_20C;
|
||||
/* 0x0210 */ f32 unk_210;
|
||||
/* 0x0214 */ f32 unk_214;
|
||||
/* 0x0214 */ f32 topSpeed;
|
||||
/* 0x0218 */ f32 unk_218;
|
||||
/* 0x021C */ f32 unk_21C;
|
||||
/* 0x0220 */ s16 nearestWaypointId; // ??
|
||||
/* 0x0222 */ s16 unk_222;
|
||||
/* 0x0224 */ f32 unk_224;
|
||||
/* 0x0224 */ f32 size;
|
||||
/* 0x0228 */ s16 unk_228;
|
||||
/* 0x022A */ s16 unk_22A;
|
||||
/* 0x022C */ f32 unk_22C;
|
||||
@@ -349,8 +349,8 @@ typedef struct {
|
||||
/* 0x023A */ s16 unk_23A;
|
||||
/* 0x023C */ f32 unk_23C;
|
||||
/* 0x0240 */ s32 unk_240;
|
||||
/* 0x0244 */ u16 unk_244[4]; // [0] Active texture group
|
||||
/* 0x024C */ u16 unk_24C[4];
|
||||
/* 0x0244 */ u16 animFrameSelector[4]; // [0] Active texture group
|
||||
/* 0x024C */ u16 animGroupSelector[4];
|
||||
/* 0x0254 */ u16 characterId;
|
||||
/* 0x0256 */ u16 unk_256;
|
||||
/* 0x0258 */ UnkPlayerStruct258 unk_258[40];
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
* Racing terms:
|
||||
* Staging means aligning a racecar to the starting line.
|
||||
* Start sequence means waiting for the light to turn green.
|
||||
* Used in the Player struct's 'type' member: player->type
|
||||
*/
|
||||
|
||||
#define PLAYER_INACTIVE 0 // 0x0000
|
||||
@@ -302,4 +303,28 @@
|
||||
*/
|
||||
#define MAX_TIME 0x927C0
|
||||
|
||||
/**
|
||||
* @brief effect of player's
|
||||
* for statusEffect
|
||||
*/
|
||||
#define BOOST_EFFECT 0x200 // being boosted by trigger a mushroom or star
|
||||
#define BOO_EFFECT 0x800 // being a boo
|
||||
#define STAR_EFFECT 0x2000 // being a star
|
||||
#define HOLD_BANANA_EFFECT 0x40000 // holding a banana
|
||||
#define HIT_ROTATING_EFFECT 0x4000 // hitting a rotating object
|
||||
#define HIT_BY_ITEM_EFFECT 0x1000000 // being hit by an item
|
||||
#define REVERSE_EFFECT 0x400000 // being in the wrong direction
|
||||
#define LIGHTNING_EFFECT 0x40000000 // being hit by lightning
|
||||
|
||||
|
||||
/**
|
||||
* @brief shell state
|
||||
*
|
||||
*/
|
||||
#define SPAWN_FIRST_SHELL 0
|
||||
#define SPAWN_SECOND_SHELL 1
|
||||
#define SPAWN_THIRD_SHELL 2
|
||||
|
||||
#define GPACK_RGB888(r, g, b) (((r) << 16) | ((g) << 8) | (b))
|
||||
|
||||
#endif // DEFINES_H
|
||||
|
||||
@@ -24,12 +24,12 @@ extern f32 D_800E2528[8];
|
||||
extern f32 D_800E2548[8];
|
||||
extern f32 *D_800E2568[5];
|
||||
|
||||
extern f32 D_800E257C[8];
|
||||
extern f32 D_800E259C[8];
|
||||
extern f32 D_800E25BC[8];
|
||||
extern f32 D_800E25DC[8];
|
||||
extern f32 D_800E25FC[8];
|
||||
extern f32 *D_800E261C[5];
|
||||
extern f32 gTopSpeed50cc[8];
|
||||
extern f32 gTopSpeed100cc[8];
|
||||
extern f32 gTopSpeed150cc[8];
|
||||
extern f32 gTopSpeedExtra[8];
|
||||
extern f32 gTopSpeedBattle[8];
|
||||
extern f32 *gTopSpeedTable[5];
|
||||
|
||||
extern f32 gKartFrictionTable[8];
|
||||
extern f32 gKartGravityTable[8];
|
||||
@@ -119,7 +119,7 @@ extern f32 gKartHandlingTable[8];
|
||||
extern f32 gKartTable800E3650[8];
|
||||
extern f32 gKartTurnSpeedReductionTable0[8];
|
||||
extern f32 gKartTurnSpeedReductionTable1[8];
|
||||
extern f32 gKartTable800E36B0[8];
|
||||
extern f32 gKartTripleABoost[8];
|
||||
extern f32 gKartHopInitialVelocityTable[8];
|
||||
extern f32 gKartHopJerkTable[8];
|
||||
extern f32 D_800E3710[8];
|
||||
|
||||
+85
-9
@@ -32,19 +32,19 @@ typedef struct
|
||||
/* 0x68 */ u8 *tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
|
||||
/* 0x6C */ u8 *textureList;
|
||||
/* 0x70 */ Gfx *unk_070;
|
||||
/* 0x74 */ Vtx *unk_074; // For at least 1 object type this is meant to be a Vtx*. See func_800555BC
|
||||
/* 0x74 */ Vtx *vertex;
|
||||
/* 0x78 */ s8 unk_078[0x04];
|
||||
/* 0x7C */ Vec4s *unk_07C;
|
||||
/* 0x80 */ Vec4s *unk_080; // unk_080[][4]?
|
||||
/* 0x84 */ s16 unk_084[0xA];
|
||||
/* 0x98 */ u16 unk_098;
|
||||
/* 0x98 */ u16 timer;
|
||||
/* 0x9A */ u16 unk_09A;
|
||||
/* 0x9C */ s16 unk_09C;
|
||||
/* 0x9E */ s16 unk_09E;
|
||||
/* 0xA0 */ s16 unk_0A0;
|
||||
/* 0xA2 */ s16 unk_0A2;
|
||||
/* 0xA4 */ s16 unk_0A4;
|
||||
/* 0xA6 */ s16 unk_0A6; // Usually a state tracker
|
||||
/* 0xA4 */ s16 type;
|
||||
/* 0xA6 */ s16 state;
|
||||
/* 0xA8 */ s16 unk_0A8;
|
||||
/* 0xAA */ s16 unk_0AA;
|
||||
/* 0xAC */ s16 unk_0AC;
|
||||
@@ -64,7 +64,7 @@ typedef struct
|
||||
/* 0xCF */ s8 unk_0CF;
|
||||
/* 0xD0 */ s8 unk_0D0;
|
||||
/* 0xD1 */ s8 unk_0D1;
|
||||
/* 0xD2 */ s8 unk_0D2;
|
||||
/* 0xD2 */ s8 itemDisplay;
|
||||
/* 0xD3 */ s8 unk_0D3;
|
||||
/* 0xD4 */ s8 unk_0D4;
|
||||
/* 0xD5 */ u8 unk_0D5;
|
||||
@@ -78,17 +78,93 @@ typedef struct
|
||||
/* 0xDD */ u8 unk_0DD;
|
||||
/* 0xDE */ s8 unk_0DE;
|
||||
/* 0xDF */ u8 unk_0DF;
|
||||
} struct_80165C18_entry; // size = 0xE0
|
||||
} Objects; // size = 0xE0
|
||||
|
||||
// This is the object list
|
||||
extern struct_80165C18_entry D_80165C18[];
|
||||
extern Objects gObjectList[];
|
||||
|
||||
// This are other lists of indices in D_80165C18.
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ f32 sizeScaling;
|
||||
/* 0x04 */ Vec3f pos;
|
||||
/* 0x10 */ Vec3f unk_010;
|
||||
/* 0x1C */ Vec3f unk_01C;
|
||||
/* 0x28 */ Vec3f unk_028;
|
||||
/* 0x34 */ f32 unk_034;
|
||||
/* 0x38 */ Vec3f unk_038;
|
||||
/* 0x44 */ f32 unk_044;
|
||||
/* 0x48 */ s32 unk_048;
|
||||
/* 0x4C */ s32 unk_04C;
|
||||
/* 0x50 */ s32 unk_050;
|
||||
/* 0x54 */ s32 unk_054;
|
||||
/* 0x58 */ s32 unk_058;
|
||||
/* 0x5C */ s32 unk_05C;
|
||||
/* 0x60 */ u8 *activeTLUT;
|
||||
/* 0x64 */ u8 *activeTexture;
|
||||
/**
|
||||
* "list" is something of a misnomer for the names here
|
||||
* they can be pointers to just 1 tlut/texture, but it is common for one or the other
|
||||
* to be a pointer to an array of tluts/textures.
|
||||
**/
|
||||
/* 0x68 */ u8 *tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
|
||||
/* 0x6C */ u8 *textureList;
|
||||
/* 0x70 */ Gfx *unk_070;
|
||||
/* 0x74 */ Vtx *vertex;
|
||||
/* 0x78 */ s8 unk_078[0x04];
|
||||
/* 0x7C */ Vec4s *unk_07C;
|
||||
/* 0x80 */ Vec4s *unk_080; // unk_080[][4]?
|
||||
/* 0x84 */ s16 unk_084[0xA];
|
||||
/* 0x98 */ u16 goldenMushroomTimer;
|
||||
/* 0x9A */ u16 unk_09A;
|
||||
/* 0x9C */ s16 unk_09C;
|
||||
/* 0x9E */ s16 unk_09E;
|
||||
/* 0xA0 */ s16 unk_0A0;
|
||||
/* 0xA2 */ s16 unk_0A2;
|
||||
/* 0xA4 */ s16 currentItem;
|
||||
/* 0xA6 */ s16 itemDisplayState; // Usually a state tracker
|
||||
/* 0xA8 */ s16 unk_0A8;
|
||||
/* 0xAA */ s16 unk_0AA;
|
||||
/* 0xAC */ s16 unk_0AC;
|
||||
/* 0xAE */ s16 unk_0AE;
|
||||
/* 0xB0 */ s16 unk_0B0;
|
||||
/* 0xB2 */ Vec3su unk_0B2; // rotation, I think
|
||||
/* 0xB8 */ Vec3su unk_0B8;
|
||||
/* 0xBE */ Vec3su unk_0BE;
|
||||
/* 0xC4 */ u16 unk_0C4;
|
||||
/* 0xC6 */ u16 unk_0C6;
|
||||
/* 0xC8 */ u16 unk_0C8;
|
||||
/* 0xCA */ s8 unk_0CA;
|
||||
/* 0xCB */ s8 unk_0CB;
|
||||
/* 0xCC */ s8 unk_0CC;
|
||||
/* 0xCD */ s8 unk_0CD;
|
||||
/* 0xCE */ s8 unk_0CE;
|
||||
/* 0xCF */ s8 unk_0CF;
|
||||
/* 0xD0 */ s8 unk_0D0;
|
||||
/* 0xD1 */ s8 unk_0D1;
|
||||
/* 0xD2 */ s8 itemDisplay;
|
||||
/* 0xD3 */ s8 unk_0D3;
|
||||
/* 0xD4 */ s8 unk_0D4;
|
||||
/* 0xD5 */ u8 unk_0D5;
|
||||
/* 0xD6 */ u8 unk_0D6;
|
||||
/* 0xD7 */ u8 unk_0D7;
|
||||
/* 0xD8 */ u8 unk_0D8;
|
||||
/* 0xD9 */ u8 textureWidth;
|
||||
/* 0xDA */ u8 textureHeight;
|
||||
/* 0xDB */ u8 unk_0DB;
|
||||
/* 0xDC */ u8 unk_0DC;
|
||||
/* 0xDD */ u8 unk_0DD;
|
||||
/* 0xDE */ s8 unk_0DE;
|
||||
/* 0xDF */ u8 unk_0DF;
|
||||
} ItemWindowObjects; // size = 0xE0
|
||||
|
||||
// This are other lists of indices in gObjectList.
|
||||
/**
|
||||
* Lakitu?
|
||||
**/
|
||||
extern s32 D_80183DB8[];
|
||||
|
||||
#define DELETED_OBJECT_ID -1
|
||||
|
||||
// Appears to be a list of object list indices for the Item Window part of the HUD
|
||||
extern s32 gItemWindowObjectByPlayerId[];
|
||||
|
||||
@@ -105,7 +181,7 @@ extern s32 D_8018D3C0;
|
||||
extern Collision D_8018C0B0[];
|
||||
|
||||
/**
|
||||
* D_80183EA0, D_80183F28, D_8018BFA8, and D_8018C030 are all lists of indices in D_80165C18.
|
||||
* D_80183EA0, D_80183F28, D_8018BFA8, and D_8018C030 are all lists of indices in gObjectList.
|
||||
* func_80070190 initializes them in such a way that the indicies in each list are not adjacent.
|
||||
* First D_80183EA0 gets an unused index, then D_80183F28, then D_8018BFA8, then D_8018C030, and then it loops.
|
||||
*
|
||||
|
||||
+2
-1
@@ -12,7 +12,8 @@ typedef struct {
|
||||
u8 records[6][3];
|
||||
// It's unknown what these bytes are used for
|
||||
// Byte 1 might be an indicator that there is a ghost available for that course
|
||||
u8 unknownBytes[6];
|
||||
u8 unknownBytes[5];
|
||||
u8 checksum;
|
||||
} CourseTimeTrialRecords; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
|
||||
+2
-2
@@ -75,7 +75,7 @@ extern s16 D_80165300[];
|
||||
extern s32 D_80165400[];
|
||||
extern s32 D_80165420[];
|
||||
extern s32 D_80165440[];
|
||||
extern s32 D_80165460[];
|
||||
extern bool gIsPlayerTripleAButtonCombo[];
|
||||
extern s32 D_80165480[];
|
||||
extern s32 D_801654A0[];
|
||||
extern s32 D_801654C0[];
|
||||
@@ -96,7 +96,7 @@ extern s16 D_8016557E;
|
||||
extern s16 D_80165580;
|
||||
extern s16 D_80165582;
|
||||
|
||||
extern s8 D_801657E8;
|
||||
extern bool8 D_801657E8;
|
||||
|
||||
extern s8 D_801658FE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user