¶Altirra 1.5 released
I actually released this last month, but for those of you still into Atari 8-bit systems, Altirra 1.5 is out. Once again, this contains a number of fixes to low-level emulation to closer match the actual hardware, and also contains some feature improvements such as more disk support and better input and UI options. The main page contains the full changelist for those interested.
An item that's somewhat hidden in the changelist is emulation of Video Board XE, which is an add-on board produced recently by some folks in Poland. It's FPGA-based and adds display abilities that are something like Amiga's bitmap capabilities combined with NES-style tile maps, while still being driven by an Atari 800XL or equivalent. While it is somewhat whimsical to extend '80s technology with 2010 video circuitry, I found the design interesting enough to hack in emulation for it so I could check out a few of the existing demos and also program it a bit. Long story short, I managed to get everything working well enough that I was able to write a program to do rotation via three shears on the blitter and it worked the first time on real hardware even though I'd only been able to test it on the emulator myself. It's a bit weird trying to write software to nothing but a spec, and rather gratifying when it actually works.
One of the problems I've run into when reverse engineering the Atari is that my hardware skills and equipment aren't always up to snuff. I'm primarily a software guy, and that limits my ability when it comes to reading schematics and determining what the hardware is doing, particularly when it comes to non-program visible results like color output. In the case of V1.5, one of the things I had to look at was emulating a particular bug in the chip that drives frame timing (ANTIC) which affected vertical blank. Unfortunately, the Atari's video output is borderline with regard to NTSC compliance; only one of the two capture cards I use can capture it at all, and the other one isn't configurable enough. Since I don't have an oscilloscope or logic analyzer what I ended up doing was hooking up the video to my sound card and digitizing at the highest frequency I could, 96KHz, which provided a barely adequate 6.5 samples per scan line. This was clumsy, but just enough to see what was going on with the vertical sync region and to emulate the bug. In doing so I learned tha modern LCD-based TVs frequently don't actually handle non-interlaced video correctly; they just pretend that the video is interlaced anyway. I suppose TV manufacturers aren't overly concerned with what the output from a computer in the early 80s looks like on a 46" HD display.