Archive of https://github.com/blackbearreloaded/ps5-yamagi-quake2 — Native PS5 port of Yamagi Quake II with OpenGL rendering, controller support, audio, and saves. https://github.com/blackbearreloaded/ps5-yamagi-quake2
  • Python 65.3%
  • C 28.1%
  • Shell 4.6%
  • Makefile 1.7%
  • Linker Script 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-10 10:47:52 -04:00
.github Publish the compiler cache snapshot from its own workflow 2026-10-10 10:47:52 -04:00
assets/baseq2 Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
data/baseq2 Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
docs Remove the ffpfsc target; publishing never replaces a release file 2026-10-08 20:21:56 -04:00
LICENSES Publish native 1080p Yamagi port with pinned PS5 OpenGL integration 2026-09-08 00:17:15 -04:00
patches Release selectable 1080p, 1440p and 4K rendering at 120 Hz 2026-09-11 22:07:18 -04:00
sce_sys Release selectable 1080p, 1440p and 4K rendering at 120 Hz 2026-09-11 22:07:18 -04:00
src/ps5 Release selectable 1080p, 1440p and 4K rendering at 120 Hz 2026-09-11 22:07:18 -04:00
tests Build the app ZIP on every push to main and store its entries as 0777 2026-10-07 20:53:28 -04:00
tooling/native Release current OpenGL SDK integration at verified 1080p60 2026-09-09 23:27:33 -04:00
tools Keep the compiler cache between CI runs (#3) 2026-10-10 10:38:30 -04:00
upstream Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
.editorconfig Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
.gitattributes Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
.gitignore Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
CHANGELOG.md Keep the native video mode fixed in the settings menu 2026-09-10 13:21:59 -04:00
CONTRIBUTING.md Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
dependencies.json Release selectable 1080p, 1440p and 4K rendering at 120 Hz 2026-09-11 22:07:18 -04:00
dependencies.json.license Add scoped PS5 attribution and maintainer credits 2026-09-08 01:41:25 -04:00
LICENSE Initial commit 2026-09-07 23:06:58 -04:00
Makefile Remove the ffpfsc target; publishing never replaces a release file 2026-10-08 20:21:56 -04:00
README.md Remove the ffpfsc target; publishing never replaces a release file 2026-10-08 20:21:56 -04:00
THIRD_PARTY_NOTICES.md Standardize the README footer and third-party notices 2026-09-29 18:19:08 -04:00

Original game credits: Quake II was created by id Software. Thanks to the original development team for the game and its official open-source engine release. This PS5 port builds on Yamagi Quake II; credit and thanks also go to the Yamagi developers and contributors for their continued maintenance and improvements.

PS5 port and maintainer: BlackBearReloaded. Native PS5 integration, renderer optimizations, controller/audio integration, build tools, packaging and port-specific tests. Upstream developers retain credit for their original work; see third-party notices.

Yamagi Quake II icon

Yamagi Quake II for PS5

Quake II, running natively on PlayStation 5 homebrew.
1080p, 1440p or 4K OpenGL rendering at a 120 FPS target, with DualSense controls, sound and local saves.

PlayStation 5 OpenGL 3.3 4K120 target Alpha GPL-3.0-or-later

Demo available by clicking the image below.

Yamagi Quake II gameplay on PS5 with the FPS overlay

Highlights

  • Based on Yamagi Quake II 8.70, with a native PS5 lifecycle and static GL3 renderer.
  • Powered by PS5 OpenGL, using a frozen optimized game SDK with complete sources and the game-specific runtime patches.
  • Choose 1920 × 1080, 2560 × 1440 or 3840 × 2160, all targeting 120 FPS, with an FPS overlay at the top left.
  • Change resolution from the Video menu and keep your selection across launches. A fresh configuration defaults to 4K.
  • DualSense input is sampled independently of rendering, preserving short button presses.
  • Stereo sound, controller defaults, writable saves and configuration.
  • Custom shell icon, selection/launch backgrounds and looping selection music.
  • Includes the renderer patches and host regressions used to resolve startup, input, audio and performance problems.
  • The optimized 4K candidate reached owner-reported 120 FPS throughout a bounded gameplay check, including the previously slow opening and underwater areas.

This app requires an already configured, compatible PS5 homebrew environment. It contains no exploit, proprietary Sony SDK or firmware modules. Current app downloads include the verified Quake II 3.14 demo and are ready to launch. Retail game data is separate. Game assets are downloaded during packaging and remain outside Git; their original license and readme accompany them.

Install

  1. Download PPSA99007.zip and its accompanying .sha256 file from the release page. Verify the ZIP's SHA-256 before extracting it.
  2. Extract the archive. Demo data is already present in PPSA99007/assets/baseq2/. To use your own retail game, see game data setup.
  3. Copy the complete PPSA99007 folder into your loader's homebrew directory, normally /data/homebrew/, producing /data/homebrew/PPSA99007/eboot.bin.
  4. Refresh or restart the loader, then launch Yamagi Quake II. Updated shell artwork/music may require a full loader restart to refresh cached presentation assets.
PPSA99007/
├── eboot.bin
├── assets/baseq2/
│   ├── yq2.cfg             supplied controller/audio defaults
│   ├── pak0.pak            verified demo data
│   ├── players/            demo player assets
│   └── DEMO-LICENSE.txt    original demo terms
├── sce_module/libc.prx     clean-room application runtime
└── sce_sys/                metadata, artwork and selection music

Use the extracted folder from PPSA99007.zip. FFPFSC downloads were withdrawn after the owner reported that the compressed image failed to start; Actions publishes only the folder ZIP and checksum. Version 0.1.0-alpha.1 omitted game data and cannot launch by itself; replace that package with the current demo build. Save games and user configuration live under /download0/yamagi/baseq2/. Back up that directory before replacing an existing installation.

Controls

Input Action
Left stick / right stick Move / look
D-pad in menus Navigate
Cross / Circle in menus Confirm / back
Options Pause / menu
R2 Fire
Cross / Circle in game Jump / crouch
L1 / R1 Previous / next weapon
L3 Speed modifier
Triangle / Square Inventory / use selected item
D-pad up / down in game Previous / next inventory item
Touchpad press Help / objectives

Defaults are in yq2.cfg. Existing user config.cfg and autoexec.cfg load afterward and can override them.

Resolution and refresh rate

Open Video → Video mode, choose 1080p, 1440p or 2160p, then select Apply. The renderer restarts at that resolution and saves the selection immediately. All three modes use a 120 Hz presentation target.

This setting changes the game's render resolution. The console manages the HDMI output separately, so a TV can continue to report 4K / 120 Hz at every setting: lower-resolution frames are scaled for that output. This is expected. Use the in-game FPS overlay to judge actual rendering speed; the TV's HDMI status reports the signal format. A compatible display and console output configuration are needed to display 120 Hz.

Performance and current limits

The optimized 4K candidate achieved user-reported 120 FPS throughout the tested areas, including the opening and underwater, on one PS5 running firmware 6.02. A separate automated test completed six resolution switches; steady 120-frame windows measured about 119.9 FPS at 1080p and 1440p and 117–120 FPS at 2160p. See performance notes for scope.

The release combines draw batching, texture and buffer reuse, GPU depth clears, and presentation/CPU overlap. Its focused game regressions do not constitute a full graphics CTS campaign or a guarantee for every scene or console.

Retail campaigns, expansion packs, multiplayer, long sessions, suspend/resume and device-loss recovery remain unqualified. Single-mip textures are the fast default and can shimmer at distance. Selection music passed format validation and independent decoding; fresh shell playback has not been checked on TV.

Build

Use Ubuntu 24.04 or WSL with Python 3.12 and Clang 18:

sudo apt update
sudo apt install build-essential clang clang-18 lld-18 llvm-18 make python3 python3-venv git gh \
  pkg-config wget unzip libssl-dev libsdl2-dev libegl1-mesa-dev \
  libgl1-mesa-dri glslang-tools

gh auth login                    # authenticated GitHub release downloads
make deps
make package

Outputs: dist/PPSA99007/, dist/PPSA99007.zip and its checksum file. Packaging downloads the official demo from Yamagi's mirror, checks its pinned SHA-256, and includes unchanged game assets and original notices. It also restores pinned Yamagi and native-app sources, the public homebrew toolchain, PacBrew SDL2 and the frozen game SDK built from PS5 OpenGL. Graphics binaries are release dependencies, not Git blobs. See dependencies and source reproduction.

For host checks only:

python3 tools/bootstrap.py --host-only
make test

The Build workflow runs host regressions on pull requests; a push to main starts nothing. Manual dispatch (Actions → Build → Run workflow) builds and uploads the native folder ZIP and its checksum using the frozen SDK release asset. Set the optional release_tag input to an existing release to publish the ZIP and checksum; leave it blank for CI artifacts only. A release's files come from that workflow run, built and attested there; none is attached by hand. The run adds the files the release does not have yet and leaves its title and notes as they are. A file the release already has is never replaced or removed: the run prints a warning that it did not come from this run, and ends green. A PPSA99007.zip built by the workflow can be checked with gh attestation verify PPSA99007.zip -R blackbearreloaded/ps5-yamagi-quake2 (GitHub CLI); this covers releases built by GitHub Actions from now on, not earlier ones. Console testing is manual and separate.

Project layout

src/ps5/          Native entry, EGL/video, input, lifecycle and compatibility code
patches/          Yamagi renderer/platform changes and OpenGL texture-cache delta
assets/baseq2/    Controller, audio and FPS defaults; no game data
sce_sys/          PS5 metadata, converted artwork and selection music
tooling/native/  Heap/runtime helpers, link stubs and linker configuration
tools/           Dependency restoration, build, demo preparation and packaging
tests/           Host regressions, shader checks and game-data validation
docs/            Installation, build, performance and artwork sources
upstream/        Pinned Yamagi checkout restored here; ignored by Git
.deps/           Downloaded build dependencies; ignored by Git

Credits

Built with the PS5 Payload SDK by John Törnblom (ps5-payload-dev). Third-party components, authors and licenses are listed in THIRD_PARTY_NOTICES.md.

License

Copyright © 2026 BlackBearReloaded. Licensed under GPL-3.0-or-later; see LICENSE. Third-party components keep their own licenses. Binary releases are built from the tagged source in this repository.

Disclaimer

  • No affiliation. This is an independent homebrew project. It is not affiliated with, endorsed by, or sponsored by Sony Interactive Entertainment. "PlayStation", "PS5" and related marks are trademarks of Sony Interactive Entertainment Inc. Quake is a trademark of ZeniMax Media Inc. This project is not affiliated with or endorsed by id Software, Bethesda or the Yamagi Quake II project.
  • No proprietary material. No Sony SDK, firmware, encryption keys or decrypted system modules are included.
  • No warranty. This project is provided "as is", without warranty of any kind, to the extent permitted by law. See sections 15 and 16 of the GPL.
  • Use at your own risk. Running homebrew requires a modified console, which may void its warranty, breach the platform's terms of service, or cause data loss.
  • Legal use only. Use it only with hardware, accounts and content you own. This project does not support or enable piracy.

AI assistance

This project was developed with AI assistance from OpenAI and/or Anthropic tools.