github StrikerX3/Ymir v0.3.2
Ymir v0.3.2

5 hours ago

Ymir v0.3.2

Discord | Patreon | Compatibility list | Screenshots

This release brings a large set of bug fixes and accuracy improvements once again guided by @celeriyacon's test ROMs, pushing compatibility to just over 94%! A workaround for 16 games described below would bring this number to 94.6%.

The highlight of this version is the huge set of fixes to CD Block HLE, bringing more parity with the LLE counterpart and improving compatibility and stability with dozens of games. VDP1 fixes also resolved a few longstanding issues and brought some games to life.

Performance got another huge boost in multiple avenues with this version. First, thanks to @SternXD, you can now offload audio processing tasks to another CPU core, freeing up the emulator thread to focus more heavily on the SH-2s and general system logic. This alone can boost performance by up to 25% and possibly more, depending on how much work is put on the SCSP DSP.

SH-2 emulation got faster and more accurate by properly emulating the CPU's fetch stage which pulls two instructions in a single fetch, approximately halving the number of expensive memory accesses done by the interpreter. Alongside that, there have been a number of performance microoptimizations to various aspects of SH-2 emulation that combine into another 10-15% boost to emulation of CPU-heavy games. Grandia's FMVs are notoriously intensive, and this set of improvements marks the first time I've seen it run at over 200 fps on my system.

Of course, with every release there's also room for more features. The SH-2 CPUs can now be overclocked up to 500% to reduce lag in poorly-optimized games, or underclocked down to 25% to lower host CPU usage on lighter games. As everything in the Saturn tends to be timing-sensitive, this comes with a disclaimer that it might break games, but it works well in most cases.

There's now support for Japanese characters (visible in the Backup Memory Manager and other places), a number of debugger improvements and new features, new options to hide the game title and performance indicators from the window title bar, an option to pause emulation upon startup, and a few more odds and ends.

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.

Compatibility improvements

Here's a small showcase of games that now work on v0.3.2 or had major bugs fixed:

image

(click any image to zoom)

With v0.3.2, Ymir's compatibility has pushed ahead of Kronos and is just over 94%.

image

Ymir is becoming a solid competitor. Watch out, Mednafen!

The primary culprit for most of those games are CD Block high-level emulation (the default in Ymir) and VDP1 timing and behavior inaccuracies. To tackle the CD Block problems, Ymir has a new debugger window that lists all CD Block partitions and what buffers are loaded into them:

image

Within a few minutes of using it, I already caught two bugs! This one in Shellshock, where the same sector was being loaded into the partition multiple times:

image

And another one in Sonic Jam, which had a sudden jump backwards in the sector read sequence:

image

Those two bugs alone accounted for the majority of issues encountered with CD Block HLE mode. For example, IRREEL would fail to load level 2 assets. That is now fixed:

Before After
image image
image image

Not pictured: Completely busted sound | Perfectly pristine sound.

This tool has also helped detect a buffer exhaustion bug that occurred when pausing and unpausing in Panzer Dragoon II Zwei, a Mode 2 Form 2 sector read bug that broke Chisato Moritaka - Watarase Bashi & Lala Sunshine's FMVs, and many more. Here's a list of games that now work correctly with CD Block HLE thanks to those fixes:

  • Chisato Moritaka - Watarase Bashi & Lala Sunshine (#604): FMVs now play correctly.
  • Chou Jikuu Yousai Macross - Ai Oboete Imasu ka (#605): intro sequence now plays correctly.
  • Cyber Speedway (#785): music now resumes properly after pausing and unpausing.
  • Digital Dance Mix Vol. 1 - Namie Amuro (#476): animations and songs now play correctly.
  • Dragon Force (#866): Working Designs logo FMV now plays correctly.
  • Gunbird (#625): boss animations now play correctly.
  • Legend of K-1 - The Best Collection (#758): FMV of third fight now plays correctly.
  • LifeScape - Seimei 40 Okunen Haruka na Tabi (#598): no longer freezes on opening FMV.
  • Mahjong Yon Shimai - Wakakusa Monogatari (#527): no longer freezes on character select screen.
  • Marvel vs. Street Fighter (#667): no longer crashes on Capcom logo.
  • Mass Destruction (#664): intro FMVs now play at full speed and in-game music now plays.
  • NiGHTS Into Dreams... (#437): Trick Ribbon music plays correctly at all times.
  • Panzer Dragoon II Zwei: no longer softlocks after pausing and unpausing multiple times.
  • Senken Kigyouden / Xianjian Qixiazhuan (#409): graphics now load correctly.
  • Shellshock (#344): no longer crashes on CORE logo.
  • Shining Force III (#712, #771): no longer gets stuck on Yes/No dialog choices or crash with CD read errors.
  • Sonic Jam (#83): in-game music now plays correctly.
  • Tilt! (#872): intro FMVs now play at full speed.
  • X-men vs. Street Fighter (#667): no longer crashes on Capcom logo.
  • and probably more!

SH-2, VDP1 and VDP2 fixes also improved compatibility with:

  • Dark Savior (#134): sprites are no longer spliced across frames.
  • Deep Fear (#779): color palette no longer messes up when opening the inventory.
  • Magical Night Dreams - Cotton 2 (#728): character highlight effect is now fixed.
  • Neon Genesis Evangelion - Koutetsu no Girlfriend (#581): now plays FMVs.
  • Nobunaga no Yabou Returns (#596): now plays FMVs and goes in-game.
  • Revolution X - Music Is the Weapon (Europe): title screen now displays the band.
  • Ryuuteki Gosennen - Dragons of China (#856): text frames are no longer shifted to the right.
  • Scorcher (#281): game no longer crashes immediately in Training mode or randomly in other modes.
  • Shellshock (#344): in-game terrain is now drawn at full width (half resolution).
  • Shining the Holy Ark (#287): game speed is correct, no longer double-taps movements.
  • Stellar Assault (#844): stopped booting on 0.3.1 due to a VDP1 infinite loop detection optimization. This is now fixed.

Dark Savior, notably, has had the sprite splicing bug for a long time (#134) that affected the intro sequence and nearly all gameplay scenes. In v0.3.2, this bug was fixed by an SH2 accuracy improvement guided by @celeriyacon's tests.

Before After
image image
image image

The deinterlace effect received some adjustments to fill in gaps between sprites on high resolution modes, affecting games such as Sonic Jam (#853) and Astra Superstars (#784).

Threaded VDP1 rendering caused some problems with several games (#898). This release fixes most of the issues, though there are still a few remaining glitches to fix:

  • BlackFire (#790): GUI elements no longer flicker.
  • Burning Rangers (#791): transparent elements (such as fire and explosions) are no longer drawn behind walls, doors, etc.
  • Scorcher (#473): HUD is now drawn on top of level geometry.
  • Virtual Golf (Europe) (#830): ground is now fully rendered and random sprites no longer appear.
  • Waialae no Kiseki - Extra 36 Holes (#871): ground is now fully rendered. However, the top portion of the FMV now overlaps with the title screen.

Disc image loader improvements

Some ImgBurn dumps are now compatible with Ymir, in addition to Redump dumps, thanks to improvements made to the CUE sheet parser. Ymir will also no longer crash when trying to load a PlayStation disc image or any other weird formats. You can use it as a glorified CD player as well.

Known workarounds

You can unblock and play a relatively large set of no-boot games with a debugger trick:

  • Run the game until you hit a black screen after the Sega licensing logo.
  • Open Debug > Open memory viewer.
  • Jump to 60FFC13 (copy-paste this number in the field next to Range at the bottom of the window and press ENTER).
  • Modify the value to FF (you can immediately type FF right after pressing ENTER).

This applies to:

  • Another Memories (Japan)
  • Device Reign (Japan)
  • Real Sound - Kaze no Regret (Japan)
  • SD Gundam G Century S (Japan)
  • Shutsudou! Miniskirt Police (Japan) -- requires multiple applications of the trick at different points to work
  • Super Tempo (Japan)
  • Tennis Arena (Japan)
  • Tilk - Aoi Umi kara Kita Shoujo (Japan)
  • Yuukyuu Gensoukyoku (Japan)
  • Yuukyuu Gensoukyoku 2nd Album (Japan)
  • Yuukyuu Gensoukyoku Demo (Japan)
  • Yuukyuu Gensoukyoku ensemble (Japan)
  • Yuukyuu Gensoukyoku ensemble 2 (Japan)
  • Yuukyuu no Kobako Official Collection (Japan)
  • Zero4 Champ DooZy-J Type-R (Japan)

These games are all listed as "Nothing" in the compatibility list as they don't work out of the box, but applying this trick would result in all of them becoming "Playable", bringing overall compatibility to 94.6%.

image

This is what typically happens with these games.

image

Changing this one byte to FF gets them unstuck!

image

This is just a small selection of those games.

Performance improvements

Numerous SH-2 and SCU DSP microoptimizations contributed to about 10-15% overall performance gains, but the biggest performance winner of this version is SCSP threading, courtesy of @SternXD.

SCSP threading

The SCSP (plus its DSP) and the accompanying MC68EC000 CPU account for about 25-30% of CPU time on the emulator thread, right below the two SH-2 CPUs which sit around 50-60% of the total time, assuming VDP1 and VDP2 are threaded. In v0.3.2, you can now move the entirety of audio processing to a dedicated thread much like the existing software VDP1 and VDP2 renderers, greatly boosting performance in nearly every scenario. You can expect up to 25-30% more frames per second when running the emulator in fast-forward mode (the usual method for testing Ymir's performance). This translates to less CPU demand, allowing Ymir to run at full speed on even weaker CPUs than before. This works best with quad-core CPUs or better and is disabled by default to preserve existing behavior, although plenty of testing has proven that it is safe to enable the option if you have CPU horsepower to spare.

This option does not lower accuracy or compatibility with any games, nor introduce any glitches as far as the testing team has checked -- it still passes the same tests from @celeriyacon's SCSP test ROM, for one. It's probably safe to turn it on and enjoy the free performance boost!

SH-2 and SCU DSP microoptimizations

The SH-2 interpreter went through many microoptimization passes, netting another 10-15% extra performance in all scenarios while also improving SH-2 emulation accuracy beyond the naïve level.

In the pursuit of performance, sometimes the accurate solution results in better performance. Ymir's SH7095 emulation now accounts for WB/EX stalls, which incurs a single-cycle penalty for sequences of instructions where the second instruction depends on the result of the first instruction, and it now performs double instruction fetches just like the real CPU, pulling two 16-bit instructions with one 32-bit read, roughly halving the number of expensive instruction fetches from memory.

Grandia's FMVs were my go-to test for the microoptimizations made in v0.3.2. One of the biggest offenders in them was the predecoded instruction arguments table (Rm, Rn, displacements and immediates) that not only took a decent amount of space in L1 cache, but also required slow memory fetches when it wasn't cached. Replacing it with the comparatively cheaper direct decoding of the arguments (just a bunch of shifts and masks that CPUs excel at) added another 5% or so more performance.

The div1 instruction was also quite high in the profile charts. It was revised to do less work for the same outcome, squeezing another percent or two of speed.

Finally, the SCU DSP was competing for third place in the profiler with most of the time being spent executing ALU operations. A very small but effective microoptimization to 48-bit register handling simplified most of the machine code dealing with them, providing another 2% extra performance in the FMVs.

All of this combined with SCSP threading boosted the frame rate range of Grandia's FMVs from 160-180 to 180-210 fps on my system -- a 12-16% increase!

SH-2 overclocking and underclocking

New to v0.3.2 is the ability to overclock and underclock the SH-2 CPUs, courtesy of @SternXD. You'll find the clock rate slider in Settings > System under the new SH-2 section:

image

With this, you can boost the emulated CPU speed by up to 500% to reduce or eliminate slowdowns in poorly-optimized games or lower the clock rate down to as low as 25% if your system isn't quite capable of handling the emulator.

image

Two SH-2s at 143 MHz can beat the Dreamcast's SH-4 at 200 MHz, right?

Note that the SCU and the VDP clocks are also adjusted in tandem, making VDP1 rendering and the SCU DSP faster (or slower) by the same factor. The displayed pixel clock is incorrect - it's not affected by SH-2 clock ratio adjustments in practice.

100% clock ratio 500% clock ratio
image image

The notoriously bad port of Doom runs at a butter-smooth 30 fps with 500% overclock.

Warning

A few Sega Saturn games are highly sensitive to timing inaccuracies. Adjusting the SH-2 clock rates affects timings on a system-wide level and might break them, causing freezes, crashes, failure to boot or erratic behavior. Use with caution, and don't report any issues if your CPU clock ratio is not at 100%.

The core supports up to 10000% overclocking, but good luck finding a CPU that can handle that much speed!

image

Surely two SH-2s at 2684 MHz can beat the Dreamcast's SH-4 at 200 MHz.

UI features

Ymir's GUI can now display Japanese text. This shows up on the window title bar and in the Backup Memory Manager with some games:

image Image

It even merges together the dakuten and handakuten suffixes.

Speaking of the title bar, you can now choose to omit the game title and/or performance indicators with two new settings in Settings > GUI:

image image

Ymir shows a number of notification messages on the top-left corner of the window, but they don't last for very long. If you missed them, you can find them in the newly added Message History window, accessible under Help > Show message history (bound to F1 by default):

image

This will be expanded later with a log system to include more useful messages for users and developers alike.

The graphics backend option was removed from this version as it served no purpose. Ymir uses SDL3's Renderer API to draw its GUI, which somewhat limits its ability to manage GPU resources, making GPU rendering more difficult than necessary. In an upcoming version, the entire graphics backend of the application will be reworked to give us developers more direct access to GPU resources, facilitating development of GPU renderers based on Direct3D 12, Vulkan and Metal, with Direct3D 11 offered for compatibility with older systems and SDL Renderer (without GPU acceleration) as fallback for everything else.

To finish the round-up of UI changes:

  • There's a new action in the File menu to reload save states from disk. This is useful if you replaced the files but don't want to restart Ymir to load them.
  • A new option was added in Settings > General > Behavior to pause emulation upon launching Ymir, for those of you sick of going through the BIOS boot sequence twice when loading games.
  • For TATE enjoyers: screenshots taken will now be rotated according to the display rotation selected under View.
  • The disc product number (also known as serial number) is now displayed in the System State window above the disc hash.
  • Opening a file dialog while in exclusive fullscreen mode will now temporarily switch to borderless fullscreen mode to avoid minimizing the window.
  • Inputs bound to controllers are now properly reloaded on startup. Previously, the underlying input system was not receiving the binds from the settings file, leaving them at their defaults.
  • Virtual RTC settings are now properly loaded from Ymir.toml.
  • A couple of rare crashes involving the rewind buffer and low level CD Block emulation were fixed.

Debugger

The spotlight of this version goes to the new HLE CD Block Partitions view, which displays CD Block buffer usage and the buffers allocated to each partition. If the buffer points to a sector in the CD, it displays the sector's frame address (in hexadecimal), otherwise it shows a number of <data> blocks for data written directly by game code into the buffers.

image

Panzer Dragoon Saga streams its cutscenes from the disc.

image

Virtual On - Cyber Troopers uses CD Block buffers as a replay buffer. If I remember correctly, partitions 5 and 6 store player and enemy actions respectively.

This tool alone helped detect and fix numerous fixes to high level CD Block emulation as described in the Compatibility improvements section earlier.

SH2 watchpoints were simplified down to per-byte read/write flags. Previously set watchpoints will be migrated to the new format automatically: 16-bit watchpoints are converted to two consecutive watchpoints, and 32-bit watchpoints are converted to four consecutive watchpoints. 16-bit and 32-bit accesses will now trigger watchpoints on any byte accessed by them. For example, a read watchpoint set on 6010003 will be triggered by 8-bit reads from 6010003, 16-bit reads from 6010002 or 32-bit reads from 6010000. When a watchpoint is triggered, Ymir will now display the address and size of the access and which watchpoints were triggered.

Before After
image image

News elsewhere

@yaz0r (famous for his decompilation of Panzer Dragoon Saga/Azel - Panzer Dragoon RPG) has recently demonstrated a nifty test harness that integrates with Ymir's debugger to lockstep their decompiled version with the original game to help find and fix decompilation bugs:

image

Changes

New features and improvements

  • App: Added action to reload save states from disk to the File menu.
  • App: Added disc serial number to System State window.
  • App: Added M PLUS U font for Japanese text support and convert Japanese backup RAM text to the appropriate characters. (#18)
  • App: Added option to show/hide game name from window title bar.
  • App: Added option to show/hide performance indicators from window title bar.
  • App: Added option to start emulation paused upon launching the emulator. (#899)
  • App: Added Message History window, listing up to 10000 messages.
  • App: Display Japanese text in the Backup Memory Manager and on window title bar (game title).
  • App: Removed graphics backend option as it served no purpose at this time. Ymir will rely on the default backend used by the SDL3 Renderer API, which should be compatible with most systems.
    • Note: GPU rendering will include a rewrite of the app's graphics subsystem, moving away from SDL Renderer to our own implementation.
  • App: Rotate screenshots based on selected display rotation.
  • Debug: Added CD Block Partitions view, listing all buffers currently loaded in each partition.
  • Debug: Avoid infinite loop when SH2 debugger window is collapsed. Fixes UI hang when (re)opening the window once it was collapsed. (#690)
  • Debug: Simplify SH2 watchpoints down to simple read/write toggles per byte.
    • Previously set watchpoints will be migrated to the new format automatically. 16-bit watchpoints are converted to two consecutive watchpoints, and 32-bit watchpoints are converted to four consecutive watchpoints.
    • 16-bit and 32-bit accesses will now trigger watchpoints on any byte accessed by them. For example, a read watchpoint set on 6010003 will be triggered by 8-bit reads from 6010003, 16-bit reads from 6010002 or 32-bit reads from 6010000.
    • When a watchpoint is triggered, Ymir will now display the address and size of the access and which watchpoints were triggered.
  • SCSP: Added Threaded SCSP option, bringing a decent performance boost in nearly all situations. (#3, #896; @SternXD)
  • SCU: Optimize DSP operations involving 48-bit registers.
  • SH2: Clock factor option ranging from 25% up to 500%. (#876, #895; @SternXD)
  • SH2: Decode opcode arguments directly in instruction handlers for better performance.
  • SH2: Fetch pairs of instructions using 32-bit accesses, more closely matching the behavior of the real SH7095. Improves overall emulation accuracy and slightly boosts performance on SH2-bound games.
  • SH2: Handle WB/EX stalls. (thanks to @celeriyacon)
  • SH2: Microoptimize DIV1 instruction.

Fixes

  • App: Temporarily switch from exclusive to borderless fullscreen when opening a file dialog then back to exclusive mode once the dialog is closed to avoid minimizing or resizing the window.
  • CD Block (HLE): Don't change status code when executing Get TOC. Fixes Mass Destruction not playing any music in-game. (#664)
  • CD Block (HLE): Extend seek times to 5 ticks. Fixes animations in Digital Dance Mix Vol. 1 - Namie Amuro when seeking or pausing and resuming tracks. (#476)
  • CD Block (HLE): Extend sizes of Mode 2 Form 2 sectors read from disc when the get sector length is less than 2324 bytes. Fixes:
    • Chisato Moritaka - Watarase Bashi & Lala Sunshine (#604): FMVs now play correctly.
    • Digital Dance Mix Vol. 1 - Namie Amuro (#476): animations and song now play correctly.
  • CD Block (HLE): Fix handling of "Get Session Info" command.
  • CD Block (HLE): Fix handling of "Play Disc" command with resume from pause parameters on data tracks. Fixes buffer exhaustion leading to softlocks in Panzer Dragoon II Zwei.
  • CD Block (HLE): Fix handling of "Seek Disc" command parameter exceptions.
  • CD Block (HLE): Handle more "Play Disc" command parameter nuances. Fixes animations in Digital Dance Mix Vol. 1 - Namie Amuro when seeking or pausing and resuming tracks. (#476)
  • CD Block (HLE): Ignore read speed setting and always use 2x for data tracks. Fixes some cases of FMVs stuttering or playing too slowly:
  • CD Block (HLE): Introduce separate array for command responses.
  • CD Block (HLE): Open tray when ejecting a disc. Fixes various cases of games that hang, freeze, crash or exhibit erratic behavior when ejecting a disc while playing. These should now properly boot back to the system's interactive shell. (#298)
  • CD Block (HLE): Properly resume disc playback after being paused due to running out of buffers. Fixes multiple games:
    • Chou Jikuu Yousai Macross - Ai Oboete Imasu ka (#605): intro sequence now plays correctly.
    • Dragon Force (#866): Working Designs logo FMV now plays correctly.
    • Legend of K-1 - The Best Collection (#758): FMV of third fight now plays correctly.
    • LifeScape - Seimei 40 Okunen Haruka na Tabi (#598): no longer freezes on opening FMV.
    • Mahjong Yon Shimai - Wakakusa Monogatari (#527): no longer freezes on character select screen.
    • Shellshock (#344): no longer crashes on CORE logo.
    • Senken Kigyouden / Xianjian Qixiazhuan (#409): graphics now load correctly.
    • Sonic Jam (#83): in-game music now plays correctly.
    • IRREEL (homebrew) (#580): level 2 assets now load correctly.
  • CD Block (HLE): Use saved start/end play parameters when checking for FAD/track. Fixes music not looping in Mass Destruction. (#664)
  • Input: Properly bind inputs loaded from settings file upon startup. (#900)
  • Media: Bail out early on CUE parser if the file starts with a null byte.
  • Media: Ensure a valid Saturn disc is loaded before trying to parse the filesystem. Fixes crashes when trying to load non-Saturn discs.
  • Media: Fix crash when attempting to load CHDs with non-ASCII characters in the file name.
  • Rewind: Fix crash when attempting to rewind to the very first frame. (#857)
  • Rewind: Fix occasional crash when attempting to rewind with CD Block LLE enabled.
  • Settings: Correctly load virtual RTC settings from configuration file.
  • SH2: Cache line fills only cost one access to the SH2.
  • SH2: DMAC 16-byte burst should read 4 longwords then write 4 longwords.
  • SH2: Fix 8-bit and 16-bit reads from and writes to cache address array and associative purge areas. Fixes graphics glitches in Dark Savior. (#134) (thanks to @celeriyacon)
  • VDP1: Add one-pixel offset to vertical coordinates of axis-aligned sprites when rendering high-resolution modes with deinterlacing enabled. Fixes gaps in Sonic Jam and Astra Superstars. (#784, #853)
  • VDP1: Add one-pixel offset to vertical coordinates of clipping coordinates. Fixes one-pixel gap at the bottom of the screen in Sonic Jam. (#853)
  • VDP1: Branch, link and COPR fixes. (thanks to @celeriyacon)
  • VDP1: Don't end frame drawing when an infinite loop is detected. Fixes Stellar Assault no longer booting.
  • VDP1: Gouraud shading was not incremented in transparent pixels. Fixes character shading in Magical Night Dreams - Cotton 2. (#728)
  • VDP1: Illegal commands cause VDP1 to stay stuck in place rather than abort execution.
  • VDP1: Synchronize reads and writes to FBRAM. Fixes graphics issues when threaded VDP1 rendering is enabled in multiple games: (#898)
    • BlackFire (#790): GUI elements no longer flicker.
    • Burning Rangers (#791): transparent elements (such as fire and explosions) are no longer drawn behind walls, doors, etc.
    • Scorcher (#281, #473): HUD is now drawn on top of level geometry and game no longer crashes in Training mode.
    • Virtual Golf (Europe) (#830): ground is now fully rendered and random sprites no longer appear.
    • Waialae no Kiseki - Extra 36 Holes (#871): ground is now fully rendered.
  • VDP1: Use all 16 bits for system and user clipping coordinates. Fixes black title screen on the European version of Revolution X - Music Is the Weapon.
  • VDP2: Handle another case of illegal CP/PN access combinations involving multiple PN accesses in different banks. Fixes shifted text frames in Ryuuteki Gosennen - Dragons of China. (#856)
  • VDP2: Latch current VCNT when reading from EXTEN. Fixes camera angles in Digital Dance Mix Vol. 1 - Namie Amuro. (#476)
  • VDP2: Update horizontal scroll increment every scanline. Fixes in-game terrain graphics drawn half as wide in Shellshock. (#344)

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.