1
0
Fork 0
forked from len0rd/rockbox
foxbox/apps/plugins/puzzles
Solomon Peachy 1328464c86 puzzles: Update resync script to work around WIN32 issues
Change-Id: I30a6c674724f683d0a0953f042749001f625f7b2
2024-12-09 21:24:10 -05:00
..
dummy puzzles: add Slide and Sokoban. 2024-08-25 19:30:01 -04:00
help puzzles: add Slide and Sokoban. 2024-08-25 19:30:01 -04:00
src puzzles: add Slide and Sokoban. 2024-08-25 19:30:01 -04:00
compress.c puzzles: add Slide and Sokoban. 2024-08-25 19:30:01 -04:00
fonts.zip puzzles: dynamic text size via custom font pack 2017-07-17 16:58:13 -04:00
genhelp.sh puzzles: resync to ee5e327 (Simon's 1c1899e) and update documentation. 2024-08-08 23:49:33 -04:00
help.h puzzles: add Slide and Sokoban. 2024-08-25 19:30:01 -04:00
lz4tiny.c puzzles: update help text, make generation and testing cleaner 2018-04-24 19:06:30 -04:00
lz4tiny.h puzzles: compress extensive help text 2017-08-16 11:40:37 -04:00
puzzles.make Make simulator compile on MacOS 2024-11-30 22:19:02 -05:00
rbassert.h puzzles: clean up error messages 2020-06-25 16:46:03 -04:00
rbcompat.h puzzles: resync with upstream 2024-07-22 21:44:08 -04:00
rbmalloc.c puzzles: resync with upstream; add Loopy and Palisade, mouse mode 2017-11-21 19:29:45 -05:00
rbwrappers.c puzzles: misc. changes and sync with upstream 2017-08-23 14:22:09 -04:00
README.rockbox puzzles: resync with upstream 262f709. 2024-08-16 16:31:28 -04:00
resync.sh puzzles: Update resync script to work around WIN32 issues 2024-12-09 21:24:10 -05:00
rockbox.c puzzles: add Slide and Sokoban. 2024-08-25 19:30:01 -04:00
SOURCES puzzles: Disable "unfinished" puzzles for Windows builds 2024-12-09 19:28:21 -05:00
SOURCES.games puzzles: Disable "unfinished" puzzles for Windows builds 2024-12-09 19:28:21 -05:00
SOURCES.rockbox puzzles: Disable "unfinished" puzzles for Windows builds 2024-12-09 19:28:21 -05:00

Introduction
============

This is the readme for the Rockbox port of Simon Tatham's Portable
Puzzle Collection.

Source structure
================

Most of the upstream files in src/ are essentially untouched, apart
from some minor adjustments to make them compile and run happily on
Rockbox. The majority of the rockbox-specific code is found in
rockbox.c, with some minor stuff in rbwrappers.c and rbmalloc.c.

NOTE: the build makefile (puzzles.make) automatically includes
`rbcompat.h` when compiling! Check there when 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 (i.e. 2017-2024), our version of the puzzles tree
contained several modifications by myself (notably cursor interfaces
to Untangle and Palisade). These divergent changes complicated
maintenance of this port, as merge conflicts often arose when upstream
changes to these games conflicted with our changes. 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.