commit 6f750160507b87c9ea31899c0199e9b336e8ddae
parent 77fbe3d7cbd8448f8124dba143bc5110344c6b49
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Tue, 22 Apr 2025 18:48:40 +0200
Merge branch 'extend_moves'
Diffstat:
2 files changed, 97 insertions(+), 2 deletions(-)
diff --git a/src/core/constants.h b/src/core/constants.h
@@ -251,6 +251,45 @@
#define MOVE_B2 UINT8_C(16)
#define MOVE_B3 UINT8_C(17)
+#define MOVE_Uw UINT8_C(18)
+#define MOVE_Uw2 UINT8_C(19)
+#define MOVE_Uw3 UINT8_C(20)
+#define MOVE_Dw UINT8_C(21)
+#define MOVE_Dw2 UINT8_C(22)
+#define MOVE_Dw3 UINT8_C(23)
+#define MOVE_Rw UINT8_C(24)
+#define MOVE_Rw2 UINT8_C(25)
+#define MOVE_Rw3 UINT8_C(26)
+#define MOVE_Lw UINT8_C(27)
+#define MOVE_Lw2 UINT8_C(28)
+#define MOVE_Lw3 UINT8_C(29)
+#define MOVE_Fw UINT8_C(30)
+#define MOVE_Fw2 UINT8_C(31)
+#define MOVE_Fw3 UINT8_C(32)
+#define MOVE_Bw UINT8_C(33)
+#define MOVE_Bw2 UINT8_C(34)
+#define MOVE_Bw3 UINT8_C(35)
+
+#define MOVE_M UINT8_C(36)
+#define MOVE_M2 UINT8_C(37)
+#define MOVE_M3 UINT8_C(38)
+#define MOVE_S UINT8_C(39)
+#define MOVE_S2 UINT8_C(40)
+#define MOVE_S3 UINT8_C(41)
+#define MOVE_E UINT8_C(42)
+#define MOVE_E2 UINT8_C(43)
+#define MOVE_E3 UINT8_C(44)
+
+#define MOVE_x UINT8_C(45)
+#define MOVE_x2 UINT8_C(46)
+#define MOVE_x3 UINT8_C(47)
+#define MOVE_y UINT8_C(48)
+#define MOVE_y2 UINT8_C(49)
+#define MOVE_y3 UINT8_C(50)
+#define MOVE_z UINT8_C(51)
+#define MOVE_z2 UINT8_C(52)
+#define MOVE_z3 UINT8_C(53)
+
#define TRANS_UFr UINT8_C(0)
#define TRANS_ULr UINT8_C(1)
#define TRANS_UBr UINT8_C(2)
@@ -305,8 +344,9 @@
#define AXIS_RL UINT8_C(1)
#define AXIS_FB UINT8_C(2)
-#define NMOVES (1+MOVE_B3)
-#define NTRANS (1+TRANS_BLm)
+#define NMOVES (1+MOVE_B3)
+#define NMOVES_EXTENDED (1+MOVE_z3)
+#define NTRANS (1+TRANS_BLm)
#define MM_ALLMOVES UINT32_C(0x3FFFF)
#define MM_NOHALFTURNS UINT32_C(0x2DB6D)
@@ -448,6 +488,45 @@ STATIC const char *movestr[] = {
[MOVE_B] = "B",
[MOVE_B2] = "B2",
[MOVE_B3] = "B'",
+
+ [MOVE_Uw] = "Uw",
+ [MOVE_Uw2] = "Uw2",
+ [MOVE_Uw3] = "Uw'",
+ [MOVE_Dw] = "Dw",
+ [MOVE_Dw2] = "Dw2",
+ [MOVE_Dw3] = "Dw'",
+ [MOVE_Rw] = "Rw",
+ [MOVE_Rw2] = "Rw2",
+ [MOVE_Rw3] = "Rw'",
+ [MOVE_Lw] = "Lw",
+ [MOVE_Lw2] = "Lw2",
+ [MOVE_Lw3] = "Lw'",
+ [MOVE_Fw] = "Fw",
+ [MOVE_Fw2] = "Fw2",
+ [MOVE_Fw3] = "Fw'",
+ [MOVE_Bw] = "Bw",
+ [MOVE_Bw2] = "Bw2",
+ [MOVE_Bw3] = "Bw'",
+
+ [MOVE_M] = "M",
+ [MOVE_M2] = "M2",
+ [MOVE_M3] = "M'",
+ [MOVE_S] = "S",
+ [MOVE_S2] = "S2",
+ [MOVE_S3] = "S'",
+ [MOVE_E] = "E",
+ [MOVE_E2] = "E2",
+ [MOVE_E3] = "E'",
+
+ [MOVE_x] = "x",
+ [MOVE_x2] = "x2",
+ [MOVE_x3] = "x'",
+ [MOVE_y] = "y",
+ [MOVE_y2] = "y2",
+ [MOVE_y3] = "y'",
+ [MOVE_z] = "z",
+ [MOVE_z2] = "z2",
+ [MOVE_z3] = "z'",
};
STATIC const char *transstr[] = {
diff --git a/src/core/moves.h b/src/core/moves.h
@@ -36,6 +36,10 @@ STATIC oriented_cube_t applymoves(oriented_cube_t, const char *);
LOG("Unknown move: %c\n", *VAR_B); \
return RET_ERROR; \
} \
+ if (*(VAR_B+1) == 'w') { \
+ VAR_MOVE_NOMOD += 18; \
+ VAR_B++; \
+ } \
if ((VAR_MOD = readmodifier(*(VAR_B+1))) != 0) \
VAR_B++; \
ARG_MOVE = VAR_MOVE_NOMOD + VAR_MOD; \
@@ -58,6 +62,18 @@ readmove(char c)
return MOVE_F;
case 'B':
return MOVE_B;
+ case 'M':
+ return MOVE_M;
+ case 'S':
+ return MOVE_S;
+ case 'E':
+ return MOVE_E;
+ case 'x':
+ return MOVE_x;
+ case 'y':
+ return MOVE_y;
+ case 'z':
+ return MOVE_z;
default:
return UINT8_ERROR;
}