From 1f1744e1bdb2b59248e78574c4473ac82ce13554 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Wed, 1 Jul 2020 01:50:12 -0500 Subject: [PATCH] Added struct.h --- include/structs.h | 393 ++++++++++++++++++++++++++++++++++++++++++++++ include/types.h | 5 + 2 files changed, 398 insertions(+) create mode 100644 include/structs.h diff --git a/include/structs.h b/include/structs.h new file mode 100644 index 00000000..05e7c6bc --- /dev/null +++ b/include/structs.h @@ -0,0 +1,393 @@ +#ifndef _STRUCTS_H_ +#define _STRUCTS_H_ + +/* Note: Structs are not complete, take them with a grain of salt. */ + +#include "types.h" + +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]; + /* 0x14 */ u32 unk14; + /* Size: 0x18 */ +} dkr_racer_t; + +typedef struct { + /* 0x0000 */ void *balloons_ptr; + /* 0x0004 */ void *course_flags_ptr; + /* 0x0008 */ u16 keys; + /* 0x000A */ char unk000A[2]; + /* 0x000C */ u16 bosses; + /* 0x000E */ u16 trophies; + /* 0x0010 */ u32 cutscene_flags; + /* 0x0014 */ u16 taj_flags; + /* 0x0016 */ u8 tt_amulet; + /* 0x0017 */ u8 wizpig_amulet; + /* 0x0018 */ void *flap_initials_ptr[3]; + /* 0x0024 */ void *flap_times_ptr[3]; + /* 0x0030 */ void *course_initials_ptr[3]; + /* 0x003C */ void *course_times_ptr[3]; + /* 0x0048 */ u8 world; + /* 0x0049 */ u8 course; + /* 0x004A */ u8 player_count; + /* 0x004B */ u8 new_game; + /* 0x004C */ void *return_course_ptr; + /* 0x0050 */ u32 filename; + /* 0x0054 */ dkr_racer_t racers[8]; + /* 0x0114 */ u8 time_trial_racer; + /* 0x0115 */ char unk0115[2]; + /* 0x0117 */ u8 display_times; + /* 0x0118 */ u32 course_flags[65]; + /* 0x021C */ u16 balloons; + /* 0x021E */ u16 world_balloons[5]; + /* 0x0228 */ u16 flap_initials[3][65]; + /* 0x03AE */ u16 flap_times[3][65]; + /* 0x0534 */ u16 course_initials[3][65]; + /* 0x06BA */ u16 course_times[3][65]; + /* Size: 0x0840 */ +} dkr_settings_t; + +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. + + /* Size: 0xC8 */ +} dkr_level_header_t; + +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; + /* Size: 0x50 */ +} dkr_wave_t; + +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 */ u16 unk98; + /* 0x009A */ u8 unk9A; + /* 0x009B */ u8 minimap_color; + /* 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. + + /* Size: 0x0630 */ +} dkr_player_t; + +#endif diff --git a/include/types.h b/include/types.h index 01ae1401..9cec5770 100644 --- a/include/types.h +++ b/include/types.h @@ -1,3 +1,6 @@ +#ifndef _TYPES_H_ +#define _TYPES_H_ + typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; @@ -12,3 +15,5 @@ typedef double f64; #ifndef NULL #define NULL 0 #endif + +#endif