Your games on the TV. Your library in your hands.
33 native cores · RetroArch & EmulationStation · A local WebUI
Download · Get started · Supported systems · What’s new
It exists so you can play the games you own on the console you own.
- Piracy is not condoned.
- No games, BIOS files, console firmware or decryption keys are included, and they never will be.
- Use only legally obtained backups of games you own, made yourself from your own discs, cartridges or digital purchases.
- Use only BIOS and firmware files dumped from hardware you own.
- Requests for, or links to, games, BIOS files, firmware or keys are not welcome in this project's issues or discussions.
Your collection, beautifully organized.
Browse, add games, and manage artwork from your phone or computer.
A native RetroArch homebrew title for jailbroken PlayStation 5 consoles, made by Mihawk. Play through RetroArch or EmulationStation, with Vulkan graphics and up to four controllers.
Latest release: v1.0.0-beta.1. Read what’s new or download the package.
Warning
Designed around ShadowMountPlus 1.7beta4 or later. Use ShadowMountPlus 1.7beta4 or newer for supported USB and extended-storage access.
RetroArch or EmulationStation. Pick your preferred way to browse and play.
Press Square to remember your choice. Hold L1 during startup to return to the picker, or change it in WebUI Settings → Start with.
Explore: Get started · WebUI · Systems · Controls · Graphics · Your files · Known limits · Build
- Install the complete title folder. Extract a release and copy
PPSA99169to your homebrew launcher’s location, usually/data/homebrew/PPSA99169/. A compatible jailbreak and launcher must already be set up. - Choose your frontend. Start RetroArch or EmulationStation from the picker. Press Square to remember your choice; hold L1 during startup to return to the picker. XMB and RGUI are available in RetroArch.
- Open the WebUI. Scan its QR code or visit
http://<PS5-IP>:6769from a device on the same network. - Add your games. Use Games → + Add Game for one game backup, or Content for folders and multi-file games. Install any required BIOS files in the system folders, then load your game on the console.
No games, BIOS files, firmware or decryption keys are included. Use your own legally obtained backups and system files dumped from hardware you own. Piracy is not condoned; requests for these files are not welcome in issues or discussions.
| Menu | Open the WebUI QR code |
|---|---|
| Picker | Press Triangle; Triangle again or Circle closes it |
| RetroArch XMB | WebUI tab to the left of Settings |
| RetroArch RGUI | WebUI at the top of the main menu |
| EmulationStation | WebUI in the main menu |
Stay connected while switching between the picker, RetroArch, and EmulationStation. A supported ELF loader or homebrew launcher keeps the WebUI running across menus; without one, it is available while RetroArch runs.
The WebUI is a local HTTP service without a login. Use a trusted network and do not forward port 6769 to the internet.
33 native cores, grouped below by family. Compatibility and performance vary by game.
Vulkan (GPU) cores render on the GPU. Software cores render on the CPU, with Vulkan displaying the result.
PicoDrive also supports Mega Drive, Mega-CD, Master System, and Pico. FinalBurn Neo includes Sega System 16/32; ScummVM supports many LucasArts, Sierra, and other adventures.
Use matching arcade sets: MAME targets 0.289, and FBNeo needs sets compatible with its version. Azahar requires decrypted content. Only native cores built for this port are compatible; desktop cores and other PS5 distributions’ cores are not interchangeable. No games or BIOS files are bundled.
None of the games I tested with is provided. Use only legally obtained backups of games you own, and BIOS files dumped from your own hardware: piracy is not condoned.
In DeSmuME and Azahar, slide a finger on the touchpad to move the stylus. Press to touch the screen; hold the press while sliding to drag. Release to lift the stylus. A light tap does not click.
Up to four controllers are supported. Save controller mappings for each game or core.
RetroArch presents at the display resolution. Internal rendering is chosen to leave room for emulation and memory use; it need not reach native 4K. Saved core, folder and game options take priority over these compiled defaults.
| Core | Default internal resolution | Anti-aliasing |
|---|---|---|
| PPSSPP | 6× · 2880 × 1632 | 8× MSAA |
| Dolphin | 4× | No MSAA |
| PS5SX2 | 4× · approximately 1440p (up to 8×; 6× is 4K) | Core default |
| Beetle PSX HW | 8× | MSAA off |
| Mupen64Plus-Next | 4× | Core default |
| Azahar | 6× · 2400 × 1440 top screen | Core default |
| DeSmuME | 4× · 1024 × 768 per screen | Core default |
| Flycast | 4.5× · 2880 × 2160 | Per-pixel transparency |
Other cores retain native rendering, scaled for the display. MAME uses a 4K target for vector output; that path still needs console acceptance.
Higher resolutions and anti-aliasing use more memory. If a game struggles, lower its internal resolution or disable MSAA.
To adopt these defaults on an existing installation, change the listed options in the WebUI or Quick Menu → Core Options. Reset Core Options resets every option for that core, so use individual controls if you want to keep other choices.
Release builds bundle offline Slang shaders, Mega Bezel, koko-aio and standard overlays. Load GPU presets through Quick Menu → Shaders, choose a CPU filter in Settings → Video, or choose artwork in Settings → On-Screen Display → On-Screen Overlay. CPU filters apply to software-rendered cores; hardware-rendered cores use GPU shaders.
Presets and overlays are included for offline use. Compatibility varies by core and preset; original notices are retained.
/app0 is the running title’s mount. Over FTP, use your installed title folder,
usually /data/homebrew/PPSA99169/.
| Folder or file | Purpose |
|---|---|
content/ |
Your content; available to WebUI uploads and downloads |
content/Saturn/ |
Saturn disc images; created automatically |
system/ |
General BIOS and system data |
system/Saturn/ |
Saturn BIOS files; created automatically |
system/pcsx2/bios/ |
PlayStation 2 BIOS (your own dump) |
system/fbneo/ |
FinalBurn Neo system files |
cores/ and info/ |
Native cores and their metadata |
config/retroarch.cfg |
Live RetroArch configuration |
config/webui.cfg |
Saved global WebUI preferences |
config/<core>/ |
Core options and RetroArch overrides, per core and per game |
config/remaps/<core>/ |
Controller remaps, per core and per game |
library/<system>/ |
Scraped box art, screenshots and details, shared by every frontend |
savefiles/ and savestates/ |
Save RAM and save states |
shaders/shaders_slang/ |
GPU presets, including Mega Bezel and koko-aio |
filters/ |
Built-in CPU filter configurations |
overlays/ |
Standard overlay artwork and configurations |
radv-shader-cache/ |
Reusable compiled graphics pipelines |
Saturn setup: place your own BIOS dump, mpr-17933.bin (US/Europe) or
sega_101.bin (Japan), in system/Saturn/. Keep a disc’s .cue and all referenced tracks together,
then load the .cue. The default system path is routed to the Saturn folder;
an explicitly selected custom system directory remains unchanged.
Genesis Plus GX’s Sega CD BIOS files and Beetle PSX HW’s optional BIOS files
belong in the general system folder, with the filenames listed by their metadata.
BIOS uploads use FTP; the WebUI only exposes content/.
Everything you put in content/ and system/ must be your own legally
obtained backups: games you own, and BIOS or firmware dumped from hardware you
own. Piracy is not condoned.
Ordinary scripted updates preserve content and saved settings. Back up your
files before replacing or removing a title. The file browser opens on INTERNAL,
the title folder. With ShadowMountPlus
1.7beta4 or later running, it also lists each USB drive (USB 0 to USB 7,
/mnt/usb0 onward) and extended storage (EXTENDED 0 and 1, /mnt/ext0 and
/mnt/ext1), only when a drive is mounted there. Without it, the sandbox hides them
and EXTERNAL (/mnt) may be empty.
Startup, controller input, audio, saved settings, and representative games have been tested on PS5. Compatibility and long-session testing are ongoing.
- Azahar: a crash when closing content, switching to Azahar, and starting a game remains under investigation.
- RetroAchievements and NetPlay: RetroArch starts its bundled Lapy service automatically through the console's local ELF loader, then reuses it on later launches. No Payload Manager autoload entry is needed. Files stay in their installation folder; existing
/app0settings continue to work. Without the local loader or verified elevation, outgoing online features remain unavailable. See service setup and online verification. - Shader presets, disc swapping, and rumble still need broader testing.
Recorded evidence accompanies verified changes. For a bug report,
include the core, file format, settings and reproduction steps. Preserve
retroarch.log and trace.txt before reopening RetroArch: the frontend log
is replaced on each launch. Remove private paths, addresses and credentials
before sharing captures.
Build requirements and commands
The current build uses Linux host tools and the project's cached public PS5 SDK.
Start with bash tools/doctor.sh for host-tool checks. You also need curl,
patch, pkg-config, ELF utilities such as readelf, and working host C/C++
compilers with sanitizer support for the tests. The target scripts currently use
/usr/bin/clang through the SDK wrappers.
Prepare and build PS5_Vulkan following its own instructions, normally as a sibling directory:
workspace/
├── PS5_RetroArch/
├── PS5_Vulkan/ # The RADV release archive, its link recipe and dependencies
├── PS5_Mesa/ # My Mesa fork, which PS5_Vulkan builds RADV from
└── PS5_PayloadSDK/ # My payload SDK fork and its platform layer, at a pinned revision
The cores that needed changes for the console build from my forks of them
(Libretro_PS5SX2,
PS5_BeetlePSX,
PS5_Mupen64Plus,
PS5_BeetleSaturn,
PS5_VICE,
PS5_MAME,
PS5_DeSmuME,
PS5_Azahar with
PS5_Dynarmic,
PS5_Flycast,
PS5_PicoDrive,
PS5_BeetlePCE,
PS5_BeetlePCFX,
PS5_BeetleVB,
PS5_BeetleNGP,
PS5_BeetleWSwan,
PS5_PokeMini,
PS5_Handy,
PS5_VirtualJaguar,
PS5_Stella,
PS5_A5200,
PS5_ProSystem,
PS5_DOSBoxPure,
PS5_Opera,
PS5_PUAE,
PS5_NeoCD,
PS5_ScummVM), each pinned by revision in
its build script. The script uses the sibling checkout when there is one, and
github.com/mihawk-99/<fork> otherwise.
The title build consumes PS5_Vulkan's RADV release archive
(tools/build-radv.sh release there, built from PS5_Mesa at the revision it
pins) and links it with that project's tools/radv-link.sh; it does not build
the driver for you. PS5_VULKAN_DRIVER=ps5vk links ps5vk's driver, Vulkan
runtime and shader-compiler archives instead, and RADV_ARCHIVE names another
RADV archive. PS5_VULKAN_DIR can select an alternative checkout for the
build; some host tests currently require the sibling layout above. Driver
dependencies and setup requirements are documented in the driver repository.
From the RetroArch repository root:
make deps
export PS5_PAYLOAD_SDK="$PWD/.deps/native/ps5-payload-sdk"
export PS5_CLANG=/usr/bin/clang
bash tools/fetch-retroarch.sh
bash tools/build-title.sh # Create the artifacts inspected by the host tests
bash tools/verify.shThe five gates are format → unit → build → integration → evidence. The build
pins RetroArch 1.22.2, fetches core sources/metadata with checked hashes, builds the
frontend and thirty-three cores, and stages the native title in dist/PPSA99169/.
The initial dependency/source fetch requires network access.
For an already configured checkout:
bash tools/build-title.sh # Build/stage the frontend and all shipped cores
make genesis-plus-gx # Build and ABI-check one core only
# Other core targets: fceumm, mgba, snes9x, fbneo
bash tools/build-ppsspp.sh # The larger cores have scripts of their own:
# build-ppsspp.sh, build-dolphin.sh, build-ps5sx2.sh,
# build-beetle-psx.sh, build-mupen64plus.sh,
# build-beetle-saturn.sh, build-vice.sh,
# build-mame.sh, build-desmume.sh, build-azahar.sh,
# build-flycast.sh, build-picodrive.sh,
# build-beetle-pce.sh, build-beetle-pcfx.sh,
# build-beetle-vb.sh, build-beetle-ngp.sh,
# build-beetle-wswan.sh, build-pokemini.sh,
# build-handy.sh, build-virtualjaguar.sh,
# build-stella.sh, build-a5200.sh, build-prosystem.sh,
# build-dosbox-pure.sh, build-opera.sh, build-puae.sh,
# build-neocd.sh, build-scummvm.shWhen adding or updating a core, rebuild the title too: the frontend's native
import table and build identity depend on the shipped core binaries. Source
patches live in patches/; fetched and generated trees stay in ignored
vendor/, .deps/, build/ and dist/ directories.
Authors and acknowledgements
This port builds on substantial upstream and PS5 homebrew work. Credits below identify project authors and teams; their repositories retain the full contributor lists and original notices.
| Project / author | Contribution |
|---|---|
| Mihawk — PS5_RetroArch, PS5_Vulkan, PS5_Mesa, PS5_PayloadSDK | This native RetroArch port and core integration; the PS5 Vulkan drivers (the RADV port and ps5vk); the Mesa fork with the PS5 winsys; the payload SDK fork and its platform layer; the PS5 forks of the cores below |
| RetroArch / libretro contributors | Frontend, libretro API, menus, video pipeline and shared libraries |
| BlackBearReloaded — ProsperoLight | Project starting point and reference for native PS5 input and audio integration |
| BlackBearReloaded — PS5 Native App Boilerplate | Underlying native title tooling, ELF/FSELF conversion and runtime-shim foundation |
| John Törnblom and ps5-payload-dev contributors | Public PS5 Payload SDK, toolchain and API stubs; PacBrew ports infrastructure |
| John Törnblom / ps5-payload-dev — websrv | Reference for per-core fetch/build/stage scripts; this port uses a separate native title pipeline |
| BlackBearReloaded — ps5-opengl | Shader-compiler and graphics foundations consumed by PS5_Vulkan; not the active RetroArch video backend |
| Mesa contributors | RADV, the Vulkan driver the title renders through, with its ACO compiler, NIR, the Vulkan runtime and utilities |
| Khronos Group | Vulkan API headers and specification |
| RetroArch assets contributors and the M+ Fonts project | Packaged XMB assets and font; original notices retained |
| LLVM / Clang contributors, zlib authors Jean-loup Gailly and Mark Adler | Compilation and compression tooling |
EmulationStation uses ES-DE and the Alekfull NX theme. Touchpad handling builds on PS5_Proton; the picker uses PS5_VulkanTemplate’s UI foundation.
Color icons: Microsoft Fluent Color. System artwork: Linear ES-DE. Region flags: flag-icons. Utility icons: Lucide. Full attribution and licences are in artwork credits.
| Core | Authors / maintainers credited by upstream |
|---|---|
| FCEUmm | FCEU Team, CaH4e3 and contributors |
| mGBA | endrift and contributors |
| Snes9x | Snes9x Team and contributors |
| FinalBurn Neo | Team FBNeo and contributors |
| Genesis Plus GX | Charles MacDonald, Eke-Eke and contributors |
| PPSSPP | Henrik Rydgård and contributors |
| Dolphin, libretro/dolphin | Dolphin Emulator Project and contributors; libretro core maintainers |
| PCSX2, PS5SX2 | PCSX2 Dev Team and contributors; Swordpdf (PS5SX2) |
| Beetle PSX HW, Beetle Saturn | The Mednafen authors and contributors; libretro Beetle maintainers |
| Mupen64Plus-Next | Mupen64Plus team and contributors; libretro core maintainers; ParaLLEl-RDP and ParaLLEl-RSP by Hans-Kristian Arntzen (Themaister) and contributors |
| VICE | The VICE Team and contributors; libretro core maintainers |
| MAME | MAMEdev and contributors |
| DeSmuME | DeSmuME team and contributors |
| Azahar, Dynarmic | Azahar contributors, building on Citra; Dynarmic by merryhime and contributors |
| Flycast | flyinghead and contributors, building on reicast and nullDC; PS5 port begun by rpf16rj |
| PicoDrive | notaz, fDave and the PicoDrive contributors |
| Beetle PCE, Beetle PC-FX, Beetle VB, Beetle NeoPop, Beetle Cygne | The Mednafen authors and contributors; libretro Beetle maintainers |
| PokeMini | JustBurn and contributors |
| Handy | K. Wilkins and contributors |
| Virtual Jaguar | James Hammons and the Virtual Jaguar contributors |
| Stella | Bradford W. Mott, Stephen Anthony and the Stella Team |
| a5200 | The Atari800 team and the a5200 contributors |
| ProSystem | Greg Stanton and contributors |
| DOSBox Pure | Bernhard Schelling, building on DOSBox by the DOSBox Team |
| Opera | The FreeDO authors, the 4DO and Opera contributors |
| PUAE | The UAE, WinUAE and PUAE authors and contributors |
| NeoCD | Laurent Cayrol and contributors |
| ScummVM | The ScummVM Team and contributors |
| libretro core-info | Metadata maintainers and contributors |
This repository's own code is GPL-3.0-or-later (LICENSE). Most source
files carry a copyright and SPDX notice; the ones that do not (for example
src/memory_ps5.cpp and the build scripts in tools/) are under the same licence.
Code inherited from BlackBearReloaded's ps5-native-app-boilerplate and ProsperoLight
is Copyright (C) 2026 BlackBearReloaded, GPL-3.0-or-later. The title's
sce_module/libc.prx is generated by this repository (runtime/).
Every built title folder carries LEGAL.txt (the legal notice above) and
licenses/: the licence texts each part requires, and components.json, which
ties every executable file to the source revision it was built from
(tooling/notices/components.json). The package records public source links and exact revisions for every component.
The release tag contains the build scripts and patches; tools/source-bundle.py
can assemble the corresponding source archives from a prepared build checkout.
Releases up to v0.5.0-alpha.5 were published without licenses/.
The cores keep their own licences, and they differ:
| Licence | Cores |
|---|---|
| GPL-2.0-or-later | FCEUmm, PPSSPP, Dolphin, Beetle PSX HW, Beetle Saturn, Mupen64Plus-Next (with MIT and LGPL parts), VICE, DeSmuME, Azahar (Dynarmic is 0BSD), Flycast, Beetle PCE, Beetle PC-FX, Beetle VB, Beetle NeoPop, Beetle Cygne, Stella, a5200, ProSystem, DOSBox Pure, PUAE, MAME (as a whole; many files BSD-3-Clause) |
| GPL-3.0-or-later | PS5SX2 (PCSX2), PokeMini, Virtual Jaguar, ScummVM |
| LGPL-3.0-or-later | NeoCD |
| Zlib | Handy |
| MPL-2.0 | mGBA |
| Non-commercial licences | Snes9x, FinalBurn Neo, Genesis Plus GX, PicoDrive, Opera (FreeDO's modified LGPL): they may not be sold or used commercially, and FBNeo's forbids asking for donations for a project that uses its code |
The Alekfull NX theme also carries non-commercial restrictions. Artwork credits and licence texts for the WebUI’s icons, flags, and system images are in ICON-CREDITS.txt.
Assets and fonts keep their licences too: the XMB theme is CC-BY-4.0 with the M+
font licence, PPSSPP's fonts are OFL-1.1, and Dolphin's Sys files carry theirs.
The launcher backgrounds (sce_sys/pic0.dds, pic1.dds) are drawn by
tools/make-title-art.py, under this repository's licence.
No games, BIOS files, firmware or keys are included, and piracy is not condoned. Use only legally obtained backups of games you own and system files dumped from hardware you own.
This is an independent homebrew project, not affiliated with or endorsed by Sony Interactive Entertainment, the Khronos Group or the libretro project. PlayStation and PS5 are Sony trademarks. Vulkan is a registered trademark of the Khronos Group Inc.; the RADV port this title uses is not a Khronos-conformant product (see PS5_Vulkan). RetroArch is the libretro project's name and logo, used here to name the frontend this port is built from.
made by Mihawk · Built on the work of the RetroArch, libretro and PS5 homebrew communities.
