add missing tools/pngdump to the repo
[gbajam22] / src / ctrlscr.c
1 #include "game.h"
2 #include "data.h"
3 #include "gba.h"
4 #include "util.h"
5 #include "dma.h"
6 #include "input.h"
7 #include "debug.h"
8 #include "timer.h"
9
10 static int ctrlscr_start(void);
11 static void ctrlscr_stop(void);
12 static void ctrlscr_frame(void);
13 static void ctrlscr_vblank(void);
14
15 static struct screen ctrlscr = {
16         "controls",
17         ctrlscr_start,
18         ctrlscr_stop,
19         ctrlscr_frame,
20         ctrlscr_vblank
21 };
22
23 struct screen *init_controls_screen(void)
24 {
25         return &ctrlscr;
26 }
27
28 static void setup_palette(void)
29 {
30         int i;
31         unsigned char *cmap = gba_colors ? controls_gba_cmap : controls_cmap;
32
33         for(i=0; i<256; i++) {
34                 int r = cmap[i * 3];
35                 int g = cmap[i * 3 + 1];
36                 int b = cmap[i * 3 + 2];
37                 gba_bgpal[i] = RGB555(r, g, b);
38         }
39 }
40
41 static int ctrlscr_start(void)
42 {
43         gba_setmode(4, DISPCNT_BG2 | DISPCNT_OBJ);
44         dma_copy16(3, gba_vram_lfb0, controls_pixels, 240 * 160 / 2, 0);
45
46         setup_palette();
47         return 0;
48 }
49
50 static void ctrlscr_stop(void)
51 {
52         wait_vblank();
53 }
54
55 static void ctrlscr_frame(void)
56 {
57         update_keyb();
58
59         if(KEYPRESS(BN_START) || KEYPRESS(BN_A) || KEYPRESS(BN_B)) {
60                 change_screen(find_screen("menu"));
61                 delay(250);
62                 return;
63         }
64
65         wait_vblank();
66 }
67
68 static void ctrlscr_vblank(void)
69 {
70 }