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!
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:
UI improvements
There is a new option under Settings > General > Behavior to pause emulation when the window loses focus.
The blue background surrounding the display in windowed mode has been replaced with pure black matching full screen mode.
The playback indicators now have a shadow to make them visible on white backgrounds.
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
andmov.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:
- 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 Fighter: flashing graphics
Netlink-capable games are not supported yet; these either boot back to system menu or hang on the SEGA logo:
- Daytona USA CCE Netlink Edition
- Daytona USA Circuit Edition (Japan)
- Duke Nukem 3D (USA) (#136)
- Saturn Bomberman (#63)
The following games softlock or freeze during gameplay:
- Advanced V.G.: freezes when selecting a character
- Assault Suit Leynos 2: freezes on a black screen in-game
- Clockwork Knight 2: freezes on a black screen when starting the game
- Grandia: freezes if VDP threading is enabled. The 3D graphics glitch out if VDP threading is disabled. (#91)
- Sakura Taisen: freezes during certain dialogue lines (#90). Can be worked around by mashing B to skip sound clips before the softlock happens
- Sakura Taisen 2: freezes during certain dialogue lines
- Vampire Hunter: freezes if you let the intro sequence play past the "Vampire" logo
The following games stay stuck on the SEGA copyright screen, on a black screen or boot back to the system menu:
- Astal (#132)
- Capcom Generation - Dai-5-shuu Kakutouka-tachi (#68)
- Crusader - No Remorse (#108)
- Discworld
- Jung Rhythm (#85)
- The King of Fighters '95 (#75)
- Mega Man X3
Miscellaneous issues:
- Switching discs or returning to the system menu with A+B+C+Start while using a Japanese IPL (BIOS) ROM may cause the system to display the "Game disc unsuitable for this system" or "Cartridge unsuitable for this system" messages. As a workaround, force a hard reset (Ctrl+R by default) to fix this.
- Rayman: inputs are inconsistent (feels like pushing a turbo/repeat button) (#59) and has some graphics issues
This game currently only works with SH-2 cache emulation enabled:
- Dark Savior (#134)
Which version should I download?
If you just want the emulator, grab the ymir-
release for your operating system.
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 randomly crashes for no reason, try the SSE2 version.
For Windows releases, the Console version opens a terminal window alongside the main emulator window and the Win32 version is a proper GUI application with no terminal. If in doubt, prefer the Win32 version. Despite the name, Ymir is a 64-bit application. You might also need to install the latest Microsoft Visual C++ Redistributable package (x86_64 installer). Ymir requires Windows 10 or later.
The macOS releases are available for Apple Silicon (ARM) systems (a64
) and Intel systems (x64
). Ymir requires macOS 13 (Ventura) or later.
The ymdasm
tool is more useful for emulator or homebrew developers. Check its README for instructions.