Skip to content

Releases: StrikerX3/Ymir

Latest nightly release

29 Apr 06:20

Choose a tag to compare

Pre-release

This is a nightly release built from the latest commit. Before you use these builds, make sure to backup your data, especially the save states!

Save states are constantly evolving and are only guaranteed to be compatible on stable (numbered) releases.
The file format may be changed without notice, so be careful when using save states from nightly releases.

You can find the changelog for this build here.

Note

Nightly builds include experimental and in-development features that may not work properly.
When reporting issues, make sure to include the version number (Help > About > Copy version).

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.

Ymir v0.3.0

24 Apr 02:32

Choose a tag to compare

Ymir v0.3.0

Discord | Patreon | Compatibility list

The first big release since my first "vacation" of sorts includes a sizable amount of bug fixes, compatibility improvements, more accurate emulation (thanks again to @celeriyacon) and some new features to play with.

First, two new peripherals have been added: the Shuttle Mouse and the Virtua Gun. However, you will note that 0.3.0 only includes the mouse peripheral. This is because the Virtua Gun has lots of issues and is only usable with a single game: House of the Dead. Download a nightly build if you want to try it out.

Save states also got some love. Have you accidentally saved a bad state on top of a good one? Push the Undo Save State button to get the old state back. Do you regret loading a state? Use the Undo Load State to go right back where you were just before loading it. Ymir now stores one additional save state per slot and one load state globally for this feature.

The SH2 debugger received many usability improvements this version with the addition of the Data Stack and Call Stack views, a navigable viewport, and enable/disable toggles for breakpoints and watchpoints.

And, of course, this version comes with plenty of bug fixes mostly focusing graphics as you've come to expect.

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

As usual, plenty of graphics rendering issues have been fixed, many of which have been detected by diligent work from the testers. Thanks!

A notable improvement made in this version is the VDP1 cycle counting method rework. It is still a rough approximation and still results in a much faster VDP1 than the real Saturn's, but is much less prone to stability problems. This change has fixed crashes, freezes, performance issues and graphics glitches in many games, including:

  • Beach de Riichi
  • Burning Rangers
  • DonPachi
  • Dungeons & Dragons Collection
  • Isto E Zico - Zico no Kangaeru Soccer
  • Real Bout Garou Densetsu Special
  • Road Rash
  • Virtua Cop

A number of game-specific flags have been added to the emulator core to work around extremely finicky bugs without affecting already working games. Here's a list of games that are now playable thanks to these flags:

  • Vampire Savior - The Lord of Vampire
  • Baku Baku Animal - World Zookeeper Contest (European version)
  • Chisato Moritaka - Watarase Bashi & Lala Sunshine
  • Deep Fear
  • Dragon Ball Z - Idainaru Dragon Ball Densetsu
  • Jikkyou Oshaberi Parodius
  • Metal Fighter Miku

These flags also help fix graphics issues in a few more games:

  • Emit Vol. 3 - Watashi ni Sayonara o
  • Fishing Koushien II
  • Spot Goes to Hollywood (European version only)
  • Steamgear Mash
  • Waku Waku 7

With that, compatibility stands at just over 92%, on par with Kronos.

New peripherals: Shuttle Mouse and Virtua Gun

Important

The Virtua Gun is EXPERIMENTAL and is only available in development and nightly builds.
It only works more or less properly with House of the Dead and has issues with pretty much every other game that supports it. See #787 for a list of issues. For this reason, the peripheral is disabled in 0.3.0, but you can try it out on the nightly builds.

In 0.3.0 you can use a Shuttle Mouse with games that support it.

image image

Virtua Cop 2 plays great with the mouse!... if you can deal with a two-frame input delay.

Also, in nightly builds only, you can select the Virtua Gun. However, as noted above, it currently only works reasonably well with House of the Dead. It has worse latency than the Shuttle Mouse though, so temper your expectations.

The new Mouse Capture Mode setting allows you to control how the mouse capture works for the gun:

  • System cursor: in this mode, the light gun reticle follows your system mouse cursor. This works well in cases where you only want to use a single Virtua Gun.
  • Physical mouse: in this mode, each physical mouse attached to the computer can be bound to a different Virtua Gun. Yes, you can have two or more mice connected to the same PC and, yes, they are independent of one another.
image

The warning is also displayed in the Input settings window.

image

You can customize the reticle to your heart's content.

crosshairs.mp4

There's an infinite number of combinations!

Build fixes

The Windows SSE2 build now correctly targets the SSE2 instruction set, which should make 0.3.0 compatible with old CPUs once again.

The macOS ARM executable is now signed with an ad-hoc signature to work around the "damaged app" error. You still have to allow execution of an "untrusted" application, but at least this no longer blocks you from running the emulator altogether. Also, macOS builds no longer include two copies of the executable, roughly halving their size.

UI improvements

Every save state slot now holds an additional undo entry, which you can recover in case you accidentally saved a state. You can restore it with the new "Undo save state" action. Similarly, if you accidentally loaded a save state, you can go back to the previous state with the "Undo load state" action.

image

Each save state slot tells you if you have an undo for it.

New options have been added to manage full screen mode. You can now select a display and a resolution, including borderless windowed and exclusive full screen modes.

image

There's also a new option to select the graphics backend from Direct3D 11, Direct3D 12, Vulkan, Metal or OpenGL. This is in preparation for GPU rendering, which is still a work-in-progress. GPU rendering was slated to land on this version, but I decided to postpone it to fix some serious stability and performance issues that occur with higher internal resolution scaling ratios. For sneak peeks, check #60.

Debugger

The SH2 debugger received many usability and utility upgrades this version. The first thing you'll notice are the new Data Stack and Code Stack sections below the registers listing the contents of the stack and the call site return addresses respectively. These require debug tracing to be enabled (F11) to trace code execution and can be hidden from the new Stack menu in the debugger window.

image

The disassembly view can now be freely scrolled and navigated with both keyboard and mouse:

  • Up/down arrow keys: move cursor up/down one instruction.
  • Page up/down: move cursor up/down one page.
  • Home/end: move cursor to the top/bottom of the viewport.
  • The cursor is kept below 15% of the top and above 35% of the bottom of the viewport.
  • Scroll with the mouse wheel to move the viewport.

The cursor is represented by a green line and you can use the keyboard shortcut F9 to toggle a breakpoint on that address and Shift+F9 to enable/disable an existing breakpoint. Yes, now you can disable breakpoints and watchpoints without removing them from the list. Also, their performance cost has been drastically reduced.

image

Note the hollow circles. Those breakpoints are disabled - they won't be hit, but they are kept in the list in case you need them again.

The VRAM access patterns are now color-coded in the VDP2 VRAM access delay view. Red CPs indicate illegal access timings based on the corresponding NBG parameters (and PN accesses for scroll NBGs).

image image

It doesn't explain why, but these two CP0 accesses are not good.

The window also has a **Generate test case...

Read more

v0.2.1

10 Jan 18:48

Choose a tag to compare

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)

v0.2.0

12 Oct 19:19

Choose a tag to compare

Ymir v0.2.0

Discord | Patreon | Compatibility list

This update introduces low-level CD Block emulation, an optional major feature that significantly improves accuracy. Additionally, this release features a simple automatic update check that you can opt-in, SH-2, M68000 and SCU DMA timing accuracy improvements and a handful of the usual bug fixes.

The build system has been upgraded to support more complex libraries such as curl and OpenSSL. These libraries enable implementation of HTTP web requests, which allows Ymir to check for updates directly from GitHub releases (like the one you're reading right now). Because of these changes, the macOS build has been split into x86_64 and ARM64 builds instead of an universal package.

This version also fixes a known issue in version 0.1.8 related to the rewind buffer.

The CD Block LLE changes have not introduced any breaking changes to the save state file structure -- 0.2.0 is still compatible with 0.1.x save states.

Important

CD Block LLE mode fundamentally changes how CD Block emulation works. For that reason, enabling and disabling the option forces a hard reset as it is near impossible to reconciliate the HLE and LLE states.

Save states created in LLE mode require the user to have the CD Block ROM used to originally create the state in order to load it. Save states created in HLE mode require no extra ROM. Loading a save state will automatically adjust the CD Block LLE mode accordingly and attempt to load the matching ROM if available. If the ROM cannot be found, the save state will not be loaded.

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.

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.

Starting from this version, expect the next updates to come a bit slower and/or with less bullet points in the changes list, as I'm going to divide my attention with other projects.

Compatibility improvements

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

showcase

(click any image to zoom)

Thanks to the community, the compatibility list is now completely filled. Ymir now boasts over 90% compatibility over the whole collection of Saturn games with the majority of games working flawlessly or with minor issues. Some configuration tweaks are required in order to maximize compatibility -- you can find instructions in the Additional notes column of the spreadsheet.

There are three major factors that significantly improved compatibility from 0.1.x:

  • The newly introduced low-level CD Block emulation option
  • Improved SH-2 and M68EC000 bus timings
  • SCU DMA, SCU DSP DMA and SH-2 DMAC timing and bus stalls

The low-level CD Block emulation mode requires a valid CD Block ROM to work. When enabled, it greatly improves emulation accuracy of the CD drive and the commands sent by games. From my own notes and community testing, at least 23 games are now capable of going in-game or have major issues fixed when this option is enabled. A few games present issues when the option is enabled, including Grandia, Mahjong Hyper Reaction R and LifeScape - Seimei 40 Okunen Haruka na Tabi.

image

You will need to procure these ROMs on your own.

The timing improvements made to SH-2 and M68EC000 bus exchanges fixed a problem where Resident Evil would get stuck in scripted sequences, leaving characters bobbing their heads in silence forever. This change also slightly boosts overall performance as the CPUs are now running a few less instructions per frame.

Finally, the DMA timings and bus stalls were a requirement for CD Block LLE to work. The CD block subsystem requires very tight timings for each data transfer done between the CD drive, the SH-1 CPU embedded in the block and the rest of the system, and the method used previously by Ymir (run full DMA transfers instantly) was incompatible with this model. Now, Ymir will perform transfers one by one, as many as can fit within a cycle budget, and stall components (effectively skip processing them) if the bus signals that the transfer must wait. The good thing is that this method also improves compatibility with more than 20 games even with CD Block LLE is not used.

Low-level CD Block emulation reduces performance by about 15-20% due to emulating an additional CPU -- the SH-1 runs at 20 MHz, not too far from the 28 MHz of the two main SH-2 CPUs. The old high-level emulation mode will not be replaced by this option because it provides better performance and flexibility. For example, you cannot change the read speed on the LLE version because the CD Block program expects disc sector transfers to happen at very precise intervals. Any slight deviation in these timings is seen as an "error" by the program, and the block starts reporting disc read failures to the Saturn, resulting in non-working games.

The CUE parser has received an overhaul which should hopefully fix almost all audio track shifting issues. Additionally, Ymir will now correctly load cue sheets that reference .wav files as long as the files are in 44100 Hz, stereo, 16-bit raw PCM format (which exactly matches CD audio data). The CHD and ISO loaders received small fixes to improve compatibility with non-Redump dumps.

Rounding up the list is a small number of VDP1 and VDP2 fixes which deal with minor graphics issues found in a number of games as you've come to expect. Also, there's a new 6 MiB development DRAM cart option required by the Heart of Darkness prototype. Finally, a small SMPC change allows the dev kit BIOS to play its animation, but it still doesn't go past the Saturn logo.

Automatic update checks

A new automatic update check system has been introduced to help you know when Ymir has a new version. When you first launch Ymir, you will be greeted with an onboarding dialog:

image

When a new version is made available, be it a stable or a nightly version, Ymir will display a popup window with links to the release notes and a direct download link to the new version. On a future version, this process will be fully automated.

image

New options have been added to Settings > General to configure the update checker. Here you can also open the release notes and grab the binary package for the stable and nightly releases.

image

You can also check for updates from the Help menu:

image

Debugger

The old CD Block command trace has received a small upgrade: the commands and responses are now color-coded by the command type and status, respectively.

image

New debug windows have been added to trace the LLE CD drive communications as well as commands and responses.

image

A couple of new VDP2 debugger windows have been added: a CRAM palette viewer and a display overlay with various customizable views. The overlay display allows you to see which layers are being rendered, window states for every layer, RBG0 rotation parameters being displayed, and whether color calculations or shadows are in use. More overlays will come in the future.

image image

<img width="1227" height="972" alt="image" src="https://github.com/user-attachments/assets/2fa4...

Read more

v0.1.8

10 Sep 02:00

Choose a tag to compare

Ymir v0.1.8

Discord | Patreon | Compatibility list

This releases focuses heavily on bug fixes, with a touch of quality-of-life features, debugging tools, and small but welcome improvements across the board. There are no major improvements or new features this time.

Official ARM Windows and FreeBSD builds have arrived, thanks to @tordona and @bsdcode respectively. You can find the Windows version attached in this release and the FreeBSD version in the ports collection.

This is probably the last 0.1.x release as I'm planning to rewrite CD Block and SMPC emulation for next version, which will be labeled 0.2.0. These components have been the Achilles's heel of Ymir's emulation accuracy, causing a large number of hard issues to investigate and solve. For this reason, expect the next release to take a bit longer or be less substantial that these last releases. Also, there's a small but non-negligible chance that the components will have big enough changes that save state compatibility with 0.1.x might be broken. I'll try my best to avoid this, but compatibility and accuracy will take precedence over convenience if necessary.

Compatibility improvements

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

image

(click any image to zoom)

Thanks to the enormous efforts of @GoodWall533, @thelastangryman1907 and jabeck1 (and, of course, everyone else that has contributed), the compatibility list has reached over 50% of total games reported with about 85% compatibility. Filing compatibility reports is a great way to help the community too, so don't hesitate to test games and write your reports here!

Let's start with the elephants in the room: the CD Block and the SMPC, both of which now have test ROMs built by @celeriyacon. These two components have shown the worst cracks of Ymir's emulation -- every single SMPC test fails, and out of the two CD Block tests available, it only barely manages to pass one. My attempts to fix the components to pass the tests have resulted in worsened compatibility, so they will remain failing for the time being for the sake of compatibility. Both are responsible for a large number of freezes, crashes, no-boots and similar issues, and will require significant rework to be fixed. For that reason, I have decided to shift the focus onto low-hanging fruits this version and leave these components in their just barely working states until next version.

image

Not looking great here, but sometimes we have to take a step backward before we can take two steps forward.

That's not to say they haven't received any fixes, though. The test ROM has helped iron out some kinks with CD Block emulation, enough to get Virtual On - Cyber Troopers to not immediately crash after winning a fight (although it's still not fully stable either), and the SMPC tests have helped fix input problems with both the JP and EU releases of Discworld. Also, the CHD loader has received enough fixes to allow every Last Bronx dump I tested to boot properly, and the CUE parser has been rewritten, fixing dozens of issues with misaligned audio tracks and problems loading files with Unicode characters. The application now supports UTF-8 characters everywhere, although the fonts won't display all characters properly yet (Japanese text, most notably).

The internal game database has been upgraded to allow detecting games that benefit (but not require) the Backup RAM cartridge. Ymir will automatically insert the cartridge for these games:

  • Dezaemon 2 -- required for saving games
  • Sega Ages - Galaxy Force II -- required for saving replays

These cartridges will have unique names based on the game name and are saved to <profile>/backup/games/bup-ext-<title> [<code>].bin.

The SH-2 also got a few small fixes to edge cases thanks to new tests in @celeriyacon's SH-2 test ROM.

The SCU only had two fixes, one of which was affecting Phantasy Star IV in the Sega Ages collection from properly loading its graphics. Speaking of the games, there have been more SCSP fixes than usual this time which also helped improve compatibility with all games on the Phantasy Star collection. All of the games can now be played properly, although no one has played them to completion on Ymir yet. The SCSP fixes have also solved many problems such as soundtracks playing on only one channel, sound effects missing in multiple games, ear-bursting static noises, among others. Notably, CroNSF (also from @celeriyacon) is now playing songs properly!

image

Pairs of opposite sawtooth waves are used to simulate pulse waves of any width. Clever.

Finally, let's talk about graphics. Just like previous releases, there have been a multitude of VDP1 and VDP2 fixes, but this time, Ymir's VDP1 renderer has been upgraded to be pixel-perfect thanks Lordus (of DraStic fame). The new renderer received multiple optimizations and upgrades, including cycle-counting the VBlank erase process which fixes the flickering subtitles in Panzer Dragoon's FMVs (and fixes hangs in Parodius for some unexplainable reason), reworked erase and swap timings which fixes many cases of flickering or missing graphics, and a rough estimate-based cycle counting method for commands that solves significant slowdowns seen in Baroque's FMVs.

A VDP1 hack introduced on 0.1.7 to fix Mega Man X3's sprites has been reverted as it was causing problems on multiple games. This means the game's sprites are once again broken, but the upside is that at least 9 other games no longer have flashing or missing sprites.

As for the VDP2, yet another of @celeriyacon's test ROMs has helped tighten and improve video signal timings. Ymir was using an approximation that didn't quite yield the exact NTSC and PAL frame rates. Now, both modes target exactly 59.97 and 50 Hz respectively with very accurate VBlank and HBlank timings as well as VCNT sequences. Exclusive monitor modes (which no games seem to use) are partially working.

RBG rendering accuracy fixes have solved a longstanding problem in Radiant Silvergun's Stage 2C:

image

This used to be janky. Not anymore.

You can find the rest of the fixes in the Changes section below.

UI improvements

Ymir will now report slightly more useful error messages when it is unable to load a disc image which should help pinpoint the problem, be it a missing .bin file, a syntax error in a .cue file, a corrupted .chd, or anything of the sort. Also on the topic of errors, if the application fails to launch for some reason (such as failing to initialize the audio or video subsystems), it will display a message box with a short message describing the problem -- much better than the application not launching at all and leaving everyone (including me) confused. Also, thanks to @Wunkolo, macOS now has a global exception handler for serious issues like the one made available for Windows and Linux on 0.1.7.

The application is now capable of loading SDL game controller databases and includes a community-sourced database with the package, which should help improve compatibility with a variety of controllers.

On Windows 11, the window corners are now square rather than rounded.

image

An error box will be displayed if you attempt to load a game that requires a ROM cartridge (Ultraman - Hikari no Kyojin Densetsu and The King of Fighters '95) for which you don't have the image file in <profile>/roms/cart:

image

The CD Block section in the System State window will now display the file being currently read, if available -- a feature requested by game translators.

image

Debugger

In order to help troubleshoot some of these bugs, new debugging tools have been developed which may also be useful to homebrew developers.

You can now add watchpoints to both SH-2 debuggers. Watchpoints suspend execution when a particular memory address is read or written -- extremely useful to find out what is changing or accessing a particular value (especially hardware registers), as long as it's done by an SH-2 instruction.

image

The SCSP has gained its first set of debugging tools:

  • A slots viewer, showing the state of all registers as well as an oscilloscope of the output of each slot
  • An oscilloscope with the final output sent to the speakers
  • A simple KYONEX event trace (which will be improved in the future)
image

There's a new window that displays some of the most important VDP2 layer...

Read more

v0.1.7

10 Aug 23:22

Choose a tag to compare

Ymir v0.1.7

Discord | Patreon | Compatibility list

This version brings the customary set of bug fixes along with a bunch of new features, including support for the Arcade Racer and Mission Stick peripherals (in both three- and six-axis modes), the ability to take raw screenshots, new video options to improve frame pacing in windowed mode and make better use of high refresh rates when synchronizing video, a global exception handler to catch unexpected emulator crashes, and even the debugger got some attention this time - the SH-2 debugger is finally actually useful and has been an invaluable asset to help investigate and troubleshoot many bugs!

This version also brings overall performance improvements by using OS-specific features for manual reset events (used to synchronize the GUI, emulator and VDP renderer threads) as well as improving SH-2 SLEEP instruction handling. The performance uplift varies a lot between games and systems, with some seeing as much as 10% more performance.

Thanks to @Wunkolo, macOS builds are now universal, supporting both Apple Silicon and Intel-based systems in one binary. @bsdcode has been adding support for FreeBSD builds as well (#385, #389, #421), which is now available in the FreeBSD Ports Collection here.

Nightly builds are now available here. Keep in mind these are not as thoroughly tested and may contain bugs, but they're very useful for testers who wish to contribute to the evolution of Ymir or users who want to stay on the bleeding edge.

Important

Save state files created by any stable release are guaranteed to be forwards-compatible with any future version of Ymir, both stable and nightly. Save state files created by nightlies have no such guarantee. Save state files are not backwards-compatible.

Compatibility improvements

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

showcase

(click any image to zoom)

Thanks to the issue reports from many testers and users, Ymir has received numerous improvements and bug fixes. New testers have joined the community, with special mention to @thelastangryman1907 who has reported dozens of bugs for many obscure Japanese games. Of course, I should also mention long-time testers who have been helping ensure Ymir doesn't have any regressions: @Zet-sensei, @celeriyacon, @AydanWatkins, @GoodWall533, @Silanda, @waspennator, @Immersion95, @markkrauth, and many others. Sorry if I forgot someone, the list just keeps growing!

The compatibility list now has more than 10% of total games reported with nearly 80% compatibility. Filing compatibility reports is a great way to help the community too, so don't hesitate to test games and write your reports here!

Moving on to specific fixes, let's start with the brains of the Saturn: the SH-2s. The improvements in cache emulation accuracy in 0.1.6 have been deemed stable enough to be considered safe to use when needed. As such, Ymir's internal game database has been updated to force-enable this feature for Astal, Dark Savior, and Soviet Strike, as these games are known to have compatibility issues without cache emulation.

astal-forced-sh2-cache

Some fixes to SH-2 interrupt handling (particularly DMAC and FRT) have finally solved a long-standing stability issue in Daytona USA (#209) and allowed Shellshock to boot up (#344) (although Shellshock requires boosted CD Block read speeds to avoid a crash on the intro FMV). The SLEEP instruction has also been fixed and sleep/standby modes are now implemented, allowing the emulator to efficiently skip processing the CPU if it's in one of those modes as well as wake them up when an interrupt is signaled. This allows Culdcept to boot (#346) and improves performance of games that make use of the instruction.

Speaking of non-booting games, a good number of these problems were caused by CD Block or image loading issues. Last Bronx is a good example -- it uses two data tracks: a Mode 1 track containing the game's code and data, and a Mode 2 track with compressed data in a proprietary format. The way these tracks are laid out is unusual - the second data track has a pregap that wasn't being handled correctly by Ymir. Now, most Last Bronx dumps work correctly (#238), but some CHD dumps are still causing problems.

The newly-implemented support for CD-ROM Mode 2 tracks has also fixed the missing intro FMV in NiGHTS into Dreams, a really old bug reported by yours truly before releasing 0.1.0 (#46). Additional improvements to BIN+CUE and CHD loading have allowed other games to boot or fix their audio desync issues, such as the voice lines in Minnesota Fats - Pool Legend (#363).

Many other small tweaks and fixes to CD Block functionality have also helped improve compatibility with many games, including Ultraman Zukan (#329), Digital Dance Mix Vol. 1 - Namie Amuro, Sega Rally Championship Plus, Astal, Mizuki Shigeru no Youkai Zukan Soushuuhen (#391), and WipEout 2097/XL (#202).

nights-fmv astal-in-game wipeout-xl-in-game

The SCU has also received attention in this version. This time the focus was on various nuances of DMA transfers and timers, which led to stability improvements in Fighting Vipers, Sonic Jam, Tennis Arena, and probably many others.

As usual, there have been numerous graphics fixes to count here, most of them focused on small accuracy errors reported by testers. One fix that deserves to be highlighted is delaying the handling of VDP1 framebuffer swaps to slightly later in the same scanline which was meant to fix Marvel Super Heroes sprite glitches but has also fixed dozens of issues along with it:

  • Flickering graphics in DragonHeart - Fire & Steel (#334), King of Fighters '96 / '97 (#272), Jantei Battle Cos-Player (#368), PhantasM (#336), Soviet Strike (#303), Virtua Cop 2, and Yellow Brick Road (#335)
  • Corrupted sprites in Center Ring Boxing (#377), and Marvel Super Heroes (Shuma Gorath's Chaos Dimension move) (#72)
  • Partially missing sprites in Fuusui Sensei - Feng-Shui Master (#405)
  • Freezes/crashes in Mahou no Janshi - Poe Poe Poemy (#378), and Shockwave Assault (#406)

Another fix to highlight which wasn't as impactful, but is something that no other software-based Saturn emulator does right, is the VDP2 VRAM access cycle handling fix done to improve Doukyuusei - if's title screen while maintaining proper behavior for Capcom Generation - Dai-5-shuu Kakutouka-tachi's art gallery. The new behavior has been documented here to the best of my knowledge.

Finally, the last component to receive some fixes was the SMPC. Specifically, a couple of fixes to the way inputs are reported in SH-2 direct mode have fixed lack of input response in World Heroes Perfect (#297), Touge King the Spirits (#322), Chaos Control Remix (#348), and Father Christmas (#374). This leads us nicely into the next section.

Input system enhancements

Ymir now supports the Arcade Racer and Mission Stick peripherals in addition to the Control Pad and 3D Control Pad. The steering wheel sensitivity curve can be adjusted in the peripheral configuration window. The Mission Stick can be switched between three-axis and six-axis modes, the latter of which works great in Panzer Dragoon II Zwei as long as you have an extra pair of hands.

arcade-racer-config mission-stick-config

Almost the entire alphabet is mapped to this controller. Good luck using it with only two hands.

At a lower level, the input system is now capable of distinguishing various characteristics of input axes:

  • Monopolar/bipolar: whether the axis value ranges from 0 to 1 or -1 to +1 respectively
  • Absolute/relative: whether the axis reads a fixed value when held at a particular position or responds to continuous movement
  • 1D/2D: the number of components of the axis

Here are some examples of each combination of characteristics:

1D Monopolar Bipolar
Absolute Gamepad trigger Steering wheel
Relative - Mouse wheel
2D Monopolar Bipolar
Absolute Drawing pen, touchscreen Gamepad stick
Relative - Mouse movement

With this, the emulator will now stop you from binding mismatching axes to input binds, such as trying to map a gamepad trigger to the Arcade Racer's steering wheel.

UI features

Several new options...

Read more

v0.1.6

20 Jul 22:46

Choose a tag to compare

Ymir v0.1.6

Discord | Patreon

This update, just like previous 0.1.x releases, brings a ton of compatibility fixes, more performance improvements, and a handful of new features to play with, including vertical display (TATE) mode, a basic notification/messages system, improved frame pacing stability in full screen mode, and emulation speed control. This is the biggest release yet, with over 80 changelog entries and the most bug fixes of every release so far.

Before we get to the meat of the release notes, I'd like to announce that Ymir now has an official compatibility list which still needs some love. Help fill it out by testing games and filling out reports in the Requests sheets. As of this writing, over 60% of reported titles are fully playable and another 20% at least goes in-game. Not bad for an emulator that's less than a year old! But this is only a small picture of the overall compatibility, as only 6% of the entire library has been tested so far.

ymir-compat

Compatibility improvements

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

ymir-games-showcase (click any image to zoom)

As usual, @celeriyacon has provided me with an ever-growing set of test ROMs to help improve emulation accuracy, while @Zet-sensei has pointed me in the right direction with various tricky games to test and fix, and the folks in the Discord community have been diligently testing dev builds and reporting issues left and right. This time, the SCU and the VDP2 have received special attention -- tons of fixes eliminated various bugs in previously working games and made a few more games boot past the SEGA logo or the typical black screens. WipEout is now playable and Rayman's graphics glitches have been eradicated for the most part. Even the famed Rayman final boss glitch is no match for Ymir.

ymir-wipeout.mp4
ymir.-.rayman.mp4

The SCU DSP in particular now has an even nastier set of tests, some of which Ymir is deliberately failing in order to maintain compatibility with some games. The SCU DMA has received an overhaul and is much more accurate, matching Mednafen's behavior 1:1. There are a few cases where both Ymir and Mednafen don't match the real hardware, although these are probably never seen on commercial titles. SCU interrupts have been revised along with master/slave SH-2 external interrupt handling behavior and should be much less problematic. The synchronization between SCU and the two SH-2 CPUs has been tightened, which helped fix WipEout's black screen on boot.

SH-2 cache emulation had a small bug in the LRU lookup table that caused weird glitches in many FMVs; this is now fixed and SH-2 cache emulation is now enabled by default for the added compatibility it provides for some games (e.g. Dark Savior).

There are too many VDP1 and VDP2 fixes to discuss here -- see the Changes section below for details. In short, many graphics glitches reported by users have been fixed, including some that no other emulator (except the MiSTer Saturn core, to my knowledge) has accurately emulated so far. A notable example is an issue with Capcom Generation - Dai-5-shuu Kakutouka-tachi (#254) in which the bottom portion of the pictures in the art gallery were sliced and shifted to the right, a behavior seen on Ymir 0.1.5, Mednafen 1.32.1, Yaba Sanshiro 1.16.6 and Nova 0.7.0:

ymir-capcom-gallery-image-bad

This was caused by lack of emulation of an improper VRAM access cycles configuration made by the game for the bitmap graphics displayed on these screens. With recent improvements to VRAM access cycles handling, Ymir 0.1.6 is now capable of displaying the images correctly:

ymir-capcom-gallery-image-good

The newly improved VDP2 VRAM access delay debug window can display information on delayed background data accesses and has been upgraded to display information on bitmap backgrounds too:

ymir-vram-access-delay

If you're technically-minded and interested in how this works, check out my brief writeup on games that use illegal VRAM access cycles.

To conclude this round-up, there have been a few fixes to the CUE parser that should fix some CD audio track misalignments and allow Ymir to load games dumped with ImgBurn or other non-Redump-approved tools, as long as the audio tracks are still in raw/binary format. The CD Block, SCSP and SMPC received one small bugfix each:

  • CD audio tracks in X-Men: Children of the Atom will now resume properly after pausing in-game.
  • A SCSP bug that caused sound effects in many games to be truncated has been squashed. Enjoy Sonic R's pause jingle in its entirety, Alucard's hoohs and haahs while speedrunning Akumajou Dracula X, and Daytona USA CCE's over-the-top announcer lines uninterrupted!
  • SMPC command processing was slowed down ever so slightly to allow finicky games such as F1 Challenge and the European release of Quake to boot.

TATE mode and new view options

A number of games (especially shoot-em-ups) support TATE mode, which requires the screen to be rotated 90Β°. Ymir now supports rotating the display in any direction to support those games, or just for added challenge. You can even rotate the display 180Β°, because why not?

display-rotation-options tate-mode-games

Along with this, new aspect ratio options have been added along with options to quickly resize the window to specific scales. Note that the scales are relative to high resolution modes, so the 2x option will result in 4x4 pixels in low resolution modes and 2x2 pixels in high resolution modes, both of which fit nicely on a 1080p display. Also, there's a new option to remember window geometry (position and size) so you don't have to adjust the window every time the emulator is relaunched.

view-menu

Smoother frame pacing

This version significantly improves frame pacing stability in full screen modes. The algorithm will now smooth out frame rate adjustments based on audio buffer state over the course of multiple frames and will spin-wait for up to 1 ms to ensure the frame is presented as close to the target time as possible. See the graphs below for a comparison.

Before:
ymir-frame-pacing-0 1 5

After:
ymir-frame-pacing-0 1 6

0.1.5 had slight fluctuations on every frame. 0.1.6 is far more consistent, as depicted by the nearly straight line and the more accurate 16.6ms frame time.

Performance improvements

Some components went through a round of performance optimizations:

  • SH-2 cache emulation now avoids byte-swapping, making it slightly less impactful when enabled.
  • SH-2 interrupt checks have been optimized down to a single flag check, noticeably improving performance as this is done millions of times per second.
  • SCSP went through various micro optimization rounds that also contributed to a small overall performance gain.
  • The memory bus can now map simple arrays directly, greatly speeding up accesses to ROM and RAM which comprises the majority of memory accesses.

Combined, these optimizations contributed to an overall emulation performance improvement of 5% to 10% on average and in some cases as high as 25%.

The biggest performance boost of this version comes from a new option in Settings > Video that introduces a separate thread for deinterlacing which significantly lessens the performance impact of that enhancement. In some games, the deinterlace option used to cut performance almost in half, but with the new thread the impact is usually less than 10%. This option requires a quad-core CPU or better for best results.

See the pictures below for a performance comparison in Virtua Fighter 2:

image

In this example, the performance cost of the deinterlace option was about 37%. With the dedicated thread, it drops to less than 8%. Some games benefit much more from this option than others. In Fighters Megamix, performance is lowered by 43% with the deinterlace enhancement, but when adding the dedicated thread, it reduces performance by less than 8% again.

Speed control

Before 0.1.6, the only speed options you had were 100% or uncapped (and pau...

Read more

v0.1.5

29 Jun 01:38

Choose a tag to compare

Ymir v0.1.5

This update focuses on compatibility improvements, includes a number of quality of life upgrades, and introduces the first couple of graphics enhancements: deinterlacing and transparent mesh polygons.

image

As with every 0.1.x release, I've been putting a lot of effort into improving emulation accuracy and compatibility with games. With the help of your bug reports and @celeriyacon's test ROMs several games sprang to life, including some known for being tricky to emulate. Here's a small selection of them:

newly-booting-games
(click any image to zoom)

Features and improvements

Many users have reported that migrating emulator data is cumbersome, requiring manual adjustments to several paths in the Settings window. Until 0.1.4+1, Ymir.toml stored several absolute paths to directories managed by the emulator. Starting from 0.1.5, the configuration file will store relative paths, making it a breeze to transfer files between versions or if want to move the emulator folder elsewhere in your system.

Tip

The paths will automatically adjust if you update Ymir in-place (that is, replace the program files in the existing folder and run it once). After that, you can move it anywhere and it should Just Workβ„’.

The Backup Memory Manager is now capable of importing standard .BUP files created by various Saturn save converter tools. Additionally, Ymir is now able to transparently use backup RAM files from other emulators like Yaba Sanshiro, Mednafen or the Saturn MiSTer core -- simply pick the existing file when inserting a Backup RAM cartridge or configuring Internal Backup RAM and Ymir will automatically detect the file format.

A new option has been added to Settings > System to automatically create a new Internal Backup RAM image file for each game automatically. This helps ensure there is enough space for all but the most space-hungry game saves.

image

These files are stored under <profile-path>/backup/games:

image

@GlaireDaggers has added support for MIDI input and output. There are very few retail games that make use of this feature -- Saturn Music School and its sequel being notable examples. Some homebrew developers (and perhaps musicians) will find it useful.

2025-06-18_00-54-46.mp4

A new Tweaks tab was added to the Settings window encompassing all accuracy, compatibility, quality and performance settings, along with presets to quickly reconfigure parameters for maximum compatibility or performance. If a game doesn't work, try tweaking these settings or using the accurate presets here, and if it still doesn't work, copy the settings that comes in a convenient text box with nicely formatted text ready to be pasted into a GitHub issue.

image

For homebrew developers that need an excessive amount of accuracy, there is a new option in Settings > Audio that allows you to adjust SCSP emulation granularity. To contextualize: the SCSP (Saturn Custom Sound Processor) processes 32 sound slots sequentially, producing one audio sample once all slots have been processed. By default, Ymir emulates a full sample (or 32 slots) at a time. This option allows you to subdivide emulation to 16, 8, 4, 2 or 1 slot per step, tightening synchronization between the SCSP and the rest of the system at the cost of performance.

image

Important

It is HIGHLY recommended to leave this option at the minimum value of 0 (32 slots/one sample per step) as it has an enormous impact on performance and seems to benefit no games. It's only provided to pass some strict timing tests and may be helpful for homebrew developers that want to push the hardware to its limits.

The option comes with a warning:

image

On the topic of SCSP, this component has received many accuracy fixes thanks to @celeriyacon's test ROMs. This resulted in many sound improvements across the board:

  • Some games that sounded too quiet are now level with other games.
  • Games that didn't boot because of incorrect emulation of certain SCSP registers are now working.
  • A few games had missing or bad sound effects. These are now playing correctly.

Of particular note, as far as I'm aware, Ymir 0.1.5 is the first software-based Saturn emulator that properly interleaves DSP instructions with slot processing, meaning it has much higher DSP sound effect emulation accuracy than other emulators. This seems to have no practical effect on the majority of retail games, but is an important accuracy milestone to be noted and may be exploited by homebrew developers and demosceners to produce software that rely on precise timings. Besides Ymir, only the Saturn MiSTer core is capable of this (to my knowledge).

I've talked about these test ROMs for a bit, but never explained what they do or shown what they look like. In short, they test some quirks, edge cases and timing behavior of the Saturn's processors and compare the results against those taken from the real hardware. Any divergences are displayed to the user (in this case, emulator developer) for diagnosis. Combined with the source code, documentation, and help from experts, these ROMs help greatly improve the accuracy of any emulator. Here are Ymir's results on the latest SCSP, SCU and SH-2 tests made available to me, using the "Best quality/accuracy" presets from the new Tweaks tab:

image

image

image

Graphics enhancements

This version now includes graphics deinterlacing, a highly-requested enhancement that significantly improves visual quality of interlaced high-resolution games. See it in action below:

deinterlace.mp4

There is a new option to replace mesh polygons (drawn in checkerboard patterns) with 50% translucent polygons.

image

The enhancement is enabled on the bottom row. Observe these details from left to right:

  • Panzer Dragoon Saga: a portion of the dragon's wings and the tornado ahead
  • Fighters Megamix: smoke on Jacky's foot and impact effects
  • Daytona USA CCE: walls and car shadows

You can find the new enhancements in Settings > Video > Enhancements.

image

UI improvements

Some Mac users were reporting that the picture was displayed on the top-left quadrant of the window:

Screenshot 2025-06-24 at 7 08 13β€―AM

Thanks to @Wunkolo, this is now fixed:

Screenshot 2025-06-24 at 7 09 59β€―AM

(Note that in the screenshot above, the menu bar is hiding a small portion of the top of the screen. That is also fixed.)

As a bonus, the application now support multi-DPI setups too. In the video below (recorded on Windows), the window is dragged between two screens with different DPI settings:

QQGtafKfBi.mp4

Additionally, you're now able to override the GUI scaling instead of relying on your operating system's settings. You can find the option in Settings > Video:

image

The File menu now includes a list of recently opened game disc images. Hovering over elided items reveals the full path.

image

You can now use a gamepad to navigate through UI elements. Pressing B on a window while having nothing select closes it. For other controls, see ocornut/imgui#787.

Changes

New features and improvements

  • App: Added command-line option -P to force emulator to start paused.
  • App: Added new Tweaks tab to Settings window consolidating all accuracy, compatibility and enhancement settings.
  • App: Added option to create internal backup RAM files per game. (#99)
  • App: Added option to override UI scale. (#251)
  • App: Added option to toggle fullscreen by double-clicking the display. (#197)
  • App: Added recent games list to File menu. (#196)
  • App: Automatically center Settings window when opening it. (#251)
  • App: Close windows when pressing B or Circle on gamepads while nothing is focused. (#251)
  • App: Enable gamepad navigation on GUI elements. (#251)
  • App: Store relative paths in Ymir.toml. (#207)
  • App: Use window-based DPI to adjust UI scale, allowing the UI to adapt to displays with different DPI settings. (#221; @Wunkolo)
  • Backup RAM: Support interleaved backup image formats such as the ones produced by Yaba Sanshiro or the MiSTer core. (#87)
  • Backup RAM: Support standard BUP backup files. (#87)
  • SCSP: Added opti...
Read more

v0.1.4+1

03 Jun 01:22

Choose a tag to compare

Ymir 0.1.4+1

This is a maintenance release that fixes a showstopper bug with SSE2 builds.

Check release 0.1.4 for the full release notes.

New features and improvements

  • App: You can now drag and drop CCD, CHD, CUE, ISO or MDS files into the emulator window to load games.

    drag-and-drop-load

Fixes

  • VDP2: Fix black screen on SSE2 builds.

v0.1.4

02 Jun 03:53

Choose a tag to compare

NOTICE

The SSE2 builds in this version produce no graphics output. Please grab 0.1.4+1 instead which fixes this problem.

Ymir v0.1.4

This version focuses heavily on compatibility improvements and comes with lots of bug fixes, performance boosts and new features, including one long-awaited, heavily requested feature: MAME CHD support!

Image

Although the changelog below says "preliminary support", the feature has been tested for weeks by many users and seems to be rock-solid, as long as the games are properly supported by the format. Note that because it is a compressed format, it won't load as fast as raw, uncompressed images. You can enable the Preload disc images to RAM if you experience hiccups during gameplay.

The CUE sheet parser has been adapted to load games that use multi-indexed tracks like Taito Chase H.Q. + S.C.I. Games that use this feature now work as long as you use BIN/CUE files.

Compatibility with games has been greatly improved since version 0.1.3. Many no-boot games are now showing some signs of life, and some even go in-game and can be completed in full. Tons of bugs have been fixed since then - graphics, sound, CD, peripherals, CPUs, ROMs, everything got a bit of the magic touch on 0.1.4. While on the subject, @celeriyacon has provided me with another test ROM, this time focused on the SH-2. This means CPU emulation is much more accurate than before and it has already bore fruit: a long-standing bug in Daytona USA (the original release) present since before version 0.1.0 (#7) has been fixed thanks to this ROM.

This version also comes with several performance improvements, courtesy of @Wunkolo and @StrikerX3 (wait, that's me!). Wunkolo has made significant changes to the software VDP renderer to make use of SIMD instructions on both x86 and ARM bringing a boost of up to 11% performance on graphics-heavy games (especially those that use high-resolution modes), while I made SH-2 emulation more efficient and accurate, adding another 5% to 20% overall performance to the emulator. (It's not often that you see accuracy and performance working together like this.) On top of that, a bug fix to the VDP2 RBG0 renderer added another 10% performance to the table in nearly every scenario. This means Ymir will have more headroom to run on lower-end hardware and Turbo speed will be faster than ever.

Ymir 0.1.4 now supports the 3D Control Pad. If you have a controller with an analog stick and analog triggers, those are automatically mapped to the new controller. To switch between digital and analog modes, click the Left Stick. These are the default input binds for port 1:

image

UI improvements

There is a new option under Settings > General > Behavior to pause emulation when the window loses focus.

Image

The blue background surrounding the display in windowed mode has been replaced with pure black matching full screen mode.

image

The playback indicators now have a shadow to make them visible on white backgrounds.

image

The UI will automatically rescale if you change your system's DPI scaling setting (thanks to @Wunkolo).

NVIDIA_Overlay_IcMPDgX9xO_1.mp4

Changes

New features and improvements

  • App: Added option to pause emulator when the window loses focus. (#181)
  • App: Added shadow under playback indicators to make them visible on white backgrounds.
  • App: Changed background color around screen to black on windowed mode.
  • CD Block: Implement Put Sector command, used by After Burner II. (#78)
  • Core: Performance improvements, especially for ARM builds. (@Wunkolo)
  • Debug: Simple CD Block commmand tracer window.
  • Input: Implemented 3D Control Pad. (#28)
  • Media: Preliminary support for CHD files. (#48)
  • Media: Support multi-indexed audio tracks (BIN/CUE only). (#58)
  • SMPC: Set SF=0 on unimplemented commands so that games can move forward.
  • SH-2: Build infrastructure needed to honor memory access cycles for improved performance and accuracy.
  • SH-2: Slow down accesses to on-chip registers to 4 cycles.
  • VDP: Rewrite VDP2 frame composition code to use SIMD on x86 and ARM for improved performance. (@Wunkolo)

Fixes

  • App: Automatically adjust scaling when system-wide DPI is changed. (@Wunkolo)
  • App: Customized profile paths are now created at the specified location instead of the default. (#119, #126; @lvsweat)
  • CD Block: Clear partitions and filters on soft resets triggered by Initialize CD System command. Fixes some game boot issues.
  • CD Block: Clear the "paused due to buffer exhausted" flag when SeekDisc command pauses playback. Fixes Sakura Taisen 2 read errors after FMVs.
  • CD Block: Don't clear the file system when opening the tray.
  • CD Block: Fix audio track sector sizes. Fixes some CD audio track playback glitches with certain images (particularly MDF/MDS).
  • CD Block: Fix Delete Sector end position when sector count is FFFF. Fixes some game boot issues.
  • CD Block: Fix directory indexing. Fixes one of Assault Suit Leynos 2 crashes on startup. (#127)
  • CD Block: Free last buffer from partition when ending a Get Then Delete Sector transfer when the last sector isn't fully read. Fixes some game boot issues.
  • IPL: Automatically load IPL ROM when switching disc images. (#128)
  • M68K: Soft reset CPU when executing the RESET instruction. Fixes OutRun getting stuck on its own SEGA logo.
  • Media: Fix crash when parsing CUE sheets with non-contiguous tracks.
  • SCSP: Don't mirror sound RAM on 5A8'0000-5AF'FFFF. Fixes After Burner II audio and M68K crashes.
  • SCU: Rework interrupt handling. Fixes Rayman inputs. (#59)
  • SCU: Set ALU = AC before running DSP operations. Fixes Quake crash on boot. (#156)
  • SCU: Timer enable flag applies to both timers. Fixes background priority issues in Need for Speed.
  • SH-2: Fix PC offsets for exceptions, interrupts, TRAPA and RTE. Fixes some game boot issues.
  • SH-2: Fix PC offsets for mova, mov.w and mov.l with @(disp,PC) operand (thanks to @celeriyacon).
  • SH-2: Fixes and accuracy improvements to DIVU (thanks to @celeriyacon).
  • SH-2: Fixes and accuracy improvements to FRT (thanks to @celeriyacon). Fixes freezes in Daytona USA. (#7)
  • SH-2: Fixes and accuracy improvements to WDT (thanks to @celeriyacon).
  • SH-2: Lazily update WDT and FRT timers. Provides a 5-10% performance boost and improves accuracy!
  • SMPC: Various INTBACK handling adjustments. Partially fixes Assault Suit Leynos 2 no-boot issues.
  • System: Fix cycle counting on the main loop not taking into account the number of cycles taken by the CPUs, resulting in undercounting timers.
  • VDP1/2: Fix handling of 16-bit sprite data from VDP1 when VDP2 uses 8-bit sprite types. Fixes sprites in I Love Mickey Mouse/Donald Duck.
  • VDP2: Allow 8-bit reads and writes to VDP2 registers.
  • VDP2: Apply transparency to mixed-format sprite data when rendering the special value 0x8000. Fixes Assault Suit Leynos 2 black screen after loading.
  • VDP2: Don't increment vertical mosaic counter if mosaic is disabled. Fixes text boxes and character portraits in Grandia. (#91)
  • VDP2: Fix bitmap base address for RBGs. Fixes several graphics glitches on menus and in-game in Need for Speed.
  • VDP2: Fix line screen scroll in double-density interlace mode. Fixes stretched videos in Grandia. (#91)
  • VDP2: Fix special color calculation bits. Fixes Sonic R water effects. (#150)
  • VDP2: Fix vertical cell scroll effect on games that set up access patterns that don't match the NBG parameters. Fixes Sakura Taisen 2 FMVs.
  • VDP2: RBG0 was always being processed/rendered even when disabled.
  • ymdasm: Fix file length when using a non-zero initial offset with the default length.

Known issues

Several games exhibit graphics or sound glitches. See Issues for details. Specific cases:

  • After Burner II: some sprites that should be transparent are rendered in a black box
  • Akumajou Dracula X: sound effects sometimes play too quietly or are silent
  • Die Hard Arcade/Dynamite Deka: missing sound effects
  • Doom: minor graphics artifacts. Sound effects only play on the left channel when using Stereo audio (#192)
  • Fighters Megamix: some graphics are slightly offset to the left (#190)
  • I Love Donald Duck: sprites persist through some screens
  • I Love Mickey Mouse: status bar and other HUD elements are missing
  • Final Fight Revenge: the ground is just a plain color (#104)
  • Groove on Fight: character sprites are glitched (#70)
  • Marvel Super Heroes vs. Street Fighter: flashing graphics
  • NiGHTS into Dreams: doesn't play the intro video (#46). You can skip it by pressing start on the black screen
  • Phantasy Star Collection:
    • Phantasy Star I: audio is quiet and only plays during the intro
    • Phantasy Star II and III: audio is played on the right channel only
    • Phantasy Star IV: goes to a black screen and only plays music
  • Sonic Jam:
    • Main menu text sometimes isn't rendered (#131)
    • The status bar at the top of the screen in Sonic World is partially drawn (#131)
    • Music stops playing after a while (#83)
  • Sonic R: some sound effects (like the pause jingle) play back incorrectly
  • Virtua Fighter: glitchy in-game graphics (#40)
  • Thunder Force Gold Pack 2: no audio in either game (#145)
  • X-Men vs. Street...
Read more