diff options
-rw-r--r-- | src/gba-buttons.c | 127 | ||||
-rw-r--r-- | src/main.c | 281 |
2 files changed, 328 insertions, 80 deletions
diff --git a/src/gba-buttons.c b/src/gba-buttons.c index 5a2a6e2..7f13676 100644 --- a/src/gba-buttons.c +++ b/src/gba-buttons.c | |||
@@ -24,7 +24,7 @@ u32 gba_btn_l_data[] = { | |||
24 | }; | 24 | }; |
25 | 25 | ||
26 | u32 gba_btn_r_data[] = { | 26 | u32 gba_btn_r_data[] = { |
27 | 0xff018181, 0x818101ff, 0x3f408182, 0x818280ff, | 27 | 0xff01c141, 0xc14101ff, 0x3f408081, 0x808180ff, |
28 | }; | 28 | }; |
29 | 29 | ||
30 | u32 gba_btn_ab_shadow_data[] = { | 30 | u32 gba_btn_ab_shadow_data[] = { |
@@ -52,6 +52,16 @@ u32 gba_btn_startselect_data[] = { | |||
52 | 0x000000f8, 0x04f80000, 0x0000001f, 0x201f0000, | 52 | 0x000000f8, 0x04f80000, 0x0000001f, 0x201f0000, |
53 | }; | 53 | }; |
54 | 54 | ||
55 | u32 gba_btn_start_text[] = { | ||
56 | 0x00008080, 0x00800000, 0x0000bb91, 0x92930000, | ||
57 | 0x00009b2a, 0x1b2a0000, 0x00000301, 0x01010000, | ||
58 | }; | ||
59 | |||
60 | u32 gba_btn_select_text[] = { | ||
61 | 0x0000e060, 0x80e00000, 0x00002e26, 0x22ee0000, | ||
62 | 0x0000ee26, 0x22ee0000, 0x00000e04, 0x04040000, | ||
63 | }; | ||
64 | |||
55 | u32 gba_btn_fx_downup[] = { | 65 | u32 gba_btn_fx_downup[] = { |
56 | 0x00000000, 0x00000000, 0x04000000, 0x00000000, | 66 | 0x00000000, 0x00000000, 0x04000000, 0x00000000, |
57 | 0x40000100, 0x00000000, 0x00000000, 0x00000000, | 67 | 0x40000100, 0x00000000, 0x00000000, 0x00000000, |
@@ -74,6 +84,55 @@ u32 gba_btn_fx_leftright[] = { | |||
74 | 0x40000000, 0x00000000, 0x00001000, 0x00000000, | 84 | 0x40000000, 0x00000000, 0x00001000, 0x00000000, |
75 | }; | 85 | }; |
76 | 86 | ||
87 | u32 gba_btn_fx_lr[] = { | ||
88 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
89 | 0x00000000, 0x00000000, 0x00008004, 0x00000002, | ||
90 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
91 | 0x00000000, 0x00000080, 0x80810200, 0x00000001, | ||
92 | 0x00000000, 0x00000000, 0x00000000, 0x00000080, | ||
93 | 0x80000000, 0x000000c0, 0x80010000, 0x00000000, | ||
94 | 0x00000000, 0x00000000, 0x00000000, 0x00000080, | ||
95 | 0x80000000, 0x00000020, 0x00000000, 0x00000000, | ||
96 | }; | ||
97 | |||
98 | u32 gba_btn_fx_ab[] = { | ||
99 | 0x00000000, 0x00408000, 0x00000080, 0x80800001, | ||
100 | 0x00000000, 0x00000080, 0x00000000, 0x00020100, | ||
101 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
102 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
103 | 0x38000000, 0x00000080, 0x00000000, 0x00000000, | ||
104 | 0x00000000, 0x00000000, 0x1c000000, 0x00000001, | ||
105 | 0x40200000, 0x00000000, 0x00008080, 0x80000000, | ||
106 | 0x00000000, 0x00000000, 0x02040000, 0x00000000, | ||
107 | 0x00000000, 0x20400000, 0x00808000, 0x00000000, | ||
108 | 0x00000000, 0x00000000, 0x00000000, 0x04020000, | ||
109 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
110 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
111 | 0x0c000000, 0x00000000, 0x00000000, 0x00000000, | ||
112 | 0x00000000, 0x00000000, 0x30000000, 0x00000000, | ||
113 | 0x00201000, 0x00000000, 0x00000000, 0x80800000, | ||
114 | 0x00000000, 0x00000000, 0x00040800, 0x00000000, | ||
115 | 0x00000000, 0x20000000, 0x00800000, 0x00000000, | ||
116 | 0x00000000, 0x00000000, 0x00000000, 0x04000000, | ||
117 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
118 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
119 | 0x04000000, 0x00000000, 0x00000000, 0x00000000, | ||
120 | 0x00000000, 0x00000000, 0x20000000, 0x00000000, | ||
121 | 0x00001000, 0x00000000, 0x00000000, 0x00800000, | ||
122 | 0x00000000, 0x00000000, 0x00000800, 0x00000000, | ||
123 | }; | ||
124 | |||
125 | u32 gba_btn_fx_startselect[] = { | ||
126 | 0x00000000, 0x00000000, 0x00000000, 0x10000002, | ||
127 | 0x00000001, 0x10000080, 0x00000000, 0x00000000, | ||
128 | 0x00000000, 0x00000080, 0x00000408, 0x00000001, | ||
129 | 0x00014120, 0x00000000, 0x00000000, 0x00000003, | ||
130 | 0x00000000, 0x000000c0, 0x00020400, 0x00000000, | ||
131 | 0x01814000, 0x00000000, 0x00000000, 0x00000006, | ||
132 | 0x00000000, 0x00000040, 0x00020000, 0x00000000, | ||
133 | 0x01800000, 0x00000000, 0x00000000, 0x00000004, | ||
134 | }; | ||
135 | |||
77 | typedef struct SpriteAnimation { | 136 | typedef struct SpriteAnimation { |
78 | size_t *tile_offsets; | 137 | size_t *tile_offsets; |
79 | size_t n_frames; | 138 | size_t n_frames; |
@@ -152,3 +211,69 @@ AnimationEntry *btn_animation[] = { | |||
152 | {0, 0, 12, 1}, | 211 | {0, 0, 12, 1}, |
153 | }, | 212 | }, |
154 | }; | 213 | }; |
214 | |||
215 | AnimationEntry *btn_animation_ab[] = { | ||
216 | &(AnimationEntry[]){ | ||
217 | {0, 0, 0, 0}, | ||
218 | {0, 0, 0, 0}, | ||
219 | {0, 1, 0, 0}, | ||
220 | {0, 1, 0, 0}, | ||
221 | {0, 2, 0, 0}, | ||
222 | {0, 2, 0, 0}, | ||
223 | {0, 2, 0, 0}, | ||
224 | {0, 2, 0, 0}, | ||
225 | }, | ||
226 | &(AnimationEntry[]){ | ||
227 | {0, 0, 0, 0}, | ||
228 | {0, 0, 0, 0}, | ||
229 | {0, 0, 0, 0}, | ||
230 | {0, 0, 0, 0}, | ||
231 | {0, 0, 0, 0}, | ||
232 | {0, 0, 0, 0}, | ||
233 | {0, 0, 0, 0}, | ||
234 | {0, 0, 0, 0}, | ||
235 | }, | ||
236 | &(AnimationEntry[]){ | ||
237 | {0, 0, 0, 1}, | ||
238 | {0, 0, 0, 1}, | ||
239 | {0, 0, 0, 0}, | ||
240 | {0, 0, 0, 0}, | ||
241 | {0, 0, 16, 0}, | ||
242 | {0, 0, 16, 0}, | ||
243 | {0, 0, 32, 0}, | ||
244 | {0, 0, 32, 1}, | ||
245 | }, | ||
246 | }; | ||
247 | |||
248 | AnimationEntry *btn_animation_startselect[] = { | ||
249 | &(AnimationEntry[]){ | ||
250 | {0, 0, 0, 0}, | ||
251 | {0, 0, 0, 0}, | ||
252 | {0, 0, 2, 0}, | ||
253 | {0, 0, 2, 0}, | ||
254 | {0, 0, 2, 0}, | ||
255 | {0, 0, 2, 0}, | ||
256 | {0, 0, 2, 0}, | ||
257 | {0, 0, 2, 0}, | ||
258 | }, | ||
259 | &(AnimationEntry[]){ | ||
260 | {0, 0, 0, 0}, | ||
261 | {0, 0, 0, 0}, | ||
262 | {0, 0, 0, 0}, | ||
263 | {0, 0, 0, 0}, | ||
264 | {0, 0, 0, 0}, | ||
265 | {0, 0, 0, 0}, | ||
266 | {0, 0, 0, 0}, | ||
267 | {0, 0, 0, 0}, | ||
268 | }, | ||
269 | &(AnimationEntry[]){ | ||
270 | {0, 0, 0, 1}, | ||
271 | {0, 0, 4, 0}, | ||
272 | {0, 0, 4, 0}, | ||
273 | {0, 0, 8, 0}, | ||
274 | {0, 0, 8, 0}, | ||
275 | {0, 0, 12, 0}, | ||
276 | {0, 0, 12, 0}, | ||
277 | {0, 0, 12, 1}, | ||
278 | }, | ||
279 | }; | ||
@@ -688,49 +688,6 @@ int main(void) { | |||
688 | // Initialize the A/B button sprites. | 688 | // Initialize the A/B button sprites. |
689 | int buttons_x = SCREEN_WIDTH / 2; | 689 | int buttons_x = SCREEN_WIDTH / 2; |
690 | int buttons_y = SCREEN_HEIGHT / 2; | 690 | int buttons_y = SCREEN_HEIGHT / 2; |
691 | ButtonSprite btn_b = { | ||
692 | .id = load_packed_sprite_data(&gba_btn_b_data, 4, 1), | ||
693 | .x = buttons_x + 32, | ||
694 | .y = buttons_y + 32, | ||
695 | .frame = 0, | ||
696 | .state = BTN_STATE_IDLE, | ||
697 | }; | ||
698 | OBJ_ATTR_0(btn_b.id) = btn_b.y; | ||
699 | OBJ_ATTR_1(btn_b.id) = btn_b.x | (1 << 0xE); | ||
700 | OBJ_ATTR_2(btn_b.id) = sprites[btn_b.id].tile_start; | ||
701 | |||
702 | ButtonSprite btn_a = { | ||
703 | .id = load_packed_sprite_data(&gba_btn_a_data, 4, 1), | ||
704 | .x = buttons_x + 32 + 20, | ||
705 | .y = buttons_y + 32 - 16, | ||
706 | .frame = 0, | ||
707 | .state = BTN_STATE_IDLE, | ||
708 | }; | ||
709 | OBJ_ATTR_0(btn_a.id) = btn_a.y; | ||
710 | OBJ_ATTR_1(btn_a.id) = btn_a.x | (1 << 0xE); | ||
711 | OBJ_ATTR_2(btn_a.id) = sprites[btn_a.id].tile_start; | ||
712 | |||
713 | ButtonSprite btn_start = { | ||
714 | .id = load_packed_sprite_data(&gba_btn_startselect_data, 2, 2), | ||
715 | .x = buttons_x - 10, | ||
716 | .y = buttons_y + 40, | ||
717 | .frame = 0, | ||
718 | .state = BTN_STATE_IDLE, | ||
719 | }; | ||
720 | OBJ_ATTR_0(btn_start.id) = btn_start.y | (1 << 0xE); | ||
721 | OBJ_ATTR_1(btn_start.id) = btn_start.x; | ||
722 | OBJ_ATTR_2(btn_start.id) = sprites[btn_start.id].tile_start; | ||
723 | |||
724 | ButtonSprite btn_select = { | ||
725 | .id = load_packed_sprite_data(&gba_btn_startselect_data, 2, 2), | ||
726 | .x = buttons_x - 32, | ||
727 | .y = buttons_y + 40, | ||
728 | .frame = 0, | ||
729 | .state = BTN_STATE_IDLE, | ||
730 | }; | ||
731 | OBJ_ATTR_0(btn_select.id) = btn_select.y | (1 << 0xE); | ||
732 | OBJ_ATTR_1(btn_select.id) = btn_select.x; | ||
733 | OBJ_ATTR_2(btn_select.id) = sprites[btn_select.id].tile_start; | ||
734 | 691 | ||
735 | MultiSprite buttons[] = { | 692 | MultiSprite buttons[] = { |
736 | // DOWN. | 693 | // DOWN. |
@@ -918,7 +875,7 @@ int main(void) { | |||
918 | .x = buttons_x - 64 - 28, | 875 | .x = buttons_x - 64 - 28, |
919 | .y = buttons_y - 32 - 20, | 876 | .y = buttons_y - 32 - 20, |
920 | .data = &gba_btn_l_data, | 877 | .data = &gba_btn_l_data, |
921 | .n_tiles = 4, | 878 | .n_tiles = 2, |
922 | .frames = 1, | 879 | .frames = 1, |
923 | .obj_attr_0 = OBJ_SHAPE_WIDE, | 880 | .obj_attr_0 = OBJ_SHAPE_WIDE, |
924 | .obj_attr_1 = OBJ_SIZE_SMALL, | 881 | .obj_attr_1 = OBJ_SIZE_SMALL, |
@@ -961,7 +918,7 @@ int main(void) { | |||
961 | .x = buttons_x + 32 + 20 + 24, | 918 | .x = buttons_x + 32 + 20 + 24, |
962 | .y = buttons_y - 32 - 20, | 919 | .y = buttons_y - 32 - 20, |
963 | .data = &gba_btn_r_data, | 920 | .data = &gba_btn_r_data, |
964 | .n_tiles = 4, | 921 | .n_tiles = 2, |
965 | .frames = 1, | 922 | .frames = 1, |
966 | .obj_attr_0 = OBJ_SHAPE_WIDE, | 923 | .obj_attr_0 = OBJ_SHAPE_WIDE, |
967 | .obj_attr_1 = OBJ_SIZE_SMALL, | 924 | .obj_attr_1 = OBJ_SIZE_SMALL, |
@@ -991,6 +948,178 @@ int main(void) { | |||
991 | }, | 948 | }, |
992 | }, | 949 | }, |
993 | }, | 950 | }, |
951 | // A. | ||
952 | { | ||
953 | .frame = 0, | ||
954 | .n_obj = 3, | ||
955 | .n_frames = 8, | ||
956 | .state = BTN_STATE_RELEASED, | ||
957 | .animations = &btn_animation_ab, | ||
958 | .sprites = &(ObjState[]){ | ||
959 | { | ||
960 | .id = 0, | ||
961 | .x = buttons_x + 32 + 20 + 20, | ||
962 | .y = buttons_y + 32 - 16, | ||
963 | .data = &gba_btn_a_data, | ||
964 | .n_tiles = 4, | ||
965 | .frames = 1, | ||
966 | .obj_attr_0 = OBJ_SHAPE_SQUARE, | ||
967 | .obj_attr_1 = OBJ_SIZE_MID, | ||
968 | .obj_attr_2 = 0 | ||
969 | }, | ||
970 | { | ||
971 | .id = 0, | ||
972 | .x = buttons_x + 32 + 20 + 20, | ||
973 | .y = buttons_y + 32 - 16 + 8, | ||
974 | .data = &gba_btn_ab_shadow_data, | ||
975 | .n_tiles = 2, | ||
976 | .frames = 1, | ||
977 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
978 | .obj_attr_1 = OBJ_SIZE_SMALL, | ||
979 | .obj_attr_2 = 0 | ||
980 | }, | ||
981 | { | ||
982 | .id = 0, | ||
983 | .x = buttons_x + 32 + 19 - 7 + 20, | ||
984 | .y = buttons_y + 32 - 23, | ||
985 | .data = &gba_btn_fx_ab, | ||
986 | .n_tiles = 16, | ||
987 | .frames = 3, | ||
988 | .obj_attr_0 = OBJ_SHAPE_SQUARE, | ||
989 | .obj_attr_1 = OBJ_SIZE_BIG, | ||
990 | .obj_attr_2 = 0 | ||
991 | }, | ||
992 | }, | ||
993 | }, | ||
994 | // B. | ||
995 | { | ||
996 | .frame = 0, | ||
997 | .n_obj = 3, | ||
998 | .n_frames = 8, | ||
999 | .state = BTN_STATE_RELEASED, | ||
1000 | .animations = &btn_animation_ab, | ||
1001 | .sprites = &(ObjState[]){ | ||
1002 | { | ||
1003 | .id = 0, | ||
1004 | .x = buttons_x + 32 + 20, | ||
1005 | .y = buttons_y + 32, | ||
1006 | .data = &gba_btn_b_data, | ||
1007 | .n_tiles = 4, | ||
1008 | .frames = 1, | ||
1009 | .obj_attr_0 = OBJ_SHAPE_SQUARE, | ||
1010 | .obj_attr_1 = OBJ_SIZE_MID, | ||
1011 | .obj_attr_2 = 0 | ||
1012 | }, | ||
1013 | { | ||
1014 | .id = 0, | ||
1015 | .x = buttons_x + 32 + 20, | ||
1016 | .y = buttons_y + 32 + 8, | ||
1017 | .data = &gba_btn_ab_shadow_data, | ||
1018 | .n_tiles = 2, | ||
1019 | .frames = 1, | ||
1020 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1021 | .obj_attr_1 = OBJ_SIZE_SMALL, | ||
1022 | .obj_attr_2 = 0 | ||
1023 | }, | ||
1024 | { | ||
1025 | .id = 0, | ||
1026 | .x = buttons_x + 32 - 8 + 20, | ||
1027 | .y = buttons_y + 33 + 8 - 16, | ||
1028 | .data = &gba_btn_fx_ab, | ||
1029 | .n_tiles = 16, | ||
1030 | .frames = 3, | ||
1031 | .obj_attr_0 = OBJ_SHAPE_SQUARE, | ||
1032 | .obj_attr_1 = OBJ_SIZE_BIG, | ||
1033 | .obj_attr_2 = 0 | ||
1034 | }, | ||
1035 | }, | ||
1036 | }, | ||
1037 | // START. | ||
1038 | { | ||
1039 | .frame = 0, | ||
1040 | .n_obj = 3, | ||
1041 | .n_frames = 8, | ||
1042 | .state = BTN_STATE_RELEASED, | ||
1043 | .animations = &btn_animation_startselect, | ||
1044 | .sprites = &(ObjState[]){ | ||
1045 | { | ||
1046 | .id = 0, | ||
1047 | .x = buttons_x - 10 - 14, | ||
1048 | .y = buttons_y + 40 + 10, | ||
1049 | .data = &gba_btn_startselect_data, | ||
1050 | .n_tiles = 2, | ||
1051 | .frames = 2, | ||
1052 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1053 | .obj_attr_1 = OBJ_SIZE_SMALL, | ||
1054 | .obj_attr_2 = 0 | ||
1055 | }, | ||
1056 | { | ||
1057 | .id = 0, | ||
1058 | .x = buttons_x - 18 - 14, | ||
1059 | .y = buttons_y + 46 + 10, | ||
1060 | .data = &gba_btn_start_text, | ||
1061 | .n_tiles = 4, | ||
1062 | .frames = 1, | ||
1063 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1064 | .obj_attr_1 = OBJ_SIZE_MID, | ||
1065 | .obj_attr_2 = 0 | ||
1066 | }, | ||
1067 | { | ||
1068 | .id = 0, | ||
1069 | .x = buttons_x - 19 - 14, | ||
1070 | .y = buttons_y + 37 + 10, | ||
1071 | .data = &gba_btn_fx_startselect, | ||
1072 | .n_tiles = 4, | ||
1073 | .frames = 4, | ||
1074 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1075 | .obj_attr_1 = OBJ_SIZE_MID, | ||
1076 | .obj_attr_2 = 0 | ||
1077 | }, | ||
1078 | }, | ||
1079 | }, | ||
1080 | // SELECT. | ||
1081 | { | ||
1082 | .frame = 0, | ||
1083 | .n_obj = 3, | ||
1084 | .n_frames = 8, | ||
1085 | .state = BTN_STATE_RELEASED, | ||
1086 | .animations = &btn_animation_startselect, | ||
1087 | .sprites = &(ObjState[]){ | ||
1088 | { | ||
1089 | .id = 0, | ||
1090 | .x = buttons_x - 10 + 26 - 14, | ||
1091 | .y = buttons_y + 40 + 10, | ||
1092 | .data = &gba_btn_startselect_data, | ||
1093 | .n_tiles = 2, | ||
1094 | .frames = 2, | ||
1095 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1096 | .obj_attr_1 = OBJ_SIZE_SMALL, | ||
1097 | .obj_attr_2 = 0 | ||
1098 | }, | ||
1099 | { | ||
1100 | .id = 0, | ||
1101 | .x = buttons_x - 18 + 26 - 14, | ||
1102 | .y = buttons_y + 46 + 10, | ||
1103 | .data = &gba_btn_select_text, | ||
1104 | .n_tiles = 4, | ||
1105 | .frames = 1, | ||
1106 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1107 | .obj_attr_1 = OBJ_SIZE_MID, | ||
1108 | .obj_attr_2 = 0 | ||
1109 | }, | ||
1110 | { | ||
1111 | .id = 0, | ||
1112 | .x = buttons_x - 19 + 26 - 14, | ||
1113 | .y = buttons_y + 37 + 10, | ||
1114 | .data = &gba_btn_fx_startselect, | ||
1115 | .n_tiles = 4, | ||
1116 | .frames = 4, | ||
1117 | .obj_attr_0 = OBJ_SHAPE_WIDE, | ||
1118 | .obj_attr_1 = OBJ_SIZE_MID, | ||
1119 | .obj_attr_2 = 0 | ||
1120 | }, | ||
1121 | }, | ||
1122 | }, | ||
994 | }; | 1123 | }; |
995 | for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) { | 1124 | for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) { |
996 | init_button_sprite(&buttons[i]); | 1125 | init_button_sprite(&buttons[i]); |
@@ -1003,40 +1132,6 @@ int main(void) { | |||
1003 | wait_vsync(); | 1132 | wait_vsync(); |
1004 | poll_keys(); | 1133 | poll_keys(); |
1005 | 1134 | ||
1006 | // if (key_pressed(KEY_B)) { | ||
1007 | // btn_b.frame = 0; | ||
1008 | // btn_b.state = BTN_STATE_PRESSED; | ||
1009 | // } else if (key_hold(KEY_B)) { | ||
1010 | // if (btn_b.frame < btn_b.n_frames - 1) { | ||
1011 | // btn_b.frame++; | ||
1012 | // } | ||
1013 | // } else { | ||
1014 | // // Finish the animation and reset idle state. | ||
1015 | // if (btn_b.frame > 0 && btn_b.frame < btn_b.n_frames - 1) { | ||
1016 | // btn_b.frame++; | ||
1017 | // } else { | ||
1018 | // btn_b.frame = 0; | ||
1019 | // btn_b.state = BTN_STATE_IDLE; | ||
1020 | // } | ||
1021 | // } | ||
1022 | // if (key_pressed(KEY_A)) { | ||
1023 | // btn_a.frame = 0; | ||
1024 | // btn_a.state = BTN_STATE_PRESSED; | ||
1025 | // } else if (key_hold(KEY_A)) { | ||
1026 | // size_t n_frames = animation_states[btn_a.state]->n_frames; | ||
1027 | // if (btn_a.frame < n_frames - 1) { | ||
1028 | // btn_a.frame++; | ||
1029 | // } | ||
1030 | // } else { | ||
1031 | // // Finish the animation and reset idle state. | ||
1032 | // size_t n_frames = animation_states[btn_a.state]->n_frames; | ||
1033 | // if (btn_a.frame > 0 && btn_a.frame < n_frames - 1) { | ||
1034 | // btn_a.frame++; | ||
1035 | // } else { | ||
1036 | // btn_a.frame = 0; | ||
1037 | // btn_a.state = BTN_STATE_IDLE; | ||
1038 | // } | ||
1039 | // } | ||
1040 | if (key_pressed(KEY_DOWN)) { | 1135 | if (key_pressed(KEY_DOWN)) { |
1041 | buttons[0].state = BTN_STATE_PRESSED; | 1136 | buttons[0].state = BTN_STATE_PRESSED; |
1042 | } else if (key_hold(KEY_DOWN)) { | 1137 | } else if (key_hold(KEY_DOWN)) { |
@@ -1079,6 +1174,34 @@ int main(void) { | |||
1079 | } else { | 1174 | } else { |
1080 | buttons[5].state = BTN_STATE_RELEASED; | 1175 | buttons[5].state = BTN_STATE_RELEASED; |
1081 | } | 1176 | } |
1177 | if (key_pressed(KEY_A)) { | ||
1178 | buttons[6].state = BTN_STATE_PRESSED; | ||
1179 | } else if (key_hold(KEY_A)) { | ||
1180 | buttons[6].state = BTN_STATE_HOLD; | ||
1181 | } else { | ||
1182 | buttons[6].state = BTN_STATE_RELEASED; | ||
1183 | } | ||
1184 | if (key_pressed(KEY_B)) { | ||
1185 | buttons[7].state = BTN_STATE_PRESSED; | ||
1186 | } else if (key_hold(KEY_B)) { | ||
1187 | buttons[7].state = BTN_STATE_HOLD; | ||
1188 | } else { | ||
1189 | buttons[7].state = BTN_STATE_RELEASED; | ||
1190 | } | ||
1191 | if (key_pressed(KEY_START)) { | ||
1192 | buttons[8].state = BTN_STATE_PRESSED; | ||
1193 | } else if (key_hold(KEY_START)) { | ||
1194 | buttons[8].state = BTN_STATE_HOLD; | ||
1195 | } else { | ||
1196 | buttons[8].state = BTN_STATE_RELEASED; | ||
1197 | } | ||
1198 | if (key_pressed(KEY_SELECT)) { | ||
1199 | buttons[9].state = BTN_STATE_PRESSED; | ||
1200 | } else if (key_hold(KEY_SELECT)) { | ||
1201 | buttons[9].state = BTN_STATE_HOLD; | ||
1202 | } else { | ||
1203 | buttons[9].state = BTN_STATE_RELEASED; | ||
1204 | } | ||
1082 | 1205 | ||
1083 | if (key_hold(KEY_DOWN)) { | 1206 | if (key_hold(KEY_DOWN)) { |
1084 | y += 3; | 1207 | y += 3; |