Librería gameduino 2 modificada para pantallas FT81X

Es totalmente impresionante esta nueva forma de exprimir la RAM de las FT8xx. Y decirte que globalmente la flash del MCU no se "infla" es decir ni espacio, ni variables, todo queda en la microSD. digamos que es otra forma de "carga" de imágenes desde la microSD, sin usar el cmd_loadimage()

He usado no obstante la técnica de los sprites donde un fichero, por ejemplo mis logotipos del Radio, son de 120x120 pixels y van 10 osea 120x1200 pixels por 3 y sin problemas. Convertidos en ARGB4, una máxima calidad y eso que estuve meses atrás de como convertir todo el sistema en un solo mega de RAM, ZAS !!! Adiós !!!

Solo puedo decirte amigo mio TFTLCDCyg, cuando vi que funcionaba, hasta unas lagrimas salieron de mis ojos y posiblemente ha sido la alegría mas grande que estas "caprichosas y cabronas" de pantallas me han dado.

Hace dos semanas recibí mis flamantes 2 FT810 y 1 FT811 de HotMCU, estas van a tener una buena vida y por que no decir usar la misma técnica en FT80x? con 256K de RAM se hacen muchas cosas ... tu bien lo sabes ... :slight_smile:

Otra cosa que he investigado una vez incluido el fichero en el inicio de la hoja por ejemplo;

#include "logos.h"

En este mismo se puede incluir todos los .h que usaremos de "todas" las pantallas. Ejemplo;

#define LOAD_ASSETS_3()  GD.safeload("fontad7.gd2");
#define FONTAD7_HANDLE 0
#define FONTAD7_WIDTH 22
#define FONTAD7_HEIGHT 32
#define FONTAD7_CELLS 96
// #define ASSETS_END 33940UL
static const shape_t FONTAD7_SHAPE = {0, 22, 32, 0};


#define LOAD_ASSETS_6()  GD.safeload("radiofm.gd2");
#define RADIOFM_HANDLE 0
#define RADIOFM_WIDTH 100
#define RADIOFM_HEIGHT 200
#define RADIOFM_CELLS 1
// #define ASSETS_END 40000UL
static const shape_t RADIOFM_SHAPE = {0, 100, 200, 0};

#define LOAD_ASSETS_1()  GD.safeload("master.gd2");
#define MASTER_HANDLE 0
#define MASTER_WIDTH 128
#define MASTER_HEIGHT 1280
#define MASTER_CELLS 1
// #define ASSETS_END 327680UL
static const shape_t MASTER_SHAPE = {0, 128, 1280, 0};

#define LOAD_ASSETS_2()  GD.safeload("radioa.gd2");
#define RADIOA_HANDLE 0
#define RADIOA_WIDTH 120
#define RADIOA_HEIGHT 960
#define RADIOA_CELLS 1
#define RADIOB_HANDLE 1
#define RADIOB_WIDTH 120
#define RADIOB_HEIGHT 960
#define RADIOB_CELLS 1
#define RADIOC_HANDLE 2
#define RADIOC_WIDTH 120
#define RADIOC_HEIGHT 960
#define RADIOC_CELLS 1
#define LEDS_HANDLE 3
#define LEDS_WIDTH 32
#define LEDS_HEIGHT 64
#define LEDS_CELLS 1
#define SPEAKER_HANDLE 4
#define SPEAKER_WIDTH 64
#define SPEAKER_HEIGHT 192
#define SPEAKER_CELLS 1
// #define ASSETS_END 707584UL
static const shape_t RADIOA_SHAPE = {0, 120, 960, 0};
static const shape_t RADIOB_SHAPE = {1, 120, 960, 0};
static const shape_t RADIOC_SHAPE = {2, 120, 960, 0};
static const shape_t LEDS_SHAPE = {3, 32, 64, 0};
static const shape_t SPEAKER_SHAPE = {4, 64, 192, 0};

y hay que tener cuidado en los desmarcados;

// #define ASSETS_END 33940UL

o eliminar o desmarcar, porque lo que hace la instrucción es definir donde acaba de escribir en RAM. Al desmarcar o borrar la linea significa que no hay fin de escritura. Esto es muy importante.