SPR Spritesheet
SPR (Unit Sprite) files contain the bitmap data for a sprite. Sp2 are similar format used for extra images used by MON shp types.
Palette Data
The file starts with the palette data and contains 256 colors (512 bytes), 16 palettes of 16 colors each. Palette's use 2 bytes per color, 1 bit for alpha, followed by 5 bits per channel (B,G,R). The first 8 palettes are for the unit, the second 8 palettes are for the portrait.
OTHER.SPR is a special case and has 512 colors. 5 palettes each for chicken, frog, chest, and crystal, an all black palette between crystal and chests, and 11 mostly black palettes at the end that are normally unusable.
Pixel Data
Each set of 4 bits is the palette color index of the pixel. The spritesheet is 256 pixels wide and 488 pixels tall.
The lower half of unit spritesheets (starting at the arms for attacks) has compressed regions (see Decompress Attack spritesheet). This starts at file offset 0x9200 (row 288 of the image)
The compression algorithm is: 0 - some half byte - how many 0s there are
if halfbyte = 0, 1 digit in number of 0s
if halfbyte = 7, 2 digits in number of 0s
if halfbyte = 8, 3 digits in number of 0s
if halfbyte != [0,7,8], number of 0s = halfbyte
Example: 08100 is the hex string for 256 0s (128 bytes of 0)