4 #define BLK(x, y) ((x) | ((y) << 4))
5 #define BLKX(c) ((unsigned char)(c) & 0xf)
6 #define BLKY(c) ((unsigned char)(c) >> 4)
10 static unsigned char blocks[NUM_BLOCKS][4][4] = {
13 {BLK(0, 1), BLK(0, 2), BLK(1, 1), BLK(2, 1)},
14 {BLK(0, 0), BLK(1, 0), BLK(1, 1), BLK(1, 2)},
15 {BLK(0, 1), BLK(1, 1), BLK(2, 1), BLK(2, 0)},
16 {BLK(1, 0), BLK(1, 1), BLK(1, 2), BLK(2, 2)}
20 {BLK(0, 1), BLK(1, 1), BLK(2, 1), BLK(2, 2)},
21 {BLK(1, 0), BLK(1, 1), BLK(1, 2), BLK(0, 2)},
22 {BLK(0, 0), BLK(0, 1), BLK(1, 1), BLK(2, 1)},
23 {BLK(1, 0), BLK(2, 0), BLK(1, 1), BLK(1, 2)}
27 {BLK(0, 2), BLK(1, 2), BLK(2, 2), BLK(3, 2)},
28 {BLK(1, 0), BLK(1, 1), BLK(1, 2), BLK(1, 3)},
29 {BLK(0, 2), BLK(1, 2), BLK(2, 2), BLK(3, 2)},
30 {BLK(1, 0), BLK(1, 1), BLK(1, 2), BLK(1, 3)}
34 {BLK(1, 1), BLK(2, 1), BLK(1, 2), BLK(2, 2)},
35 {BLK(1, 1), BLK(2, 1), BLK(1, 2), BLK(2, 2)},
36 {BLK(1, 1), BLK(2, 1), BLK(1, 2), BLK(2, 2)},
37 {BLK(1, 1), BLK(2, 1), BLK(1, 2), BLK(2, 2)}
41 {BLK(0, 1), BLK(1, 1), BLK(1, 2), BLK(2, 2)},
42 {BLK(0, 1), BLK(1, 1), BLK(1, 0), BLK(0, 2)},
43 {BLK(0, 1), BLK(1, 1), BLK(1, 2), BLK(2, 2)},
44 {BLK(0, 1), BLK(1, 1), BLK(1, 0), BLK(0, 2)}
48 {BLK(1, 1), BLK(2, 1), BLK(0, 2), BLK(1, 2)},
49 {BLK(0, 0), BLK(0, 1), BLK(1, 1), BLK(1, 2)},
50 {BLK(1, 1), BLK(2, 1), BLK(0, 2), BLK(1, 2)},
51 {BLK(0, 0), BLK(0, 1), BLK(1, 1), BLK(1, 2)}
55 {BLK(0, 1), BLK(1, 1), BLK(2, 1), BLK(1, 2)},
56 {BLK(1, 0), BLK(1, 1), BLK(1, 2), BLK(0, 1)},
57 {BLK(0, 1), BLK(1, 1), BLK(2, 1), BLK(1, 0)},
58 {BLK(1, 0), BLK(1, 1), BLK(1, 2), BLK(2, 1)}
62 static int block_spawnpos[NUM_BLOCKS][2] = {
63 {-1, -2}, {-1, -2}, {-2, -2}, {-1, -2}, {-1, -2}, {-1, -2}, {-1, -2}
67 #endif /* BLOCKS_H_ */