[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-96077":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":14,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":16,"starSnapshotCount":16,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},96077,"prosper","mattias800\u002Fprosper","mattias800","A user-space PlayStation 5 to PC compatibility layer for Linux, Windows, and macOS.",null,"https:\u002F\u002Fgithub.com\u002Fmattias800\u002Fprosper","C++",132,5,6,546,0,39.93,false,"main","2026-09-20 04:01:32","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fprosper-logo.png\" alt=\"prosper\" width=\"256\">\n\u003C\u002Fp>\n\n# prosper\n\n**A user-space PlayStation 5 → PC compatibility layer.** Think *Proton\u002FWine, but for PS5*: prosper\nruns PS5 (Prospero) game binaries on Linux (primary) and Windows (secondary) by reimplementing the\nconsole's OS, ABI, and GPU stack on the host — **not** by emulating a CPU.\n\n> ⚠️ **Experimental research project.** It is not a general-purpose game runner yet. Tested retail\n> titles currently reach different milestones and still expose substantial compatibility gaps. See\n> [Game compatibility](COMPATIBILITY.md) for title-by-title results and known blockers.\nProgress blog, newest first: [`BLOG.md`](BLOG.md).\n\n## Screenshots\n\nReal retail PS5 titles running under prosper on Linux — direct, unmodified captures from the frontend\n(no post-processing), retained at each title's native output resolution. Each reaches the milestone noted\nin [Game compatibility](COMPATIBILITY.md).\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fmessenger.webp\" alt=\"The Messenger — first level gameplay\">\u003Cbr>\n  \u003Cem>\u003Cstrong>The Messenger\u003C\u002Fstrong> — first level, native 1920×1080\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fdead-cells.webp\" alt=\"Dead Cells — Prisoners' Quarters gameplay\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Dead Cells\u003C\u002Fstrong> — controllable Prisoners' Quarters\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fblasphemous2.webp\" alt=\"Blasphemous 2 — first playable room\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Blasphemous 2\u003C\u002Fstrong> — first playable room\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fevergate.webp\" alt=\"Evergate — first tutorial room gameplay\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Evergate\u003C\u002Fstrong> — first tutorial room\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fgris.webp\" alt=\"GRIS — opening gameplay\">\u003Cbr>\n  \u003Cem>\u003Cstrong>GRIS\u003C\u002Fstrong> — opening gameplay, native 1920×1080\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fsyberia-profile.webp\" alt=\"Syberia: Remastered — profile menu with its full-width 3D scene restored; exposure remains incorrect\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Syberia: Remastered\u003C\u002Fstrong> — profile menu and restored 3D scene, still overexposed, native 1920×1080\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fspace-adventure-cobra.webp\" alt=\"Space Adventure Cobra — tutorial combat\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Space Adventure Cobra — The Awakening\u003C\u002Fstrong> — tutorial combat, native 1920×1080\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fblue-prince-hall.webp\" alt=\"Blue Prince — Day One entrance hall\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Blue Prince\u003C\u002Fstrong> — Day One entrance hall, native 1920×1080\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fterminator.webp\" alt=\"Terminator 2D: NO FATE — attract-mode gameplay\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Terminator 2D: NO FATE\u003C\u002Fstrong> — attract-mode gameplay\u003C\u002Fem>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fdragon-quest-vii-onboarding.webp\" alt=\"Dragon Quest VII Reimagined — first-run System Settings 1\u002F4 onboarding\">\u003Cbr>\n  \u003Cem>\u003Cstrong>Dragon Quest VII Reimagined\u003C\u002Fstrong> — first-run System Settings 1\u002F4 onboarding, native 3840×2160\u003C\u002Fem>\n\u003C\u002Fp>\n\n> These illustrative screenshots are captures of prosper's own rendered output; the games' artwork remains\n> the property of its respective owners. No game files, assets, keys, or data are redistributed in this\n> repository — you must supply your own legally-obtained dump.\n\n## Why no CPU emulation?\n\nThe PS5 is an x86-64 (AMD Zen 2) machine, so guest game code runs **natively** on any modern PC.\nprosper is therefore shaped like Wine, not like an emulator. The engineering is:\n\n- **Loading** Sony's `SELF`\u002F`ELF` module format and linking multiple modules into one address space,\n- **HLE** (high-level emulation) of the PS5 system libraries (`libkernel`, `libc`, `libSceAgc`,\n  `libScePad`, `libSceSaveData`, `libSceNp`, the dialog\u002FIME libraries, …) by thunking to the host's\n  real facilities (libc, pthreads, `mmap`, `futex`, Vulkan, …),\n- **ABI translation** where the guest's FreeBSD\u002FSysV conventions differ from the host, and\n- **Graphics translation:** PS5 **AGC** command streams → Vulkan, including a from-scratch\n  **RDNA2 → SPIR-V shader recompiler** and the RDNA2 texture-tiling \u002F block-compression decoders.\n\nBecause the PS5 and Steam Deck \u002F AMD Linux machines share the same RDNA2 GPU family, Linux is the\nnatural primary target and the long-term dream is running on that hardware.\n\n## Status\n\nprosper boots **multiple real retail titles** from user-supplied, **unencrypted-segment** dumps. The\ntested set spans multiple engines and exercises the loader, host-side OS\u002FABI layer, services, input,\naudio, and graphics stack. See [Game compatibility](COMPATIBILITY.md) for exact per-title progress.\n\n**Boot & runtime (host-side OS \u002F ABI \u002F HLE):**\n- ✅ Parses `SELF`\u002F`ELF`, builds a relocatable image, resolves Sony **NID**-hashed imports, links the\n  game's modules with a global export table + per-import HLE stubs, and runs the Sony CRT + C++ global\n  constructors.\n- ✅ Enough `libkernel`\u002F`libc` for real memory management (virtual + direct + flexible memory, guard\n  pages), threads (pthreads, TLS, mutexes\u002Fconds, event flags, semaphores, `sync_on_address` futex),\n  scheduling, time, AIO + positioned file I\u002FO (with `\u002Fapp0` path translation), and locale\u002Fctype.\n- ✅ Boots several engine families into their running frame loop and real GPU submission — **Unity \u002F\n  IL2CPP** (loads the C# metadata, spins up the full IL2CPP GC + worker thread pool, drives Unity's\n  `GfxDevice` bring-up), **Unreal Engine**, and Rockstar's **RAGE** — with several titles reaching\n  interactive menus or gameplay.\n- ✅ System services the game gates on: user\u002Fpad service, SaveData (real per-slot memory blocks),\n  AvPlayer \u002F AJM lifecycle, common dialogs + IME (with an optional real SDL3 dialog frontend), NP \u002F\n  online (honest signed-out), system-parameter (language) — implemented as faithful behaviors, not\n  success-returning stubs.\n\n**Graphics (AGC → Vulkan):**\n- ✅ **AGC command frontend:** `sceAgcCreateShader` (relocates the embedded RDNA2 shader ELFs) and the\n  submit path; a real submitted `Dcb` is decoded (→ PM4 packets) and folded into a GPU register-state,\n  with GPU-completion (EOP) events and DMA\u002Ffence writes delivered on the guest's own timeline\n  (regression-locked by tests).\n- ✅ **RDNA2 → SPIR-V shader recompiler** (we recompile the GPU ISA, not emulate it): full scalar\u002F\n  vector ALU (float\u002Fint\u002Fbitwise\u002Fconvert\u002Fcompare\u002Fselect\u002Fbitfield\u002Fpack), `SCC`, **divergent control\n  flow** (EXEC-mask predication, `saveexec`\u002Frestore, `execz` if-then and loop exits), `SMEM`\n  constant\u002Fdescriptor loads, `MUBUF` vertex-fetch + load\u002Fstore, `MIMG` `image_sample`\u002F`_l`\u002F`_lz`\u002F\n  `image_load`, `LDS` + barriers, `EXP` render-target\u002Fposition\u002Fparam exports, and `VINTRP`\n  interpolation. Descriptors that spill into the **Extended User Data (EUD)** area are resolved. Every\n  SPIR-V-emitting entry point declared in the graphics headers — the recompiler stages and the\n  hand-assembled compute modules alike — is `spirv-val`-gated in CI by `tools\u002Fspv_validate`, which\n  fails both when a module is invalid and when a new emitter is added without one. (The pre-baked\n  glslang modules in `tests\u002F` are fixtures, not emitters, and are covered by the Vulkan validation\n  layer instead.)\n- ✅ **Texture decode:** GFX10 `SW_4KB_S` \u002F `SW_64KB_S` de-swizzle for all element sizes (1\u002F2\u002F4\u002F8\u002F16 B,\n  derived from the authoritative addrlib table) plus BC1–BC7 and BC6H block decompression, honoring\n  the T# format, `DST_SEL` channel swizzle, and the paired S# sampler (filter \u002F wrap \u002F anisotropy \u002F\n  LOD \u002F border).\n- ✅ **Frame spine → live renderer:** decoded register-state → `render_state` \u002F `vk_translate` →\n  `resolve_pipeline_state` → real `VkGraphicsPipeline`s, with topology, blend (incl. separate-alpha),\n  depth, stencil, per-MRT color-write-mask, the game's real fast-clear color, and a render-to-texture\n  cache for multi-pass composites — all driven from the decoded registers and pixel-verified.\n\n**Frontend:** `prosper-app` is a windowed player (SDL3 window + Vulkan present + audio sink +\nevdev\u002FSDL3 controllers + real message\u002Ferror\u002FIME dialogs), sharing the same boot + render core as the\nheadless `boot_trace`.\n\nDevelopment is **agentic-first**: correctness is verified programmatically — a broad suite of\n**self-checking tests** under `ctest` (including a headless Vulkan\u002Fllvmpipe harness that runs recompiled shaders and asserts\nnumeric\u002Fpixel results, and per-opcode round-trip disassembly checks), a **golden-image snapshot guard**\nthat boots a real title and pixel\u002Fcontent-asserts an exact frame, cross-platform CI (Linux +\nWindows\u002FMinGW), structured logs, and purpose-built tracing tooling — never by hand.\n\n## Legal \u002F ethical\n\n- **No game files, keys, or copyrighted Sony code are included** in this repository, and none ever\n  will be. You must supply your own legally-obtained dump.\n- prosper only works with **unencrypted** module segments; it contains **no** console decryption\n  keys and performs no circumvention of Sony's cryptography.\n- Sony's library interfaces are reimplemented from published symbol\u002FNID information, clean-room style,\n  the way Wine reimplements Win32.\n- This is an independent interoperability \u002F preservation research project, not affiliated with or\n  endorsed by Sony Interactive Entertainment.\n\n## Building\n\n### Linux\n\nRequires a C++20 compiler, CMake, and Ninja. A Vulkan loader is needed for the graphics tests\n(the CI\u002Fheadless path uses the `llvmpipe` software ICD). `spirv-tools` provides `spirv-val`, which\nthe `spv_validate` test requires — it is the strict SPIR-V validation gate and fails rather than\nskipping when the validator is missing. The native AvPlayer backend uses FFmpeg for MP4\ndemux\u002Faudio conversion and VA-API for hardware video decode. On Ubuntu\u002FDebian:\n\n```sh\nsudo apt install ninja-build pkg-config libvulkan-dev libavformat-dev libavcodec-dev \\\n  libavutil-dev libswresample-dev libswscale-dev libva-dev spirv-tools\n```\n\n```sh\ncd prosper\ncmake -G Ninja -B build-linux\ncmake --build build-linux\nctest --test-dir build-linux --no-tests=error  # unit + boot + Vulkan-execution tests\n```\n\nAdd `-DPROSPER_APP=ON -DPROSPER_AUDIO_SDL3=ON -DPROSPER_PAD_SDL3=ON` to build the windowed frontend\nwith audio and controller support. CMake fetches SDL3 when it is not installed. Video source-open\nrequires a working VA-API render device by default; select a non-default node with\n`PROSPER_AVP_VAAPI_DEVICE=\u002Fdev\u002Fdri\u002FrenderD129`. `PROSPER_AVP_ALLOW_SOFTWARE=1` is an explicit\ndiagnostic fallback, not normal playback behavior.\n\n### Windows core\n\nThe supported Windows toolchain is 64-bit MinGW-w64 UCRT. In an MSYS2 UCRT64 shell:\n\n```sh\npacman -S --needed git mingw-w64-ucrt-x86_64-gcc \\\n  mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja \\\n  mingw-w64-ucrt-x86_64-spirv-tools\ncmake -S prosper -B prosper\u002Fbuild-windows-core -G Ninja \\\n  -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_DISABLE_FIND_PACKAGE_Vulkan=TRUE\ncmake --build prosper\u002Fbuild-windows-core\nctest --test-dir prosper\u002Fbuild-windows-core --output-on-failure --no-tests=error\n```\n\nThis builds and tests the headless core without SDL or Vulkan. GitHub Actions runs the same UCRT64\npath on every push and pull request.\n\n### Windows app\n\nInstall the Vulkan development packages in the same UCRT64 shell, then enable the app and its SDL3\nbackends:\n\n```sh\npacman -S --needed mingw-w64-ucrt-x86_64-vulkan-headers \\\n  mingw-w64-ucrt-x86_64-vulkan-loader\ncmake -S prosper -B prosper\u002Fbuild-windows-app -G Ninja \\\n  -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPROSPER_APP=ON \\\n  -DPROSPER_AUDIO_SDL3=ON -DPROSPER_PAD_SDL3=ON\ncmake --build prosper\u002Fbuild-windows-app --target prosper-app\n.\u002Fprosper\u002Fbuild-windows-app\u002Fprosper-app.exe --test-pattern --frames 120\n```\n\nFrom native PowerShell, the repository launcher supports WinLibs or MSYS2 MinGW plus an installed\nVulkan SDK and performs configure, build, and launch in one command:\n\n```powershell\n.\\prosper\\scripts\\run-windows.ps1 .\\PPSA24651-app0\n```\n\nThe detailed native build, screenshot, and diagnostic recipe is in\n[`WINDOWS_PORT_HANDOFF.md`](prosper\u002Fdocs\u002FWINDOWS_PORT_HANDOFF.md).\n\n## Windows download and use\n\nA `v*` tag publishes `prosper-windows-x64.zip` and its `.sha256` on the repository's\n[GitHub Releases page](https:\u002F\u002Fgithub.com\u002Fmattias800\u002Fprosper\u002Freleases). The archive contains\n`prosper-app.exe`, a one-command PowerShell launcher, and its usage guide; it never contains games,\nfirmware, or keys.\n\nAfter extracting the archive, launch an unpacked `app0` directory:\n\n```powershell\n.\u002Fstart-prosper.ps1 'D:\u002FPS5\u002FPPSA24651-app0'\n```\n\nThere is no game-picker or settings UI yet. The launcher supplies the required guest environment,\ncreates local save data, and enables the Vulkan window, audio, physical controller, and keyboard\noverlay. Use `.\u002Fstart-prosper.ps1 -TestPattern -Frames 120` to test the frontend without a game.\nSee [`WINDOWS_RELEASE.md`](prosper\u002Fdocs\u002FWINDOWS_RELEASE.md) for requirements, direct-executable use,\nsave-data selection, the complete keyboard mapping, recordings, and troubleshooting.\n\n## Linux download and use\n\nA `v*` tag publishes `prosper-linux-x86_64.AppImage` and `prosper-linux-x86_64.tar.gz`, each with a\n`.sha256`, on the same [GitHub Releases page](https:\u002F\u002Fgithub.com\u002Fmattias800\u002Fprosper\u002Freleases). Take the\nAppImage for normal desktop use and the tarball when the AppImage runtime cannot start (it needs\nFUSE). Like the Windows archive, neither contains games, firmware, or keys.\n\n```bash\nchmod +x prosper-linux-x86_64.AppImage\nPROSPER_GUEST_ARGS=-force-gfx-direct \\\n  .\u002Fprosper-linux-x86_64.AppImage --dump ~\u002Fps5\u002FPPSA24651-app0\n```\n\nThe tarball ships `start-prosper.sh`, the counterpart of the Windows launcher, which supplies that\nenvironment for you:\n\n```bash\ntar -xzf prosper-linux-x86_64.tar.gz && cd prosper-linux-x86_64\n.\u002Fstart-prosper.sh ~\u002Fps5\u002FPPSA24651-app0\n```\n\nFFmpeg, libva and the Vulkan loader travel inside the archive because their sonames differ on every\ndistribution; SDL3 is statically linked. What you must supply is **glibc 2.39 or newer** and your\nGPU's Vulkan driver — no archive can carry either. `.\u002Fprosper-linux-x86_64.AppImage --list-games --games-dir ~\u002Fps5` prints\nthe titles it can see and exits without opening a window, which is the quickest way to confirm a\ndownload runs. See [`LINUX_RELEASE.md`](prosper\u002Fdocs\u002FLINUX_RELEASE.md) for the full requirements,\nkeyboard mapping, recordings, and troubleshooting, and\n[`prosper\u002Fpackaging\u002Flinux\u002F`](prosper\u002Fpackaging\u002Flinux\u002FREADME.md) for how the archives are built.\n\n## Repository layout\n\n```\nprosper\u002F\n  src\u002Fself\u002F       SELF\u002FELF parsing → relocatable module image\n  src\u002Floader\u002F     multi-module linker + global export table\n  src\u002Fhle\u002F        HLE of Sony libraries (libc, libkernel, AGC\u002Fgraphics, services), NID hashing\n  src\u002Fhost\u002F       host execution: per-platform image mapping, ABI stubs, fault handling\n  src\u002Fgpu\u002F        AGC→Vulkan: PM4 decode, command processor, render state, vk_translate,\n                  texture tiling + BC decode, and the RDNA2→SPIR-V shader recompiler\n  frontends\u002F      shared boot+render core, the windowed prosper-app, SDL3 audio\u002Fdialog, controllers\n  tools\u002F          boot_trace, self_dump, shader_histo, snapshot (golden-image guard), spv_validate, …\n  tests\u002F          unit + boot + Vulkan-execution tests (run under ctest)\n  docs\u002F           ARCHITECTURE, ROADMAP, GRAPHICS, RENDER_LOOP, VERIFICATION, and per-frontier logs\n```\n\nThe July 2026 renderer profiling results, correctness constraints, rejected experiments, and next\narchitecture step are recorded in\n[`RENDERER_PERFORMANCE_2026_07.md`](prosper\u002Fdocs\u002FRENDERER_PERFORMANCE_2026_07.md).\n\n## License\n\nSee [LICENSE](LICENSE) if present. Game files, assets, keys, and Sony SDK symbols are the property of\ntheir respective owners and are not redistributed here; the documentation screenshots are captures of\nprosper's own rendered output, shown for illustration.\n","prosper 是一个用户态的 PlayStation 5 游戏兼容层，旨在让原生 PS5（Prospero 架构）游戏二进制程序在 Linux、Windows 和 macOS 主机上直接运行。它通过在用户空间重实现 PS5 的操作系统接口（ABI）、系统调用层及 GPU 驱动栈（非 CPU 指令级模拟），而非传统仿真方式达成兼容。项目采用 C++ 实现，当前处于实验性研究阶段，已验证多款独立游戏可启动并达到基础可玩状态，但存在显著兼容性限制。适用于对主机平台移植机制研究、逆向工程学习及轻量级 PS5 游戏跨平台运行探索等技术场景。",2,"2026-09-09 02:30:11","trending"]