Altirra 4.00 Beta XLII 18/09/2021
- Debugger: Added verifier options for detecting stack wrapping and stack in page zero.
- POKEY: Fixed keys not being re-reported in raw non-full scan mode when enabling debounce with keyboard scan already enabled.
- Fixes held keys not being re-registered in raw key mode when keyboard debounce mode is re-enabled while keyboard scan is already enabled. This fixes the Rapidus menu being harder to enter with the Inverse key in raw key mode than it should have been (full scan mode was fine).
- Fixed a regression in the initial state of SKCTL bit 4 due to some cassette changes.
- Improved the output of the .pokey debugger command.
- Added verifier modes for detecting stack wrapping and the native 816 stack being placed into page zero.
Altirra 4.00 Beta XLI 12/09/2021
Fort Apocalypse (Synapse Software Corporation, 1982)
- Devices: Added parallel port buses to all devices that support printer output and file writer device to sink printer output to a file.
- Fixed crash when opening Tape Control after loading a mono WAV file.
- Tape Control shows mono tapes as such again.
- Added support for XEP80 printer port.
- All devices that support printer ports now have an explicit device port for attaching parallel port devices.
- Added parallel port file writer device to spool parallel print data to a file.
Altirra 4.00 Beta XL 08/09/2021
Fire Power (1993, ASF). Świetna grafika i kompletnie skopany system sterowania... szkoda
- Custom Devices: Fixed script compiler allowing async methods to be called from handler contexts that don't support async operations.
- Debugger: Fixed disassembly window repeatedly trying to scroll near the top of address space.
- UI: Full-screen file browser scrolls back to top when changing folders.
- Custom device: Fixed script compiler not checking async permissions on method calls; added logging when loop count is exceeded; improved behavior on forced call stack depth exceeded; fixed occasional crash when removing a custom device.
- Debugger: Disassembly window no longer repeatedly recenters itself near address 0.
- Debugger: Fixed erroneous emulation mode reporting in the .side3 command.
- Virtual FAT32: Added disk serial number so Windows recognizes the disk in read-only mode; improved layout similarity to Windows format; fixed 8.3 lowercase filenames not being preserved.
- VHD: Fixed bitmap corruption when writing multiple new sectors to a dynamic VHD image in a single IDE command.
- UI: Fixed full-screen mode file browser retaining scroll when switching folders, possibly scrolled off the bottom of the list.
Altirra 4.00 Beta XXXIX 29/08/2021
- Debugger: Added .vbxe_pal command.
- POKEY: Fixed extra audio pulse when timer 1/2 underflow coincides with two-tone timer reset.
- Added 1050 rev. E to firmware detect list.
- Fixed lack of word wrap in update dialog.
- Audio monitor now dims channels that have been toggled off.
- Fixed extraneous audio pulses in two-tone mode when timer underflow occurred on the same cycle as the timer 1+2 resync.
- Added .vbxe_pal debugger command.
- Fixed a tiny amount of aliasing leakage in audio output (32-bit x86 only).
Regarding the two-tone audio issue -- I tested timer 1+2 two-tone timing against the actual hardware and 3.90+ is correct, with 3.20 being off by two cycles. The actual issue was a corner case in where a resync 1+2 tones signal on the same cycle where an underflow happens causes the output pulse to be suppressed, which wasn't happening and resulting in a pure tone instead of a complex tone. This case wasn't being hit in 3.20 for the pitches involved due to the two cycle difference in period.
As this is the first test release after the addition of the Check for Updates feature, it'll be interesting to see how well it works. The feed won't be updated until about 10 minutes after this post lands, since I have to update the feed with the link to this post.
Altirra 4.00 Beta XXXVIII 23/08/2021
- Cassette: Added feature to hold data line across VBI to increase reliability of OS C: reads.
- Display: Fixed failure to switch to exclusive full-screen mode in D3D9 with bloom enabled.
- UI: Fixed a crash in dockable pane code with mixed DPI monitors.
- Fixed errors when switching to exclusive full screen mode in D3D9 mode with hardware accelerated bloom enabled. (There was a surface not being released on D3D reset, leading to D3DERR_INVALIDCALL.)
- Fixed a stack overflow crash that could occur when switching between pane layouts, such as entering or exiting the debugger, on a multi-mon system with different DPI scales on each monitor.
- Added a configvar for the target frame rate in warp mode, previously hardcoded at 1/15 frames displayed.
- The .basic_dumpline debugger command now adds the $ or ( suffix for string and array variables when it synthesizes variable names due to a corrupted VNT. That is, you will now see _V9C$ instead of _V9C.
- Added new experimental peak-to-peak and duty cycle balanced turbo tape decoding modes. The balanced duty cycle modes are intended to improve decoding for loaders that are highly sensitive to pulse widths, which is a problem when decoding tapes distorted by audio enhancement. However, it's a more heavy-handed in the changes that it makes to the tape signal, so YMMV.
- Added an option to hold the tape data line across the start of vertical blank. This is a workaround for a bug in the Atari OS C: handler that causes it to occasionally screw up when measuring the baud rate and blow the tape load -- the SKSTAT bit is held across the danger period where RTCLOK+VCOUNT is ambiguous.
- The Phoenix 8K cartridge type can now be used with 2K and 4K images, which are auto-mirrored to 8K like with the standard 8K type.
Also in this version is the main thing I've been working on, the ability to check for updates online. This is only a manual check for now as I haven't added the logic to auto-check on startup, but Help > Check for Updates will now fetch an update feed to check if there is a newer release (test or stable, depending on which type of build you are running). Quite a lot was involved here including signing certificates (yuck) and the Windows CryptAPI/CNG/WinINet APIs (double yuck), but hopefully once it's all working smoothing it'll be a more convenient way for people to find out about updates. Note that the update mechanism only shows when a new build is available, it doesn't download or install it.
The underlying notification mechanism uses a subset of RSS 2.0. I haven't decided how widely to publicize this, but you can subscribe to it in a regular feed reader:
Note that there is a chicken-and-egg problem in that for the test releases, the link in the update feed is the AtariAge post announcing the new release. This means that you'll always hear about it here first, because I can't get the link for the feed update until the post has been made!
Altirra 4.00 Beta XXXVII 14/07/2021
- Audio: Improved aliasing rejection of output audio filter.
- Fixed a rounding problem in the PAL high artifacting engine that was causing excessive banding.
- Fixed an issue with the windowing on the audio low pass filter and added kernel interpolation to the resampler, for reduced aliasing from ultrasonic audio (which causes you to hear sounds that should be inaudible).
- The disk drives dialog now asks for a save path if saving a disk that doesn't have a image path set yet, and blocks saving of dynamic disks.
- Improved the performance of the raw turbo tape decoder.
- Turbo tape modes have a bit better descriptions.
The Tape Editor now has the ability to view and edit the turbo decoder side of the tape, as well as to show the waveform input to the decoder (if waveform caching is enabled on load, which is off by default). For the turbo signal, this shows the post-filter output. The analysis tool now also has rudimentary Turbo 2000 decoding capabilities:
You can also see the distortion in the source waveform due to high frequency attenuation, which is what the compensating HPF is for:
Altirra 4.00 Beta XXXVI 07/07/2021
- Cassette: Added FLAC decoding support.
- Cassette: Motor and play/record/pause state is no longer reset when switching tapes.
- Builds are now hosted over HTTPS, so the links should work directly again. Older builds are also available over HTTPS, but they won't redirect due to annoying behavior in some browsers. I can't edit the old posts, but you can edit the links manually to https.
- Debugger: 65C816 BRL instruction is now treated as ending a block in the disassembly.
- Raw tape audio can now be loaded in FLAC format.
- Fixed regression in loading CAS format tapes with FSK blocks, and fixed the read error message also always reporting position 0.
Tape editor has also received a few upgrades. It now has commands to convert selected ranges between standard (decoded bytes) and raw FSK, and also to extract files stored in standard C: format.
It also has two analysis features. The first is an Analyze tool that, when dragged over a selection, decodes and displays bytes in that selection. The second is an option to capture bytes as decoded dynamically through POKEY. Together, these can be used to diagnose boot errors:
In this case, the problem is a poorly encoded CAS file containing a transition from a standard 'data' block (green) to an 'fsk ' block (blue). The gap in between (gray) is of the wrong polarity, causing a framing error from the start bit being shortened (red byte).
We can fix this by using the Draw tool to repair the start bit:
...only to run into a problem later in the tape:
Here the analyzer is able to successfully decode the block with a valid checksum (blue bytes), but the boot fails with a framing error. The cause is a slight difference in estimated baud rate that causes the analyzer to just barely squeak by, whereas the OS boot is just slightly off enough for the stop bit sampling position to spill over into the next start bit (gray ticks). This is caused by another data/fsk split within the block, which causes timing problems since 'data' blocks can only specify baud rates to the nearest integer:
...but since the analyzer can decode the block, we can have it rewrite the entire block as clean standard data to avoid the mid-block change in baud rate and the marginal bit sampling timing:
...and now that the tape boots properly, resave a repaired .cas file.