zodttd / gameboy4iphone

A Nintendo Gameboy and Gameboy Color emulator for the Apple iPhone and iPod Touch.

This URL has Read+Write access

gameboy4iphone / events.c
bf4e5121 » ME 2008-04-28 First commit of gameboy4iphone 1 /*
2 * events.c
3 *
4 * Event queue.
5 */
6
7
8 #include "input.h"
9
10
11 char keystates[MAX_KEYS];
12 int nkeysdown;
13
14 #define MAX_EVENTS 32
15
16 static event_t eventqueue[MAX_EVENTS];
17 static int eventhead, eventpos;
18
19
20 int ev_postevent(event_t *ev)
21 {
22 int nextevent;
23 nextevent = (eventhead+1)%MAX_EVENTS;
24 if (nextevent == eventpos)
25 return 0;
26 eventqueue[eventhead] = *ev;
27 eventhead = nextevent;
28 return 1;
29 }
30
31 int ev_getevent(event_t *ev)
32 {
33 if (eventpos == eventhead)
34 {
35 ev->type = EV_NONE;
36 return 0;
37 }
38 *ev = eventqueue[eventpos];
39 eventpos = (eventpos+1)%MAX_EVENTS;
40 if (ev->type == EV_PRESS)
41 {
42 keystates[ev->code] = 1;
43 nkeysdown++;
44 }
45 if (ev->type == EV_RELEASE)
46 {
47 keystates[ev->code] = 0;
48 nkeysdown--;
49 if (nkeysdown < 0) nkeysdown = 0;
50 }
51 return 1;
52 }
53
54
55
56
57
58
59
60