main.c (1743B)
1#include <gbdk/platform.h> 2#include <stdint.h> 3 4#include <gbdk/incbin.h> 5 6INCBIN(logo_tiles_data, "res/gbdk2020.bin") // Variable name to use, Path to file 7INCBIN_EXTERN(logo_tiles_data) // Extern declarations for binary data 8 9INCBIN(logo_map, "res/gbdk2020_map.bin") 10INCBIN_EXTERN(logo_map) 11 12INCBIN(blank_tile_data, "res/blanktile.bin") 13INCBIN_EXTERN(blank_tile_data) 14 15 16#define TILE_BYTES 16 // 16 bytes per background tile 17 18 19// Since incbin just includes a binary file (the logo tiles) 20// a map needs to be created for them. For this example 21// the tiles are non-deduplciated, so a array of incrementing 22// values can be used. There are 84 tiles. 23#define LOGO_MAP_WIDTH 7u 24#define LOGO_MAP_HEIGHT 12u 25#define LOGO_MAP_X (20u - LOGO_MAP_WIDTH) / 2u // Center on X axis 26#define LOGO_MAP_Y (18u - LOGO_MAP_HEIGHT) / 2u // Center on Y axis 27 28void init_gfx() { 29 // Load a single clear background tile at location 0x80 and clear/fill the map with it 30 set_bkg_data(0x80u, 1u, blank_tile_data); // The first 0x80u here is the tile ID 31 fill_bkg_rect(0u, 0u, DEVICE_SCREEN_WIDTH, DEVICE_SCREEN_HEIGHT, 0x80u); // The last 0x80u here is the tile ID 32 33 // Load logo background tiles and map 34 // They start at 0u 35 set_bkg_data(0u, INCBIN_SIZE(logo_tiles_data) / TILE_BYTES, logo_tiles_data); 36 set_bkg_tiles(LOGO_MAP_X, LOGO_MAP_Y, 37 LOGO_MAP_WIDTH, LOGO_MAP_HEIGHT, 38 logo_map); 39 40 // Turn the background map on to make it visible 41 SHOW_BKG; 42} 43 44 45 46void main(void) 47{ 48 init_gfx(); 49 50 // Loop forever 51 while(1) { 52 53 // Game main loop processing goes here 54 55 // Done processing, yield CPU and wait for start of next frame 56 wait_vbl_done(); 57 } 58}