Stop reporting more things we already know about

From going through what report.ppsspp.org still gets from v1.20.4 and
later. The logging stays:

- Module load options: invalid positions are rejected (and reported)
  before this, the rest is handled.
- Savedata versions 1-3 are normal, only higher ones are rejected.
- sceNetAdhocMatchingInit, sceIoAssign and the screenshot dialog's init:
  every call was reported.
- sceKernelStopUnloadSelfModuleWithStatus is implemented, like the
  version without status, which already wasn't reported.
- Thread attributes we ignore, morph and spline vertex types, BREAK, and
  the POPS emulator invalidating code near the PC.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-11-08 23:27:59 +01:00
1 parent 4fabe3fe0a
commit 6e5b54142e
9 files changed
+12 -13

No files matched your search

+1 -1
View File
@@ -687,7 +687,7 @@ int SavedataParam::LoadSaveData(SceUtilitySavedataParam *param, const std::strin
ERROR_LOG_REPORT(Log::sceUtility, "Savedata version with missing key: %d", param->secureVersion);
return SCE_UTILITY_SAVEDATA_ERROR_LOAD_PARAM;
} else if (param->secureVersion != 0) {
WARN_LOG_REPORT(Log::sceUtility, "Savedata version requested: %d", param->secureVersion);
INFO_LOG(Log::sceUtility, "Savedata version requested: %d", param->secureVersion);
}
std::string filename = GetFileName(param);
+1 -1
View File
@@ -843,7 +843,7 @@ static u32 sceIoAssign(u32 alias_addr, u32 physical_addr, u32 filesystem_addr, i
perm = "unhandled";
break;
}
WARN_LOG_REPORT(Log::sceIo, "sceIoAssign(%s, %s, %s, %s, %08x, %i)", alias.c_str(), physical_dev.c_str(), filesystem_dev.c_str(), perm.c_str(), arg_addr, argSize);
INFO_LOG(Log::sceIo, "sceIoAssign(%s, %s, %s, %s, %08x, %i)", alias.c_str(), physical_dev.c_str(), filesystem_dev.c_str(), perm.c_str(), arg_addr, argSize);
return 0;
}
+4 -4
View File
@@ -3055,7 +3055,7 @@ u32 sceKernelLoadModule(MIPSState *mips, const char *name, u32 flags, u32 option
ERROR_LOG_REPORT(Log::Loader, "sceKernelLoadModule(%s): invalid position (fixed)", name);
return hleDelayResult(SCE_KERNEL_ERROR_MEMBLOCK_ALLOC_FAILED, "module loaded", 500);
}
WARN_LOG_REPORT(Log::Loader, "sceKernelLoadModule: unsupported options size=%08x, flags=%08x, pos=%d, access=%d, data=%d, text=%d", lmoption->size, lmoption->flags, lmoption->position, lmoption->access, lmoption->mpiddata, lmoption->mpidtext);
WARN_LOG(Log::Loader, "sceKernelLoadModule: unsupported options size=%08x, flags=%08x, pos=%d, access=%d, data=%d, text=%d", lmoption->size, lmoption->flags, lmoption->position, lmoption->access, lmoption->mpiddata, lmoption->mpidtext);
}
// Opening and reading the file, then about 1ms plus 30us per KB of loader work, the caller waiting
@@ -3455,7 +3455,7 @@ u32 __KernelStopUnloadSelfModuleWithOrWithoutStatus(u32 exitCode, u32 argSize, u
if (loadedModules.size() > 1) {
if (WithStatus) {
ERROR_LOG_REPORT(Log::sceModule, "UNIMPL sceKernelStopUnloadSelfModuleWithStatus(%08x, %08x, %08x, %08x, %08x): game may have crashed", exitCode, argSize, argp, statusAddr, optionAddr);
WARN_LOG(Log::sceModule, "sceKernelStopUnloadSelfModuleWithStatus(%08x, %08x, %08x, %08x, %08x)", exitCode, argSize, argp, statusAddr, optionAddr);
} else {
// NOTE: The previous "may have crashed" message is not accurate, Splinter Cell Essentials uses this normally when leaving/entering in-game.
// We should not report this.
@@ -3749,7 +3749,7 @@ static u32 sceKernelLoadModuleByID(u32 id, u32 flags, u32 lmoptionPtr) {
const SceKernelLMOption *lmoption = 0;
if (lmoptionPtr) {
lmoption = (const SceKernelLMOption *)Memory::GetPointerOrException(lmoptionPtr);
WARN_LOG_REPORT(Log::Loader, "sceKernelLoadModuleByID: unsupported options size=%08x, flags=%08x, pos=%d, access=%d, data=%d, text=%d", lmoption->size, lmoption->flags, lmoption->position, lmoption->access, lmoption->mpiddata, lmoption->mpidtext);
WARN_LOG(Log::Loader, "sceKernelLoadModuleByID: unsupported options size=%08x, flags=%08x, pos=%d, access=%d, data=%d, text=%d", lmoption->size, lmoption->flags, lmoption->position, lmoption->access, lmoption->mpiddata, lmoption->mpidtext);
}
u32 pos = (u32)pspFileSystem.SeekFile(handle, 0, FILEMOVE_CURRENT);
size_t size = pspFileSystem.SeekFile(handle, 0, FILEMOVE_END);
@@ -3866,7 +3866,7 @@ SceUID sceKernelLoadModuleBufferUsbWlan(u32 size, u32 bufPtr, u32 flags, u32 lmo
const SceKernelLMOption *lmoption = 0;
if (lmoptionPtr) {
lmoption = (const SceKernelLMOption *)Memory::GetPointerOrException(lmoptionPtr);
WARN_LOG_REPORT(Log::Loader, "sceKernelLoadModuleBufferUsbWlan: unsupported options size=%08x, flags=%08x, pos=%d, access=%d, data=%d, text=%d", lmoption->size, lmoption->flags, lmoption->position, lmoption->access, lmoption->mpiddata, lmoption->mpidtext);
WARN_LOG(Log::Loader, "sceKernelLoadModuleBufferUsbWlan: unsupported options size=%08x, flags=%08x, pos=%d, access=%d, data=%d, text=%d", lmoption->size, lmoption->flags, lmoption->position, lmoption->access, lmoption->mpiddata, lmoption->mpidtext);
}
std::string error_string;
PSPModule *module = nullptr;
+1 -1
View File
@@ -2175,7 +2175,7 @@ int __KernelCreateThread(const char *threadName, SceUID moduleID, u32 entry, u32
}
if ((attr & ~PSP_THREAD_ATTR_SUPPORTED) != 0) {
WARN_LOG_REPORT(Log::sceKernel, "sceKernelCreateThread(name=%s): unsupported attributes %08x, ignoring", threadName, attr & ~PSP_THREAD_ATTR_SUPPORTED);
WARN_LOG(Log::sceKernel, "sceKernelCreateThread(name=%s): unsupported attributes %08x, ignoring", threadName, attr & ~PSP_THREAD_ATTR_SUPPORTED);
}
// TODO: Not sure what these values are, but they are removed from the attr silently.
+1 -1
View File
@@ -1525,7 +1525,7 @@ int sceNetAdhocMatchingDelete(MIPSState *mips, int matchingId) {
}
int sceNetAdhocMatchingInit(MIPSState *mips, u32 memsize) {
WARN_LOG_REPORT_ONCE(sceNetAdhocMatchingInit, Log::sceNet, "sceNetAdhocMatchingInit(%d) at %08x", memsize, mips->pc);
INFO_LOG(Log::sceNet, "sceNetAdhocMatchingInit(%d) at %08x", memsize, mips->pc);
// Uninitialized Library
if (netAdhocMatchingInited)
+1 -1
View File
@@ -1413,7 +1413,7 @@ static int sceUtilityGetNetParamLatestID(u32 idAddr) {
//TODO: Implement all sceUtilityScreenshot* for real, it doesn't seem to be complex
//but it requires more investigation
static int sceUtilityScreenshotInitStart(u32 paramAddr) {
return hleReportWarning(Log::sceUtility, UtilityInitStart(UtilityDialogType::SCREENSHOT, screenshotDialog, paramAddr));
return hleLogInfo(Log::sceUtility, UtilityInitStart(UtilityDialogType::SCREENSHOT, screenshotDialog, paramAddr));
}
static int sceUtilityScreenshotShutdownStart() {
+1 -2
View File
@@ -155,7 +155,7 @@ namespace MIPSInt {
}
if (alignedAddr <= PC + 4 && alignedAddr + size >= PC - 4) {
// This is probably rare so we don't use a static bool.
WARN_LOG_REPORT_ONCE(icacheInvalidatePC, Log::JIT, "Invalidating address near PC: %08x (%08x + %d) at PC=%08x", addr, R(rs), imm, PC);
WARN_LOG_ONCE(icacheInvalidatePC, Log::JIT, "Invalidating address near PC: %08x (%08x + %d) at PC=%08x", addr, R(rs), imm, PC);
}
}
break;
@@ -219,7 +219,6 @@ namespace MIPSInt {
}
void Int_Break(MIPSState *mips, MIPSOpcode op) {
Reporting::ReportMessage("BREAK instruction hit");
Core_BreakException(PC);
PC += 4;
}
+1 -1
View File
@@ -1222,7 +1222,7 @@ void VertexDecoder::SetVertexType(u32 fmt, const VertexDecoderOptions &options,
memset(&decFmt, 0, sizeof(decFmt));
if (morphcount > 1) {
DEBUG_LOG_REPORT_ONCE(vtypeM, Log::G3D, "VTYPE with morph used: THRU=%i TC=%i COL=%i POS=%i NRM=%i WT=%i NW=%i IDX=%i MC=%i", (int)throughmode, tc, col, pos, nrm, weighttype, nweights, idx, morphcount);
DEBUG_LOG(Log::G3D, "VTYPE with morph used: THRU=%i TC=%i COL=%i POS=%i NRM=%i WT=%i NW=%i IDX=%i MC=%i", (int)throughmode, tc, col, pos, nrm, weighttype, nweights, idx, morphcount);
} else {
DEBUG_LOG(Log::G3D, "VTYPE: THRU=%i TC=%i COL=%i POS=%i NRM=%i WT=%i NW=%i IDX=%i MC=%i", (int)throughmode, tc, col, pos, nrm, weighttype, nweights, idx, morphcount);
}
+1 -1
View File
@@ -1361,7 +1361,7 @@ void GPUCommonHW::Execute_Bezier(u32 op, u32 diff) {
}
if (vertTypeIsSkinningEnabled(vertType)) {
DEBUG_LOG_REPORT(Log::G3D, "Unusual bezier/spline vtype: %08x, morph: %d, bones: %d", vertType, (vertType & GE_VTYPE_MORPHCOUNT_MASK) >> GE_VTYPE_MORPHCOUNT_SHIFT, vertTypeGetNumBoneWeights(vertType));
DEBUG_LOG(Log::G3D, "Unusual bezier/spline vtype: %08x, morph: %d, bones: %d", vertType, (vertType & GE_VTYPE_MORPHCOUNT_MASK) >> GE_VTYPE_MORPHCOUNT_SHIFT, vertTypeGetNumBoneWeights(vertType));
}
// Can't flush after setting gstate_c.submitType below since it'll be a mess - it must be done already.