8.5.0

wmball
======

A Masterball Widget

Web: https://www.sillycycle.com/puzzles.html

Download: Primary site: https://www.sillycycle.com/puzzles
          Secondary site: http://ibiblio.org/pub/Linux/games/strategy

Maintainer: David A. Bagley <bagleyd AT verizon.net>

  To build you need at minimum both of these, X11 and Xt (unless you are
  looking to build win32).
    sudo apt-get install libx11-dev
    sudo apt-get install libxt-dev
  You may need to install one of these to build Motif version:
    sudo apt-get install libmotif-dev (strongly recommended)
    sudo apt-get install lesstif2-dev (defunct)
  You need to install XPM if you want color icons:
    sudo apt-get install libxpm-dev (strongly recommended)
  To install XMU if you want editres:
    sudo apt-get install libxmu-dev (probably not useful)
  To install sound libraries (defunct):
    sudo apt-get install librplay3-dev
    sudo apt-get install libesd0-dev
    sudo apt-get install libaudiofile-dev
    sudo apt-get install nas-dev
    sudo apt-get install pulse-dev
      In place of these it is just configured by default with
      --enable-def-play=play.sh
  Then should be a simple
    configure; make

  The control feature allows you to move the whole masterball at
  once without being entered as a move.  Hold down the control key
  while using the left mouse button or the keypad.

  One has to orient the wedges in orient mode, besides getting all the
  wedges to be the same color. To do this one has to get the wedges
  with the numbers on one side and in order (clockwise).  This will add
  complexity, so there are 2 sets of records.

  Try resizing the puzzle. Notice the puzzle resizes to take advantage of
  the "room" available.

  Try editing the file Mball.ad to get a certain feature and then copying
  to $(HOME)/Mball (where Mball is the file name) and running xmball
  again.  There is also a Windows port (wmball).

  The title is in the following format (non-motif version):
    xmball.{2|4|6|8|10|12}: <int> @ (<Number of moves>/\
      {<Record number of moves>|NEVER|PRACTICE}) - <Comment>
      {2|4|6|8|10|12}: current number of wedges.
      <int>: number of sectors per wedge.
      {<Record...}: puzzle is either in practice mode or record mode
        In record mode, if there is no record of the current puzzle, it
        displays "NEVER".

  If you were looking for a auto-solver, sorry. One of the problems in
  auto-solvers the generally don't work for different number of cuts.
  If you know of one let me know.

  I know the look is not exactly right.  For simplicity, I did not take
  into account spherical placement of the latitude cuts.

  Refer to the man page for detailed command line options.

  If you want further information on puzzles, I'll be glad :-) to send
  it to you.

FOUND A BUG?

  Send bugs reports and fixes to the author. For bugs, please include
  as much information as to their location as possible, since I may not
  be able to duplicate the them.

other stuff to do
  Auto-solve only works for wedges <= 8 _or_ 1 band, so solves for
    Saturn Puzzle, Hockey Puck Puzzle, and Masterball.  It would be nice
    to solve for all wedges and bands.
  Should use more realistic 3D drawing techniques.

Updates:
  [Jul 07, 2022]  V8.5.0:
    Athena version, because I got complaints about Motif being old.
  [Jan 20, 2021]  V8.4.0:
    Updated scores to recover some corruption, say from from an empty
      file.
  [Dec 07, 2020]  V8.3.1:
    Handle corrupted buffer better.
  [Nov 19, 2020]  V8.3.0:
    'r' is now for redo and 'g' for get record (formerly read record).
  [Apr 11, 2020]  V8.2.7:
    Fixing a few buffer overflows from latest gcc.
  [Apr 04, 2020]  V8.2.6:
    Lots of spelling errors fixed due to codespell
      https://manpages.debian.org/testing/codespell/codespell.1.en.html
    Updated references to website to https.  https://www.sillycycle.com
  [Feb 15, 2019]  V8.2.1:
    Fixed spinner to not wrap and be unlimited where appropriate.
  [Oct 02, 2018]  V8.2.0:
    Removing strcpy and strcat calls by migrating to strncpy and strncat.
      Added HAVE_SNPRINTF compile-time option.
  [Jul 21, 2018]  V8.1.8:
    Fixing sound installation.
  [Apr 03, 2018]  V8.1.7:
    Updated to use spinner (using latest Motif  ;) ).
  [Oct 15, 2017]  V8.1.4:
    Removed gcc 7 warnings.
  [Oct 01, 2017]  V8.1.3:
    Updates for 64 bit compilation in Windows.
  [Aug 01, 2017]  V8.1.1:
    Valgrind helped find some definite memory leaks.
  [Jul 17, 2017]  V8.1.0:
    Updated sound configuration for X version.  Uses a simple included
      script play.sh, that is now used by default.
  [Sep 13, 2016]  V8.0.5:
    Old website http://www.tux.org/~bagleyd died, shifted code base to
      new website http://www.sillycycle.com
  [Feb 24, 2015]  V8.0.0:
    Sound and install fixes.
  [May 13, 2014]  V7.7.4: 
    Synchronized save and restore with Java version.
  [Jan 20, 2014]  V7.7.3:
    Reorganized pixmap directory.
  [Jan 10, 2013]  V7.7.1:
    Cleaned up some duplication in Motif menu.
    Added scroll to feature help dialog.
    New bold fontlist in resource file, so things are easier to read.
  [Oct 22, 2010]  V7.6.4:
    Changed key mappings g->r for read file, r->e for redo.
  [Jun 29, 2010]  V7.6.3:
    Added a work around for strange Windows arc behaviour if arcs end at
      0, 90, 180, or 270 degrees.  Work around was to shift by one degree.
      Not pretty but definitely prettier.
      https://forums.codegear.com/message.jspa?messageID=118084
    Added -perspective to make front most wedges bigger.  Not sure I like
      it general, so made it an option, off by default.  This does not
      change any functionality.
    Added extra keys F12 for CW and F11 for CCW.
    Added auto-solve capability for mball with 2, 4, or 6 wedges.
  [Mar 26, 2010]  V7.6.2:
    Auto-solve for oriented mball with only 1 band.  12 wedges simulates a
      Hockey Puck puzzle (solution for 12 wedges taken from
      http:/www.jaapsch.net/puzzles/puck.html ).  Wrote a quick program
      to help find moves for a 10 wedge version (included with Java
      distribution as puck.c).
  [Mar 17, 2010]  V7.6.1:
    Added auto-solve capability for mball with 8 wedges.  This includes
      if the wedges are oriented.  If bands are reduced to 1, it can
      simulate the Saturn Puzzle.
    Changed orientation and terminology from ring to band to be consistent
      with wsd page.
    Defaults to flip if there if it is ambiguous to turn or flip on a
      "point and click" move, this makes it easier to simulate a Saturn
      puzzle.  Use shift key to do a turn here instead.
  [Jan 21, 2010]  V7.6:
    Version handling changed to a single version.h (and man page).
    Sound fixed for esound.
  [Nov 10, 2009]  V7.5.1:
    Windows version: added accelerator for references.
  [Jun 05, 2009]  V7.5:
    Cleaned up menu look.
    Fixed again for NAS sound.
  [Dec 14, 2008]  V7.4.3:
    Fixed for NAS sound.
  [Jul 21, 2008]  V7.4.1:
    Strange character at end of help title removed.
  [Jul 11, 2008]  V7.4:
    Leading function names in lowercase.
  [Feb 29, 2008]  V7.3.4:
    Changed pointer from crosshair to hand2.
  [Dec 24, 2007]  V7.3.3:
    Constants changed.
  [Nov 06, 2007]  V7.3.2:
    Updated action codes and synchronized Java and C code.
    Various small changes.
  [Apr 10, 2007]  V7.3.1:
    Sound added.
  [Feb 23, 2007]  V7.3:
    Html no longer corrupted.
    reverseVideo update.
  [Dec 12, 2006]  V7.2.6:
    Changed default so that practice is true.
    Now use http://netpbm.sourceforge.net to generate images from xpm.
  [Oct 11, 2006]  V7.2.4:
    Fixed menu to assure the ok part of queries is handled correctly.
      (Bug fixed from redo change).
  [Jul 21, 2006]  V7.2.2:
    Fixed assorted memory leaks and uninitialized memory access reads.
    r is now for redo.  z is now the character for randomize.
  [Apr 01, 2006]  V7.2:
    Made usage string compatible with versions of Motif and screen.
    More defensive code in case getlogin fails.
  [Oct 05, 2005]  V7.1.5:
    scoreFile and userName fixes
    -version added
    -score added
    Common option help for X and X-Motif
  [May 31, 2005]  V7.1.4:
    Separated out compatible components.
  [Feb 8, 2005]  V7.1.3:
    Mouse wheel for Windows now works.
  [Oct 29, 2004]  V7.1.2:
    Small changes synchronizing with Java code.
    Man page cleanups.
  [Aug 23, 2004]  V7.1:
    Thanks to Debian maintainer Florian Ernst <florian AT uni-hd.de> for
      fixing a compilation problem with X and without Motif.
    Added font option.
  [Dec 15, 2003]  V7.0.1:
    The Hide functionality of the Escape key now iconifies or drops in
      task bar.
    Now avoids using FloodFill in Windows.
    Added help in Windows.
    Accelerator Keys (F keys and regular keys) in Windows now work.
  [Nov 15, 2003]  V7.0:
    Integrated winpuz6.5 (Windows 3.1/95) into X source tree.
  [Oct 26, 2003]  V5.7.4:
    Mouse wheel scrolling added.
  [Aug 28, 2003]  V5.7.2:
    png for Gnome and KDE menus and xpm for CDE menus.
    install-games configure option and added other installation options.
    Added xpm for icon.
    Help kicked over.
  [Jul 07, 2003]  V5.7:
    Thanks to my daughter for banging on the keys:
      Resetting key sliders and toggles should reset display message.
      Fix for select and release done at the same time as
        clear, undo, randomize, or solve.
    Test for cheating from get.
    Popup for auto-solve.
    "Wedges:" string drawn next to radio buttons
    Clear now checks if you really want to randomize the puzzle using
      left mouse button, 'r' will not query
    'Esc' will hide the puzzle (actually osfCancel did the trick)
    Help & About expanded and pop-ups added
    Took out bitmaps since it takes too much room
  [Mar 21, 2003]  V5.6.2:
    Installation fixes for Motif and X versions.
  [Nov 06, 2002]  V5.6.1:
    VMS Motif fix and minor changes
  [Sep 06, 2002]  V5.6:
    configure if around 2nd AC_CHECK_FUNC
    removed Sun CC (char *) warnings
    removed hard coding of program name
    Cygwin changes ./, -lSM -lICE
    record store fix
    x and xm files combined using HAVE_MOTIF
    port back from Java (on the Java side I got some help from
        Sarat Chandran <saratcmahadevan AT yahoo.com>)
      use -1 for NEVER instead of 32767
      handle nobody = (null)
      .data->.dat for consistency
      background/foreground set by default
      frame color change on enter/leave
      allow more arrow keys (osf)
      menu
      split line should be a bit longer
      counter clockwise fix for undo
  [Sep 24, 2001]  V5.5.4.1: Fixed a goof for direction translation.
  [Sep 01, 2001]  V5.5.4: g++ 3.0 warnings removed.  Fixed a few bugs when
    10 or 12 wedges are used.
  [Mar 27, 2001]  V5.5.3: Infinite loop fix for ARM thanks to Matej Vela
    <mvela AT public.srce.hr>.
  [Aug 11, 1999]  V5.5.2: Fixed runtime library problems when using configure.
  [Jun 20, 1999]  V5.5: Added -rv, fixed flashing on mono, fixed a mixup
     where '0' got 12 wedges instead of 10.  '=' will get 12 wedges...
     it follows the logically if you look at the keyboard...
  [Jan 01, 1997]  V5.4: Username, concurrency check, configure, bug fixes in
    get, write, and undo, man page updates.
  [Apr 08, 1996]  V5.3: Minor changes.
  [Jan 31, 1996]  V5.2: Puzzle can be moved by a more intuitive drag and
    drop approach.  Sectors will invert, when selected.
    Now using dynamic allocation, so there is no maximum
    number of rings.  The maximum number of wedges though
    is still fixed at 8.
  [Dec 15, 1995]  V5.1: Minor updates, RNG for 32/64 bit. Better sector
    drawing algorithm.  I did not figure out the border
    lines on the sectors, next time...
  [Oct 02, 1995]  V5.0: Xt/Motif, your choice.
  [May 16, 1995]  V4.10: Warnings removed from Sun's cc and lint and now
    include a random number generator.
  [Mar 13, 1995]  V1.4: Removed lint warnings and added a VMS make.com .
  [Nov 11, 1994]  V1.3: Conservative guess for random number generator.
  [Nov 07, 1994]  V1.2: Now allows undos, saves, and recalls.
  [Sep 19, 1994]  V1.1: Minor changes.
  [Sep 15, 1994]  V1.0: Xt version.
