Note: LucasForums Archive Project
The content here was reconstructed by scraping the Wayback Machine in an effort to restore some of what was lost when LF went down. The LucasForums Archive Project claims no ownership over the content or assets that were archived on archive.org.

This project is meant for research purposes only.

Charset - help needed

Page: 1 of 1
 bgbennyboy
09-19-2004, 6:31 AM
#1
After messing with Antti's Character Set Viewer (http://www.lucasforums.com/showthread.php?s=&threadid=82789) I decided to knock up a quick version of my own. (http://quick.mixnmojo.com/charset.gif)

The specs as set out in various places are:


4 bytes Header
4 bytes BE Size
6 bytes Unknown
15 bytes Colour Map
1 byte Bits per pixel
1 byte Max char height?
1 byte No chars
1 byte Unknown

4 bytes * NoChars Character Offsets
if NoChars=0 then NoChars=256
Character Offsets are relative to the end of the Colour Map data (byte 29)

Individual char data:
1 byte Char width
1 byte Char height
1 byte X offset
1 byte Y offset
x bits Data bitstream


Thats all fine, but I dont know how to choose the correct colours for the character data. At 1bpp theres 2 possible colours, at 2bpp 4 and at 4bpp 16.

I can guess at colour values of course, but I'm unsure as to how the colour values are obtained or how they relate to the colour map. I've got a nasty suspicion that the colours are set in the game scripts and that they specify what colour values go into the colourmap but of course I dont really know.

If anyone could explain this to me, or work out the answer from the scummvm source it'd be much appreciated :)

Oh, I'm also unsure what bits map to which colour in the colourmap at 4bpp. I've looked at the ScummVM source for all this, but being ignorant of C++ I couldnt figure it out..
 Scummbuddy
09-19-2004, 11:36 AM
#2
you may be right about the color being controlled by script. MI2, when Lechuck comes in in Guybrush's dream, he's suspiciously wearing a blue coat, for no reason. Unless I missed something?
 Ender
09-19-2004, 6:43 PM
#3
Okay.
In the case of a 1BPP image (thru to SCUMM V4), the only colour used is the talkColour set by the script. Yes, this is script controlled.

In the case of 2BPP-8BPP fonts (SCUMM5+), the first indexed colour is the talkColour. The others are mapped somehow, I think into the font data itself.

map[...] = ??
map[1] = talkColor;

(do RLE loop and stuff...)
color = (bits >> (8 - bpp)) & 0xFF;
if (color) {
putPixel(map[color]);
}
(...)
 bgbennyboy
09-20-2004, 2:24 AM
#4
Cheers Endy, I'll have a go at that :)
Page: 1 of 1