Opened 20 years ago

Closed 20 years ago

Last modified 5 years ago

#8289 closed patch

Support Russian Full Throttle

Reported by: sev- Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Full Throttle


This patch fixes two problems with Russian FT both related to subtitles during cut-scenes.

First one fixes font rendering. For some reason font format was violated and specified glyphs widths didn't match actual data which lead to a completely unreadable text.

Another fixes line-ending assumption when there were more than one message in one chunk. English version apparently has two CR-LF pairs as a message ending but Russian is not.

This lead to (a) all, say 20 messages were dumped as first only, which lead to core dump or MAX_WORD asset violation. (b) all other 19 messages were shown as "unknown string" with appropriate debug message to the console.

Ticket imported from: #823031. Ticket imported from: patches/394.

Attachments (1)

patch (9.3 KB ) - added by sev- 20 years ago.
Patch to support Russian Full Throttle

Download all attachments as: .zip

Change History (6)

by sev-, 20 years ago

Attachment: patch added

Patch to support Russian Full Throttle

comment:1 by fingolfin, 20 years ago

There was a small bug in the patch (it checked for \r\n\r\r instead of \r\n\r\n in smush/smush_player.cpp).

There also was a somewhat bigger bug in the patch: if (l == 134 && filename == "titlfnt.nut") where filename is a const char pointer. This may work on your compiler, if it ensures that string constants are unique, but it will not work in general. I used strcmp instead.

Otherwise it looked OK to me, I commited it. Thanks!

Anyway, before I close this, I'd like to know, by how much do the width values given in the fonts differ from the correct values? Like, can you give some examples of ASCII value/wrong width/ correct width?

comment:2 by fingolfin, 20 years ago

Owner: set to fingolfin

comment:3 by sev-, 20 years ago

Whoops, my fault on those bugs, especially \r one.

Russian glyphs mostly are 1 pixel narrower, but one is 2 pixels wider.

We've had big discussion and testing on this with Jamieson630 on IRC. I wrote a small unpacker which renders symbols in ascii-art and gives some data about it, so we tested it both in Russian and original English fonts.

There is a strange thing with those nut fonts. Usually unpacked data is bigger than required. In most cases it is bigger on number of bytes equivalent to glyph's width. For example, for 'TM' symbol (#15), it should be 121 (11x11) but returhned length is 132. For 'I' (#73) it is 72 instead of 66 (it's 6x11). But again, Russian part also violates this with some symbols, so this couldn't be used as is.

comment:4 by fingolfin, 20 years ago

Status: newclosed

comment:5 by digitall, 5 years ago

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