Repository navigation
PSSwanStation build 17
PSSwanStation build 17
A PlayStation (PS1) emulator as a PS5 homebrew title: SwanStation, the libretro fork of DuckStation, with a controller interface of its own, drawing with Vulkan (the RADV driver, linked into the title). It needs a jailbroken console with kstuff running.
Important
Piracy is not condoned. This release contains no games, no BIOS files, no console firmware and no decryption keys, and none will ever be provided or linked to. Use only legally obtained backups of games you own, made yourself from your own discs, and BIOS files dumped from hardware you own. Please don't ask for, or post links to, games, BIOS files, firmware or keys in issues or discussions: they will be removed.
Warning
A work in progress. This build works on my console, but not every feature new since build 15 has been tried there one by one. "Tested for this release" below says what has been checked where.
What it does
- A library for the controller: games from the title's folder, USB drives and network shares (SMB, NFS or FTP), with covers, descriptions, search, sorting and filters, favourites, and seven views (a cover grid, a list, and five that stand the covers in space; Aurora layout files work too).
- Every setting of the emulator, for every game or for one game alone, and the title's own: picture presets, scaling filters (sharp bilinear, FSR 1, NIS, CAS), a CRT shader, video signals, colours, what is beside a 4:3 picture, frame pacing, 120 Hz output, frame generation.
- While playing: save states with pictures, fast forward and rewind (kept in memory), cheats and patches, disc change, memory card manager with backups, button remapping and turbo, up to four players, RetroAchievements, netplay for two (an experiment).
- No BIOS needed: the built-in OpenBIOS starts most games; an original BIOS dumped from your own console is more compatible.
- Looks after itself: an updater that fetches a newer release and puts the earlier files back if it is interrupted, a safe start (hold L1 and R1), and your files kept outside the title's folder, on a USB drive or on the network share if you want.
New since build 14
Builds 15 and 16 were not published; this release carries everything since build 14.
Build 17
- What's new, after an update. The first start of a newer build lists what was added, changed and fixed since the build the console had, with a count of each at the top; it scrolls with the d-pad, the sticks, L1 and R1. Settings, About shows every build's. The release notes on the Update page scroll too, instead of being cut off.
- Your files on the NAS, shared between consoles. Covers on the network share now go both ways, so a cover set on one console is there for the others; memory card backups are sent to the share, in a folder of each console's own (
card backups/<console>/). - A manual:
ps5/MANUAL.mdin the repository, every screen and setting, and how to fill innetwork.cfg. - Sparkles along polygon edges. Above 1x, where a game's polygons meet unevenly, hairlines of the background showed through and flickered as the camera moved. Each solid polygon is now drawn a quarter of a pixel larger to cover them (on my test disc at 8x: 855 such pixels down to 5; not yet seen in a game on the console); 2D pictures and see-through polygons are left as they are. Settings, Enhancement, "Close Gaps Between Polygons", on at first; the Speedrun preset switches it off.
- A game drawn larger than the screen (8x on a 1080p screen) is made smaller with each pixel the average of all that was drawn under it, instead of a bilinear sample of a few.
- CAS and FSR 1 at large enlargements. CAS now sharpens before a large enlargement, where it did almost nothing after it; FSR 1 enlarges twice and the rest smoothly, where it drew thin crossed lines between diagonal pixels.
- Frame generation leaves cuts alone: when the camera jumps to another scene, no picture is made between the two (it was the old scene smeared into the new), and it starts again after a state is loaded.
Build 16
- Sleep-safe saving. With it on, a game's resume state is saved every five minutes of play and whenever the console's own menu opens over it, quietly and without a pause. If the console closes PSSwanStation (rest mode, or closing it from that menu), the next start offers to continue.
- Speedrun timer. Game time or real time over the game, splits by hand (OPTIONS with Cross) or by themselves when a value in the game's memory changes, a start by itself the same way, and the best run and best splits kept for each game. A run with fast forward, rewind or a state load counts as practice.
- Find in memory. The classic cheat search: a value, or one that went up, down, changed or stayed, narrowed down while you play. What is left can be watched over the game, set, frozen, or made a cheat in the game's own file.
- Phone and web control. Scan the code in Settings with a phone (port 3311): start and close games, save and load states, run the speedrun timer, change some settings, and put discs and covers in or take saves out from a computer. The address carries a key; nothing is given out without it.
- Shader presets from a USB drive. A libretro slang preset (.slangp) in
PSSwanStation/shaders/is compiled on the console and becomes one of the picture tube's choices. - Debug settings. Recordings of what each player presses, played back frame for frame from where they began; verbose logging with a line about speed, sound and memory every ten seconds.
- Picture preset Speedrun: the picture as the PlayStation drew it, with nothing added (no PGXP, frame generation, picture tube or hacks).
- Easier to read: the interface up to 140%, high contrast, and colour-blind safe colours.
- Texture packs on USB are now read from
PSSwanStation/textures/<serial>/on the drive (the old place still works). - Under the hood: SwanStation's newest upstream (a video playback fix, fuzzing fixes, a check that a save state belongs to the disc), glslang 16.6.0 added.
Build 15
- The picture's look. A scaling filter of its own: smooth, square pixels, sharp bilinear (crisp, even pixels at any size), FSR 1, NIS (NVIDIA Image Scaling), CAS (AMD Contrast Adaptive Sharpening), with one sharpening setting. The picture tube adds crt-guest-advanced (guest(r)'s shader from the libretro collection) in five kinds: home television, studio monitor, arcade monitor, soft, and the author's own. Video signal: dither smoothed (the PlayStation's checkered dither undone, edges kept), S-Video and composite. Brightness, contrast, colour and gamma. Every one can be a game's own.
- Frame generation, more of it. Quality (Performance, Balanced, and Quality, which checks each movement from both frames' side), pictures ahead of the game's instead of between them (no waiting for the next), up to 60 a second at 120 Hz, videos left alone if you want, one frame of run-ahead to take back its delay, a view of the movement it found, and any rate with frame pacing by the clock (each refresh shows where the game is at that moment). Games that never swap their picture are now counted by whether they drew, and uneven cadences are evened out. The frame counter shows the game's pictures and the screen's ("30 -> 60"). It works on the game's own picture, before the look, so every filter works with it.
- NFS shares (versions 3 and 4) beside SMB and FTP:
path = nfs://server/export/games. - Your files on the network share. Memory cards kept in the share's "memory cards" folder too and brought up to date both ways, so several consoles at home play on the same cards (a card changed on two keeps the newer one and saves the other beside it); covers read from the share; or the whole PSSwanStation folder kept on the share, or on a USB drive.
- Cheats for more games: the libretro database's PlayStation cheats (CC BY-SA 4.0, carried in the ZIP) are used for a game the chtdb collection has no codes for. Each says where it came from and that it may not fit your version.
- Under the hood: SwanStation's newest upstream (save-state checks, out-of-bounds fixes, its own threads and atomics), libsmb2
fc710a3, libnfs added.
Tested for this release
Build 17 works on my console; NFS I have not tried there. What I have a result for one by one, and the build it was seen with:
| What | On the console | Seen with |
|---|---|---|
| Starting games from the title's folder and from an SMB share, sound, picture, controller | works | build 9 |
| Library: covers downloaded, search, jumping by letter, menu and start-up sounds | works | build 9 |
| Cheats and patches, games on several discs, save states and continuing, cancelling a load | works | build 9 |
| RetroAchievements | works | build 10 |
| A game's own picture settings, Circle to close, the cheat database fetched | works | build 14 |
| Scaling filters, picture tube, video signals, colours, frame generation, files on the share and USB drive, libretro cheats | works | build 15 |
| Starting, the library, What's new after an update | works | build 17 |
| NFS shares | not tried yet |
On a PC (the same frontend on the same Vulkan code paths, with the validation layers silent): for build 17, a test disc of textured meshes counted for gaps and stray texels at 1x, 4x and 8x and with PGXP and smoothing; every scaling filter at three sharpness levels, games drawn at 1x, 4x and 8x, 4K and 1080p screens, measured for sharpness, shift and overshoot against the game's own picture; frame generation against pictures of known movement at 60 and 120 Hz, games of 20, 30 and 60 pictures a second, every quality, ahead, the 60 cap and run-ahead, and on a disc with cuts. For build 16: sleep-safe saving with the title killed during a game; a recording played back to the same memory, byte for byte; a value found, watched, frozen and made a cheat; the speedrun timer; the web panel from a phone-sized browser, a wrong key and paths outside the folder refused; slang presets compiled; the interface test and the module tests.
Known issues
- Not every feature new since build 15 has been tried on a console one by one. Sleep-safe saving asks the console whether its menu is open over the title, a call no build has made before: if PSSwanStation stops when a game starts, switch it off. The web panel is the first time the title listens on the network for anything but netplay. Compiling a shader preset on the console may take a while and some are too slow at 4K.
- Closing the gaps draws 3D objects' outlines a quarter of a pixel fuller; a polygon edge can still show a single texel of its texture's neighbour where the PlayStation itself shows one.
- A cut detected in a fade shows the fade without made pictures between its steps (nothing moves in a fade, so nothing is lost).
- Frame generation: a thin fringe where something moves across a background that moves another way; at 20 pictures a second the made ones outnumber the game's and errors show most.
- A recording plays back the same only with the same settings, cheats and build.
- A card changed on two consoles before they met keeps the newer one without asking (the other is kept beside it as
.conflict-<date>). An FTP server can hold games but not your files. - 120 Hz output has not run on a console from this title: if the screen stays dark after choosing it, start PSSwanStation holding L1 and R1, wait ten seconds, close it and start it again.
- Netplay is an experiment that has only run between two PCs.
Install or update
- Unpack the ZIP and copy the complete
PPSA99248folder to/data/homebrew/on the console (FTP), so that/data/homebrew/PPSA99248/eboot.binexists, and let your homebrew loader register it. - Copying over an earlier build keeps your games, saves, states, covers and settings: the ZIP holds only the program's files. From this build on, Menu, "Update" can fetch the next one.
- Your own legally obtained backups go in
games/(or on a USB drive, or a network share named innetwork.cfg, which the title writes with an explanation at its first start). A BIOS dumped from your own console may go inbios/. None is included, and none ever will be. - Once, for cheats and patches: Settings, Games and network, "Fetch the newest cheat database".
- Read
LEGAL.txtandREADME.txtin the folder.
Reporting problems
Say what you did, what you saw, which build (top right of the library) and which firmware. logs/ in the title's folder keeps the last two runs: copy them before starting the title again. Never attach game files, BIOS files, firmware or keys, and please leave game titles out: "a 30 fps racing game" is enough.
Source
This ZIP was built from PSSwanStation commit 8a502f1fe7f0a9f50a108d32eec97eb22ab16cb5, which is this release's tag. The title is distributed under the GNU General Public License, version 3, as a whole. The source of every part at the revision it was built from is attached (SOURCES.txt lists the archives, SHA256SUMS their digests); licenses/ in the title's folder holds each part's licence and licenses/components.json the revisions.
Build
| Component | Version |
|---|---|
| PSSwanStation | 8a502f1fe7f0a9f50a108d32eec97eb22ab16cb5 (SwanStation at libretro dd48056, plus the ps5 folder) |
| PS5_Vulkan (link recipe, libc.prx) | 5b5e4fc2d80f |
| PS5_PayloadSDK fork (platform layer) | 611893fc25ef |
| RADV, from PS5_Mesa | 7b59ef27c1b0 (built against the SDK fork at b83202be73e9) |
| Dear ImGui | v1.92.9b |
| libsmb2 | fc710a3ebd58 |
| libnfs | 761323646431 (libnfs-8.0.0 and four commits) |
| rcheevos | v12.5.0 |
| Lapy helper | PS5-Lapy-JB-Daemon c3bdfe3a3993, built with the payload SDK v0.42 |
| Game database and libretro cheats | libretro-database bf825e3ec48d |
| crt-guest-advanced | libretro slang-shaders e1d75632a205 |
| glslang | 16.6.0 |
| QR Code generator | Project Nayuki 3c6d0b3 |
| NIS, CAS | NVIDIAImageScaling 35e13ba, FidelityFX-CAS 9fabcc9 |
SHA-256 of PSSwanStation-PS5-PPSA99248-build17.zip: eb3020458a2e9d2107b13cf426e1b94d6e1cad04b2f67aa1c819a0940bc22156
PSSwanStation is an unofficial port. It is not affiliated with or endorsed by Sony Interactive Entertainment, the libretro team or the DuckStation project. "PlayStation" and "PS5" are trademarks of Sony Interactive Entertainment. Vulkan is a registered trademark of the Khronos Group; the RADV port in this title is not a conformant product.