diff --git a/firmware/scroll/FuenteABin.c b/firmware/scroll/FuenteABin.c new file mode 100644 index 0000000..75d2a40 --- /dev/null +++ b/firmware/scroll/FuenteABin.c @@ -0,0 +1,57 @@ +#include "lodepng.c" +#include +#include +unsigned char *image, *pixel, output[0x300]; +unsigned error, i, j, k, l, celda, fondo, tinta, outpos= 0; +FILE *fo; + +int check(int value){ + return value==0 || value==192 || value==255; +} + +int tospec(int r, int g, int b){ + return g>>7<<2 | r>>7<<1 | b>>7; +} + +int main(int argc, char *argv[]){ + error= lodepng_decode32_file(&image, &i, &j, "fuente6x8.png"); + if( error ) + printf("\nError %u: %s\n", error, lodepng_error_text(error)), + exit(-1); + if( i!= 96 || j!= 48 ) + printf("\nError. Incorrect size, must be 96x48\n"), + exit(-1); + fo= fopen("fuente6x8.bin", "wb+"); + if( !fo ) + printf("\nCannot create output file\n"), + exit(-1); + for ( i= 0; i < 6; i++ ) + for ( j= 0; j < 16; j++ ){ + pixel= &image[((j|i<<7)*6)<<2]; + fondo= tinta= tospec(pixel[0], pixel[1], pixel[2]); + for ( k= 0; k < 8; k++ ){ + celda= 0; + for ( l= 0; l < 6; l++ ){ + pixel= &image[((j|i<<7)*6 + k*96 + l)<<2]; + if( !(check(pixel[0]) && check(pixel[1]) && check(pixel[2])) + || ((char)pixel[0]*-1 | (char)pixel[1]*-1 | (char)pixel[2]*-1)==65 ) + printf("\nThe pixel (%d, %d) has an incorrect color\n" , j*6+l, i*8+k), + exit(-1); + if( tinta != tospec(pixel[0], pixel[1], pixel[2]) ) + if( fondo != tospec(pixel[0], pixel[1], pixel[2]) ){ + if( tinta != fondo ) + printf("\nThe pixel (%d, %d) has a third color in the cell\n", j*6+l, i*8+k), + exit(-1); + tinta= tospec(pixel[0], pixel[1], pixel[2]); + } + celda<<= 1; + celda|= fondo != tospec(pixel[0], pixel[1], pixel[2]); + } + output[outpos++]= celda<<2; + } + } + fwrite(output, outpos, 1, fo); + fclose(fo); + printf("\nDone\n"); + free(image); +} diff --git a/firmware/scroll/lineas.asm b/firmware/scroll/lineas.asm new file mode 100644 index 0000000..8e162cc --- /dev/null +++ b/firmware/scroll/lineas.asm @@ -0,0 +1,221 @@ + macro linea src1, src2, src3, dst1, dst2, dst3 + ld sp, $4005+$800*src1+$100*src3+$20*src2 + pop hl + pop de + pop bc + pop af + exx + pop hl + pop de + pop bc + ld sp, $4013+$800*dst1+$100*dst3+$20*dst2 + push bc + push de + push hl + exx + push af + push bc + push de + push hl + ld sp, $4013+$800*src1+$100*src3+$20*src2 + pop hl + pop de + pop bc + pop af + ld sp, $401b+$800*dst1+$100*dst3+$20*dst2 + push af + push bc + push de + push hl + endm + linea 0, 0, 1, 0, 0, 0 + linea 0, 0, 2, 0, 0, 1 + linea 0, 0, 3, 0, 0, 2 + linea 0, 0, 4, 0, 0, 3 + linea 0, 0, 5, 0, 0, 4 + linea 0, 0, 6, 0, 0, 5 + linea 0, 0, 7, 0, 0, 6 + linea 0, 1, 0, 0, 0, 7 + linea 0, 1, 1, 0, 1, 0 + linea 0, 1, 2, 0, 1, 1 + linea 0, 1, 3, 0, 1, 2 + linea 0, 1, 4, 0, 1, 3 + linea 0, 1, 5, 0, 1, 4 + linea 0, 1, 6, 0, 1, 5 + linea 0, 1, 7, 0, 1, 6 + linea 0, 2, 0, 0, 1, 7 + linea 0, 2, 1, 0, 2, 0 + linea 0, 2, 2, 0, 2, 1 + linea 0, 2, 3, 0, 2, 2 + linea 0, 2, 4, 0, 2, 3 + linea 0, 2, 5, 0, 2, 4 + linea 0, 2, 6, 0, 2, 5 + linea 0, 2, 7, 0, 2, 6 + linea 0, 3, 0, 0, 2, 7 + linea 0, 3, 1, 0, 3, 0 + linea 0, 3, 2, 0, 3, 1 + linea 0, 3, 3, 0, 3, 2 + linea 0, 3, 4, 0, 3, 3 + linea 0, 3, 5, 0, 3, 4 + linea 0, 3, 6, 0, 3, 5 + linea 0, 3, 7, 0, 3, 6 + linea 0, 4, 0, 0, 3, 7 + linea 0, 4, 1, 0, 4, 0 + linea 0, 4, 2, 0, 4, 1 + linea 0, 4, 3, 0, 4, 2 + linea 0, 4, 4, 0, 4, 3 + linea 0, 4, 5, 0, 4, 4 + linea 0, 4, 6, 0, 4, 5 + linea 0, 4, 7, 0, 4, 6 + linea 0, 5, 0, 0, 4, 7 + linea 0, 5, 1, 0, 5, 0 + linea 0, 5, 2, 0, 5, 1 + linea 0, 5, 3, 0, 5, 2 + linea 0, 5, 4, 0, 5, 3 + linea 0, 5, 5, 0, 5, 4 + linea 0, 5, 6, 0, 5, 5 + linea 0, 5, 7, 0, 5, 6 + linea 0, 6, 0, 0, 5, 7 + linea 0, 6, 1, 0, 6, 0 + linea 0, 6, 2, 0, 6, 1 + linea 0, 6, 3, 0, 6, 2 + linea 0, 6, 4, 0, 6, 3 + linea 0, 6, 5, 0, 6, 4 + linea 0, 6, 6, 0, 6, 5 + linea 0, 6, 7, 0, 6, 6 + linea 0, 7, 0, 0, 6, 7 + linea 0, 7, 1, 0, 7, 0 + linea 0, 7, 2, 0, 7, 1 + linea 0, 7, 3, 0, 7, 2 + linea 0, 7, 4, 0, 7, 3 + linea 0, 7, 5, 0, 7, 4 + linea 0, 7, 6, 0, 7, 5 + linea 0, 7, 7, 0, 7, 6 + linea 1, 0, 0, 0, 7, 7 + linea 1, 0, 1, 1, 0, 0 + linea 1, 0, 2, 1, 0, 1 + linea 1, 0, 3, 1, 0, 2 + linea 1, 0, 4, 1, 0, 3 + linea 1, 0, 5, 1, 0, 4 + linea 1, 0, 6, 1, 0, 5 + linea 1, 0, 7, 1, 0, 6 + linea 1, 1, 0, 1, 0, 7 + linea 1, 1, 1, 1, 1, 0 + linea 1, 1, 2, 1, 1, 1 + linea 1, 1, 3, 1, 1, 2 + linea 1, 1, 4, 1, 1, 3 + linea 1, 1, 5, 1, 1, 4 + linea 1, 1, 6, 1, 1, 5 + linea 1, 1, 7, 1, 1, 6 + linea 1, 2, 0, 1, 1, 7 + linea 1, 2, 1, 1, 2, 0 + linea 1, 2, 2, 1, 2, 1 + linea 1, 2, 3, 1, 2, 2 + linea 1, 2, 4, 1, 2, 3 + linea 1, 2, 5, 1, 2, 4 + linea 1, 2, 6, 1, 2, 5 + linea 1, 2, 7, 1, 2, 6 + linea 1, 3, 0, 1, 2, 7 + linea 1, 3, 1, 1, 3, 0 + linea 1, 3, 2, 1, 3, 1 + linea 1, 3, 3, 1, 3, 2 + linea 1, 3, 4, 1, 3, 3 + linea 1, 3, 5, 1, 3, 4 + linea 1, 3, 6, 1, 3, 5 + linea 1, 3, 7, 1, 3, 6 + linea 1, 4, 0, 1, 3, 7 + linea 1, 4, 1, 1, 4, 0 + linea 1, 4, 2, 1, 4, 1 + linea 1, 4, 3, 1, 4, 2 + linea 1, 4, 4, 1, 4, 3 + linea 1, 4, 5, 1, 4, 4 + linea 1, 4, 6, 1, 4, 5 + linea 1, 4, 7, 1, 4, 6 + linea 1, 5, 0, 1, 4, 7 + linea 1, 5, 1, 1, 5, 0 + linea 1, 5, 2, 1, 5, 1 + linea 1, 5, 3, 1, 5, 2 + linea 1, 5, 4, 1, 5, 3 + linea 1, 5, 5, 1, 5, 4 + linea 1, 5, 6, 1, 5, 5 + linea 1, 5, 7, 1, 5, 6 + linea 1, 6, 0, 1, 5, 7 + linea 1, 6, 1, 1, 6, 0 + linea 1, 6, 2, 1, 6, 1 + linea 1, 6, 3, 1, 6, 2 + linea 1, 6, 4, 1, 6, 3 + linea 1, 6, 5, 1, 6, 4 + linea 1, 6, 6, 1, 6, 5 + linea 1, 6, 7, 1, 6, 6 + linea 1, 7, 0, 1, 6, 7 + linea 1, 7, 1, 1, 7, 0 + linea 1, 7, 2, 1, 7, 1 + linea 1, 7, 3, 1, 7, 2 + linea 1, 7, 4, 1, 7, 3 + linea 1, 7, 5, 1, 7, 4 + linea 1, 7, 6, 1, 7, 5 + linea 1, 7, 7, 1, 7, 6 + linea 2, 0, 0, 1, 7, 7 + linea 2, 0, 1, 2, 0, 0 + linea 2, 0, 2, 2, 0, 1 + linea 2, 0, 3, 2, 0, 2 + linea 2, 0, 4, 2, 0, 3 + linea 2, 0, 5, 2, 0, 4 + linea 2, 0, 6, 2, 0, 5 + linea 2, 0, 7, 2, 0, 6 + linea 2, 1, 0, 2, 0, 7 + linea 2, 1, 1, 2, 1, 0 + linea 2, 1, 2, 2, 1, 1 + linea 2, 1, 3, 2, 1, 2 + linea 2, 1, 4, 2, 1, 3 + linea 2, 1, 5, 2, 1, 4 + linea 2, 1, 6, 2, 1, 5 + linea 2, 1, 7, 2, 1, 6 + linea 2, 2, 0, 2, 1, 7 + linea 2, 2, 1, 2, 2, 0 + linea 2, 2, 2, 2, 2, 1 + linea 2, 2, 3, 2, 2, 2 + linea 2, 2, 4, 2, 2, 3 + linea 2, 2, 5, 2, 2, 4 + linea 2, 2, 6, 2, 2, 5 + linea 2, 2, 7, 2, 2, 6 + linea 2, 3, 0, 2, 2, 7 + linea 2, 3, 1, 2, 3, 0 + linea 2, 3, 2, 2, 3, 1 + linea 2, 3, 3, 2, 3, 2 + linea 2, 3, 4, 2, 3, 3 + linea 2, 3, 5, 2, 3, 4 + linea 2, 3, 6, 2, 3, 5 + linea 2, 3, 7, 2, 3, 6 + linea 2, 4, 0, 2, 3, 7 + linea 2, 4, 1, 2, 4, 0 + linea 2, 4, 2, 2, 4, 1 + linea 2, 4, 3, 2, 4, 2 + linea 2, 4, 4, 2, 4, 3 + linea 2, 4, 5, 2, 4, 4 + linea 2, 4, 6, 2, 4, 5 + linea 2, 4, 7, 2, 4, 6 + linea 2, 5, 0, 2, 4, 7 + linea 2, 5, 1, 2, 5, 0 + linea 2, 5, 2, 2, 5, 1 + linea 2, 5, 3, 2, 5, 2 + linea 2, 5, 4, 2, 5, 3 + linea 2, 5, 5, 2, 5, 4 + linea 2, 5, 6, 2, 5, 5 + linea 2, 5, 7, 2, 5, 6 + linea 2, 6, 0, 2, 5, 7 + linea 2, 6, 1, 2, 6, 0 + linea 2, 6, 2, 2, 6, 1 + linea 2, 6, 3, 2, 6, 2 + linea 2, 6, 4, 2, 6, 3 + linea 2, 6, 5, 2, 6, 4 + linea 2, 6, 6, 2, 6, 5 + linea 2, 6, 7, 2, 6, 6 + linea 2, 7, 0, 2, 6, 7 + linea 2, 7, 1, 2, 7, 0 + linea 2, 7, 2, 2, 7, 1 + linea 2, 7, 3, 2, 7, 2 + linea 2, 7, 4, 2, 7, 3 + linea 2, 7, 5, 2, 7, 4 + linea 2, 7, 6, 2, 7, 5 + linea 2, 7, 7, 2, 7, 6