6a49bf5a7c5ae628cf855766c74c2f5f1fb46bca
[libpicofe.git] / common / common.h
1 // platform specific things for common menu code
2
3 #ifdef __GP2X__
4 #include "../gp2x/gp2x.h"
5
6 #define PBTN_UP    GP2X_UP
7 #define PBTN_DOWN  GP2X_DOWN
8 #define PBTN_LEFT  GP2X_LEFT
9 #define PBTN_RIGHT GP2X_RIGHT
10
11 #define PBTN_NORTH GP2X_Y
12 #define PBTN_SOUTH GP2X_X
13 #define PBTN_WEST  GP2X_A
14 #define PBTN_EAST  GP2X_B
15 #define PBTN_L     GP2X_L
16 #define PBTN_R     GP2X_R
17
18 int wait_for_input(int interesting);
19 void gp2x_pd_clone_buffer2(void);
20 void menu_darken_bg(void *dst, int pixels, int darker);
21 void menu_flip(void);
22
23 #define SCREEN_WIDTH  320
24 #define SCREEN_HEIGHT 240
25 #define SCREEN_BUFFER gp2x_screen
26
27 #define read_buttons(which) \
28         wait_for_input(which)
29 #define read_buttons_async(which) \
30         (gp2x_joystick_read(0) & (which))
31 #define menu_draw_begin() \
32         gp2x_pd_clone_buffer2()
33 #define clear_screen() \
34         memset(gp2x_screen, 0, 320*240*2)
35 #define darken_screen() \
36         menu_darken_bg(gp2x_screen, 320*240, 0)
37 #define menu_draw_end() \
38         menu_flip()
39
40 // ------------------------------------
41
42 #elif defined(__GIZ__)
43
44 #include "../gizmondo/giz.h"
45
46 #define PBTN_NORTH PBTN_STOP
47 #define PBTN_SOUTH PBTN_PLAY
48 #define PBTN_WEST  PBTN_REW
49 #define PBTN_EAST  PBTN_FWD
50
51 unsigned long wait_for_input(unsigned int interesting);
52 void menu_draw_begin(int use_bgbuff);
53 void menu_darken_bg(void *dst, const void *src, int pixels, int darker);
54 void menu_draw_end(void);
55
56 #define SCREEN_WIDTH  321
57 #define SCREEN_HEIGHT 240
58 #define SCREEN_BUFFER ((giz_screen != NULL) ? giz_screen : menu_screen)
59 extern void *menu_screen;
60 extern void *giz_screen;
61
62 #define read_buttons(which) \
63         wait_for_input(which)
64 #define read_buttons_async(which) 0
65 #define menu_draw_begin() \
66         menu_draw_begin(1)
67 #define clear_screen() \
68         memset(SCREEN_BUFFER, 0, SCREEN_WIDTH*SCREEN_HEIGHT*2)
69 #define darken_screen() \
70         menu_darken_bg(menu_screen, menu_screen, SCREEN_WIDTH*SCREEN_HEIGHT, 0)
71
72 // ------------------------------------
73
74 #elif defined(PSP)
75
76 #include "../psp/psp.h"
77
78 #define PBTN_NORTH PBTN_TRIANGLE
79 #define PBTN_SOUTH PBTN_X
80 #define PBTN_WEST  PBTN_SQUARE
81 #define PBTN_EAST  PBTN_CIRCLE
82
83 unsigned long wait_for_input(unsigned int interesting, int is_key_config);
84 void menu_draw_begin(void);
85 void menu_darken_bg(void *dst, const void *src, int pixels, int darker);
86 void menu_draw_end(void);
87
88 #define SCREEN_WIDTH  512
89 #define SCREEN_HEIGHT 272
90 #define SCREEN_BUFFER psp_screen
91
92 #define read_buttons(which) \
93         wait_for_input(which, 0)
94 #define read_buttons_async(which) \
95         (psp_pad_read(0) & (which))
96 #define clear_screen() \
97         memset(SCREEN_BUFFER, 0, SCREEN_WIDTH*SCREEN_HEIGHT*2)
98 #define darken_screen() \
99         menu_darken_bg(psp_screen, psp_screen, SCREEN_WIDTH*SCREEN_HEIGHT, 0)
100
101 // ------------------------------------
102
103 #elif defined(PANDORA)
104
105 // TODO
106
107 #include "../gp2x/gp2x.h"
108
109 #define PBTN_UP    (1 <<  0)
110 #define PBTN_DOWN  (1 <<  1)
111 #define PBTN_LEFT  (1 <<  2)
112 #define PBTN_RIGHT (1 <<  3)
113
114 #define PBTN_NORTH (1 <<  4)
115 #define PBTN_SOUTH (1 <<  5)
116 #define PBTN_WEST  (1 <<  6)
117 #define PBTN_EAST  (1 <<  7)
118 #define PBTN_L     (1 <<  8)
119 #define PBTN_R     (1 <<  9)
120
121 unsigned long wait_for_input(unsigned long interesting);
122 void gp2x_pd_clone_buffer2(void);
123 void menu_darken_bg(void *dst, int pixels, int darker);
124 void menu_flip(void);
125
126 #define SCREEN_WIDTH  800
127 #define SCREEN_HEIGHT 480
128 #define SCREEN_BUFFER gp2x_screen
129
130 #define read_buttons(which) \
131         wait_for_input(which)
132 #define read_buttons_async(which) \
133         (gp2x_joystick_read(0) & (which))
134 #define menu_draw_begin() \
135         gp2x_pd_clone_buffer2()
136 #define clear_screen() \
137         memset(gp2x_screen, 0, 800*480*2)
138 #define darken_screen() \
139         menu_darken_bg(gp2x_screen, 800*480, 0)
140 #define menu_draw_end() \
141         menu_flip()
142
143 #endif