Double Double: Apple IIe Mid-Screen Mode Switching Demo


I've done some previous work/demos with mid-screen mode switching, but often using vaporlock and only of the regular Apple II graphics modes.

An emulator author asked me if I had ever explored doing this with "double" modes on Apple IIe and newer, such as 80-column, double-lores, and double-hires.

Once you have the double modes, the extra things you can do are less exciting because in theory using double-hires you can just simply draw any combination of pixels from the other modes. There is one primary benefit you could get from mode-switching: the other modes use a lot less RAM than double-hires and that can make updating the display faster.


Footage recorded on actual Apple IIe Platinum:


Actual Apple IIe platinum (output captured using capture card) AppleWin Mame 0.251 (apple2ee)

Compatibility Notes

I've only tested this on Apple IIe, although there is vblank code included for IIc and IIgs so try it out and see how it goes.

It will try to play mockingboard music if you have one.

The first few screens it tries doing mid-scanline mode switches. It tries a few offsets, note this isn't deterministic so don't worry if your emulator starts at a different place. This is because the way I am getting VBLANK on the IIe isn't cycle accurate, the offset can be from 0 to 3 and I'm not sure if there's a good way to get an exact VBLANK value. When using vaporlock you can fine tune this, still haven't looked into doing that here.

Disk Image

You can get the disk image here: double.dsk (140k) 15 May 2023

Source code

The souce code can be found on github here repository in the vaporlock/doubledouble/ directory.


Devel Notes

15 May 2023 -- Release v1.0

Finally got this out the door. Was a huge hassle, ended up writing a bunch of tools including a png to double-lores converter (and figuring out you have to rotate the AUX page colors). Trying to get the music to fit. Lots of other small things. Hope it was worth the trouble.
My other Apple II Projects
Back to my homepage