Skip to content

B3-Express v0.1.7

Choose a tag to compare

@LuvAbyss LuvAbyss released this 06 Nov 10:54
· 27 commits to main since this release

A deep optimization of how frames reach your screen, for a much smoother 60 FPS. Plus a fix for Intel graphics losing the device.

No game files are included. You need your own extracted dump, updated to v1.2.0. See INSTALL.txt in the zip, or the install guide.

Performance in a real play session

56 minutes of normal play on 0.1.7 (199,200 frames), on the test PC (Ryzen 7 5700X3D, RTX 3080):

Average FPS 58.9 (59.4 outside the gallery)
1% low 47.6 FPS typical, 38.5 FPS or better in 9 of every 10 stretches
Frame time 16.75 ms median, 19.5 ms at the 99th percentile
Rushed frames (under 14 ms) 100 of 199,200 (0.05%)

The 1% low is measured over each 10-second stretch of play. Loading screens and the game's own 30 FPS scenes are left out of it.

Smoother frame pacing

Before 0.1.7, the game was held back at the start of each frame, but a frame reaches the screen only after a varying amount of work. So a slow frame was often followed by a rushed one, and that felt like stutter even at a steady 60 FPS.

Frames are now presented from a thread of their own, on even 16.7 ms slots. A frame that comes late is shown at once, with no rushed frame after it. Presenting no longer waits for the next frame's preparation, because the GPU queue has a lock of its own.

On a recorded 110-second session (menu, street, practice, a verse and back), replayed the same way on both versions, out of 6,757 frames as they reached the screen:

0.1.6 0.1.7
Rushed frames (under 14 ms) 207 13
Frames over 19 ms 326 177
A slow frame followed by a rushed one 130 4
99th percentile frame time 24.2 ms 23.3 ms

Set SNX_PRESENT_THREAD=0 in the environment to present frames the old way.

Fixed

  • Intel integrated graphics losing the device (#2). Some of the game's compute shaders waited at a barrier inside a branch, which Intel's driver can't run, and the device was lost at the first frame that used them. They now wait outside the branch. (NOT TESTED)
  • Wrong colours in the dartboard room on NVIDIA. The same barrier made its colour grading come out with its colours rotated.

Upgrading from 0.1.6

Unzip 0.1.7 to a new folder and run Install again from your extracted dump. Your graphics card's shaders are prepared again on the first Play, a few minutes once.

Known limits

  • The gallery drops under 20 FPS while its background movie plays. The fix is planned for 0.2.0
  • The frames over 19 ms that are left come from real work (texture decoding, loading). Holding frames back can't hide those
  • The Intel fix hasn't been tested on an Intel card yet. If the problem stays, please comment on #2 with your Bayo3_120\Bayo3_120.log
  • Tested on one PC. Other PCs and most chapters are untested

Built on ScarletNX, GPL-3.0-or-later. Not affiliated with Nintendo, SEGA or PlatinumGames.

SHA-256 of B3-Express-0.1.7-windows-x64.zip: ac9793e5baded4a08b70d22b0c41fe1d61ef395dec42d5a228667721dde1d1de