Opened 18 years ago

Closed 18 years ago

Last modified 2 years ago

#8201 closed patch

EGA LOOM: Text drawing hackery (don't apply)

Reported by: eriktorbjorn Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Loom


This is a very incomplete - quite possibly buggy - attempt at fixing the EGA Loom intro. Please don't apply any of it to CVS unless you're sure of what you are doing, as I haven't even tried to do any regression testing.

Two of the changes are to Scumm_v5::decodeParseString(). Opcode 6 is changed to mean centered text instead of left-adjusted (does that mean opcode 4 should mean left-adjusted?), and opcode 10 (which is used both for the copy protection screen and for the messenger nymph scene) is stubbed. I have absolutely no idea what it's supposed to do.

The third change is to CHARSET_1(), and is an attempt to fix line breaking in the GF_AFTER_V3 case. Always setting _charset->_nextTop to 8 and _charset->_nextLeft to 0 makes no sense to me.

Ticket imported from: #727971. Ticket imported from: patches/306.

Attachments (1)

loom-text.diff (1.6 KB ) - added by eriktorbjorn 18 years ago.
Patch against an April 25 CVS snapshot

Download all attachments as: .zip

Change History (9)

by eriktorbjorn, 18 years ago

Attachment: loom-text.diff added

Patch against an April 25 CVS snapshot

comment:1 by eriktorbjorn, 18 years ago

By the way, I noticed that the patch fixes the costume bug (Bobbin not rising to his feet) at the end of the intro. That's probably because of the stubbed opcode 10.

comment:2 by fingolfin, 18 years ago

Note that I have three versions of Loom, and two of Indy 3 EGA. In one of the Loom version, and one of the Indy 3 EGA versions (the mac one), text is not centered but rather is moved to the left (by 160 pixel, as an estimate...), and some actor's don't properly appear. The other versions don't have that problem.

I haven't tried your patch yet, but it seems it might fix 2 of my 5 versions; but I wonder if it might break the other 3... if it does, we have to worry about how we can distinguish between these different versions :-/

comment:3 by fingolfin, 18 years ago

The subopcode 10 change is most probably wrong; rather, I think one of the other subopcodes has to be fixed

comment:4 by eriktorbjorn, 18 years ago

That thought did occur to me too. If so it may be related to the left/center confusion, because this is what it looked like when I hacked descumm3 to handle the hypothetical opcode 10:

[03EA] (14)
print(255,[Left(),Unk10(1024),Pos(100,48),Color(143),Text("Rise, son of Cygna.")]);

So it appears early, and right after the "left". I think.

comment:5 by eriktorbjorn, 18 years ago

Come to think about it, Color(143) seems rather odd for a 16-colour game. Though since 143 = 15 + 128, perhaps the eighth bit has a special meaning. Text shadowing, perhaps, like in

Or maybe all text is drawn shaded, and it's just not visible on a black background?

comment:6 by fingolfin, 18 years ago

I put the third change in CVS, the other two were "wrong" but nicely pointed me at the problematic spot, and the proper (I hope) solution is now in CVS.

comment:7 by fingolfin, 18 years ago

Owner: set to fingolfin
Status: newclosed

comment:8 by digitall, 2 years ago

Component: Engine: SCUMM
Game: Loom
Note: See TracTickets for help on using tickets.