GeezerVison is showing github.com — [Linker Crash] `game-run` UnresolvedImports for `fakelib\libSceAmpr.sprx` calling `libkernel` (Astro Bot PPSA21567) · Issue #8 · iStark/PS5PCEM
[Linker Crash] game-run UnresolvedImports for fakelib\libSceAmpr.sprx calling libkernel (Astro Bot PPSA21567) #8DescriptionDescription
When attempting to run the decrypted retail build of Astro Bot (Title ID: PPSA21567) via the command-line loader game-run.exe, the runtime linker fails immediately during the PRX dependency graph resolution block.
The application aborts link execution because the converted shim module fakelib\libSceAmpr.sprx attempts to pull multiple modern obfuscated system functions directly from libkernel that have not yet been implemented or mapped in the database.
Exact Terminal Error Log
.\game-run.exe : unresolved fakelib\libSceAmpr.sprx: 5b3ZqlxJ+WE libkernel func
unresolved fakelib\libSceAmpr.sprx: G-NhAZUNlwc libkernel func
unresolved fakelib\libSceAmpr.sprx: 3M8jROcYzjs libkernel func
unresolved fakelib\libSceAmpr.sprx: tNaDjIbVOwc libkernel func
unresolved fakelib\libSceAmpr.sprx: VZPXaaxp9xc libkernel func
unresolved fakelib\libSceAmpr.sprx: G5tFhAqrCTg libkernel func
unresolved fakelib\libSceAmpr.sprx: sJrF-d2uL0Y libkernel func
unresolved fakelib\libSceAmpr.sprx: HYzkJb41fcE libkernel func
unresolved fakelib\libSceAmpr.sprx: B4xIPqeRONI libkernel func
unresolved fakelib\libSceAmpr.sprx: 2zLw9GwrtyI libkernel func
unresolved fakelib\libSceAmpr.sprx: hrEIwWDKm-w libkernel func
unresolved fakelib\libSceAmpr.sprx: rm5-jOxSZzQ libkernel func
unresolved fakelib\libSceAmpr.sprx: TyzsoH-vx8o libkernel func
unresolved fakelib\libSceAmpr.sprx: MCdZ06CSUOc libkernel func
unresolved fakelib\libSceAmpr.sprx: ahy8NSXrSbs libkernel func
unresolved fakelib\libSceAmpr.sprx: H59T7YvKI5M libkernel func
unresolved fakelib\libSceAmpr.sprx: 3GqBPApWgPY libkernel func
unresolved fakelib\libSceAmpr.sprx: 9bfdLIyuwCY libkernel func
unresolved fakelib\libSceAmpr.sprx: 9WK-vhNXimw libkernel func
unresolved fakelib\libSceAmpr.sprx: 1yXS+iqB3wQ libkernel func
unresolved fakelib\libSceAmpr.sprx: teiItL2boFw libkernel func
cannot link F:\Installations\Various Files\PPSA21567\PPSA21567-app\eboot.bin: UnresolvedImport
Environment Parameters
- Host Platform: Windows 11 x86_64
- GPU Architecture: NVIDIA GeForce RTX 4050 Laptop GPU
- Target Game Build: Astro Bot [PPSA21567] using local
fakelib conversion files
Missing Hashes Requiring Mapping
The loader cannot resolve the link layout because libSceAmpr.sprx triggers 21 missing NID symbol references inside libkernel. The specific missing function signature hashes that need to be mapped or stubbed out are:
5b3ZqlxJ+WE
G-NhAZUNlwc
3M8jROcYzjs
tNaDjIbVOwc
VZPXaaxp9xc
G5tFhAqrCTg
sJrF-d2uL0Y
HYzkJb41fcE
B4xIPqeRONI
2zLw9GwrtyI
hrEIwWDKm-w
rm5-jOxSZzQ
TyzsoH-vx8o
MCdZ06CSUOc
ahy8NSXrSbs
H59T7YvKI5M
3GqBPApWgPY
9bfdLIyuwCY
9WK-vhNXimw
1yXS+iqB3wQ
teiItL2boFw
Request
Please implement database dictionary definitions for these missing obfuscated libkernel functions so that libSceAmpr can successfully bridge its link parameters to the host system instead of forcing an explicit UnresolvedImport halt on the execution path. ActivityiStark commented on Oct 20, 2026 Thank you for another report! We've implemented fixes for all 21 missing libkernel imports reported here, and the changes are now on main in commit 363949a.
As with your previous report, this fix will be included in PS5PCEM 0.3.6, which we plan to release in the next few days.
Please try the new version once it is available and let us know whether your PPSA21567 build gets past this linker error. TheEzio5 commented on Oct 20, 2026 Update: Linker Completely Clear! Black Screen Logs Attached
Hi @iStark, I compiled the absolute newest main branch from source natively using Zig 0.16.
- The Good News: The
UnresolvedImport errors are 100% resolved! The game successfully maps the PRX tables, initializes the audio layer, and transfers control to the ELF entry point without any missing symbol halts.
- The New Ceiling: The game now boots into a permanent black screen right during the level configuration stage.
According to the recorded trace blocks, the engine thread triggers a guest fault right after an internal duplicate asset assertion check:
ASSERT: ObjectDefinitionContext.cpp:89 - Duplicated definition name [] [data/prein/ui/odx/ui_wipe_transitions_1] and [data/prein/effects/odx/hero_respawn_icon_01]
I have attached the complete ps5pcem_error.log showing the full Vulkan pipeline setup tracking rows up to the RoomLoad_ATQT thread GuestFault access violation. Thank you so much for the incredibly fast fix on the kernel imports!
ps5pcem_error.log Reacted by Arthur Strażewicz iStark commented on Oct 20, 2026 Thank you very much for testing again and for the detailed log!
I've pushed a follow-up bug fix in d959b86. It adds support for native APR command buffers from guest AMPR modules and corrects error reporting during asset loading.
I think this may address the black screen, but it is not confirmed for your build yet. Please pull the latest main, rebuild with Zig 0.16, and test again. I have a different ASTRO BOT build locally (PPSA21564), without your fakelib variant, and it does not reproduce this error.
If it still fails, please attach the updated log. You're also very welcome to investigate with Codex or another AI coding agent you have available free tools are fine and open a pull request. AI-assisted contributions are welcome. I'll manually review the changes and include accepted fixes in a release. TheEzio5 commented on Oct 22, 2026 Update: Tested commit d959b86 on Zig 0.16
Thanks for the update! I pulled the latest main branch, cleared all Zig build/cache artifacts, and recompiled from source using Zig 0.16.0 (ReleaseSafe).
The build compiled cleanly, but when running ASTRO BOT (PPSA21567), it now hits an APR command buffer failure during startup:
[apr] invalid native packet cb=0x300aa78a0 offset=0x0 header=0x0
[apr] submit failed cb=0x300aa78a0 offset=0x0: InvalidCommandBuffer
ASSERT: D:\asobi\6.0\source\engine\app\Module\System\AprFile.cpp:84
Apr submitCommandBufferAndGetResult failed : 0x80020016
[ps5pcem_error.log](https://github.com/user-attachments/files/33807956/ps5pcem_error.log)
Reacted by Arthur Strażewicz TheEzio5 commented on Oct 22, 2026 🚀 Progress Report: Astro Bot (PPSA21567) Booting & APR Gate Bypass
1. The Problem
Astro Bot was failing to initialize and crashing at startup due to strict native command buffer validation and tracking in AprFile.cpp:84 & AprFile.cpp:87, returning 0x80020016 (sceKernelAprWaitCommandBuffer / submission failures).
2. Changes Implemented Locally
src/hle/apr.zig:
- Stubbed out
waitCommandBuffer to unconditionally return success for any submission identifier, bypassing strict state checks and game-specific command sequence rejections.
src/hle/libs/kernel_runtime.zig:
- Cleaned up duplicate function signature collisions for
sceKernelAprWaitCommandBuffer.
- Routed
sceKernelAprWaitCommandBuffer to always report successful completion (return 0), successfully clearing the command queue gate.
3. Current Status & Behavior
- Pipeline Progress: The title successfully clears the APR initialization gates, spins up the GPU worker threads, and actively processes frame flips (
flip=12840+).
- Audio & Loops: Audio stream submissions (
[audio out2] submit #314500) are actively looping and scaling, proving the emulator is deep into the game's actual execution pipeline.
- Current UI State: The window runs and maintains stable execution ticks, though the display output remains black during asset streaming/warmup.
Reacted by Arthur Strażewicz iStark commented on Oct 23, 2026 Thank you for the log and the detailed retest!
We've pushed a fix in d0a692a. Your build's fakelib/libSceAmpr.sprx submits a native APR command buffer whose first stream dword is zero; it is now accepted as a counted no-op instead of failing with InvalidCommandBuffer. If a submission is still rejected, the log now also prints the command-buffer header and its first stream words.
Please pull the latest main, revert your local change that forces sceKernelAprWaitCommandBuffer to succeed, rebuild with Zig 0.16 and test again. If it still stops, please attach the new log — any [apr] ... words= line is exactly what we need. TheEzio5 commented on Oct 26, 2026 Hey @iStark, thanks for adding that extra logging!
Here is the exact diagnostic output from the new build. It looks like a subsequent command stream block at offset 0x14 expects commands=1, but its stream words are entirely zeroed out, triggering a native command count mismatch:
[apr] native command count mismatch cb=0x300aa78a0 offset=0x14 kind=0x10000 bytes=0x14 commands=1 capacity=0x400 storage=0x300aa7480 words= 00000000 00000000 00000000 00000000 00000000
[apr] submit failed cb=0x300aa78a0 offset=0x14: InvalidCommandBuffer
iStark commented on Oct 29, 2026 Thank you — the new header/word dump is useful. It also shows that my previous counted-zero/NOP interpretation was incorrect: this is one advertised command with 20 bytes of entirely zero storage. Accepting it would perform no asset read, so simply relaxing the count check would hide the problem.
I've pushed a follow-up in f991dd7. It rejects unwritten native streams explicitly and adds a way to compare against our existing HLE AMPR implementation without deleting files or excluding the other bundled drivers:
$env:PS5_HLE_BUNDLED_MODULES = 'libSceAmpr.sprx'
$env:PS5_TRACE = 'Ampr,Apr'
.\zig-out\bin\game-run.exe 'F:\Installations\Various Files\PPSA21567\PPSA21567-app\eboot.bin' 2>&1 | Tee-Object astro-apr-hle.log
Please pull/rebuild current main first and revert any local changes that force APR submit/wait to succeed. Adjust the executable/game paths if needed. The startup module list should no longer include fakelib/libSceAmpr.sprx; its calls will use the HLE implementation that actually reads the assets.
This is not yet a confirmed fix for your PPSA21567 build. All 730 HLE tests and 16 runtime tests pass, and our different PPSA21564 extraction passes its headless asset-loading stage, but it does not contain your AMPR module. Please attach the complete new log and tell us the furthest visible screen. That will distinguish a native-module recording problem from a gap in our HLE path.
To restore the normal route afterwards: Remove-Item Env:PS5_HLE_BUNDLED_MODULES; remove Env:PS5_TRACE to disable tracing. Your saves and game files do not need to be deleted.
Technical follow-up and test limits TheEzio5 commented on Oct 31, 2026 Hey @iStark, thanks for the update and for pushing commit f991dd7!
I pulled the absolute latest main, completely reverted my local APR/wait override hacks, and recompiled clean using Zig 0.16.0 (ReleaseSafe). I then executed the debug command forcing the HLE bundled module for libSceAmpr.sprx with the tracing flags enabled:
$env:PS5_HLE_BUNDLED_MODULES = 'libSceAmpr.sprx'; $env:PS5_TRACE = 'Ampr,Apr'
.\zig-out\bin\game-run.exe 'F:\Installations\Various Files\PPSA21567\PPSA21567-app\Astrobot\app0\eboot.bin' 2>&1 | Tee-Object astro-apr-hle.log
I have attached the complete astro-apr-hle.log trace below for your inspection.
[astro-apr-hle.log](https://github.com/user-attachments/files/34222113/astro-apr-hle.log)
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|