Te recomiendo que los botones rectangulares, los gestiones con los widgets de la librería; así podrás disponer de un mayor número de imágenes en los assets.
Al usar la librería gameduino 2, debes olvidarte de programar de la forma tradicional que todo mundo usa en sus arduinos.
El procesador de la pantalla puede mantener tasas de refresco de 60 Hz, de forma nativa y contínua, cosa que obliga a usar la pantalla de otra forma. Este comportamiento es bastante raro en arduino y tiene muchas ventajas, aún en placas pequeñas como el nano, pro, mini, UNO o STM32F103C8, que cuentan recursos limitados tanto en frecuencia en el MCU, como en RAM.
El proceso general incluye los siguientes aspectos:
Debes separar tu proyecto en pestañas: esto lo puedes hacer en el IDE de arduino, siguiendo estas imágenes:



En cada pestaña puedes colocar elementos del menú y funciones generales.
Elementos de menú en bucle independiente: cada sub-menú, debes enfocarlo para que tenga un bucle infinito, que no dependa del bucle del menú principal. Así, no es necesario que uses el
void loop.
Esto lo consigues con la instrucción
while o alguna otra combinación que genere un bucle infinito. La estructura general es:
void Menu5()
{
//Instrucciones que solo se ejecutan una vez
while(1)
{
//Instrucciones que se ejecutan en bucle independiente
}
}
El menú principal lo llamas dentro del setup.PD: lo dejo aquí por el momento, ando liado con el trabajo, en cuanto regrese seguimos con el instructivo.
Estoy usando una pantalla FT813 en una placa STM32F407ZGT6, por eso verás algunas instrucciones un tanto extrañas. Sin embargo uso de la librería gameduino 2 es el mismo para tu pantalla, con las reservas de memoria del procesador y de dimensiones.