If you want to plot a single pixel in mode3 you have to read back the
whole halfword from VRAM, mask it, and write it back.
The fastest routine i could come up with is (gcc assembler, plots colour 1):
r0 is the pointer to the byte for this pixel, colour in r2.
ldrh r1, [r0]
tst r0, #1
andEQ r1, r1, #0xFF00
addEQ r1, r1, r2
andNE r1, r1, #0x00FF
addNE r1, r1, r2, lsl #8
strh r1, [r0]
I'm sure this is suboptimal. Does anyone have a faster method?
/David