2025年9月14日 星期日

Ymir v0.1.8

 SEGA SATURN模擬器 Ymir 發布新版,更新如下 :

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...


https://github.com/StrikerX3/Ymir/releases

沒有留言:

張貼留言