mirror of https://github.com/n64decomp/mk64.git
279 lines
6.1 KiB
C
279 lines
6.1 KiB
C
#ifndef TYPES_H
|
|
#define TYPES_H
|
|
|
|
#include <ultra64.h>
|
|
#include <common_structs.h>
|
|
#include "camera.h"
|
|
|
|
typedef f32 Mat4[4][4];
|
|
typedef f32 Mat3[3][3];
|
|
|
|
enum SpTaskState {
|
|
SPTASK_STATE_NOT_STARTED,
|
|
SPTASK_STATE_RUNNING,
|
|
SPTASK_STATE_INTERRUPTED,
|
|
SPTASK_STATE_FINISHED,
|
|
SPTASK_STATE_FINISHED_DP
|
|
};
|
|
|
|
struct SPTask
|
|
{
|
|
/*0x00*/ OSTask task;
|
|
/*0x40*/ OSMesgQueue *msgqueue;
|
|
/*0x44*/ OSMesg msg;
|
|
/*0x48*/ enum SpTaskState state;
|
|
}; // size = 0x4C, align = 0x8
|
|
|
|
struct VblankHandler
|
|
{
|
|
OSMesgQueue *queue;
|
|
OSMesg msg;
|
|
};
|
|
|
|
struct D_80150158 {
|
|
s16 unk0;
|
|
s32 unk4;
|
|
s32 unk8;
|
|
s32 unkC;
|
|
};
|
|
|
|
struct Controller {
|
|
s16 rawStickX;
|
|
s16 rawStickY;
|
|
u16 button; // HeldButton
|
|
u16 buttonPressed; // OnTriggered
|
|
u16 buttonDepressed; // OffTriggered
|
|
u16 stickDirection;
|
|
u16 stickPressed; // OffTriggered
|
|
u16 stickDepressed; // OnTriggered
|
|
};
|
|
|
|
struct UnkStruct_800DC5EC {
|
|
struct Controller *controllers; // gControllers ptr 800F6910
|
|
Camera *camera; // Player camera ptr
|
|
Player *player; // Player ptr 800F6990
|
|
s32 unkC; // unk struct?
|
|
Vp viewport;
|
|
s32 pad[2];
|
|
u32 cameraHeight;
|
|
s16 screenWidth;
|
|
s16 screenHeight;
|
|
s16 screenStartX;
|
|
s16 screenStartY;
|
|
s16 unk3C;
|
|
s16 playerDirection;
|
|
s16 pathCounter;
|
|
s16 unk42;
|
|
s32 pad2;
|
|
};
|
|
|
|
struct UnkStruct_80280658 {
|
|
s32 unk0;
|
|
s16 unk4;
|
|
s16 unk6;
|
|
s8 unk8;
|
|
s8 unk9;
|
|
s16 unkA;
|
|
s16 unkC;
|
|
s16 unkE;
|
|
f32 unk10;
|
|
f32 unk14;
|
|
f32 unk18;
|
|
f32 unk1C;
|
|
f32 unk20;
|
|
f32 unk24;
|
|
struct UnkStruct_80280658_2 *unk28;
|
|
s32 unk2C;
|
|
s32 unk30;
|
|
f32 unk34;
|
|
f32 unk38;
|
|
s32 unk3C;
|
|
s32 unk40;
|
|
s32 unk44;
|
|
s32 unk48;
|
|
};
|
|
|
|
struct UnkStruct_80280658_2 {
|
|
s16 unk0;
|
|
s16 unk2;
|
|
s16 unk4;
|
|
s16 unk6;
|
|
s8 unk8;
|
|
s8 unk9;
|
|
s8 unkA;
|
|
f32 unkC;
|
|
};
|
|
|
|
struct UnkStruct_8028088C {
|
|
s32 unk0;
|
|
s16 unk4;
|
|
s16 unk6;
|
|
s8 unk8;
|
|
s8 unk9;
|
|
s16 unkA;
|
|
s16 unkC;
|
|
s16 unkE;
|
|
f32 unk10;
|
|
f32 unk14;
|
|
f32 unk18;
|
|
f32 unk1C;
|
|
f32 unk20;
|
|
f32 unk24;
|
|
struct UnkStruct_80280658_2 *unk28;
|
|
s16 unk2C;
|
|
s16 unk2E;
|
|
s16 unk30;
|
|
s16 unk32;
|
|
s16 unk34;
|
|
s16 unk36;
|
|
s32 unk38;
|
|
s32 unk3C;
|
|
};
|
|
|
|
// Camera path struct? Or something like that. For GP race won scene?
|
|
struct UnkStruct_80287500 {
|
|
Vec3f unk0; // xyz coordinates?
|
|
f32 unkC;
|
|
f32 unk10;
|
|
f32 unk14; // rotation?
|
|
s32 unk18;
|
|
s32 unk1C;
|
|
f32 unk20;
|
|
f32 unk24;
|
|
f32 unk28;
|
|
f32 unk2C;
|
|
f32 unk30;
|
|
f32 unk34;
|
|
s32 unk38;
|
|
};
|
|
|
|
struct UnkStruct_800DDB40 {
|
|
u32 unk0;
|
|
u32 unk4;
|
|
u32 unk8;
|
|
u32 unkC;
|
|
u32 unk10;
|
|
u32 unk14;
|
|
u32 unk18;
|
|
u32 unk1C;
|
|
u32 unk20;
|
|
u16 unk24;
|
|
u16 unk26;
|
|
};
|
|
|
|
struct UnkStruct_802B53C8 {
|
|
f32 unk0;
|
|
f32 unk4;
|
|
f32 unk8;
|
|
f32 unkC;
|
|
};
|
|
// end math util structs
|
|
|
|
struct UnkStruct8008A890 {
|
|
// B4 long
|
|
Vec3f pos;
|
|
//f32 posY;
|
|
//f32 posZ;
|
|
f32 unk; // lookat? faceangle?
|
|
f32 unk1;
|
|
f32 unk2;
|
|
f32 angleX;
|
|
f32 angleY;
|
|
f32 angleZ;
|
|
s16 rotX;
|
|
s16 rotX2;
|
|
s16 rotY; // unused?
|
|
s16 rotZ;
|
|
s32 unk3; // zero
|
|
s32 unk4; // 0x4119999A
|
|
s32 unk5; // 0xC20C bit flag?
|
|
s32 unk6; // 0
|
|
s32 unk7; // 0
|
|
s32 unk8; // 0x41F
|
|
s32 unk9; // 0
|
|
s32 unk10; // 0
|
|
s32 unk11; // 0
|
|
s32 unk12; // 0
|
|
u16 unk13; // 0x103F7
|
|
u16 unk13_and_a_half;
|
|
u16 unk14; // 0x05BC00## Surface camera is over?
|
|
u16 unk14_half;
|
|
u16 collisionX;
|
|
u16 value;
|
|
u16 collisionY;
|
|
f32 collisionZ;
|
|
f32 unk15;
|
|
f32 unk16;
|
|
f32 unk17;
|
|
f32 unk18;
|
|
f32 unk19;
|
|
f32 unk20;
|
|
f32 unkAngleX;
|
|
f32 unkAngleY;
|
|
f32 unkAngleZ;
|
|
s32 unk21; // zero
|
|
f32 collision;
|
|
f32 unk22; // zero
|
|
s16 unk23; // confirmed s16
|
|
s16 unk24; // zero
|
|
s16 unk24_and_a_half;
|
|
s32 unk25; // zero
|
|
s32 unk26; // zero
|
|
// need another s16 here?
|
|
s32 unk27; // 8
|
|
s16 unk28; // zero
|
|
f32 unk29; // 422
|
|
f32 unk30;
|
|
};
|
|
|
|
struct UnkStruct_800DDB68 {
|
|
s32 *D_800ED600; s32 *D_800ED608; s32 *D_800ED610; s32 *D_800ED618;
|
|
s32 *D_800ED620; s32 *D_800ED628; s32 *D_800ED630; s32 *D_800ED638;
|
|
};
|
|
|
|
typedef struct {
|
|
s8 ob[3];
|
|
s8 unk;
|
|
} coursePath;
|
|
|
|
struct courseTable {
|
|
u32 *dlRomStart; // 0x00 ROM start for segment 6 DL data
|
|
u32 *dlRomEnd; // 0x04 ROM end for segment 6 DL data
|
|
u32 *vertexRomStart; // 0x08 ROM start for segment 4 vertex data
|
|
u32 *vertexRomEnd; // 0x0C ROM end for segment 7?
|
|
u32 *offsetRomStart; // 0x10 ROM start for uncompressed segment 9 texture and DL addresses
|
|
u32 *offsetRomEnd; // 0x14 ROM end for uncompressed segment 9 texture and DL addresses
|
|
mk64_Vtx *vertexStart; // 0x18 segmented address of vertex data
|
|
u32 vertexCount; // 0x1C number of vertices in vertex data
|
|
u32 *packedStart; // 0x20 packed display list start address
|
|
u32 *finalDL; // 0x24
|
|
u32 *textures; // 0x20 segmented address of textures table
|
|
u16 unknown1; // 0x2C
|
|
u16 padding; // 0x2E
|
|
};
|
|
|
|
extern mk64_Vtx d_course_mario_raceway_vertex[];
|
|
extern mk64_Vtx d_course_choco_mountain_vertex[];
|
|
extern mk64_Vtx d_course_bowsers_castle_vertex[];
|
|
extern mk64_Vtx d_course_banshee_boardwalk_vertex[];
|
|
extern mk64_Vtx d_course_yoshi_valley_vertex[];
|
|
extern mk64_Vtx d_course_frappe_snowland_vertex[];
|
|
extern mk64_Vtx d_course_koopa_troopa_beach_vertex[];
|
|
extern mk64_Vtx d_course_royal_raceway_vertex[];
|
|
extern mk64_Vtx d_course_luigi_raceway_vertex[];
|
|
extern mk64_Vtx d_course_moo_moo_farm_vertex[];
|
|
extern mk64_Vtx d_course_toads_turnpike_vertex[];
|
|
extern mk64_Vtx d_course_kalimari_desert_vertex[];
|
|
extern mk64_Vtx d_course_sherbet_land_vertex[];
|
|
extern mk64_Vtx d_course_rainbow_road_vertex[];
|
|
extern mk64_Vtx d_course_wario_stadium_vertex[];
|
|
extern mk64_Vtx d_course_block_fort_vertex[];
|
|
extern mk64_Vtx d_course_skyscraper_vertex[];
|
|
extern mk64_Vtx d_course_double_deck_vertex[];
|
|
extern mk64_Vtx d_course_dks_jungle_parkway_vertex[];
|
|
extern mk64_Vtx d_course_big_donut_vertex[];
|
|
|
|
extern struct courseTable gCourseTable[];
|
|
|
|
#endif /* TYPES_H */
|