Starship/include/sf64thread.h
petrie911 89ae8dff96
fox_6B3B0 and a bunch of names for things (#50)
* stuff

* three whole files

* format

* format and such

* a switch in time

* merge prep

* nintendo switch

* format

* the great switch statement of our time

* 43AC0 matched

* stuff

* Enums everywhere

* oh god the switch

* knakyo

* new headers

* format

* fox

* everyone hates recursion

* format

* one more thing

* one more one more thing

* renames
2023-12-14 11:41:43 -03:00

126 lines
2.7 KiB
C

#ifndef SF64_THREAD
#define SF64_THREAD
#include "libultra/ultra64.h"
#include "gfx.h"
typedef enum {
GSTATE_NONE,
GSTATE_INIT,
GSTATE_TITLE,
GSTATE_MENU,
GSTATE_MAP,
GSTATE_STATE_5,
GSTATE_VS_INIT,
GSTATE_PLAY,
GSTATE_CREDITS,
GSTATE_BOOT = 100,
GSTATE_BOOT_WAIT,
GSTATE_SHOW_LOGO,
GSTATE_CHECK_SAVE,
GSTATE_LOGO_WAIT,
GSTATE_START,
} GameStates;
typedef void (*TimerAction)(s32*, s32);
typedef struct {
/* 0x00 */ u8 active;
/* 0x08 */ OSTimer timer;
/* 0x28 */ TimerAction action;
/* 0x2C */ s32* address;
/* 0x30 */ s32 value;
} TimerTask; // size = 0x38, 0x8 aligned
typedef struct {
/* 0x000 */ OSThread thread;
/* 0x1B0 */ char stack[0x800];
/* 0x9B0 */ OSMesgQueue msgQueue;
/* 0x9C8 */ OSMesg msg;
/* 0x9CC */ FrameBuffer* fb;
/* 0x9D0 */ u16 width;
/* 0x9D2 */ u16 height;
} FaultMgr; // size = 0x9D8, 0x8 aligned
typedef enum {
SPTASK_STATE_NOT_STARTED,
SPTASK_STATE_RUNNING,
SPTASK_STATE_INTERRUPTED,
SPTASK_STATE_FINISHED,
SPTASK_STATE_FINISHED_DP
} SpTaskState;
typedef struct {
/* 0x00 */ OSTask task;
/* 0x40 */ OSMesgQueue* msgQueue;
/* 0x44 */ OSMesg msg;
/* 0x48 */ SpTaskState state;
} SPTask; // size = 0x50, 0x8 aligned
typedef struct {
/* 0x00000 */ SPTask task;
/* 0x00050 */ Vp viewports[0x10];
/* 0x00150 */ Mtx mtx[0x480];
/* 0x12150 */ Gfx unkDL1[0x180];
/* 0x12D50 */ Gfx masterDL[0x1380];
/* 0x1C950 */ Gfx unkDL2[0xD80];
/* 0x23550 */ Lightsn lights[0x100];
} GfxPool; // size = 0x2AD50, 0x8 aligned
void Controller_Init(void);
void Controller_UpdateInput(void);
void Controller_ReadData(void);
void Save_ReadData(void);
void Save_WriteData(void);
void Controller_Rumble(void);
s32 Timer_CreateTask(u64, TimerAction, s32*, s32);
void Timer_Increment(s32* address, s32 value);
void Timer_SetValue(s32* address, s32 value);
void Timer_CompleteTask(TimerTask*);
void Timer_Wait(u64);
s32 Save_WriteEeprom(SaveFile*);
s32 Save_ReadEeprom(SaveFile*);
void Fault_ThreadEntry(void*);
void func_80007FE4(FrameBuffer*, u16, u16);
void Fault_Init(void);
typedef enum {
SI_READ_CONTROLLER = 10,
SI_READ_SAVE,
SI_WRITE_SAVE,
SI_RUMBLE,
SI_SAVE_FAILED,
SI_SAVE_SUCCESS,
SI_CONT_READ_DONE,
} SerialMesg;
#define MSG_QUEUE_EMPTY -1
#define FAULT_MESG_BREAK 1
#define FAULT_MESG_FAULT 2
#define TASK_MESG_1 1
#define TASK_MESG_2 2
#define EVENT_MESG_SP 1
#define EVENT_MESG_DP 2
#define EVENT_MESG_VI 3
#define EVENT_MESG_PRENMI 4
typedef enum {
THREAD_ID_SYSTEM,
THREAD_ID_IDLE,
THREAD_ID_FAULT,
THREAD_ID_MAIN,
THREAD_ID_4,
THREAD_ID_AUDIO,
THREAD_ID_GRAPHICS,
THREAD_ID_7,
THREAD_ID_SERIAL,
} ThreadID;
#endif