SpartanPort 2.7.0. These notes cover the 28 pull requests merged since 2.6.0, through
003e42b(#922), including the version bump to 2.7.0.
Updating from 2.6.0
- Windows: update through the launcher as usual. Saves, game settings and launcher settings carry over.
- Linux: the 2.6.0 AppImage cannot update itself. Download
spartanport-x86_64.AppImagefrom this release once and replace the old file; from 2.7.0 on, the launcher offers updates. - First start: the shader cache is rebuilt once and the game can stutter for a while. Later starts reuse it.
Performance and shader cache
- Low-thread CPUs (#813, issue #209). Before: on CPUs with 4 threads or fewer, the game's five job workers spun on a lock and took almost all the CPU; the GPU command thread got about 17% of one core and the sound thread starved. Now: the workers run below normal priority and the sound and file threads above it. A per-thread CPU report is written to the log on shutdown.
- Saved shaders reused (#386). Before: saved shaders were never loaded, so every start and save load compiled them again and objects popped in a few frames late. Now: they are read back, with a background prefetch so the GPU thread does not wait on the disk. New shaders and driver changes still compile.
- Smaller pipeline-binary cache (#386, issue #177). Before: the same driver binary was copied into almost every file, and the folder could pass 20 GB. Now: identical binaries are stored once; existing files are converted in the background at start.
- Readback waits (#386): image uploads and frees no longer wait for unrelated copies that only share a memory page. This targets streaming stalls, not FPS on every system.
- Delete the shader cache from the launcher (#386): Performance > Shaders has a button that shows the size and folder, asks first and refuses while the game runs. Shader notes in the corner are off by default.
| Measurement | Before | After |
|---|---|---|
| FPS, Ryzen 5 5600X limited to 4C/4T, same scene (#813) | 19-32 FPS | 97-120 FPS |
| FPS, Ryzen 5 5600X limited to 2C/2T (#813) | 14-16 FPS | 40-48 FPS |
| Average FPS, i5-7500 + GTX 1660 Ti, player test (#813) | 36.0 FPS | 59.0 FPS |
| Sound buffer underruns per minute, 4 threads (#813) | 113 | 0 |
| Shaders compiled on the second start, RTX 5070 (#386) | 623 | 6 |
| Pipeline-binary sample of 300 real files (#386) | 393 MB | 11.6 MB |
The 5600X figures come from limiting CPU affinity, not from real older CPUs, and other CPUs and scenes can gain less.
Game and native menus
- Cheats in the game's Options menu (#921): a Cheats entry below Game Settings has eight toggles, including Automatic QTE, and a Multipliers page with six sliders and Reset All to 1x, with native navigation and scrolling. Until now they were only in the Insert overlay menu.
- Enemy health bar (#921): also a toggle in the native Display menu.
- Overwrite confirmation (#918): picking an occupied save slot now asks first, with Cancel selected by default, and shows the new save image next to the existing save's location, date, difficulty and play time.
- Local trophies (#540): unlocks are saved and survive restarts, with a notice card, an in-game list (F8 or R3 + R2) and a Trophies page in the launcher. Icons come from the player's own game files; there is no PlayStation Network sync.
- Timed QTE crash on older CPUs (#884, issues #811 and #818). Before: the timed-QTE hook added in 2.6.0 used a BMI1 instruction, so every timed QTE crashed on CPUs without it (Sandy and Ivy Bridge, AMD FX), even with Automatic QTE off. Now: the hook uses base x86-64 instructions.
- Exit to Desktop in the game language (#779, issue #649): French, Spanish, German, Italian, Polish and Portuguese are translated. Russian, Japanese and Chinese stay in English because the menu font only covers the Latin alphabet. The translation may not work on every game version yet, and we are working to improve it.
Graphics, controls and audio
- 144 and 180 FPS (#705): new engine rates in the launcher, the overlay and the live switch. F9 or R3 + L1 + R1 now cycles 60, 100, 120, 144, 180 and 240 FPS.
- Monitor selection (#647): both launcher settings views pick the display the game opens on, falling back to the primary one.
- Steam Deck resolution (#877, issue #855): a first start on an LCD or OLED Steam Deck uses 1280 × 800 instead of leaving black bars. A saved resolution wins.
- Resolution labels (#696): 3440 × 1440, 3840 × 1600, 5120 × 1440, 5120 × 2160, 1920 × 1200, 2560 × 1600 and 1920 × 1440 are no longer marked beta, after player reports. 2560 × 1080, 1440 × 1080, 2048 × 1536, 2560 × 1920 and 8K keep the label.
- Fullscreen Alt+Tab (#695, issues #325 and #391). Before: Alt+Tab or the Windows key in fullscreen crashed the game while the swapchain was recreated on a minimized window. Now: recreation waits for the window to come back. Optimus laptops were not verified on hardware.
- Larger keyboard prompts (#617): key caps and labels such as
SPACE,SHIFTandCTRLare bigger in tutorials and QTEs. - Lyre prompts (#706): the Xbox and Nintendo styles also repaint the lyre puzzle after Hermes, through a generated copy of the level file; the game files are not changed.
- Windows audio (#665): when WASAPI fails on some outputs (optical S/PDIF, some USB DACs), the game falls back to DirectSound by itself instead of running silent, unless a driver was chosen by hand.
Launcher and localization
- Linux AppImage updates (#707, #900): the AppImage checks for updates, verifies the download against the release SHA-256 file and replaces itself. A bad checksum, a failed download or a read-only folder leave it unchanged.
- Languages (#615, #840, #869): Brazilian Portuguese in the game-language list, a complete Simplified Chinese interface and an Indonesian launcher. Choosing a language does not add missing language files to the game.
- Game-language note (#882, issue #842): the launcher explains that the game's own save keeps its text and speech languages, changed in the game's menus.
- Language change on Linux (#857, issue #697): saving a new launcher language no longer closes the AppImage on Fedora.
- Desktop shortcuts (#838, issue #824). Before: after 2.6.0 the old shortcut deleted itself at every start and a SpartanPort one appeared. Now: the migration runs once and never deletes a shortcut.
- Memory errors at start (#905, issue #878). Before: a failed memory reservation (error 1450) gave a black screen with the FPS counter running, and the reason was only in the log. Now: the game stops and the launcher shows advice and the log. Low-memory setups are still unsupported.
- Linux build with GCC 16 (#913): fixed a buffer size in the CPU report that stopped the build.
- Regional patches (#894, issue #817): the game is recognized by its own title again after the rename, which restores the built-in patches (including 3440 × 1440) on unlisted IDs. CUSA01740 is now listed.
Tools
- Voice replacement (#576):
xvag_voice_swap.pybuilds an Update folder from the player's own recordings, without writing to the dump. Only mono lines with the original length are handled.
Requests addressed
| Issue | Fixed by |
|---|---|
| #177 Pipeline-binary cache too big | #386 |
| #209 Performance on i3-9100F and similar CPUs | #813 |
| #325 Crash on Alt+Tab in fullscreen | #695 |
| #391 NVIDIA Optimus flickering and crash | #695 |
| #649 Exit to Desktop not following the language | #779 |
| #697 AppImage crash when changing the launcher language | #857 |
| #811 Crash on the QTE finisher near Helios | #884 |
| #817 3440 × 1440 broken and CUSA01740 missing | #894 |
| #824 Desktop shortcut deleting itself | #838 |
| #842 Choosing English voice with other text | #882 |
| #855 1280 × 800 for the Steam Deck | #877 |
| #878 Black screen on memory reservation failure | #905 |
#818 (crash when starting QTEs) has the same cause as #811 and stays open until players confirm the fix on 2.7.0.
Known issues
Same as 2.6.0: see the 2.6.0 release notes. This release is not a general fix for startup crashes, loading hangs, corrupted textures or integrated GPUs. Also:
- High frame rates can still block some traversal and QTE sequences. Switch to 60 FPS with F9 or R3 + L1 + R1 for that part.
- Do not share one shader cache with an older build: it writes the old numbering. If it happens, delete
user/cache/CUSA01623/disk_shaders.binto force a rebuild. - Autosave capacity is unchanged, and save previews are not verified on every region and update.
- Trophies are local: PlayStation unlocks are not imported, and an advanced save may not trigger earned trophies again.
- 8K and the other beta resolutions need more testing and more memory and VRAM.
- Native menus need a recognized game script; other regions or updates may need more work.
- AppImage self-update was tested against a local mock release only. Its first real run is the update after 2.7.0.
For a new or continuing problem, open an issue with the release version, operating system, CPU, GPU and driver, render resolution, game title ID and update version, reproduction steps and the relevant log.
Validation
- CPU scheduling (#813): live A/B on a Ryzen 5 5600X + RX 6700 XT with limited affinity, and a player check on an i5-7500 + GTX 1660 Ti with the test build.
- Shader cache (#386): cache tests, gameplay on AMD and on an RTX 5070.
- Save confirmation (#918): service tests on Windows and Linux with AddressSanitizer and UndefinedBehaviorSanitizer, 8 runtime tests, layout at 720p and 1080p, final layout confirmed in game.
- Native settings (#921): 28 Python tests, 2 native tests and maintainer gameplay.
- Other PRs: focused tests and player checks recorded in each PR. No full-suite result is claimed for the whole snapshot.
- Final packages built from
003e42b6e004ed686aae58c053d2301fe9c8c68e: the Windows ZIP workflow passed its clean-runner launcher smoke test without MSYS2. The Linux AppImage workflow passed launcher smoke tests on Debian 13, Fedora 42, Ubuntu 24.04, Arch Linux and openSUSE Tumbleweed. Both packages and their SHA-256 files are attached to this release. - Downloaded the attached Windows ZIP and verified its SHA-256 checksum; it carries
SpartanPort.exe,Play SpartanPort.exeand the formerGod of War III.exeandPlay God of War III.exethe 2.5.0 and 2.6.0 updaters and shortcuts look for. - Final Windows package validated by the maintainer: the extracted release ZIP was opened on Windows and approved. This is a scoped manual check, not a full playthrough.
- No final-package Linux gameplay validation has been completed for 2.7.0.
- macOS: the Apple Silicon work is still a separate test release and open PR #798.
Credits
Thanks to @Erickxp05, @Invictus-potens, @KauaRios, @Rajinder798, @devLucasEmiliano, @drizzt, @edinaldoof, @hmathsan, @kagefortysix, @kris-c-anderson, @leodascripto, @ranyery, @reido601hz-lgtm, @weversonl and @yshtonytc for contributions included in this update, to @HassanBadri00 for testing the CPU fix, and to the players who supplied reproductions, logs and in-game checks.
This project builds on the work of Supermedo/bloodborne_pc, deadinside28/bloodborne_pc and shadPS4.
Full changelog: 2.6.0 to 2.7.0