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
118 lines
4.1 KiB
Text
118 lines
4.1 KiB
Text
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".
|