Version 2.80 of my emulator Altirra is now out:
Thanks to everyone who provided feedback, suggestions, and bug reports over the past nine months. Would you believe it's now been over seven years since version 1.0? And for anyone else not as interested... thank you for putting up with the 32-page megathread!
2.80 final is functionally the same as 2.80-test51 except for the versioning change. The full change log is accessible from the Help menu or the website, but here are the highlights of the release:
- Profiles: Keep different sets of settings for different usage modes and quickly switch between them.
- UI: Setup wizard for easier first-time start, more flexible .zip support, better D3D9 windowed vsync performance under Vista+, and ability to set file associations as user-local without requiring admin elevation.
- 5200 mode: Now easier to use. The setup wizard asks whether you want to start in 5200 mode, and 5200 mode is now a separate default profile with partitioned settings and input maps, so it's easier to switch between 5200 and computer mode without mixing up the settings. Fixed a number of issues with 5200 controller support and added a controller test on the boot cartridge screen so you can tell if your controllers are set up correctly.
- Input: Improved mouse support, driving/keyboard controller support.
- Accuracy: Serial bus noise, fast pot scan mode, flash toggle bits, 65C02/65C816 flag and cycle timing fixes, and 5200 power-up DRAM pattern is now more correct.
- Devices: Corvus Disk Interface, Pocket Modem, joystick dongles, IDE+2 fixes and improvements, MyIDE-II and SIDE 2 hot swap fixes, secondary IDE drive support, DragonCart fixes, 256K RAMBO mode.
- Disk drives: Improved Indus GT emulation, improved emulation of 810/1050 disk drive differences, DOS 1.x and improved SDFS filesystem support, configurable default mount mode, and new "VRWSafe" mount mode.
- Firmware: Additional fixes to built-in OS and BASIC.
- Debugger: Automatic focus switching, uninitialized memory access checking, emulated network tracing, stepping fixes, improved 65C02 and 65C816 support, and coprocessor (Veronica) execution stepping.
...And, as usual, time to start the next set of test releases:
Changes in 2.90 test-1:
- Switched compiler from Visual Studio 2013 to Visual Studio 2015 for improved C++ support. 2.90 will still support Windows XP but will be the last major release to do so; the next major version after that will require either Vista or Windows 7.
- HLE kernel removed. It had fallen behind the LLE kernels and there wasn't enough of a reason to keep it.
- Bicubic filter mode removed for graphics cards that only support pixel shader 1.x; also not enough reason to keep it.
- History window now shows a preview of the next instruction.
- Devices dialog improved -- now resizable, shows where child devices can be added, and shows a small settings blurb after select devices.
- Disk Drives dialog now supports drag and drop and is resizable.
- VFS (virtual file system) support extended to more places; Disk Explorer can now mount images within .zip files.
- Added "borderless windowed" or "windowed fullscreen" mode in Options, under Display. This is slightly more expensive on the graphics card but permits easier and faster switching to other programs. (Note that there appears to be a bug in Windows 10 Anniversary Update that prevents the taskbar from auto-hiding as documented if there are top-most windows overlapping a fullscreen window; no workaround for this yet.)
- Added an option for 16-bit display surfaces that should help on low-end graphics cards.
- Rewrote some critical emulation routines to avoid use of the MASKMOVDQU instruction, which is horribly slow on AMD APUs.
- Added CTIA emulation support.
- Fast boot now accelerates AltirraOS and kernels running under Ultimate1MB.
- KMK/JZ IDE v1 PBI bus ID is now configurable.
- Added new "hold keys" feature to allow keys to pre-queued for the next reset when the PC keyboard doesn't allow all the equivalent keys to be held down.
- SIO burst transfer algorithm rewritten to better respond to timing hiccups on the 6502 side, improving reliability at higher base transfer rates.
- Fixed saving of window size when exiting in full screen mode; the full screen size is no longer saved as the normal window size.
- Fixed a crash in the H: device when doing a wildcard rename of a file whose name conflicted with a reserved device name in Windows.
- Changed the way that H: and PCLink handle automatic reserved device name renaming. Both now use ! as the prefix, but accept either $ or !.
- Removed DSKINV hook to fix acceleration issues with QMEG's non-standard DSKINV behavior; no easy workaround and not worth it.
- Fixed UI focus behavior when undocking the active pane.
- Started support for a compatibility database. This is still pretty rough but allows the emulator to detect problematic images when the Boot Image command is used and to auto-suggest fixes. The built-in database currently has entries for two images for testing (Mr. Do! and Jenny of the Prairie). The compat DB is signature based and will match images regardless of the filename. There is a built-in editor and support for a custom external compatibility database as well; note that the format may be subject to change, though, as I haven't decided if I like the current hashing scheme yet. The runtime engine format is binary for speed, but the source format is JSON and designed to be easy to handle.