Skip to content

0.7.0

Latest

Choose a tag to compare

@jcmoyer jcmoyer released this 28 Sep 21:52
· 4 commits to master since this release
0.7.0
02f6e3d

Version 0.7.0 (2026-09-28)

License change

Thanks @nukeykt for all the work you've done and for releasing this project!

Performance improvements

The main new feature in this release is a new H8/532 VM that supports instruction caching. Compared to 0.6.1, measured render times are 1.51x faster for mk1 romsets and 1.40x for mk2 romsets. The exact figures will vary based on your hardware.

  • Optimized interrupt handling for a 1-22% overall performance improvement (depending on romset).
  • Rewrite H8/532 VM from scratch to support instruction caching and reduce number of ROM reads. 12-16% performance improvement (depending on romset).
  • Optimized timer updates for a 10-13% performance improvement (depending on romset).

Romset management

Romset management has been overhauled thanks to contributions from @michaelmouton.

In this release, romsets passed on the command line can be passed using a new format, <family>-<version>. <family> is one of the names that you could previously pass such as mk1 or mk2 and <version> is a specific version of that family.

Romset names using the older format are still supported.

Enhancements

  • Added the ability to load specific versions of romsets when loading roms by hash. Pass --help to see the list of accepted names or refer to supported romsets.
  • Updated hashes for several romsets thanks to @michaelmouton. (#56)
  • Added rom hashes for MK1 versions 1.00, 1.10, and 1.20 as well as SC155MK2 CTF-patched roms thanks to @akse0435. (#58, #59)
  • Reduced the amount of hashing done when loading roms by hash.
  • Hid debug messages coming from the backend. These can be re-enabled by passing --debug to either frontend.
  • Added a --quiet flag to suppress messages entirely. (#43)
  • The hash based rom loader now looks for roms in the rom directory recursively.

Bug fixes

  • Fixed a bug where selecting a specific romset using --romset would cause the emulator to not load all the roms in that romset.
  • Fixed a bug where the renderer output was ~20% slower than the set tempo when using a JV880 romset.
  • Fixed a subtle timing bug that caused sample output for the JV880 to differ slightly from upstream.
  • Fixed a bug where --disable-oversampling with an mk1 romset would cause the renderer to run indefinitely. (#48)
  • Fixed a bug that caused --legacy-romset-detection to fail loading any roms. (#60)
  • Fixed the hash based rom loader incorrectly mixing and matching roms from different romset versions.
  • Fixed bit-flips in interp table (upstream commit)

Notes for developers using this project as a library

This release contains a large breaking refactor of the hash based rom loader. AllRomsetInfo has been removed because there is not a 1:1 mapping between Romsets and specific versions of that romset. Many functions in rom_io have been changed to operate on RomsetInfo instead. To deal with this new requirement, DetectRomsetsByHash has been replaced with two types: HashedFileRegistry for storing file hashes and RomsetHashRegistry for storing romset hashes. These provide more control over how roms are located and
are easier to use.

If you don't care about any of these features, you can simply populate RomsetInfo::rom_data with rom contents (as they exist on disk) and call Emulator::LoadRoms.

Release metadata

SHA256: 631e773eb200c38c58fd008c7a3e660530a59ea16fdf43e2f4354e13e8e666f1 *Nuked-SC55-x86_64-w64-mingw32-0.7.0.zip

Full Changelog: 0.6.1...0.7.0