From 6d7e29398964c6836206e93961580a79ead741f1 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 19 Apr 2021 19:30:09 +0200 Subject: Test sprites exported with my little tool --- src/main.c | 58 ++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/src/main.c b/src/main.c index e39551c..740dbbf 100644 --- a/src/main.c +++ b/src/main.c @@ -443,25 +443,25 @@ copy_font_to_tile_memory(Tile *tile) { } static int bouncing_animation[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 2, 3, 3, 3, 5, 5, 5, - 5, 5, 5, + 6, 6, 6, 7, 7, 7, 8, 8, 8, 7, 7, 7, - 5, 5, 5, + 6, 6, 6, 5, 5, 5, 3, 3, 3, + 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, }; typedef struct FontSprite { @@ -472,6 +472,21 @@ typedef struct FontSprite { u32 pal_bank; } FontSprite; + +static u32 test_tiles[][8] = { + {0x33322111, 0x33322111, 0x33322111, 0x33322111, 0x33322111, 0x33322111, 0x33322111, 0x33322111}, + {0x00044000, 0x00044000, 0x00044000, 0x44444444, 0x44444444, 0x00044000, 0x00044000, 0x00044000}, + {0x44400444, 0x44400444, 0x44400444, 0x00000000, 0x00000000, 0x44400444, 0x44400444, 0x44400444}, + {0x11122333, 0x11122333, 0x11122333, 0x11122333, 0x11122333, 0x11122333, 0x11122333, 0x11122333}, +}; + +static u16 test_palette[16] = { + 0x0000, 0x001f, 0x03e0, 0x7c00, + 0x7fff, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000 +}; + int main(void) { // Configure the display in mode 0 to show OBJs, where tile memory is // sequential. @@ -479,14 +494,10 @@ int main(void) { // Add colors to the sprite color palette. Tiles with color number 0 are // treated as transparent. - PAL_BUFFER_SPRITES[1] = COLOR_WHITE; - PAL_BUFFER_SPRITES[2] = COLOR_RED; - PAL_BUFFER_SPRITES[3] = COLOR_CYAN; - PAL_BUFFER_SPRITES[4] = COLOR_BLUE; - PAL_BUFFER_SPRITES[5] = COLOR_WHITE; - PAL_BUFFER_SPRITES[6] = COLOR_RED; - PAL_BUFFER_SPRITES[7] = COLOR_CYAN; - PAL_BUFFER_SPRITES[8] = COLOR_BLUE; + for (size_t i = 0; i < 16; ++i) { + PAL_BUFFER_SPRITES[i] = test_palette[i]; + PAL_BUFFER_SPRITES[i + 16] = COLOR_WHITE; + } // Initialize all attributes by disabling rendering. If we don't do this, // glitches may appear. @@ -502,19 +513,26 @@ int main(void) { // uppercase A letter will be at tile index of 512 + 65. copy_font_to_tile_memory(tile_mem); + // Test copying the exported tiles. + for (size_t i = 0; i < 4; ++i) { + for (size_t j = 0; j < 8; ++j) { + (tile_mem + i)->data[j] = test_tiles[i][j]; + } + } + // Initialize character sprites for all font chars. FontSprite font_sprites[256] = {0}; size_t x = 49; - size_t y = 0; + size_t y = 8; for (size_t i = 0; i < 256; ++i) { + if ((i % 16) == 0 && i != 0) { + y += 16; + x = 49; + } font_sprites[i].x = x; font_sprites[i].y = y; font_sprites[i].tile_index = initial_tile + i; font_sprites[i].animation_state = i % 56; - if ((i % 16) == 0) { - y += 16; - x = 49; - } x += 8; } @@ -523,7 +541,11 @@ int main(void) { for (size_t i = 0; i < n_chars; ++i) { OBJ_ATTR_0(i) = font_sprites[i].y; OBJ_ATTR_1(i) = font_sprites[i].x; - OBJ_ATTR_2(i) = font_sprites[i].tile_index; + if (i < 4) { + OBJ_ATTR_2(i) = font_sprites[i].tile_index; + } else { + OBJ_ATTR_2(i) = font_sprites[i].tile_index | (1 << 0xC); + } } // draw_logo(); -- cgit v1.2.1