Improved Unity engine compatibility. Certain Unity engine games now progress past the splash screen to the first rendered frame (currently resulting in a black screen).
(New Super Lucky's tale Log:
[LOADER][INFO] Vulkan VideoOut hid splash
[LOADER][INFO] Vulkan VideoOut presented first frame: 3840x2160
[LOADER][TRACE] Import#900000: libc:memcpy (Q3VBxCXhUHs) rdi=0x000000010050D854 rsi=0x00000001006005A0 rdx=0x0000000000000020 rcx=0x000001D1A0E48A98 ret=0x000001D19D1D5895
[LOADER][INFO] Scheduled guest thread 'Thread-1D18954C160' handle=0x000001D18954C160 entry=0x0000000800381120 arg=0x000000060129E840 priority=700 host_priority=Normal affinity=0x7F
[LOADER][INFO] Scheduled guest thread 'EnlightenWorker' handle=0x000001D1895501A0 entry=0x0000000800B8EFE0 arg=0x00000006002BFB20 priority=700 host_priority=Normal affinity=0x7F
[LOADER][INFO] Vulkan VideoOut presented guest frame: image=0x0000000010AF0000 1920x1080)
What's Fixed:
- Fixed Orbis OS argument mapping in KernelSyncOnAddressV1 to correctly map Rsi to the op code and Rdx to the expectedValue, matching the FreeBSD _umtx_op signature.
- Added a 1-second cooperative delay loop to KernelSyncOnAddressV1 and KernelWaitSema (for 0-timeout polls) to prevent instant-retry polling loops from starving the host CPU.
- Patched sceRtcGetCurrentClockLocalTime and sceRtcGetCurrentTick to use the clamped virtual clock, preventing TRC R5089 watchdog timeouts during asynchronous shader compilation.
- Fixed VideoOut VBlank dispatcher initialization and corrected Vulkan Image Memory Barriers to dynamically track CurrentLayout during VRAM transfers.