Show the crash screen whenever the core stops with a runtime error

EmuScreen only draws the crash info when an exception was recorded, and
showed just the Resume/Reset/Back buttons otherwise. Several ways of
stopping the core with CORE_RUNTIME_ERROR recorded nothing:

- A bad memory access in JIT code that MemFault can't skip, either
  because it can't decode the host instruction or because ignoring is
  only configured through the exception action, went to the crash
  handler, while Core_MemoryException returned early under the default
  Ignore action. A halting access is now always recorded.
- HLEReturnFromMipsCall on a corrupt stack, and a failed LoadExec, set
  the state directly. They now go through Core_HLEError, which records a
  new HLE exception type with a message that the crash screen shows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-15 17:03:12 +02:00
1 parent da4d6eda8a
commit b13945d9e5
7 files changed
+36 -11

No files matched your search

+7
View File
@@ -419,6 +419,13 @@ PC: %08x
)", info.pc);
ctx->Draw()->DrawTextShadow(ubuntu24, statbuf, x, y, 0xFFFFFFFF);
y += 180;
} else if (info.type == MIPSExceptionType::HLE) {
snprintf(statbuf, sizeof(statbuf), R"(
%s
PC: %08x
RA: %08x)", info.info.c_str(), info.pc, info.ra);
ctx->Draw()->DrawTextShadow(ubuntu24, statbuf, x, y, 0xFFFFFFFF);
y += 180;
} else {
snprintf(statbuf, sizeof(statbuf), R"(
Invalid / Unknown (%d)