Repository navigation
Console Five Pro v0.0.8proplus
·
127 commits
to main
since this release
Console Five Pro v0.0.8proplus — an independent rebranded build of CapyPS5 v0.0.3, the first PlayStation 5 emulator for Android (built on KytyPS5 and the FEX x86-64 JIT).
New in v0.0.8proplus — driver compatibility, per-game saves, screen format
- Custom Vulkan drivers no longer fail at startup (status 321): Turnip and PanVk lack some optional Vulkan features, and requesting them used to make vkCreateDevice fail before the first frame. Optional features are now requested only when the driver reports them, samplers fall back to plain filtering without anisotropy, and a warning lists whatever the driver is missing.
- Game imports are validated: picking a .pkg or any non-executable used to freeze the app for minutes while it copied, and then fail to boot. Files are now checked for the ELF/SELF executable magic before a byte is written, free space is verified, and a card shows the import progress.
- Per-game save export and import: each game's options panel has its own export/import rows, so a save can be moved without knowing which title id it belongs to (also reads that game's folder out of a full-export zip).
- Screen format setting: Default (full screen), 16:9 or 5:4 letterboxing, applied live while playing (Settings → Graphics).
- The Settings sidebar scrolls on small screens, so the About entry is always reachable.
- Clearer crash reports: a null-pointer crash inside the game's own code is now reported as a game-side crash — like it would behave on console — instead of a raw host exception.
From v0.0.8pro — the stability release: crashes fixed, auto-save, saves import/export
Crash fixes (status-321 exits, freezes and native crashes)
- Malformed GPU packets no longer kill the emulator: the const-RAM out-of-bounds write (up to 48 KB past the buffer) is bounded, and both PM4 parsers reject bad packets gracefully instead of hitting EXIT_NOT_IMPLEMENTED — a corrupt or edge-case command buffer now logs one diagnostic and continues.
- Corrupted / truncated ELF and SELF images fail cleanly: every Seek/Read result in the loader is verified (a truncated file used to parse as zeros), table reads are bounds-checked,
Elf64::Saveno longer dereferences a null section table on SELF images, and dynamic-linker tables and relocation targets are validated before use. - Cheat and param files abort the process load, not the emulator: malformed cheat data is rejected without exceptions (the core builds with
-fno-exceptions), and a bad param.sfo no longer takes the app down. - Guest page faults resolve on a dedicated fault thread: the old path took locks and logged from inside the SIGSEGV handler, which self-deadlocked when the faulting thread held one of those locks; now the handler only queues the fault and a worker performs the cache invalidation.
- Thread lifecycle races closed: reference-counted file descriptors (use-after-free, racing close), thread-safe lazy singleton initialization, a synchronized stubbed-import registry, serialized game-patch state, and second game launch no longer
std::terminates. - Destroying a still-running host thread no longer terminates the emulator, and the Windows high-resolution-timer HANDLE leak is closed.
- Unreal Engine games no longer die at boot with LowLevelFatalError (sceKernelBatchMap 0x8002000c): memory reserved through the kernel memory pool (sceKernelMemoryPoolExpand — e.g. one Unreal Engine souls-like) is now a legal direct-memory source. Borrowed pool pages cannot be double-owned by a pool commit, are returned when the last direct view goes away, and pool expansion release keeps working unchanged.
- A slow detached thread can no longer stall new thread creation: the reaper joins outside the pool mutex.
- Config reads outside the config lifetime fall back to defaults instead of dereferencing null.
PthreadJoinwrites the exit value through a verified-writable pointer, reporting EFAULT like the real kernel instead of SIGSEGV on a wild guest pointer.- is_mapped no longer calls
feofon a null FILE* when /proc is unavailable. - The desktop launcher's update download no longer divides by zero (SIGFPE) when a release size is unknown.
Data safety
- Writes larger than 4 GiB are chunked and completed — previously rejected with EINVAL or silently narrowed to 32 bits on the iovec path.
- Auto-save: a zip snapshot of
_SaveDataper game every 5 minutes and on exit (3 newest kept), with a Settings toggle and an "Auto-saved HH:mm" line in the pause menu. - Import / export all game saves as one zip (Settings → Game saves), with traversal and size guards — move your progress between devices.
Android
- Exit button fixed: confirming Exit in the pause menu now really exits on the second tap — touch users no longer need the gamepad Confirm key.
- Synchronized, reference-counted native-window hand-off: detaching the view while the emulator builds its Vulkan surface can no longer use-after-free the window.
- Build hardening: ffmpeg prebuilt zips are pinned to SHA-256 and mirrored in-repo (no more build breakage when the upstream release moves), actions pinned to commit SHAs.
Carried over from v0.0.7pro
Own package name com.consolefivepro, Present mode setting (Mailbox / VSync / Uncapped), big-core pipeline workers, sequential-read game files, and the Vulkan device-selection fixes (Adreno 740 driver-676 and Turnip a660 logs).
Requirements
- Android 12 or later, arm64 device, Vulkan 1.3 GPU.
- 12 GB of RAM recommended.
- Your own PS5 game dumps (a folder with
eboot.binandsce_sys/).
Console Five Pro includes no games, BIOS, firmware or Sony keys, and needs none of them. Not affiliated with Sony Interactive Entertainment; PlayStation and PS5 are trademarks of their respective owners.
Credits
- Upstream CapyPS5 v0.0.3 by Ghael-V; this project is an independent rebranded build of it.
- KytyPS5 and the original Kyty by InoriRus, and the FEX project.
License: GPL-2.0-only — full source: https://github.com/maxi000q/ConsoleFivePro (tag: v0.0.8proplus)