github StrikerX3/Ymir v0.3.1
Ymir v0.3.1

9 hours ago

Ymir v0.3.1

Discord | Patreon | Compatibility list

This release adds many performance optimizations to the VDP2 renderer, bringing up to 40% more performance on graphics-heavy games. Users have reported running Virtua Fighter 2 and Last Bronx at full speed on an i7-2600K and many cases of lower-powered CPUs are now capable of running Ymir with less stuttering. In my tests, it consistently runs faster than Mednafen, Kronos and Yaba Sanshiro in high-profile games and a few obscure ones too.

This version also includes a few more graphics rendering fixes, more SH-2 emulation accuracy improvements (thanks to @celeriyacon once again), and some adjustments to the CUE sheet parser to fix some CD audio track misalignments (including some ImgBurn dumps).

Important

Windows users: install the latest Microsoft Visual C++ Redistributable package (x86_64 installer, AArch64/ARM64 installer) before running the emulator. This is mandatory to avoid crashes on startup.

macOS users: follow these instructions to allow Ymir to run on your system. Ymir is signed with an ad-hoc certificate, flagging it as unverified.

Linux users: if you choose to install the Flatpak version or installed Ymir from the SteamOS's Discover Store, make sure to grant Ymir permission to access the filesystem or your multi-file disc images won't load properly.

Changes

New features and improvements

  • Debugger: Add Priority Stack to VDP2 debug overlay.
  • VDP2: Various performance optimizations to the software renderer, improving performance in graphics-bound games (especially in high resolution modes). Technical details:
    • RBG1 was being unnecessarily rendered when NBG0 was enabled and RBG1 was disabled
    • Remove redundant transparency bit since priority zero acts as transparency
    • Remove various unused function arguments, reducing CPU register and stack pressure
    • Pass down VDP2 register references as arguments rather than fetching them from scratch everywhere
    • Reuse line data (i.e. skip recomputing lines) when rendering vertical mosaic
    • Bit-pack character pattern data in a single 32-bit value
    • Microoptimize scroll coordinates calculations
    • Rotation parameter table calculations:
      • Specialize calculations for (1) no coefficient table, (2) per-line coefficient table and (3) per-dot coefficient table
      • Hoist coefficient table enable and per-dot coefficients checks out of the loop
      • Make the inner loops SIMD-friendly
      • Avoid unnecessary computation of transparency and line color screen data if they are disabled
    • Microoptimizations to the compositor function:
      • Layer sorting now uses a combined key
      • Gather layer data in one single loop
      • Pixel fetching is now templatized and some bail out checks are done earlier
      • Color offset calculation enable flag is cleared in the fetch loop if no offset is actually applied

Fixes

  • Debugger: Various SH2 stack analysis fixes.
  • Game DB: Add slow VDP1 flag to Funky Fantasy to fix slow FMVs.
  • Media: Detect postgaps in data tracks when the CUE sheet doesn't explicitly announce them. Fixes audio track shifts in bad Virtua Fighter 2 dumps.
  • Media: Fix PREGAP/POSTGAP handling in CUE/BIN dumps. Fixes shifted audio tracks in games dumped with ImgBurn.
  • SH2: Fix illegal slot instruction exception handling. (thanks to @celeriyacon)
  • VDP1: Add game-specific flag for skipping command processing if the top of the table is empty. Enable it exclusively for Sekai no Shasou kara - I Swiss-hen - Alps Tozantetsudou no Tabi. Fixes missing graphics in Gungriffon. (#810)
  • VDP1: Disable early polygon drawing termination when rendering polygons when user clipping mode is inverted. Fixes clipped polygons around the minimap in Machine Head (#767).
  • VDP1: Implement simple infinite loop detection. Fixes slowdown in the Mojave Desert stage (1-2) in Gale Racer.
  • VDP2: Apply color calculations to transparent sprite mesh on layer 0. Fixes stripes on ground plane in Gungriffon.
  • VDP2: Apply color offset to transparent sprite mesh on layer 0 in a separate step. Fixes missing spotlight in the Colonel battle in Mega Man X4. (#818)
  • VDP2: Fix VRAM access calculations when RBG1 is enabled. Fix missing car graphics regression in Gale Racer. (#359)
  • VDP2: Fix and use line color screen calculation ratio when LNCL is inserted. Fixes text background issues in Doukoku Soshite. (#502)

Which version should I download?

Grab the file matching your operating system and processor architecture:

  • windows, linux and macos indicate the operating system
  • x86_64 is for Intel or AMD CPUs and AArch64/ARM64 is for ARM CPUs
  • All builds are for 64-bit systems

For x86_64 builds, the AVX2 version offers slightly better performance but requires a CPU that supports the instruction set -- pretty much any Intel Core or AMD CPU since 2011 and Intel Pentium/Celeron CPUs from 2020 onwards has support for it. If you don't know if AVX2 is supported or you have no idea what any of this means, it's probably safe to grab the AVX2 version if you don't have an ancient or cheap computer. If it doesn't start up or randomly crashes for no reason, try the SSE2 version.

Every ARM build also includes support for the NEON instruction set.

For Windows releases, you might also need to install the latest Microsoft Visual C++ Redistributable package (x86_64 installer, AArch64/ARM64 installer). Ymir requires Windows 10 or later.

You can also install Ymir on Linux via Flatpak.

The macOS releases work on Apple Silicon (ARM) systems (arm64) and Intel systems (x64). Ymir requires macOS 15 (Sequoia) or later.

FreeBSD users can install Ymir from the Ports Collection:

pkg install Ymir         (uses zenity with GTK3 widgets for SDL3's file dialogs)
pkg install Ymir-gtk4    (uses zenity with GTK4 widgets)

Don't miss a new Ymir release

NewReleases is sending notifications on new releases.