It turns out that checking the room height causes verbs not to be
redrawn after reading books. Let's just limit it to room 80, and hope
there aren't any other cases.
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.
It should only return the actual font height for Indy 3's font 1, and
even there it's not actually needed at the moment. I'm guessing this
error is why I saw some text rendering errors in Mac Loom, where lines
of text were spaced too far apart. Though strangely, I never managed to
reproduce it.
There is at least one scene in the game where inactive verbs are drawn,
and then the scene background is drawn over them. This should mean the
verbs are no longer visible, but the way we implement high-resolution
text on a scaled low-resolution background all text is assumed to have a
text mask on the text surface.
We work around this by only drawin verbs in standard rooms, where
"standard" is defined as being 128 pixels tall.
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.)
It looks like the input script - or at least this particular input
script - expects to be called twice. Once to clear the verbs and once
for the recipient to accept/reject your offer. In the 256-color DOS
version, both of these are done during the same call.
I don't know if this applies to other input scripts as well, but I'm
limiting it to this one for now.
If you offered an object to someone, e.g. one of the guards at Castle
Brunwald, then clicked "Never mind" instead, the next time you tried you
would only see one inventory object. This seems to be because unlike the
DOS version (at least the 256-color version), script 12 only enables
verb 101, not the whole inventory.
Perhaps the Mac version treated the inventory as a single verb?
The text positions for the books in Indy 3 Mac only need to be adjusted
when using the low-resolution font. When using the Mac font, it works as
intended without changes.
The text rendering isn't pixel perfect compared to the original, but I
actually think ScummVM looks better. Maybe the original draws one
character at a time without compensating for when the character width
isn't even? That might account for text being slightly wider in the
original.
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.