I'm committing this as is, while leaving final integration to someone
else. Note that this doesn't really replicate the original Mac GUI (e.g.
the quit dialog is nothing like the original), but at least the pause
dialog looks right. And that's what matters to me.
In Macintosh b/w mode, there really is no such thing as palette
manipulation. Any color changes have to be handled by the renderer.
Instead of marking the palette as dirty, changes to the shadow palette
trigger a full redraw of the screen.
At the time of writing, I'm only aware of two things that use this: The
lightning flashes at Castle Brunwald in Indiana Jones and the Last
Crusade, and the scene where the dragon finds Rusty in Loom. I have
verified that both of these seem to work correctly.
This is currently only (partially) implemented for the 16-color Mac
versions of Loom and Indiana Jones and the Last Crusade. The text is
still drawn in color, since that's rendered separately, but I'm
committing this now while it still works.
This is based on the DOS VGA version. I would have been more comfortable
comparing it to the EGA version, but I don't have that. But from what I
can tell, it should work the same.
I don't see anything in the script that would do it (well, there is one
but that may be just an accidental leftover from the DOS version), so
trigger on the end of each delay throughout the credits script.
Pretty? No, I guess not. But it's at the end of the game, so there
should be no risk of it messing things up.
Instead of looping through the entire string, loop until the end of the
string or until the rendered string gets too wide for the text box. The
upper limit is somewhat arbitrarily chosen, but should look fine if an
actor name is ever that long. (Hint: They're not.)
We can't pretend that the Mac text box is on the main virtual screen,
because then removing it will remove all other text on the main virtual
screen, e.g. the copy protection instructions.
There's still the matter of exactly when the text box should be created
(sometimes text is drawn to it in several steps, and we don't want to
erase the old text), and when/how to remove the box.
It turns out that the practice box (which shows note names in practice
mode) is a verb. The DOS version turns this verb on and off when needed,
but Mac Loom only sets variable 50 and 54. I have no idea why there are
two different variables, because variable 50 seems to be enough.
Anyway, this simply turns the verb on and off, and adjusts its
coordinates. It seems to work well enough.
Unlike the PC version, the practice mode box appears to be hard-coded in
the Mac version. The script that draws the box in the PC version just
sets variables in the Mac version. This implementation is based on
screenshots.
To keep things a bit saner, I've split out the Mac-specific drawing to
its own file.