aboutsummaryrefslogtreecommitdiff
path: root/src/core/constants.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/constants.h')
-rw-r--r--src/core/constants.h118
1 files changed, 93 insertions, 25 deletions
diff --git a/src/core/constants.h b/src/core/constants.h
index e8b80ae..6505689 100644
--- a/src/core/constants.h
+++ b/src/core/constants.h
@@ -580,7 +580,7 @@ STATIC const char *transstr[] = {
580 [TRANS_BLm] = "mirrored BL", 580 [TRANS_BLm] = "mirrored BL",
581}; 581};
582 582
583static uint8_t inverse_trans_table[] = { 583STATIC uint8_t inverse_trans_table[] = {
584 [TRANS_UFr] = TRANS_UFr, 584 [TRANS_UFr] = TRANS_UFr,
585 [TRANS_UFm] = TRANS_UFm, 585 [TRANS_UFm] = TRANS_UFm,
586 [TRANS_ULr] = TRANS_URr, 586 [TRANS_ULr] = TRANS_URr,
@@ -631,7 +631,7 @@ static uint8_t inverse_trans_table[] = {
631 [TRANS_BLm] = TRANS_LDm, 631 [TRANS_BLm] = TRANS_LDm,
632}; 632};
633 633
634static uint8_t trans_move_table[][3] = { 634STATIC uint8_t trans_move_table[][3] = {
635 [TRANS_UFr] = { MOVE_U, MOVE_R, MOVE_F }, 635 [TRANS_UFr] = { MOVE_U, MOVE_R, MOVE_F },
636 [TRANS_UFm] = { MOVE_U, MOVE_L, MOVE_F }, 636 [TRANS_UFm] = { MOVE_U, MOVE_L, MOVE_F },
637 [TRANS_ULr] = { MOVE_U, MOVE_F, MOVE_L }, 637 [TRANS_ULr] = { MOVE_U, MOVE_F, MOVE_L },
@@ -682,7 +682,7 @@ static uint8_t trans_move_table[][3] = {
682 [TRANS_BLm] = { MOVE_B, MOVE_U, MOVE_R }, 682 [TRANS_BLm] = { MOVE_B, MOVE_U, MOVE_R },
683}; 683};
684 684
685static uint8_t orientation_transition_table[][3] = { 685STATIC uint8_t orientation_transition_table[][3] = {
686 [ORIENTATION_UF] = { ORIENTATION_FD, ORIENTATION_UR, ORIENTATION_LF }, 686 [ORIENTATION_UF] = { ORIENTATION_FD, ORIENTATION_UR, ORIENTATION_LF },
687 [ORIENTATION_UR] = { ORIENTATION_RD, ORIENTATION_UB, ORIENTATION_FR }, 687 [ORIENTATION_UR] = { ORIENTATION_RD, ORIENTATION_UB, ORIENTATION_FR },
688 [ORIENTATION_UB] = { ORIENTATION_BD, ORIENTATION_UL, ORIENTATION_RB }, 688 [ORIENTATION_UB] = { ORIENTATION_BD, ORIENTATION_UL, ORIENTATION_RB },
@@ -709,26 +709,94 @@ static uint8_t orientation_transition_table[][3] = {
709 [ORIENTATION_BL] = { ORIENTATION_LF, ORIENTATION_BD, ORIENTATION_DL }, 709 [ORIENTATION_BL] = { ORIENTATION_LF, ORIENTATION_BD, ORIENTATION_DL },
710}; 710};
711 711
712static struct { 712STATIC uint8_t orientation_trans[] = {
713 uint8_t moves[3]; 713 [ORIENTATION_UF] = TRANS_UFr,
714 uint8_t rotations[6]; 714 [ORIENTATION_UR] = TRANS_URr,
715} equivalent_move_table[] = { 715 [ORIENTATION_UB] = TRANS_UBr,
716 [MOVE_U] = { { MOVE_U, UINT8_MAX }, {UINT8_MAX} }, 716 [ORIENTATION_UL] = TRANS_ULr,
717 [MOVE_U2] = { { MOVE_U2, UINT8_MAX }, {UINT8_MAX} }, 717 [ORIENTATION_DF] = TRANS_DFr,
718 [MOVE_U3] = { { MOVE_U3, UINT8_MAX }, {UINT8_MAX} }, 718 [ORIENTATION_DR] = TRANS_DRr,
719 [MOVE_D] = { { MOVE_D, UINT8_MAX }, {UINT8_MAX} }, 719 [ORIENTATION_DB] = TRANS_DBr,
720 [MOVE_D2] = { { MOVE_D2, UINT8_MAX }, {UINT8_MAX} }, 720 [ORIENTATION_DL] = TRANS_DLr,
721 [MOVE_D3] = { { MOVE_D3, UINT8_MAX }, {UINT8_MAX} }, 721 [ORIENTATION_RF] = TRANS_RFr,
722 [MOVE_R] = { { MOVE_R, UINT8_MAX }, {UINT8_MAX} }, 722 [ORIENTATION_RD] = TRANS_RDr,
723 [MOVE_R2] = { { MOVE_R2, UINT8_MAX }, {UINT8_MAX} }, 723 [ORIENTATION_RB] = TRANS_RBr,
724 [MOVE_R3] = { { MOVE_R3, UINT8_MAX }, {UINT8_MAX} }, 724 [ORIENTATION_RU] = TRANS_RUr,
725 [MOVE_L] = { { MOVE_L, UINT8_MAX }, {UINT8_MAX} }, 725 [ORIENTATION_LF] = TRANS_LFr,
726 [MOVE_L2] = { { MOVE_L2, UINT8_MAX }, {UINT8_MAX} }, 726 [ORIENTATION_LD] = TRANS_LDr,
727 [MOVE_L3] = { { MOVE_L3, UINT8_MAX }, {UINT8_MAX} }, 727 [ORIENTATION_LB] = TRANS_LBr,
728 [MOVE_F] = { { MOVE_F, UINT8_MAX }, {UINT8_MAX} }, 728 [ORIENTATION_LU] = TRANS_LUr,
729 [MOVE_F2] = { { MOVE_F2, UINT8_MAX }, {UINT8_MAX} }, 729 [ORIENTATION_FD] = TRANS_FDr,
730 [MOVE_F3] = { { MOVE_F3, UINT8_MAX }, {UINT8_MAX} }, 730 [ORIENTATION_FR] = TRANS_FRr,
731 [MOVE_B] = { { MOVE_B, UINT8_MAX }, {UINT8_MAX} }, 731 [ORIENTATION_FU] = TRANS_FUr,
732 [MOVE_B2] = { { MOVE_B2, UINT8_MAX }, {UINT8_MAX} }, 732 [ORIENTATION_FL] = TRANS_FLr,
733 [MOVE_B3] = { { MOVE_B3, UINT8_MAX }, {UINT8_MAX} }, 733 [ORIENTATION_BD] = TRANS_BDr,
734 [ORIENTATION_BR] = TRANS_BRr,
735 [ORIENTATION_BU] = TRANS_BUr,
736 [ORIENTATION_BL] = TRANS_BLr,
737};
738
739typedef struct {
740 uint8_t move[3];
741 uint8_t rotation[4];
742} equivalent_moves_t;
743
744STATIC equivalent_moves_t equivalent_moves_table[] = {
745 [MOVE_U] = {{MOVE_U, UINT8_MAX}, {UINT8_MAX}},
746 [MOVE_U2] = {{MOVE_U2, UINT8_MAX}, {UINT8_MAX}},
747 [MOVE_U3] = {{MOVE_U3, UINT8_MAX}, {UINT8_MAX}},
748 [MOVE_D] = {{MOVE_D, UINT8_MAX}, {UINT8_MAX}},
749 [MOVE_D2] = {{MOVE_D2, UINT8_MAX}, {UINT8_MAX}},
750 [MOVE_D3] = {{MOVE_D3, UINT8_MAX}, {UINT8_MAX}},
751 [MOVE_R] = {{MOVE_R, UINT8_MAX}, {UINT8_MAX}},
752 [MOVE_R2] = {{MOVE_R2, UINT8_MAX}, {UINT8_MAX}},
753 [MOVE_R3] = {{MOVE_R3, UINT8_MAX}, {UINT8_MAX}},
754 [MOVE_L] = {{MOVE_L, UINT8_MAX}, {UINT8_MAX}},
755 [MOVE_L2] = {{MOVE_L2, UINT8_MAX}, {UINT8_MAX}},
756 [MOVE_L3] = {{MOVE_L3, UINT8_MAX}, {UINT8_MAX}},
757 [MOVE_F] = {{MOVE_F, UINT8_MAX}, {UINT8_MAX}},
758 [MOVE_F2] = {{MOVE_F2, UINT8_MAX}, {UINT8_MAX}},
759 [MOVE_F3] = {{MOVE_F3, UINT8_MAX}, {UINT8_MAX}},
760 [MOVE_B] = {{MOVE_B, UINT8_MAX}, {UINT8_MAX}},
761 [MOVE_B2] = {{MOVE_B2, UINT8_MAX}, {UINT8_MAX}},
762 [MOVE_B3] = {{MOVE_B3, UINT8_MAX}, {UINT8_MAX}},
763
764 [MOVE_Uw] = {{MOVE_D, UINT8_MAX}, {1, UINT8_MAX}},
765 [MOVE_Uw2] = {{MOVE_D2, UINT8_MAX}, {1, 1, UINT8_MAX}},
766 [MOVE_Uw3] = {{MOVE_D3, UINT8_MAX}, {1, 1, 1, UINT8_MAX}},
767 [MOVE_Dw] = {{MOVE_U, UINT8_MAX}, {1, 1, 1, UINT8_MAX}},
768 [MOVE_Dw2] = {{MOVE_U2, UINT8_MAX}, {1, 1, UINT8_MAX}},
769 [MOVE_Dw3] = {{MOVE_U3, UINT8_MAX}, {1, UINT8_MAX}},
770 [MOVE_Rw] = {{MOVE_L, UINT8_MAX}, {0, UINT8_MAX}},
771 [MOVE_Rw2] = {{MOVE_L2, UINT8_MAX}, {0, 0, UINT8_MAX}},
772 [MOVE_Rw3] = {{MOVE_L3, UINT8_MAX}, {0, 0, 0, UINT8_MAX}},
773 [MOVE_Lw] = {{MOVE_R, UINT8_MAX}, {0, 0, 0, UINT8_MAX}},
774 [MOVE_Lw2] = {{MOVE_R2, UINT8_MAX}, {0, 0, UINT8_MAX}},
775 [MOVE_Lw3] = {{MOVE_R3, UINT8_MAX}, {0, UINT8_MAX}},
776 [MOVE_Fw] = {{MOVE_B, UINT8_MAX}, {2, UINT8_MAX}},
777 [MOVE_Fw2] = {{MOVE_B2, UINT8_MAX}, {2, 2, UINT8_MAX}},
778 [MOVE_Fw3] = {{MOVE_B3, UINT8_MAX}, {2, 2, 2, UINT8_MAX}},
779 [MOVE_Bw] = {{MOVE_F, UINT8_MAX}, {2, 2, 2, UINT8_MAX}},
780 [MOVE_Bw2] = {{MOVE_F2, UINT8_MAX}, {2, 2, UINT8_MAX}},
781 [MOVE_Bw3] = {{MOVE_F3, UINT8_MAX}, {2, UINT8_MAX}},
782
783 [MOVE_M] = {{MOVE_R, MOVE_L3, UINT8_MAX}, {0, 0, 0, UINT8_MAX}},
784 [MOVE_M2] = {{MOVE_R2, MOVE_L2, UINT8_MAX}, {0, 0, UINT8_MAX}},
785 [MOVE_M3] = {{MOVE_R3, MOVE_L, UINT8_MAX}, {0, UINT8_MAX}},
786 [MOVE_S] = {{MOVE_F3, MOVE_B, UINT8_MAX}, {2, UINT8_MAX}},
787 [MOVE_S2] = {{MOVE_F2, MOVE_B2, UINT8_MAX}, {2, 2, UINT8_MAX}},
788 [MOVE_S3] = {{MOVE_F, MOVE_B3, UINT8_MAX}, {2, 2, 2, UINT8_MAX}},
789 [MOVE_E] = {{MOVE_U, MOVE_D3, UINT8_MAX}, {1, 1, 1, UINT8_MAX}},
790 [MOVE_E2] = {{MOVE_U2, MOVE_D2, UINT8_MAX}, {1, 1, UINT8_MAX}},
791 [MOVE_E3] = {{MOVE_U3, MOVE_D, UINT8_MAX}, {1, UINT8_MAX}},
792
793 [MOVE_x] = {{UINT8_MAX}, {0, UINT8_MAX}},
794 [MOVE_x2] = {{UINT8_MAX}, {0, 0, UINT8_MAX}},
795 [MOVE_x3] = {{UINT8_MAX}, {0, 0, 0, UINT8_MAX}},
796 [MOVE_y] = {{UINT8_MAX}, {1, UINT8_MAX}},
797 [MOVE_y2] = {{UINT8_MAX}, {1, 1, UINT8_MAX}},
798 [MOVE_y3] = {{UINT8_MAX}, {1, 1, 1, UINT8_MAX}},
799 [MOVE_z] = {{UINT8_MAX}, {2, UINT8_MAX}},
800 [MOVE_z2] = {{UINT8_MAX}, {2, 2, UINT8_MAX}},
801 [MOVE_z3] = {{UINT8_MAX}, {2, 2, 2, UINT8_MAX}},
734}; 802};

Generated with cgit - Back to sebastiano.tronto.net