Zool

From ModdingWiki
Jump to navigation Jump to search
Zool
Zool.png
There is no image of a modified version of this game — upload one!
Levels?X mark.svg Not editable
Tiles?X mark.svg Not editable
Sprites?X mark.svg Not editable
Fullscreen?X mark.svg Not editable
Sound?X mark.svg Not editable
Music?X mark.svg Not editable
Text?X mark.svg Not editable
Story/cutscenes?X mark.svg Not editable
UI/menus?X mark.svg Not editable
Demos?Unknown

Zool is a Chupa-Chups sponsored platform game.

Tools

The following tools are able to work with this game.

Name PlatformGroup/archives Levels Graphics Music Sounds Text Saves .exe patch Notes
Camoto Linux/WindowsEditNoNoNoNoNoNoNo

File formats

The following file formats are used by this game.

Filename Format Details
zool.dat DAT Format (Zool) Archive containing game data
settings Zool Configuration Format Key mapping, high scores, etc.

Notice that in the full version the game data is in zool.dat, but in the two demo versions the game data is uncompressed in individual files.

Preliminary info

Currently this is about the Amiga CD32 files, it is put here as a reference for attempts on deciphering the PC version.

On the CD32 version of the game, all files are crunched using the FUNGUS cruncher; use xfdmaster to uncrunch them.

Use UAE XFD wrapper (beta) to decrunch files from command line.

Formats

Filename Description
*.CHM Character map

CHM

Data type Description
UINT32BE iHeights Offset to image heights
UINT32BE iWidths Offset to image widths (0 = 16 px, 1 = 32 px)
UINT32BE iUnknowns Offset to image unknowns (seems to be tile orientation)
UINT32BE iOffsets Offset to image pixels (4-bit graphic planar, see Raw_EGA_data)
Above infos count = iWidths - iHeights
Characters data ...

Some of the files are mal-formed, or not even that format, though.

CHM palette

Their palette comes from an uncompressed WinUAE memory dump taken at the right level, offset 1264, 64 colors in UINT16BE format, 12-bit RGB; each channel nibble is duplicated (OR-ed with itself with a 4 bits left-shifted version).

Pseudo C# example:

        public static IEnumerable<byte[]> FromStream(Stream stream, long position, int colors)
        {
            var reader = new BinaryReader(stream);
            reader.BaseStream.Position = position;
            var bytes = new byte[colors][];
            for (int j = 0; j < colors; j++)
            {
                // 12-bit color : 0RGB
                ushort u = reader.ReadUInt16();
                ushort color = u.ToBigEndian();
                int r = (color & 0x0F00) >> 8;
                int g = (color & 0x00F0) >> 4;
                int b = (color & 0x000F) >> 0;
                
                // Each channel byte is formed by duplicating the nibble
                var r1 = (byte)(r | (r << 4));
                var g1 = (byte)(g | (g << 4));
                var b1 = (byte)(b | (b << 4));
                
                bytes[j] = new[] { r1, g1, b1 };
            }
            return bytes;
        }

Credits

Amiga stuff by Aybe.