mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
Brings in main up to 9958d26 (homebrew runtime, POSIX wrappers in
libkernel, sce_module guest modules and --skip-sce-module, the --to-intel
general pipeline, libSceRandom, libSceRtc, libScePosixForWebKit,
libRenoirCore, test wiring).
Resolutions where both sides implemented the same thing:
- libkernel pthread: main's structure (lazy static initialisation,
destroyed markers, MutexOperations/CondOperations, mutex protocol and
condattr clock) with this branch's TimedWait deadlines and condition
(precise timed lock/wait on Windows), wait tracing, the adaptive mutex
type 4, POSIX default ERRORCHECK mutexes, EDEADLK/EPERM results instead
of throws, and condition clocks honoured for absolute timeouts.
- libc locale: the guest Dinkumware ABI (_Locimp, facet vtables, short
ctype/case tables, locale ids, stream storage) is kept because guest code
inlines those layouts; main's C character functions are kept on top.
- libc stdio/strings/math: main's stream functions (guest FILE status
sync), strerror/perror, remove, formatting, string and math exports win
over this branch's duplicates.
- libc paths: main's working directory with this branch's path aliases
resolved on the normalised guest path.
- libkernel file: this branch's sceKernel* results as SCE errors, main's
POSIX wrappers and both fstat helpers.
- relinker: this branch's stub lowering keeps its trampolines through the
main executable path; guest modules refuse lowerings that need stubs.
- AGC driver: main's rendering wait is executed by this branch's workers.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_0177gthrWEBBfBu5xJDXgBfo
4.2 KiB
4.2 KiB
Project technical debt
Build
- Building on Windows requires a specific version of mingw - MinGW-w64 GCC 15.2.0 (
winlibs-gcc15,x86_64-ucrt-posix-seh) - Even compiled prx libraries on Windows require nearby (static linking of these dependencies causes conflicts):
- libgcc_s_seh-1.dll
- libstdc++-6.dll
- libwinpthread-1.dll
Silent stubs
Throughout the project, every function at every stage either does exactly what it's supposed to or throws an exception. Everywhere... except:
- libSceSaveDataDialog.native
- libSceCommonDialog
- The shader recompiler skips baryctric coordinates (is not even passed to SpirvTargetOptions at row 212).
Unknown function info
- zARR5aCmkoY (libSceAgc) - unknown name, signature
- qj7QZpgr9Uw (libSceAgc) - unknown name
- fd5Bp5tGTgo (libSceAgc) - unknown name
- dolOmWH+huQ (libSceAgc) - unknown name
- V++UgBtQhn0 (libSceAgc) - unknown name
- gQkqkLttcpw (libSceAgc) - unknown name, signature
- sceKernelInternalMemoryGetModuleSegmentInfo (libkernel) - unknown signature
- sceLibcInternalBacktraceForGame (libSceLibcInternal, implemented in libc) - unknown signature
- sceLibcInternalHeapErrorReportForGame (libSceLibcInternal, implemented in libc) - unknown signature
- __progname (libkernel) - unknown data export
Functional
- There's no way to specify keyboard and mouse input mapping when using a gamepad. The default mapping is always used.
- Shader recompilation currently occurs right before it was transferred to Vulkan with caching, but should be moved to the relinker stage. For this purpose, shader/recompiler was written completely independently from libs/prx.
- The executable file that relinker generates opens the console when launched, which is inconvenient for playability.
- Relinker doesn't add an icon to the generated executable. This should be done without adding dependencies (only standard).
--to-inteldoes not lower the register forms of EXTRQ/INSERTQ (0F 79, 4 or 5 bytes, too short for a jump) nor MONITORX/MWAITX/CLZERO/RDPRU/MCOMMIT; the lowering fails the relink instead. SHA-NI is not substituted.- The length-changing path of the instruction rewriter is not used by the converter: it does not adjust VEX/0F38/0F3A RIP-relative operands, data-to-code references (relocations, FDEs, jump tables) or segment sizes, so every substitution keeps the instruction length.
- The Linux placement of the
--to-intelstubs in the ELF patcher is covered only by a synthetic test. - The libc SSE4a trap emulation on Windows is superseded by
--to-inteland remains only until the relinked title has been verified without it. --to-intellowerings that need a stub section are rejected forsce_moduleguest modules: the guest module builder does not pass stub sites to the guest module writer.- The game can expect its modified prx from the
sce_module/sce_modulesfolder - this support is not implemented.