#include "zbuffer.h" #include #include #include #include #include /** size_uint32 * taille du zbuffer exprimée en uint32_t * utile pour l'effacement du zbuffer sur sh3 **/ static const int size_uint32 = FE_ZB_SIZE_X*FE_ZB_SIZE_X; /** size_char * taille du zbuffer exprimée en octets * sera utile pour le DMA Controller **/ static const int size_char = size_uint32*sizeof(uint32_t); /** address * addresse du zbuffer **/ static uint32_t* address=0; void FE_zbuffer_clear() { while (address==0) { address = malloc(size_octets); if (address==0) // cas de figure où il n'y a plus assez de RAM { dclear(C_WHITE); dtext(1, 1, "Not enough RAM...", C_BLACK, C_NONE); } } // TODO déterminer le type d'effacement // effacement fait par le CPU uint32_t indice = 0; for (indice = 0; indice < size_uint32; indice ++) address[indice] = 3000; // effacement fait par le DMA // TODO } bool FE_zbuffer_set_dist(int x, int y, int dist) { x %= FE_ZB_SIZE_X; y %= FE_ZB_SIZE_Y; const int indice = x * 64 + y; if (address[indice]>dist && dist>0) { address[indice] = dist; return true; } else return false; }