summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
Diffstat (limited to 'src/code')
-rw-r--r--src/code/fault_n64.c4
-rw-r--r--src/code/z_actor_dlftbls.c34
2 files changed, 33 insertions, 5 deletions
diff --git a/src/code/fault_n64.c b/src/code/fault_n64.c
index 92fd0cc8d..2a4a423a6 100644
--- a/src/code/fault_n64.c
+++ b/src/code/fault_n64.c
@@ -93,7 +93,7 @@ FaultCursorCoords sFaultCursorPos;
vs32 sFaultExit;
vs32 gFaultMsgId;
vs32 sFaultDisplayEnable;
-OSThread* sFaultFaultedThread;
+volatile OSThread* gFaultFaultedThread;
s32 B_80122570[16];
s32 B_801225B0[8]; // Unused (file padding?)
@@ -768,7 +768,7 @@ void Fault_ThreadEntry(void* arg0) {
osSyncPrintf("FindFaultedThread()=%08x\n", faultedThread);
}
} while (faultedThread == NULL);
- sFaultFaultedThread = faultedThread;
+ gFaultFaultedThread = faultedThread;
Fault_LogThreadContext(faultedThread);
osSyncPrintf("%d %s %d:%s = %d\n", osGetThreadId(NULL), "fault.c", 1454, "fault_display_enable",
sFaultDisplayEnable);
diff --git a/src/code/z_actor_dlftbls.c b/src/code/z_actor_dlftbls.c
index 05e7e8d3f..6e1fdb97c 100644
--- a/src/code/z_actor_dlftbls.c
+++ b/src/code/z_actor_dlftbls.c
@@ -98,19 +98,47 @@ void ActorOverlayTable_LogPrint(void) {
void ActorOverlayTable_FaultPrint(void* arg0, void* arg1) {
ActorOverlay* overlayEntry;
u32 overlaySize;
+ uintptr_t ramStart;
+ uintptr_t ramEnd;
+ u32 offset;
+#if PLATFORM_N64
+ uintptr_t pc = gFaultFaultedThread != NULL ? gFaultFaultedThread->context.pc : 0;
+ uintptr_t ra = gFaultFaultedThread != NULL ? gFaultFaultedThread->context.ra : 0;
+ u32 i;
+#else
s32 i;
+#endif
+#if PLATFORM_N64
+ func_800AE1F8();
+
+ Fault_Printf("actor_dlftbls %u\n", gMaxActorId);
+ Fault_Printf("No. RamStart-RamEnd Offset\n");
+#else
Fault_SetCharPad(-2, 0);
Fault_Printf("actor_dlftbls %u\n", gMaxActorId);
Fault_Printf("No. RamStart- RamEnd cn Name\n");
+#endif
for (i = 0, overlayEntry = &gActorOverlayTable[0]; i < gMaxActorId; i++, overlayEntry++) {
overlaySize = (uintptr_t)overlayEntry->vramEnd - (uintptr_t)overlayEntry->vramStart;
- if (overlayEntry->loadedRamAddr != NULL) {
- Fault_Printf("%3d %08x-%08x %3d %s\n", i, overlayEntry->loadedRamAddr,
- (uintptr_t)overlayEntry->loadedRamAddr + overlaySize, overlayEntry->numLoaded,
+ ramStart = (uintptr_t)overlayEntry->loadedRamAddr;
+ ramEnd = ramStart + overlaySize;
+ offset = (uintptr_t)overlayEntry->vramStart - ramStart;
+ if (ramStart != 0) {
+#if PLATFORM_N64
+ Fault_Printf("%3d %08x-%08x %08x", i, ramStart, ramEnd, offset);
+ if (ramStart <= pc && pc < ramEnd) {
+ Fault_Printf(" PC:%08x", pc + offset);
+ } else if (ramStart <= ra && ra < ramEnd) {
+ Fault_Printf(" RA:%08x", ra + offset);
+ }
+ Fault_Printf("\n");
+#else
+ Fault_Printf("%3d %08x-%08x %3d %s\n", i, ramStart, ramEnd, overlayEntry->numLoaded,
(OOT_DEBUG && overlayEntry->name != NULL) ? overlayEntry->name : "");
+#endif
}
}
}