#include "camera.h" #include "conf.h" #include "input.h" #include "level.h" #include "player.h" #include "vec.h" #include #include #include extern struct LevelBin lvl_test; static void update(void); static void draw(void); static int callback(volatile int *); int main(void) { int timer; int frameskip = 1; volatile int has_ticked = 0; timer = timer_configure(TIMER_ANY, 1000000 / TARGET_FPS, GINT_CALL(callback, &has_ticked)); timer_start(timer); input_init(); level_load(&lvl_test); player_init(level_find(TILE_VOID)); camera_init(player_pos()); while (!input_pressed(K_EXIT)) { int i; for (i = 0; i < frameskip; i++) { if (has_ticked > frameskip) { frameskip = has_ticked; } while (!has_ticked) sleep(); while (has_ticked) has_ticked = 0; update(); } draw(); } timer_stop(timer); level_free(); return 1; } static void update(void) { input_update(); player_update(); camera_update(); } static void draw(void) { dclear(C_BLACK); level_draw(); player_draw(); dupdate(); } static int callback(volatile int *arg) { *arg += 1; return 0; }