Opened 18 years ago

Closed 18 years ago

Last modified 12 months ago

#72 closed defect (fixed)

DOTT: dialogue outline colour bug

Reported by: zeldin Owned by: SF/ender
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Day of the Tentacle

Description

In Day of the Tentacle, if you ask Nurse Edna
"What's wrong with sleepwalking?"
then afterwards the outline colour of all
dialogue is wrong (instead of black it becomes
another colour, different in each room).

Ticket imported from: #519646. Ticket imported from: bugs/72.

Change History (10)

comment:1 by SF/ender, 18 years ago

Can't replicate this bug. Closing report - make sure your
using a build from the newest CVS.

comment:2 by SF/ender, 18 years ago

Owner: set to SF/ender
Resolution: worksforme
Status: newclosed

comment:3 by zeldin, 18 years ago

Status: closednew

comment:4 by zeldin, 18 years ago

Yes, I'm building from newset CVS, and the bug still exists.
Dunno, maybe my datafiles are botched somehow? Here are
the md5 checksums of the files I use (floppy version):

MD5 (MONSTER.SOU) = ec46c029ec58596485b221dac0c55d7a
MD5 (TENTACLE.000) = acad97ab1c6fc2a5b2d98abf6db4a190
MD5 (TENTACLE.001) = 51c4a97f3479bb49855bf1795269d767
MD5 (TENTACLE.002) = 645033736055b983fcb82289b28cecc4
MD5 (TENTACLE.EXE) = ad3bb485e0a74e0e5117ea6e16eae765

Or it might be that the bug only exists in the Dreamcast
version, although I frankly don't see how, as the dialogue
graphics is generated entirely by the platform-independant
stuff...

I'll try to dig a little deeper into it later tonight.

comment:5 by zeldin, 18 years ago

Looking a little closer, the reason that the colours get screwed
up is that _charsetData[2] gets overwritten by the string
"bination since he works it so fast", which is the last part
of Edna's line. Looks like there is a buffer overrun somewhere...

comment:6 by zeldin, 18 years ago

Oh yes. Edna's entire line is:

Ordinarily nothing, but when Fred sleepwalks, he remembers the combination to the safe.I'd find him in the office, opening it, screaming like a cat in the oven, and slamming it again^^something about what's in there really scares him.Unfortunately, I was never able to catch the combination since he works it so fast.

That's 320 characters. This string gets passed to
addMessageToStack(), which copies it into charset._buffer,
which is 256 characters big.

When will people learn not to allocate buffers of static size
for things they can't control the size of...

comment:7 by SF/ender, 18 years ago

Not suprising, I'm trying to track down another similar
overrun for Indy3.

I was using the CD talkie version, which must have shorter
dialouge or something - I never noticed the problem there.

I'll just up the buffer in scumm.h, I see you've already
added an assert.

comment:8 by zeldin, 18 years ago

Resolution: worksformefixed
Status: newclosed

comment:9 by zeldin, 18 years ago

Well, works well enough for now. Until some game wants
to do a talk that's 520 characters long. :-)

comment:10 by digitall, 12 months ago

Component: Engine: SCUMM
Game: Day of the Tentacle
Note: See TracTickets for help on using tickets.