-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconstants.s
225 lines (174 loc) · 5.7 KB
/
constants.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
.ifndef CONSTANTS_S
CONSTANTS_S:
.equ SCREEN_WIDTH, 640
.equ SCREEN_HEIGH, 480
.equ SCREEN_PIXELS, SCREEN_WIDTH * SCREEN_HEIGH
.equ BITS_PER_PIXEL, 32
.equ BYTES_PER_PIXEL, 4
.equ BYTES_PER_PIXEL_SHIFT, 2
.equ BYTES_PER_SCREEN_ROW, SCREEN_WIDTH * BYTES_PER_PIXEL
.equ BYTES_PER_TETROMINO_BLOCK, 1
.equ BYTES_PER_TETROMINO_BLOCK_SHIFT, 0
.equ TETROMINO_BOARD_WIDTH, 4
.equ TETROMINO_BOARD_HEIGHT, 4
.equ TETROMINO_BOARD_SIZE, TETROMINO_BOARD_WIDTH * TETROMINO_BOARD_WIDTH
.equ TETROMINO_BOARD_SIZE_IN_BYTES, TETROMINO_BOARD_SIZE * BYTES_PER_TETROMINO_BLOCK
.equ NUM_ORIENTATIONS, 4
.equ NUM_TETROMINOS, 7
/* struct Tetromino */
.equ TETROMINO_DIFFUSE_COLOR, 0 // u32
.equ TETROMINO_SPECULAR_COLOR, TETROMINO_DIFFUSE_COLOR + 4 // u32
.equ TETROMINO_AMBIENT_COLOR, TETROMINO_SPECULAR_COLOR + 4 // u32
.equ TETROMINO_ROTS, TETROMINO_AMBIENT_COLOR + 4 // struct TetrominoData[4] = struct TetrominoData[NUM_ORIENTATIONS]
.equ STRUCT_TETROMINO_SIZE, TETROMINO_ROTS + (STRUCT_TDATA_SIZE * NUM_ORIENTATIONS)
/* struct TetrominoData */
.equ TDATA, 0 // u8[4][4] [0][0] is bottom left, [0][3] is bottom right
.equ STRUCT_TDATA_SIZE, TDATA + TETROMINO_BOARD_SIZE_IN_BYTES
.equ FRAME_DIFFUSE_COLOR, 0xFF777777
.equ FRAME_SPECULAR_COLOR, 0xFF999999
.equ FRAME_AMBIENT_COLOR, 0xFF333333
/* Data for all 7 tetrominos */
/* struct Tetromino[NUM_TETROMINOS] */
/* Data is mirrored both horizontally and vertically, due to endianness and array indexing respectively */
TETROMINOS:
/* Tetromino I: */
.word 0x00CCCC // Diffuse color
.word 0x00FFFF // Specular color
.word 0x009999 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0xFFFFFFFF
.word 0x00000000
.word 0x0000FF00
.word 0x0000FF00
.word 0x0000FF00
.word 0x0000FF00
.word 0x00000000
.word 0xFFFFFFFF
.word 0x00000000
.word 0x00000000
.word 0x00FF0000
.word 0x00FF0000
.word 0x00FF0000
.word 0x00FF0000
/* Tetromino J: */
.word 0x0000CC // Diffuse color
.word 0x0000FF // Specular color
.word 0x000099 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0x00FFFFFF
.word 0x000000FF
.word 0x00000000
.word 0x0000FFFF
.word 0x0000FF00
.word 0x0000FF00
.word 0x00000000
.word 0x00FF0000
.word 0x00FFFFFF
.word 0x00000000
.word 0x00000000
.word 0x0000FF00
.word 0x0000FF00
.word 0x00FFFF00
/* Tetromino L: */
.word 0xCC6600 // Diffuse color
.word 0xFF8800 // Specular color
.word 0x994400 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0x00FFFFFF
.word 0x00FF0000
.word 0x00000000
.word 0x0000FF00
.word 0x0000FF00
.word 0x0000FFFF
.word 0x00000000
.word 0x000000FF
.word 0x00FFFFFF
.word 0x00000000
.word 0x00000000
.word 0x00FFFF00
.word 0x0000FF00
.word 0x0000FF00
/* Tetromino O: */
.word 0xCCCC00 // Diffuse color
.word 0xFFFF00 // Specular color
.word 0x999900 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0x00FFFF00
.word 0x00FFFF00
.word 0x00000000
.word 0x00000000
.word 0x00FFFF00
.word 0x00FFFF00
.word 0x00000000
.word 0x00000000
.word 0x00FFFF00
.word 0x00FFFF00
.word 0x00000000
.word 0x00000000
.word 0x00FFFF00
.word 0x00FFFF00
/* Tetromino S: */
.word 0x00CC00 // Diffuse color
.word 0x00FF00 // Specular color
.word 0x009900 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0x0000FFFF
.word 0x00FFFF00
.word 0x00000000
.word 0x0000FF00
.word 0x0000FFFF
.word 0x000000FF
.word 0x00000000
.word 0x0000FFFF
.word 0x00FFFF00
.word 0x00000000
.word 0x00000000
.word 0x00FF0000
.word 0x00FFFF00
.word 0x0000FF00
/* Tetromino Z: */
.word 0xCC0000 // Diffuse color
.word 0xFF0000 // Specular color
.word 0x990000 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0x00FFFF00
.word 0x0000FFFF
.word 0x00000000
.word 0x000000FF
.word 0x0000FFFF
.word 0x0000FF00
.word 0x00000000
.word 0x00FFFF00
.word 0x0000FFFF
.word 0x00000000
.word 0x00000000
.word 0x0000FF00
.word 0x00FFFF00
.word 0x00FF0000
/* Tetromino T: */
.word 0x9900CC // Diffuse color
.word 0xCC00FF // Specular color
.word 0x660099 // Ambient color
.word 0x00000000
.word 0x00000000
.word 0x00FFFFFF
.word 0x0000FF00
.word 0x00000000
.word 0x0000FF00
.word 0x0000FFFF
.word 0x0000FF00
.word 0x00000000
.word 0x0000FF00
.word 0x00FFFFFF
.word 0x00000000
.word 0x00000000
.word 0x0000FF00
.word 0x00FFFF00
.word 0x0000FF00
.endif