Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#3629 closed defect (fixed)

IHNM: end game text/caption error

Reported by: SF/thisisnotused Owned by: bluegr
Priority: normal Component: Engine: SAGA
Version: Keywords: script
Cc: Game: I Have No Mouth


I have attached a zip file containing a save game and a picture.

All is on the screenshot. (english version, end game, ...)

The action was: I used the access totem on the Chinese entity. The spoken text is OK (at least I think), but the written one is not.

The used scumm version: 0.12.0svn

The text may is: "That was foolish, human. You have betrayed our trust!

This one is not worthy of our protection. This human must be purged."

I hope I have given all needed material.

best regards

Ticket imported from: #1895205. Ticket imported from: bugs/3629.

Attachments (1) (117.6 KB ) - added by SF/thisisnotused 16 years ago.
save game and screenshot

Download all attachments as: .zip

Change History (9)

by SF/thisisnotused, 16 years ago

Attachment: added

save game and screenshot

comment:1 by bluegr, 16 years ago

This scene loads a large number of strings, and the text pointers related to examining the two entities point to the wrong memory location, thus this garbage text is shown. The culprit seems to be SagaEngine::loadStrings(), though I'm not sure yet

comment:2 by bluegr, 16 years ago

Update: the culprit is loadStrings() indeed. Here are the string offsets for the strings in this scene: (...) Offset: 65471 Offset: 65504 Offset: 18 <----- out of bounds Offset: 68 (...)

i.e. the last strings in this scene are allocated incorrectly. Quite interesting...

comment:3 by SF/thisisnotused, 16 years ago

I think the problem is that this section's texts are bigger than 65535 bytes (the max. unsigned word value (2^16)-1). therefore the offsets are: 0 => 65536, 1 => 65537 ... The 18 should be 65535+18!

comment:4 by SF/thisisnotused, 16 years ago

Sorry, I made a mistake! The 18 should be 65536+18!

comment:5 by bluegr, 16 years ago

Yes, that's a 16-bit integer. But this should *not* be happening, i.e. the corresponding entry in the game's data files is 16 bits long. Strange

comment:6 by SF/thisisnotused, 16 years ago

Maybe the makers didn't want to rewrite the text loader procedure(s) after the endgame's story was written... One must handle the overflow...

comment:7 by bluegr, 16 years ago

Fixed in the latest SVN version


comment:8 by bluegr, 16 years ago

Owner: set to bluegr
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.