Files
2023-05-20 21:14:23 -04:00

60 lines
1.5 KiB
C

#ifndef FAULT_H
#define FAULT_H
#include "types.h"
#include "dolphin/os/OSInterrupt.h"
#include "libultra/libultra.h"
#ifdef __cplusplus
extern "C"{
#endif
#define FAULT_MIN_PRIORITY 0
#define FAULT_STAGE_POST 0
#define FAULT_STAGE_PRE 1
#define FAULT_FLAG_POSTEXCEPTION (1 << FAULT_STAGE_POST)
#define FAULT_FLAG_PREEXCEPTION (1 << FAULT_STAGE_PRE)
#define FAULT_FLAG_SKIP_DRAW_SEPARATOR (1 << 2)
#define FAULT_FLAG_SKIP_DRAW_CALLBACK_INFO (1 << 3)
#define FAULT_PAD_READ_SUCCESS 0
#define FAULT_PAD_READ_FAILED -1
typedef void (*FaultCallback)(const char* msg, u32 param);
typedef struct fault_client_s fault_client;
struct fault_client_s {
fault_client* next;
FaultCallback callback;
const char* msg;
u32 param;
u8 priority;
u8 flags;
};
typedef struct {
u8 _0, _1, _2, _3;
u8 num_clients;
fault_client* first_client;
} fault;
extern void fault_AddClientEx(fault_client* client, FaultCallback callback, const char* msg, u32 param, u8 priority, u8 flags);
extern void fault_AddClient(fault_client* client, FaultCallback callback, const char* msg, u32 param);
extern void fault_Printf(const char* msg, ...);
static void fault_DrawUpdate();
extern void fault_WaitTime(u32 waitTime);
extern int fault_ReadPad(u32* outTriggers, u32* outButtons);
static void fault_CallBackFunc(int stage);
extern void fault_Init();
static void my_PreExceptionCallback();
static void my_PostExceptionCallback();
#ifdef __cplusplus
}
#endif
#endif