2 bit = 4 colors
4 bit = 16 colors
8 bit = 256 colors
The function drawBitmap() draws through a buffer with those color depth/resolution restrictions (with a free palette) while directBitmap() renders directly to the screen without a buffer.
The LCD panel does not have any “graphics modes” by itself. The native resolution is 176x220-16BPP. All the modes are converted from the mapped graphics buffer to the display RAM on refresh time. The code is here:
Look for the “lcdrefreshmode****” series for every graphics mode.
I think the best would be to write hand optimized functions to copy/scale up an image from the graphics buffer to display RAM.
There are tricks like windowed write with auto increment we could use to draw sprites directly on the screen.
I’m planning to buy a matching LPC board with an ST7775R LCD controller (or an Orise OTM2201A) and start coding before Pokittos will be available. The emulator can’t do HW operations.