mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 10:07:38 -04:00
Notably, this enables "Group". This also includes some changes to the Rockbox frontend: - Removes extraneous underline from Extensive Help text. - Implements a workaround for an upstream breaking change that removes the BLITTER_FROMSAVED flag. We depend on this for mouse mode. This is apparently the only place this flag was ever used. Note that I've hardcoded an arbitrary negative value for BLITTER_FROMSAVED instead of -1, for the reason Ben Harris mentioned in his commit removing it from the upstream source tree. - Adds an implicit clip() to the game region when drawing a puzzle. This fixes a bug in Untangle where dragging a point off screen leads to ugly lines outside the play area. - Implements "Quick Help" for unfinished plugins (but not "Extensive Help"). - Documents the need to disable unfinished plugins in resync.sh (weak symbols on win32). Change-Id: Ic318a5db4b15acb437a3f951fbc9b7919c6fa652 |
||
---|---|---|
.. | ||
dummy | ||
help | ||
src | ||
compress.c | ||
fonts.zip | ||
genhelp.sh | ||
help.h | ||
lz4tiny.c | ||
lz4tiny.h | ||
puzzles.make | ||
rbassert.h | ||
rbcompat.h | ||
rbmalloc.c | ||
rbwrappers.c | ||
README.rockbox | ||
resync.sh | ||
rockbox.c | ||
SOURCES | ||
SOURCES.games | ||
SOURCES.rockbox |
Introduction ============ This is the readme for the Rockbox port of Simon Tatham's Portable Puzzle Collection. The port was originally done by Franklin Wei in 2017, and has been regularly maintained since then to remain in sync with Simon's upstream sources. Source structure ================ The upstream source files reside in src/. As of 2024, these sources are bit-for-bit identical to Simon's upstream sources. The Rockbox-specific code in the parent puzzles/ directory provides a set of shims (rbcompat.h, rbwrappers.c), which emulate missing parts of the standard library to enable the upstream puzzles code to work happily on Rockbox. The implementation of the Rockbox frontend resides in rockbox.c. NOTE: the build makefile (puzzles.make) automatically includes `rbcompat.h` when compiling! Check there if things break. Help feature ============ The Help feature is implemented by compiling each puzzle against a compressed version of each puzzle's section from the upstream documentation. These files are stored under help/, and are generated by genhelp.sh from the puzzles.but file in the source distribution. The compression is LZ4, implemented in lz4tiny.c (for decompression on target), and compress.c (for generation). genhelp.sh should be run whenever the documentation is changed. Upstreams ========= As of 2024, Simon's tree is located at: https://git.tartarus.org/?p=simon/puzzles.git For a long time (2017-2024), our version of the puzzles tree contained several patches to make certain games playable on Rockbox (notably cursor interfaces to Untangle and Palisade). These divergent changes complicated maintenance of the port, as merge conflicts often arose when upstream changes to these games conflicted with ours. To remedy this, I sent most of these patches back upstream in summer 2024, and since then, Simon has merged them into his repo. We are now able to run with a fully unmodified puzzles source tree. Maintenance =========== Simon's upstream tree sees continued development. The port is structured so that integrating new upstream versions is straightforward: all the upstream sources live in the src/ subdirectory; all of the Rockbox frontend lives in the root apps/plugins/puzzles/ directory. The `resync.sh' shell script automates the resyncing process. It copies the upstream sources (point it to a local copy of the rockbox-devel branch above) into src/ and performs auto-generation of the help content. Note that a modified version of "halibut" (Simon's homegrown documentation processor) must be compiled from this source: https://github.com/built1n/halibut The LZ4 library and GCC are necessary as well. Wishlist ======== - Nothing! Kudos to Simon (duh), and Frank, for telling me about it. Franklin Wei (__builtin) Changelog ========= April 2017: Changes made to move upstream sources to a separate subdirectory, where they are completely unmodified from the original. Updating the upstream version is now as simple as copying a fresh set of sources to src/. Several hacks were used to accomplish this: a global include specified on the command line, and a directory of dummy header files. August 2017: Every game that can be played with only the cursor keys is now functional. October 2017: Added zoom feature. March 2018: Added help styling. Changed from simple_viewer to display_text for displaying help text. compress.c now does additional processing on the help text, and also requires a slightly modified halibut. April 2018: Finished up the rest of the games. All work now! Surely there's still bugs to fix, so stay tuned... December 2018: Resync to 3ece3d6. Happy holidays! May 2019: Resync to e2135d5. June 2020: Resync to 9aa7b7c. Fixed really embarrassing bug in loading saved games. July 2024: Resync to 1c62dac (branched from Simon's fd304c5). Implement user preferences menu. Introduced "Mosaic". August 2024: Resync to ee5e327 (branched from Simon's 1c1899e). Changes default Map stipple size to "Small". August 2024: Resync to Simon's 262f709 (unmodified). Uses new scanline polygon filling algorithm. Updates drawing API. September 2025: Resync to Simon's e00cb46 (unmodified). Introduces "Group".