


Thanks to @Crutch and @YMK over on this thread: https://tinkerdifferent.com/threads/scrnbase-and-its-alternate-screen-address.2299/page-2#post-19807
I was able to squash my bugs regarding a fast switching full screen graphic hack that Apple knew would break the future proofing when coding for the old macs.
Indeed, it used fixed memory addresses to control where the low-level redrawing routines would fish its data from. There was the main buffer known as ScrnBase, but also an alternate buffer a few kbs under it. This is used to switch around the graphics a bunch of times while the song is being played through.
Techniques practiced in this C project:
-Vertical Blanking Retrace timings (an interrupt happens every 1/60th of second, so it acts as a nice regular pulse for your program engine)
-hard coded events that could be made more flexible and part of a text file that's being fed to the program, to control the events that push the lyrics forward, the screen flips and the hidden screen drawings
-catch up mechanism if the events become suddenly bunched up, a queue is formed and they will be dealt with as swiftly as possible - useful for game programming if I ever need to dial in more steps, more logic and more drawings that couldn't fit in a frame's time.
Check it out in compiled form + all Symantec THINK C v6 source code + Studio Session song format here: https://macintoshgarden.org/apps/last-unicorn-sing-along
Last edited: