#include #include #include #include #include #include "../res/tiles.h" #include "../res/map.h" #include"../res/sprites.h" #include"../res/sprite_metadata.h" #include "./flags.h" #include "./constants.h" #include "./sprite.h" #include "./vec.h" #define NO_SCREEN_SPRITES 6 void init_gfx() { // Load Background tiles and then map set_bkg_data(0, 23, tiles); set_bkg_tiles(0, 0, map.width, map.height, map.data); set_sprite_data(0, 26, sprites); // Turn the background map on to make it visible SHOW_BKG; SHOW_SPRITES; } void main(void) { init_gfx(); unsigned int i, jp, fc = 0; struct Sprites screen_sprites[NO_SCREEN_SPRITES]; memcpy(&(screen_sprites[0]), &(sprites_info[2]), sizeof(Sprite)); for (i = 1; i < NO_SCREEN_SPRITES; i++) memcpy(&(screen_sprites[i]), &(sprites_info[0]), sizeof(Sprite)); screen_sprites[0].has_joypad = 1; for (i = 0; i < NO_SCREEN_SPRITES; i++) { screen_sprites[i].bitmap_index_prev = -1; screen_sprites[i].gb_sprite_index = i; screen_sprites[i].pos.x = 72+(8*i); screen_sprites[i].pos.y = 36+(8*i); sprite_draw_to_screen(&(screen_sprites[i])); } // Loop forever while(1) { fc++; jp = joypad(); for (i = 0; i < NO_SCREEN_SPRITES; i++) { sprite_iter_frame(&(screen_sprites[i]), &map, screen_sprites[i].has_joypad ? jp : 0, &fc); } // Done processing, yield CPU and wait for start of next frame wait_vbl_done(); } }