62 lines
1.4 KiB
C
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();
|
|
}
|
|
}
|