github ymir-emu/Ymir v0.4.0
Ymir v0.4.0

2 hours ago

Ymir v0.4.0

Discord | Patreon | Compatibility list | Screenshots

SDL Renderer has been the backbone of graphics on Ymir... until now. Ymir now supports Direct3D 12 and Metal (with Vulkan to come in the future), which will enable implementation of shaders and resolution scaling down the line. Direct3D 12 also supports hardware-accelerated VDP rendering, offloading heavy graphics computations to your GPU for a significant performance boost with no accuracy compromises -- it's as accurate as the software renderer, save for undiscovered bugs. Other graphics backends will eventually support acceleration as well, hang tight!

The Virtua Gun has been promoted to a stable feature after numerous bug fixes and accuracy improvements that made it work flawlessly with most supported games. Known issues are listed in #787: only one game doesn't register shots, and three don't recognize reloads consistently.

Good news for old Mac owners: Ymir should now run on macOS 12 (Monterey)! The macOS build configuration was targeting the default version, which happened to be 15 for a while until GitHub decided to upgrade their build runners and push the default to 26. This prompted us to look into those builds and lower the minimum version to 12, which is the lowest supported version by the current runner.

Finally, as you've come to expect, every big release comes with dozens of polish passes, crash and bug fixes, accuracy improvements, performance boosts, and better compatibility. Ymir 0.4.0 is now compatible with 94.4% of the entire Saturn library, and can run up to 10% faster with SCSP threading compared to 0.3.3, or even more if you enable GPU-accelerated VDP1/VDP2 rendering.

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.

It is recommended to install the latest GPU drivers in order to use Direct3D or Vulkan:

Do not use Windows Device Manager or Windows Update to update your GPU drivers, as they tend to have poor performance and lack support for advanced GPU features.

Always update your integrated GPU driver first, even if you're not using it. This also applies to desktop PCs with dedicated graphics cards.

Compatibility improvements

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

image

Sporting the shiny new Direct3D 12 GPU-accelerated renderer!

Ymir's compatibility list now lists 94.4% compatibility with all tested games.

image

The main compatibility boosts from this version came from CD Block and SMPC fixes. If you've been reading the release notes for past versions of Ymir, you know that these two tend to be troublemakers.

CD Block HLE had some nasty bugs stopping games from booting or causing crashes mid-game. With the help of @celeriyacon's test ROMs and some of @StrikerX3's sleuthing, many of these bugs have been squashed, allowing Virtual On - Cyber Troopers to no longer crash on match replays, Gunbird's music to resume properly after pausing the game, and several games that only booted with CD Block LLE to also work with HLE.

@warmenhoven's fixes to the CHD loader along with @StrikerX3's fixes for the CUE/BIN loader also improved compatibility with homebrew games/apps, non-Redump disc dumps, and some games running with CD Block LLE. @surajrbhardwaj (a new contributor) has added support for OGG and MP3 audio tracks to the CUE loader, commonly used by homebrew games.

Some tweaks to SMPC command responses and behavior have brought a few more non-booting games to life, including Fist, Idol Mahjong - Final Romance R, Madden NFL 97, Ten Pin Alley and UEFA Euro 96 - England, and fixed crashes in Guardian Heroes, Gekitotsu Koushien and No-appointment Gals Olympos.

A small fix to SCU DMA transfers now allows GunBlaze-S to boot. It's the same issue encountered by Mednafen where the game attempts to do a large DMA transfer that would overwrite VDP1 registers.

A few more VDP1 and VDP2 changes fixed a regression in Alone in the Dark - One-Eyed Jack's Revenge where the game would freeze during the intro animation and a crash after beating DoDonPachi's second boss.

The 3D Control Pad also saw some fixes and improvements this version:

  • When in Digital mode, the analog sticks will now automatically map to the D-Pad.
  • A couple of peripheral report fixes resolved some input bugs in Deep Fear, Bug Too and Black/Matrix.

Virtua Gun

Properly emulating the Virtua Gun involves coordination between the SMPC, VDP2 and the frontend application. One small issue alone in SMPC emulation was causing shot detection issues in most games -- with that squashed, more than half of the list of problems was solved. A couple more tweaks to the VDP2 side fixed shot offsets and reload detection in more finicky games. To complete the trifecta, the input system introduces a small amount of jitter mimicking inaccurate reads from a real Virtua Gun to improve shot registration in one particularly picky (and, quite frankly, horrible) game: Death Crimson.

With all these fixes in place, the Virtua Gun is now solid and promoted to a stable feature, making it available for use in all builds.

One additional feature added to the frontend completes the polish pass for the peripheral: you can now constrain the mouse cursor to the display area, stopping you from accidentally shooting yourself in the foot the launch nuke button the ad that keeps popping up in your browser the X button and closing the emulator altogether.

Internal game database

The internal game database includes additional information about games that are not present in the disc media, such as which cartridges are required for them to boot (DRAM cartridges for fighting games, ROM cartridges for King of Fighters '95 and Ultraman: Hikari no Kyojin Densetsu), and a number of game-specific flags and hacks to help boost compatibility where Ymir's accuracy isn't quite up to snuff yet.

Thanks to recent accuracy improvements, some game-specific hacks are no longer needed and have been disabled in the internal game database:

  • Chisato Moritaka - Watarase Bashi & Lala Sunshine: no longer crashes at startup. (#604)
  • Deep Fear: no longer freezes after the "April Fools!" voice line. (#740)
  • Marvel Super Heroes vs. Street Fighter: no longer crashes at the end of the Capcom logo. (#507)
  • Mega Man X3 / Rockman X3: sprites are not glitched anymore. (#244)
  • Metal Fighter Miku: goes in-game, no longer stuck after start menu. (#466)
  • Soviet Strike: VDP1 graphics no longer flicker.

But with changes to emulation accuracy and further testing, other games end up needing these flags:

  • 3D Baseball: slow down VDP1 execution speed in to fix team name plates and announcer voice line glitches.
  • Dino Island: force-enable SH-2 cache emulation to fix palette glitches. (#764)
  • Dragon Force II: force-enable SH-2 cache emulation to fix black screen when entering 100 vs 100 battles. (#945)
  • Hissatsu!: force-enable SH-2 cache emulation to fix crash at startup. (#943)
  • No-appointment Gals Olympos: force-enable SH-2 cache emulation to fix crash during animations.
  • Resident Evil: force fast bus timings to fix start menu crashes

This list is constantly updated as testers find ways to work around bugs and Ymir's accuracy changes over time.

Accuracy improvements

@celeriyacon's test ROMs have been an indispensable tool to push Ymir's emulation accuracy to the next level. A couple more SCSP fixes (which is already very solid and ahead of Mednafen's) introduces a rare one-shot PCM bug that happens on real hardware and might interest homebrew developers. These tests also helped fix a couple of small details caused by the clock change reset signal -- no games are affected by this, but if homebrew apps end up relying on these states, they will now work correctly.

Nearly every version of Ymir includes graphics fixes and accuracy improvements. Here's a few of the accuracy fixes done to VDP1 and VDP2 this version:

  • Derby Analyst now renders the selected main menu option in a stripe pattern instead of completely black.
  • After the introduction of color gradation in v0.3.3, the fog in The River of Dreams level in Astal would render incorrectly. This is now fixed.
  • In Dark Savior, the Sound Test screen text no longer blends in with the background.
  • Certain homebrew apps abuse the VDP2 TVMD DISP flag. Disabling it mid-frame stops updating LNCL/BACK screens for the remainder of the frame.

In addition to this, threaded VDP1 (#898) and VDP2 in the software renderer had several race condition issues fixed. Rendering is now consistent regardless of setting the threading option on and off. Games affected by this include:

  • The black screen immediately after selecting the characters in Virtua Fighter 2 now consistently happens partway through the frame at the same location as unthreaded VDP2 rendering.
  • Reading VDP2 EXTEN register from the debugger should no longer cause the camera in Digital Dance Mix Vol. 1 - Namie Amuro to pan weirdly.
  • Opening the memory viewer in the VDP1 framebuffer region should no longer cause deadlocks or degraded performance.
  • The threaded VDP1 renderer will now write back FBRAM writes to the main emulator core state, fixing graphics glitches in Waialae no Kiseki - Extra 36 Holes and other golf games using the same engine.

The weakest parts of emulation right now are SMPC, bus contention and memory access timings. These are going to be the focus of the next release.

Performance improvements

SCSP threading already brought a nice performance boost in the majority of games when enabled. A few more microoptimizations have boosted its performance even further, by up to 10% depending on the workload. The SH2 interpreter also had a small performance tweak, boosting overall emulation speed by another 1-3%. The software renderer was not left behind: another 1-3% boost comes from a handful of VDP1 optimizations aiming to eliminate redundant work.

Every little bit counts for weaker CPUs.

But of course, the spotlight of this release is...

Graphics and GPU acceleration

Ymir has been using the SDL Renderer API exclusively for its graphics user interface rendering, which limited access to native graphics APIs. An experimental branch added Direct3D 11 rendering support on top of it, but it was a hack at best -- SDL3 developers are planning to phase out support for modern graphics APIs from it in favor of SDL GPU, which is not as flexible and powerful as the native APIs and would've killed the Direct3D 11 renderer outright.

Ymir v0.4.0 introduces an overhauled graphics backend, adding support for Direct3D 12 on Windows (by @StrikerX3) and Metal on macOS (by @SternXD), with SDL Renderer as a fallback in other systems without support for either graphics API. Vulkan (which is being worked on by @Wunkolo) and Direct3D 11 (planned by an overworked @StrikerX3) didn't make it in time for this release.

Hardware-accelerated VDP1/VDP2 rendering is now possible with Direct3D 12 only. Other backends still need to implement the necessary plumbing to support it, which will come in a future release of Ymir (hopefully the next one). Enabling this option offloads almost all VDP1/VDP2 rendering work to your GPU, resulting in a boost to emulation performance as the bottleneck tends to be either VDP2 or SH2 emulation.

image

High-resolution games see the biggest boosts.

image

Deinterlacing isn't free with the software renderer, but it doesn't even put a dent in the hardware renderer's performance.

image

Even low resolution games benefit from the GPU. This one has both enhancements active. And in case you're wondering: yes, transparent meshes are basically free on the GPU.

With all this extra performance, we have plenty of headroom to explore enhanced rendering options like resolution scaling. @StrikerX3 has tried implementing this, but there are several architectural decisions made in the past making the work more difficult than it had to be, so for the sake of not delaying the version any further, it has been decided to release 0.4.0 without this feature.

UI features

Those of you with sharp eyes might have noticed a small (?) next to some options. Hovering your mouse over it reveals an explanation of the option:

image

Remember: read everything! This has been a feature since before v0.1.0.

Starting from v0.4.0, these icons are much more visible:

image

They were always there.

The UI now displays a volume slider when adjusting the volume:

image

Ymir now supports Discord Rich Presence, thanks to @SternXD.

image

Now you can show your friends you have good taste in retro gaming.

GUI scaling now causes all styling to be recomputed from scratch and should no longer cause the Settings window (and other ImGui windows) to blow out of proportion and out of the window area. Also, the Persist window geometry option will no longer store full screen coordinates, preventing an issue where Ymir would launch in full screen and never come out of it. If you had problems with this before, Ymir will fix itself next time you launch it and reset the window position to the default.

Other small but useful changes:

  • There is a new option in the File menu to open the screenshots directory.
  • In Settings > General you will find a new option to unpause the emulator when loading discs (enabled by default).
  • The term "IPL" refers to the Saturn's BIOS. This is now clarified wherever it shows up

Debugger

The debugger was not a big focus of this release, but it still got some improvements:

  • The VDP2 debug overlay can now display RBG0 and RBG1 line color in single layer view mode.
  • There is a new basic VDP2 registers view, showing the current resolution and interlacing mode, even/odd field, horizontal and vertical blanking signals, latched coordinates, color RAM mode and VDP2 sprite readout size.
  • When debug tracing is enabled, the SH-2 debugger will break whenever an SH-2 CPU hits an unaligned or illegal address -- a strong indication that something went horribly wrong. Combined with the call stack view, this can be extremely useful to find serious emulation or homebrew software bugs.

Other odds and ends

Some users (@StrikerX3 included) noticed that Ymir sometimes takes a while to launch. This boiled down to the MIDI library taking a long time to initialize. In 0.4.0, MIDI components are initialized asynchronously -- it may take a while for MIDI options to be available, but now Ymir launches immediately.

Some Kronos-created backup RAM files could not be imported in Ymir due to a very strict language code check. This was removed, and Ymir will now happily load such backup RAM images.

The embedded M PLUS U font files were shrunk by @4re, reducing binary size, but the new graphics backend implementation took its place so the resulting binary is still larger than before. Well worth it!

Finally, SMPC settings are now persisted per region rather than being a global setting shared by all IPLs. This is because some regions store settings differently than others, causing the language to change when switching from e.g. USA to Japan. Existing settings will be migrated to the new files automatically, so you won't have to reconfigure the system whenever the region changes.

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 (usually 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).

Some games may require multiple applications of the trick at different points to work.

This applies to:

  • Another Memories (Japan)
  • Device Reign (Japan)
  • Eternal Melody (Japan) (Rev A)
  • Game de Seishun (Japan) (Rev A)
  • Ginga Eiyuu Densetsu Plus (Japan)
  • Highschool Terra Story (Japan)
  • Ishin no Arashi (Japan)
  • Kamen Rider - Sakusen File 1 (Japan)
  • Machi (Japan) (Demo)
  • Magical Drop III - Toretate Zoukan-gou! (Japan) (Demo) (1M)
  • Murakoshi Seikai no Bakuchou Nihon Rettou (Japan)
  • Ninja Jajamaru-kun - Onigiri Ninpouchou Gold (Japan) (Demo)
  • Photo Genic (Japan)
  • Real Sound - Kaze no Regret (Japan)
  • Roommate - Ryouko in Summer Vacation (Japan) (2M)
  • SD Gundam G Century S (Japan)
  • Shutsudou! Miniskirt Police (Japan)
  • 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)

(Yes, the list has grown since the last version. All of these games suffer from the same symptom.)

New features and improvements

  • App: Added Discord Rich Presence support. (#260, #917; @SternXD)
  • App: Added option to File menu to open the screenshots directory.
  • App: Added option to unpause emulator when loading discs. Enabled by default, which changes established behavior.
  • App: Clarified IPL ROM meaning in the Welcome window and IPL settings tab -- it refers to the BIOS.
  • App: Display volume indicator on the top-right corner of the window for a few seconds after adjustments.
  • App: Persist SMPC data per region based on the loaded IPL ROM region:
    • smpc-us_eu.bin: USA, Europe -- SMPC area codes 4, 5, A, C, D
    • smpc-jp.bin: Japan -- SMPC area code 1
    • smpc-asia.bin: Korea, Taiwan -- SMPC area codes 2, 6
    • smpc-other.bin: Other (invalid) SMPC area codes
    • The old smpc.bin will be automatically migrated to these files as you use IPL ROMs for each region.
  • App: Shrink embedded M PLUS U font files by removing unused glyphs, reducing binary size. (#915; @4re)
  • Build: Lower macOS version requirement to 12.0 Monterey. (#954)
  • Debugger (SH2): Break when PC is unaligned or in an illegal area while debug tracing is enabled.
  • Debugger (VDP2): Added RBG0 and RBG1 line color single stack views to the VDP2 debug overlay.
  • Debugger (VDP2): Added basic VDP2 registers view.
  • Graphics: New graphics backend, adding support for native graphics APIs:
    • Direct3D 12 on Windows (@StrikerX3)
    • Metal on macOS (#929; @SternXD)
    • SDL Renderer wherever it's supported (@StrikerX3)
    • Vulkan and Direct3D 11 didn't make it in time for this release
  • Input: Added option to constrain mouse cursor to window in system cursor mode.
  • Input: Convert 3D Control Pad analog stick to D-Pad inputs when in digital mode.
  • Input: Graduate Virtua Gun to stable feature.
  • Input: Introduce a small amount of jitter to the Virtua Gun aim in Death Crimson. Greatly improves shot detection in the game. (#787)
  • Media: Added support for MP3 and OGG audio tracks to CUE loader. (#920; @surajrbhardwaj)
  • SCSP: Threading microoptimizations -- up to 10% faster.
  • SH2: Interrupt recalculation microoptimizations -- 1-3% faster.
  • SMPC: Remove direct dependency to filesystem API for data persistence.
  • VDP1: Software renderer performance microoptimizations:
    • Do these once per command instead of per pixel:
      • Determine double density mode
      • Get references to VDP1 registers
      • Shift/mask color bank values
  • VDP1/VDP2: Hardware-accelerated rendering with Direct3D 12 is now available.

Fixes

  • App: Don't persist window geometry in full screen mode.
  • App: Initialize MIDI subsystem asynchronously. Fixes some cases where the application takes a long time to start up.
  • App: Reset window geometry if it matches the bounds of a display to prevent "remember window geometry" from loading full screen coordinates.
  • Backup RAM: Fix crash when attempting to load a backup RAM cartridge with the default path.
  • Backup RAM: Remove strict language check when importing files. Fixes importing save files from Kronos's backup RAM cartridges. (#942)
  • CD Block (HLE): Adjust calculated sector sizes to requested get length.
  • CD Block (HLE): Create a dedicated scratch buffer for disc playback. Fixes crashes on replays in Virtual On - Cyber Troopers. (#246)
  • CD Block (HLE): Emulate read FIFO for all read transfers. (thanks to @celeriyacon)
  • CD Block (HLE): Get/Calculate Actual Size nuances.
  • CD Block (HLE): Handle default end of disc parameter in Play Disc. Fixes Gunbird song not resuming after pausing. (#625)
  • CD Block (HLE): Introduce Busy status when pausing playback and ending data transfers. Fixes multiple games:
    • Amagi Shien now goes in-game. (#309)
    • Brain Battle Q (Japan) now goes in-game. (#586)
    • Flash SegaSaturn Vol. 29 - Langrisser V demo now plays in full. (#571)
    • Hebereke's Popoitto now goes in-game.
    • Hissatsu Pachinko Collection now goes past the SEGA licensing screen and reaches in-game. (#536)
    • Legend of K-1 - The Best Collection FMVs no longer corrupt. (#758)
    • Magical Drop III - Toretate Zoukan-gou! now plays intro animation after Data East logo. (#464)
    • WanChai Connection now goes in-game. (#600)
  • CD Block (HLE): Report current CD status and raise CMOK HIRQ signal when processing unimplemented commands.
  • CD Block (HLE): Report wait status when attempting to calculate actual size of more sectors than available in a partition.
  • CD Block (HLE): Read reset position flag correctly from parameters.
  • CD Block (LLE): Fix audio track playback failing for tracks 16 and higher. Fixes Virtual On - Cyber Troopers credits and the songs in certain arenas.
  • GameDB: Disable a number of game-specific hacks that are no longer required:
    • Chisato Moritaka - Watarase Bashi & Lala Sunshine: no longer crashes at startup. (#604)
    • Deep Fear: no longer freezes after the "April Fools!" voice line. (#740)
    • Marvel Super Heroes vs. Street Fighter: no longer crashes at the end of the Capcom logo. (#507)
    • Mega Man X3 / Rockman X3: sprites are not glitched anymore. (#244)
    • Metal Fighter Miku: goes in-game, no longer stuck after start menu. (#466)
    • Soviet Strike: VDP1 graphics no longer flicker.
  • GameDB: Force-enable SH-2 cache emulation for multiple games:
    • Dino Island: fix palette glitches. (#764)
    • Dragon Force II: fix black screen when entering 100 vs 100 battles. (#945)
    • Hissatsu!: fix crash at startup. (#943)
    • No-appointment Gals Olympos: fix crash during animations.
  • GameDB: Force fast bus timings on Resident Evil to fix start menu crashes. (#907)
  • GameDB: Slow down VDP1 execution speed in 3D Baseball to fix team name plates and announcer voice line glitches. (#593)
  • GUI: Reinitialize style from scratch when rescaling GUI elements. Fixes Settings windows (and probably others) from growing extremely large when constantly switching display scales.
  • Input: Set least significant bits of 3D Control Pad analog reports to all ones. Fixes double inputs in Deep Fear. (#744)
  • Input: Make 3D Control Pad peripheral report in digital mode match the Standard Pad. Fixes broken inputs in digital mode in the following games:
  • Media: Don't read the Path Table past the size specified in the Volume Descriptor. Fixes CD Block HLE not able to read disc images made with some lazy patches that don't properly clean up the Path Table. (#912)
  • Media (CHD): Fix several CHD read errors. (#806, #957; @warmenhoven)
    • Arcade Gears Vol. 2 - Gun Frontier: now boots with CD Block LLE and plays sounds in the logo screen.
    • Elevator Action^2 - Returns: now plays music in-game with CD Block LLE.
    • Time Bokan Series - Bokan to Ippatsu! Doronbow Kanpekiban: now plays music in-game with CD Block LLE.
    • Sega Ages - OutRun: now properly resumes music after pausing in-game with CD Block LLE.
  • Media (CUE): Concatenate reads from composite readers. Fixes Cold Case (Homebrew) crashing when starting the game. (#626)
  • Media (CUE): Don't accumulate pre/postgaps multiple times per track. Fixes some audio track offset issues for single-BIN dumps. (#146)
  • Media (CUE): Properly compute track count on discs with sparse track numbers. Fixes audio playback on some homebrew discs that omit tracks (e.g. The Rockin'-B All Stars version 06/03/23 skips track 2).
  • Media (CUE): Use CUE sheet timestamps to compute track lengths. Fixes some audio track offset issues for single-BIN dumps. (#146)
  • SCSP: Clear slot PLFOS on reset. (thanks to @celeriyacon)
  • SCSP: Handle rare one-shot PCM bug. (thanks to @celeriyacon)
  • SCU: Allow 8-bit writes to DSP registers.
  • SCU: Ignore DMA writes to VDP1 registers. Fixes GunBlaze-S not booting. (#410)
  • Settings: Apply CD Block LLE configuration at startup. Fixes Ymir always launching with CD Block HLE mode when LLE was enabled in the settings file.
  • SMPC: Ignore SSHON command when the Slave SH2 is already enabled. Fixes multiple issues:
    • Guardian Heroes no longer gets stuck on level transitions. (#951)
    • Gekitotsu Koushien no longer crashes when going in-game. (#576)
    • Madden NFL 97 (Europe) now goes in-game. (#522)
    • No-appointment Gals Olympos now goes in-game.
    • Ten Pin Alley now goes in-game.
    • UEFA Euro 96 - England now goes in-game. (#486)
  • SMPC: Reserved SR bits in INTBACK status reports are all set. (thanks to @celeriyacon)
  • SMPC: Tweak processing time for INTBACK. Fixes Assault Rigs no-boot regression.
  • SMPC: Tweak response delay for most commands to allow more games to boot:
    • Destruction Derby (Europe)
    • Fighting Vipers (Japan) (Rev A)
    • Fist (Japan)
    • Idol Mahjong - Final Romance R (Japan) and its Kisekae Discs
  • SMPC: Update peripheral PDR1/2 registers when reading and when updating EXLE. Fixes many cases of games not recognizing Virtua Gun inputs or missing shots. (#787)
  • VDP1: Don't clear COPR when beginning a new VDP1 frame. Fixes lockups in Alone in the Dark - One-Eyed Jack's Revenge. (#938)
  • VDP1: Don't sync VDP1 FBRAM on debug reads. Fixes deadlock when viewing the framebuffer area in a memory viewer window.
  • VDP1: Force-align MSB write to 16-bit addresses when writing pixels with MSB enabled. Fixes deselected menu options being fully painted in black in Derby Analyst. (#587)
  • VDP1: Textured sprites with CMDSIZE.H=0 never fetch additional texels. Fixes glitched graphics in the scorecard of the shooting range in Policenauts.
  • VDP1: Various VDP1 reset fixes. (thanks to @celeriyacon)
  • VDP1-SW: Write back FBRAM writes from VDP1 renderer thread. Fixes glitched title screen in Waialae no Kiseki - Extra 36 Holes and other golf games sharing the same engine when using threaded VDP1 rendering. (#898)
  • VDP2: Allow 8-bit register reads and writes. Fixes crash after defeating second boss of DoDonPachi. (#640)
  • VDP2: Avoid unintentional side effects on VDP2 EXTEN register when saving states. Fixes camera angles in Digital Dance Mix Vol. 1 - Namie Amuro.
  • VDP2: Disable color gradation if color RAM mode is not 0. Fixes the fog effect in The River of Dreams level in Astal. (#927)
  • VDP2: Fix coordinate latching on external latches. Fixes various Virtua Gun shot offset errors. (#787)
  • VDP2: Fix off-screen coordinate latching. Fixes some Virtua Gun reload detection issues. (#787)
  • VDP2: Restrict color calculations in certain video modes. Fixes Sound Test screen text blending in with the background in Dark Savior.
    • In high resolution modes with color RAM modes other than 0, color calculations can only be applied on top of RGB layers, but not palette layers.
  • VDP2-SW: Fix out of bounds access when the display resolution is changed mid-frame while drawing an RBG.
  • VDP2-SW: Fix race condition reading VDP1 TVMR on VDP2 thread. Fixes single frame glitch in Virtua Fighter 2 after selecting characters.
  • VDP2-SW: Stop updating LNCL/BACK screen once DISP is disabled for the remainder of the frame.

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 12 (Monterey) 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.