GSSquared Emulator v.0.6.0 Released

From Jawaid Bazyar:
I am pleased to announce the availability of GSSquared v0.6.0.

GSSquared is a complete emulator for the Apple II series of computers. It is written in C++ and runs on Windows, Linux, and macOS.

This release is something of a maintenance release. There are some interesting user-visible additions, and there has been significant work done under the hood, in preparation for Apple IIgs emulation.

The most notable changes to this over v0.5.0 are:

* 100% accurate “Apple IIgs RGB” video rendering mode has been added, replacing my old hand-coded “RGB-ish” mode. This mode uses lookup tables derived from experiments against a Mega II chip back in the 1990s for the Apple IIe Card for the Mac LC. This mode renders legacy Apple II hires video modes exactly like the Apple IIgs does. Switch between NTSC, GS RGB, and Monochrome modes in the configuration panel (F4) or by pressing F2 to rotate between modes.

* Cycle-accurate PAL video mode emulation is now supported. There is a System config with “PAL Video” on the default launch screen. This has been tested with Shufflepuck Cafe; and a few French Touch demos. However, somewhere there is a slight discrepancy somewhere as one of the French Touch demos loses a cycle or two per few frames causing a slowly-changing artifact. I haven’t delved into this too much yet.

* 65816 core is now in the codebase. It has passed a number of test regimens, including the “SNESTest”. There is no GS yet, but…

* Apple IIgs SHR, colored text, and colored border implemented in the display system. There is no GS yet, but…

* There is an Apple IIe with 65816 system profile now, which puts a 16-bit ‘816 chip *and* IIgs video graphics into a IIe. You can use this with, for example, Total Replay to view the SHR cover art in Total Replay. (Hit Control-Shift-2 in Total Replay to see a slideshow of just the SHR art). Also allows you to run Merlin-16 in full 16-bit mode and run 16-bit IIe programs you write yourself. (It will not run GS programs).

* The Apple II 1-bit speaker code has (once again) been replaced with a new version. This one can accept arbitrary input and output frequencies, uses 100% integer math (fixed point) so should be highly performant even on small systems w/o floating-point in hardware, and is highly accurate. The speaker is now operated at a 14MHz input clock rate which produces accurate output in the high speed modes, as well as on a GS even in the face of the GS’s ever-changing clock speeds. It also lets audio in PAL mode work correctly. (This reduces average time to generate audio frame from 2-3uS to 1-2uS).

* The User Interface button/control text alignment and display has been fixed.

* Mockingboard updated to work with PAL timing

* Mockingboard works much better now and stays in sync in high speed CPU modes (2.8MHz, 7.1MHz, and ludicrous speed) as well as in PAL mode.

* The Game Controller has been modified; by default, we will detect and use a gamepad on the system. The User can manually switch to “Mouse Emulated Joystick” if they don’t have a gamepad. There are certain programs that get confused by having both a mouse and a joystick driven by the same device, which is why mouse emulated joystick is no longer the default if there is no gamepad. (This resolved problems with A2Desktop and some other titles).

* Debugger: when specifying a breakpoint or memory monitor, you can now supply a single address (before, required always specifying a range of addresses)

## Internal Stuff

* Some issues in speed-switching between 1.0, 2.8, 7.1MHz and Ludicrous Speed were resolved. So you can speed shift up and down without desynchronizing various devices.

* Found and implemented all previously missing softswitch locations that needed to return “floating bus” data.

* frame buffer classes optimized to support writing to user-supplied memory which we use to eliminate a now unneeded full frame copy; reduced frame render time by 25%.

* added a dummy cassette device (does not work) but which does return floating bus data on read.

* a switch to a new scaling mode in SDL, “PIXEL ART”, to improve fractional scaling of SHR modes. (will require relatively recent SDL3 libraries)

* Fixed bug in handling of 80STORE switch when in Ludicrous Speed that caused PLEIADES/PLASMA programs drawing to double hires to flicker.

* Fixed similar bug in cycle-accurate video that was causing the Skull Island DHGR splash screen to show the wrong hi-res page.

* Fix bug in Mouse that could cause emulator to lock up in an infinite loop.

* There is IIgs MMU (memory management) code in the base, along with a test harness.

* MMU classes were modified to accept a 32-bit address parameter. Some instances still expect 16-bit values only.

* MMU can now efficiently handle arbitrary (power of two) page sizes.

## IIgs MMU Test Harness

The program “iigsmmutest” allows you to do one of:

1. generate the tests as Merlin32 source code, to assemble and run in-emulator or on real hardware. Running on real hardware is how I developed the tests.

2. just display the tests in english on the screen

3. run the tests against the IIgs MMU class, basically as if it was running inside the emulator.

https://github.com/jawaidbazyar2/gssquared

Author: A.P.P.L.E.
The A.P.P.L.E. Website is run by the Apple Pugetsound Program Library Exchange Users Group and is open to all Apple and Macintosh fans and their friends.