#include #include typedef uint8_t u8; #define TILE_WIDTH 8 #define TILE_HEIGHT 8 #define TILE_SIZE (TILE_WIDTH * TILE_HEIGHT) typedef u8 tile_t[TILE_SIZE]; typedef tile_t * tile_list_t[/* unbounded */]; tile_t green_tile = { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, }; tile_t red_tile = { 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, }; tile_list_t tile_set = { &green_tile, &red_tile, NULL }; void print_tile_list(tile_list_t * ts) { int i = 0; while ((*ts)[i] != NULL) { printf("ts[%d] -> %p\n", i, (*ts)[i]); int x = 0, y = 0; for (y = 0; y < 8; ++y) { for (x = 0; x < 8; ++x) { printf("%d ", (*(*ts)[i])[y * TILE_WIDTH + x]); } printf("\n"); } ++i; } } int main(int argc, char * argv[]) { tile_list_t * tset = &tile_set; print_tile_list(tset); return 0; }