aboutsummaryrefslogtreecommitdiffstats
path: root/src/drawing.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drawing.c')
-rw-r--r--src/drawing.c454
1 files changed, 129 insertions, 325 deletions
diff --git a/src/drawing.c b/src/drawing.c
index 964c4ce..0ee1243 100644
--- a/src/drawing.c
+++ b/src/drawing.c
@@ -14,18 +14,10 @@ draw_channels(void) {
14 for (size_t i = 0; i < 4; i++) { 14 for (size_t i = 0; i < 4; i++) {
15 bool active = false; 15 bool active = false;
16 switch (i) { 16 switch (i) {
17 case 0: { 17 case 0: { active = patterns[pattern_selection_loc].ch1.active; } break;
18 active = patterns[pattern_selection_loc].ch1.active; 18 case 1: { active = patterns[pattern_selection_loc].ch2.active; } break;
19 } break; 19 case 2: { active = patterns[pattern_selection_loc].ch3.active; } break;
20 case 1: { 20 case 3: { active = patterns[pattern_selection_loc].ch4.active; } break;
21 active = patterns[pattern_selection_loc].ch2.active;
22 } break;
23 case 2: {
24 active = patterns[pattern_selection_loc].ch3.active;
25 } break;
26 case 3: {
27 active = patterns[pattern_selection_loc].ch4.active;
28 } break;
29 } 21 }
30 u8 clr = active ? COL_FG : COL_GREY; 22 u8 clr = active ? COL_FG : COL_GREY;
31 size_t y = CHAN_START_Y + i * CHAN_OFFSET_Y; 23 size_t y = CHAN_START_Y + i * CHAN_OFFSET_Y;
@@ -62,18 +54,10 @@ void
62draw_trigger(size_t chan, size_t i) { 54draw_trigger(size_t chan, size_t i) {
63 TriggerNote trig = {0}; 55 TriggerNote trig = {0};
64 switch (chan) { 56 switch (chan) {
65 case 0: { 57 case 0: { trig = patterns[pattern_selection_loc].ch1.notes[i]; } break;
66 trig = patterns[pattern_selection_loc].ch1.notes[i]; 58 case 1: { trig = patterns[pattern_selection_loc].ch2.notes[i]; } break;
67 } break; 59 case 2: { trig = patterns[pattern_selection_loc].ch3.notes[i]; } break;
68 case 1: { 60 case 3: { trig = patterns[pattern_selection_loc].ch4.notes[i]; } break;
69 trig = patterns[pattern_selection_loc].ch2.notes[i];
70 } break;
71 case 2: {
72 trig = patterns[pattern_selection_loc].ch3.notes[i];
73 } break;
74 case 3: {
75 trig = patterns[pattern_selection_loc].ch4.notes[i];
76 } break;
77 } 61 }
78 if (trig.active) { 62 if (trig.active) {
79 size_t offset_x = TRIG_OFFSET_X * (i % 8); 63 size_t offset_x = TRIG_OFFSET_X * (i % 8);
@@ -373,21 +357,11 @@ draw_note(u8 note, u8 clr) {
373 y0 = PIANO_START_Y + 2; 357 y0 = PIANO_START_Y + 2;
374 y1 = PIANO_START_Y - 2 + 11; 358 y1 = PIANO_START_Y - 2 + 11;
375 switch (value) { 359 switch (value) {
376 case 1: { 360 case 1: { x0 = PIANO_START_X + 2 + octave * 28 + 3; } break;
377 x0 = PIANO_START_X + 2 + octave * 28 + 3; 361 case 3: { x0 = PIANO_START_X + 2 + octave * 28 + 7; } break;
378 } break; 362 case 6: { x0 = PIANO_START_X + 2 + octave * 28 + 15; } break;
379 case 3: { 363 case 8: { x0 = PIANO_START_X + 2 + octave * 28 + 19; } break;
380 x0 = PIANO_START_X + 2 + octave * 28 + 7; 364 case 10: { x0 = PIANO_START_X + 2 + octave * 28 + 23; } break;
381 } break;
382 case 6: {
383 x0 = PIANO_START_X + 2 + octave * 28 + 15;
384 } break;
385 case 8: {
386 x0 = PIANO_START_X + 2 + octave * 28 + 19;
387 } break;
388 case 10: {
389 x0 = PIANO_START_X + 2 + octave * 28 + 23;
390 } break;
391 } 365 }
392 x1 = x0; 366 x1 = x0;
393 draw_line(x0, y0, x1, y1, clr); 367 draw_line(x0, y0, x1, y1, clr);
@@ -512,18 +486,10 @@ draw_params_cursor_square(size_t i, u8 clr, bool sweep) {
512void 486void
513draw_params_cursor(size_t i, u8 clr) { 487draw_params_cursor(size_t i, u8 clr) {
514 switch (channel_selection_loc) { 488 switch (channel_selection_loc) {
515 case 0: { 489 case 0: { draw_params_cursor_square(i, clr, true); } break;
516 draw_params_cursor_square(i, clr, true); 490 case 1: { draw_params_cursor_square(i, clr, false); } break;
517 } break; 491 case 2: { draw_params_cursor_wave(i, clr); } break;
518 case 1: { 492 case 3: { draw_params_cursor_noise(i, clr); } break;
519 draw_params_cursor_square(i, clr, false);
520 } break;
521 case 2: {
522 draw_params_cursor_wave(i, clr);
523 } break;
524 case 3: {
525 draw_params_cursor_noise(i, clr);
526 } break;
527 } 493 }
528} 494}
529 495
@@ -555,12 +521,11 @@ clear_parameters(void) {
555 521
556IWRAM_CODE 522IWRAM_CODE
557void 523void
558draw_parameters_wave(void) { 524draw_parameters_wave(ChannelWaveParams *params) {
559 // Draw current wave data. 525 // Draw current wave data.
560 Pattern *pat = &patterns[pattern_selection_loc];
561 { 526 {
562 u8 *wave_a = pat->ch3.params[trig_selection_loc].wave_a; 527 u8 *wave_a = params->wave_a;
563 u8 *wave_b = pat->ch3.params[trig_selection_loc].wave_b; 528 u8 *wave_b = params->wave_b;
564 529
565 size_t x = PARAMS_START_X; 530 size_t x = PARAMS_START_X;
566 size_t y = PARAMS_START_Y + 13; 531 size_t y = PARAMS_START_Y + 13;
@@ -617,16 +582,10 @@ draw_parameters_wave(void) {
617 draw_line(x, y + 17, x + 30, y + 17, COL_FG); 582 draw_line(x, y + 17, x + 30, y + 17, COL_FG);
618 txt_drawf_small("mode", x + 6, y, COL_FG); 583 txt_drawf_small("mode", x + 6, y, COL_FG);
619 584
620 switch (pat->ch3.params[trig_selection_loc].wave_mode) { 585 switch (params->wave_mode) {
621 case 0: { 586 case 0: { txt_drawf("A", x + 12, y + 7, COL_FG); } break;
622 txt_drawf("A", x + 12, y + 7, COL_FG); 587 case 1: { txt_drawf("B", x + 12, y + 7, COL_FG); } break;
623 } break; 588 case 2: { txt_drawf("A+B", x + 6, y + 7, COL_FG); } break;
624 case 1: {
625 txt_drawf("B", x + 12, y + 7, COL_FG);
626 } break;
627 case 2: {
628 txt_drawf("A+B", x + 6, y + 7, COL_FG);
629 } break;
630 } 589 }
631 } 590 }
632 591
@@ -641,22 +600,12 @@ draw_parameters_wave(void) {
641 draw_line(x, y + 20, x + 30, y + 20, COL_FG); 600 draw_line(x, y + 20, x + 30, y + 20, COL_FG);
642 txt_drawf_small("vol", x + 8, y + 3, COL_FG); 601 txt_drawf_small("vol", x + 8, y + 3, COL_FG);
643 602
644 switch (pat->ch3.params[trig_selection_loc].wave_volume) { 603 switch (params->wave_volume) {
645 case 0: { 604 case 0: { txt_drawf("0", x + 12, y + 10, COL_FG); } break;
646 txt_drawf("0", x + 12, y + 10, COL_FG); 605 case 1: { txt_drawf("25", x + 9, y + 10, COL_FG); } break;
647 } break; 606 case 2: { txt_drawf("50", x + 9, y + 10, COL_FG); } break;
648 case 1: { 607 case 3: { txt_drawf("75", x + 9, y + 10, COL_FG); } break;
649 txt_drawf("25", x + 9, y + 10, COL_FG); 608 case 4: { txt_drawf("100", x + 6, y + 10, COL_FG); } break;
650 } break;
651 case 2: {
652 txt_drawf("50", x + 9, y + 10, COL_FG);
653 } break;
654 case 3: {
655 txt_drawf("75", x + 9, y + 10, COL_FG);
656 } break;
657 case 4: {
658 txt_drawf("100", x + 6, y + 10, COL_FG);
659 } break;
660 } 609 }
661 } 610 }
662} 611}
@@ -737,18 +686,10 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
737 txt_drawf_small("duty", x + 3, y + 3, COL_FG); 686 txt_drawf_small("duty", x + 3, y + 3, COL_FG);
738 687
739 switch (params->duty_cycle) { 688 switch (params->duty_cycle) {
740 case 0: { 689 case 0: { txt_drawf("12", x + 6, y + 10, COL_FG); } break;
741 txt_drawf("12", x + 6, y + 10, COL_FG); 690 case 1: { txt_drawf("25", x + 6, y + 10, COL_FG); } break;
742 } break; 691 case 2: { txt_drawf("50", x + 6, y + 10, COL_FG); } break;
743 case 1: { 692 case 3: { txt_drawf("75", x + 6, y + 10, COL_FG); } break;
744 txt_drawf("25", x + 6, y + 10, COL_FG);
745 } break;
746 case 2: {
747 txt_drawf("50", x + 6, y + 10, COL_FG);
748 } break;
749 case 3: {
750 txt_drawf("75", x + 6, y + 10, COL_FG);
751 } break;
752 } 693 }
753 } 694 }
754 } 695 }
@@ -796,54 +737,22 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
796 txt_drawf_small("vol", x + 5, y + 3, COL_FG); 737 txt_drawf_small("vol", x + 5, y + 3, COL_FG);
797 738
798 switch (params->env_volume) { 739 switch (params->env_volume) {
799 case 0: { 740 case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break;
800 txt_drawf("0", x + 9, y + 10, COL_FG); 741 case 1: { txt_drawf("6", x + 9, y + 10, COL_FG); } break;
801 } break; 742 case 2: { txt_drawf("13", x + 6, y + 10, COL_FG); } break;
802 case 1: { 743 case 3: { txt_drawf("20", x + 6, y + 10, COL_FG); } break;
803 txt_drawf("6", x + 9, y + 10, COL_FG); 744 case 4: { txt_drawf("26", x + 6, y + 10, COL_FG); } break;
804 } break; 745 case 5: { txt_drawf("33", x + 6, y + 10, COL_FG); } break;
805 case 2: { 746 case 6: { txt_drawf("40", x + 6, y + 10, COL_FG); } break;
806 txt_drawf("13", x + 6, y + 10, COL_FG); 747 case 7: { txt_drawf("46", x + 6, y + 10, COL_FG); } break;
807 } break; 748 case 8: { txt_drawf("53", x + 6, y + 10, COL_FG); } break;
808 case 3: { 749 case 9: { txt_drawf("60", x + 6, y + 10, COL_FG); } break;
809 txt_drawf("20", x + 6, y + 10, COL_FG); 750 case 10: { txt_drawf("66", x + 6, y + 10, COL_FG); } break;
810 } break; 751 case 11: { txt_drawf("73", x + 6, y + 10, COL_FG); } break;
811 case 4: { 752 case 12: { txt_drawf("80", x + 6, y + 10, COL_FG); } break;
812 txt_drawf("26", x + 6, y + 10, COL_FG); 753 case 13: { txt_drawf("86", x + 6, y + 10, COL_FG); } break;
813 } break; 754 case 14: { txt_drawf("93", x + 6, y + 10, COL_FG); } break;
814 case 5: { 755 case 15: { txt_drawf("100", x + 3, y + 10, COL_FG); } break;
815 txt_drawf("33", x + 6, y + 10, COL_FG);
816 } break;
817 case 6: {
818 txt_drawf("40", x + 6, y + 10, COL_FG);
819 } break;
820 case 7: {
821 txt_drawf("46", x + 6, y + 10, COL_FG);
822 } break;
823 case 8: {
824 txt_drawf("53", x + 6, y + 10, COL_FG);
825 } break;
826 case 9: {
827 txt_drawf("60", x + 6, y + 10, COL_FG);
828 } break;
829 case 10: {
830 txt_drawf("66", x + 6, y + 10, COL_FG);
831 } break;
832 case 11: {
833 txt_drawf("73", x + 6, y + 10, COL_FG);
834 } break;
835 case 12: {
836 txt_drawf("80", x + 6, y + 10, COL_FG);
837 } break;
838 case 13: {
839 txt_drawf("86", x + 6, y + 10, COL_FG);
840 } break;
841 case 14: {
842 txt_drawf("93", x + 6, y + 10, COL_FG);
843 } break;
844 case 15: {
845 txt_drawf("100", x + 3, y + 10, COL_FG);
846 } break;
847 } 756 }
848 } 757 }
849 758
@@ -861,12 +770,8 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
861 char arr_up[2] = { 0x19, 0 }; 770 char arr_up[2] = { 0x19, 0 };
862 char arr_down[2] = { 0x18, 0 }; 771 char arr_down[2] = { 0x18, 0 };
863 switch (params->env_direction) { 772 switch (params->env_direction) {
864 case 0: { 773 case 0: { txt_drawf(arr_up, x + 9, y + 11, COL_FG); } break;
865 txt_drawf(arr_up, x + 9, y + 11, COL_FG); 774 case 1: { txt_drawf(arr_down, x + 9, y + 11, COL_FG); } break;
866 } break;
867 case 1: {
868 txt_drawf(arr_down, x + 9, y + 11, COL_FG);
869 } break;
870 } 775 }
871 } 776 }
872 777
@@ -882,30 +787,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
882 txt_drawf_small("time", x + 3, y + 3, COL_FG); 787 txt_drawf_small("time", x + 3, y + 3, COL_FG);
883 788
884 switch (params->env_time) { 789 switch (params->env_time) {
885 case 0: { 790 case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break;
886 txt_drawf("0", x + 9, y + 10, COL_FG); 791 case 1: { txt_drawf("14", x + 6, y + 10, COL_FG); } break;
887 } break; 792 case 2: { txt_drawf("28", x + 6, y + 10, COL_FG); } break;
888 case 1: { 793 case 3: { txt_drawf("42", x + 6, y + 10, COL_FG); } break;
889 txt_drawf("14", x + 6, y + 10, COL_FG); 794 case 4: { txt_drawf("57", x + 6, y + 10, COL_FG); } break;
890 } break; 795 case 5: { txt_drawf("71", x + 6, y + 10, COL_FG); } break;
891 case 2: { 796 case 6: { txt_drawf("85", x + 6, y + 10, COL_FG); } break;
892 txt_drawf("28", x + 6, y + 10, COL_FG); 797 case 7: { txt_drawf("100", x + 3, y + 10, COL_FG); } break;
893 } break;
894 case 3: {
895 txt_drawf("42", x + 6, y + 10, COL_FG);
896 } break;
897 case 4: {
898 txt_drawf("57", x + 6, y + 10, COL_FG);
899 } break;
900 case 5: {
901 txt_drawf("71", x + 6, y + 10, COL_FG);
902 } break;
903 case 6: {
904 txt_drawf("85", x + 6, y + 10, COL_FG);
905 } break;
906 case 7: {
907 txt_drawf("100", x + 3, y + 10, COL_FG);
908 } break;
909 } 798 }
910 } 799 }
911 } 800 }
@@ -922,30 +811,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
922 txt_drawf_small("num", x + 5, y + 3, COL_FG); 811 txt_drawf_small("num", x + 5, y + 3, COL_FG);
923 812
924 switch (params->sweep_number) { 813 switch (params->sweep_number) {
925 case 0: { 814 case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break;
926 txt_drawf("0", x + 9, y + 10, COL_FG); 815 case 1: { txt_drawf("1", x + 9, y + 10, COL_FG); } break;
927 } break; 816 case 2: { txt_drawf("2", x + 9, y + 10, COL_FG); } break;
928 case 1: { 817 case 3: { txt_drawf("3", x + 9, y + 10, COL_FG); } break;
929 txt_drawf("1", x + 9, y + 10, COL_FG); 818 case 4: { txt_drawf("4", x + 9, y + 10, COL_FG); } break;
930 } break; 819 case 5: { txt_drawf("5", x + 9, y + 10, COL_FG); } break;
931 case 2: { 820 case 6: { txt_drawf("6", x + 9, y + 10, COL_FG); } break;
932 txt_drawf("2", x + 9, y + 10, COL_FG); 821 case 7: { txt_drawf("7", x + 9, y + 10, COL_FG); } break;
933 } break;
934 case 3: {
935 txt_drawf("3", x + 9, y + 10, COL_FG);
936 } break;
937 case 4: {
938 txt_drawf("4", x + 9, y + 10, COL_FG);
939 } break;
940 case 5: {
941 txt_drawf("5", x + 9, y + 10, COL_FG);
942 } break;
943 case 6: {
944 txt_drawf("6", x + 9, y + 10, COL_FG);
945 } break;
946 case 7: {
947 txt_drawf("7", x + 9, y + 10, COL_FG);
948 } break;
949 } 822 }
950 } 823 }
951 824
@@ -961,30 +834,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
961 txt_drawf_small("time", x + 3, y + 3, COL_FG); 834 txt_drawf_small("time", x + 3, y + 3, COL_FG);
962 835
963 switch (params->sweep_time) { 836 switch (params->sweep_time) {
964 case 0: { 837 case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break;
965 txt_drawf("0", x + 9, y + 10, COL_FG); 838 case 1: { txt_drawf("1", x + 9, y + 10, COL_FG); } break;
966 } break; 839 case 2: { txt_drawf("2", x + 9, y + 10, COL_FG); } break;
967 case 1: { 840 case 3: { txt_drawf("3", x + 9, y + 10, COL_FG); } break;
968 txt_drawf("1", x + 9, y + 10, COL_FG); 841 case 4: { txt_drawf("4", x + 9, y + 10, COL_FG); } break;
969 } break; 842 case 5: { txt_drawf("5", x + 9, y + 10, COL_FG); } break;
970 case 2: { 843 case 6: { txt_drawf("6", x + 9, y + 10, COL_FG); } break;
971 txt_drawf("2", x + 9, y + 10, COL_FG); 844 case 7: { txt_drawf("7", x + 9, y + 10, COL_FG); } break;
972 } break;
973 case 3: {
974 txt_drawf("3", x + 9, y + 10, COL_FG);
975 } break;
976 case 4: {
977 txt_drawf("4", x + 9, y + 10, COL_FG);
978 } break;
979 case 5: {
980 txt_drawf("5", x + 9, y + 10, COL_FG);
981 } break;
982 case 6: {
983 txt_drawf("6", x + 9, y + 10, COL_FG);
984 } break;
985 case 7: {
986 txt_drawf("7", x + 9, y + 10, COL_FG);
987 } break;
988 } 845 }
989 } 846 }
990 847
@@ -1002,12 +859,8 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
1002 char arr_up[2] = { 0x19, 0 }; 859 char arr_up[2] = { 0x19, 0 };
1003 char arr_down[2] = { 0x18, 0 }; 860 char arr_down[2] = { 0x18, 0 };
1004 switch (params->sweep_direction) { 861 switch (params->sweep_direction) {
1005 case 0: { 862 case 0: { txt_drawf(arr_up, x + 9, y + 11, COL_FG); } break;
1006 txt_drawf(arr_up, x + 9, y + 11, COL_FG); 863 case 1: { txt_drawf(arr_down, x + 9, y + 11, COL_FG); } break;
1007 } break;
1008 case 1: {
1009 txt_drawf(arr_down, x + 9, y + 11, COL_FG);
1010 } break;
1011 } 864 }
1012 } 865 }
1013 866
@@ -1024,10 +877,8 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) {
1024} 877}
1025 878
1026void 879void
1027draw_parameters_noise(void) { 880draw_parameters_noise(ChannelNoiseParams* params) {
1028 size_t x_offset = 30; 881 size_t x_offset = 30;
1029 Pattern *pat = &patterns[pattern_selection_loc];
1030 ChannelNoiseParams *params = &pat->ch4.params[trig_selection_loc];
1031 882
1032 // Bit mode. 883 // Bit mode.
1033 { 884 {
@@ -1043,12 +894,8 @@ draw_parameters_noise(void) {
1043 txt_drawf_small("mode", x + 3, y + 3, COL_FG); 894 txt_drawf_small("mode", x + 3, y + 3, COL_FG);
1044 895
1045 switch (params->bit_mode) { 896 switch (params->bit_mode) {
1046 case 0: { 897 case 0: { txt_drawf("A", x + 9, y + 10, COL_FG); } break;
1047 txt_drawf("A", x + 9, y + 10, COL_FG); 898 case 1: { txt_drawf("B", x + 9, y + 10, COL_FG); } break;
1048 } break;
1049 case 1: {
1050 txt_drawf("B", x + 9, y + 10, COL_FG);
1051 } break;
1052 } 899 }
1053 } 900 }
1054 } 901 }
@@ -1096,54 +943,22 @@ draw_parameters_noise(void) {
1096 txt_drawf_small("vol", x + 5, y + 3, COL_FG); 943 txt_drawf_small("vol", x + 5, y + 3, COL_FG);
1097 944
1098 switch (params->env_volume) { 945 switch (params->env_volume) {
1099 case 0: { 946 case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break;
1100 txt_drawf("0", x + 9, y + 10, COL_FG); 947 case 1: { txt_drawf("6", x + 9, y + 10, COL_FG); } break;
1101 } break; 948 case 2: { txt_drawf("13", x + 6, y + 10, COL_FG); } break;
1102 case 1: { 949 case 3: { txt_drawf("20", x + 6, y + 10, COL_FG); } break;
1103 txt_drawf("6", x + 9, y + 10, COL_FG); 950 case 4: { txt_drawf("26", x + 6, y + 10, COL_FG); } break;
1104 } break; 951 case 5: { txt_drawf("33", x + 6, y + 10, COL_FG); } break;
1105 case 2: { 952 case 6: { txt_drawf("40", x + 6, y + 10, COL_FG); } break;
1106 txt_drawf("13", x + 6, y + 10, COL_FG); 953 case 7: { txt_drawf("46", x + 6, y + 10, COL_FG); } break;
1107 } break; 954 case 8: { txt_drawf("53", x + 6, y + 10, COL_FG); } break;
1108 case 3: { 955 case 9: { txt_drawf("60", x + 6, y + 10, COL_FG); } break;
1109 txt_drawf("20", x + 6, y + 10, COL_FG); 956 case 10: { txt_drawf("66", x + 6, y + 10, COL_FG); } break;
1110 } break; 957 case 11: { txt_drawf("73", x + 6, y + 10, COL_FG); } break;
1111 case 4: { 958 case 12: { txt_drawf("80", x + 6, y + 10, COL_FG); } break;
1112 txt_drawf("26", x + 6, y + 10, COL_FG); 959 case 13: { txt_drawf("86", x + 6, y + 10, COL_FG); } break;
1113 } break; 960 case 14: { txt_drawf("93", x + 6, y + 10, COL_FG); } break;
1114 case 5: { 961 case 15: { txt_drawf("100", x + 3, y + 10, COL_FG); } break;
1115 txt_drawf("33", x + 6, y + 10, COL_FG);
1116 } break;
1117 case 6: {
1118 txt_drawf("40", x + 6, y + 10, COL_FG);
1119 } break;
1120 case 7: {
1121 txt_drawf("46", x + 6, y + 10, COL_FG);
1122 } break;
1123 case 8: {
1124 txt_drawf("53", x + 6, y + 10, COL_FG);
1125 } break;
1126 case 9: {
1127 txt_drawf("60", x + 6, y + 10, COL_FG);
1128 } break;
1129 case 10: {
1130 txt_drawf("66", x + 6, y + 10, COL_FG);
1131 } break;
1132 case 11: {
1133 txt_drawf("73", x + 6, y + 10, COL_FG);
1134 } break;
1135 case 12: {
1136 txt_drawf("80", x + 6, y + 10, COL_FG);
1137 } break;
1138 case 13: {
1139 txt_drawf("86", x + 6, y + 10, COL_FG);
1140 } break;
1141 case 14: {
1142 txt_drawf("93", x + 6, y + 10, COL_FG);
1143 } break;
1144 case 15: {
1145 txt_drawf("100", x + 3, y + 10, COL_FG);
1146 } break;
1147 } 962 }
1148 } 963 }
1149 964
@@ -1182,30 +997,14 @@ draw_parameters_noise(void) {
1182 txt_drawf_small("time", x + 3, y + 3, COL_FG); 997 txt_drawf_small("time", x + 3, y + 3, COL_FG);
1183 998
1184 switch (params->env_time) { 999 switch (params->env_time) {
1185 case 0: { 1000 case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break;
1186 txt_drawf("0", x + 9, y + 10, COL_FG); 1001 case 1: { txt_drawf("14", x + 6, y + 10, COL_FG); } break;
1187 } break; 1002 case 2: { txt_drawf("28", x + 6, y + 10, COL_FG); } break;
1188 case 1: { 1003 case 3: { txt_drawf("42", x + 6, y + 10, COL_FG); } break;
1189 txt_drawf("14", x + 6, y + 10, COL_FG); 1004 case 4: { txt_drawf("57", x + 6, y + 10, COL_FG); } break;
1190 } break; 1005 case 5: { txt_drawf("71", x + 6, y + 10, COL_FG); } break;
1191 case 2: { 1006 case 6: { txt_drawf("85", x + 6, y + 10, COL_FG); } break;
1192 txt_drawf("28", x + 6, y + 10, COL_FG); 1007 case 7: { txt_drawf("100", x + 3, y + 10, COL_FG); } break;
1193 } break;
1194 case 3: {
1195 txt_drawf("42", x + 6, y + 10, COL_FG);
1196 } break;
1197 case 4: {
1198 txt_drawf("57", x + 6, y + 10, COL_FG);
1199 } break;
1200 case 5: {
1201 txt_drawf("71", x + 6, y + 10, COL_FG);
1202 } break;
1203 case 6: {
1204 txt_drawf("85", x + 6, y + 10, COL_FG);
1205 } break;
1206 case 7: {
1207 txt_drawf("100", x + 3, y + 10, COL_FG);
1208 } break;
1209 } 1008 }
1210 } 1009 }
1211 } 1010 }
@@ -1221,27 +1020,32 @@ draw_parameters_noise(void) {
1221void 1020void
1222draw_parameters(void) { 1021draw_parameters(void) {
1223 clear_parameters(); 1022 clear_parameters();
1224 if (input_handler != handle_trigger_selection && 1023 Pattern *pat = &patterns[pattern_selection_loc];
1225 input_handler != handle_param_selection_sq1 && 1024 if (input_handler == handle_trigger_selection ||
1226 input_handler != handle_param_selection_sq2 && 1025 input_handler == handle_param_selection_sq1 ||
1227 input_handler != handle_param_selection_wave && 1026 input_handler == handle_param_selection_sq2 ||
1228 input_handler != handle_param_selection_noise) { 1027 input_handler == handle_param_selection_wave ||
1028 input_handler == handle_param_selection_noise) {
1029 switch (channel_selection_loc) {
1030 case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true); } break;
1031 case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false); } break;
1032 case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc]); } break;
1033 case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc]); } break;
1034 }
1229 return; 1035 return;
1230 } 1036 }
1231 Pattern *pat = &patterns[pattern_selection_loc]; 1037 if (input_handler == handle_channel_selection ||
1232 switch (channel_selection_loc) { 1038 input_handler == handle_param_selection_ch1 ||
1233 case 0: { 1039 input_handler == handle_param_selection_ch2 ||
1234 draw_parameters_square(&pat->ch1.params[trig_selection_loc], true); 1040 input_handler == handle_param_selection_ch3 ||
1235 } break; 1041 input_handler == handle_param_selection_ch4) {
1236 case 1: { 1042 switch (channel_selection_loc) {
1237 draw_parameters_square(&pat->ch2.params[trig_selection_loc], false); 1043 case 0: { draw_parameters_square(&pat->ch1.params[16], true); } break;
1238 } break; 1044 case 1: { draw_parameters_square(&pat->ch2.params[16], false); } break;
1239 case 2: { 1045 case 2: { draw_parameters_wave(&pat->ch3.params[16]); } break;
1240 draw_parameters_wave(); 1046 case 3: { draw_parameters_noise(&pat->ch4.params[16]); } break;
1241 } break; 1047 }
1242 case 3: { 1048 return;
1243 draw_parameters_noise();
1244 } break;
1245 } 1049 }
1246} 1050}
1247 1051