D 2018-08-18T05:59:01.035 L Picture\sfile\sformat P 8ba9026577d481ca8251f4b64a8dfda4453be1a7 U zzo38 W 2801 This document describes the format of the .xclass files. This file is a [Hamster archive]; all numbers are small-endian (except lump sizes). The possible lumps are mentioned below. Despite the page title, this file contains both pictures and sounds.

*.IMG

Replace the asterisk with the name of the picture (which is case-insensitive; this name is used in the [Class definition file|.class file] to identify the picture). This lump has a header, as follows: * The low nybble of the first byte of the header specifies how many picture variants there are (from 1 to 15). * After that is a number of bytes equal to the number of picture variants; each one is a number from 1 to 255 indicating the picture size (the width and height are both equal to this number, so the pictures are always square). * After that is a number of bytes equal to half of the number of picture variants, rounding down. The first picture uses the high nybble of the first byte of the header; other than that, in this section, they use one nybble, where the low nybbles come first. These specify the encoding format. Encoding formats: * 0 = Compressed; order by y asc, x asc * 1 = Compressed; order by y asc, x desc * 2 = Compressed; order by y desc, x asc * 3 = Compressed; order by y desc, x desc * 4 = Compressed; order by x asc, y asc * 5 = Compressed; order by x desc, y asc * 6 = Compressed; order by x asc, y desc * 7 = Compressed; order by x desc, y desc * 15 = Uncompressed; order by y asc, x asc After the header, each picture is encoded (with no terminators or separators), in order. If the uncompressed format is used, it is just a list of pixels (one byte per pixel; indexed colour). If the compressed formats are used, then it is the sequence of commands as follows: * 0-84: Homogeneous run. Follow by one byte (the pixel value), which is output 1-85 times. If another homogeneous run immediately follows and the same pixel value is specified, the ones after the first in the chain must multiply their length by 85 to determine how much to run. * 85-169: Heterogeneous run. Follow by 1-85 more bytes (pixel values) which are output. * 170-254: Copy-above run. Has no parameters; 1-85 pixels are copied from the previous row (or column, for formats 4-7); if there isn't anything to copy then a pixel value of zero (transparency) is assumed. If another copy-above run immediately follows, the ones after the first in the chain must multiply their length by 85 to determine how much to run. * 255: Invalid code. (Future versions of this program may define its meaning, but currently it is undefined.)

*.WAV

Replace the asterisk with the name of the sound. The data of this lump is a RIFF WAVE file. Z 3de57fba05fdfee1b569bc7a4e8378af