8x8 Tiles mapping for monsters of FF3us, written by Lord J, Feb. 2000 lord_j@hotmail.com, http://www.angelfire.com/pq/jumparound/index.html We will assume that you already have decoded your 8x8 pixels tiles at offset 0x297200 (3 and/or 4 colors bmps). These tiles forms a very long string of 8x8 pixels tiles. Lets experiment with the guard bitmap, wich tiles starts this string. We can approximate the size of this specific bitmap with a snapshot and any good bitmap editor. The resulting size is 32 pixels of width, and 48 pixels of length (or 4x6 tiles). We will represent a 8x8 pixels tile by this character: # One might expect the guard bitmap to be mapped like so: #### #### #### #### #### #### In fact, the tiles are mapped this way; to the right, the binary result of the 'mapping': ###----- ==> E0 ####---- ==> F0 ####---- ==> F0 ####---- ==> F0 -###---- ==> 70 ###----- ==> E0 -------- ==> 00 -------- ==> 00 `-----> a string of eight bytes Where a `-' is a blank tile, not picked in the tiles string. This allows reduction of tile use: empty tiles do not clog up the ROM. It is a primitive, but effective form of compression. So, instead of using a 4x6 tiles stencil, a standard 8x8 stencil is used, and the tile mapping is done by a seperate bank. The big bitmaps (bosses like Atma) uses 16x16 tiles stencil, we dispose of 48 different maps, following the 128 8x8 stencils (consult pointers meaning at the end). Each string will need 32 bytes instead of 8. Descr.: 2 Pointers Base: 12AA20 Length: 4 bytes or 2 words A824: Small stencils index (absolute: 0x12AA24) Reminder: small stencils are 8 bytes long, and the next pointer indicates that 128 of these stencils are used. AC24: Big stencils index (absolute: 0x12AA24 + (AC24 - A824)) Reminder: big stencils are 32 bytes long, Descr.: Tile mapping for monsters Base: 12AA24 Length: 8 for the first bank, then 16 for the second bank Number of strings: 128 for the first bank, 48 for the second Note: The first 2 words are pointers, relative to the maps (A824 & AC24 ???) Analysis on Guard bitmap (0x297200) Mapping: E0 F0 F0 F0 70 E0 00 00 (0x12AA24)