#include #include "common.h" #include "gba-buttons.c" #include "background-tiles.c" #include "sprites.h" #include "text.h" // // Main functions. // // TODO: Cleanup OBJ/OAM memory copying and access. // int main(void) { // Configure the display in mode 0 to show OBJs, where tile memory is // sequential. DISP_CTRL = DISP_ENABLE_SPRITES | DISP_MODE_0 | DISP_BG_0; // Initialize sprite button overlay. init_sprite_pal(0, COLOR_WHITE); init_sprites(0); init_button_sprites(); Color colors[16] = { COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, COLOR_BLUE, }; size_t n_iter = 10000; profile_start(); for (size_t i = 0; i < n_iter; ++i) { dma_copy(&PAL_BUFFER_SPRITES[0], colors, 16 * sizeof(Color), 3); } u32 dma_copy_perf = profile_stop(); profile_start(); for (size_t i = 0; i < n_iter; ++i) { memcpy(&PAL_BUFFER_SPRITES[0], colors, 16 * sizeof(Color)); } u32 memcpy_perf = profile_stop(); // Initialize text engine. txt_init(0, COLOR_RED, 0); txt_printf("N. cycles memcpy: %d\n", memcpy_perf); txt_printf("N. cycles dma_copy: %d\n", dma_copy_perf); int frame_counter = 0; while(true) { wait_vsync(); poll_keys(); frame_counter++; // update_button_sprites(); }; return 0; }