summaryrefslogtreecommitdiffstats
path: root/src/gba-buttons.c
blob: 7d40031efa7a365d3044cc5768bf0ec29b40c605 (plain)
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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
// 1bpp packed
u32 gba_btn_a_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x000000c0,
    0x00000000, 0x00000003, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x30080484, 0x4242c242,
    0x0c102021, 0x42424342, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x42060c34, 0xc830c000,
    0x4260302c, 0x130c0300, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xc0300804, 0x844242c2,
    0x030c1020, 0x21424243, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x4242040c, 0x38f0c000,
    0x42422030, 0x1c0f0300, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000080,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00c43008, 0x04844242,
    0x00230c10, 0x20214242, 0x00000000, 0x00000000,
    0x80000000, 0x00000000, 0xc2424404, 0x0832c000,
    0x43422220, 0x104c0300, 0x01000000, 0x00000000,
    0x00000000, 0x00000000, 0x80000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00408000, 0x00000080, 0x80800001,
    0x00000000, 0x00000080, 0x00000000, 0x00020100,
    0x00000000, 0x00000000, 0x00c03008, 0x04844242,
    0x00030c10, 0x20214242, 0x00000000, 0x00000000,
    0x38000000, 0x00000080, 0xc2424404, 0x0830c000,
    0x43422220, 0x100c0300, 0x1c000000, 0x00000001,
    0x40200000, 0x00000000, 0x00008080, 0x80000000,
    0x00000000, 0x00000000, 0x02040000, 0x00000000,
    0x00000000, 0x20400000, 0x00008080, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x04020000,
    0x00000000, 0x00000000, 0x00c03008, 0x04844242,
    0x00030c10, 0x20214242, 0x00000000, 0x00000000,
    0x0c000000, 0x00000000, 0xc2424404, 0x0830c000,
    0x43422220, 0x100c0300, 0x30000000, 0x00000000,
    0x00201000, 0x00000000, 0x00000080, 0x80000000,
    0x00000000, 0x00000000, 0x00040800, 0x00000000,
    0x00000000, 0x20000000, 0x00008000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x04000000,
    0x00000000, 0x00000000, 0x00c03008, 0x04844242,
    0x00030c10, 0x20214242, 0x00000000, 0x00000000,
    0x04000000, 0x00000000, 0xc2424404, 0x0830c000,
    0x43422220, 0x100c0300, 0x20000000, 0x00000000,
    0x00001000, 0x00000000, 0x00000000, 0x80000000,
    0x00000000, 0x00000000, 0x00000800, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00c03008, 0x04844242,
    0x00030c10, 0x20214242, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xc2424404, 0x0830c000,
    0x43422220, 0x100c0300, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_b_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x000000c0,
    0x00000000, 0x00000003, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x300804c4, 0x42c24242,
    0x0c102021, 0x42414242, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xc2060c34, 0xc830c000,
    0x4160302c, 0x130c0300, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xc0300804, 0xc442c242,
    0x030c1020, 0x21424142, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x42c2040c, 0x38f0c000,
    0x42412030, 0x1c0f0300, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000080,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00c43008, 0x04c442c2,
    0x00230c10, 0x20214241, 0x00000000, 0x00000000,
    0x80000000, 0x00000000, 0x4242c404, 0x0832c000,
    0x42422120, 0x104c0300, 0x01000000, 0x00000000,
    0x00000000, 0x00000000, 0x80000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00408000, 0x00000080, 0x80800001,
    0x00000000, 0x00000080, 0x00000000, 0x00020100,
    0x00000000, 0x00000000, 0x00c03008, 0x04c442c2,
    0x00030c10, 0x20214241, 0x00000000, 0x00000000,
    0x38000000, 0x00000080, 0x4242c404, 0x0830c000,
    0x42422120, 0x100c0300, 0x1c000000, 0x00000001,
    0x40200000, 0x00000000, 0x00008080, 0x80000000,
    0x00000000, 0x00000000, 0x02040000, 0x00000000,
    0x00000000, 0x20400000, 0x00808000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x04020000,
    0x00000000, 0x00000000, 0x00c03008, 0x04c442c2,
    0x00030c10, 0x20214241, 0x00000000, 0x00000000,
    0x0c000000, 0x00000000, 0x4242c404, 0x0830c000,
    0x42422120, 0x100c0300, 0x30000000, 0x00000000,
    0x00201000, 0x00000000, 0x00000000, 0x80800000,
    0x00000000, 0x00000000, 0x00040800, 0x00000000,
    0x00000000, 0x20000000, 0x00800000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x04000000,
    0x00000000, 0x00000000, 0x00c03008, 0x04c442c2,
    0x00030c10, 0x20214241, 0x00000000, 0x00000000,
    0x04000000, 0x00000000, 0x4242c404, 0x0830c000,
    0x42422120, 0x100c0300, 0x20000000, 0x00000000,
    0x00001000, 0x00000000, 0x00000000, 0x00800000,
    0x00000000, 0x00000000, 0x00000800, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00c03008, 0x04c442c2,
    0x00030c10, 0x20214241, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x4242c404, 0x0830c000,
    0x42422120, 0x100c0300, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_up_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xf80888c8, 0xe8888888,
    0x0f080809, 0x0b080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x8818e810, 0xe0000000,
    0x080c0b04, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00f80888, 0xc8e88888,
    0x000f0808, 0x090b0808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x888818f0, 0xe0000000,
    0x08080c07, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000080,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0002f808, 0x88c8e888,
    0x00200f08, 0x08090b08, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88888810, 0xe0000000,
    0x08080804, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000080, 0x00000000, 0x00808000,
    0x00000000, 0x00000080, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0100f808, 0x88c8e888,
    0x40000f08, 0x08090b08, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88888810, 0xe0000000,
    0x08080804, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00004080, 0x00000000, 0x80800000,
    0x00000000, 0x00000080, 0x00000000, 0x00000100,
    0x00000000, 0x00000000, 0x0000f808, 0x88c8e888,
    0x00000f08, 0x08090b08, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88888810, 0xe0000000,
    0x08080804, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00200000, 0x00000080, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00020000,
    0x00000000, 0x00000000, 0x0000f808, 0x88c8e888,
    0x00000f08, 0x08090b08, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88888810, 0xe0000000,
    0x08080804, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0000f808, 0x88c8e888,
    0x00000f08, 0x08090b08, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88888810, 0xe0000000,
    0x08080804, 0x03000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_down_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00e01088, 0x888888e8,
    0x00030408, 0x0808080b, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xc88808f8, 0x08f80000,
    0x0908080f, 0x080f0000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0000e010, 0x88888888,
    0x00000304, 0x08080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xe8c88808, 0xf8f80000,
    0x0b090808, 0x0f0f0000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000e0, 0x10888888,
    0x00000003, 0x04080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88e8c888, 0x08f80200,
    0x080b0908, 0x080f2000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x80000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000e0, 0x10888888,
    0x00000003, 0x04080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88e8c888, 0x08f80001,
    0x080b0908, 0x080f0040, 0x00000000, 0x00000000,
    0x80000000, 0x00000000, 0x00808000, 0x00000000,
    0x80000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000e0, 0x10888888,
    0x00000003, 0x04080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88e8c888, 0x08f80000,
    0x080b0908, 0x080f0000, 0x00000000, 0x00000000,
    0x80400000, 0x00000000, 0x00008080, 0x00000000,
    0x80000000, 0x00000000, 0x00010000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000e0, 0x10888888,
    0x00000003, 0x04080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88e8c888, 0x08f80000,
    0x080b0908, 0x080f0000, 0x00000000, 0x00000000,
    0x00002000, 0x00000000, 0x00000000, 0x80000000,
    0x00000000, 0x00000000, 0x00000200, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000e0, 0x10888888,
    0x00000003, 0x04080808, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x88e8c888, 0x08f80000,
    0x080b0908, 0x080f0000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_left_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0000f808, 0x88c8e8c8,
    0x00000f10, 0x20202f20, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x8808f808, 0xf8000000,
    0x20302f10, 0x0f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000f8, 0x0888c8e8,
    0x0000000f, 0x1020202f, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xc88808f8, 0xf8000000,
    0x2020301f, 0x0f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000400, 0xf80888c8,
    0x00000000, 0x0f102020, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xe9c88808, 0xf8000400,
    0x2f202010, 0x0f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x01020000, 0xf80888c8,
    0x00000000, 0x0f102020, 0x00000000, 0x00000000,
    0xc0000000, 0x00000000, 0xe8c88808, 0xf8000002,
    0x2f202010, 0x0f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x01000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000080, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x01000000, 0xf80888c8,
    0x00000000, 0x0f102020, 0x00000000, 0x00000000,
    0x60000000, 0x00000000, 0xe8c88808, 0xf8000000,
    0x2f202010, 0x0f000000, 0x00000000, 0x00000000,
    0x00800000, 0x00000000, 0x01000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00004000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0xf80888c8,
    0x00000000, 0x0f102020, 0x00000000, 0x00000000,
    0x10000000, 0x00000000, 0xe8c88808, 0xf8000000,
    0x2f202010, 0x0f000000, 0x00000000, 0x00000000,
    0x00004000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0xf80888c8,
    0x00000000, 0x0f102020, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xe8c88808, 0xf8000000,
    0x2f202010, 0x0f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_right_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0000f008, 0x0404f404,
    0x00001f10, 0x11131713, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x040cf408, 0xf0000000,
    0x11101f10, 0x1f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000f0, 0x080404f4,
    0x0000001f, 0x10111317, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x04040cf8, 0xf0000000,
    0x1311101f, 0x1f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0xf0080404,
    0x00002000, 0x1f101113, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xf4040408, 0xf0000000,
    0x97131110, 0x1f002000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0xf0080404,
    0x80400000, 0x1f101113, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xf4040408, 0xf0000000,
    0x17131110, 0x1f000040, 0x03000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x80000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000001,
    0x00000000, 0x00000000, 0x00000000, 0xf0080404,
    0x80000000, 0x1f101113, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xf4040408, 0xf0000000,
    0x17131110, 0x1f000000, 0x06000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x80000000, 0x00000000, 0x00010000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000200,
    0x00000000, 0x00000000, 0x00000000, 0xf0080404,
    0x00000000, 0x1f101113, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xf4040408, 0xf0000000,
    0x17131110, 0x1f000000, 0x08000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000200, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0xf0080404,
    0x00000000, 0x1f101113, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0xf4040408, 0xf0000000,
    0x17131110, 0x1f000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_l_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x0000fc02, 0x01010101,
    0x0000ff00, 0x01010107, 0x00000302, 0x02020202,
    0x00000000, 0x00000000, 0x01ff01ff, 0x00000000,
    0x00ff00ff, 0x00000000, 0x02030203, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x000000fc, 0x02010101,
    0x000000ff, 0x00010101, 0x00000003, 0x02020202,
    0x00000000, 0x00000000, 0x0101ffff, 0x00000000,
    0x0700ffff, 0x00000000, 0x02020303, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000080, 0x00000040, 0x00001000, 0xfc020101,
    0x00000000, 0xff000101, 0x00000000, 0x03020202,
    0x00000000, 0x00000000, 0x010101ff, 0x00000000,
    0x010700ff, 0x00000000, 0x02020203, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00204000, 0x00000030, 0x10100000, 0xfc020101,
    0x00000000, 0xff000101, 0x00000000, 0x03020202,
    0x00000000, 0x00000000, 0x010101ff, 0x00000000,
    0x010700ff, 0x00000000, 0x02020203, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000010,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x10200000, 0x00000018, 0x10000000, 0xfc020101,
    0x00000000, 0xff000101, 0x00000000, 0x03020202,
    0x00000000, 0x00000000, 0x010101ff, 0x00000000,
    0x010700ff, 0x00000000, 0x02020203, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000010,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x10000000, 0x00000004, 0x00000000, 0xfc020101,
    0x00000000, 0xff000101, 0x00000000, 0x03020202,
    0x00000000, 0x00000000, 0x010101ff, 0x00000000,
    0x010700ff, 0x00000000, 0x02020203, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0xfc020101,
    0x00000000, 0xff000101, 0x00000000, 0x03020202,
    0x00000000, 0x00000000, 0x010101ff, 0x00000000,
    0x010700ff, 0x00000000, 0x02020203, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_r_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x0000c040, 0x40404040, 0x0000ff00, 0x60a060a0,
    0x00003f40, 0x80808080, 0x00000000, 0x00000000,
    0x40c040c0, 0x00000000, 0x00ff00ff, 0x00000000,
    0x80ff80ff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x000000c0, 0x40404040, 0x000000ff, 0x0060a060,
    0x0000003f, 0x40808080, 0x00000000, 0x00000000,
    0x4040c0c0, 0x00000000, 0xa000ffff, 0x00000000,
    0x8080ffff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0xc0404040, 0x00000000, 0xff0060a0,
    0x00000800, 0x3f408080, 0x00000001, 0x00000002,
    0x404040c0, 0x00000000, 0x60a000ff, 0x00000000,
    0x808080ff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0xc0404040, 0x00000000, 0xff0060a0,
    0x08080000, 0x3f408080, 0x00040200, 0x0000000c,
    0x404040c0, 0x00000000, 0x60a000ff, 0x00000000,
    0x808080ff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000008, 0x00000000, 0x00000000,
    0x00000000, 0xc0404040, 0x00000000, 0xff0060a0,
    0x08000000, 0x3f408080, 0x08040000, 0x00000018,
    0x404040c0, 0x00000000, 0x60a000ff, 0x00000000,
    0x808080ff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000008, 0x00000000, 0x00000000,
    0x00000000, 0xc0404040, 0x00000000, 0xff0060a0,
    0x00000000, 0x3f408080, 0x08000000, 0x00000020,
    0x404040c0, 0x00000000, 0x60a000ff, 0x00000000,
    0x808080ff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0xc0404040, 0x00000000, 0xff0060a0,
    0x00000000, 0x3f408080, 0x00000000, 0x00000000,
    0x404040c0, 0x00000000, 0x60a000ff, 0x00000000,
    0x808080ff, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
};

u32 gba_btn_start_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x0000f008,
    0x00000000, 0x00001f20, 0x00000000, 0x00000000,
    0x00000080, 0x80008000, 0xf8f000bb, 0x91929300,
    0x3f1f009b, 0x2a1b2a00, 0x00000003, 0x01010100,
    0x00000000, 0x00000000, 0x00000000, 0x000000f0,
    0x00000000, 0x0000001f, 0x00000000, 0x00000000,
    0x00000080, 0x80008000, 0x08f000bb, 0x91929300,
    0x201f009b, 0x2a1b2a00, 0x00000003, 0x01010100,
    0x00000000, 0x00000000, 0x00000000, 0x001000f0,
    0x00000000, 0x0110001f, 0x00000000, 0x00000000,
    0x00000080, 0x80008000, 0x0af000bb, 0x91929300,
    0xa01f009b, 0x2a1b2a00, 0x00000003, 0x01010100,
    0x00000000, 0x00000000, 0x00000004, 0x080000f0,
    0x00000141, 0x2000001f, 0x00000000, 0x00000000,
    0x80000080, 0x80008000, 0x09f000bb, 0x91929300,
    0x201f009b, 0x2a1b2a00, 0x03000003, 0x01010100,
    0x00000000, 0x00000000, 0x00000204, 0x000000f0,
    0x00018140, 0x0000001f, 0x00000000, 0x00000000,
    0xc0000080, 0x80008000, 0x08f000bb, 0x91929300,
    0x201f009b, 0x2a1b2a00, 0x06000003, 0x01010100,
    0x00000000, 0x00000000, 0x00000200, 0x000000f0,
    0x00018000, 0x0000001f, 0x00000000, 0x00000000,
    0x40000080, 0x80008000, 0x08f000bb, 0x91929300,
    0x201f009b, 0x2a1b2a00, 0x04000003, 0x01010100,
    0x00000000, 0x00000000, 0x00000000, 0x000000f0,
    0x00000000, 0x0000001f, 0x00000000, 0x00000000,
    0x00000080, 0x80008000, 0x08f000bb, 0x91929300,
    0x201f009b, 0x2a1b2a00, 0x00000003, 0x01010100,
};

u32 gba_btn_select_data[] = {
    0x00000000, 0x00000000, 0x00000000, 0x0000f008,
    0x00000000, 0x00001f20, 0x00000000, 0x00000000,
    0x000000e0, 0x6080e000, 0xf8f0002e, 0x2622ee00,
    0x3f1f00ee, 0x2622ee00, 0x0000000e, 0x04040400,
    0x00000000, 0x00000000, 0x00000000, 0x000000f0,
    0x00000000, 0x0000001f, 0x00000000, 0x00000000,
    0x000000e0, 0x6080e000, 0x08f0002e, 0x2622ee00,
    0x201f00ee, 0x2622ee00, 0x0000000e, 0x04040400,
    0x00000000, 0x00000000, 0x00000000, 0x001000f0,
    0x00000000, 0x0110001f, 0x00000000, 0x00000000,
    0x000000e0, 0x6080e000, 0x0af0002e, 0x2622ee00,
    0xa01f00ee, 0x2622ee00, 0x0000000e, 0x04040400,
    0x00000000, 0x00000000, 0x00000004, 0x080000f0,
    0x00000141, 0x2000001f, 0x00000000, 0x00000000,
    0x800000e0, 0x6080e000, 0x09f0002e, 0x2622ee00,
    0x201f00ee, 0x2622ee00, 0x0300000e, 0x04040400,
    0x00000000, 0x00000000, 0x00000204, 0x000000f0,
    0x00018140, 0x0000001f, 0x00000000, 0x00000000,
    0xc00000e0, 0x6080e000, 0x08f0002e, 0x2622ee00,
    0x201f00ee, 0x2622ee00, 0x0600000e, 0x04040400,
    0x00000000, 0x00000000, 0x00000200, 0x000000f0,
    0x00018000, 0x0000001f, 0x00000000, 0x00000000,
    0x400000e0, 0x6080e000, 0x08f0002e, 0x2622ee00,
    0x201f00ee, 0x2622ee00, 0x0400000e, 0x04040400,
    0x00000000, 0x00000000, 0x00000000, 0x000000f0,
    0x00000000, 0x0000001f, 0x00000000, 0x00000000,
    0x000000e0, 0x6080e000, 0x08f0002e, 0x2622ee00,
    0x201f00ee, 0x2622ee00, 0x0000000e, 0x04040400,
};

typedef struct SpriteAnimation {
    size_t *tile_offsets;
    size_t n_frames;
} SpriteAnimation;

typedef enum {BTN_STATE_IDLE, BTN_STATE_PRESSED} BtnState;

static size_t btn_state_idle[] = {0};
static size_t btn_state_pressed[] = {16, 16, 32, 32, 48, 48, 64, 64, 80, 96};

static SpriteAnimation *animation_states[] = {
    &(SpriteAnimation){
        .tile_offsets = &btn_state_idle,
        .n_frames = sizeof(btn_state_idle) / sizeof(size_t),
    },
    &(SpriteAnimation){
        .tile_offsets = &btn_state_pressed,
        .n_frames = sizeof(btn_state_pressed) / sizeof(size_t),
    },
};