initial commit
[megadrive_tetris] / src / megadrive.h
1 #ifndef MEGADRIVE_H_
2 #define MEGADRIVE_H_
3
4 #include <stdint.h>
5
6 /* Macros for the joypad buttons */
7 #define DPAD_UP         0
8 #define DPAD_DOWN       1
9 #define DPAD_LEFT       2
10 #define DPAD_RIGHT      3
11 #define DPAD_A          12
12 #define DPAD_B          4
13 #define DPAD_C          5
14 #define DPAD_START      13
15
16 uint16_t dpad0;
17 uint16_t dpad0_prev;
18 uint16_t dpad0_presses;
19 uint16_t frame_buffer[2048];
20
21 int current_piece = 0x270;
22 int frame_delay = 50;
23 int frame_countdown;
24 int current_piece_x;
25 int current_piece_y;
26
27 int tetromino_shapes[8];
28 int statistics[16];
29
30 int last_spawned_piece_index;
31
32 int16_t rng_state[2];
33
34 int auto_repeat_countdown;
35
36
37 static inline dpad0_pressed(uint16_t key)
38 {
39         return !(dpad0 & (1 << key));
40 }
41
42 int32_t rng_next(int32_t s);
43
44 static inline int rand(void)
45 {
46         int32_t *s = (int32_t*)rng_state;
47         *s = rng_next(*s);
48         return ((*s) >> 24) & 0xff;
49 }
50
51
52 #endif  /* MEGADRIVE_H_ */