Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Play your Steam library's Windows games on a jailbroken PS5.
Translation pending
GamesC++ · PythonGitHub @leolobatoSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Play your Steam library's Windows games on a jailbroken PS5.
Playden is a launcher that runs on the PS5, adapted from Playden for macOS. You sign in to Steam with a QR code or your account name and password, browse your library, download games, and play them. The Windows games run through prospero-win, a port of Wine to the PS5. Each game gets its own private Windows environment and its own tile on the PS5 Home screen.
[!WARNING] Alpha software. Playden is an early, experimental project. It signs in to your real Steam account, downloads games with your licenses, and reads and writes your Steam Cloud saves. Read Before you use it. If you are not comfortable with these risks, do not use it.
See the compatibility list for the games we have tested.
Playden is alpha software. It is not affiliated with, endorsed by, or supported by Valve. Know these points before you sign in:
Tested with kstuff-lite 1.11, ShadowMountPlus v1.7-beta5fix1 and v1.7beta2, elfldr v0.26, zftpd 1.6.0 and ps5-web-file-manager v1.9. Other versions can work, but these are the ones we know.
Download playden-ps5-<version>.zip from the latest release: the Playden app (FAKE77031) and
the console tools used below. Unzip it into a folder of its own, playden-ps5-<version> (most unzip tools make it;
with unzip on the command line, use unzip playden-ps5-<version>.zip -d playden-ps5-<version>). Installing takes one copy over the network, the app folder. Playden
downloads its runtime kit on its first start, and after that it updates itself (see Update Playden).
Like other PS5 homebrew, Playden is a folder in /data/homebrew/, and
ShadowMountPlus adds its tile to the Home screen.
Copy the FAKE77031 folder from playden-ps5-<version> into /data/homebrew/ on the console. Use any FTP client
(FileZilla, Cyberduck, etc.) or the web file manager in a browser. Create /data/homebrew first if it isn't there.
You do not need to chmod anything: Playden checks the folders it writes to and fixes their permissions before
it writes. If it can't fix one, it names that folder. If your FTP client leaves out the empty logs and
playden-data folders, Playden makes them again when it starts.
Or, from a computer with Python 3, run this in the playden-ps5-<version> folder. It creates the folders, copies
only what changed, and keeps a backup of the files it replaces:
python3 tools/console_title_deploy.py --host <PS5 IP> deploy --install FAKE77031 --backup backups/<name>
From 0.6.0, Playden keeps its data outside the app folder and moves it there once, at startup:
/data/playden/user/./data/playden/logs/. The first startup lines, written before Playden gets its root access,
stay in logs/ in the app folder./data/playden-games/. Each game's Windows folder, with its saves, stays under
/data/playden/games/ (see Saves and game configs over FTP).The app folder keeps empty playden-data and logs folders, and a MOVED.txt in each old place says where
the data went.
Wait about 10 seconds. ShadowMountPlus adds the Playden tile to the Home screen.
Start Playden. It offers to download the runtime kit (next section); choose Download.
Sign in to Steam while the kit downloads.
Since 0.3.0, Playden updates itself from this repository's GitHub releases:
Settings › Updates › Beta updates opts into test versions before their stable release. It is off by default; betas can have new bugs and use the same app and data. Turning it off keeps an installed beta until a newer stable version is available. Updates never downgrade Playden.
The previous app and kit are kept until the next update, in /data/playden/self-update/backup/ and
/data/playden/kits/.previous-*. Settings › Updates › Go back to Playden puts them back: Playden
closes, swaps the previous version and its kit in, and opens again. If the swap does not take and the previous
version opens again, it says so and puts its kit back. If the new version itself fails to start, nothing can report it: reinstall Playden over FTP as
described above (your games, sign-in and settings are kept), and, if the new kit is at fault, rename the previous
kit folder (.previous-<id>-<time>) back to <id>, moving the installed folder of that name aside.
After the version that added import, going back to an older version keeps your old favorites, but loses the favorites and collections you changed since. The console's organization data now lives in one file that older versions don't read.
You can also update by hand: copy the new FAKE77031 folder over the old one, or run the install command without
--install. The command copies only the changed files, keeps a backup of what it replaced, and puts those three
folders' modes right if they changed.
The runtime kit is what runs Windows games: Wine, Mesa and DXVK. Playden downloads the kit its version was made for from this repository's releases, on its first start and whenever the installed kit isn't that one. It installs in the background, shows on the Queue screen, and games can be prepared as soon as it is in place. If you choose Later, or the download fails, Settings › About › Runtime kit starts it again. Games pick up a new kit when you press Play.
You can also install the kit by hand, with Python 3: download playden-kit-<version>.zip from the release, unzip it
next to playden-ps5-<version>, and run this from the playden-ps5-<version> folder. A plain FTP copy does not
work for the kit, because Playden checks each kit file's permissions against the kit's manifest.
python3 tools/console_kit_upload.py ../playden-kit-<version> --host <PS5 IP> --replace
The kit is built on a Linux x86-64 machine or VM from prospero-win, Wine, Mesa and DXVK. To build it yourself, see Build the kit. The scripts are a record of how we built it, not a turnkey build yet, so most people should use the release download.
Each game's Windows user folder holds its saves and most of its .ini configs:
/data/playden/games/steam-<Steam app ID>/library/prefixes/game/drive_c/users/prospero/
For Half-Life 2 that is steam-220. Look in AppData/Roaming, AppData/Local, Documents and Saved Games.
This needs the next runtime kit (it has the bottle-profile-shared capability); kit 0.10 keeps the whole folder
private. With it, you can read and write everything in prospero. The folders above it can be entered but not
listed, so type the full path in your FTP client instead of browsing to it. New saves a game writes are private
at first. Playden opens them to FTP when it starts, when a game it started ends, and before it starts a game.
You can add Windows games you already have, without a Steam account.
Put the game folders in place:
playden/import/<game folder> at the root of the drive./data/playden-import/<game folder> on the console.The drive must be exFAT. The PS5 can't read NTFS, and FAT32 can't hold files over 4 GB.
Add a game:
You can import a game that plays from its folder later, with Import into Playden on its page. The PS5 adds the game's title to Home when Playden quits. Importing a game later keeps its saves.
Limits:
Steam games copied from a PC usually run without Steam. If a game needs Steam, Playden uses the game's
steam_appid.txt, or the Steam app ID in Game settings. Most games run without either.
Games that need their own launcher, or DRM beyond SteamStub (Denuvo, or the Ubisoft, EA or Rockstar launchers), won't run.
macOS on Apple Silicon. Linux should also work, but we have not tested it yet.
Xcode command line tools.
Homebrew packages:
brew install cmake ninja pkgconf sdl2-compat llvm@18 python
About 2 GB of free disk space.
A checkout path without symbolic links (for example, not under /tmp).
git clone --recursive https://github.com/leolobato/playden-ps5.git
cd playden-ps5
scripts/fetch-deps.sh
fetch-deps.sh downloads the prebuilt PS5 SDKs into deps/ and checks each download against the SHA-256 in
dependencies.lock.json.
scripts/build-lapy-helper.sh
scripts/build-homebrew-ps5.sh
The result is the Playden app, build/homebrew-ps5/dist/FAKE77031. Install it as in Install Playden,
with that folder in place of FAKE77031:
python3 tools/console_title_deploy.py --host <PS5 IP> deploy --install build/homebrew-ps5/dist/FAKE77031 \
--backup build/console-backups/<name>
Playden also builds as a desktop app, which is useful to look at the interface without a console:
scripts/build-homebrew.sh
cmake --build --preset homebrew-host
build/homebrew-host/playden-homebrew --simulation --scenario signed-out
lapy.elf or playden-package.identity are missing
from the app folder or can't be read. Copy the whole app folder from the release zip again, or use
tools/console_title_deploy.py./data, or the ELF loader
stopped while it received the helper. The screen says which. Load kstuff and the autoloader, then open Playden
again. If it stays, report it with your firmware version./data/playden. The screen says which, and what to try.--rendering-driver opengl3 in Game settings › Extra arguments. Playden picks
Godot's Vulkan renderer, which did not work on this kit.See the compatibility list for what we know about each game.
Every test helps, including games that work. To report one:
If the game did not work, start Playden once more, so it copies the game's log.
Collect the logs from your computer:
python3 tools/collect_logs.py --host <PS5 IP>
It lists the games that have a log, the most recently run first, and asks which one to collect. The script
reads only Playden's logs (/data/playden/logs), never your Steam sign-in. It hides your Steam account name and
SteamIDs, and writes a zip with a summary of your firmware and kit versions.
Open a game test report and attach the zip. See a sample report for what to fill in.
For a problem that is not about one game, open a bug report with the same zip. A problem installing or updating Playden goes in an install or update problem, and ideas in a feature request. Questions and help with setup go to Discord or r/Playden_PS5, not to issues.
Playden would not exist without these projects.
I keep a fork of each, with Playden's changes on the fork's main branch, and send fixes upstream.
| Project | What it does for Playden |
|---|---|
| prospero-win | Wine for the PS5. Runs the Windows games: memory management, a 32-bit x86 translator, display, input and audio for the console. Also builds the per-game app shell. |
| ps5-homebrew-ui | The UI toolkit Playden's screens are drawn with: layout, fonts, controller focus and navigation, on OpenGL. |
| ps5-opengl | OpenGL for PS5 homebrew. Draws Playden's own interface. |
| ps5-native-app-boilerplate (mpereiraesaa) | Tools to build native PS5 apps and modules, used for the per-game app shell in the kit. Our fork is named prospero-foundation. |
| PS5-Lapy-JB-Daemon | The root helper. Gives a game's app just enough rights to reach its own files in /data. |
| Project | What it does for Playden |
|---|---|
| ps5-native-app-boilerplate (drakmor) | Tools to build Playden as a native PS5 app, and its libc.prx. |
| ps5-payload-sdk | The SDK for PS5 homebrew. |
| gbe_fork | Steamworks emulator (LGPL-3.0), shipped with Playden in runtime/steamworks/, so games run without the Steam client. |
curl, Mbed TLS, SQLite, zstd, LZMA SDK, stb, utf8proc and QR Code generator.
Contributions are welcome. CONTRIBUTING.md explains how to report a game test and the rules for pull requests (one change per pull request). docs/building.md covers the development setup, the tests, the console workflow, and how to change a forked dependency or a Wine patch.
Playden is licensed under the GNU General Public License v3.0 or later. See LICENSE. The submodules,
vendored libraries and the runtime kit keep their own licenses: see
THIRD_PARTY_NOTICES.md. Game recipes in runtime/recipes/ are CC0 1.0: see
runtime/recipes/LICENSE.
Steam is a trademark of Valve Corporation. PlayStation and PS5 are trademarks of Sony Interactive Entertainment. This project is not affiliated with either company.