Skip to content

Eglantine smileytatsu/dev-rebased build 16 (22d6be2)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Nov 07:22

What changed

Mario Kart World's in-game 30 FPS mode now follows the game instead of the pacer.

The game picks a 1- or 2-vblank frame mode from a frame time that already includes the interval it asked for, so a frame held for two vblanks kept reading as too slow and it stayed at 30 FPS for good. The dynamic mode that avoids this was already in the tree but never ran: PaceToVblank recognised the title through the current process, and a present that arrives from a service context has no current game process, so the program id never matched. It now asks for the application process, and the recommended settings for the title switch the mode on.

  • Guarded on the loader patch: a title whose instruction sequence does not match is left unchanged, and no other title is affected.
  • Takes effect after restarting the game. It can also be switched on per game as Mario Kart World: dynamic FPS.
  • It removes the artificial hold, not the frame time: the game still only picks one vblank when a frame fits in one.

README: the engine table lists the change, and a new Ideas section records what is worth doing next (pacer clock, present queue, emulated refresh rate, two frames ahead, texture cache cap, submission batching, range uploads, a host GPU capture, the draw path). The per-image upload idea is replaced by a per-layer one, after a temporary tally showed that no large texture is rewritten every frame: the only images uploaded every frame were the small planes the video decoder writes.

Commits since build-15
  • 0cd801d8 nx2: apply Mario Kart World's dynamic frame rate
  • 398af04e README: list the Mario Kart World pacing change and the ideas
  • 22d6be2c README: the per-image upload tally found no large texture rewritten every frame

Automatic build of smileytatsu/dev-rebased at 22d6be2.

Linux

Linux packages come as an AppImage (self-contained, needs glibc 2.39 or newer: Ubuntu 24.04, Fedora 40, Debian 13, Arch) and a tar.gz (uses your system libraries, so Qt 6 and the usual libraries must be installed).

Build Type Standard PGO (Recommended) Notes
amd64 AppImage · tar.gz AppImage · tar.gz Make the AppImage executable (chmod +x) and run it
ARM (aarch64) AppImage · tar.gz AppImage · tar.gz

Windows

Windows packages are in-place zip files: extract and run eglantine.exe, or eden-cli.exe from a terminal.

Build Type Standard PGO (Recommended) Notes
amd64 / x86_64 (MSVC) MSVC zip Use if you run into graphical issues on other builds
amd64 / x86_64 (MinGW) PGO zip Built with MinGW clang; bundles its own DLLs, no Visual C++ redistributable needed

The PGO builds are the same programs compiled with profile-guided optimization (clang plus Eglantine's profile); prefer them when your CPU supports it.