Opened 22 years ago

Closed 22 years ago

Last modified 5 years ago

#72 closed defect (fixed)

DOTT: dialogue outline colour bug

Reported by: zeldin Owned by: SF/ender
Priority: normal Component: Engine: SCUMM
Version: 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, 22 years ago

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

comment:2 by SF/ender, 22 years ago

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

comment:3 by zeldin, 22 years ago

Status: closednew

comment:4 by zeldin, 22 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, 22 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, 22 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, 22 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, 22 years ago

Resolution: worksformefixed
Status: newclosed

comment:9 by zeldin, 22 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, 5 years ago

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