So, it's time for another release of Stella. This one was a long time coming, and was actually supposed to be released for Xmas. But real life got in the way, and we're pushed until now. Anyway, this one has several huge features, including finally implementing a request that's been on the TODO list for about 10 years; rewind outside the debugger! We call it 'Time Machine', and it basically allows one to unwind/rewind the emulation state both inside and outside the debugger. One obvious use-case for this is when you're trying to track down a bug during development. You can now play the ROM, experience the bug, go into the debugger and rewind (and unwind!) until you find the issue. So it will be much easier to track down and fix a bug!! Or course, another use-case would be playing a game and getting killed, then rewinding and trying again. But we all know you wouldn't cheat like that, right?
There are also quite a few debugger improvements, TIA fixes, and really changes all over the map. I want to single out Thomas J. and Christian Speckner for this release. Quite a lot of crap happened in my life over the past few months, and I didn't get to work on Stella as much as I'd have liked. But these two guys kept at it, and are in fact responsible for most of the stuff in the changelog. Thanks for the help!
Anyway, without further ado, here's the (huge) changelog:
* Added "Time Machine" mode, which automatically creates save states in user-defined intervals. The user can navigate back and forth within these states inside the emulator and the debugger.* Huge improvements to the disassembly view in the debugger and disassembly files created:- reformatting in debugger for better space utilization- much improved code and data detection- access tracking and indicators for TIA/IO/RAM adresses in disassembly- break vector is tracked (if used)- improved cycle count (page penalties, sums created in disassembly)- improved handling of instruction masking opcodes (e.g. BIT)* Fixed change tracking bug during rewind; changes were accumulated instead of being displayed only for the last rewind step.* Extended 'rewind' to take a second parameter which allows rewinding multiple states.* Added 'unwind' command, which undoes the latest rewind(s).* Added '<' (unwind) button to debugger.* Thumbulator support is not conditional any more.* Moved various developer related settings in new Developer Settings dialog. These settings now come in two groups (player/developer) and allow switching all settings at once.* Don't trap write accesses to the datastream pointers in CDF and BUS. This fixes -dev.thumb.trapfatal 1.* Complete rework of TV mode and ystart autodetection. The new implementation is more robust and reduces startup time.* Add two "grace lines" of black to the top of the frame when autodetecting ystart.* Fixed Genesis controller autodetect (Stay Frosty 2, Scramble, etc).* Fixed a bug in ystart autodetection that could cause screen jumps.* Fixed several bugs in holdselect, holdreset and holdjoyX commandline arguments; these now work as expected.* Fixed bug in TIA collision handling; it is now disabled in VBlank.* Improve TIA PF collision handling during hblank; this fixes a bug in Thrust ROM.* Fixed wrong display of HM values in debugger after 'HMCLR' has been executed.* Fixed bug with the debugger 'savedis' command in Windows; it wasn't actually saving the files at all. This has never been reported before, so I guess it shows how many people use that functionality.* The debugger 'savedis', 'saverom' and 'saveses' now save files in a default, user-visible directory (see the documentation for more information). In the case of 'saveses', the filename is now named based on the date and time of when the command was entered.* Fixed bug with saving snapshots in 1x mode; there was graphical corruption in some cases. Such snapshots also now include any TV effects / phosphor blending currently in use.* Fixed regular-sized snapshots when phosphor effect was enabled; sometimes the image was 'double-blended', resulting in a snapshot that was too dark.* Fixed crash when selecting 'CompuMate' as a controller type for a non-CompuMate ROM; this controller type can no longer be manually selected, and will be used automatically used for CompuMate ROMs.* Fixed cheat codes, so 7 digits codes are now accepted as described in the doc.* Fixed swapped ports being displayed wrong in System Logs and debugger.* Added options to erase the AtariVox/Savekey flash memory, either for all ROMs or only the current one. Also added a message (configurable) when the flash memory is accessed.* Access to the AtariVox/SaveKey can be signaled with a message.* Added new interface palette 'Light'.* Frame stats display made transparent. Also it now displays the real frame rate and if the developer settings group is enabled.* Improved tab auto-complete in debugger.* Added conditional traps and savestate creation to debugger.* Added 'Options...' button to debugger which gives access to the options menu during debugging.* Added debugger pseudo-register '_cyclesLo' and '_cyclesHi', which give the number of CPU cycles that have occurred since emulation started.* Added debugger pseudo-register '_fcycles', which gives the number of CPU cycles that have occurred since the frame started.* Added debugger pseudo-register '_icycles', which gives the number of CPU cycles of the last instruction.* Extended debugger 'dump' command to take a second argument, indicating the end of the range to dump data.* Improved change tracking; more values are tracked and change tracking now works in case of a break too.* Added widgets for trackball and SaveKey/AtariVox controllers.* Improved emulation of 'FE' bankswitch scheme (no user-visible changes, but internally the emulation is much more accurate compared to the real thing). Related to this, improved the debugger support for this scheme (you can now switch banks in the debugger view).* Added emulation of 7800 initial RAM values and Pause key.* Added ROM properties for 'Scramble' ROMs, and updated info for all "Champ Games" ROMs.* Added ROM properties for 'Zippy the Porcupine' ROMs, and updated info for all "Chris Spry (Sprybug)" ROMs.* Support UNIX style builds (configure / make) on OSX with both XCode / clang and g++.* Fixed error when building with uClibc-ng for ARM (thanks to Sergio Prado).* Updated included PNG library to latest stable version.