typo slygamer? MESGDSTSTRIDE should be 640 for 16bit.
Fishybawb: if you're using 8-bit colours you'll need to use FRAC8 inplace of FRAC16
#define FRAC8(x) (((x)&0x3)<

)
And if you're not blitting from the very left pixel of the src bitmap you'll need a FRAC?(src_x_offset) ORd into MESGSRCCTRL.
They're needed as the blitter always reads/writes 32bits
/*
* Blitter registers
*/
#define MESGDSTCTRL 0x0000>>2
#define MESG_DSTENB (1<<6)
#define MESG_BSTBPP 0x60
#define MESG_DSTBPP_8 (0<<5)
#define MESG_DSTBPP_16 (1<<5)
#define MESGDSTADDR 0x0004>>2
#define MESGDSTSTRIDE 0x0008>>2
#define MESGSRCCTRL 0x000c>>2
#define MESG_INVIDEO (1<<8)
#define MESG_SRCENB (1<<7)
#define MESG_SRCBPP 0x60
#define MESG_SRCBPP_8 (0<<5)
#define MESG_SRCBPP_16 (1<<5)
#define MESG_SRCBPP_1 (1<<6)
#define MESGSRCADDR 0x0010>>2
#define MESGSRCSTRIDE 0x0014>>2
#define MESGSRCFORCOLOR 0x0018>>2
#define MESGSRCBACKCOLOR 0x001c>>2
#define MESGPATCTRL 0x0020>>2
#define MESG_PATMONO (1<<6)
#define MESG_PATENB (1<<5)
#define MESG_PATBPP 0x18
#define MESG_PATBPP_8 (0<

)
#define MESG_PATBPP_16 (1<

)
#define MESG_PATBPP_1 (1<<4)
#define MESG_YOFFSET 0x07
#define MESGFORCOLOR 0x0024>>2
#define MESGBACKCOLOR 0x0028>>2
#define MESGSIZE 0x002c>>2
#define MESG_HEIGHT 16
#define MESG_WIDTH 0
#define MESGCTRL 0x0030>>2
#define MESG_TRANSPCOLOR 16
#define MESG_TRANSPEN (1<<11)
#define MESG_FFCLR (1<<10)
#define MESG_YDIR (1<<9)
#define MESG_YDIR_NEG (0<<9)
#define MESG_YDIR_POS (1<<9)
#define MESG_XDIR (1<<8)
#define MESG_XDIR_NEG (0<<8)
#define MESG_XDIR_POS (1<<8)
#define MESG_ROP 0xff
#define MESGSTATUS 0x0034>>2
#define MESG_BUSY (1<<0)
#define MESGFIFOSTATUS 0x0038>>2
#define MESG_FULL (1<

1)
#define MESG_REMAIN 0x1f
#define MESGFIFO 0x003c>>2
#define MESGPAT 0x0080>>2
/*
* Basic ROPs
*/
#define MESG_ROP_DSTCOPY 0xAA
#define MESG_ROP_SRCCOPY 0xCC
#define MESG_ROP_PAT 0xF0