SCUMM: Hack around Mac Loom text glitch

When using Straw To Gold (either on Loom island or in the Blacksmiths's
cell), the "gold" / "straw" texts overlap each other. This does not
happen in the original. Normally, script 8 would be responsible for
erasing that part of the screen, I think, but the Mac version does
things differently than the DOS version and I can't figure out how to
get it to work properly.

Maybe it's all down to differences in how we implement the
high-resolution text rendering in ScummVM? I'm adding a hack to fix it
for now, but if anyone has a better solution I'd be happy to see it go.

Fortunately, only two games use this, and the hack only affects one of
them. I've played through the game - again - without seeing any
regressions.
This commit is contained in:
Torbjörn Andersson 2022-04-06 11:38:50 +02:00
parent 88aaf2ce4d
commit 9d9b6be671

View File

@ -1277,6 +1277,15 @@ void ScummEngine::setVerbObject(uint room, uint object, uint verb) {
if (whereIsObject(object) == WIO_FLOBJECT)
error("Can't grab verb image from flobject");
// HACK: When the straw changes to gold, or the other way around, the
// object image changes, but the text is not undrawn. This causes the
// two object names to overlap each other. The text can be undrawn by
// script 8, but the logic for it is more convoluted in the Mac version
// than in the EGA DOS version, and I can't figure out how to bend it
// to my will. So hard-code the clearing here.
if (_game.id == GID_LOOM && verb == 53 && _game.platform == Common::kPlatformMacintosh)
drawBox(232, 152, 312, 192, 0);
if (_game.features & GF_OLD_BUNDLE) {
for (i = (_numLocalObjects-1); i > 0; i--) {
if (_objs[i].obj_nr == object) {