RGB565
bit 15.....bit 0
RRRRRGGGGGGBBBBB
RGB555
bit15......bit 0
0RRRRRGGGGGBBBBB
Note that in the former format green gets one extra bit of precision and in the latter one bit is wasted. So when you lock a 16 bit surface, each 16 bit word in memory is arranged like this. You can use the DirectX blitting functions as normal. You don't need to worry at all about DirectX palettes. Color keying in 16 bits is also OK.