62 lines
1.4 KiB
C

#include <gb/gb.h>
#include <gb/drawing.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#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();
}
}