GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

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) #8

New issue
Copy link
New issue
Copy link
Open
Open
[Linker Crash] game-run UnresolvedImports for fakelib\libSceAmpr.sprx calling libkernel (Astro Bot PPSA21567)#8
Copy link

Description

@TheEzio5
TheEzio5
opened on Oct 19, 2026
Issue body actions

Description

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.

Activity

  1. iStark
    added a commit that references this issue on Oct 20, 2026

    Implement kernel AMM imports for converted Astro Bot modules

    363949a
  2. iStark commented on Oct 20, 2026

    @iStark
    iStark
    on Oct 20, 2026
    Owner
    More actions

    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.

    Reacted by TheEzio5
  3. TheEzio5 commented on Oct 20, 2026

    @TheEzio5
    TheEzio5
    on Oct 20, 2026
    Author
    More actions

    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
  4. iStark
    added a commit that references this issue on Oct 20, 2026

    Execute native APR command buffers from guest AMPR modules

    d959b86
  5. iStark commented on Oct 20, 2026

    @iStark
    iStark
    on Oct 20, 2026
    Owner
    More actions

    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.

    Reacted by TheEzio5
  6. TheEzio5 commented on Oct 22, 2026

    @TheEzio5
    TheEzio5
    on Oct 22, 2026
    Author
    More actions

    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
  7. TheEzio5 commented on Oct 22, 2026

    @TheEzio5
    TheEzio5
    on Oct 22, 2026
    Author
    More actions

    🚀 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
  8. iStark
    added a commit that references this issue on Oct 23, 2026

    Accept counted zero dwords in native APR command streams

    d0a692a
  9. iStark commented on Oct 23, 2026

    @iStark
    iStark
    on Oct 23, 2026
    Owner
    More actions

    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.

  10. TheEzio5 commented on Oct 26, 2026

    @TheEzio5
    TheEzio5
    on Oct 26, 2026
    Author
    More actions

    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
    
    
  11. iStark commented on Oct 29, 2026

    @iStark
    iStark
    on Oct 29, 2026
    Owner
    More actions

    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

  12. TheEzio5 commented on Oct 31, 2026

    @TheEzio5
    TheEzio5
    on Oct 31, 2026
    Author
    More actions

    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)
    
    
    
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      You are visitor 01402503 — GeezerVison does not store the pages you look up.
      Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.