fix(libSceRazorCpu): add sceRazorCpuNamedSync export

Resolve the XCuZoBSVFG8 import required by Killzone Liberation by adding sceRazorCpuNamedSync as a no-op returning success when capture is inactive.

Extend the RazorCpu behavior test and document the NID source and unverified console signature and capture behavior.

Co-authored-by: Copilot <[email protected]>
This commit is contained in:
julienlgyandCopilot authored and Dean Galvin committed 2026-10-17 13:06:36 +13:00
1 parent e751dd2057
commit f4a33b7960
3 files changed
+7

No files matched your search

+4
View File
@@ -31,6 +31,10 @@ int APS5_VABI sceRazorCpuPushMarker(const char* label, uint32_t color, uint32_t
return 0;
}
int APS5_VABI sceRazorCpuNamedSync(void) {
return 0;
}
int APS5_VABI sceRazorCpuPushMarkerStatic(const char* name, uint32_t color, uint32_t flags) {
(void)name;
(void)color;
+2
View File
@@ -8,6 +8,7 @@ int APS5_VABI sceRazorCpuJobManagerDispatch(const void* args);
int APS5_VABI sceRazorCpuJobManagerJob(const void* args);
int APS5_VABI sceRazorCpuJobManagerSequence(const void* args);
int APS5_VABI sceRazorCpuPushMarker(const char* label, std::uint32_t color, std::uint32_t flags);
int APS5_VABI sceRazorCpuNamedSync(void);
int APS5_VABI sceRazorCpuPushMarkerStatic(const char* name, std::uint32_t color, std::uint32_t flags);
int APS5_VABI sceRazorCpuPopMarker(void);
int APS5_VABI sceRazorCpuFlushOccurred(std::uint64_t* timeSpentInFlush);
@@ -27,6 +28,7 @@ int main() {
Require(sceRazorCpuJobManagerDispatch(nullptr) == 0);
Require(sceRazorCpuJobManagerJob(nullptr) == 0);
Require(sceRazorCpuJobManagerSequence(nullptr) == 0);
Require(sceRazorCpuNamedSync() == 0);
Require(sceRazorCpuPushMarkerStatic("outer", 0x80ffffffu, 2) == 0);
Require(sceRazorCpuPushMarkerStatic("inner", 0x80ffffffu, 2) == 0);
Require(sceRazorCpuPopMarker() == 0);
+1
View File
@@ -10,3 +10,4 @@
- [sceRazorCpuFlushOccurred](../../../core/libs/prx/libSceRazorCpu/Export.cpp) (libSceRazorCpu) - signature and return values (1 = flush since the last call, 0 = none) from [SharpProspero](https://github.com/SvenGDK/SharpProspero); without a capture nothing is flushed, so it returns 0 and writes 0 cycles to the optional out pointer (whether the real library writes it when nothing was flushed is unknown)
- [sceRazorCpuPushMarkerStatic, sceRazorCpuPopMarker](../../../core/libs/prx/libSceRazorCpu/Export.cpp) (libSceRazorCpu) - signatures from PPSA26344's calls; (name, color, flags) assumed for the push; both do nothing without a capture
- [sceRazorCpuPlotValue, sceRazorCpuWriteBookmark](../../../core/libs/prx/libSceRazorCpu/Export.cpp) (libSceRazorCpu) - signatures (series, float value) and (label, optional description) from [SharpProspero](https://github.com/SvenGDK/SharpProspero), matching PPSA06320's calls; both do nothing without a capture and return 0
- [sceRazorCpuNamedSync](../../../core/libs/prx/libSceRazorCpu/Export.cpp) (libSceRazorCpu) - NID `XCuZoBSVFG8` is named by [shadPS4](https://github.com/shadps4-emu/shadPS4/blob/0fe263a4760dfbfa973366890061749b4af0de97/src/core/libraries/razor_cpu/razor_cpu.cpp); its stub takes no arguments and returns 0, as here without a capture. The console signature and capture behavior are unverified