Skip to content

JSRF Unleashed 0.5.9

Choose a tag to compare

@JuMatt JuMatt released this 27 Oct 12:46
· 39 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 spriteice, whose findings while working on his own PC port of the game are behind the sound, OpenGL, half-pixel and depth changes below!

The camera on the right stick turns smoothly

It turned by the clock while the game moves by its frames, so a slow pan came out in uneven steps whenever the frames were not exactly evenly spaced ("like a really bad V-Sync", a player wrote). It now turns by the game's frames, as the game's own camera does, and the stick's response is softer: a third of the way turns it about 7 degrees a second instead of under 1. Thanks to the player who reported it!

A hang a few seconds into a level

The game's sound library (CRI) protects its data with a lock that, on the console, nothing can interrupt. Here, another thread could slip into the middle of it, which sometimes left the game's main thread stuck at the highest priority: the picture stopped a few seconds after a level appeared. It can no longer be interrupted there, as on the console.

Closer to the console's timing

  • The sound chip runs a frame at a time (every 0.67 ms, as on the console) instead of eight frames at once and then a 5 ms rest, so the game no longer waits up to 5 ms each time it starts or stops a sound -- which added up in crowds like Shibuya Terminal's.
  • The game's vertical-blank handler, which holds every other game thread back while it waits, is ended within a millisecond every frame.
  • OpenGL: the renderer no longer asks the driver for errors after every draw (which made it wait for the driver hundreds of times a frame), and every platform sorts the game's GPU commands a little quicker.

Half a pixel, and depth

The scenery and the menus were drawn half a pixel off from the characters and the traffic; they now line up. With reversed depth (Metal, and OpenGL where the driver allows it), the far end of the scene gets the full precision of the 32-bit depth buffer. Polygon offset is applied when the game asks for it. On AMD graphics under Linux (Mesa), the vertex programs go without the invariant position, which has been found to cause trouble there.

How it was tested

On a Mac, with Metal and with OpenGL: Shibuya Terminal from an empty save folder (the camera turning by exactly the same step at every frame, the sound never running dry, 60 frames a second) and loaded there 23 more times, with and without the hang's fix; the Garage; then the release build on the title, on Dogenzaka Hill with SMAA and MSAA 4x, in the Fortified Residential Zone and at Shibuya Terminal. Linux (Mesa): the attract demo, and the new sound and vertical-blank timing against 0.5.8's on that slow software renderer (a little faster, and the game's main thread waiting less than half as long). Windows (under Wine): the title as an upgrade from 0.5.8, F7 and the Controls menu. The Android and iPhone builds were built and checked, not run.

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