#define _TEXT_INTERNAL_
#include "commun.h"
#include <stdio.h>
#include <stdarg.h>

//Ecrit un caractère

//Write a character at a 8 pixels boundary x position
void IWRAM_CODE EcritCar(u32 x, u32 y, const u8 *motifs, u32 couleur)
{
	u32 *adr;
	u32 i, j, k, n, decal;
	adr = txt_adresse + y + HTILES(x &~7);

	decal = (x & 7) << 2;

	//Préparation
	for (j = 0; j < HAUTEUR; j++)
	{
		k = *motifs++;
		n = 0;
		for (i = 0; i < 8; i++)
		{
			if (k & 1)
				n |= couleur << (i << 2);
			k >>= 1;
		}

		*adr |= n << decal;
		*(adr + HLINES(1)) |= n >> (32 - decal);
		adr++;
	}
}

void IWRAM_CODE DrawText(u32 x, u32 y, const char *chne, u32 couleur)
{
	while (*chne)
	{
		if (x + txt_tailles[*chne - 32] > txt_largeur * 8)
			break;
		EcritCar(x, y, txt_texte + HAUTEUR * (*chne - 32), couleur);
		x += txt_tailles[*chne - 32];
		chne++;
	}
}

