He estado diseñando mi propio dispositivo de juego portátil basado en un microcontrolador AVR y una pequeña pantalla OLED.
Comencé con una pantalla monocromática de 128x64 píxeles y puedo dibujarla cómodamente a más de 60 cuadros por segundo.
Recientemente lo cambié para usar un RGB OLED, 128x128 píxeles sin realmente pensar demasiado solo para encontrar que solo podía alcanzar aproximadamente 4 FPS. Después de pensar y refactorizar cuidadosamente, puedo obtener hasta 12 fps si no me importa mucho hacer otra cosa.
Mi pregunta es: ¿cómo logró un dispositivo como GBA (Game Boy Advance) una velocidad de cuadros de casi 60 fps? Pensé en tener un 'procesador de gráficos' separado, pero me di cuenta de que todavía estaría en un cuello de botella transfiriendo los datos de la pantalla a eso.
También me pregunté sobre el uso de la interfaz paralela de 8 bits vestigial que la mayoría de estas pantallas tienden a tener, lo que podría significar una aceleración de 8x, excepto que las MCU modernas no tienden a tener interfaces paralelas de hardware como lo hacen para la serie y los golpes de bits probablemente consumirán gran parte de la ganancia de velocidad.
¿Qué otras opciones existen?
Actualmente estoy usando un ATmega1284P conectado a un controlador OLED SSD1306 a través de USART-SPI. Esa es la versión monocromática.
La pantalla a color era una SSD1351, no conectada originalmente al hardware SPI. No estaba convencido de que haría una diferencia suficiente , es demasiado lento en general
Sé que puedo obtener MCU más rápidos, pero quiero saber qué otras opciones podría explorar. ¡El procesador GBA es mucho más lento que mi 1284!