I've been designing my own handheld gaming device based around an AVR microcontroller and a small OLED display.
I started off with a monochrome display 128x64 pixels and can comfortably draw to it at over 60 frames per second.
I recently reworked it to use an RGB OLED, 128x128 pixels without really thinking too much only to find I could only achieve about 4 FPS. After some thought and careful refactoring I can get that up to ~12fps if I don't care too much about doing anything else!
My question is - how did a device like the GBA (Game Boy Advance) achieve a frame rate of nearly 60fps? I thought about having a separate 'graphics processor' but realised I would still be bottlenecked transferring the display data to that.
I also wondered about using the vestigial 8-bit parallel interface most of these screens tend to have, which might net me an 8x speed up, except that modern MCUs don't tend to have hardware parallel interfaces like they do for serial and bit-banging will likely eat up a lot of the speed gain.
What other options exist?
I'm currently using an ATmega1284P connected to an SSD1306 OLED controller via USART-SPI. That's the monochrome version.
The colour screen was an SSD1351, not originally connected to hardware SPI. I wasn't convinced it would make enough difference, it's just too slow overall
I know I can get faster MCUs, but I want to know what other options I could explore - the GBA processor is much slower than my 1284!