Skip to content

JSRF Unleashed 0.5.10

Choose a tag to compare

@JuMatt JuMatt released this 29 Oct 12:41
· 37 commits to main since this release

Jet Set Radio Future, natively on Mac, Windows, Linux, Android, iPhone and iPad. You need your own copy of the game (the standalone US disc): these downloads are the engine only.

Download For
JSRF-Unleashed-windows-x86_64.zip Windows 10 and 11, 64-bit
JSRF-Unleashed-macOS-arm64.zip macOS 12 or later, Apple Silicon
JSRF-Unleashed-linux-x86_64.tar.gz Linux x86_64, glibc 2.34 or later
JSRF-Unleashed-android-arm64.apk Android 10 or later, 64-bit, OpenGL ES 3.0
JSRF-Unleashed-iOS.ipa iPhone and iPad, iOS 15 or later (AltStore, SideStore, Sideloadly)

Thank you to Marice, whose pull request (#46) found where this hang was hiding!

A hang where the picture stopped for good

When the game needs a lot of room for its drawing commands, it asks the GPU to call it back once it has caught up, and waits. Now and then that callback was lost: the engine's GPU thread checked that no callback was in flight and then cleared the GPU's interrupt status, in two steps, and a callback raised between the two was wiped with it. Nothing answered it, and the game waited for good: the picture stopped, usually in a busy scene. The GPU thread now reads the status first and clears only what it read, so a callback raised in between is kept. With Marice's changes, every change to those interrupt bits is atomic, and a callback that goes missing anyway is raised again after a few milliseconds, with a line in the log.

How it was tested

On a Mac, with Metal and with OpenGL, against 0.5.9 back to back on the same machine: the Fortified Residential Zone four times, Dogenzaka Hill with SMAA and MSAA 4x, and Shibuya Terminal from an empty save folder -- 60 frames a second, the camera and the sound exactly as in 0.5.9. Then a test build that holds the GPU thread in that gap on purpose: the old way, the game stopped for good at the first callback, just as Marice found; 0.5.10's way, not one went missing. Linux (Mesa) and Windows (under Wine): the attract demo against 0.5.9 on the same machine, F7 and the portable switch. The Android and iPhone builds were built and checked, not run.

Everything else is in the changelog, and installation instructions are in the README.