# RetroArch for PS5
**Your games on the TV. Your library in your hands.**
33 native cores · RetroArch & EmulationStation · A local WebUI
[Download](https://github.com/mihawk-99/PS5_RetroArch/releases) · [Get started](#get-started) · [Supported systems](#supported-systems) · [What’s new](releases/v1.0.0-beta.1.md)

## PS5 RetroArch is a passion project, not a piracy project.
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](https://github.com/mihawk-99). Play through RetroArch or EmulationStation, with Vulkan graphics and up to four controllers.
**Latest release: [v1.0.0-beta.1](https://github.com/mihawk-99/PS5_RetroArch/releases/tag/v1.0.0-beta.1).** Read [what’s new](releases/v1.0.0-beta.1.md) or [download the package](https://github.com/mihawk-99/PS5_RetroArch/releases/latest).
> [!WARNING]
> **Designed around ShadowMountPlus 1.7beta4 or later.** Use [ShadowMountPlus 1.7beta4](https://github.com/drakmor/ShadowMountPlus/releases/tag/1.7beta4) or newer for supported USB and extended-storage access.
## 
Choose your frontend
**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**.
##
At a glance
| | Made for your collection |
| --- | --- |
|
| **33 cores.** From NES and Mega Drive to Dreamcast, GameCube, PSP, and more. |
|
| **One shared library.** Artwork and game details across RetroArch, EmulationStation, and the WebUI. |
|
| **Easy game setup.** Add a game, find its details, and download missing artwork. |
|
| **DualSense stylus.** Use the touchpad for Nintendo DS and 3DS touchscreen controls. |
**Explore:** [Get started](#get-started) · [WebUI](#webui) · [Systems](#supported-systems) · [Controls](#controls) · [Graphics](#graphics) · [Your files](#your-files) · [Known limits](#what-has-been-verified) · [Build](#build-from-source)
##
Get started
1. **Install the complete title folder.** Extract a release and copy `PPSA99169` to your homebrew launcher’s location, usually `/data/homebrew/PPSA99169/`. A compatible jailbreak and launcher must already be set up.
2. **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.
3. **Open the WebUI.** Scan its QR code or visit `http://:6769` from a device on the same network.
4. **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](#your-files), 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.
### Scan to connect
| 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 |
## 
Your browser companion
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.
| Page | What you can do |
| --- | --- |
|
**Overview** | Check updates, alerts, recent transfers, and quick settings. |
|
**Games** | Browse cover art, search, filter by system or letter, and sort your collection. |
|
**Download Media** | Download artwork and game details for a few games or your whole library. |
|
**Content** | Browse folders, create subfolders, and upload or download files. |
|
**Transfers** | Follow uploads and their results. Downloads appear in your browser’s download manager. |
|
**Settings** | Adjust global preferences, core options, controller mappings, and the startup frontend. |
> The WebUI is a local HTTP service without a login. Use a trusted network and
> do not forward port **6769** to the internet.
## 
Supported systems
**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.
| Family | Systems | Core | Renderer |
| --- | --- | --- | --- |
| **Nintendo** |
**NES / Famicom** | FCEUmm | Software |
| |
**Game Boy**
**Game Boy Color**
**Game Boy Advance** | mGBA | Software |
| |
**SNES / Super Famicom** | Snes9x | Software |
| |
**Nintendo 64** | Mupen64Plus-Next | Vulkan (GPU) |
| |
**GameCube**
**Wii** | Dolphin | Vulkan (GPU) |
| |
**Nintendo DS** | DeSmuME | Software |
| |
**Nintendo 3DS** | Azahar | Vulkan (GPU) |
| |
**Virtual Boy** | Beetle VB | Software |
| |
**Pokémon Mini** | PokeMini | Software |
| **Sony** |
**PlayStation** | Beetle PSX HW | Vulkan (GPU) |
| |
**PlayStation 2** | PS5SX2 | Vulkan (GPU) |
| |
**PlayStation Portable** | PPSSPP | Vulkan (GPU) |
| **Sega** |
**Mega Drive / Genesis**
**Master System**
**Game Gear**
**SG-1000**
**Sega CD** | Genesis Plus GX | Software |
| |
**Sega 32X** | PicoDrive | Software |
| |
**Sega Saturn** | Beetle Saturn | Software |
| |
**Dreamcast**
**NAOMI / NAOMI 2**
**Atomiswave** | Flycast | Vulkan (GPU) |
| **Arcade & SNK** |
**Arcade**
**Neo Geo** | FinalBurn Neo | Software |
| |
**Arcade** | MAME | Software |
| |
**Neo Geo Pocket / Color** | Beetle NeoPop | Software |
| |
**Neo Geo CD** | NeoCD | Software |
| **NEC** |
**PC Engine / TurboGrafx-16 / CD**
**SuperGrafx** | Beetle PCE | Software |
| |
**PC-FX** | Beetle PC-FX | Software |
| **Atari** |
**Atari 2600** | Stella | Software |
| |
**Atari 5200** | a5200 | Software |
| |
**Atari 7800** | ProSystem | Software |
| |
**Atari Lynx** | Handy | Software |
| |
**Atari Jaguar** | Virtual Jaguar | Software |
| **Computers & adventures** |
**Commodore 64** | VICE x64sc | Software |
| |
**Commodore Amiga** | PUAE | Software |
| |
**MS-DOS** | DOSBox Pure | Software |
| |
**Point-and-click adventures** | ScummVM | Software |
| **More consoles** |
**3DO** | Opera | Software |
| |
**WonderSwan / Color** | Beetle Cygne | Software |
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.
##
A stylus in your DualSense
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.
##
Graphics for your display
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.
##
Shaders, filters and bezels
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.
## 
Your files
`/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//` | A folder for each installed system, named as EmulationStation (ES-DE) names it: `psx`, `ps2`, `snes`, `saturn`; 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 options and RetroArch overrides, per core and per game |
| `config/remaps//` | Controller remaps, per core and per game |
| `library//` | 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](https://github.com/drakmor/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.
##
Start a game from a home screen forwarder
A forwarder is a small app with its own home screen tile that launches `PPSA99169` with
launch arguments. The title then starts that game in RetroArch with the core given, instead of
opening the picker or a frontend.
| Argument | Meaning |
| --- | --- |
| `--rom ` or `--rom=` | The content to start: an absolute path (`/mnt/usb0/roms/snes/Game.zip`), or a path inside the title's `content/` folder (`/app0/content/`), such as `snes/Game.zip`. A folder is content for a core that opens folders, one whose info file lists `/` among its extensions: DOSBox Pure (`--rom /mnt/usb0/roms/dos/w95 --core dosbox_pure`), PUAE, VICE. A relative path may not contain `..`. |
| `--core ` or `--core=` | The core to run it with, one of the title's: `snes9x`, `snes9x_libretro`, `snes9x_libretro.so` and `/app0/cores/snes9x_libretro.so` all name `/app0/cores/snes9x_libretro.so`. Without it, the core RetroArch's playlists associate with the content, or else the one core whose info file lists the file's extension (`.sfc` is Snes9x's; a Mega Drive `.md` or `.gen` is Genesis Plus GX's). An extension several cores take (`.cue`, `.chd`, `.iso`, `.zip`, `.bin`) needs `--core`. |
| `--exit-after-game` | When RetroArch quits (Close Content or Quit), the title closes and the console returns to the home screen. Without it, the title then opens as from the home screen. |
```text
--rom "snes/Game (USA).zip" --core snes9x
--rom /mnt/usb0/roms/psx/Game.chd --core mednafen_psx_hw --exit-after-game
```
The game runs as a frontend's game does in game mode (`src/ps5_game.h`): the content and core
are checked the same way, RetroArch starts with `-L ` and its own configuration,
overrides and saves apply, and its log is `retroarch-game.log`. If the content is missing, the
core is not one of the title's, or no core is named and none can be chosen, the reason is
written to `trace.txt` (`forwarder: ... not run: ...`) and the title opens as from the home
screen. A launch that names a mode (`--ps5-mode=...`) wins over `--rom`. The title's own restarts
carry no arguments, so the forwarded game never starts twice. Arguments only reach a new
process: if the title is already running, a forwarder should close it first. Parsing is in
`src/frontend_mode_ps5.cpp`, checked by `tests/frontend_mode_ps5_test.cpp`.
##
Compatibility and known limits
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 `/app0` settings continue to work. Without the local loader or verified elevation, outgoing online features remain unavailable. See [service setup](platform/lapy/README.txt) and [online verification](evidence/online-features/README.txt).
- Shader presets, disc swapping, and rumble still need broader testing.
[Recorded evidence](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 from source
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](https://github.com/mihawk-99/PS5_Vulkan) following
its own instructions, normally as a sibling directory:
```text
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](https://github.com/mihawk-99/Libretro_PS5SX2),
[PS5_BeetlePSX](https://github.com/mihawk-99/PS5_BeetlePSX),
[PS5_Mupen64Plus](https://github.com/mihawk-99/PS5_Mupen64Plus),
[PS5_BeetleSaturn](https://github.com/mihawk-99/PS5_BeetleSaturn),
[PS5_VICE](https://github.com/mihawk-99/PS5_VICE),
[PS5_MAME](https://github.com/mihawk-99/PS5_MAME),
[PS5_DeSmuME](https://github.com/mihawk-99/PS5_DeSmuME),
[PS5_Azahar](https://github.com/mihawk-99/PS5_Azahar) with
[PS5_Dynarmic](https://github.com/mihawk-99/PS5_Dynarmic),
[PS5_Flycast](https://github.com/mihawk-99/PS5_Flycast),
[PS5_PicoDrive](https://github.com/mihawk-99/PS5_PicoDrive),
[PS5_BeetlePCE](https://github.com/mihawk-99/PS5_BeetlePCE),
[PS5_BeetlePCFX](https://github.com/mihawk-99/PS5_BeetlePCFX),
[PS5_BeetleVB](https://github.com/mihawk-99/PS5_BeetleVB),
[PS5_BeetleNGP](https://github.com/mihawk-99/PS5_BeetleNGP),
[PS5_BeetleWSwan](https://github.com/mihawk-99/PS5_BeetleWSwan),
[PS5_PokeMini](https://github.com/mihawk-99/PS5_PokeMini),
[PS5_Handy](https://github.com/mihawk-99/PS5_Handy),
[PS5_VirtualJaguar](https://github.com/mihawk-99/PS5_VirtualJaguar),
[PS5_Stella](https://github.com/mihawk-99/PS5_Stella),
[PS5_A5200](https://github.com/mihawk-99/PS5_A5200),
[PS5_ProSystem](https://github.com/mihawk-99/PS5_ProSystem),
[PS5_DOSBoxPure](https://github.com/mihawk-99/PS5_DOSBoxPure),
[PS5_Opera](https://github.com/mihawk-99/PS5_Opera),
[PS5_PUAE](https://github.com/mihawk-99/PS5_PUAE),
[PS5_NeoCD](https://github.com/mihawk-99/PS5_NeoCD),
[PS5_ScummVM](https://github.com/mihawk-99/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/` 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:
```bash
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.sh
```
The 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.
To include the optional melonDS DS core, build with
`PS5_WITH_MELONDSDS=1 bash tools/build-title.sh`. It uses pinned upstream sources
and the software renderer with a native-memory JIT; DeSmuME remains available.
`bash tools/build-melondsds.sh` builds and ABI-checks the core by itself.
To include the optional SwanStation core, build with
`PS5_WITH_SWANSTATION=1 bash tools/build-title.sh`. It uses pinned upstream sources,
Vulkan and the x64 recompiler, with platform changes adapted from AngelXex's
SwanStationPS5; Beetle PSX HW remains the PlayStation default.
`bash tools/build-swanstation.sh` builds and ABI-checks the core by itself.
The `ps5` microphone driver is the default. A core hears the DualSense microphone
only while it turns its microphone on (melonDS DS while its microphone button is
held, its default), the DualSense mute button silences it, and **Settings → Audio →
Microphone** turns it off for every core. Capture stays in memory; the driver does
not record files or send audio over the network.
In melonDS DS, select `Microphone` as the input mode and `Always` as its button
mode to use the DualSense mute button without assigning another game button.
The core's screen-layout and microphone indicators can be hidden independently
under **On-Screen Display & Notifications**.
The optional melonDS DS port also accepts the DualSense touchpad as a relative
stylus in Joystick or Auto touch mode. Slide to position the cursor, press to
touch, and hold the press while sliding to drag. L2 remains available as Select;
the touchpad click is reserved for the stylus while this core is running.
For an already configured checkout:
```bash
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.sh
```
When 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.
### Frontend, platform and graphics
| Project / author | Contribution |
| --- | --- |
| [Mihawk](https://github.com/mihawk-99) — [PS5_RetroArch](https://github.com/mihawk-99/PS5_RetroArch), [PS5_Vulkan](https://github.com/mihawk-99/PS5_Vulkan), [PS5_Mesa](https://github.com/mihawk-99/PS5_Mesa), [PS5_PayloadSDK](https://github.com/mihawk-99/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](https://github.com/libretro/RetroArch) | Frontend, libretro API, menus, video pipeline and shared libraries |
| [BlackBearReloaded — ProsperoLight](https://github.com/blackbearreloaded/ProsperoLight) | Project starting point and reference for native PS5 input and audio integration |
| [BlackBearReloaded — PS5 Native App Boilerplate](https://github.com/blackbearreloaded/ps5-native-app-boilerplate) | Underlying native title tooling, ELF/FSELF conversion and runtime-shim foundation |
| [John Törnblom and ps5-payload-dev contributors](https://github.com/ps5-payload-dev/sdk) | Public PS5 Payload SDK, toolchain and API stubs; [PacBrew](https://github.com/ps5-payload-dev/pacbrew-repo) ports infrastructure |
| [John Törnblom / ps5-payload-dev — websrv](https://github.com/ps5-payload-dev/websrv) | Reference for per-core fetch/build/stage scripts; this port uses a separate native title pipeline |
| [BlackBearReloaded — ps5-opengl](https://github.com/blackbearreloaded/ps5-opengl) | Shader-compiler and graphics foundations consumed by PS5_Vulkan; not the active RetroArch video backend |
| [Mesa contributors](https://gitlab.freedesktop.org/mesa/mesa) | RADV, the Vulkan driver the title renders through, with its ACO compiler, NIR, the Vulkan runtime and utilities |
| [Khronos Group](https://github.com/KhronosGroup/Vulkan-Headers) | Vulkan API headers and [specification](https://github.com/KhronosGroup/Vulkan-Docs) |
| [RetroArch assets contributors](https://github.com/libretro/retroarch-assets) and the [M+ Fonts project](https://mplusfonts.github.io/) | Packaged XMB assets and font; original notices retained |
| [LLVM / Clang contributors](https://github.com/llvm/llvm-project), [zlib authors Jean-loup Gailly and Mark Adler](https://github.com/madler/zlib) | Compilation and compression tooling |
### Frontends and interface artwork
EmulationStation uses [ES-DE](https://es-de.org/) 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](webui/assets/ICON-CREDITS.txt).
### Emulator cores
| Core | Authors / maintainers credited by upstream |
| --- | --- |
| [FCEUmm](https://github.com/libretro/libretro-fceumm) | FCEU Team, CaH4e3 and contributors |
| [mGBA](https://github.com/libretro/mgba) | endrift and contributors |
| [Snes9x](https://github.com/libretro/snes9x) | Snes9x Team and contributors |
| [FinalBurn Neo](https://github.com/libretro/FBNeo) | Team FBNeo and contributors |
| [Genesis Plus GX](https://github.com/libretro/Genesis-Plus-GX) | Charles MacDonald, Eke-Eke and contributors |
| [PPSSPP](https://github.com/hrydgard/ppsspp) | Henrik Rydgård and contributors |
| [Dolphin](https://github.com/dolphin-emu/dolphin), [libretro/dolphin](https://github.com/libretro/dolphin) | Dolphin Emulator Project and contributors; libretro core maintainers |
| [PCSX2](https://github.com/PCSX2/pcsx2), [PS5SX2](https://github.com/Swordpdf/PS5SX2) | PCSX2 Dev Team and contributors; Swordpdf (PS5SX2) |
| [Beetle PSX HW](https://github.com/libretro/beetle-psx-libretro), [Beetle Saturn](https://github.com/libretro/beetle-saturn-libretro) | The Mednafen authors and contributors; libretro Beetle maintainers |
| [Mupen64Plus-Next](https://github.com/libretro/mupen64plus-libretro-nx) | Mupen64Plus team and contributors; libretro core maintainers; ParaLLEl-RDP and ParaLLEl-RSP by Hans-Kristian Arntzen (Themaister) and contributors |
| [VICE](https://github.com/libretro/vice-libretro) | The VICE Team and contributors; libretro core maintainers |
| [MAME](https://github.com/libretro/mame) | MAMEdev and contributors |
| [DeSmuME](https://github.com/libretro/desmume) | DeSmuME team and contributors |
| [Azahar](https://github.com/azahar-emu/azahar), [Dynarmic](https://github.com/azahar-emu/dynarmic) | Azahar contributors, building on Citra; Dynarmic by merryhime and contributors |
| [Flycast](https://github.com/flyinghead/flycast) | flyinghead and contributors, building on reicast and nullDC; PS5 port begun by rpf16rj |
| [PicoDrive](https://github.com/libretro/picodrive) | notaz, fDave and the PicoDrive contributors |
| [Beetle PCE](https://github.com/libretro/beetle-pce-libretro), [Beetle PC-FX](https://github.com/libretro/beetle-pcfx-libretro), [Beetle VB](https://github.com/libretro/beetle-vb-libretro), [Beetle NeoPop](https://github.com/libretro/beetle-ngp-libretro), [Beetle Cygne](https://github.com/libretro/beetle-wswan-libretro) | The Mednafen authors and contributors; libretro Beetle maintainers |
| [PokeMini](https://github.com/libretro/PokeMini) | JustBurn and contributors |
| [Handy](https://github.com/libretro/libretro-handy) | K. Wilkins and contributors |
| [Virtual Jaguar](https://github.com/libretro/virtualjaguar-libretro) | James Hammons and the Virtual Jaguar contributors |
| [Stella](https://github.com/stella-emu/stella) | Bradford W. Mott, Stephen Anthony and the Stella Team |
| [a5200](https://github.com/libretro/a5200) | The Atari800 team and the a5200 contributors |
| [ProSystem](https://github.com/libretro/prosystem-libretro) | Greg Stanton and contributors |
| [DOSBox Pure](https://codeberg.org/schelling/dosbox-pure) | Bernhard Schelling, building on DOSBox by the DOSBox Team |
| [Opera](https://github.com/libretro/opera-libretro) | The FreeDO authors, the 4DO and Opera contributors |
| [PUAE](https://github.com/libretro/libretro-uae) | The UAE, WinUAE and PUAE authors and contributors |
| [NeoCD](https://github.com/libretro/neocd_libretro) | Laurent Cayrol and contributors |
| [ScummVM](https://github.com/scummvm/scummvm) | The ScummVM Team and contributors |
| [libretro core-info](https://github.com/libretro/libretro-core-info) | Metadata maintainers and contributors |
##
License and third-party terms
This repository's own code is **GPL-3.0-or-later** ([LICENSE](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](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](webui/assets/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](https://github.com/mihawk-99/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.