controls help screen
[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
9 static int ctrlscr_start(void);
10 static void ctrlscr_stop(void);
11 static void ctrlscr_frame(void);
12 static void ctrlscr_vblank(void);
13
14 static struct screen ctrlscr = {
15         "controls",
16         ctrlscr_start,
17         ctrlscr_stop,
18         ctrlscr_frame,
19         ctrlscr_vblank
20 };
21
22 struct screen *init_controls_screen(void)
23 {
24         return &ctrlscr;
25 }
26
27 static void setup_palette(void)
28 {
29         int i;
30         unsigned char *cmap = gba_colors ? controls_gba_cmap : controls_cmap;
31
32         for(i=0; i<256; i++) {
33                 int r = cmap[i * 3];
34                 int g = cmap[i * 3 + 1];
35                 int b = cmap[i * 3 + 2];
36                 gba_bgpal[i] = RGB555(r, g, b);
37         }
38 }
39
40 static int ctrlscr_start(void)
41 {
42         gba_setmode(4, DISPCNT_BG2 | DISPCNT_OBJ);
43         dma_copy16(3, gba_vram_lfb0, controls_pixels, 240 * 160 / 2, 0);
44
45         setup_palette();
46         return 0;
47 }
48
49 static void ctrlscr_stop(void)
50 {
51         wait_vblank();
52 }
53
54 static void ctrlscr_frame(void)
55 {
56         update_keyb();
57
58         if(KEYPRESS(BN_START) || KEYPRESS(BN_A) || KEYPRESS(BN_B)) {
59                 change_screen(find_screen("menu"));
60                 return;
61         }
62
63         wait_vblank();
64 }
65
66 static void ctrlscr_vblank(void)
67 {
68 }