A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 118 lines 4.2 kB view raw
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".