diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2023-07-08 14:41:25 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-08 14:41:25 -0400 |
| commit | b3eae0e5b7bcc2c5d3c8a1d562f0737d80c7e35c (patch) | |
| tree | c624812b382933564882fa4492921b7ea28c36ba /include | |
| parent | a506e8620ae8f428ae625644aa5b8d540867641f (diff) | |
Port OoT's docs for `fault.c` and `fault_drawer.c` (#1199)
* fault.h
* some docs stealing
* fix building
* fault_internal.h
* pass
* finish stealing docs
* finish cleanup
* format
* warning
* Update src/boot_O2_g3/fault.c
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* Update src/boot_O2_g3/fault.c
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* Update src/boot_O2_g3/fault.c
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* review
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* arggggg
* arggggg part 2
* STACK
* PHYS_TO_K0(0x400000)
* format
* fix
* Instance
* format
* Neutral reset
* variables.h cleanup
* bss
* frameBuffer
* format
* Update src/boot_O2_g3/fault.c
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* review
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* Update src/boot_O2_g3/fault.c
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* bss
* bss
* bss
* callback cleanup
* fix function declarations
* fix again
* bss
* bss
* Update src/overlays/actors/ovl_En_Fishing/z_en_fishing.c
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
* Update src/boot_O2_g3/fault.c
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
* bss
* bss
* Update src/boot_O2_g3/fault.c
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
* review
* import bss
* format
* minor cleanup
* bss
* review
* fix
* bss
* bss
* bss
* bss
* bss
* format
* a
* Z_PRIORITY_FAULT
* bss
* fix
* idle.c bss doesn't want to get fixed :c
* review
* bss
---------
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/fault.h | 109 | ||||
| -rw-r--r-- | include/fault_internal.h | 18 | ||||
| -rw-r--r-- | include/functions.h | 69 | ||||
| -rw-r--r-- | include/ultra64/convert.h | 3 | ||||
| -rw-r--r-- | include/ultra64/thread.h | 5 | ||||
| -rw-r--r-- | include/variables.h | 167 | ||||
| -rw-r--r-- | include/z64.h | 65 | ||||
| -rw-r--r-- | include/z64thread.h | 18 |
8 files changed, 156 insertions, 298 deletions
diff --git a/include/fault.h b/include/fault.h new file mode 100644 index 000000000..c93feee25 --- /dev/null +++ b/include/fault.h @@ -0,0 +1,109 @@ +#ifndef FAULT_H +#define FAULT_H + +#include "ultra64.h" +#include "unk.h" +#include "libc/stdarg.h" +#include "libc/stdint.h" +#include "io/controller.h" +#include "padmgr.h" +#include "stack.h" + +// These are the same as the 3-bit ansi color codes +#define FAULT_COLOR_BLACK 0 +#define FAULT_COLOR_RED 1 +#define FAULT_COLOR_GREEN 2 +#define FAULT_COLOR_YELLOW 3 +#define FAULT_COLOR_BLUE 4 +#define FAULT_COLOR_MAGENTA 5 +#define FAULT_COLOR_CYAN 6 +#define FAULT_COLOR_WHITE 7 +// Additional color codes +#define FAULT_COLOR_DARK_GRAY 8 +#define FAULT_COLOR_LIGHT_GRAY 9 + +#define FAULT_COLOR_STRINGIFY(s) #s +#define FAULT_COLOR_EXPAND_AND_STRINGIFY(s) FAULT_COLOR_STRINGIFY(s) + +#define FAULT_ESC '\x1A' +#define FAULT_COLOR(n) "\x1A" FAULT_COLOR_EXPAND_AND_STRINGIFY(FAULT_COLOR_ ## n) + + +// Address at the end of "non-expansion" memory space +#define FAULT_FB_ADDRESS (void*)((PHYS_TO_K0(0x400000) - SCREEN_HEIGHT * SCREEN_WIDTH * sizeof(u16))) + +typedef void (*FaultClientCallback)(void*, void*); + +typedef struct FaultClient { + /* 0x0 */ struct FaultClient* next; + /* 0x4 */ FaultClientCallback callback; + /* 0x8 */ void* arg0; + /* 0xC */ void* arg1; +} FaultClient; // size = 0x10 + + +typedef uintptr_t (*FaultAddrConvClientCallback)(uintptr_t, void*); + +typedef struct FaultAddrConvClient { + /* 0x0 */ struct FaultAddrConvClient* next; + /* 0x4 */ FaultAddrConvClientCallback callback; + /* 0x8 */ void* arg; +} FaultAddrConvClient; // size = 0xC + +typedef void(*FaultPadCallback)(Input* input); + + +// Initialization + +void Fault_Init(void); + +// Fatal Errors + +void Fault_AddHungupAndCrashImpl(const char* exp1, const char* exp2); +void Fault_AddHungupAndCrash(const char* file, s32 line); + +// Client Registration + +void Fault_AddClient(FaultClient* client, FaultClientCallback callback, void* arg0, void* arg1); +void Fault_RemoveClient(FaultClient* client); +void Fault_AddAddrConvClient(FaultAddrConvClient* client, FaultAddrConvClientCallback callback, void* arg); +void Fault_RemoveAddrConvClient(FaultAddrConvClient* client); + +// For use in Fault Client callbacks + +void Fault_WaitForInput(void); +void Fault_FillScreenBlack(void); +void Fault_SetFrameBuffer(void* fb, u16 w, u16 h); + +void FaultDrawer_SetForeColor(u16 color); +void FaultDrawer_SetBackColor(u16 color); +void FaultDrawer_SetFontColor(u16 color); +void FaultDrawer_SetCharPad(s8 padW, s8 padH); +void FaultDrawer_SetCursor(s32 x, s32 y); +s32 FaultDrawer_VPrintf(const char* fmt, va_list ap); +s32 FaultDrawer_Printf(const char* fmt, ...); +void FaultDrawer_DrawText(s32 x, s32 y, const char* fmt, ...); + + +typedef struct FaultMgr { + /* 0x000 */ OSThread thread; + /* 0x1B0 */ STACK(stack, 0x600); // Seems leftover from an earlier version. The thread actually uses a stack of this size at 0x8009BE60 + /* 0x7B0 */ OSMesgQueue queue; + /* 0x7C8 */ OSMesg msg[1]; + /* 0x7CC */ u8 exit; + /* 0x7CD */ u8 msgId; // 1 - CPU Break; 2 - Fault; 3 - Unknown + /* 0x7CE */ u8 faultHandlerEnabled; + /* 0x7CF */ u8 autoScroll; + /* 0x7D0 */ OSThread* faultedThread; + /* 0x7D4 */ FaultPadCallback padCallback; + /* 0x7D8 */ FaultClient* clients; + /* 0x7DC */ FaultAddrConvClient* addrConvClients; + /* 0x7E0 */ UNK_TYPE1 unk_7E0[0x4]; + /* 0x7E4 */ Input inputs[MAXCONTROLLERS]; + /* 0x844 */ void* fb; +} FaultMgr; // size = 0x848 + +extern FaultMgr gFaultMgr; + + +#endif diff --git a/include/fault_internal.h b/include/fault_internal.h new file mode 100644 index 000000000..24379e629 --- /dev/null +++ b/include/fault_internal.h @@ -0,0 +1,18 @@ +#ifndef FAULT_INTERNAL_H +#define FAULT_INTERNAL_H + +#include "ultra64.h" + + +typedef void (*FaultDrawerCallback)(void); + +void FaultDrawer_SetOsSyncPrintfEnabled(u32 enabled); +void FaultDrawer_DrawRecImpl(s32 xStart, s32 yStart, s32 xEnd, s32 yEnd, u16 color); +void FaultDrawer_FillScreen(void); +void* FaultDrawer_FormatStringFunc(void* arg, const char* str, size_t count); +void FaultDrawer_SetDrawerFrameBuffer(void* frameBuffer, u16 w, u16 h); +void FaultDrawer_SetInputCallback(FaultDrawerCallback callback); +void FaultDrawer_Init(void); + + +#endif diff --git a/include/functions.h b/include/functions.h index 66365fefe..55d59ec45 100644 --- a/include/functions.h +++ b/include/functions.h @@ -43,64 +43,7 @@ void func_800818F4(void); void __osSyncVPrintf(const char* fmt, ...); void osSyncPrintf(const char* fmt, ...); void rmonPrintf(const char* fmt, ...); -void Fault_SleepImpl(u32 duration); -void Fault_AddClient(FaultClient* client, void* callback, void* param0, void* param1); -void Fault_RemoveClient(FaultClient* client); -void Fault_AddAddrConvClient(FaultAddrConvClient* client, void* callback, void* param); -void Fault_RemoveAddrConvClient(FaultAddrConvClient* client); -void* Fault_ConvertAddress(void* addr); -void Fault_Sleep(u32 duration); -void Fault_PadCallback(Input* input); -void Fault_UpdatePadImpl(void); -u32 Fault_WaitForInputImpl(void); -void Fault_WaitForInput(void); -void Fault_DrawRec(s32 x, s32 y, s32 w, s32 h, u16 color); -void Fault_FillScreenBlack(void); -void Fault_FillScreenRed(void); -void Fault_DrawCornerRec(u16 color); -void Fault_PrintFReg(s32 idx, f32* value); -void osSyncPrintfFReg(s32 idx, f32* value); -void Fault_PrintFPCR(u32 value); -void osSyncPrintfFPCR(u32 value); -void Fault_PrintThreadContext(OSThread* t); -void osSyncPrintfThreadContext(OSThread* t); -OSThread* Fault_FindFaultedThread(void); -void Fault_Wait5Seconds(void); -void Fault_WaitForButtonCombo(void); -void Fault_DrawMemDumpPage(const char* title, u32* addr, u32 param_3); -void Fault_DrawMemDump(u32 pc, u32 sp, u32 unk0, u32 unk1); -void Fault_FindNextStackCall(uintptr_t* spPtr, uintptr_t* pcPtr, uintptr_t* raPtr); -void Fault_DrawStackTrace(OSThread* t, u32 flags); -void osSyncPrintfStackTrace(OSThread* t, u32 flags); -void Fault_ResumeThread(OSThread* t); -void Fault_CommitFB(void); -void Fault_ProcessClients(void); -void Fault_SetOptionsFromController3(void); -void Fault_SetOptions(void); -void Fault_ThreadEntry(void* arg); -void Fault_SetFB(void* fb, u16 w, u16 h); -void Fault_Start(void); -void Fault_HangupFaultClient(const char* arg0, char* arg1); -void Fault_AddHungupAndCrashImpl(const char* arg0, char* arg1); -void Fault_AddHungupAndCrash(const char* filename, u32 line); -void FaultDrawer_SetOsSyncPrintfEnabled(u32 enabled); -void FaultDrawer_DrawRecImpl(s32 xStart, s32 yStart, s32 xEnd, s32 yEnd, u16 color); -void FaultDrawer_DrawChar(char c); -s32 FaultDrawer_ColorToPrintColor(u16 color); -void FaultDrawer_UpdatePrintColor(void); -void FaultDrawer_SetForeColor(u16 color); -void FaultDrawer_SetBackColor(u16 color); -void FaultDrawer_SetFontColor(u16 color); -void FaultDrawer_SetCharPad(s8 padW, s8 padH); -void FaultDrawer_SetCursor(s32 x, s32 y); -void FaultDrawer_FillScreen(void); -void* FaultDrawer_FormatStringFunc(void* arg, const char* str, size_t count); -void FaultDrawer_VPrintf(const char* fmt, va_list ap); -void FaultDrawer_Printf(const char* fmt, ...); -void FaultDrawer_DrawText(s32 x, s32 y, const char* fmt, ...); -void FaultDrawer_SetDrawerFB(void* fb, u16 w, u16 h); -void FaultDrawer_SetInputCallback(FaultDrawerCallback callback); -void FaultDrawer_Init(void); + void func_80084940(void); void func_80084968(void); @@ -192,7 +135,7 @@ void __osSiRelAccess(void); s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data); void __osContGetInitData(u8* pattern, OSContStatus* data); void __osPackRequestData(u8 poll); -void osCreateThread(OSThread* t, OSId id, void* entry, void* arg, void* sp, OSPri p); +void osCreateThread(OSThread* thread, OSId id, void* entry, void* arg, void* sp, OSPri p); s32 osContStartReadData(OSMesgQueue* mq); void osContGetReadData(OSContPad* data); void __osPackReadData(void); @@ -270,7 +213,7 @@ s32 __osSpDeviceBusy(void); s32 __osSiDeviceBusy(void); void guMtxIdent(Mtx* mtx); s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); -void osSetThreadPri(OSThread* t, OSPri p); +void osSetThreadPri(OSThread* thread, OSPri p); OSPri osGetThreadPri(OSThread* t); s32 __osEPiRawReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); void osViSwapBuffer(void* frameBufPtr); @@ -718,7 +661,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 void Actor_SpawnIceEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s32 limbPosCount, s32 effectsPerLimb, f32 scale, f32 scaleRange); void ActorOverlayTable_FaultClient(void* arg0, void* arg1); -void* ActorOverlayTable_FaultAddrConv(void* address, void* param); +uintptr_t ActorOverlayTable_FaultAddrConv(uintptr_t address, void* param); void ActorOverlayTable_Init(void); void ActorOverlayTable_Cleanup(void); @@ -1365,7 +1308,7 @@ void Message_FindCreditsMessage(PlayState* play, u16 textId); void func_8015E7EC(PlayState* play, UNK_PTR puParm2); // void func_8015F8A8(UNK_TYPE4 ctxt); -void* KaleidoManager_FaultAddrConv(void* address, void* param); +uintptr_t KaleidoManager_FaultAddrConv(uintptr_t address, void* param); void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl); void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl); void KaleidoManager_Init(PlayState* play); @@ -1498,7 +1441,7 @@ void Graph_FaultClient(void); void Graph_InitTHGA(TwoHeadGfxArena* arena, Gfx* buffer, s32 size); void Graph_SetNextGfxPool(GraphicsContext* gfxCtx); GameStateOverlay* Graph_GetNextGameState(GameState* gameState); -void* Graph_FaultAddrConv(void* address, void* param); +uintptr_t Graph_FaultAddrConv(uintptr_t address, void* param); void Graph_Init(GraphicsContext* gfxCtx); void Graph_Destroy(GraphicsContext* gfxCtx); void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState); diff --git a/include/ultra64/convert.h b/include/ultra64/convert.h index 59d8b801c..68e91a85a 100644 --- a/include/ultra64/convert.h +++ b/include/ultra64/convert.h @@ -18,6 +18,9 @@ #define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x)+0x80000000)) #define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x)+0xA0000000)) +#define OS_MSEC_TO_CYCLES(n) OS_USEC_TO_CYCLES((n) * 1000) +#define OS_SEC_TO_CYCLES(n) OS_MSEC_TO_CYCLES((n) * 1000) + /* Functions */ extern uintptr_t osVirtualToPhysical(void*); diff --git a/include/ultra64/thread.h b/include/ultra64/thread.h index f060ca34b..4adf025e1 100644 --- a/include/ultra64/thread.h +++ b/include/ultra64/thread.h @@ -20,11 +20,16 @@ #define OS_PRIORITY_VIMGR 254 #define OS_PRIORITY_MAX 255 +#define OS_PRIORITY_THREADTAIL -1 + #define OS_STATE_STOPPED (1 << 0) #define OS_STATE_RUNNABLE (1 << 1) #define OS_STATE_RUNNING (1 << 2) #define OS_STATE_WAITING (1 << 3) +#define OS_FLAG_CPU_BREAK 1 +#define OS_FLAG_FAULT 2 + typedef s32 OSPri; typedef s32 OSId; diff --git a/include/variables.h b/include/variables.h index 7faaf58d4..6b2522e4b 100644 --- a/include/variables.h +++ b/include/variables.h @@ -24,10 +24,7 @@ extern vs32 gIrqMgrResetStatus; extern volatile OSTime sIrqMgrResetTime; extern volatile OSTime sIrqMgrRetraceTime; extern s32 sIrqMgrRetraceCount; -extern const char* sCpuExceptions[18]; -extern const char* sFpuExceptions[6]; -extern FaultDrawer* sFaultDrawContext; -extern FaultDrawer sFaultDrawerDefault; + // extern UNK_TYPE1 sGfxPrintFontTLUT; // extern UNK_TYPE1 sGfxPrintRainbowTLUT; // extern UNK_TYPE1 sGfxPrintRainbowData; @@ -92,136 +89,7 @@ extern char yaz0String8009823C[]; extern char D_80098280[]; extern char D_80098290[]; extern char D_800982A4[]; -extern char D_800982B0[]; -extern char D_800982BC[]; -extern char D_800982D0[]; -extern char D_800982E8[]; -extern char D_80098300[]; -extern char D_80098318[]; -extern char D_80098330[]; -extern char D_80098344[]; -extern char D_80098358[]; -extern char D_80098370[]; -extern char D_80098388[]; -extern char D_800983A0[]; -extern char D_800983B8[]; -extern char D_800983CC[]; -extern char D_800983DC[]; -extern char D_800983F8[]; -extern char D_80098414[]; -extern char D_8009842C[]; -extern char D_80098448[]; -extern char D_80098460[]; -extern char D_80098474[]; -extern char D_80098488[]; -extern char D_80098494[]; -extern char D_800984A0[]; -extern char D_800984B4[55]; -extern char D_800984EC[54]; -extern char D_80098524[71]; -extern char D_8009856C[74]; -extern char D_800985B8[]; -extern char D_800985C8[]; -extern char D_800985DC[]; -extern char D_800985EC[]; -extern char D_80098600[]; -extern char D_80098610[]; -extern char D_80098618[]; -extern char D_8009861C[]; -extern char D_8009862C[]; -extern char D_80098634[]; -extern char D_80098648[]; -extern char D_80098664[]; -extern char D_80098680[]; -extern char D_8009869C[]; -extern char D_800986B8[]; -extern char D_800986D4[]; -extern char D_800986F0[]; -extern char D_8009870C[]; -extern char D_80098728[]; -extern char D_80098744[]; -extern char D_80098760[]; -extern char D_80098780[]; -extern char D_80098784[]; -extern char D_80098788[]; -extern char D_8009878C[]; -extern char D_80098790[]; -extern char D_80098794[]; -extern char D_80098798[]; -extern char D_8009879C[]; -extern char D_800987A0[]; -extern char D_800987A4[]; -extern char D_800987B0[]; -extern char D_800987B4[]; -extern char D_800987CC[]; -extern char D_800987EC[]; -extern char D_8009880C[]; -extern char D_8009882C[]; -extern char D_8009884C[]; -extern char D_8009886C[]; -extern char D_8009888C[]; -extern char D_800988AC[]; -extern char D_800988CC[]; -extern char D_800988EC[]; -extern char D_8009890C[]; -extern char D_8009892C[]; -extern char D_80098930[]; -extern char D_80098934[]; -extern char D_80098938[]; -extern char D_8009893C[]; -extern char D_80098940[]; -extern char D_80098944[]; -extern char D_80098948[]; -extern char D_8009894C[]; -extern char D_80098950[]; -extern char D_80098954[]; -extern char D_8009895C[]; -extern char D_80098968[]; -extern char D_80098970[]; -extern char D_80098978[]; -extern char D_80098980[]; -extern char D_8009898C[]; -extern char D_800989A4[]; -extern char D_800989B0[]; -extern char D_800989BC[]; -extern char D_800989CC[]; -extern char D_800989D8[]; -extern char D_800989F4[]; -extern char D_80098A00[]; -extern char D_80098A0C[]; -extern char D_80098A1C[]; -extern char D_80098A20[34]; -extern const char D_80098A44[]; -extern const char D_80098A68[]; -extern char D_80098A88[53]; -extern char D_80098AC0[49]; -extern char D_80098AF4[51]; -extern char D_80098B28[]; -extern char D_80098B4C[]; -extern char D_80098B68[]; -extern char D_80098B84[]; -extern char D_80098BA0[]; -extern char D_80098BBC[]; -extern const char faultThreadName[]; -extern char D_80098BE0[]; -extern char D_80098BF8[]; -extern char D_80098BFC[]; -extern char D_80098C04[]; -extern char D_80098C08[]; -extern char D_80098C10[]; -extern char D_80098C28[]; -extern char D_80098C2C[]; -extern char D_80098C34[]; -extern char D_80098C38[]; -extern char D_80098C40[]; -extern char D_80099050[]; -extern char D_80099054[]; -extern char D_8009905C[]; -extern char D_80099064[]; -extern char D_80099070[]; -extern const char D_80099078[]; -extern const char D_8009907C[]; -extern const char D_80099080[]; + extern char D_800990B0[]; extern f32 D_800990C0[9]; extern f32 D_800990E4; @@ -277,9 +145,6 @@ extern void* gYaz0DecompressDstEnd; // extern UNK_TYPE4 D_8009BE34; // extern FaultClient romInfoFaultClient; -extern FaultThreadStruct gFaultStruct; - -extern FaultDrawer sFaultDrawerStruct; // extern UNK_TYPE4 D_8009CD10; extern u32 sRandFloat; // extern UNK_TYPE4 sArenaLockMsg; @@ -2067,21 +1932,6 @@ extern f32 D_801ED8D0; // extern UNK_TYPE1 D_801ED8DC; extern Mtx D_801ED8E0; extern Actor* D_801ED920; -extern FaultClient sActorOverlayTableFaultClient; -extern FaultAddrConvClient sActorOverlayTableFaultAddrConvClient; -extern char D_801ED950[80]; -extern char D_801ED9A0[80]; -extern Vec3f D_801ED9F0[3]; -extern Vec3f D_801EDA18[3]; -extern MtxF sModelToWorldMtxF; -extern Vec3f D_801EDA80[3]; -extern char D_801EDAA8[80]; -extern char D_801EDAF8[80]; -extern Vec3f D_801EDB48[3]; -extern Vec3f D_801EDB70[3]; -extern Plane D_801EDB98; -extern Sphere16 D_801EDBA8; -extern TriNorm D_801EDBB0; extern Vec3f D_801EDE00; extern Vec3f D_801EDE10; @@ -2219,7 +2069,7 @@ extern s16 D_801F4E7A; // extern UNK_TYPE1 D_801F6B58; extern void (*sKaleidoScopeUpdateFunc)(PlayState* play); extern void (*sKaleidoScopeDrawFunc)(PlayState* play); -extern FaultAddrConvClient sKaleidoMgrFaultAddrConvClient; + extern s16 sTransitionFillTimer; extern Input D_801F6C18; extern TransitionTile sTransitionTile; @@ -2237,19 +2087,12 @@ extern struct_801F8010 D_801F8010; extern VisZbuf sVisZbuf; extern VisMono sMonoColors; extern ViMode D_801F8048; -extern FaultAddrConvClient sGraphFaultAddrConvClient; -extern FaultClient sGraphFaultClient; + extern GfxMasterList* gGfxMasterDL; -extern CfbInfo sGraphCfbInfos[3]; -extern OSTime sGraphTaskStartTime; -extern FaultClient sSchedFaultClient; -extern OSTime sRSPGFXStartTime; -extern OSTime sRSPAudioStartTime; -extern OSTime sRSPOtherStartTime; -extern OSTime sRDPStartTime; extern u64* gAudioSPDataPtr; extern u32 gAudioSPDataSize; + extern volatile OSTime D_801FBAE0; extern volatile OSTime D_801FBAE8; extern volatile OSTime D_801FBAF0; diff --git a/include/z64.h b/include/z64.h index d03b2fd44..ba2d5ffc3 100644 --- a/include/z64.h +++ b/include/z64.h @@ -75,40 +75,6 @@ typedef struct { /* 0x14 */ OSMesgQueue messageQueue; } FlashromRequest; // size = 0x2C -// End of RDRAM without the Expansion Pak installed -#define NORMAL_RDRAM_END 0x80400000 -// End of RDRAM with the Expansion Pak installed -#define EXPANDED_RDRAM_END 0x80800000 -// Address at the end of normal RDRAM after which is room for a screen buffer -#define FAULT_FB_ADDRESS (NORMAL_RDRAM_END - sizeof(u16[SCREEN_HEIGHT][SCREEN_WIDTH])) - -typedef void (*FaultDrawerCallback)(void); - -typedef struct { - /* 0x00 */ u16* fb; - /* 0x04 */ u16 w; - /* 0x06 */ u16 h; - /* 0x08 */ u16 yStart; - /* 0x0A */ u16 yEnd; - /* 0x0C */ u16 xStart; - /* 0x0E */ u16 xEnd; - /* 0x10 */ u16 foreColor; - /* 0x12 */ u16 backColor; - /* 0x14 */ u16 cursorX; - /* 0x16 */ u16 cursorY; - /* 0x18 */ const u32* font; - /* 0x1C */ u8 charW; - /* 0x1D */ u8 charH; - /* 0x1E */ s8 charWPad; - /* 0x1F */ s8 charHPad; - /* 0x20 */ u16 printColors[10]; - /* 0x34 */ u8 escCode; - /* 0x35 */ u8 osSyncPrintfEnabled; - /* 0x38 */ FaultDrawerCallback inputCallback; -} FaultDrawer; // size = 0x3C - -typedef void(*fault_update_input_func)(Input* input); - typedef struct { /* 0x000 */ View view; /* 0x168 */ u8* iconItemSegment; @@ -315,37 +281,6 @@ typedef struct { /* 0x24 */ u32 flags; } PreRenderParams; // size = 0x28 -typedef struct FaultAddrConvClient { - /* 0x0 */ struct FaultAddrConvClient* next; - /* 0x4 */ void* (*callback)(void*, void*); - /* 0x8 */ void* param; -} FaultAddrConvClient; // size = 0xC - -typedef struct FaultClient { - /* 0x0 */ struct FaultClient* next; - /* 0x4 */ void (*callback)(void*, void*); - /* 0x8 */ void* param0; - /* 0xC */ void* param1; -} FaultClient; // size = 0x10 - -typedef struct { - /* 0x000 */ OSThread thread; - /* 0x1B0 */ u8 stack[1536]; // Seems leftover from an earlier version. The thread actually uses a stack of this size at 0x8009BE60 - /* 0x7B0 */ OSMesgQueue queue; - /* 0x7C8 */ OSMesg msg[1]; - /* 0x7CC */ u8 exitDebugger; - /* 0x7CD */ u8 msgId; // 1 - CPU Break; 2 - Fault; 3 - Unknown - /* 0x7CE */ u8 faultHandlerEnabled; - /* 0x7CF */ u8 faultActive; - /* 0x7D0 */ OSThread* faultedThread; - /* 0x7D4 */ fault_update_input_func padCallback; - /* 0x7D8 */ FaultClient* clients; - /* 0x7DC */ FaultAddrConvClient* addrConvClients; - /* 0x7E0 */ UNK_TYPE1 pad7E0[0x4]; - /* 0x7E4 */ Input padInput[MAXCONTROLLERS]; - /* 0x844 */ void* fb; -} FaultThreadStruct; // size = 0x848 - struct PlayState; typedef struct { diff --git a/include/z64thread.h b/include/z64thread.h index ce63cfb15..21a397fe5 100644 --- a/include/z64thread.h +++ b/include/z64thread.h @@ -1,16 +1,17 @@ #ifndef Z64THREAD_H #define Z64THREAD_H -#define Z_THREAD_ID_IDLE 1 -#define Z_THREAD_ID_SLOWLY 2 -#define Z_THREAD_ID_MAIN 3 -#define Z_THREAD_ID_GRAPH 4 -#define Z_THREAD_ID_SCHED 5 -#define Z_THREAD_ID_PADMGR 7 +#define Z_THREAD_ID_IDLE 1 +#define Z_THREAD_ID_SLOWLY 2 +#define Z_THREAD_ID_FAULT 2 +#define Z_THREAD_ID_MAIN 3 +#define Z_THREAD_ID_GRAPH 4 +#define Z_THREAD_ID_SCHED 5 +#define Z_THREAD_ID_PADMGR 7 #define Z_THREAD_ID_AUDIOMGR 10 #define Z_THREAD_ID_FLASHROM 13 -#define Z_THREAD_ID_DMAMGR 18 -#define Z_THREAD_ID_IRQMGR 19 +#define Z_THREAD_ID_DMAMGR 18 +#define Z_THREAD_ID_IRQMGR 19 #define Z_PRIORITY_SLOWLY 5 #define Z_PRIORITY_GRAPH 9 @@ -22,5 +23,6 @@ #define Z_PRIORITY_SCHED 16 #define Z_PRIORITY_DMAMGR 17 #define Z_PRIORITY_IRQMGR 18 +#define Z_PRIORITY_FAULT OS_PRIORITY_APPMAX #endif |
