So, it's that time of year again. And for a special gift, there is a new release of Stella! This one has been almost 6 months in the making, and is obviously a jump to a new major version. There are huge changes all across the board, but the major new feature is cycle-exact TIA audio emulation.
For the first time, cycle-exact audio emulation allows several ROMs to work correctly that have never worked before. E.T. and Ms. PacMan are the most obvious; they now sound exactly like they do on a real console. Most other emulators (and Stella too, previous to 6.0) use an idealized emulation of sound, which in some cases results in better sounding, but incorrect, output. The new code is based on FPGA work by Chris Brenner (crispy), and as a result AFAICT, this is the first time that E.T. has sounded correct in an emulator.
And for the first time in a long time, Stella gets a new coat of paint! The themes have been modernized a little, which new schemes, titlebars on windows, etc. Definitely makes the app look a little more modern. We don't want to look too modern, though. After all, we are emulating a 40+ year old system
There are many other sound changes too, and bugfixes/improvements/new features all over the place. Complete changelog as follows:
- Note: because of major TIA sound changes, the state file format has changed, and old state files will not work with this release.
- New cycle exact audio core based on work by Chris Brenner (crispy); greatly improved audio emulation accuracy (i.e. E.T., Ms. Pacman).
- Full rewrite of the audio subsystem; resample TIA output to target sample rate directly in Stella.
- Added option to force stereo sound for all ROMs, or to use the setting on a per-ROM basis.
- Threading: decouple emulation from frame rendering.
- Main loop rewritten; emulating speed and timing is now much more faithful (i.e. speed in Pick'n'Pile).
- Added preliminary support for 'CTY' bankswitching scheme and recently released 'Chetiry' ROMs. Special thanks to SpiceWare for adding music support to this scheme.
- UI modernization (new widget look, dialog titles added, dialogs refactored).
- The bankswitch scheme can now be forced by naming the ROM with a specific extension (ie: .f8s for F8SC, .fe for FE, etc). The supported extensions are the same as the ones from HarmonyCart and UnoCart.
- Audio settings replaced with new 'audio.xxx' settings.
- FPS setting replaced with speed setting for adjusting emulation speed.
- Extra functionality for Time Machine dialog (start/stop recording; minor fixes).
- When logging messages to the System Logger, condense similar messages that arrive in batches into fewer messages (including timestamps).
- Fixes for collision corner cases (during HBlank).
- Fixed excessive CPU usage while in UI modes (ROM launcher, debugger, etc).
- The 'launcherexts' option has been replaced by a true/false option named 'launcherroms', which specifies to show only ROMs or all files in the ROM launcher.
- Changes in 'Game Properties' dialog
- - 'Default' button now affects only current tab like in all other dialogs.
- - 'Display' and 'Console' tab changes are now immediate.
- - Fixed bug when selecting 'Auto-detect' format for 50Hz ROMs
- Fixed bug in autodetecting Genesis controllers.
- Fixed bug with 'thumb.trapfatal' commandline argument; sometimes Stella would lock up when encountering a fatal error instead of entering the debugger and displaying a message.
- Fixed bug in reading from settings file with entries that were empty; the parsing was failing. This affected the 'cpurandom' argument; when all options in it were turned off, they were all turned on again during the next program run.
- Fixed bug with 'hold' events; they are now released a short time after starting a ROM.
- When starting Stella for the first time, the first ROM selected will determine which path to use by default for subsequent runs.
- Fixed emulator crash when starting SaveKey ROMs from commandline with SaveKey messages enabled.
- Fixed missing TV format update in frame stats dialog when switching display type.
- Fixed missing debug color update when switching display type.
- 'Fill to scanline' now works for scanlines above current scanline too.
- The debugger 'uhex' command is now honoured in CDF and BUS schemes.
- When switching screenmodes, the sound is now paused and later resumed. This fixes popping and cracking sounds apparent on some systems, notably macOS when toggling windowed/fullscreen mode.
- State file format has been optimized to be smaller, and faster loading and saving. This affects both the files saved to your computer as well as Time Machine functionality.
- The ROM name saved in a PNG tEXt chunk now honours the 'snapname' setting.
- Improved snapshots when phosphor is enabled.
- Updated PAL palette.
- Added 'Cartridge.StartBank' ROM property, to force a ROM to use a specific bank for its reset vector.
- Added Developer setting, which breaks on reads from write ports. It now detects such conditions in many more cases. This new way of detecting RWP errors obsoletes the old '_rwport' debugger command, which has now been removed.
- Added recently released 'Arkyology' prototype ROM to the database.
- Added 'Amoeba Jump' and 'Flappy' ROMs (from the Retron77) to the database.
- Fixed 'Street Racer' and 'Video Olympics' ROMs to use paddles in both ports.
- If using SDL 2.0.5 or above, the calculated desktop size now takes the taskbar/dock into account (so windows should no longer overlap those areas).
- For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname.
- The UNIX builds now use the system-installed PNG and ZLIB libraries by default.
- The Macintosh builds are now named 'macOS' throughout the codebase to reflect the new naming from Apple.
- For better compatibility, the Windows 32-bit version does not require SSE2 anymore.
- Updated included PNG library to latest stable version.
As always, Stella can be downloaded from the usual place
. And as a shameless plug, please consider a donation
if you like; I plan to build a new development workstation in 2019
Special thanks to Christian Speckner and Thomas Jentzsch for work on this release; their work formed a large part of what became version 6.0.
Bug reports can be posted here, or by creating an issue on the Github page
Merry Christmas, and enjoy this latest release of Stella