pass the gdb init file explicitly where needed (gba debug rule)
[gbajam22] / src / player.c
index 1264857..5a39077 100644 (file)
@@ -1,7 +1,18 @@
+#include <string.h>
 #include "player.h"
+#include "level.h"
 #include "gbaregs.h"
 #include "xgl.h"
 
+void init_player(struct player *p, struct level *lvl)
+{
+       memset(p, 0, sizeof *p);
+       p->cx = lvl->orgx;
+       p->cy = lvl->orgy;
+       cell_to_pos(lvl, lvl->orgx, lvl->orgy, &p->x, &p->y);
+       p->cell = level_cell(lvl, lvl->orgx, lvl->orgy);
+}
+
 void player_input(struct player *p, uint16_t bnstate)
 {
        if(bnstate & KEY_UP) {
@@ -14,16 +25,16 @@ void player_input(struct player *p, uint16_t bnstate)
        }
        if(bnstate & KEY_LEFT) {
                p->theta += 0x800;
-               if(p->theta > X_2PI) p->theta -= X_2PI;
+               if(p->theta >= X_2PI) p->theta -= X_2PI;
        }
        if(bnstate & KEY_RIGHT) {
                p->theta -= 0x800;
-               if(p->theta < X_2PI) p->theta += X_2PI;
+               if(p->theta < 0) p->theta += X_2PI;
        }
        if(bnstate & KEY_A) {
-               p->y += 0x1000;
+               p->y += 0x2000;
        }
        if(bnstate & KEY_B) {
-               p->y -= 0x1000;
+               p->y -= 0x2000;
        }
 }