summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c199
1 files changed, 155 insertions, 44 deletions
diff --git a/src/main.c b/src/main.c
index e74df00..787d39b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -710,39 +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_up = {
714 .id = load_packed_sprite_data(&gba_btn_updown_data, 4, 1),
715 .x = buttons_x - 64 - 16,
716 .y = buttons_y + 32 - 18,
717 .frame = 0,
718 .state = BTN_STATE_IDLE,
719 };
720 OBJ_ATTR_0(btn_up.id) = btn_up.y;
721 OBJ_ATTR_1(btn_up.id) = btn_up.x | (1 << 0xE);
722 OBJ_ATTR_2(btn_up.id) = sprites[btn_up.id].tile_start;
723
724 ButtonSprite btn_left = {
725 .id = load_packed_sprite_data(&gba_btn_leftright_data, 4, 1),
726 .x = buttons_x - 64 - 16 - 10,
727 .y = buttons_y + 32 - 10,
728 .frame = 0,
729 .state = BTN_STATE_IDLE,
730 };
731 OBJ_ATTR_0(btn_left.id) = btn_left.y;
732 OBJ_ATTR_1(btn_left.id) = btn_left.x | (1 << 0xE);
733 OBJ_ATTR_2(btn_left.id) = sprites[btn_left.id].tile_start;
734
735 ButtonSprite btn_right = {
736 .id = load_packed_sprite_data(&gba_btn_leftright_data, 4, 1),
737 .x = buttons_x - 64 - 16 + 11,
738 .y = buttons_y + 32 - 10,
739 .frame = 0,
740 .state = BTN_STATE_IDLE,
741 };
742 OBJ_ATTR_0(btn_right.id) = btn_right.y;
743 OBJ_ATTR_1(btn_right.id) = btn_right.x | (1 << 0xE) | (1 << 0xC);
744 OBJ_ATTR_2(btn_right.id) = sprites[btn_right.id].tile_start;
745
746 ButtonSprite btn_l = { 713 ButtonSprite btn_l = {
747 .id = load_packed_sprite_data(&gba_btn_l_data, 2, 1), 714 .id = load_packed_sprite_data(&gba_btn_l_data, 2, 1),
748 .x = buttons_x - 64 - 28, 715 .x = buttons_x - 64 - 28,
@@ -788,12 +755,13 @@ int main(void) {
788 OBJ_ATTR_2(btn_select.id) = sprites[btn_select.id].tile_start; 755 OBJ_ATTR_2(btn_select.id) = sprites[btn_select.id].tile_start;
789 756
790 MultiSprite buttons[] = { 757 MultiSprite buttons[] = {
758 // DOWN.
791 { 759 {
792 .frame = 0, 760 .frame = 0,
793 .n_obj = 3, 761 .n_obj = 3,
794 .n_frames = 8, 762 .n_frames = 8,
795 .state = BTN_STATE_RELEASED, 763 .state = BTN_STATE_RELEASED,
796 .animations = &btn_down_animation, 764 .animations = &btn_animation,
797 .sprites = &(ObjState[]){ 765 .sprites = &(ObjState[]){
798 { 766 {
799 .id = 0, 767 .id = 0,
@@ -809,7 +777,7 @@ int main(void) {
809 { 777 {
810 .id = 0, 778 .id = 0,
811 .x = buttons_x - 64 - 16, 779 .x = buttons_x - 64 - 16,
812 .y = buttons_y + 29, 780 .y = buttons_y + 29 + 11,
813 .data = &gba_btn_down_shadow_data, 781 .data = &gba_btn_down_shadow_data,
814 .n_tiles = 2, 782 .n_tiles = 2,
815 .frames = 1, 783 .frames = 1,
@@ -819,17 +787,147 @@ int main(void) {
819 }, 787 },
820 { 788 {
821 .id = 0, 789 .id = 0,
790 .x = buttons_x - 64 - 16 - 8,
791 .y = buttons_y + 29 + 17,
792 .data = &gba_btn_fx_downup,
793 .n_tiles = 4,
794 .frames = 4,
795 .obj_attr_0 = OBJ_SHAPE_WIDE,
796 .obj_attr_1 = OBJ_SIZE_MID,
797 .obj_attr_2 = 0
798 },
799 },
800 },
801 // UP.
802 {
803 .frame = 0,
804 .n_obj = 3,
805 .n_frames = 8,
806 .state = BTN_STATE_RELEASED,
807 .animations = &btn_animation,
808 .sprites = &(ObjState[]){
809 {
810 .id = 0,
822 .x = buttons_x - 64 - 16, 811 .x = buttons_x - 64 - 16,
823 .y = buttons_y + 29, 812 .y = buttons_y + 32 - 18,
813 .data = &gba_btn_updown_data,
814 .n_tiles = 4,
815 .frames = 1,
816 .obj_attr_0 = 0,
817 .obj_attr_1 = OBJ_SIZE_MID,
818 .obj_attr_2 = 0
819 },
820 {
821 .id = 0,
822 .x = buttons_x - 64 - 16,
823 .y = buttons_y + 32 - 18 + 7,
824 .data = &gba_btn_up_shadow_data,
825 .n_tiles = 2,
826 .frames = 1,
827 .obj_attr_0 = OBJ_SHAPE_WIDE,
828 .obj_attr_1 = OBJ_SIZE_SMALL,
829 .obj_attr_2 = 0
830 },
831 {
832 .id = 0,
833 .x = buttons_x - 64 - 16 - 8,
834 .y = buttons_y + 32 - 18 - 7,
824 .data = &gba_btn_fx_downup, 835 .data = &gba_btn_fx_downup,
825 .n_tiles = 4, 836 .n_tiles = 4,
826 .frames = 4, 837 .frames = 4,
827 .obj_attr_0 = OBJ_SHAPE_WIDE, 838 .obj_attr_0 = OBJ_SHAPE_WIDE,
839 .obj_attr_1 = OBJ_V_FLIP | OBJ_SIZE_MID,
840 .obj_attr_2 = 0
841 },
842 },
843 },
844 // LEFT
845 {
846 .frame = 0,
847 .n_obj = 3,
848 .n_frames = 8,
849 .state = BTN_STATE_RELEASED,
850 .animations = &btn_animation,
851 .sprites = &(ObjState[]){
852 {
853 .id = 0,
854 .x = buttons_x - 64 - 16 - 10,
855 .y = buttons_y + 32 - 10,
856 .data = &gba_btn_leftright_data,
857 .n_tiles = 4,
858 .frames = 1,
859 .obj_attr_0 = 0,
860 .obj_attr_1 = OBJ_SIZE_MID,
861 .obj_attr_2 = 0
862 },
863 {
864 .id = 0,
865 .x = buttons_x - 64 - 16 - 10,
866 .y = buttons_y + 32 - 10 + 6,
867 .data = &gba_btn_leftright_shadow_data,
868 .n_tiles = 2,
869 .frames = 1,
870 .obj_attr_0 = OBJ_SHAPE_WIDE,
871 .obj_attr_1 = OBJ_SIZE_SMALL,
872 .obj_attr_2 = 0
873 },
874 {
875 .id = 0,
876 .x = buttons_x - 64 - 16 - 10 - 6,
877 .y = buttons_y + 32 - 10 - 8,
878 .data = &gba_btn_fx_leftright,
879 .n_tiles = 4,
880 .frames = 4,
881 .obj_attr_0 = OBJ_SHAPE_TALL,
882 .obj_attr_1 = OBJ_H_FLIP | OBJ_SIZE_MID,
883 .obj_attr_2 = 0
884 },
885 },
886 },
887 // RIGHT.
888 {
889 .frame = 0,
890 .n_obj = 3,
891 .n_frames = 8,
892 .state = BTN_STATE_RELEASED,
893 .animations = &btn_animation,
894 .sprites = &(ObjState[]){
895 {
896 .id = 0,
897 .x = buttons_x - 64 - 16 + 11,
898 .y = buttons_y + 32 - 10,
899 .data = &gba_btn_leftright_data,
900 .n_tiles = 4,
901 .frames = 1,
902 .obj_attr_0 = 0,
903 .obj_attr_1 = OBJ_H_FLIP | OBJ_SIZE_MID,
904 .obj_attr_2 = 0
905 },
906 {
907 .id = 0,
908 .x = buttons_x - 64 - 16 + 11,
909 .y = buttons_y + 32 - 10 + 6,
910 .data = &gba_btn_leftright_shadow_data,
911 .n_tiles = 2,
912 .frames = 1,
913 .obj_attr_0 = OBJ_SHAPE_WIDE,
914 .obj_attr_1 = OBJ_H_FLIP | OBJ_SIZE_SMALL,
915 .obj_attr_2 = 0
916 },
917 {
918 .id = 0,
919 .x = buttons_x - 64 - 16 + 11 + 14,
920 .y = buttons_y + 32 - 10 - 8,
921 .data = &gba_btn_fx_leftright,
922 .n_tiles = 4,
923 .frames = 4,
924 .obj_attr_0 = OBJ_SHAPE_TALL,
828 .obj_attr_1 = OBJ_SIZE_MID, 925 .obj_attr_1 = OBJ_SIZE_MID,
829 .obj_attr_2 = 0 926 .obj_attr_2 = 0
830 }, 927 },
831 }, 928 },
832 }, 929 },
930
833 }; 931 };
834 for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) { 932 for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) {
835 init_button_sprite(&buttons[i]); 933 init_button_sprite(&buttons[i]);
@@ -883,6 +981,27 @@ int main(void) {
883 } else { 981 } else {
884 buttons[0].state = BTN_STATE_RELEASED; 982 buttons[0].state = BTN_STATE_RELEASED;
885 } 983 }
984 if (key_pressed(KEY_UP)) {
985 buttons[1].state = BTN_STATE_PRESSED;
986 } else if (key_hold(KEY_UP)) {
987 buttons[1].state = BTN_STATE_HOLD;
988 } else {
989 buttons[1].state = BTN_STATE_RELEASED;
990 }
991 if (key_pressed(KEY_LEFT)) {
992 buttons[2].state = BTN_STATE_PRESSED;
993 } else if (key_hold(KEY_LEFT)) {
994 buttons[2].state = BTN_STATE_HOLD;
995 } else {
996 buttons[2].state = BTN_STATE_RELEASED;
997 }
998 if (key_pressed(KEY_RIGHT)) {
999 buttons[3].state = BTN_STATE_PRESSED;
1000 } else if (key_hold(KEY_RIGHT)) {
1001 buttons[3].state = BTN_STATE_HOLD;
1002 } else {
1003 buttons[3].state = BTN_STATE_RELEASED;
1004 }
886 1005
887 if (key_hold(KEY_DOWN)) { 1006 if (key_hold(KEY_DOWN)) {
888 y += 3; 1007 y += 3;
@@ -897,14 +1016,6 @@ int main(void) {
897 x += 3; 1016 x += 3;
898 } 1017 }
899 1018
900 // OBJ_ATTR_2(btn_b.id) = sprites[btn_b.id].tile_start + animation_states[btn_b.state]->tile_offsets[btn_b.frame];
901 // OBJ_ATTR_2(btn_a.id) = sprites[btn_a.id].tile_start + animation_states[btn_a.state]->tile_offsets[btn_a.frame];
902 // OBJ_ATTR_2(btn_up.id) = sprites[btn_up.id].tile_start + animation_states[btn_up.state]->tile_offsets[btn_up.frame];
903 // // OBJ_ATTR_2(btn_down.id) = sprites[btn_down.id].tile_start + animation_states[btn_down.state]->tile_offsets[btn_down.frame];
904 // OBJ_ATTR_2(btn_left.id) = sprites[btn_left.id].tile_start + animation_states[btn_left.state]->tile_offsets[btn_left.frame];
905 // OBJ_ATTR_2(btn_right.id) = sprites[btn_right.id].tile_start + animation_states[btn_right.state]->tile_offsets[btn_right.frame];
906 // OBJ_ATTR_2(btn_l.id) = sprites[btn_l.id].tile_start + animation_states[btn_l.state]->tile_offsets[btn_l.frame];
907 // OBJ_ATTR_2(btn_r.id) = sprites[btn_r.id].tile_start + animation_states[btn_r.state]->tile_offsets[btn_r.frame];
908 frame_counter++; 1019 frame_counter++;
909 BG_H_SCROLL_0 = x; 1020 BG_H_SCROLL_0 = x;
910 BG_V_SCROLL_0 = y; 1021 BG_V_SCROLL_0 = y;