db_exception

This commit is contained in:
robojumper
2024-05-25 12:48:53 +02:00
parent 101f014078
commit 09eebc77b3
9 changed files with 1030 additions and 26 deletions
+39 -1
View File
@@ -1,14 +1,52 @@
#ifndef NW4R_DB_CONSOLE_H
#define NW4R_DB_CONSOLE_H
#include <common.h>
#include <nw4r/ut/ut_TextWriterBase.h>
namespace nw4r {
namespace db {
namespace detail {
struct ConsoleHead {};
typedef struct ConsoleHead {
u8 *textBuf;
u16 width;
u16 height;
u16 priority;
u16 attr;
u16 printTop;
u16 printXPos;
u16 ringTop;
u32 ringTopLineCnt;
s32 viewTopLine;
s16 viewPosX;
s16 viewPosY;
u16 viewLines;
bool isVisible;
nw4r::ut::TextWriterBase<char> *writer;
ConsoleHead *next;
} ConsoleHead;
} // namespace detail
typedef detail::ConsoleHead *ConsoleHandle;
enum ConsoleOutputType {
CONSOLE_OUTPUT_NONE = 0,
CONSOLE_OUTPUT_DISPLAY = 1,
CONSOLE_OUTPUT_TERMINAL = 2,
CONSOLE_OUTPUT_ALL = CONSOLE_OUTPUT_DISPLAY | CONSOLE_OUTPUT_TERMINAL,
};
ConsoleHandle Console_Create(void *arg, u16, u16, u16, u16, u16);
ConsoleHandle Console_Destroy(ConsoleHandle console);
void Console_DrawDirect(ConsoleHandle console);
void Console_VFPrintf(ConsoleOutputType type, ConsoleHandle console, const char* format, va_list vlist);
void Console_Printf(ConsoleHandle console, const char* format, ...);
s32 Console_GetTotalLines(ConsoleHandle console);
} // namespace db
} // namespace nw4r
#endif
+26
View File
@@ -0,0 +1,26 @@
#ifndef NW4R_DB_EXCEPTION_H
#define NW4R_DB_EXCEPTION_H
#include <nw4r/db/db_console.h>
#include <rvl/OS.h>
namespace nw4r {
namespace db {
typedef struct {
u16 error;
OSContext *ctx;
u32 dsisr;
u32 dar;
} ExceptionCallbackParam;
void Exception_Init();
ConsoleHandle Exception_SetConsole(ConsoleHandle, const _GXRenderModeObj *);
ConsoleHandle Exception_GetConsole();
void Exception_SetUserCallback(bool (*)(ConsoleHandle, void *), void *);
} // namespace db
} // namespace nw4r
#endif
+1 -1
View File
@@ -36,7 +36,7 @@ typedef enum {
OS_ERR_MAX
} OSErrorType;
typedef void (*OSErrorHandler)(u8 error, OSContext *ctx, u32 dsisr, u32 dar, ...);
typedef void (*OSErrorHandler)(u16 error, OSContext *ctx, u32 dsisr, u32 dar);
extern OSErrorHandler __OSErrorTable[OS_ERR_MAX];
extern u32 __OSFpscrEnableBits;