Skip to content

PS5PCEM 0.3.4

Latest

Choose a tag to compare

@iStark iStark released this 08 Oct 23:26
· 5 commits to main since this release

PS5PCEM 0.3.4

This release fixes a launcher regression that prevented games from starting
in packaged installations. Updating both the launcher and runner is recommended.

It also adds working font rendering, fixes Jurassic Park's font-atlas startup,
implements MemoryPool and AMPR counters, and expands RDNA2 shader support.

These are the changes since 0.3.3, covering the October 7–9 development
commits. The portable ZIP and per-user installer include the updated launcher,
runner and PKG extractor. All three applications and the installer carry
timestamped SHA-256 Authenticode signatures using the same
Artur Strazewicz / PS5PCEM certificate as the previous release.

Important launcher fix

The launcher could pass its own executable path as the runner's working
directory because a shortened Windows path lacked its terminating zero.
Windows rejected CreateProcessW with ERROR_DIRECTORY before the game
started. The development zig-out\bin layout masked the defect, while ordinary
portable and installed layouts exposed it. The directory is now correctly
terminated.

If Windows refuses to create the runner process, the launcher now displays
Windows' explanation, the numeric error code and advice for the relevant
failure. The messages cover application-control policy, security-software
blocking, access errors and damaged executables, in all eight launcher
languages. The status line also retains the error number.

Fonts and Jurassic Park

  • Font HLE now owns real FreeType faces and provides glyph metrics,
    rasterization, clipping, scaling, slant and kerning, with bounded caches.
    An embedded Noto Sans fallback and dependency license notices are included.
  • Valid characters absent from the font use its .notdef glyph. This fixes
    Jurassic Park Classic Games Collection failing on U+007F while building
    its Latin-1/ImGui atlas, which terminated CarbonMainThread and left the
    remaining threads waiting before normal GPU submissions.
  • Two October 8 development launches passed the former failure. The first
    level rendered and the map overlay responded to keyboard input. This is a
    startup regression fix for an already listed game, not a new full-playthrough
    verification. Font writing-line APIs remain incomplete.

Jurassic Park — first level at the park gates after the font fix, October 8.
This is an unedited development capture, not a fresh FPS measurement of the
packaged release.

Jurassic Park first-level gameplay after the font-atlas startup fix

Firmware and memory

  • MemoryPool: implement the six missing reserve, expand, commit, decommit,
    batch and block-statistics exports. Pools use shared physical backing,
    preserve data across decommit/recommit, account for ownership and support
    ordered commit/decommit/protection batches with rollback and partial-result
    reporting. Batch MOVE remains unsupported.
  • PNG encoding: implement query/create/encode/delete. Pitched RGBA/BGRA
    input can produce 8-bit RGB/RGBA PNGs with row filtering, compression levels
    0–9, bounded writes and valid PNG/zlib checksums. Palette, grayscale, 16-bit
    and interlaced output remain unsupported.
  • RTC: add calendar validation, current-clock offsets, days-in-month,
    Windows FILETIME conversion and tick addition for ticks, microseconds,
    seconds, minutes, hours and weeks. Correct the invalid-value error code and
    reject arithmetic overflow without modifying output. Host DST conversion
    is not added.
  • AMPR: complete three command-size query exports and implement 128
    software counters with field-preserving stores, bitwise operations, wrapping
    addition, coherent pairs, reads and execution-time timestamps. Correct the
    ordinary versus _04_00 counter argument signatures.
  • Unsatisfied counter waits retain a private command snapshot and resume
    when the dependency is satisfied, preserving later writes and completion
    events. Reset cancels and joins bounded workers. WaitOnAddress, hardware
    queue priorities and cycle-accurate accelerator timing remain incomplete.

Details: MemoryPool,
PNG/RTC/export coverage,
AMPR counters.

Graphics and shader coverage

  • Packed 11/11/10 UNORM blending: copy a single-sample target into a storage
    buffer, unpack its channels, apply guest blending in the fragment shader,
    and repack the result. This fills a format gap in Vulkan's fixed-function
    blending. It does not establish that all Yōtei lighting defects are fixed.
  • DS instructions: add DS_ORDERED_COUNT, increment/decrement atomics,
    DS_MSKOR, high-half byte/halfword accesses and DS_PERMUTE/DS_BPERMUTE.
    Ordered count updates once per active guest wave. Exact wave-launch ordering,
    multi-dword ordered counts and GDS permutes remain unsupported.
  • MIMG multi-texel loads: implement BY2/BY4 and PCK2/PCK4, including
    explicit mip levels for the validated native 2D formats. Typed integer
    bindings, result packing, bounds and register preservation are covered.
    Corresponding stores and unvalidated format combinations remain unsupported.
  • Horizontal gathers: implement IMAGE_GATHER4H and
    IMAGE_GATHER4H_PCK, including typed texture access, packed raw texels,
    result widths, offsets and edge handling for the validated subsets.
  • Scalar shader calls: implement bounded S_SWAPPC_B64 and S_CALL_B64
    subroutines, nested calls, full 64-bit return addresses and verified AGC
    fetch-shader calls. Resource analysis follows the callee. Invalid boundaries,
    recursion, escaping/clobbered links and unsupported dynamic calls are
    rejected. This is not an unrestricted dynamic call stack.
  • Output defaults: report 1920×1080 SDR output with the supported default
    refresh mode; keep 120 Hz unavailable. An unset game preset now requests
    performance mode. Internal render resolution remains controlled by each
    game; frame diagnostics also report large internal color targets.

Details: multi-texel loads,
horizontal gathers,
scalar calls.

Validation and current limits

The included development checks on the RTX 3070 Ti pass 174 multi-texel
dispatches / 178,176 result words
, 1,242 horizontal-gather dispatches /
635,904 words
, and 42 scalar-call dispatches / 21,504 words. These are
native Vulkan instruction probes, not game FPS benchmarks. The scalar-call
checkpoint passes 259/259 GPU-analysis and 232/232 Vulkan module tests.
The RDNA2 suite passes 271/281, retaining the same ten existing failures
and one reported leak
; the full suite is not green.

The final release builds and packaging checks are recorded in the
release verification report.

No new game is graded playable or completable by these instruction checks,
and no new game FPS result is claimed. Existing Subnautica, GTA III, Little
Nightmares, Big Helmet Heroes and Yōtei measurements remain dated development
results. First-use compilation, texture churn, incomplete rendering and
long-session stability still need work. See the
compatibility table.

Windows 10 version 2004 or newer, an x86-64-v3 CPU (AVX2, BMI2, FMA) and a
current Vulkan 1.2 driver are required. AVX-512 is not required. No games,
firmware, keys, saves or driver caches are included. The signing certificate
is self-signed, so Windows trust/SmartScreen warnings may still appear;
SHA256SUMS.txt contains the download hashes.

All changes since 0.3.3
· Earlier releases