diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/drawing.c | 391 | ||||
-rw-r--r-- | src/main.c | 8 |
2 files changed, 209 insertions, 190 deletions
diff --git a/src/drawing.c b/src/drawing.c index acf1e63..149aa19 100644 --- a/src/drawing.c +++ b/src/drawing.c | |||
@@ -521,7 +521,12 @@ clear_parameters(void) { | |||
521 | 521 | ||
522 | IWRAM_CODE | 522 | IWRAM_CODE |
523 | void | 523 | void |
524 | draw_parameters_wave(ChannelWaveParams *params) { | 524 | draw_parameters_wave(ChannelWaveParams *params, bool global) { |
525 | u8 col_fg = COL_FG; | ||
526 | if (global && input_handler == handle_channel_selection) { | ||
527 | col_fg = COL_GREY; | ||
528 | } | ||
529 | |||
525 | // Draw current wave data. | 530 | // Draw current wave data. |
526 | { | 531 | { |
527 | u8 *wave_a = params->wave_a; | 532 | u8 *wave_a = params->wave_a; |
@@ -536,23 +541,23 @@ draw_parameters_wave(ChannelWaveParams *params) { | |||
536 | 541 | ||
537 | // Wave text. | 542 | // Wave text. |
538 | x -= 2; | 543 | x -= 2; |
539 | txt_drawf_small("%02x%02x%02x%02x", x, y + 20, COL_FG, | 544 | txt_drawf_small("%02x%02x%02x%02x", x, y + 20, col_fg, |
540 | wave_a[0], wave_a[1], wave_a[2], wave_a[3]); | 545 | wave_a[0], wave_a[1], wave_a[2], wave_a[3]); |
541 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, COL_FG, | 546 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, col_fg, |
542 | wave_a[4], wave_a[5], wave_a[6], wave_a[7]); | 547 | wave_a[4], wave_a[5], wave_a[6], wave_a[7]); |
543 | txt_drawf_small("%02x%02x%02x%02x", x, y + 28, COL_FG, | 548 | txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg, |
544 | wave_a[8], wave_a[9], wave_a[10], wave_a[11]); | 549 | wave_a[8], wave_a[9], wave_a[10], wave_a[11]); |
545 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 28, COL_FG, | 550 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 28, col_fg, |
546 | wave_a[12], wave_a[13], wave_a[14], wave_a[15]); | 551 | wave_a[12], wave_a[13], wave_a[14], wave_a[15]); |
547 | 552 | ||
548 | x += 70; | 553 | x += 70; |
549 | txt_drawf_small("%02x%02x%02x%02x", x, y + 20, COL_FG, | 554 | txt_drawf_small("%02x%02x%02x%02x", x, y + 20, col_fg, |
550 | wave_b[0], wave_b[1], wave_b[2], wave_b[3]); | 555 | wave_b[0], wave_b[1], wave_b[2], wave_b[3]); |
551 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, COL_FG, | 556 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, col_fg, |
552 | wave_b[4], wave_b[5], wave_b[6], wave_b[7]); | 557 | wave_b[4], wave_b[5], wave_b[6], wave_b[7]); |
553 | txt_drawf_small("%02x%02x%02x%02x", x, y + 28, COL_FG, | 558 | txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg, |
554 | wave_b[8], wave_b[9], wave_b[10], wave_b[11]); | 559 | wave_b[8], wave_b[9], wave_b[10], wave_b[11]); |
555 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 28, COL_FG, | 560 | txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 28, col_fg, |
556 | wave_b[12], wave_b[13], wave_b[14], wave_b[15]); | 561 | wave_b[12], wave_b[13], wave_b[14], wave_b[15]); |
557 | } | 562 | } |
558 | 563 | ||
@@ -562,12 +567,12 @@ draw_parameters_wave(ChannelWaveParams *params) { | |||
562 | size_t x = PARAMS_START_X; | 567 | size_t x = PARAMS_START_X; |
563 | size_t y = PARAMS_START_Y + PARAMS_H - 12; | 568 | size_t y = PARAMS_START_Y + PARAMS_H - 12; |
564 | for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { | 569 | for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { |
565 | draw_icn(x + 17 * k , y, &tile[i * 2 + 0], COL_FG, 1, 0); | 570 | draw_icn(x + 17 * k , y, &tile[i * 2 + 0], col_fg, 1, 0); |
566 | draw_icn(x + 17 * k + 8, y, &tile[i * 2 + 2], COL_FG, 1, 0); | 571 | draw_icn(x + 17 * k + 8, y, &tile[i * 2 + 2], col_fg, 1, 0); |
567 | } | 572 | } |
568 | for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { | 573 | for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { |
569 | draw_icn(x + 70 + 17 * k , y, &tile[i * 2 + 0], COL_FG, 1, 0); | 574 | draw_icn(x + 70 + 17 * k , y, &tile[i * 2 + 0], col_fg, 1, 0); |
570 | draw_icn(x + 70 + 17 * k + 8, y, &tile[i * 2 + 2], COL_FG, 1, 0); | 575 | draw_icn(x + 70 + 17 * k + 8, y, &tile[i * 2 + 2], col_fg, 1, 0); |
571 | } | 576 | } |
572 | } | 577 | } |
573 | 578 | ||
@@ -575,17 +580,17 @@ draw_parameters_wave(ChannelWaveParams *params) { | |||
575 | { | 580 | { |
576 | size_t x = PARAMS_START_X + 140; | 581 | size_t x = PARAMS_START_X + 140; |
577 | size_t y = PARAMS_START_Y + PARAMS_H - 22; | 582 | size_t y = PARAMS_START_Y + PARAMS_H - 22; |
578 | draw_line(x, y + 4, x + 5, y + 4, COL_FG); | 583 | draw_line(x, y + 4, x + 5, y + 4, col_fg); |
579 | draw_line(x + 25, y + 4, x + 30, y + 4, COL_FG); | 584 | draw_line(x + 25, y + 4, x + 30, y + 4, col_fg); |
580 | draw_line(x, y + 5, x, y + 16, COL_FG); | 585 | draw_line(x, y + 5, x, y + 16, col_fg); |
581 | draw_line(x + 30, y + 5, x + 30, y + 17, COL_FG); | 586 | draw_line(x + 30, y + 5, x + 30, y + 17, col_fg); |
582 | draw_line(x, y + 17, x + 30, y + 17, COL_FG); | 587 | draw_line(x, y + 17, x + 30, y + 17, col_fg); |
583 | txt_drawf_small("mode", x + 6, y, COL_FG); | 588 | txt_drawf_small("mode", x + 6, y, col_fg); |
584 | 589 | ||
585 | switch (params->wave_mode) { | 590 | switch (params->wave_mode) { |
586 | case 0: { txt_drawf("A", x + 12, y + 7, COL_FG); } break; | 591 | case 0: { txt_drawf("A", x + 12, y + 7, col_fg); } break; |
587 | case 1: { txt_drawf("B", x + 12, y + 7, COL_FG); } break; | 592 | case 1: { txt_drawf("B", x + 12, y + 7, col_fg); } break; |
588 | case 2: { txt_drawf("A+B", x + 6, y + 7, COL_FG); } break; | 593 | case 2: { txt_drawf("A+B", x + 6, y + 7, col_fg); } break; |
589 | } | 594 | } |
590 | } | 595 | } |
591 | 596 | ||
@@ -593,26 +598,30 @@ draw_parameters_wave(ChannelWaveParams *params) { | |||
593 | { | 598 | { |
594 | size_t x = PARAMS_START_X + 140; | 599 | size_t x = PARAMS_START_X + 140; |
595 | size_t y = PARAMS_START_Y + PARAMS_H - 45; | 600 | size_t y = PARAMS_START_Y + PARAMS_H - 45; |
596 | draw_line(x, y + 7, x + 7, y + 7, COL_FG); | 601 | draw_line(x, y + 7, x + 7, y + 7, col_fg); |
597 | draw_line(x + 23, y + 7, x + 30, y + 7, COL_FG); | 602 | draw_line(x + 23, y + 7, x + 30, y + 7, col_fg); |
598 | draw_line(x, y + 8, x, y + 19, COL_FG); | 603 | draw_line(x, y + 8, x, y + 19, col_fg); |
599 | draw_line(x + 30, y + 8, x + 30, y + 19, COL_FG); | 604 | draw_line(x + 30, y + 8, x + 30, y + 19, col_fg); |
600 | draw_line(x, y + 20, x + 30, y + 20, COL_FG); | 605 | draw_line(x, y + 20, x + 30, y + 20, col_fg); |
601 | txt_drawf_small("vol", x + 8, y + 3, COL_FG); | 606 | txt_drawf_small("vol", x + 8, y + 3, col_fg); |
602 | 607 | ||
603 | switch (params->wave_volume) { | 608 | switch (params->wave_volume) { |
604 | case 0: { txt_drawf("0", x + 12, y + 10, COL_FG); } break; | 609 | case 0: { txt_drawf("0", x + 12, y + 10, col_fg); } break; |
605 | case 1: { txt_drawf("25", x + 9, y + 10, COL_FG); } break; | 610 | case 1: { txt_drawf("25", x + 9, y + 10, col_fg); } break; |
606 | case 2: { txt_drawf("50", x + 9, y + 10, COL_FG); } break; | 611 | case 2: { txt_drawf("50", x + 9, y + 10, col_fg); } break; |
607 | case 3: { txt_drawf("75", x + 9, y + 10, COL_FG); } break; | 612 | case 3: { txt_drawf("75", x + 9, y + 10, col_fg); } break; |
608 | case 4: { txt_drawf("100", x + 6, y + 10, COL_FG); } break; | 613 | case 4: { txt_drawf("100", x + 6, y + 10, col_fg); } break; |
609 | } | 614 | } |
610 | } | 615 | } |
611 | } | 616 | } |
612 | 617 | ||
613 | void | 618 | void |
614 | draw_parameters_square(ChannelSquareParams *params, bool sweep) { | 619 | draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) { |
615 | size_t x_offset = sweep ? 0 : 30; | 620 | size_t x_offset = sweep ? 0 : 30; |
621 | u8 col_fg = COL_FG; | ||
622 | if (global && input_handler == handle_channel_selection) { | ||
623 | col_fg = COL_GREY; | ||
624 | } | ||
616 | 625 | ||
617 | // Duty cycle. | 626 | // Duty cycle. |
618 | { | 627 | { |
@@ -678,18 +687,18 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
678 | { | 687 | { |
679 | size_t x = PARAMS_START_X + x_offset; | 688 | size_t x = PARAMS_START_X + x_offset; |
680 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 689 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
681 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | 690 | draw_line(x, y + 7, x + 2, y + 7, col_fg); |
682 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | 691 | draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); |
683 | draw_line(x, y + 8, x, y + 19, COL_FG); | 692 | draw_line(x, y + 8, x, y + 19, col_fg); |
684 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 693 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
685 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 694 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
686 | txt_drawf_small("duty", x + 3, y + 3, COL_FG); | 695 | txt_drawf_small("duty", x + 3, y + 3, col_fg); |
687 | 696 | ||
688 | switch (params->duty_cycle) { | 697 | switch (params->duty_cycle) { |
689 | case 0: { txt_drawf("12", x + 6, y + 10, COL_FG); } break; | 698 | case 0: { txt_drawf("12", x + 6, y + 10, col_fg); } break; |
690 | case 1: { txt_drawf("25", x + 6, y + 10, COL_FG); } break; | 699 | case 1: { txt_drawf("25", x + 6, y + 10, col_fg); } break; |
691 | case 2: { txt_drawf("50", x + 6, y + 10, COL_FG); } break; | 700 | case 2: { txt_drawf("50", x + 6, y + 10, col_fg); } break; |
692 | case 3: { txt_drawf("75", x + 6, y + 10, COL_FG); } break; | 701 | case 3: { txt_drawf("75", x + 6, y + 10, col_fg); } break; |
693 | } | 702 | } |
694 | } | 703 | } |
695 | } | 704 | } |
@@ -729,30 +738,30 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
729 | { | 738 | { |
730 | size_t x = PARAMS_START_X + 31 + x_offset; | 739 | size_t x = PARAMS_START_X + 31 + x_offset; |
731 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 740 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
732 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | 741 | draw_line(x, y + 7, x + 4, y + 7, col_fg); |
733 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | 742 | draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); |
734 | draw_line(x, y + 8, x, y + 19, COL_FG); | 743 | draw_line(x, y + 8, x, y + 19, col_fg); |
735 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 744 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
736 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 745 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
737 | txt_drawf_small("vol", x + 5, y + 3, COL_FG); | 746 | txt_drawf_small("vol", x + 5, y + 3, col_fg); |
738 | 747 | ||
739 | switch (params->env_volume) { | 748 | switch (params->env_volume) { |
740 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; | 749 | case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; |
741 | case 1: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; | 750 | case 1: { txt_drawf("6", x + 9, y + 10, col_fg); } break; |
742 | case 2: { txt_drawf("13", x + 6, y + 10, COL_FG); } break; | 751 | case 2: { txt_drawf("13", x + 6, y + 10, col_fg); } break; |
743 | case 3: { txt_drawf("20", x + 6, y + 10, COL_FG); } break; | 752 | case 3: { txt_drawf("20", x + 6, y + 10, col_fg); } break; |
744 | case 4: { txt_drawf("26", x + 6, y + 10, COL_FG); } break; | 753 | case 4: { txt_drawf("26", x + 6, y + 10, col_fg); } break; |
745 | case 5: { txt_drawf("33", x + 6, y + 10, COL_FG); } break; | 754 | case 5: { txt_drawf("33", x + 6, y + 10, col_fg); } break; |
746 | case 6: { txt_drawf("40", x + 6, y + 10, COL_FG); } break; | 755 | case 6: { txt_drawf("40", x + 6, y + 10, col_fg); } break; |
747 | case 7: { txt_drawf("46", x + 6, y + 10, COL_FG); } break; | 756 | case 7: { txt_drawf("46", x + 6, y + 10, col_fg); } break; |
748 | case 8: { txt_drawf("53", x + 6, y + 10, COL_FG); } break; | 757 | case 8: { txt_drawf("53", x + 6, y + 10, col_fg); } break; |
749 | case 9: { txt_drawf("60", x + 6, y + 10, COL_FG); } break; | 758 | case 9: { txt_drawf("60", x + 6, y + 10, col_fg); } break; |
750 | case 10: { txt_drawf("66", x + 6, y + 10, COL_FG); } break; | 759 | case 10: { txt_drawf("66", x + 6, y + 10, col_fg); } break; |
751 | case 11: { txt_drawf("73", x + 6, y + 10, COL_FG); } break; | 760 | case 11: { txt_drawf("73", x + 6, y + 10, col_fg); } break; |
752 | case 12: { txt_drawf("80", x + 6, y + 10, COL_FG); } break; | 761 | case 12: { txt_drawf("80", x + 6, y + 10, col_fg); } break; |
753 | case 13: { txt_drawf("86", x + 6, y + 10, COL_FG); } break; | 762 | case 13: { txt_drawf("86", x + 6, y + 10, col_fg); } break; |
754 | case 14: { txt_drawf("93", x + 6, y + 10, COL_FG); } break; | 763 | case 14: { txt_drawf("93", x + 6, y + 10, col_fg); } break; |
755 | case 15: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; | 764 | case 15: { txt_drawf("100", x + 3, y + 10, col_fg); } break; |
756 | } | 765 | } |
757 | } | 766 | } |
758 | 767 | ||
@@ -760,18 +769,18 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
760 | { | 769 | { |
761 | size_t x = PARAMS_START_X + 59 + x_offset; | 770 | size_t x = PARAMS_START_X + 59 + x_offset; |
762 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 771 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
763 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | 772 | draw_line(x, y + 7, x + 4, y + 7, col_fg); |
764 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | 773 | draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); |
765 | draw_line(x, y + 8, x, y + 19, COL_FG); | 774 | draw_line(x, y + 8, x, y + 19, col_fg); |
766 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 775 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
767 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 776 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
768 | txt_drawf_small("dir", x + 5, y + 3, COL_FG); | 777 | txt_drawf_small("dir", x + 5, y + 3, col_fg); |
769 | 778 | ||
770 | char arr_up[2] = { 0x19, 0 }; | 779 | char arr_up[2] = { 0x19, 0 }; |
771 | char arr_down[2] = { 0x18, 0 }; | 780 | char arr_down[2] = { 0x18, 0 }; |
772 | switch (params->env_direction) { | 781 | switch (params->env_direction) { |
773 | case 0: { txt_drawf(arr_up, x + 9, y + 11, COL_FG); } break; | 782 | case 0: { txt_drawf(arr_up, x + 9, y + 11, col_fg); } break; |
774 | case 1: { txt_drawf(arr_down, x + 9, y + 11, COL_FG); } break; | 783 | case 1: { txt_drawf(arr_down, x + 9, y + 11, col_fg); } break; |
775 | } | 784 | } |
776 | } | 785 | } |
777 | 786 | ||
@@ -779,22 +788,22 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
779 | { | 788 | { |
780 | size_t x = PARAMS_START_X + 87 + x_offset; | 789 | size_t x = PARAMS_START_X + 87 + x_offset; |
781 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 790 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
782 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | 791 | draw_line(x, y + 7, x + 2, y + 7, col_fg); |
783 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | 792 | draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); |
784 | draw_line(x, y + 8, x, y + 19, COL_FG); | 793 | draw_line(x, y + 8, x, y + 19, col_fg); |
785 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 794 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
786 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 795 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
787 | txt_drawf_small("time", x + 3, y + 3, COL_FG); | 796 | txt_drawf_small("time", x + 3, y + 3, col_fg); |
788 | 797 | ||
789 | switch (params->env_time) { | 798 | switch (params->env_time) { |
790 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; | 799 | case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; |
791 | case 1: { txt_drawf("14", x + 6, y + 10, COL_FG); } break; | 800 | case 1: { txt_drawf("14", x + 6, y + 10, col_fg); } break; |
792 | case 2: { txt_drawf("28", x + 6, y + 10, COL_FG); } break; | 801 | case 2: { txt_drawf("28", x + 6, y + 10, col_fg); } break; |
793 | case 3: { txt_drawf("42", x + 6, y + 10, COL_FG); } break; | 802 | case 3: { txt_drawf("42", x + 6, y + 10, col_fg); } break; |
794 | case 4: { txt_drawf("57", x + 6, y + 10, COL_FG); } break; | 803 | case 4: { txt_drawf("57", x + 6, y + 10, col_fg); } break; |
795 | case 5: { txt_drawf("71", x + 6, y + 10, COL_FG); } break; | 804 | case 5: { txt_drawf("71", x + 6, y + 10, col_fg); } break; |
796 | case 6: { txt_drawf("85", x + 6, y + 10, COL_FG); } break; | 805 | case 6: { txt_drawf("85", x + 6, y + 10, col_fg); } break; |
797 | case 7: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; | 806 | case 7: { txt_drawf("100", x + 3, y + 10, col_fg); } break; |
798 | } | 807 | } |
799 | } | 808 | } |
800 | } | 809 | } |
@@ -803,22 +812,22 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
803 | if (sweep) { | 812 | if (sweep) { |
804 | size_t x = PARAMS_START_X + 118; | 813 | size_t x = PARAMS_START_X + 118; |
805 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 814 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
806 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | 815 | draw_line(x, y + 7, x + 4, y + 7, col_fg); |
807 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | 816 | draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); |
808 | draw_line(x, y + 8, x, y + 19, COL_FG); | 817 | draw_line(x, y + 8, x, y + 19, col_fg); |
809 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 818 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
810 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 819 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
811 | txt_drawf_small("num", x + 5, y + 3, COL_FG); | 820 | txt_drawf_small("num", x + 5, y + 3, col_fg); |
812 | 821 | ||
813 | switch (params->sweep_number) { | 822 | switch (params->sweep_number) { |
814 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; | 823 | case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; |
815 | case 1: { txt_drawf("1", x + 9, y + 10, COL_FG); } break; | 824 | case 1: { txt_drawf("1", x + 9, y + 10, col_fg); } break; |
816 | case 2: { txt_drawf("2", x + 9, y + 10, COL_FG); } break; | 825 | case 2: { txt_drawf("2", x + 9, y + 10, col_fg); } break; |
817 | case 3: { txt_drawf("3", x + 9, y + 10, COL_FG); } break; | 826 | case 3: { txt_drawf("3", x + 9, y + 10, col_fg); } break; |
818 | case 4: { txt_drawf("4", x + 9, y + 10, COL_FG); } break; | 827 | case 4: { txt_drawf("4", x + 9, y + 10, col_fg); } break; |
819 | case 5: { txt_drawf("5", x + 9, y + 10, COL_FG); } break; | 828 | case 5: { txt_drawf("5", x + 9, y + 10, col_fg); } break; |
820 | case 6: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; | 829 | case 6: { txt_drawf("6", x + 9, y + 10, col_fg); } break; |
821 | case 7: { txt_drawf("7", x + 9, y + 10, COL_FG); } break; | 830 | case 7: { txt_drawf("7", x + 9, y + 10, col_fg); } break; |
822 | } | 831 | } |
823 | } | 832 | } |
824 | 833 | ||
@@ -826,22 +835,22 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
826 | if (sweep) { | 835 | if (sweep) { |
827 | size_t x = PARAMS_START_X + 146; | 836 | size_t x = PARAMS_START_X + 146; |
828 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 837 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
829 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | 838 | draw_line(x, y + 7, x + 2, y + 7, col_fg); |
830 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | 839 | draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); |
831 | draw_line(x, y + 8, x, y + 19, COL_FG); | 840 | draw_line(x, y + 8, x, y + 19, col_fg); |
832 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 841 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
833 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 842 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
834 | txt_drawf_small("time", x + 3, y + 3, COL_FG); | 843 | txt_drawf_small("time", x + 3, y + 3, col_fg); |
835 | 844 | ||
836 | switch (params->sweep_time) { | 845 | switch (params->sweep_time) { |
837 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; | 846 | case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; |
838 | case 1: { txt_drawf("1", x + 9, y + 10, COL_FG); } break; | 847 | case 1: { txt_drawf("1", x + 9, y + 10, col_fg); } break; |
839 | case 2: { txt_drawf("2", x + 9, y + 10, COL_FG); } break; | 848 | case 2: { txt_drawf("2", x + 9, y + 10, col_fg); } break; |
840 | case 3: { txt_drawf("3", x + 9, y + 10, COL_FG); } break; | 849 | case 3: { txt_drawf("3", x + 9, y + 10, col_fg); } break; |
841 | case 4: { txt_drawf("4", x + 9, y + 10, COL_FG); } break; | 850 | case 4: { txt_drawf("4", x + 9, y + 10, col_fg); } break; |
842 | case 5: { txt_drawf("5", x + 9, y + 10, COL_FG); } break; | 851 | case 5: { txt_drawf("5", x + 9, y + 10, col_fg); } break; |
843 | case 6: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; | 852 | case 6: { txt_drawf("6", x + 9, y + 10, col_fg); } break; |
844 | case 7: { txt_drawf("7", x + 9, y + 10, COL_FG); } break; | 853 | case 7: { txt_drawf("7", x + 9, y + 10, col_fg); } break; |
845 | } | 854 | } |
846 | } | 855 | } |
847 | 856 | ||
@@ -849,18 +858,18 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
849 | if (sweep) { | 858 | if (sweep) { |
850 | size_t x = PARAMS_START_X + 132; | 859 | size_t x = PARAMS_START_X + 132; |
851 | size_t y = PARAMS_START_Y + PARAMS_H - 45; | 860 | size_t y = PARAMS_START_Y + PARAMS_H - 45; |
852 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | 861 | draw_line(x, y + 7, x + 4, y + 7, col_fg); |
853 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | 862 | draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); |
854 | draw_line(x, y + 8, x, y + 19, COL_FG); | 863 | draw_line(x, y + 8, x, y + 19, col_fg); |
855 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 864 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
856 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 865 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
857 | txt_drawf_small("dir", x + 5, y + 3, COL_FG); | 866 | txt_drawf_small("dir", x + 5, y + 3, col_fg); |
858 | 867 | ||
859 | char arr_up[2] = { 0x19, 0 }; | 868 | char arr_up[2] = { 0x19, 0 }; |
860 | char arr_down[2] = { 0x18, 0 }; | 869 | char arr_down[2] = { 0x18, 0 }; |
861 | switch (params->sweep_direction) { | 870 | switch (params->sweep_direction) { |
862 | case 0: { txt_drawf(arr_up, x + 9, y + 11, COL_FG); } break; | 871 | case 0: { txt_drawf(arr_up, x + 9, y + 11, col_fg); } break; |
863 | case 1: { txt_drawf(arr_down, x + 9, y + 11, COL_FG); } break; | 872 | case 1: { txt_drawf(arr_down, x + 9, y + 11, col_fg); } break; |
864 | } | 873 | } |
865 | } | 874 | } |
866 | 875 | ||
@@ -868,17 +877,21 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
868 | { | 877 | { |
869 | size_t x = PARAMS_START_X + x_offset; | 878 | size_t x = PARAMS_START_X + x_offset; |
870 | size_t y = PARAMS_START_Y + PARAMS_H - 45; | 879 | size_t y = PARAMS_START_Y + PARAMS_H - 45; |
871 | txt_drawf_small("shape", x + 1, y - 12, COL_FG); | 880 | txt_drawf_small("shape", x + 1, y - 12, col_fg); |
872 | txt_drawf_small("envelope", x + 54, y - 12, COL_FG); | 881 | txt_drawf_small("envelope", x + 54, y - 12, col_fg); |
873 | if (sweep) { | 882 | if (sweep) { |
874 | txt_drawf_small("sweep", x + 133, y - 12, COL_FG); | 883 | txt_drawf_small("sweep", x + 133, y - 12, col_fg); |
875 | } | 884 | } |
876 | } | 885 | } |
877 | } | 886 | } |
878 | 887 | ||
879 | void | 888 | void |
880 | draw_parameters_noise(ChannelNoiseParams* params) { | 889 | draw_parameters_noise(ChannelNoiseParams* params, bool global) { |
881 | size_t x_offset = 30; | 890 | size_t x_offset = 30; |
891 | u8 col_fg = COL_FG; | ||
892 | if (global && input_handler == handle_channel_selection) { | ||
893 | col_fg = COL_GREY; | ||
894 | } | ||
882 | 895 | ||
883 | // Bit mode. | 896 | // Bit mode. |
884 | { | 897 | { |
@@ -886,16 +899,16 @@ draw_parameters_noise(ChannelNoiseParams* params) { | |||
886 | { | 899 | { |
887 | size_t x = PARAMS_START_X + x_offset; | 900 | size_t x = PARAMS_START_X + x_offset; |
888 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 901 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
889 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | 902 | draw_line(x, y + 7, x + 2, y + 7, col_fg); |
890 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | 903 | draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); |
891 | draw_line(x, y + 8, x, y + 19, COL_FG); | 904 | draw_line(x, y + 8, x, y + 19, col_fg); |
892 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 905 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
893 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 906 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
894 | txt_drawf_small("mode", x + 3, y + 3, COL_FG); | 907 | txt_drawf_small("mode", x + 3, y + 3, col_fg); |
895 | 908 | ||
896 | switch (params->bit_mode) { | 909 | switch (params->bit_mode) { |
897 | case 0: { txt_drawf("A", x + 9, y + 10, COL_FG); } break; | 910 | case 0: { txt_drawf("A", x + 9, y + 10, col_fg); } break; |
898 | case 1: { txt_drawf("B", x + 9, y + 10, COL_FG); } break; | 911 | case 1: { txt_drawf("B", x + 9, y + 10, col_fg); } break; |
899 | } | 912 | } |
900 | } | 913 | } |
901 | } | 914 | } |
@@ -935,30 +948,30 @@ draw_parameters_noise(ChannelNoiseParams* params) { | |||
935 | { | 948 | { |
936 | size_t x = PARAMS_START_X + 31 + x_offset; | 949 | size_t x = PARAMS_START_X + 31 + x_offset; |
937 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 950 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
938 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | 951 | draw_line(x, y + 7, x + 4, y + 7, col_fg); |
939 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | 952 | draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); |
940 | draw_line(x, y + 8, x, y + 19, COL_FG); | 953 | draw_line(x, y + 8, x, y + 19, col_fg); |
941 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 954 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
942 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 955 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
943 | txt_drawf_small("vol", x + 5, y + 3, COL_FG); | 956 | txt_drawf_small("vol", x + 5, y + 3, col_fg); |
944 | 957 | ||
945 | switch (params->env_volume) { | 958 | switch (params->env_volume) { |
946 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; | 959 | case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; |
947 | case 1: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; | 960 | case 1: { txt_drawf("6", x + 9, y + 10, col_fg); } break; |
948 | case 2: { txt_drawf("13", x + 6, y + 10, COL_FG); } break; | 961 | case 2: { txt_drawf("13", x + 6, y + 10, col_fg); } break; |
949 | case 3: { txt_drawf("20", x + 6, y + 10, COL_FG); } break; | 962 | case 3: { txt_drawf("20", x + 6, y + 10, col_fg); } break; |
950 | case 4: { txt_drawf("26", x + 6, y + 10, COL_FG); } break; | 963 | case 4: { txt_drawf("26", x + 6, y + 10, col_fg); } break; |
951 | case 5: { txt_drawf("33", x + 6, y + 10, COL_FG); } break; | 964 | case 5: { txt_drawf("33", x + 6, y + 10, col_fg); } break; |
952 | case 6: { txt_drawf("40", x + 6, y + 10, COL_FG); } break; | 965 | case 6: { txt_drawf("40", x + 6, y + 10, col_fg); } break; |
953 | case 7: { txt_drawf("46", x + 6, y + 10, COL_FG); } break; | 966 | case 7: { txt_drawf("46", x + 6, y + 10, col_fg); } break; |
954 | case 8: { txt_drawf("53", x + 6, y + 10, COL_FG); } break; | 967 | case 8: { txt_drawf("53", x + 6, y + 10, col_fg); } break; |
955 | case 9: { txt_drawf("60", x + 6, y + 10, COL_FG); } break; | 968 | case 9: { txt_drawf("60", x + 6, y + 10, col_fg); } break; |
956 | case 10: { txt_drawf("66", x + 6, y + 10, COL_FG); } break; | 969 | case 10: { txt_drawf("66", x + 6, y + 10, col_fg); } break; |
957 | case 11: { txt_drawf("73", x + 6, y + 10, COL_FG); } break; | 970 | case 11: { txt_drawf("73", x + 6, y + 10, col_fg); } break; |
958 | case 12: { txt_drawf("80", x + 6, y + 10, COL_FG); } break; | 971 | case 12: { txt_drawf("80", x + 6, y + 10, col_fg); } break; |
959 | case 13: { txt_drawf("86", x + 6, y + 10, COL_FG); } break; | 972 | case 13: { txt_drawf("86", x + 6, y + 10, col_fg); } break; |
960 | case 14: { txt_drawf("93", x + 6, y + 10, COL_FG); } break; | 973 | case 14: { txt_drawf("93", x + 6, y + 10, col_fg); } break; |
961 | case 15: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; | 974 | case 15: { txt_drawf("100", x + 3, y + 10, col_fg); } break; |
962 | } | 975 | } |
963 | } | 976 | } |
964 | 977 | ||
@@ -966,21 +979,21 @@ draw_parameters_noise(ChannelNoiseParams* params) { | |||
966 | { | 979 | { |
967 | size_t x = PARAMS_START_X + 59 + x_offset; | 980 | size_t x = PARAMS_START_X + 59 + x_offset; |
968 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 981 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
969 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | 982 | draw_line(x, y + 7, x + 4, y + 7, col_fg); |
970 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | 983 | draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); |
971 | draw_line(x, y + 8, x, y + 19, COL_FG); | 984 | draw_line(x, y + 8, x, y + 19, col_fg); |
972 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 985 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
973 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 986 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
974 | txt_drawf_small("dir", x + 5, y + 3, COL_FG); | 987 | txt_drawf_small("dir", x + 5, y + 3, col_fg); |
975 | 988 | ||
976 | char arr_up[2] = { 0x19, 0 }; | 989 | char arr_up[2] = { 0x19, 0 }; |
977 | char arr_down[2] = { 0x18, 0 }; | 990 | char arr_down[2] = { 0x18, 0 }; |
978 | switch (params->env_direction) { | 991 | switch (params->env_direction) { |
979 | case 0: { | 992 | case 0: { |
980 | txt_drawf(arr_up, x + 9, y + 11, COL_FG); | 993 | txt_drawf(arr_up, x + 9, y + 11, col_fg); |
981 | } break; | 994 | } break; |
982 | case 1: { | 995 | case 1: { |
983 | txt_drawf(arr_down, x + 9, y + 11, COL_FG); | 996 | txt_drawf(arr_down, x + 9, y + 11, col_fg); |
984 | } break; | 997 | } break; |
985 | } | 998 | } |
986 | } | 999 | } |
@@ -989,22 +1002,22 @@ draw_parameters_noise(ChannelNoiseParams* params) { | |||
989 | { | 1002 | { |
990 | size_t x = PARAMS_START_X + 87 + x_offset; | 1003 | size_t x = PARAMS_START_X + 87 + x_offset; |
991 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | 1004 | size_t y = PARAMS_START_Y + PARAMS_H - 25; |
992 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | 1005 | draw_line(x, y + 7, x + 2, y + 7, col_fg); |
993 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | 1006 | draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); |
994 | draw_line(x, y + 8, x, y + 19, COL_FG); | 1007 | draw_line(x, y + 8, x, y + 19, col_fg); |
995 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | 1008 | draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); |
996 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | 1009 | draw_line(x, y + 20, x + 24, y + 20, col_fg); |
997 | txt_drawf_small("time", x + 3, y + 3, COL_FG); | 1010 | txt_drawf_small("time", x + 3, y + 3, col_fg); |
998 | 1011 | ||
999 | switch (params->env_time) { | 1012 | switch (params->env_time) { |
1000 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; | 1013 | case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; |
1001 | case 1: { txt_drawf("14", x + 6, y + 10, COL_FG); } break; | 1014 | case 1: { txt_drawf("14", x + 6, y + 10, col_fg); } break; |
1002 | case 2: { txt_drawf("28", x + 6, y + 10, COL_FG); } break; | 1015 | case 2: { txt_drawf("28", x + 6, y + 10, col_fg); } break; |
1003 | case 3: { txt_drawf("42", x + 6, y + 10, COL_FG); } break; | 1016 | case 3: { txt_drawf("42", x + 6, y + 10, col_fg); } break; |
1004 | case 4: { txt_drawf("57", x + 6, y + 10, COL_FG); } break; | 1017 | case 4: { txt_drawf("57", x + 6, y + 10, col_fg); } break; |
1005 | case 5: { txt_drawf("71", x + 6, y + 10, COL_FG); } break; | 1018 | case 5: { txt_drawf("71", x + 6, y + 10, col_fg); } break; |
1006 | case 6: { txt_drawf("85", x + 6, y + 10, COL_FG); } break; | 1019 | case 6: { txt_drawf("85", x + 6, y + 10, col_fg); } break; |
1007 | case 7: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; | 1020 | case 7: { txt_drawf("100", x + 3, y + 10, col_fg); } break; |
1008 | } | 1021 | } |
1009 | } | 1022 | } |
1010 | } | 1023 | } |
@@ -1013,7 +1026,7 @@ draw_parameters_noise(ChannelNoiseParams* params) { | |||
1013 | { | 1026 | { |
1014 | size_t x = PARAMS_START_X + x_offset; | 1027 | size_t x = PARAMS_START_X + x_offset; |
1015 | size_t y = PARAMS_START_Y + PARAMS_H - 45; | 1028 | size_t y = PARAMS_START_Y + PARAMS_H - 45; |
1016 | txt_drawf_small("envelope", x + 54, y - 12, COL_FG); | 1029 | txt_drawf_small("envelope", x + 54, y - 12, col_fg); |
1017 | } | 1030 | } |
1018 | } | 1031 | } |
1019 | 1032 | ||
@@ -1027,10 +1040,10 @@ draw_parameters(void) { | |||
1027 | input_handler == handle_param_selection_wave || | 1040 | input_handler == handle_param_selection_wave || |
1028 | input_handler == handle_param_selection_noise) { | 1041 | input_handler == handle_param_selection_noise) { |
1029 | switch (channel_selection_loc) { | 1042 | switch (channel_selection_loc) { |
1030 | case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true); } break; | 1043 | case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true, false); } break; |
1031 | case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false); } break; | 1044 | case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false, false); } break; |
1032 | case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc]); } break; | 1045 | case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc], false); } break; |
1033 | case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc]); } break; | 1046 | case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc], false); } break; |
1034 | } | 1047 | } |
1035 | return; | 1048 | return; |
1036 | } | 1049 | } |
@@ -1040,10 +1053,10 @@ draw_parameters(void) { | |||
1040 | input_handler == handle_param_selection_ch3 || | 1053 | input_handler == handle_param_selection_ch3 || |
1041 | input_handler == handle_param_selection_ch4) { | 1054 | input_handler == handle_param_selection_ch4) { |
1042 | switch (channel_selection_loc) { | 1055 | switch (channel_selection_loc) { |
1043 | case 0: { draw_parameters_square(&ch1_params, true); } break; | 1056 | case 0: { draw_parameters_square(&ch1_params, true, true); } break; |
1044 | case 1: { draw_parameters_square(&ch2_params, false); } break; | 1057 | case 1: { draw_parameters_square(&ch2_params, false, true); } break; |
1045 | case 2: { draw_parameters_wave(&ch3_params); } break; | 1058 | case 2: { draw_parameters_wave(&ch3_params, true); } break; |
1046 | case 3: { draw_parameters_noise(&ch4_params); } break; | 1059 | case 3: { draw_parameters_noise(&ch4_params, true); } break; |
1047 | } | 1060 | } |
1048 | return; | 1061 | return; |
1049 | } | 1062 | } |
@@ -26,7 +26,7 @@ WITH REGARD TO THIS SOFTWARE. | |||
26 | // + Per channel sound adjustments that modify the sound in all trigs. | 26 | // + Per channel sound adjustments that modify the sound in all trigs. |
27 | // + Basic support. | 27 | // + Basic support. |
28 | // + Allow pasting parameters if they have been copied. | 28 | // + Allow pasting parameters if they have been copied. |
29 | // - Draw the global params in grey if they haven't been adjusted or aren't | 29 | // + Draw the global params in grey if they haven't been adjusted or aren't |
30 | // currently selected. | 30 | // currently selected. |
31 | // + Draw missing cursor. | 31 | // + Draw missing cursor. |
32 | // + Per-octave note adjustment with Select + L/R on a trig. | 32 | // + Per-octave note adjustment with Select + L/R on a trig. |
@@ -39,6 +39,12 @@ WITH REGARD TO THIS SOFTWARE. | |||
39 | // - Sync via MIDI via arduinoboy or something similar. | 39 | // - Sync via MIDI via arduinoboy or something similar. |
40 | // - Sync via CV by using the link cable. | 40 | // - Sync via CV by using the link cable. |
41 | // | 41 | // |
42 | // Bugfixes | ||
43 | // - Sound can get hung up sometimes, but I can't reproduce when this happens. | ||
44 | // Not sure if this is an emulator thing or happens also in hardware. | ||
45 | // - Cursor can stay in position instead of dissapering, again I can't | ||
46 | // reproduce this right now, just happened randomly. Needs investigation. | ||
47 | // | ||
42 | // FIXME: Update readme and project pages with control changes. | 48 | // FIXME: Update readme and project pages with control changes. |
43 | 49 | ||
44 | #include "gba/gba.h" | 50 | #include "gba/gba.h" |