A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1Introduction
2============
3
4This is the readme for the Rockbox port of Simon Tatham's Portable
5Puzzle Collection. The port was originally done by Franklin Wei in
62017, and has been regularly maintained since then to remain in sync
7with Simon's upstream sources.
8
9Source structure
10================
11
12The upstream source files reside in src/. As of 2024, these sources
13are bit-for-bit identical to Simon's upstream sources. The
14Rockbox-specific code in the parent puzzles/ directory provides a set
15of shims (rbcompat.h, rbwrappers.c), which emulate missing parts of
16the standard library to enable the upstream puzzles code to work
17happily on Rockbox. The implementation of the Rockbox frontend resides
18in rockbox.c.
19
20NOTE: the build makefile (puzzles.make) automatically includes
21`rbcompat.h` when compiling! Check there if things break.
22
23Help feature
24============
25
26The Help feature is implemented by compiling each puzzle against a
27compressed version of each puzzle's section from the upstream
28documentation. These files are stored under help/, and are generated
29by genhelp.sh from the puzzles.but file in the source
30distribution. The compression is LZ4, implemented in lz4tiny.c (for
31decompression on target), and compress.c (for generation). genhelp.sh
32should be run whenever the documentation is changed.
33
34Upstreams
35=========
36
37As of 2024, Simon's tree is located at:
38
39https://git.tartarus.org/?p=simon/puzzles.git
40
41For a long time (2017-2024), our version of the puzzles tree contained
42several patches to make certain games playable on Rockbox (notably
43cursor interfaces to Untangle and Palisade). These divergent changes
44complicated maintenance of the port, as merge conflicts often arose
45when upstream changes to these games conflicted with ours. To remedy
46this, I sent most of these patches back upstream in summer 2024, and
47since then, Simon has merged them into his repo. We are now able to
48run with a fully unmodified puzzles source tree.
49
50Maintenance
51===========
52
53Simon's upstream tree sees continued development. The port is
54structured so that integrating new upstream versions is
55straightforward: all the upstream sources live in the src/
56subdirectory; all of the Rockbox frontend lives in the root
57apps/plugins/puzzles/ directory.
58
59The `resync.sh' shell script automates the resyncing process. It
60copies the upstream sources (point it to a local copy of the
61rockbox-devel branch above) into src/ and performs auto-generation of
62the help content. Note that a modified version of "halibut" (Simon's
63homegrown documentation processor) must be compiled from this source:
64
65https://github.com/built1n/halibut
66
67The LZ4 library and GCC are necessary as well.
68
69Wishlist
70========
71
72- Nothing!
73
74Kudos to Simon (duh), and Frank, for telling me about it.
75
76Franklin Wei (__builtin)
77
78Changelog
79=========
80
81April 2017: Changes made to move upstream sources to a separate
82subdirectory, where they are completely unmodified from the
83original. Updating the upstream version is now as simple as copying a
84fresh set of sources to src/. Several hacks were used to accomplish
85this: a global include specified on the command line, and a directory
86of dummy header files.
87
88August 2017: Every game that can be played with only the cursor keys
89is now functional.
90
91October 2017: Added zoom feature.
92
93March 2018: Added help styling. Changed from simple_viewer to
94display_text for displaying help text. compress.c now does additional
95processing on the help text, and also requires a slightly modified
96halibut.
97
98April 2018: Finished up the rest of the games. All work now! Surely
99there's still bugs to fix, so stay tuned...
100
101December 2018: Resync to 3ece3d6. Happy holidays!
102
103May 2019: Resync to e2135d5.
104
105June 2020: Resync to 9aa7b7c. Fixed really embarrassing bug in loading
106saved games.
107
108July 2024: Resync to 1c62dac (branched from Simon's fd304c5).
109Implement user preferences menu. Introduced "Mosaic".
110
111August 2024: Resync to ee5e327 (branched from Simon's
1121c1899e). Changes default Map stipple size to "Small".
113
114August 2024: Resync to Simon's 262f709 (unmodified). Uses new scanline
115polygon filling algorithm. Updates drawing API.
116
117September 2025: Resync to Simon's e00cb46 (unmodified). Introduces
118"Group".