summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c44
1 files changed, 38 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index d78dbe0..d7e54d8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -482,6 +482,16 @@ typedef struct ButtonSprite {
482 u32 pal_bank; 482 u32 pal_bank;
483} ButtonSprite; 483} ButtonSprite;
484 484
485void
486load_sprite_data(Tile *tile_ptr, u32 *sprite_data, size_t n_tiles) {
487 for (size_t i = 0; i < n_tiles; ++i) {
488 for (size_t j = 0; j < 8; ++j) {
489 tile_ptr->data[j] = *sprite_data++;
490 }
491 tile_ptr++;
492 }
493}
494
485int main(void) { 495int main(void) {
486 // Configure the display in mode 0 to show OBJs, where tile memory is 496 // Configure the display in mode 0 to show OBJs, where tile memory is
487 // sequential. 497 // sequential.
@@ -503,11 +513,33 @@ int main(void) {
503 Tile *tile_mem = &TILE_MEM[4][initial_tile]; 513 Tile *tile_mem = &TILE_MEM[4][initial_tile];
504 514
505 // Test copying the exported tiles. 515 // Test copying the exported tiles.
506 for (size_t i = 0; i < 224; ++i) { 516 profile_start();
507 for (size_t j = 0; j < 8; ++j) { 517 load_sprite_data(tile_mem, &gba_btn_b_data, 112);
508 (tile_mem + i)->data[j] = gba_buttons_tiles[i][j]; 518 tile_mem += 112;
509 } 519 load_sprite_data(tile_mem, &gba_btn_a_data, 112);
510 } 520 tile_mem += 112;
521 u32 perf_a_clk = profile_stop();
522 //
523 profile_start();
524 memcpy(tile_mem, &gba_btn_b_data, sizeof(gba_btn_b_data));
525 tile_mem += 112;
526 memcpy(tile_mem, &gba_btn_a_data, sizeof(gba_btn_a_data));
527 tile_mem += 112;
528 u32 perf_b_clk = profile_stop();
529
530 char perf_a[240] = {0};
531 char perf_b[240] = {0};
532 sprintf(perf_a, "A: %d", perf_a_clk);
533 sprintf(perf_b, "B: %d", perf_b_clk);
534
535 put_text(0, 0, COLOR_WHITE, perf_a);
536 put_text(0, 16, COLOR_WHITE, perf_b);
537
538 char msg[240] = {0};
539 sprintf(msg, "size[a]: %d", sizeof(gba_btn_a_data) / 8 / sizeof(u32));
540 put_text(0, 32, COLOR_RED, msg);
541 sprintf(msg, "size[b]: %d", sizeof(gba_btn_b_data) / 8 / sizeof(u32));
542 put_text(0, 32 + 16, COLOR_RED, msg);
511 543
512 // Initialize the A/B button sprites. 544 // Initialize the A/B button sprites.
513 int buttons_x = SCREEN_WIDTH - 64 - 10; 545 int buttons_x = SCREEN_WIDTH - 64 - 10;
@@ -528,7 +560,7 @@ int main(void) {
528 .y = buttons_y - 16, 560 .y = buttons_y - 16,
529 .frame = 0, 561 .frame = 0,
530 .n_frames = 6, 562 .n_frames = 6,
531 .tile_index = initial_tile + 16 * 7, 563 .tile_index = initial_tile + 112,
532 .pal_bank = 0, 564 .pal_bank = 0,
533 }; 565 };
534 OBJ_ATTR_0(1) = btn_a.y; 566 OBJ_ATTR_0(1) = btn_a.y;