Files
Diddy-Kong-Racing/include/structs.h
T

428 lines
10 KiB
C

#ifndef _STRUCTS_H_
#define _STRUCTS_H_
/* Note: Structs are not complete, take them with a grain of salt. */
#include "types.h"
/* Size: 0x20 bytes */
typedef struct MenuElement {
/* 0x00 */ s16 unk0; // This is something related to position, not sure what though.
/* 0x02 */ s16 unk2; // This is something related to position, not sure what though.
/* 0x04 */ s16 screenX;
/* 0x06 */ s16 screenY;
/* 0x08 */ s16 unk6;
/* 0x0A */ s16 unk8;
/* 0x0C */ u8 filterRed;
/* 0x0D */ u8 filterGreen;
/* 0x0E */ u8 filterBlue;
/* 0x0F */ u8 filterAlpha; // 0 = no filter color, 0xFF = full color.
/* 0x10 */ u8 opacity;
/* 0x11 */ u8 textType;
/* 0x12 */ u8 textAlignFlags;
/* 0x13 */ u8 unk13; // Source type? 0 = ascii text, 7 = texture?
union {
/* 0x14 */ char* asciiText; // Pointer to ascii text to be displayed on the screen.
/* 0x14 */ u32* texture; // Pointer to texture to be displayed on the screen.
} source;
/* 0x18 */ u16 backgroundRed;
/* 0x1A */ u16 backgroundGreen;
/* 0x1C */ u16 backgroundBlue;
/* 0x1E */ u16 backgroundAlpha; // 0x0000 = No background, 0x00FF = full background color.
} MenuElement;
/* Size: 0x18 bytes */
typedef struct dkr_racer_t {
/* 0x00 */ u32 trophy_points;
/* 0x04 */ u8 best_times;
/* 0x05 */ u8 character;
/* 0x06 */ u8 starting_position;
/* 0x07 */ char unk7;
/* 0x08 */ u16 placements[4];
/* 0x10 */ u16 course_time;
/* 0x12 */ u16 lap_times[3];
} dkr_racer_t;
/* Unknown Size */
typedef struct Settings4C {
u8 unk0;
u8 unk1;
u8 pad2[0xD];
u8 unkF;
} Settings4C;
/* Size: 0x840 bytes */
typedef struct Settings {
/* 0x0000 */ void *balloonsPtr;
/* 0x0004 */ s32 *courseFlagsPtr;
/* 0x0008 */ u16 keys;
/* 0x000A */ char unkA[2];
/* 0x000C */ u16 bosses;
/* 0x000E */ u16 trophies;
/* 0x0010 */ u32 cutsceneFlags;
/* 0x0014 */ u16 tajFlags;
/* 0x0016 */ u8 ttAmulet;
/* 0x0017 */ u8 wizpigAmulet;
/* 0x0018 */ void *flapInitialsPtr[3];
/* 0x0024 */ void *flapTimesPtr[3];
/* 0x0030 */ void *courseInitialsPtr[3];
/* 0x003C */ void *courseTimesPtr[3];
/* 0x0048 */ u8 worldId;
/* 0x0049 */ u8 courseId;
/* 0x004A */ u8 playerCount;
/* 0x004B */ u8 newGame;
/* 0x004C */ Settings4C *unk4C;
/* 0x0050 */ u32 filename;
/* 0x0054 */ dkr_racer_t racers[8];
/* 0x0114 */ u8 timeTrialRacer;
/* 0x0115 */ char unk0115[2];
/* 0x0117 */ u8 display_times;
/* 0x0118 */ u32 courseFlags[65];
/* 0x021C */ u16 balloons;
/* 0x021E */ u16 worldBalloons[5];
/* 0x0228 */ u16 flapInitials[3][65];
/* 0x03AE */ u16 flapTimes[3][65];
/* 0x0534 */ u16 courseInitials[3][65];
/* 0x06BA */ u16 courseTimes[3][65];
} Settings;
/* Size: 0xC8 bytes */
typedef struct {
/* 0x00 */ u8 world;
/* 0x01 */ u8 unk1;
/* 0x02 */ u8 unk2;
/* 0x03 */ u8 unk3;
/* 0x04 */ u8 unk4;
/* 0x05 */ u8 unk5;
/* 0x06 */ u8 unk6;
/* 0x07 */ u8 unk7;
/* 0x08 */ f32 course_height;
u32 unkC[10]; // Not an array. Unknown values.
/* 0x34 */ u16 geometry;
/* 0x36 */ u16 collectables; // Objects such as bananas, balloons, etc.
/* 0x38 */ u16 skybox;
/* 0x3A */ u16 unk3A;
/* 0x3C */ u16 unk3C;
/* 0x3E */ u16 r; // Fog related
/* 0x40 */ u16 g;
/* 0x42 */ u16 b;
/* 0x4B */ u8 laps;
/* 0x4C */ u8 race_type;
/* 0x4D */ u8 vehicle;
/* 0x4E */ u8 available_vehicles;
/* 0x4F */ u8 unk4F;
/* 0x50 */ u8 unk50;
/* 0x51 */ u8 unk51;
/* 0x52 */ u8 music;
/* 0x53 */ u8 unk53;
/* 0x54 */ u16 instruments;
u32 unk58[14]; // Not an array. Unknown values.
// Weather related?
/* 0x90 */ u16 weather_enable;
/* 0x92 */ u16 unk92;
/* 0x94 */ u8 unk94;
/* 0x95 */ u8 unk95;
/* 0x96 */ u16 unk96;
/* 0x98 */ u16 unk98;
u32 unk9C[11]; // Not an array. Unknown values.
} dkr_level_header_t;
/* Size: 0x50 bytes */
typedef struct {
/* 0x00 */ u32 unk00;
/* 0x04 */ u32 unk04;
/* 0x08 */ u32 unk08;
/* 0x0C */ f32 unk0C;
/* 0x10 */ u32 unk10;
/* 0x14 */ u32 unk14;
/* 0x18 */ f32 unk18;
/* 0x1C */ u32 unk1C;
/* 0x20 */ u32 unk20;
/* 0x24 */ u32 unk24;
/* 0x28 */ u32 unk28;
/* 0x2C */ u32 unk2C;
/* 0x30 */ u32 unk30;
/* 0x34 */ u32 unk34;
/* 0x38 */ u32 unk38;
/* 0x3C */ u32 unk3C;
/* 0x40 */ f32 unk40;
/* 0x44 */ f32 unk44;
/* 0x48 */ f32 unk48;
/* 0x4C */ u32 unk4C;
} dkr_wave_t;
/* Size: 0x0630 bytes */
typedef struct {
/* 0x0000 */ u16 y_rotation;
/* 0x0002 */ u16 x_rotation;
/* 0x0004 */ u16 z_rotation;
/* 0x0006 */ u16 unk6;
/* 0x0008 */ f32 scale;
/* 0x000C */ f32 x_position;
/* 0x0010 */ f32 y_position;
/* 0x0014 */ f32 z_position;
/* 0x0018 */ u16 unk18;
/* 0x001A */ u16 unk1A;
/* 0x001C */ f32 x_velocity;
/* 0x0020 */ f32 y_velocity;
/* 0x0024 */ f32 z_velocity;
/* 0x0028 */ u32 unk28;
/* 0x002C */ u16 unk2C;
/* 0x002E */ u16 unk2E;
/* 0x0030 */ f32 unk30;
/* 0x0034 */ f32 unk34;
/* 0x0038 */ u8 unk38;
/* 0x0039 */ u8 unk39;
/* 0x003A */ u8 unk3A;
/* 0x003B */ u8 unk3B;
/* 0x003C */ u8 unk3C;
/* 0x003D */ u8 unk3D;
/* 0x003E */ u8 unk3E;
/* 0x003F */ u8 unk3F;
/* 0x0040 */ void *descriptor_ptr;
/* 0x0044 */ void *unk44;
/* 0x0048 */ u16 unk48;
/* 0x004A */ u16 unk4A;
/* 0x004C */ void *unk4C; //player + 0x318
/* 0x0050 */ void *unk50; //player + 0x2F4
/* 0x0054 */ void *unk54; //player + 0x2C0
/* 0x0058 */ void *unk58; //player + 0x304
/* 0x005C */ u32 unk5C;
/* 0x0060 */ void *unk60; //player + 0x340
/* 0x0064 */ void *unk64; //player + 0x98
/* 0x0068 */ void *unk68; //player + 0x80
/* 0x006C */ void *unk6C; //player + 0x370
/* 0x0070 */ u32 unk70;
/* 0x0074 */ u32 unk74;
/* 0x0078 */ u32 unk78;
/* 0x007C */ u32 unk7C;
/* 0x0080 */ void *unk80;
/* 0x0084 */ u32 unk84;
/* 0x0088 */ u32 unk88;
/* 0x008C */ u32 unk8C;
/* 0x0090 */ u32 unk90;
/* 0x0094 */ u32 unk94;
/* 0x0098 */ s16 playerIndex; // -1 = AI Controlled, 0 to 3 = Player controlled
/* 0x009A */ u8 unk9A;
/* 0x009B */ u8 characterId; // Affects minimap color, horn, voice, etc.
/* 0x009C */ u32 unk9C;
/* 0x00A0 */ f32 unkA0;
/* 0x00A4 */ u32 unkA4;
/* 0x00A8 */ u32 unkA8;
/* 0x00AC */ u32 unkAC;
/* 0x00B0 */ u32 unkB0;
/* 0x00B4 */ u32 unkB4;
/* 0x00B8 */ u32 unkB8;
/* 0x00BC */ u32 unkBC;
/* 0x00C0 */ u32 unkc0;
/* 0x00C4 */ f32 velocity;
/* 0x00C8 */ f32 lateral_velocity;
u32 unkCC[10]; // Not an array. Unknown values.
/* 0x00F4 */ f32 prev_x_position;
/* 0x00F8 */ f32 prev_y_position;
/* 0x00FC */ f32 prev_z_position;
/* 0x0100 */ u32 unk100;
/* 0x0104 */ u32 unk104;
/* 0x0108 */ u32 unk108;
/* 0x010C */ u32 unk10C;
/* 0x0110 */ f32 unk110;
/* 0x0114 */ f32 unk114;
/* 0x0118 */ f32 unk118;
/* 0x011C */ f32 unk11C;
/* 0x0120 */ u32 unk120;
/* 0x0124 */ f32 stretch_height;
/* 0x0128 */ f32 stretch_height_cap;
/* 0x012C */ f32 unk12C;
/* 0x0130 */ u32 unk130;
/* 0x0134 */ f32 pitch;
/* 0x0138 */ u32 unk138;
/* 0x013C */ u32 unk13C;
/* 0x0140 */ f32 checkpoint_distance;
/* 0x0144 */ u32 unk144;
/* 0x0148 */ f32 unk148;
/* 0x014C */ f32 throttle;
/* 0x0150 */ f32 brake;
/* 0x0154 */ u32 unk154;
/* 0x0158 */ u32 unk158;
/* 0x015C */ u32 unk15C;
/* 0x0160 */ f32 unk160;
/* 0x0164 */ u32 unk164;
/* 0x0168 */ u32 unk168;
/* 0x016C */ u32 unk16C;
/* 0x0170 */ f32 unk170;
/* 0x0174 */ f32 unk174;
/* 0x0178 */ f32 unk178;
/* 0x017C */ f32 unk17C;
/* 0x0180 */ f32 unk180;
/* 0x0184 */ f32 unk184;
/* 0x0188 */ f32 unk188;
/* 0x018C */ f32 unk18C;
/* 0x0190 */ f32 unk190;
/* 0x0194 */ f32 unk194;
/* 0x0198 */ f32 unk198;
/* 0x019C */ f32 unk19C;
u32 unk1A0[8]; // Not an array. Unknown values.
/* 0x01C0 */ u32 lap_times[3];
/* 0x01CC */ u32 unk1CC;
/* 0x01D0 */ u32 unk1D0;
/* 0x01D4 */ u32 unk1D4;
/* 0x01D8 */ u32 unk1D8;
/* 0x01DC */ void *held_obj_ptr;
u32 unk1E0[10]; // Not an array. Unknown values.
/* 0x0208 */ u16 unk208;
/* 0x020A */ u8 balloon_type;
/* 0x020B */ u8 balloon_quantity;
/* 0x020C */ u8 balloon_level;
/* 0x020D */ u8 unk20D;
/* 0x020E */ u8 unk20E;
/* 0x020F */ u8 unk20F;
/* 0x0210 */ u32 unk210;
/* 0x0214 */ u32 unk214;
/* 0x0218 */ u32 unk218;
/* 0x021A */ u16 unk21A;
/* 0x021B */ u8 unk21B;
/* 0x021D */ s8 bananas;
/* 0x021E */ u8 unk21E;
/* 0x0270 */ u8 unk270;
/* 0x0271 */ u8 unk271;
/* 0x0272 */ u8 unk272;
/* 0x0273 */ u8 spinout_timer;
/* 0x0274 */ u8 wheel_surfaces[4];
/* 0x0278 */ u32 unk278;
/* 0x027C */ u16 unk27C;
/* 0x027E */ u8 drift_direction;
/* 0x027F */ u8 unk27F;
/* 0x0280 */ u32 unk280;
/* 0x0284 */ u8 unk284;
/* 0x0285 */ s8 squish_timer;
/* 0x0286 */ u8 unk286;
/* 0x0287 */ u8 boost_sound;
/* 0x0288 */ u32 unk288;
/* 0x028C */ u16 unk28C;
/* 0x028E */ u8 unk28E;
/* 0x028F */ u8 transparency;
/* 0x0290 */ u8 indicator_type;
/* 0x0291 */ s8 indicator_timer;
/* 0x0292 */ u16 unk292;
u32 unk294[11]; // Not an array. Unknown values.
/* 0x02C0 */ f32 unk2C0;
/* 0x02C4 */ u8 red;
/* 0x02C5 */ u8 blue;
/* 0x02C6 */ u8 green;
/* 0x02C7 */ u8 alpha;
/* 0x02C8 */ u32 unk2C8;
/* 0x02CC */ u32 unk2CC;
/* 0x02D0 */ u32 unk2D0;
/* 0x02D4 */ u32 unk2D4;
/* 0x02D8 */ u32 unk2D8;
/* 0x02DC */ u16 unk2DC;
/* 0x02DE */ u16 unk2DE;
/* 0x02E0 */ u16 unk2E0;
/* 0x02E2 */ u16 unk2E2;
/* 0x02E4 */ u32 unk2E4;
/* 0x02E8 */ f32 unk2E8;
/* 0x02EC */ f32 unk2EC;
/* 0x02F0 */ u32 unk2F0;
/* 0x02F4 */ f32 shadow_scale;
/* 0x02F8 */ void *unk2F8;
/* 0x02FC */ u16 unk2FC;
/* 0x02FE */ u16 unk2FE;
/* 0x0300 */ u32 unk300;
/* 0x0304 */ f32 unk0304;
/* 0x0308 */ u32 unk308;
/* 0x030C */ u32 unk30C;
/* 0x0310 */ u32 unk310;
/* 0x0314 */ u32 unk314;
/* 0x0318 */ void *nearest_obj_ptr;
/* 0x031C */ f32 unk31C;
/* 0x0320 */ f32 unk320;
/* 0x0324 */ f32 unk324;
/* 0x0328 */ u32 unk328;
/* 0x032C */ u32 unk32C;
/* 0x0330 */ u32 unk330;
/* 0x0334 */ u32 unk334;
/* 0x0338 */ u32 unk338;
/* 0x033C */ u32 unk33C;
/* 0x0340 */ u32 unk340;
/* 0x0344 */ void *unk344;
/* 0x0348 */ void *unk348;
/* 0x034C */ void *unk34C;
/* 0x0350 */ void *unk350;
/* 0x0354 */ u32 unk354;
/* 0x0358 */ u32 unk358;
/* 0x035C */ u32 unk35C;
/* 0x0360 */ u32 unk360;
/* 0x0364 */ u32 unk364;
/* 0x0368 */ u32 unk368;
/* 0x036C */ u32 unk36C;
/* 0x0370 */ void *unk370;
/* 0x0374 */ s32 unk374;
u32 unk378[174]; // Not an array. Unknown values.
} dkr_player_t;
#endif