Porpoise is a GameCube and Wii emulator for jailbroken PS5, built on Dolphin, with its own launcher for the TV and the DualSense.
Download Porpoise 1.1 · Install · Controls · Build from source · Credits
Porpoise is a PS5 homebrew app (title ID PPSA99764) that runs the Dolphin
emulator's libretro core inside its own launcher. It has a game library with
box art, a memory-card manager, per-game settings and an in-game menu, all
driven with a DualSense. Dolphin's x86-64 JIT runs on the console's CPU, and
graphics go through Vulkan on Mesa's RADV driver.
It plays your own GameCube and Wii disc backups. It doesn't include any games, BIOS or firmware files.
- Games are shown as a row of box-art tiles. Left and right move between them.
- Porpoise looks for games in the usual folders and on USB and extended drives (see Adding games). You can also add your own folders; each is searched four levels deep.
- Formats:
.iso,.gcm,.rvz,.ciso,.gcz,.wbfsand.wia. - Sort by title, recently played, most played or favourites first. Each game shows its play time and when you last played it.
- Front covers, back covers and disc art download from GameTDB while the console is online.
- Game details from GameTDB: description, developer, publisher, release date, genre, number of players and rating.
- To use your own art, put a PNG named after the game's disc ID in the covers folder.
- Covers and info can each be turned off under Settings → Games.
- Square opens a game's details. Triangle shows the back of the box, the right stick turns it, and L2 / R2 move to the previous or next game.
- From here: Play, Save states, Game settings and Save data.
- Save states: three slots per game, each with a picture. You can start a game from any of them.
- Options marks a game as a favourite, here or in the library.
- Slot A and Slot B side by side, with each save's icon, banner, title, block count and date, and each slot's free blocks.
- Square copies a save to the other slot and Triangle deletes it. Both ask first.
- Save data on a game's details page goes straight to that game's save.
- Up to four players. Every controller signed in to a PS5 user is a player, and controllers can join in the middle of a game.
- Button layouts: PlayStation (the default: Cross is A, Circle is B), GameCube (Circle is A, Cross is B, as in Dolphin) and four layouts of your own (My layout 1–4).
- Customize buttons shows the DualSense with the GameCube button each control plays. Pick a GameCube button, press the DualSense button you want, and the two swap. It also works from the in-game menu.
- Any game can use any layout. Analog L and R follow the triggers.
- The light bar shows each player's colour.
Settings are split into sections:
| Section | What's inside |
|---|---|
| Video | Internal resolution (1080p by default; 4x and above marked experimental), widescreen hack, aspect ratio, anisotropic filtering, texture filtering, anti-aliasing (MSAA/SSAA), output resampling, screen filter and its strength, border, FPS counter |
| Graphics | Shader compilation (asynchronous ubershaders by default), texture cache accuracy, per-pixel lighting, disable fog, crop overscan, custom texture packs, skip duplicate frames |
| Audio | Game volume and mute; menu music and menu sounds, each with its own switch and volume |
| Controls | Button layout (PlayStation, GameCube or one of your four), Customize buttons, vibration, connected controllers |
| System | Emulated CPU clock (50–300%), dual core, fast disc loading, cheats, console language, progressive scan |
| Games | Find games automatically, add or remove game folders, search again, download covers, download game info |
| Interface | Menu language, reduced motion, larger text, reset all settings |
| About | Version, Updates (check GitHub and install a new Porpoise), a QR code for reporting a bug, and credits |
- Per-game settings. Any game can override the Video, Graphics, Audio, Controls and System settings. Changed values show in blue, and This game → Reset to default clears them.
- Recommended settings (beta). Supported games come with recommended
settings you can switch on. The list is small for now and will grow as more
games are tested. A game's settings open with Recommended: Dolphin's own
fixes for it, from Dolphin's per-game database (on by themselves), and
Porpoise's picks, settings tested on PS5. Each has an on/off switch —
green is on — and a tag saying where it comes from; changes apply the next
time the game starts. Picks can set Porpoise's own options and Dolphin's
per-game settings alike (the first, for WWE Day of Reckoning 2, keeps EFB
copies and texture decoding on the GPU). They come from
data/recommended.iniin this repository and update by themselves once a day; suggestions for more games are welcome. - Setups. Save a game's Video and Graphics settings as one of four setups (in-game menu → Graphics → Save as a setup) and use it on any other game, from the in-game menu or the game's settings.
- Screen filters: Smooth, Sharp, Sharpen, CRT (scanlines and an aperture grille), Arcade CRT (a curved tube with rounded corners), VHS (tracking wobble, colour bleed and tape noise), Soft VHS (soft, faded colour and a gentle glow, no glitches), 8-bit (a small palette, big pixels and dithering) and Pocket (a four-green handheld screen), each with a strength.
- Borders fill the bars beside a 4:3 picture when widescreen is off:
Porpoise (the logo and name), Porpoise glass, Midnight, Frost,
Carbon, and three cabinets with a curved opening — Arcade cabinet,
Retro cabinet (wood and 70s stripes) and Synthwave cabinet (a striped
sun and a neon grid).
Make your own: a 1920×1080 PNG, transparent where the picture shows (the
4:3 picture fills x 240–1680), in
/data/porpoise/borders/. It appears in the list by its file name. - Reset all settings puts Porpoise back the way it ships. Your games, folders and saves are kept.
Press Options + touch pad together while playing. The game pauses and the menu opens, with four tabs (L1 / R1):
- Game: Resume, Save state… and Load state… (three slots, with pictures: pick a slot with left and right; saving over a used slot asks for a second press, and a spinner shows while the state is written), Fast forward (2x or 4x), Volume, Quit to library and Close Porpoise.
- Video: resolution, widescreen, aspect ratio, anti-aliasing, anisotropic filtering, screen filter and strength, border, FPS counter.
- Graphics: shader compilation, texture cache, texture filtering, output resampling, per-pixel lighting, fog, overscan, duplicate frames, and Save as a setup / Use a setup.
- Controls: button layout, Customize buttons over the paused game, vibration, and the DualSense drawn with a line to every button saying which GameCube button it is.
Changes apply immediately and are saved for that game.
When you resume, the game ignores your buttons until you let go, so the press that closed the menu never reaches the game.
- Original menu music and sound effects by Ruben. The music fades out when a game starts and comes back in the library.
- Music and effects each have their own switch and volume.
- Twelve languages, each with its flag in the language list: English, Español (España), Español (Latinoamérica), Français, Deutsch, Italiano, Nederlands, Polski, Português (Portugal), Português (Brasil), Русский and 日本語. Porpoise follows your PS5's system language, and Settings → Interface → Language overrides it.
- Game descriptions from GameTDB come in Spanish, French, Portuguese, Italian, German and Dutch too, where GameTDB has them (English otherwise).
- The translations are first drafts, and fixes are welcome. To fix a line
without waiting for an update, create
/data/porpoise/lang/<code>.txt—es,es-419,fr,pt,pt-BR,it,de,nl,pl,ruorja— with lines such asQuit to library = Volver a la biblioteca. In the source, translations live ini18n/.
- When the TV's refresh rate allows it, each frame is shown on its own vblank; otherwise Porpoise keeps its own clock. Games run at their normal speed, with 48 kHz sound.
- Dolphin compiles shaders on four background threads with asynchronous ubershaders, so games stutter less the first time they draw something new. The shader cache is kept between runs.
- Dolphin's x86-64 JIT with fastmem, and Vulkan through RADV.
- Some games are slow on PS5 because of Dolphin's own per-game fixes; see
Recommended in a game's settings and the speed line in
core.log.
- A PS5 able to run homebrew, with etaHEN and kstuff loaded and ShadowMountPlus (or your usual method) to register homebrew titles.
- A way to copy files to the console: FTP, or a tool such as PS5 Upload.
- Your own games, as backups you made from discs you own. Porpoise includes no games and no system files of any kind.
- Optional: an internet connection on the console, for box art and game info.
- Download
Porpoise-1.1.zipfrom the latest release and unzip it on your computer. You get a folder namedPPSA99764. - Connect to your PS5 with FTP (for example etaHEN's FTP server and a client like FileZilla) or with PS5 Upload.
- Copy the whole
PPSA99764folder into/data/homebrew/, so you end up with/data/homebrew/PPSA99764/. - Register it the same way as your other homebrew (for example with ShadowMountPlus). The Porpoise tile appears on the home screen.
- Copy your game backups into
/data/porpoise/games/(Porpoise creates it on first launch), into any folder listed under Adding games, or onto a USB drive, then open Porpoise.
Box art and game details download automatically while the console is online.
From 1.1 on, Porpoise updates itself: Settings → About → Updates.
Check now looks on GitHub (Porpoise also looks once a day while it's online
for covers), and when a newer Porpoise is out the same row installs it. The
download is checked against GitHub's SHA-256 and every file against the
release's manifest before anything is replaced; if anything goes wrong,
nothing is changed. Porpoise then closes; open it again from the home screen.
Your games, saves, covers and settings live in /data/porpoise/ and are never
touched.
By hand (and from 1.0, which can't update itself): delete
/data/homebrew/PPSA99764/, then upload the new folder — ShadowMountPlus keeps
serving the old copy until it is removed. If your 1.0 couldn't reach /data
(your games were in the app's own porpoise/games folder), copy the new files
over the old folder instead of deleting it: 1.1 moves your settings, memory
cards and states to /data/porpoise itself and still finds games there. Check
Settings → About to confirm the version.
With Find games automatically on (the default), Porpoise looks in:
/data/porpoise/games/data/games,/data/GameCube,/data/Wii,/data/roms,/data/iso- the root of every USB drive (
/mnt/usb0–/mnt/usb7) and extended storage (/mnt/ext0,/mnt/ext1)
To use any other folder, go to Settings → Games → Add a game folder, browse to it, and press Square. The browser shows the game files in each folder, so you can see where they are. Porpoise searches that folder and four levels below it. After copying new games, use Search for games now.
| Button | Library | Details | Memory cards |
|---|---|---|---|
| D-pad / left stick | Browse games | Choose an action | Move between saves and slots |
| Cross | Play | Confirm | – |
| Circle | – | Back to the library | Back |
| Square | Open Details | – | Copy to the other slot |
| Triangle | Sort | Front / back of the box | Delete |
| Options | Favourite | Favourite | – |
| L2 / R2 | – | Previous / next game | – |
| Right stick | – | Turn the box | – |
| L1 / R1 | Switch tabs: Library, Memory Cards, Settings |
| Button | Action |
|---|---|
| Options + touch pad | Pause and open the in-game menu |
| Circle (in the menu) | Resume |
| L1 / R1 (in the menu) | Switch tabs: Game, Video, Graphics, Controls |
With the default PlayStation layout:
| GameCube | DualSense |
|---|---|
| A / B / X / Y | Cross / Circle / Square / Triangle |
| Z | R1 |
| L / R (analog) | L2 / R2 |
| Start | Options |
| Control stick / C-stick | Left stick / right stick |
| D-pad | D-pad |
The GameCube layout puts A on Circle and B on Cross. To set any button yourself, go to Settings → Controls → Customize buttons (or the in-game menu's Controls tab), and give a game its layout in its own settings.
More players: turn on another controller and choose a PS5 user for it. It becomes the next player, up to four, and can join in the middle of a game.
| Path | What |
|---|---|
/data/homebrew/PPSA99764/ |
The app. Replace it to update. |
/data/porpoise/games/ |
A good place for your game files |
/data/porpoise/covers/ |
Box art, back covers and disc art (<disc ID>.png); replace any with your own |
/data/porpoise/saves/ |
Dolphin's data, including the memory cards (User/GC/<region>/Card A, Card B) |
/data/porpoise/game-settings/ |
Each game's own settings |
/data/porpoise/states/ |
Save states, three per game, with their pictures |
/data/porpoise/borders/ |
Your own borders (1920×1080 PNGs) |
/data/porpoise/info.tsv |
Downloaded game details (info-es.tsv and so on for other languages) |
/data/porpoise/recommended.ini |
Porpoise's recommended settings, as last downloaded |
/data/porpoise/setups/ |
Your four setups (Video and Graphics settings to use on any game) |
/data/porpoise/latest-release.json |
What GitHub last said about the newest release |
/data/porpoise/lang/ |
Your own translation fixes (optional) |
- Adding a game folder: Settings → Games → Add a game folder opens on
the whole console (
/), ondata. Each folder shows how many games are in it, and the games themselves are listed under the folders, so you can see where they are. Square uses the folder you're in (add as many as you like), Triangle jumps to your drives and Porpoise's own games folder, and Cross on a game on a USB drive copies it to the console. - Still seeing the old version after updating by hand? Delete
/data/homebrew/PPSA99764/completely before uploading the new folder. - "Porpoise can't reach /data", only a few folders in the folder browser, or
games in
/data/gamesnot showing? The console started Porpoise inside the app sandbox. Porpoise asks the HEN to free it, but the HEN only does that for apps on its list: add PPSA99764 to your HEN's list of apps to jailbreak (etaHEN or OnionHEN settings), then open Porpoise again. Until then it keeps its things in the app's own folder (/data/homebrew/PPSA99764/porpoise/). - A game runs slowly? Open its settings and look at Recommended: some
of Dolphin's own fixes for a game cost speed on PS5, and Porpoise's picks
turn them off where that's been tested. The speed line in
core.log(below) shows how fast the game really runs. - No covers? The console needs to be online when Porpoise opens, and Settings → Games → Download covers must be on. A few discs have no art on GameTDB. You can add your own.
- Something went wrong? These two files help when you report a problem:
/data/homebrew/PPSA99764/trace.txt/data/homebrew/PPSA99764/porpoise/core.log(records the game's real speed every 10 seconds)
Please open an issue with your console firmware, the game's disc ID and those logs.
- Wii support is experimental. Games that need Wii Remote pointing or motion aren't practical on a DualSense yet.
- Save states are tied to the Porpoise and Dolphin version that made them; a future update may not load older ones. Your memory card saves always carry over.
- Netplay and achievements aren't part of Porpoise.
- Memory-card copy and delete work on saves Dolphin keeps as files (the normal
Card AandCard Bfolders).
Porpoise builds on Linux or WSL with clang 18, Mesa's RADV driver for PS5 and the PS5 payload SDK. See BUILDING.md.
Porpoise was created by Ruben (@elripalda): the design, the launcher, the logo, the menu music and the sound effects.
It stands on the work of many people. The full list, with licences, is in CREDITS.md:
- Dolphin by the Dolphin Emulator Project, the emulator itself, and the libretro Dolphin core.
- libretro / RetroArch, whose API Porpoise uses to host Dolphin.
- Mihawk (mihawk-99), who brought the Dolphin core to the PS5. His PS5 RetroArch, PS5_Vulkan and PS5_Mesa are the PS5 Dolphin port, the platform layer and Vulkan on PS5 through Mesa's RADV that Porpoise is built on. Porpoise wouldn't exist without them.
- ps5-payload-sdk by John Törnblom and contributors, and BlackBearReloaded's native title pipeline.
- GameTDB and its contributors, for the box art and game details.
- Zacksly (@_Zacksly), for PS5 Button Icons and Controls (CC BY 3.0): the DualSense drawings and the button icons, adapted for Porpoise.
- Nunito and Noto Sans JP (SIL OFL), and stb by Sean Barrett.
- The PS5 scene: etaHEN, kstuff and ShadowMountPlus, and the front ends PS5SX2 and ProsperoEden for the inspiration. Porpoise asks the HEN to leave the app sandbox the way PS5SX2 does.
Important
Porpoise does not condone piracy. It contains no games, no console BIOS, IPL or firmware files, and no decryption keys, and none will ever be provided or linked to. Play only games you own, as backups you made from your own discs.
Porpoise is an independent, free and open-source project. It is not affiliated with, endorsed by or sponsored by Nintendo or Sony Interactive Entertainment, and it contains no code, artwork, sounds or other material from either. Nintendo, GameCube and Wii are trademarks of Nintendo. PlayStation and PS5 are trademarks of Sony Interactive Entertainment Inc. These names are used only to describe compatibility.
Emulation is provided by Dolphin (GPL-2.0-or-later). Box art and game details are downloaded on your console from GameTDB and are not distributed with Porpoise.
Porpoise is free software, licensed under the
GNU General Public License v3.0 or later. Parts carried over
from other projects keep their own notices. Every component that ships in the
app, with its licence and exact source revision, is listed in
licenses/README.txt inside the release and in CREDITS.md.
Made with care by @elripalda.
