Skip to content

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 10 Jan 18:48
· 1000 commits to main since this release

Ymir v0.2.1

Discord | Patreon | Compatibility list

This patch fixes a couple of issues with the update checker, a rare crash involving the rewind buffer, and comes with the usual set of graphics bug squashing. It also includes improvements from a new contributor, @mmkzer0, and a significant change to VDP1 rendering that fixes a long-standing issue with threaded rendering.

As noted in the previous version, future updates (such as this one) will not be as substantial as previous ones as I'm splitting my time with other activities.

Caution

The Windows SSE2 build is currently targeting the SSE4.2 instruction set due to a mistake in the build system configuration, resulting in crashes on old CPUs. Also, the macOS ARM build is incorrectly flagged as "damaged". A fix will be available in version 0.3.0. The latest nightly also includes a fix. See #713 and #698.

Caution

Due to a programming oversight, the application will crash if automatic update checks are enabled and the nightly build is broken. To avoid this, either update to the latest nightly (if available) or disable automatic update checks. If Ymir is crashing, edit Ymir.toml with a text editor and change CheckForUpdates from true to false.
This will be fixed in the next release.

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, make sure to grant Ymir permission to access the filesystem or your disc images won't load properly.

Improved threaded VDP1 rendering

The old threaded VDP1 rendering interfered with VDP1 timings and caused issues in a few games (#233). With the new design, this is no longer the case - the VDP1 logic and timings are still driven by the emulator thread, but the drawing itself can be moved to a dedicated thread (or a GPU renderer, eventually). This option is now enabled by default as it brings up to 30% performance boost depending on how VDP1-heavy the game is. The old "Include VDP1 rendering in VDP2 renderer thread" option was removed to make way for this implementation.

image

UI improvements

Save states menus have been split into Load and Save sections to avoid confusion and simplify interactions. Selecting a save state from either menu will also switch the currently selected slot for quick load/save.

image

The Backup Memory Manager was moved from the File to the System menu, to bring it closer to other system-related actions such as managing cartridges.

image

Debugger

The memory viewers now have a button to dump the contents of an entire memory region to a file. This can be useful to compare against other emulators or for offline research, disassembly, and more. These dumps are saved to <profile>/dumps/<game code>-<region name>-<base address>-<size in bytes>.bin.

image

The VDP2 VRAM access delay window now shows the access shift introduced by misaligned timings for a given background layer's character or bitmap data which affects World Heroes Perfect's intro sequence. It's the same issue that causes the full screen pictures in Capcom Generation - Dai-5-shuu Kakutouka-tachi's art gallery to be split.

image

Changes

New features and improvements

  • App: Added "Take Screenshot" action to File menu.
  • App: Moved "Backup Memory Manager" action from File to System menu.
  • Debugger: Added Dump memory region button to the Memory Viewer to dump the currently selected region to a raw .bin file in the profile’s dump path. (#678; @mmkzer0)
  • Debugger: Display VRAM data access shifts separately from CP delays in the VDP2 VRAM access delay window and display them for scroll BGs as well.
  • Rewind: Reset rewind buffer on hard resets and whenever the CD Block LLE settings is changed.
  • Save states: Separated save states menu into Load and Save to avoid confusion and simplify interactions.
  • Updater: Added compile-time flag Ymir_ENABLE_UPDATE_CHECKS to enable or disable the automatic update checker, including the onboarding process.
  • VDP1: Reworked renderer code structure. Allows threading without affecting timings and paves way for other rendering backends. (#233)

Fixes

  • Settings: Properly reload binds for "increase/decrease speed by 25%".
  • Updater: Create state/updates folder before writing .onboarded file in case the user opts out of automatic update checks. Fixes update check onboarding popup always appearing on startup. (#708)
  • Updater: Detect nightly -> stable update when the current version matches the stable version.
  • VDP1: Reduce VBlank erase timing penalty to fix graphics artifacts in Battle Garegga's options menu. (#649)
  • VDP2: Allow bitmap data access during SH-2 cycles. Fixes FMV flickering in Lunar - Silver Star Story, Shin Kaitei Gunkan, and Mechanical Violator Hakaider (#438, #446, #658)
  • VDP2: Apply VRAM bank data access shift to scroll BGs. Fixes shifted borders in World Heroes Perfect's demo sequence. (#643)
  • VDP2: Disable VRAM access restrictions based on ZMCTL parameters. Fixes missing background graphics in Baku Baku Animal - World Zookeeper. (#646)

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)