bookmark_borderPalettes in ScummC

One thing which I have been meaning to incorporate into ScummC for quite a while now is better palette manipulation tools.

It seems that sometime after the turn of the century, the art of making an image editor with good palette manipulation seems to have been lost. This is very unfortunate, as it makes it VERY hard to make graphics for scummc.

So I improved scummc in two ways…

The palcat tool is now more useful

Have tons of non-indexed graphics? Well now you can tell palcat to combine and quantise all the colours in your images, so you have a single common palette.

palcat -o out -col 32 costume1_*.bmp costume2_*.bmp

Quite commonly in scumm games, you’ll notice the room palettes will follow the same general schema:

OFFS SIZE DESC
0 16 System Colors
16 X Room Colors
16+X Y Costume Colors

To reproduce with palcat, simply do:

palcat -o out sys.bmp room.bmp costumes.bmp

(where costumes.bmp contains your combined costume palette(s))

The costume compiler helps you

In scumm, costumes have a palette which indexes into the current room palette. Before you had to specify this manually, like so:

palette([0-32]);

Now you can pass in your combined room palette instead, like so:

palette("out_blank_room.bmp");

Which will match up colors in out_blank_room.bmp with your costume bitmap.

If you have costumes which will be re-used across rooms, I suggest you make a blank room bitmap so it won’t accidentally match colors in your room when you don’t want it to.

palcat -o out sys.bmp blank_room.bmp actors.bmp

I’ve incorporated the costume palette trick in the examples on my scummc fork. Feel free to check it out on github!