if a tile's high byte is GREATER THAN 0x03 then that means it has changed its palette from the first one if a tile's high byte is GREATER THAN 0x40 then that means it is mirrored if high byte is any multiple of 4, then that means it uses the 100h bytes of junk at the beginning so it more than likely isn't a multiple of 4 because that crap isn't used (if it is it's stupid because it's ugly) all of this modification isn't done in the code (except adding 0x0100 to skip over the 2000h bytes of junk GFX) and is in the data itself decompressed data blocks can be either 1000h bytes or 2000h bytes, but a section is always 2000h bytes and the values read from each section of the data, which is packed into some 8000h bytes (subject to change if GFX blocks are varying sizes) but the important thing to remember is that a section is always 2000h bytes section 0 is always the first 2000h bytes of junk GFX the palettes are read from the palette set and only reaches to the 7th palette; palette sets are assigned in the area layout data examples of high byte values: 00 reads from section 0 (first 2000h bytes of junk GFX) using palette 0 01 reads from section 1 of compressed GFX using palette 0 02 reads from section 2 of compressed GFX using palette 0 03 reads from section 3 of compressed GFX using palette 0 04 reads from section 0 (first 2000h bytes of junk GFX) using palette 1 05 reads from section 1 of compressed GFX using palette 1 06 reads from section 2 of compressed GFX using palette 1 07 reads from section 3 of compressed GFX using palette 1 08 reads from section 0 (first 2000h bytes of junk GFX) using palette 2 09 reads from section 1 of compressed GFX using palette 2 0A reads from section 2 of compressed GFX using palette 2 0B reads from section 3 of compressed GFX using palette 2 since there are only 16 palettes in a set, it only goes up to 4 x 16 (4 * 10h) minus 1, which is 3F examples of high byte mirrored values: 41 reads from section 1 of compressed GFX using palette 0, mirrored 42 reads from section 1 of compressed GFX using palette 0, mirrored 43 reads from section 1 of compressed GFX using palette 0, mirrored 44 reads from section 1 of compressed GFX using palette 0, mirrored 45 reads from section 1 of compressed GFX using palette 1, mirrored 46 reads from section 1 of compressed GFX using palette 1, mirrored 47 reads from section 1 of compressed GFX using palette 1, mirrored 48 reads from section 1 of compressed GFX using palette 1, mirrored the low byte is simply the tile # in the tile section it is reading from; 8x8 tiles are 32(20h) bytes each examples of a 8x8 tile: 0100 reads 1st tile from section 1 of compressed GFX using palette 0 0101 reads 2nd tile from section 1 of compressed GFX using palette 0 0102 reads 3rd tile from section 1 of compressed GFX using palette 0 0103 reads 4th tile from section 1 of compressed GFX using palette 0 0200 reads 1st tile from section 2 of compressed GFX using palette 0 0201 reads 2nd tile from section 2 of compressed GFX using palette 0 0202 reads 3rd tile from section 2 of compressed GFX using palette 0 0203 reads 4th tile from section 2 of compressed GFX using palette 0 4104 reads 5th tile from section 1 of compressed GFX using palette 0, mirrored 4204 reads 5th tile from section 2 of compressed GFX using palette 0, mirrored 4505 reads 6th tile from section 1 of compressed GFX using palette 1, mirrored 4605 reads 6th tile from section 2 of compressed GFX using palette 1, mirrored HOW TO MODIFY A TILE, starting from a base 8x8 tile with NO modifications (mirroring, palette pointing, section pointing) example: step 1: start with base tile 0100 reads 1st tile from section 1 of compressed GFX using palette 1 step 2: change tile to tile number 42h 0142 step 3: change the section to section 3 (add difference between the desired section and the current section) 0342 step 4: change the palette to palette 7, (7 * 4) = 28 (1Ch) and add product to high byte 1F42 step 5: mirror it, add 40h to high byte 5F42 so now it reads tile 42h from section 3 of compressed GFX using palette 7, mirrored NOTE: it can only read from palette 0-7 I guess because the other 8 are used for other crap IN THE COMPRESSED TILESETS: the byte would look like 5E42 because the processor adds 0100 to skip over the 2000h bytes of junk GFX section EACH COMPRESSED DATA SET IS EXACTLY 8000h BYTES as seen in a ZST, divided into four sections of 2000h bytes each. Section 0 is the junk GFX section and isn't used in tiles. A compressed data set is a compilation of the GFX called from those five bytes (11 12 13 14 15) in their order. To work backwards: step 1: start with tile 0DC6 step 2: subtract 0x40 if it is greater than/equal to 40h 0DC6 (no modifications this time) step 3: divide high byte by four 03C6 remainder is 1, so it is from section 1 quotient is 0x03 so it uses palette 3 IN THE COMPRESSED TILESETS: the original byte would look like 0CC6 because of the whole junk GFX skipping/adding 0100 shindig