summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <franklin@rockbox.org>2024-07-23 06:05:45 -0400
committerFranklin Wei <franklin@rockbox.org>2024-07-23 06:05:45 -0400
commit62b0456a4b1415d3e4138e8dbca4b22f88d374d6 (patch)
tree393620d5f8ac19bddf40aaf90721e792017e1623
parent09aa8de52cb962f1ceebfb1fd44f2c54a924fc5c (diff)
downloadrockbox-62b0456a4b1415d3e4138e8dbca4b22f88d374d6.tar.gz
rockbox-62b0456a4b1415d3e4138e8dbca4b22f88d374d6.zip
puzzles: resync with upstream (adds new Palisade cursor interface).
Resyncs properly with this slightly modified upstream: https://www.franklinwei.com/git/puzzles/commit/?h=rockbox-devel&id=1c62dac3f4f1a819a394ff33cc82912cf9079b50 Change-Id: I2018e81647c22010f9d74d8d14d13982f2969a8f
-rw-r--r--apps/plugins/puzzles/help/blackbox.c2
-rw-r--r--apps/plugins/puzzles/help/bridges.c2
-rw-r--r--apps/plugins/puzzles/help/cube.c2
-rw-r--r--apps/plugins/puzzles/help/dominosa.c2
-rw-r--r--apps/plugins/puzzles/help/fifteen.c2
-rw-r--r--apps/plugins/puzzles/help/filling.c2
-rw-r--r--apps/plugins/puzzles/help/flip.c2
-rw-r--r--apps/plugins/puzzles/help/flood.c2
-rw-r--r--apps/plugins/puzzles/help/galaxies.c2
-rw-r--r--apps/plugins/puzzles/help/guess.c2
-rw-r--r--apps/plugins/puzzles/help/inertia.c2
-rw-r--r--apps/plugins/puzzles/help/keen.c2
-rw-r--r--apps/plugins/puzzles/help/lightup.c2
-rw-r--r--apps/plugins/puzzles/help/loopy.c2
-rw-r--r--apps/plugins/puzzles/help/magnets.c2
-rw-r--r--apps/plugins/puzzles/help/map.c2
-rw-r--r--apps/plugins/puzzles/help/mines.c2
-rw-r--r--apps/plugins/puzzles/help/mosaic.c2
-rw-r--r--apps/plugins/puzzles/help/net.c2
-rw-r--r--apps/plugins/puzzles/help/netslide.c2
-rw-r--r--apps/plugins/puzzles/help/palisade.c115
-rw-r--r--apps/plugins/puzzles/help/pattern.c2
-rw-r--r--apps/plugins/puzzles/help/pearl.c2
-rw-r--r--apps/plugins/puzzles/help/pegs.c2
-rw-r--r--apps/plugins/puzzles/help/range.c2
-rw-r--r--apps/plugins/puzzles/help/rect.c2
-rw-r--r--apps/plugins/puzzles/help/samegame.c2
-rw-r--r--apps/plugins/puzzles/help/signpost.c2
-rw-r--r--apps/plugins/puzzles/help/singles.c2
-rw-r--r--apps/plugins/puzzles/help/sixteen.c2
-rw-r--r--apps/plugins/puzzles/help/slant.c2
-rw-r--r--apps/plugins/puzzles/help/solo.c2
-rw-r--r--apps/plugins/puzzles/help/tents.c2
-rw-r--r--apps/plugins/puzzles/help/towers.c2
-rw-r--r--apps/plugins/puzzles/help/tracks.c2
-rw-r--r--apps/plugins/puzzles/help/twiddle.c2
-rw-r--r--apps/plugins/puzzles/help/undead.c2
-rw-r--r--apps/plugins/puzzles/help/unequal.c2
-rw-r--r--apps/plugins/puzzles/help/unruly.c2
-rw-r--r--apps/plugins/puzzles/help/untangle.c2
-rw-r--r--apps/plugins/puzzles/src/inertia.c9
-rw-r--r--apps/plugins/puzzles/src/mines.c12
-rw-r--r--apps/plugins/puzzles/src/palisade.c174
-rw-r--r--apps/plugins/puzzles/src/puzzles.but20
-rw-r--r--apps/plugins/puzzles/src/signpost.c5
-rw-r--r--apps/plugins/puzzles/src/unequal.c24
46 files changed, 309 insertions, 128 deletions
diff --git a/apps/plugins/puzzles/help/blackbox.c b/apps/plugins/puzzles/help/blackbox.c
index f01852becf..c9afd8e9f0 100644
--- a/apps/plugins/puzzles/help/blackbox.c
+++ b/apps/plugins/puzzles/help/blackbox.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/bridges.c b/apps/plugins/puzzles/help/bridges.c
index bd01c53426..5d4c878d7c 100644
--- a/apps/plugins/puzzles/help/bridges.c
+++ b/apps/plugins/puzzles/help/bridges.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/cube.c b/apps/plugins/puzzles/help/cube.c
index 21c3eb7cc3..f43131008e 100644
--- a/apps/plugins/puzzles/help/cube.c
+++ b/apps/plugins/puzzles/help/cube.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/dominosa.c b/apps/plugins/puzzles/help/dominosa.c
index 34958feb22..d8613270df 100644
--- a/apps/plugins/puzzles/help/dominosa.c
+++ b/apps/plugins/puzzles/help/dominosa.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/fifteen.c b/apps/plugins/puzzles/help/fifteen.c
index 7c0b4c8063..da982ea70a 100644
--- a/apps/plugins/puzzles/help/fifteen.c
+++ b/apps/plugins/puzzles/help/fifteen.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/filling.c b/apps/plugins/puzzles/help/filling.c
index a5ccd6d1fb..abf379318d 100644
--- a/apps/plugins/puzzles/help/filling.c
+++ b/apps/plugins/puzzles/help/filling.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/flip.c b/apps/plugins/puzzles/help/flip.c
index 91a0886b66..dbf0d1bcf4 100644
--- a/apps/plugins/puzzles/help/flip.c
+++ b/apps/plugins/puzzles/help/flip.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/flood.c b/apps/plugins/puzzles/help/flood.c
index 48905fd784..38a43e6522 100644
--- a/apps/plugins/puzzles/help/flood.c
+++ b/apps/plugins/puzzles/help/flood.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/galaxies.c b/apps/plugins/puzzles/help/galaxies.c
index 17b0d4a945..90d9332639 100644
--- a/apps/plugins/puzzles/help/galaxies.c
+++ b/apps/plugins/puzzles/help/galaxies.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/guess.c b/apps/plugins/puzzles/help/guess.c
index 9749854e1e..87469c072a 100644
--- a/apps/plugins/puzzles/help/guess.c
+++ b/apps/plugins/puzzles/help/guess.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/inertia.c b/apps/plugins/puzzles/help/inertia.c
index ba8d71d0a5..8817abd295 100644
--- a/apps/plugins/puzzles/help/inertia.c
+++ b/apps/plugins/puzzles/help/inertia.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/keen.c b/apps/plugins/puzzles/help/keen.c
index 9152fed158..93fd91266a 100644
--- a/apps/plugins/puzzles/help/keen.c
+++ b/apps/plugins/puzzles/help/keen.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/lightup.c b/apps/plugins/puzzles/help/lightup.c
index 874a05c596..5f2e3f5e06 100644
--- a/apps/plugins/puzzles/help/lightup.c
+++ b/apps/plugins/puzzles/help/lightup.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/loopy.c b/apps/plugins/puzzles/help/loopy.c
index 62ec8cfa0e..98b8b552c3 100644
--- a/apps/plugins/puzzles/help/loopy.c
+++ b/apps/plugins/puzzles/help/loopy.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/magnets.c b/apps/plugins/puzzles/help/magnets.c
index b89b23b097..e5c3a20d8e 100644
--- a/apps/plugins/puzzles/help/magnets.c
+++ b/apps/plugins/puzzles/help/magnets.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/map.c b/apps/plugins/puzzles/help/map.c
index 18b3fb5ace..4f3dd8346e 100644
--- a/apps/plugins/puzzles/help/map.c
+++ b/apps/plugins/puzzles/help/map.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/mines.c b/apps/plugins/puzzles/help/mines.c
index 8a4f4038c0..9f8cd2133b 100644
--- a/apps/plugins/puzzles/help/mines.c
+++ b/apps/plugins/puzzles/help/mines.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/mosaic.c b/apps/plugins/puzzles/help/mosaic.c
index 835de1898d..6fb160f28c 100644
--- a/apps/plugins/puzzles/help/mosaic.c
+++ b/apps/plugins/puzzles/help/mosaic.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/net.c b/apps/plugins/puzzles/help/net.c
index 9b42b5eca3..de900c1505 100644
--- a/apps/plugins/puzzles/help/net.c
+++ b/apps/plugins/puzzles/help/net.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/netslide.c b/apps/plugins/puzzles/help/netslide.c
index e8d066e1fc..9c27f17e0d 100644
--- a/apps/plugins/puzzles/help/netslide.c
+++ b/apps/plugins/puzzles/help/netslide.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/palisade.c b/apps/plugins/puzzles/help/palisade.c
index 9b95b07eae..7626a87c56 100644
--- a/apps/plugins/puzzles/help/palisade.c
+++ b/apps/plugins/puzzles/help/palisade.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
@@ -7,14 +7,15 @@
7struct style_text help_text_style[] = { 7struct style_text help_text_style[] = {
8 { 0, TEXT_CENTER | C_RED }, 8 { 0, TEXT_CENTER | C_RED },
9 { 88, TEXT_CENTER | C_RED }, 9 { 88, TEXT_CENTER | C_RED },
10 { 150, TEXT_CENTER | C_RED }, 10 { 199, TEXT_CENTER | C_RED },
11 { 167, TEXT_UNDERLINE }, 11 { 216, TEXT_UNDERLINE },
12 { 168, TEXT_UNDERLINE }, 12 { 217, TEXT_UNDERLINE },
13 { 178, TEXT_UNDERLINE }, 13 { 227, TEXT_UNDERLINE },
14 { 244, TEXT_CENTER | C_RED },
14 LAST_STYLE_ITEM 15 LAST_STYLE_ITEM
15}; 16};
16 17
17/* orig 1135 comp 902 ratio 0.794714 level 3 saved 233 */ 18/* orig 1672 comp 1186 ratio 0.70933 level 4 saved 486 */
18const char help_text[] = { 19const char help_text[] = {
190xff, 0x08, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x20, 200xff, 0x08, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x20,
200x34, 0x31, 0x3a, 0x20, 0x50, 0x61, 0x6c, 0x69, 0x73, 0x61, 210x34, 0x31, 0x3a, 0x20, 0x50, 0x61, 0x6c, 0x69, 0x73, 0x61,
@@ -69,46 +70,74 @@ const char help_text[] = {
690x40, 0x70, 0x6c, 0x61, 0x63, 0x0e, 0x01, 0x01, 0x3b, 0x01, 700x40, 0x70, 0x6c, 0x61, 0x63, 0x0e, 0x01, 0x01, 0x3b, 0x01,
700x67, 0x2e, 0x00, 0x52, 0x69, 0x67, 0x68, 0x1e, 0x00, 0xc1, 710x67, 0x2e, 0x00, 0x52, 0x69, 0x67, 0x68, 0x1e, 0x00, 0xc1,
710x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x60, 720x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x60,
720x6e, 0x6f, 0x22, 0x00, 0xf1, 0x02, 0x27, 0x2e, 0x00, 0x41, 730x6e, 0x6f, 0x22, 0x00, 0x10, 0x27, 0x93, 0x00, 0xe1, 0x41,
730x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 740x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65,
740x6c, 0x79, 0x2c, 0x36, 0x01, 0xf0, 0x07, 0x61, 0x72, 0x72, 750x6c, 0x79, 0x2c, 0x38, 0x01, 0xf0, 0x07, 0x61, 0x72, 0x72,
750x6f, 0x77, 0x00, 0x6b, 0x65, 0x79, 0x73, 0x00, 0x77, 0x69, 760x6f, 0x77, 0x00, 0x6b, 0x65, 0x79, 0x73, 0x00, 0x77, 0x69,
760x6c, 0x6c, 0x00, 0x6d, 0x6f, 0x76, 0x65, 0x00, 0x61, 0x11, 770x6c, 0x6c, 0x00, 0x6d, 0x6f, 0x76, 0x65, 0x00, 0x61, 0x11,
770x00, 0xf1, 0x02, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x00, 0x63, 780x00, 0xf1, 0x04, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x00, 0x63,
780x75, 0x72, 0x73, 0x6f, 0x72, 0x2e, 0x00, 0x48, 0x6f, 0x6c, 790x75, 0x72, 0x73, 0x6f, 0x72, 0x2e, 0x00, 0x44, 0x65, 0x70,
790x96, 0x01, 0x12, 0x43, 0x8f, 0x00, 0x00, 0x6b, 0x02, 0x81, 800x65, 0x6e, 0x9a, 0x01, 0x12, 0x6f, 0x8f, 0x01, 0x21, 0x60,
800x6c, 0x65, 0x00, 0x70, 0x72, 0x65, 0x73, 0x73, 0xe8, 0x01, 810x43, 0x1a, 0x00, 0xf3, 0x09, 0x00, 0x6d, 0x6f, 0x64, 0x65,
810x16, 0x6e, 0x4a, 0x00, 0x02, 0x49, 0x00, 0x0b, 0x9e, 0x00, 820x27, 0x00, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
820x10, 0x50, 0x2a, 0x00, 0x72, 0x00, 0x53, 0x68, 0x69, 0x66, 830x63, 0x65, 0x00, 0x28, 0x73, 0x65, 0x65, 0x00, 0x73, 0x19,
830x74, 0x2d, 0x2b, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x8d, 0x02, 840x01, 0x52, 0x34, 0x31, 0x2e, 0x33, 0x29, 0x6a, 0x00, 0x02,
840x97, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x6f, 0x66, 0x66, 850x4a, 0x00, 0x02, 0x66, 0x00, 0xc0, 0x65, 0x69, 0x74, 0x68,
850xcb, 0x00, 0x51, 0x65, 0x70, 0x65, 0x61, 0x74, 0x55, 0x00, 860x65, 0x72, 0x00, 0x6e, 0x61, 0x76, 0x69, 0x67, 0xa6, 0x00,
860x02, 0x5e, 0x01, 0x00, 0xee, 0x00, 0xf0, 0x03, 0x65, 0x72, 870x56, 0x61, 0x6d, 0x6f, 0x6e, 0x67, 0x90, 0x02, 0x05, 0xdb,
870x66, 0x6f, 0x72, 0x6d, 0x00, 0x69, 0x74, 0x73, 0x00, 0x69, 880x02, 0x53, 0x6f, 0x72, 0x00, 0x61, 0x6c, 0x1b, 0x00, 0x71,
880x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x64, 0x01, 0x42, 0x28, 890x69, 0x72, 0x00, 0x62, 0x6f, 0x72, 0x64, 0xd4, 0x02, 0x90,
890x41, 0x6c, 0x6c, 0xc9, 0x00, 0x01, 0x2a, 0x00, 0xa0, 0x73, 900x49, 0x6e, 0x00, 0x60, 0x46, 0x75, 0x6c, 0x6c, 0x2d, 0x2f,
900x00, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0xd4, 910x00, 0x11, 0x27, 0x84, 0x00, 0x82, 0x2c, 0x00, 0x68, 0x6f,
910x02, 0x23, 0x00, 0x73, 0x9e, 0x01, 0x40, 0x32, 0x2e, 0x31, 920x6c, 0x64, 0x00, 0x43, 0x31, 0x01, 0x00, 0x0d, 0x03, 0x20,
920x00, 0x9a, 0x02, 0xf2, 0x01, 0x61, 0x6c, 0x73, 0x6f, 0x00, 930x6c, 0x65, 0x97, 0x00, 0x21, 0x73, 0x73, 0x8a, 0x02, 0x16,
930x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 940x6e, 0xea, 0x00, 0x0d, 0x3e, 0x01, 0x11, 0x2c, 0x55, 0x02,
940x29, 0x6e, 0x01, 0x16, 0x32, 0x6e, 0x01, 0x91, 0x70, 0x61, 950x01, 0x2c, 0x00, 0x71, 0x00, 0x53, 0x68, 0x69, 0x66, 0x74,
950x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x70, 0x01, 0x66, 960x2d, 0x2c, 0x00, 0x03, 0x2b, 0x00, 0xa6, 0x73, 0x77, 0x69,
960x54, 0x68, 0x65, 0x73, 0x65, 0x00, 0x14, 0x00, 0x02, 0x44, 970x74, 0x63, 0x68, 0x00, 0x6f, 0x66, 0x66, 0x6e, 0x01, 0x00,
970x00, 0x04, 0x3f, 0x00, 0x51, 0x00, 0x66, 0x72, 0x6f, 0x6d, 980x80, 0x00, 0x68, 0x48, 0x61, 0x6c, 0x66, 0x2d, 0x00, 0x81,
980x7c, 0x00, 0xe1, 0x60, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 990x00, 0x02, 0x42, 0x00, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72,
990x2e, 0x2e, 0x2e, 0x27, 0x00, 0x6f, 0x70, 0x72, 0x00, 0x22, 1000x64, 0x00, 0x04, 0x20, 0x53, 0x70, 0x13, 0x00, 0x0f, 0x55,
1000x6f, 0x6e, 0x1a, 0x00, 0xa0, 0x54, 0x79, 0x70, 0x65, 0x27, 1010x00, 0x07, 0x03, 0x18, 0x01, 0x02, 0x4f, 0x00, 0xe1, 0x79,
1010x00, 0x6d, 0x65, 0x6e, 0x75, 0xae, 0x00, 0x90, 0x57, 0x69, 1020x6f, 0x75, 0x00, 0x63, 0x61, 0x6e, 0x00, 0x72, 0x65, 0x70,
1020x64, 0x74, 0x68, 0x2c, 0x00, 0x48, 0x65, 0xac, 0x01, 0x61, 1030x65, 0x61, 0x74, 0xc3, 0x00, 0x02, 0x55, 0x01, 0x00, 0x5c,
1030x00, 0x00, 0x00, 0x53, 0x69, 0x7a, 0xc0, 0x02, 0x03, 0x84, 1040x00, 0xf0, 0x03, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x00,
1040x03, 0x04, 0xd2, 0x03, 0x00, 0x2b, 0x00, 0x11, 0x52, 0x82, 1050x69, 0x74, 0x73, 0x00, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x73,
1050x03, 0x10, 0x20, 0x68, 0x03, 0x02, 0x8a, 0x00, 0x01, 0x73, 1060x65, 0xe1, 0x01, 0x42, 0x28, 0x41, 0x6c, 0x6c, 0xd7, 0x01,
1060x03, 0x04, 0xed, 0x02, 0x03, 0xa0, 0x03, 0x02, 0xb8, 0x03, 1070x01, 0x2a, 0x00, 0xa0, 0x73, 0x00, 0x64, 0x65, 0x73, 0x63,
1070x02, 0xf7, 0x03, 0x05, 0xcc, 0x03, 0x74, 0x6d, 0x75, 0x73, 1080x72, 0x69, 0x62, 0x65, 0xe4, 0x03, 0x05, 0x95, 0x01, 0x40,
1080x74, 0x00, 0x62, 0x65, 0xe7, 0x03, 0x50, 0x64, 0x65, 0x64, 1090x32, 0x2e, 0x31, 0x00, 0xaa, 0x03, 0xf2, 0x01, 0x61, 0x6c,
1090x2e, 0x00, 1100x73, 0x6f, 0x00, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
1110x6c, 0x65, 0x2e, 0x29, 0x7e, 0x02, 0x16, 0x32, 0x7e, 0x02,
1120x91, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
1130x80, 0x02, 0x66, 0x54, 0x68, 0x65, 0x73, 0x65, 0x00, 0x14,
1140x00, 0x02, 0x44, 0x00, 0x04, 0x3f, 0x00, 0x54, 0x00, 0x66,
1150x72, 0x6f, 0x6d, 0x1a, 0x02, 0xb1, 0x73, 0x74, 0x6f, 0x6d,
1160x2e, 0x2e, 0x2e, 0x27, 0x00, 0x6f, 0x70, 0x72, 0x00, 0x04,
1170x34, 0x02, 0xa0, 0x54, 0x79, 0x70, 0x65, 0x27, 0x00, 0x6d,
1180x65, 0x6e, 0x75, 0xae, 0x00, 0x90, 0x57, 0x69, 0x64, 0x74,
1190x68, 0x2c, 0x00, 0x48, 0x65, 0xbc, 0x02, 0x61, 0x00, 0x00,
1200x00, 0x53, 0x69, 0x7a, 0xd0, 0x03, 0x03, 0x94, 0x04, 0x04,
1210x07, 0x02, 0x00, 0x2b, 0x00, 0x11, 0x52, 0x92, 0x04, 0x10,
1220x20, 0x78, 0x04, 0x02, 0x8a, 0x00, 0x01, 0x83, 0x04, 0x04,
1230xfd, 0x03, 0x03, 0xb0, 0x04, 0x02, 0xc8, 0x04, 0x02, 0x07,
1240x05, 0x05, 0x4c, 0x02, 0x76, 0x6d, 0x75, 0x73, 0x74, 0x00,
1250x62, 0x65, 0xf7, 0x04, 0x22, 0x64, 0x2e, 0xe8, 0x00, 0x16,
1260x33, 0xe8, 0x00, 0x56, 0x75, 0x73, 0x65, 0x72, 0x20, 0xc3,
1270x02, 0x01, 0xee, 0x00, 0x20, 0x4f, 0x6e, 0xc1, 0x01, 0x10,
1280x74, 0x66, 0x01, 0x12, 0x73, 0xa9, 0x04, 0x80, 0x73, 0x75,
1290x70, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x2e, 0x00, 0x07, 0xf1,
1300x02, 0x12, 0x73, 0xdf, 0x02, 0x26, 0x60, 0x50, 0x12, 0x00,
1310x0d, 0xf8, 0x00, 0x33, 0x47, 0x61, 0x6d, 0xf8, 0x00, 0x02,
1320x00, 0x03, 0x32, 0x6c, 0x65, 0x74, 0xdf, 0x01, 0x72, 0x6f,
1330x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x8c, 0x05, 0x84, 0x62,
1340x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0xd7, 0x00, 0x03,
1350x32, 0x03, 0x01, 0x9d, 0x03, 0x2f, 0x74, 0x6f, 0x35, 0x03,
1360x04, 0x4f, 0x66, 0x75, 0x6c, 0x6c, 0x36, 0x03, 0x08, 0x04,
1370x34, 0x03, 0x08, 0x28, 0x05, 0xa0, 0x00, 0x73, 0x71, 0x75,
1380x61, 0x72, 0x65, 0x73, 0x2e, 0x00,
110}; 139};
111 140
112const unsigned short help_text_len = 1135; 141const unsigned short help_text_len = 1672;
113const unsigned short help_text_words = 193; 142const unsigned short help_text_words = 285;
114const char quick_help_text[] = "Divide the grid into equal-sized areas in accordance with the clues."; 143const char quick_help_text[] = "Divide the grid into equal-sized areas in accordance with the clues.";
diff --git a/apps/plugins/puzzles/help/pattern.c b/apps/plugins/puzzles/help/pattern.c
index b5775f32ed..3b83378bb5 100644
--- a/apps/plugins/puzzles/help/pattern.c
+++ b/apps/plugins/puzzles/help/pattern.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/pearl.c b/apps/plugins/puzzles/help/pearl.c
index b8f32ce3b8..2fa7ed9f14 100644
--- a/apps/plugins/puzzles/help/pearl.c
+++ b/apps/plugins/puzzles/help/pearl.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/pegs.c b/apps/plugins/puzzles/help/pegs.c
index b7159ffc5c..beb9dccca7 100644
--- a/apps/plugins/puzzles/help/pegs.c
+++ b/apps/plugins/puzzles/help/pegs.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/range.c b/apps/plugins/puzzles/help/range.c
index 5a9e3ab71d..379ad7a4f9 100644
--- a/apps/plugins/puzzles/help/range.c
+++ b/apps/plugins/puzzles/help/range.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/rect.c b/apps/plugins/puzzles/help/rect.c
index c608c4fc98..32205f0a9e 100644
--- a/apps/plugins/puzzles/help/rect.c
+++ b/apps/plugins/puzzles/help/rect.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/samegame.c b/apps/plugins/puzzles/help/samegame.c
index 87f7b2b3b9..8194a09227 100644
--- a/apps/plugins/puzzles/help/samegame.c
+++ b/apps/plugins/puzzles/help/samegame.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/signpost.c b/apps/plugins/puzzles/help/signpost.c
index e38e42870c..b7accfbada 100644
--- a/apps/plugins/puzzles/help/signpost.c
+++ b/apps/plugins/puzzles/help/signpost.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/singles.c b/apps/plugins/puzzles/help/singles.c
index f2bd1ae4d9..6d9559c095 100644
--- a/apps/plugins/puzzles/help/singles.c
+++ b/apps/plugins/puzzles/help/singles.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/sixteen.c b/apps/plugins/puzzles/help/sixteen.c
index 164be4ee4e..3c636677fb 100644
--- a/apps/plugins/puzzles/help/sixteen.c
+++ b/apps/plugins/puzzles/help/sixteen.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/slant.c b/apps/plugins/puzzles/help/slant.c
index 1a8168fb3b..a4e2fcb630 100644
--- a/apps/plugins/puzzles/help/slant.c
+++ b/apps/plugins/puzzles/help/slant.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/solo.c b/apps/plugins/puzzles/help/solo.c
index ceb05fa70e..ef09bf0afd 100644
--- a/apps/plugins/puzzles/help/solo.c
+++ b/apps/plugins/puzzles/help/solo.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/tents.c b/apps/plugins/puzzles/help/tents.c
index 11eeaef435..9b23b73fd2 100644
--- a/apps/plugins/puzzles/help/tents.c
+++ b/apps/plugins/puzzles/help/tents.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/towers.c b/apps/plugins/puzzles/help/towers.c
index b41fb7a432..c6a3aad003 100644
--- a/apps/plugins/puzzles/help/towers.c
+++ b/apps/plugins/puzzles/help/towers.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/tracks.c b/apps/plugins/puzzles/help/tracks.c
index fae974619a..fdc3f40e22 100644
--- a/apps/plugins/puzzles/help/tracks.c
+++ b/apps/plugins/puzzles/help/tracks.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/twiddle.c b/apps/plugins/puzzles/help/twiddle.c
index 1a989237b0..b34ff3b832 100644
--- a/apps/plugins/puzzles/help/twiddle.c
+++ b/apps/plugins/puzzles/help/twiddle.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/undead.c b/apps/plugins/puzzles/help/undead.c
index 2ad886cd0d..3c33147a66 100644
--- a/apps/plugins/puzzles/help/undead.c
+++ b/apps/plugins/puzzles/help/undead.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/unequal.c b/apps/plugins/puzzles/help/unequal.c
index 445fd7d544..342b0dc0aa 100644
--- a/apps/plugins/puzzles/help/unequal.c
+++ b/apps/plugins/puzzles/help/unequal.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/unruly.c b/apps/plugins/puzzles/help/unruly.c
index 39249c5949..627ffcc329 100644
--- a/apps/plugins/puzzles/help/unruly.c
+++ b/apps/plugins/puzzles/help/unruly.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/help/untangle.c b/apps/plugins/puzzles/help/untangle.c
index 64ebdfb364..9beb2a545f 100644
--- a/apps/plugins/puzzles/help/untangle.c
+++ b/apps/plugins/puzzles/help/untangle.c
@@ -1,4 +1,4 @@
1/* auto-generated on Jul 22 2024 by genhelp.sh */ 1/* auto-generated on Jul 23 2024 by genhelp.sh */
2/* help text is compressed using LZ4; see compress.c for details */ 2/* help text is compressed using LZ4; see compress.c for details */
3/* DO NOT EDIT! */ 3/* DO NOT EDIT! */
4 4
diff --git a/apps/plugins/puzzles/src/inertia.c b/apps/plugins/puzzles/src/inertia.c
index d120411f55..1d5a028add 100644
--- a/apps/plugins/puzzles/src/inertia.c
+++ b/apps/plugins/puzzles/src/inertia.c
@@ -1886,6 +1886,11 @@ static void draw_player(drawing *dr, game_drawstate *ds, int x, int y,
1886 coords[d*4+2] = x + TILESIZE/2 + (int)((TILESIZE*3/7) * x2); 1886 coords[d*4+2] = x + TILESIZE/2 + (int)((TILESIZE*3/7) * x2);
1887 coords[d*4+3] = y + TILESIZE/2 + (int)((TILESIZE*3/7) * y2); 1887 coords[d*4+3] = y + TILESIZE/2 + (int)((TILESIZE*3/7) * y2);
1888 } 1888 }
1889 /* rockbox hack */
1890 int tmp[2] = { coords[0], coords[1] };
1891 memmove(coords, coords + 2, sizeof(int) * DIRECTIONS * 4 - 2);
1892 memcpy(coords + DIRECTIONS * 4 - 2, tmp, 2 * sizeof(int));
1893
1889 draw_polygon(dr, coords, DIRECTIONS*2, COL_DEAD_PLAYER, COL_OUTLINE); 1894 draw_polygon(dr, coords, DIRECTIONS*2, COL_DEAD_PLAYER, COL_OUTLINE);
1890 } else { 1895 } else {
1891 draw_circle(dr, x + TILESIZE/2, y + TILESIZE/2, 1896 draw_circle(dr, x + TILESIZE/2, y + TILESIZE/2,
@@ -1901,8 +1906,6 @@ static void draw_player(drawing *dr, game_drawstate *ds, int x, int y,
1901 int coords[14], *c; 1906 int coords[14], *c;
1902 1907
1903 c = coords; 1908 c = coords;
1904 *c++ = ox + px/9;
1905 *c++ = oy + py/9;
1906 *c++ = ox + px/9 + ax*2/3; 1909 *c++ = ox + px/9 + ax*2/3;
1907 *c++ = oy + py/9 + ay*2/3; 1910 *c++ = oy + py/9 + ay*2/3;
1908 *c++ = ox + px/3 + ax*2/3; 1911 *c++ = ox + px/3 + ax*2/3;
@@ -1915,6 +1918,8 @@ static void draw_player(drawing *dr, game_drawstate *ds, int x, int y,
1915 *c++ = oy - py/9 + ay*2/3; 1918 *c++ = oy - py/9 + ay*2/3;
1916 *c++ = ox - px/9; 1919 *c++ = ox - px/9;
1917 *c++ = oy - py/9; 1920 *c++ = oy - py/9;
1921 *c++ = ox + px/9;
1922 *c++ = oy + py/9;
1918 draw_polygon(dr, coords, 7, COL_HINT, COL_OUTLINE); 1923 draw_polygon(dr, coords, 7, COL_HINT, COL_OUTLINE);
1919 } 1924 }
1920 1925
diff --git a/apps/plugins/puzzles/src/mines.c b/apps/plugins/puzzles/src/mines.c
index e1441fae13..eec898ac6f 100644
--- a/apps/plugins/puzzles/src/mines.c
+++ b/apps/plugins/puzzles/src/mines.c
@@ -2867,12 +2867,12 @@ static void draw_tile(drawing *dr, game_drawstate *ds,
2867 coords[(n)*2+0] = x + (int)(TILE_SIZE * (dx)); \ 2867 coords[(n)*2+0] = x + (int)(TILE_SIZE * (dx)); \
2868 coords[(n)*2+1] = y + (int)(TILE_SIZE * (dy)); \ 2868 coords[(n)*2+1] = y + (int)(TILE_SIZE * (dy)); \
2869} while (0) 2869} while (0)
2870 SETCOORD(0, 0.6F, 0.35F); 2870 SETCOORD(0, 0.6F, 0.7F);
2871 SETCOORD(1, 0.6F, 0.7F); 2871 SETCOORD(1, 0.8F, 0.8F);
2872 SETCOORD(2, 0.8F, 0.8F); 2872 SETCOORD(2, 0.25F, 0.8F);
2873 SETCOORD(3, 0.25F, 0.8F); 2873 SETCOORD(3, 0.55F, 0.7F);
2874 SETCOORD(4, 0.55F, 0.7F); 2874 SETCOORD(4, 0.55F, 0.35F);
2875 SETCOORD(5, 0.55F, 0.35F); 2875 SETCOORD(5, 0.6F, 0.35F);
2876 draw_polygon(dr, coords, 6, COL_FLAGBASE, COL_FLAGBASE); 2876 draw_polygon(dr, coords, 6, COL_FLAGBASE, COL_FLAGBASE);
2877 2877
2878 SETCOORD(0, 0.6F, 0.2F); 2878 SETCOORD(0, 0.6F, 0.2F);
diff --git a/apps/plugins/puzzles/src/palisade.c b/apps/plugins/puzzles/src/palisade.c
index 811204b1fe..ecbbbb4d6f 100644
--- a/apps/plugins/puzzles/src/palisade.c
+++ b/apps/plugins/puzzles/src/palisade.c
@@ -868,18 +868,48 @@ static char *game_text_format(const game_state *state)
868} 868}
869 869
870struct game_ui { 870struct game_ui {
871 /* These are half-grid coordinates - (0,0) is the top left corner
872 * of the top left square; (1,1) is the center of the top left
873 * grid square. */
871 int x, y; 874 int x, y;
872 bool show; 875 bool show;
876
877 bool legacy_cursor;
873}; 878};
874 879
875static game_ui *new_ui(const game_state *state) 880static game_ui *new_ui(const game_state *state)
876{ 881{
877 game_ui *ui = snew(game_ui); 882 game_ui *ui = snew(game_ui);
878 ui->x = ui->y = 0; 883 ui->x = ui->y = 1;
879 ui->show = getenv_bool("PUZZLES_SHOW_CURSOR", false); 884 ui->show = getenv_bool("PUZZLES_SHOW_CURSOR", false);
885 ui->legacy_cursor = false;
880 return ui; 886 return ui;
881} 887}
882 888
889static config_item *get_prefs(game_ui *ui)
890{
891 config_item *cfg;
892
893 cfg = snewn(2, config_item);
894
895 cfg[0].name = "Cursor mode";
896 cfg[0].kw = "cursor-mode";
897 cfg[0].type = C_CHOICES;
898 cfg[0].u.choices.choicenames = ":Half-grid:Full-grid";
899 cfg[0].u.choices.choicekws = ":half:full";
900 cfg[0].u.choices.selected = ui->legacy_cursor;
901
902 cfg[1].name = NULL;
903 cfg[1].type = C_END;
904
905 return cfg;
906}
907
908static void set_prefs(game_ui *ui, const config_item *cfg)
909{
910 ui->legacy_cursor = cfg[0].u.choices.selected;
911}
912
883static void free_ui(game_ui *ui) 913static void free_ui(game_ui *ui)
884{ 914{
885 sfree(ui); 915 sfree(ui);
@@ -890,7 +920,7 @@ static void game_changed_state(game_ui *ui, const game_state *oldstate,
890{ 920{
891} 921}
892 922
893typedef unsigned short dsflags; 923typedef int dsflags;
894 924
895struct game_drawstate { 925struct game_drawstate {
896 int tilesize; 926 int tilesize;
@@ -921,9 +951,6 @@ static char *interpret_move(const game_state *state, game_ui *ui,
921 951
922 if (OUT_OF_BOUNDS(gx, gy, w, h)) return NULL; 952 if (OUT_OF_BOUNDS(gx, gy, w, h)) return NULL;
923 953
924 ui->x = gx;
925 ui->y = gy;
926
927 /* find edge closest to click point */ 954 /* find edge closest to click point */
928 possible &=~ (2*px < TILESIZE ? BORDER_R : BORDER_L); 955 possible &=~ (2*px < TILESIZE ? BORDER_R : BORDER_L);
929 possible &=~ (2*py < TILESIZE ? BORDER_D : BORDER_U); 956 possible &=~ (2*py < TILESIZE ? BORDER_D : BORDER_U);
@@ -934,6 +961,9 @@ static char *interpret_move(const game_state *state, game_ui *ui,
934 for (dir = 0; dir < 4 && BORDER(dir) != possible; ++dir); 961 for (dir = 0; dir < 4 && BORDER(dir) != possible; ++dir);
935 if (dir == 4) return NULL; /* there's not exactly one such edge */ 962 if (dir == 4) return NULL; /* there's not exactly one such edge */
936 963
964 ui->x = min(max(2*gx + 1 + dx[dir], 1), 2*w-1);
965 ui->y = min(max(2*gy + 1 + dy[dir], 1), 2*h-1);
966
937 hx = gx + dx[dir]; 967 hx = gx + dx[dir];
938 hy = gy + dy[dir]; 968 hy = gy + dy[dir];
939 969
@@ -963,17 +993,17 @@ static char *interpret_move(const game_state *state, game_ui *ui,
963 } 993 }
964 994
965 if (IS_CURSOR_MOVE(button)) { 995 if (IS_CURSOR_MOVE(button)) {
966 if (control || shift) { 996 if(ui->legacy_cursor && (control || shift)) {
967 borderflag flag = 0, newflag; 997 borderflag flag = 0, newflag;
968 int dir, i = ui->y * w + ui->x; 998 int dir, i = (ui->y/2) * w + (ui->x/2);
969 ui->show = true; 999 ui->show = true;
970 x = ui->x; 1000 x = ui->x/2;
971 y = ui->y; 1001 y = ui->y/2;
972 move_cursor(button, &x, &y, w, h, false, NULL); 1002 move_cursor(button, &x, &y, w, h, false, NULL);
973 if (OUT_OF_BOUNDS(x, y, w, h)) return NULL; 1003 if (OUT_OF_BOUNDS(x, y, w, h)) return NULL;
974 1004
975 for (dir = 0; dir < 4; ++dir) 1005 for (dir = 0; dir < 4; ++dir)
976 if (dx[dir] == x - ui->x && dy[dir] == y - ui->y) break; 1006 if (dx[dir] == x - ui->x/2 && dy[dir] == y - ui->y/2) break;
977 if (dir == 4) return NULL; /* how the ... ?! */ 1007 if (dir == 4) return NULL; /* how the ... ?! */
978 1008
979 if (control) flag |= BORDER(dir); 1009 if (control) flag |= BORDER(dir);
@@ -987,9 +1017,67 @@ static char *interpret_move(const game_state *state, game_ui *ui,
987 if (control) newflag |= BORDER(FLIP(dir)); 1017 if (control) newflag |= BORDER(FLIP(dir));
988 if (shift) newflag |= DISABLED(BORDER(FLIP(dir))); 1018 if (shift) newflag |= DISABLED(BORDER(FLIP(dir)));
989 return string(80, "F%d,%d,%dF%d,%d,%d", 1019 return string(80, "F%d,%d,%dF%d,%d,%d",
990 ui->x, ui->y, flag, x, y, newflag); 1020 ui->x/2, ui->y/2, flag, x, y, newflag);
991 } else 1021 } else {
992 return move_cursor(button, &ui->x, &ui->y, w, h, false, &ui->show); 1022 /* TODO: Refactor this and other half-grid cursor games
1023 * (Tracks, etc.) */
1024 int dx = (button == CURSOR_LEFT) ? -1 : ((button == CURSOR_RIGHT) ? +1 : 0);
1025 int dy = (button == CURSOR_DOWN) ? +1 : ((button == CURSOR_UP) ? -1 : 0);
1026
1027 if(ui->legacy_cursor) {
1028 dx *= 2; dy *= 2;
1029
1030 ui->x |= 1;
1031 ui->y |= 1;
1032 }
1033
1034 if (!ui->show) {
1035 ui->show = true;
1036 }
1037
1038 ui->x = min(max(ui->x + dx, 1), 2*w-1);
1039 ui->y = min(max(ui->y + dy, 1), 2*h-1);
1040
1041 return MOVE_UI_UPDATE;
1042 }
1043 } else if (IS_CURSOR_SELECT(button)) {
1044 int px = ui->x % 2, py = ui->y % 2;
1045 int gx = ui->x / 2, gy = ui->y / 2;
1046 int dir = (px == 0) ? 3 : 0; /* left = 3; up = 0 */
1047 int hx = gx + dx[dir];
1048 int hy = gy + dy[dir];
1049
1050 int i = gy * w + gx;
1051
1052 if(!ui->show) {
1053 ui->show = true;
1054 return MOVE_UI_UPDATE;
1055 }
1056
1057 /* clicks on square corners and centers do nothing */
1058 if (px == py)
1059 return MOVE_NO_EFFECT;
1060
1061 /* TODO: Refactor this and the mouse click handling code
1062 * above. */
1063 switch ((button == CURSOR_SELECT2) |
1064 ((state->borders[i] & BORDER(dir)) >> dir << 1) |
1065 ((state->borders[i] & DISABLED(BORDER(dir))) >> dir >> 2)) {
1066
1067 case MAYBE_LEFT:
1068 case ON_LEFT:
1069 case ON_RIGHT:
1070 return string(80, "F%d,%d,%dF%d,%d,%d",
1071 gx, gy, BORDER(dir),
1072 hx, hy, BORDER(FLIP(dir)));
1073
1074 case MAYBE_RIGHT:
1075 case OFF_LEFT:
1076 case OFF_RIGHT:
1077 return string(80, "F%d,%d,%dF%d,%d,%d",
1078 gx, gy, DISABLED(BORDER(dir)),
1079 hx, hy, DISABLED(BORDER(FLIP(dir))));
1080 }
993 } 1081 }
994 1082
995 return NULL; 1083 return NULL;
@@ -1098,7 +1186,7 @@ static float *game_colours(frontend *fe, int *ncolours)
1098#define F_ERROR_L BORDER_ERROR(BORDER_L) /* BIT(11) */ 1186#define F_ERROR_L BORDER_ERROR(BORDER_L) /* BIT(11) */
1099#define F_ERROR_CLUE BIT(12) 1187#define F_ERROR_CLUE BIT(12)
1100#define F_FLASH BIT(13) 1188#define F_FLASH BIT(13)
1101#define F_CURSOR BIT(14) 1189#define CONTAINS_CURSOR(x) ((x) << 14)
1102 1190
1103static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state) 1191static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state)
1104{ 1192{
@@ -1132,9 +1220,6 @@ static void draw_tile(drawing *dr, game_drawstate *ds, int r, int c,
1132 draw_rect(dr, x + WIDTH, y + WIDTH, TILESIZE - WIDTH, TILESIZE - WIDTH, 1220 draw_rect(dr, x + WIDTH, y + WIDTH, TILESIZE - WIDTH, TILESIZE - WIDTH,
1133 (flags & F_FLASH ? COL_FLASH : COL_BACKGROUND)); 1221 (flags & F_FLASH ? COL_FLASH : COL_BACKGROUND));
1134 1222
1135 if (flags & F_CURSOR)
1136 draw_rect_corners(dr, x + CENTER, y + CENTER, TILESIZE / 3, COL_GRID);
1137
1138 if (clue != EMPTY) { 1223 if (clue != EMPTY) {
1139 char buf[2]; 1224 char buf[2];
1140 buf[0] = '0' + clue; 1225 buf[0] = '0' + clue;
@@ -1158,6 +1243,47 @@ static void draw_tile(drawing *dr, game_drawstate *ds, int r, int c,
1158 draw_update(dr, x, y, TILESIZE + WIDTH, TILESIZE + WIDTH); 1243 draw_update(dr, x, y, TILESIZE + WIDTH, TILESIZE + WIDTH);
1159} 1244}
1160 1245
1246static void draw_cursor(drawing *dr, game_drawstate *ds,
1247 int cur_x, int cur_y, bool legacy_cursor)
1248{
1249 int off_x = cur_x % 2, off_y = cur_y % 2;
1250
1251 /* Figure out the tile coordinates corresponding to these cursor
1252 * coordinates. */
1253 int x = MARGIN + TILESIZE * (cur_x / 2), y = MARGIN + TILESIZE * (cur_y / 2);
1254
1255 /* off_x and off_y are either 0 or 1. The possible cases are
1256 * therefore:
1257 *
1258 * (0, 0): the cursor is in the top left corner of the tile.
1259 * (0, 1): the cursor is on the left border of the tile.
1260 * (1, 0): the cursor is on the top border of the tile.
1261 * (1, 1): the cursor is in the center of the tile.
1262 */
1263 enum { TOP_LEFT_CORNER, LEFT_BORDER, TOP_BORDER, TILE_CENTER } cur_type = (off_x << 1) + off_y;
1264
1265 int center_x = x + ((off_x == 0) ? WIDTH/2 : CENTER),
1266 center_y = y + ((off_y == 0) ? WIDTH/2 : CENTER);
1267
1268 struct { int w, h; } cursor_dimensions[] = {
1269 { TILESIZE / 3, TILESIZE / 3 }, /* top left corner */
1270 { TILESIZE / 3, 2 * TILESIZE / 3}, /* left border */
1271 { 2 * TILESIZE / 3, TILESIZE / 3}, /* top border */
1272 { 2 * TILESIZE / 3, 2 * TILESIZE / 3 } /* center */
1273 }, *dims = cursor_dimensions + cur_type;
1274
1275 if(legacy_cursor && cur_type == TILE_CENTER)
1276 draw_rect_corners(dr, center_x, center_y, TILESIZE / 3, COL_GRID);
1277 else
1278 draw_rect_outline(dr,
1279 center_x - dims->w / 2, center_y - dims->h / 2,
1280 dims->w, dims->h, COL_GRID);
1281
1282 draw_update(dr,
1283 center_x - dims->w / 2, center_y - dims->h / 2,
1284 dims->w, dims->h);
1285}
1286
1161#define FLASH_TIME 0.7F 1287#define FLASH_TIME 0.7F
1162 1288
1163static void game_redraw(drawing *dr, game_drawstate *ds, 1289static void game_redraw(drawing *dr, game_drawstate *ds,
@@ -1203,8 +1329,13 @@ static void game_redraw(drawing *dr, game_drawstate *ds,
1203 if (clue != EMPTY && (on > clue || clue > 4 - off)) 1329 if (clue != EMPTY && (on > clue || clue > 4 - off))
1204 flags |= F_ERROR_CLUE; 1330 flags |= F_ERROR_CLUE;
1205 1331
1206 if (ui->show && ui->x == c && ui->y == r) 1332 if (ui->show) {
1207 flags |= F_CURSOR; 1333 int u, v;
1334 for(u = 0; u < 3; u++)
1335 for(v = 0; v < 3; v++)
1336 if(ui->x == 2*c+u && ui->y == 2*r+v)
1337 flags |= CONTAINS_CURSOR(BIT(3*u+v));
1338 }
1208 1339
1209 /* border errors */ 1340 /* border errors */
1210 for (dir = 0; dir < 4; ++dir) { 1341 for (dir = 0; dir < 4; ++dir) {
@@ -1248,6 +1379,9 @@ static void game_redraw(drawing *dr, game_drawstate *ds,
1248 draw_tile(dr, ds, r, c, ds->grid[i], clue); 1379 draw_tile(dr, ds, r, c, ds->grid[i], clue);
1249 } 1380 }
1250 1381
1382 if (ui->show)
1383 draw_cursor(dr, ds, ui->x, ui->y, ui->legacy_cursor);
1384
1251 dsf_free(black_border_dsf); 1385 dsf_free(black_border_dsf);
1252 dsf_free(yellow_border_dsf); 1386 dsf_free(yellow_border_dsf);
1253} 1387}
@@ -1375,7 +1509,7 @@ const struct game thegame = {
1375 free_game, 1509 free_game,
1376 true, solve_game, 1510 true, solve_game,
1377 true, game_can_format_as_text_now, game_text_format, 1511 true, game_can_format_as_text_now, game_text_format,
1378 NULL, NULL, /* get_prefs, set_prefs */ 1512 get_prefs, set_prefs, /* get_prefs, set_prefs */
1379 new_ui, 1513 new_ui,
1380 free_ui, 1514 free_ui,
1381 NULL, /* encode_ui */ 1515 NULL, /* encode_ui */
diff --git a/apps/plugins/puzzles/src/puzzles.but b/apps/plugins/puzzles/src/puzzles.but
index fb94155eed..fa9384252e 100644
--- a/apps/plugins/puzzles/src/puzzles.but
+++ b/apps/plugins/puzzles/src/puzzles.but
@@ -3519,10 +3519,15 @@ Palisade was contributed to this collection by Jonas K\u00F6{oe}lker.
3519\H{palisade-controls} \I{controls, for Palisade}Palisade controls 3519\H{palisade-controls} \I{controls, for Palisade}Palisade controls
3520 3520
3521Left-click to place an edge. Right-click to indicate \q{no edge}. 3521Left-click to place an edge. Right-click to indicate \q{no edge}.
3522Alternatively, the arrow keys will move a keyboard cursor. Holding 3522
3523Control while pressing an arrow key will place an edge. Press 3523Alternatively, the arrow keys will move a keyboard cursor. Depending
3524Shift-arrowkey to switch off an edge. Repeat an action to perform 3524on the \q{Cursor mode} preference (see \k{palisade-prefs}), the cursor
3525its inverse. 3525will either navigate among the grid squares, or along their
3526borders. In \q{Full-grid} mode, hold Control while pressing an arrow
3527key to place an edge, and press Shift-arrowkey to switch off an
3528edge. In \q{Half-grid} mode, press Enter to place an edge, and Space
3529to switch off an edge. In either mode, you can repeat an action to
3530perform its inverse.
3526 3531
3527(All the actions described in \k{common-actions} are also available.) 3532(All the actions described in \k{common-actions} are also available.)
3528 3533
@@ -3539,6 +3544,13 @@ These parameters are available from the \q{Custom...} option on the
3539 3544
3540\dd The size of the regions into which the grid must be subdivided. 3545\dd The size of the regions into which the grid must be subdivided.
3541 3546
3547\H{palisade-prefs} \I{preferences, for Palisade}Palisade user preferences
3548
3549On platforms that support user preferences, the \q{Preferences} option
3550on the \q{Game} menu will let you configure the behavior of the cursor
3551keys to either navigate among full grid squares, or along the borders
3552of the grid squares.
3553
3542\C{mosaic} \i{Mosaic} 3554\C{mosaic} \i{Mosaic}
3543 3555
3544\cfg{winhelp-topic}{games.mosaic} 3556\cfg{winhelp-topic}{games.mosaic}
diff --git a/apps/plugins/puzzles/src/signpost.c b/apps/plugins/puzzles/src/signpost.c
index 9aed67bb4a..4d2f5849fd 100644
--- a/apps/plugins/puzzles/src/signpost.c
+++ b/apps/plugins/puzzles/src/signpost.c
@@ -1895,8 +1895,9 @@ static void draw_star(drawing *dr, int cx, int cy, int rad, int npoints,
1895 coords = snewn(npoints * 2 * 2, int); 1895 coords = snewn(npoints * 2 * 2, int);
1896 1896
1897 for (n = 0; n < npoints * 2; n++) { 1897 for (n = 0; n < npoints * 2; n++) {
1898 a = 2.0 * PI * ((double)n / ((double)npoints * 2.0)) + angle_offset; 1898 /* hack to accomodate rockbox's concave polygon drawing */
1899 r = (n % 2) ? (double)rad/2.0 : (double)rad; 1899 a = 2.0 * PI * ((double)n / ((double)npoints * 2.0)) + angle_offset - PI / npoints;
1900 r = (n % 2 == 0) ? (double)rad/2.0 : (double)rad;
1900 1901
1901 /* We're rotating the point at (0, -r) by a degrees */ 1902 /* We're rotating the point at (0, -r) by a degrees */
1902 coords[2*n+0] = cx + (int)( r * sin(a)); 1903 coords[2*n+0] = cx + (int)( r * sin(a));
diff --git a/apps/plugins/puzzles/src/unequal.c b/apps/plugins/puzzles/src/unequal.c
index ab32e4ab79..008dab3a0b 100644
--- a/apps/plugins/puzzles/src/unequal.c
+++ b/apps/plugins/puzzles/src/unequal.c
@@ -1844,18 +1844,18 @@ static void draw_gt(drawing *dr, int ox, int oy,
1844{ 1844{
1845 int coords[12]; 1845 int coords[12];
1846 int xdx = (dx1+dx2 ? 0 : 1), xdy = (dx1+dx2 ? 1 : 0); 1846 int xdx = (dx1+dx2 ? 0 : 1), xdy = (dx1+dx2 ? 1 : 0);
1847 coords[0] = ox + xdx; 1847 coords[0] = ox + xdx + dx1;
1848 coords[1] = oy + xdy; 1848 coords[1] = oy + xdy + dy1;
1849 coords[2] = ox + xdx + dx1; 1849 coords[2] = ox + xdx + dx1 + dx2;
1850 coords[3] = oy + xdy + dy1; 1850 coords[3] = oy + xdy + dy1 + dy2;
1851 coords[4] = ox + xdx + dx1 + dx2; 1851 coords[4] = ox - xdx + dx1 + dx2;
1852 coords[5] = oy + xdy + dy1 + dy2; 1852 coords[5] = oy - xdy + dy1 + dy2;
1853 coords[6] = ox - xdx + dx1 + dx2; 1853 coords[6] = ox - xdx + dx1;
1854 coords[7] = oy - xdy + dy1 + dy2; 1854 coords[7] = oy - xdy + dy1;
1855 coords[8] = ox - xdx + dx1; 1855 coords[8] = ox - xdx;
1856 coords[9] = oy - xdy + dy1; 1856 coords[9] = oy - xdy;
1857 coords[10] = ox - xdx; 1857 coords[10] = ox + xdx;
1858 coords[11] = oy - xdy; 1858 coords[11] = oy + xdy;
1859 draw_polygon(dr, coords, 6, col, col); 1859 draw_polygon(dr, coords, 6, col, col);
1860} 1860}
1861 1861