summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-04-23 23:52:00 +0200
committerBad Diode <bd@badd10de.dev>2021-04-23 23:52:00 +0200
commit4c39f45406b12ab536ad22275eb160a368f380ff (patch)
treefedb7797c4e373f4a545687b844666970f5c5c68
parent30a7de0d7bfd4b076a57a029a08ce1fd9eccd429 (diff)
downloadgba-experiments-4c39f45406b12ab536ad22275eb160a368f380ff.tar.gz
gba-experiments-4c39f45406b12ab536ad22275eb160a368f380ff.zip
Add L/R buttons with new animations
-rw-r--r--src/main.c123
1 files changed, 100 insertions, 23 deletions
diff --git a/src/main.c b/src/main.c
index 787d39b..8008c32 100644
--- a/src/main.c
+++ b/src/main.c
@@ -710,28 +710,6 @@ int main(void) {
710 OBJ_ATTR_1(btn_a.id) = btn_a.x | (1 << 0xE); 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; 711 OBJ_ATTR_2(btn_a.id) = sprites[btn_a.id].tile_start;
712 712
713 ButtonSprite btn_l = {
714 .id = load_packed_sprite_data(&gba_btn_l_data, 2, 1),
715 .x = buttons_x - 64 - 28,
716 .y = buttons_y - 32 - 20,
717 .frame = 0,
718 .state = BTN_STATE_IDLE,
719 };
720 OBJ_ATTR_0(btn_l.id) = btn_l.y | (1 << 0xE);
721 OBJ_ATTR_1(btn_l.id) = btn_l.x;
722 OBJ_ATTR_2(btn_l.id) = sprites[btn_l.id].tile_start;
723
724 ButtonSprite btn_r = {
725 .id = load_packed_sprite_data(&gba_btn_r_data, 2, 1),
726 .x = buttons_x + 32 + 20,
727 .y = buttons_y - 32 - 20,
728 .frame = 0,
729 .state = BTN_STATE_IDLE,
730 };
731 OBJ_ATTR_0(btn_r.id) = btn_r.y | (1 << 0xE);
732 OBJ_ATTR_1(btn_r.id) = btn_r.x;
733 OBJ_ATTR_2(btn_r.id) = sprites[btn_r.id].tile_start;
734
735 ButtonSprite btn_start = { 713 ButtonSprite btn_start = {
736 .id = load_packed_sprite_data(&gba_btn_startselect_data, 2, 2), 714 .id = load_packed_sprite_data(&gba_btn_startselect_data, 2, 2),
737 .x = buttons_x - 10, 715 .x = buttons_x - 10,
@@ -927,7 +905,92 @@ int main(void) {
927 }, 905 },
928 }, 906 },
929 }, 907 },
930 908 // L.
909 {
910 .frame = 0,
911 .n_obj = 3,
912 .n_frames = 8,
913 .state = BTN_STATE_RELEASED,
914 .animations = &btn_animation,
915 .sprites = &(ObjState[]){
916 {
917 .id = 0,
918 .x = buttons_x - 64 - 28,
919 .y = buttons_y - 32 - 20,
920 .data = &gba_btn_l_data,
921 .n_tiles = 4,
922 .frames = 1,
923 .obj_attr_0 = OBJ_SHAPE_WIDE,
924 .obj_attr_1 = OBJ_SIZE_SMALL,
925 .obj_attr_2 = 0
926 },
927 {
928 .id = 0,
929 .x = buttons_x - 64 - 28,
930 .y = buttons_y - 32 - 20 + 2,
931 .data = &gba_btn_lr_shadow_data,
932 .n_tiles = 2,
933 .frames = 1,
934 .obj_attr_0 = OBJ_SHAPE_WIDE,
935 .obj_attr_1 = OBJ_SIZE_SMALL,
936 .obj_attr_2 = 0
937 },
938 {
939 .id = 0,
940 .x = buttons_x - 64 - 28 - 12,
941 .y = buttons_y - 32 - 20 - 12,
942 .data = &gba_btn_fx_lr,
943 .n_tiles = 4,
944 .frames = 4,
945 .obj_attr_0 = OBJ_SHAPE_SQUARE,
946 .obj_attr_1 = OBJ_SIZE_MID,
947 .obj_attr_2 = 0
948 },
949 },
950 },
951 // R.
952 {
953 .frame = 0,
954 .n_obj = 3,
955 .n_frames = 8,
956 .state = BTN_STATE_RELEASED,
957 .animations = &btn_animation,
958 .sprites = &(ObjState[]){
959 {
960 .id = 0,
961 .x = buttons_x + 32 + 20 + 24,
962 .y = buttons_y - 32 - 20,
963 .data = &gba_btn_r_data,
964 .n_tiles = 4,
965 .frames = 1,
966 .obj_attr_0 = OBJ_SHAPE_WIDE,
967 .obj_attr_1 = OBJ_SIZE_SMALL,
968 .obj_attr_2 = 0
969 },
970 {
971 .id = 0,
972 .x = buttons_x + 32 + 20 + 24,
973 .y = buttons_y - 32 - 20 + 2,
974 .data = &gba_btn_lr_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 + 20 + 12 + 24,
984 .y = buttons_y - 32 - 20 - 12,
985 .data = &gba_btn_fx_lr,
986 .n_tiles = 4,
987 .frames = 4,
988 .obj_attr_0 = OBJ_SHAPE_SQUARE,
989 .obj_attr_1 = OBJ_H_FLIP | OBJ_SIZE_MID,
990 .obj_attr_2 = 0
991 },
992 },
993 },
931 }; 994 };
932 for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) { 995 for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) {
933 init_button_sprite(&buttons[i]); 996 init_button_sprite(&buttons[i]);
@@ -1002,6 +1065,20 @@ int main(void) {
1002 } else { 1065 } else {
1003 buttons[3].state = BTN_STATE_RELEASED; 1066 buttons[3].state = BTN_STATE_RELEASED;
1004 } 1067 }
1068 if (key_pressed(KEY_L)) {
1069 buttons[4].state = BTN_STATE_PRESSED;
1070 } else if (key_hold(KEY_L)) {
1071 buttons[4].state = BTN_STATE_HOLD;
1072 } else {
1073 buttons[4].state = BTN_STATE_RELEASED;
1074 }
1075 if (key_pressed(KEY_R)) {
1076 buttons[5].state = BTN_STATE_PRESSED;
1077 } else if (key_hold(KEY_R)) {
1078 buttons[5].state = BTN_STATE_HOLD;
1079 } else {
1080 buttons[5].state = BTN_STATE_RELEASED;
1081 }
1005 1082
1006 if (key_hold(KEY_DOWN)) { 1083 if (key_hold(KEY_DOWN)) {
1007 y += 3; 1084 y += 3;