[comp.sources.games.bugs] Official patch #3 to reve v1.1 - part 7 of 9.

richb@sunaus.oz (Rich Burridge) (12/10/90)

------CUT HERE------ patch3 - part7 ------CUT HERE------

------- rev_eval.c -------
*** /tmp/da07623	Sun Dec  9 15:17:12 1990
--- rev_eval.c	Wed Dec  5 10:37:09 1990
***************
*** 47,65 ****
  int niv ;
  {
    register int *d, *p ;
!   register int i, x, y ;
    register long note ;
    register int vp, vo ;
    register long tnote, cx ;
  
    d = damier[niv] ;
  
    if (mnb > 60 - profmax)
      {
        note = 0 ;
        for (p = &d[0]; p < &d[64]; p++)
!              if (*p == macouleur) note++ ;
!         else if (*p == tacouleur) note-- ;
        return(note) ;
      }
    else
--- 47,67 ----
  int niv ;
  {
    register int *d, *p ;
!   register int i, x, y, tc, mc ;
    register long note ;
    register int vp, vo ;
    register long tnote, cx ;
  
    d = damier[niv] ;
+   tc = tacouleur ;
+   mc = macouleur ;
  
    if (mnb > 60 - profmax)
      {
        note = 0 ;
        for (p = &d[0]; p < &d[64]; p++)
! 	     if (*p == mc) note++ ;
! 	else if (*p == tc) note-- ;
        return(note) ;
      }
    else
***************
*** 66,73 ****
      {
        x = y = 0 ;
        for (p = &d[0]; p < &d[64]; p++)
!              if (*p == macouleur) x++ ;
!         else if (*p == tacouleur) y++ ;
        if (x == 0) return(-100000000) ;
        if (y == 0) return( 100000000) ;
  
--- 68,75 ----
      {
        x = y = 0 ;
        for (p = &d[0]; p < &d[64]; p++)
! 	     if (*p == mc) x++ ;
! 	else if (*p == tc) y++ ;
        if (x == 0) return(-100000000) ;
        if (y == 0) return( 100000000) ;
  
***************
*** 78,163 ****
        for (p = &d[0]; p < &d[8]; p++)
          {
            i += i + i ;
!                if (*p == FREE)      i++ ;
!           else if (*p == macouleur) i += 2 ;
          }
        note = edges[i] ;
  
-       if (((i == 2191) && (d[13] == macouleur)) ||
-           ((i == 2917) && (d[10] == macouleur)) ||
-           ((i == 3643) && (d[10] == tacouleur)) ||
-           ((i == 4369) && (d[13] == tacouleur)))
-         note -= edges[i] ;
- 
        i = 0 ;
        for (p = &d[56]; p < &d[64]; p++)
          {
            i += i + i ;
!                if (*p == FREE)      i++ ;
!           else if (*p == macouleur) i += 2 ;
          }
        note += edges[i] ;
  
-       if (((i == 2191) && (d[53] == macouleur)) ||
-           ((i == 2917) && (d[50] == macouleur)) ||
-           ((i == 3643) && (d[50] == tacouleur)) ||
-           ((i == 4369) && (d[53] == tacouleur)))
-         note -= edges[i] ;
- 
        i = 0 ;
        for (p = &d[0]; p < &d[64]; p += 8)
          {
            i += i + i ;
!                if (*p == FREE)      i++ ;
!           else if (*p == macouleur) i += 2 ;
          }
        note += edges[i] ;
  
-       if (((i == 2191) && (d[41] == macouleur)) ||
-           ((i == 2917) && (d[17] == macouleur)) ||
-           ((i == 3643) && (d[17] == tacouleur)) ||
-           ((i == 4369) && (d[41] == tacouleur)))
-         note -= edges[i] ;
- 
        i = 0 ;
        for (p = &d[7]; p < &d[64]; p += 8)
          {
            i += i + i ;
!                if (*p == FREE)      i++ ;
!           else if (*p == macouleur) i += 2 ;
          }
        note += edges[i] ;
  
-       if (((i == 2191) && (d[46] == macouleur)) ||
-           ((i == 2917) && (d[22] == macouleur)) ||
-           ((i == 3643) && (d[22] == tacouleur)) ||
-           ((i == 4369) && (d[46] == tacouleur)))
-         note -= edges[i] ;
- 
        cx = 8 * (50 - mnb - profmax) ;
  
        if (d[0] == FREE)
          {
!                if (d[9] == macouleur) note -= cx ;
!           else if (d[9] == tacouleur) note += cx ;
          }
  
        if (d[7] == FREE)
          {
!                if (d[14] == macouleur) note -= cx ;
!           else if (d[14] == tacouleur) note += cx ;
          }
  
        if (d[56] == FREE)
          {
!                if (d[49] == macouleur) note -= cx ;
!           else if (d[49] == tacouleur) note += cx ;
          }
  
        if (d[63] == FREE)
          {
!                if (d[54] == macouleur) note -= cx ;
!           else if (d[54] == tacouleur) note += cx ;
          }
  
        tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
--- 80,141 ----
        for (p = &d[0]; p < &d[8]; p++)
          {
            i += i + i ;
! 	       if (*p == FREE) i++ ;
! 	  else if (*p == mc)   i += 2 ;
          }
        note = edges[i] ;
  
        i = 0 ;
        for (p = &d[56]; p < &d[64]; p++)
          {
            i += i + i ;
! 	       if (*p == FREE) i++ ;
! 	  else if (*p == mc)   i += 2 ;
          }
        note += edges[i] ;
  
        i = 0 ;
        for (p = &d[0]; p < &d[64]; p += 8)
          {
            i += i + i ;
! 	       if (*p == FREE) i++ ;
! 	  else if (*p == mc)   i += 2 ;
          }
        note += edges[i] ;
  
        i = 0 ;
        for (p = &d[7]; p < &d[64]; p += 8)
          {
            i += i + i ;
! 	       if (*p == FREE) i++ ;
! 	  else if (*p == mc)   i += 2 ;
          }
        note += edges[i] ;
  
        cx = 8 * (50 - mnb - profmax) ;
  
        if (d[0] == FREE)
          {
! 	       if (d[9] == mc) note -= cx ;
! 	  else if (d[9] == tc) note += cx ;
          }
  
        if (d[7] == FREE)
          {
! 	       if (d[14] == mc) note -= cx ;
! 	  else if (d[14] == tc) note += cx ;
          }
  
        if (d[56] == FREE)
          {
! 	       if (d[49] == mc) note -= cx ;
! 	  else if (d[49] == tc) note += cx ;
          }
  
        if (d[63] == FREE)
          {
! 	       if (d[54] == mc) note -= cx ;
! 	  else if (d[54] == tc) note += cx ;
          }
  
        tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
***************
*** 167,173 ****
          for (y = 0; y < 8; y++)
            {
              i = (x << 3) + y ;
!             if (d[i] == tacouleur)
                {
                       if ((x > 0) && (d[i - 8] == FREE))            vp++ ;
                  else if ((x < 7) && (d[i + 8] == FREE))            vp++ ;
--- 145,151 ----
          for (y = 0; y < 8; y++)
            {
              i = (x << 3) + y ;
! 	    if (d[i] == tc)
                {
                       if ((x > 0) && (d[i - 8] == FREE))            vp++ ;
                  else if ((x < 7) && (d[i + 8] == FREE))            vp++ ;
***************
*** 178,184 ****
                  else if ((x > 0) && (y < 7) && (d[i - 7] == FREE)) vp++ ;
                  else if ((x < 7) && (y < 7) && (d[i + 9] == FREE)) vp++ ;
                }
!             if (d[i] == macouleur)
                {
                       if ((x > 0) && (d[i - 8] == FREE))             vo++ ;
                  else if ((x < 7) && (d[i + 8] == FREE))             vo++ ;
--- 156,162 ----
                  else if ((x > 0) && (y < 7) && (d[i - 7] == FREE)) vp++ ;
                  else if ((x < 7) && (y < 7) && (d[i + 9] == FREE)) vp++ ;
                }
! 	    if (d[i] == mc)
                {
                       if ((x > 0) && (d[i - 8] == FREE))             vo++ ;
                  else if ((x < 7) && (d[i + 8] == FREE))             vo++ ;
***************
*** 200,222 ****
              i = (x << 3) + y ;
              if (d[i] == FREE)
                {
!                      if ((x > 0) && (d[i - 8] == tacouleur))            vp++ ;
!                 else if ((x < 7) && (d[i + 8] == tacouleur))            vp++ ;
!                 else if ((y > 0) && (d[i - 1] == tacouleur))            vp++ ;
!                 else if ((y < 7) && (d[i + 1] == tacouleur))            vp++ ;
!                 else if ((x > 0) && (y > 0) && (d[i - 9] == tacouleur)) vp++ ;
!                 else if ((x < 7) && (y > 0) && (d[i + 7] == tacouleur)) vp++ ;
!                 else if ((x > 0) && (y < 7) && (d[i - 7] == tacouleur)) vp++ ;
!                 else if ((x < 7) && (y < 7) && (d[i + 9] == tacouleur)) vp++ ;
  
!                      if ((x > 0) && (d[i - 8] == macouleur))            vo++ ;
!                 else if ((x < 7) && (d[i + 8] == macouleur))            vo++ ;
!                 else if ((y > 0) && (d[i - 1] == macouleur))            vo++ ;
!                 else if ((y < 7) && (d[i + 1] == macouleur))            vo++ ;
!                 else if ((x > 0) && (y > 0) && (d[i - 9] == macouleur)) vo++ ;
!                 else if ((x < 7) && (y > 0) && (d[i + 7] == macouleur)) vo++ ;
!                 else if ((x > 0) && (y < 7) && (d[i - 7] == macouleur)) vo++ ;
!                 else if ((x < 7) && (y < 7) && (d[i + 9] == macouleur)) vo++ ;
                }
            }
  
--- 178,200 ----
              i = (x << 3) + y ;
              if (d[i] == FREE)
                {
! 		     if ((x > 0) && (d[i - 8] == tc))            vp++ ;
! 		else if ((x < 7) && (d[i + 8] == tc))            vp++ ;
! 		else if ((y > 0) && (d[i - 1] == tc))            vp++ ;
! 		else if ((y < 7) && (d[i + 1] == tc))            vp++ ;
! 		else if ((x > 0) && (y > 0) && (d[i - 9] == tc)) vp++ ;
! 		else if ((x < 7) && (y > 0) && (d[i + 7] == tc)) vp++ ;
! 		else if ((x > 0) && (y < 7) && (d[i - 7] == tc)) vp++ ;
! 		else if ((x < 7) && (y < 7) && (d[i + 9] == tc)) vp++ ;
  
! 		     if ((x > 0) && (d[i - 8] == mc))            vo++ ;
! 		else if ((x < 7) && (d[i + 8] == mc))            vo++ ;
! 		else if ((y > 0) && (d[i - 1] == mc))            vo++ ;
! 		else if ((y < 7) && (d[i + 1] == mc))            vo++ ;
! 		else if ((x > 0) && (y > 0) && (d[i - 9] == mc)) vo++ ;
! 		else if ((x < 7) && (y > 0) && (d[i + 7] == mc)) vo++ ;
! 		else if ((x > 0) && (y < 7) && (d[i - 7] == mc)) vo++ ;
! 		else if ((x < 7) && (y < 7) && (d[i + 9] == mc)) vo++ ;
                }
            }
  
***************
*** 229,251 ****
              i = (x << 3) + y ;
              if (d[i] == FREE)
                {
!                 if ((x > 0) && (d[i - 8] == tacouleur))            vp++ ;
!                 if ((x < 7) && (d[i + 8] == tacouleur))            vp++ ;
!                 if ((y > 0) && (d[i - 1] == tacouleur))            vp++ ;
!                 if ((y < 7) && (d[i + 1] == tacouleur))            vp++ ;
!                 if ((x > 0) && (y > 0) && (d[i - 9] == tacouleur)) vp++ ;
!                 if ((x < 7) && (y > 0) && (d[i + 7] == tacouleur)) vp++ ;
!                 if ((x > 0) && (y < 7) && (d[i - 7] == tacouleur)) vp++ ;
!                 if ((x < 7) && (y < 7) && (d[i + 9] == tacouleur)) vp++ ;
  
!                 if ((x > 0) && (d[i - 8] == macouleur))            vo++ ;
!                 if ((x < 7) && (d[i + 8] == macouleur))            vo++ ;
!                 if ((y > 0) && (d[i - 1] == macouleur))            vo++ ;
!                 if ((y < 7) && (d[i + 1] == macouleur))            vo++ ;
!                 if ((x > 0) && (y > 0) && (d[i - 9] == macouleur)) vo++ ;
!                 if ((x < 7) && (y > 0) && (d[i + 7] == macouleur)) vo++ ;
!                 if ((x > 0) && (y < 7) && (d[i - 7] == macouleur)) vo++ ;
!                 if ((x < 7) && (y < 7) && (d[i + 9] == macouleur)) vo++ ;
                }
            }
  
--- 207,229 ----
              i = (x << 3) + y ;
              if (d[i] == FREE)
                {
! 		if ((x > 0) && (d[i - 8] == tc))            vp++ ;
! 		if ((x < 7) && (d[i + 8] == tc))            vp++ ;
! 		if ((y > 0) && (d[i - 1] == tc))            vp++ ;
! 		if ((y < 7) && (d[i + 1] == tc))            vp++ ;
! 		if ((x > 0) && (y > 0) && (d[i - 9] == tc)) vp++ ;
! 		if ((x < 7) && (y > 0) && (d[i + 7] == tc)) vp++ ;
! 		if ((x > 0) && (y < 7) && (d[i - 7] == tc)) vp++ ;
! 		if ((x < 7) && (y < 7) && (d[i + 9] == tc)) vp++ ;
  
! 		if ((x > 0) && (d[i - 8] == mc))            vo++ ;
! 		if ((x < 7) && (d[i + 8] == mc))            vo++ ;
! 		if ((y > 0) && (d[i - 1] == mc))            vo++ ;
! 		if ((y < 7) && (d[i + 1] == mc))            vo++ ;
! 		if ((x > 0) && (y > 0) && (d[i - 9] == mc)) vo++ ;
! 		if ((x < 7) && (y > 0) && (d[i + 7] == mc)) vo++ ;
! 		if ((x > 0) && (y < 7) && (d[i - 7] == mc)) vo++ ;
! 		if ((x < 7) && (y < 7) && (d[i + 9] == mc)) vo++ ;
                }
            }
  
***************
*** 254,256 ****
--- 232,235 ----
        return(tnote / 1000) ;
      }
  }
+ 

------- rev_ip.c -------
*** /tmp/da07626	Sun Dec  9 15:17:13 1990
--- rev_ip.c	Sat Dec  8 18:12:25 1990
***************
*** 23,34 ****
  #include <signal.h>
  #include <setjmp.h>
  #include <sys/types.h>
- #ifdef SYSV
- #include <sys/times.h>
- #else
- #include <sys/time.h>
- #endif /*SYSV*/
- 
  #include "reve.h"
  
  extern int saveres ;
--- 23,28 ----
***************
*** 35,41 ****
  extern time_t timeleft, time() ;
  extern int damier[NIVEAUMAX][64] ;
  extern int tacouleur, macouleur ;
! extern int mnb, profmax ;
  extern long c1, c2, c3 ;
  
  /*  Reve structure. Play_Reve evaluates a board and returns a move and a note
--- 29,35 ----
  extern time_t timeleft, time() ;
  extern int damier[NIVEAUMAX][64] ;
  extern int tacouleur, macouleur ;
! extern int mnb, profmax, max_depth ;
  extern long c1, c2, c3 ;
  
  /*  Reve structure. Play_Reve evaluates a board and returns a move and a note
***************
*** 167,173 ****
      if (d0[cpk[cp]] == JPJ) k++ ;
  
    count = note = cpmax = 0 ;
!   timeused = profmax = 1 ;
  
    if (((k == 1) && (mnb < 52)) || (mnb == 1))
      {
--- 161,168 ----
      if (d0[cpk[cp]] == JPJ) k++ ;
  
    count = note = cpmax = 0 ;
!   timeused = 1 ;
!   profmax = max_depth - 1 ;
  
    if (((k == 1) && (mnb < 52)) || (mnb == 1))
      {
***************
*** 221,227 ****
      }
    else
      {
!       allotime = timeleft * 3 / (61 - mnb) ;
        firsttime = time((time_t *) NULL) ;
  
        cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
--- 216,222 ----
      }
    else
      {
!       allotime = timeleft * 4 / (61 - mnb) ;
        firsttime = time((time_t *) NULL) ;
  
        cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
***************
*** 378,384 ****
--- 373,383 ----
      {
        if (d0[cpk[cp]] == TPJ)
          {
+ #ifdef hp9000s300                
+           for (k = 0; k < 64; k++) damier[niv + 1][k] = damier[niv][k] ;
+ #else                            
            for (k = 0; k < 64; k++) d1[k] = d0[k] ;
+ #endif                           
            tujouesen(cpi[cp], cpj[cp], niv + 1) ;
                 if (niv == profmax) lnote = evalue(niv + 1) ;
            else if (jepeuxjouer(niv + 1) == TRUE)
***************
*** 427,433 ****
--- 426,436 ----
      {
        if (d0[cpk[cp]] == JPJ)
          {
+ #ifdef hp9000s300                
+           for (k = 0; k < 64; k++) damier[niv + 1][k] = damier[niv][k] ;
+ #else
            for (k = 0; k < 64; k++) d1[k] = d0[k] ;
+ #endif
            jejoueen(cpi[cp], cpj[cp], niv + 1) ;
            if (niv == profmax) lnote = evalue(niv + 1) ;
            else if (tupeuxjouer(niv + 1) == TRUE)

------- reve.man -------
*** /tmp/da07629	Sun Dec  9 15:17:14 1990
--- reve.man	Sun Dec  9 14:35:12 1990
***************
*** 1,5 ****
  .\" %Z%%M% %I% %E%
! .TH REVE 6 "18 October 1990"
  .SH NAME
  reve \- an othello game.
  .SH SYNOPSIS
--- 1,5 ----
  .\" %Z%%M% %I% %E%
! .TH REVE 6 "29 November 1990"
  .SH NAME
  reve \- an othello game.
  .SH SYNOPSIS
***************
*** 7,12 ****
--- 7,14 ----
  [
  .B \-animate
  ] [
+ .B \-bestmove
+ ] [
  .B \-black
  .I [ display ]
  ] [
***************
*** 28,33 ****
--- 30,37 ----
  .B \-load
  .I gamefile
  ] [
+ .B \-log
+ ] [
  .B \-m
  ] [
  .B \-notes
***************
*** 36,43 ****
  ] [
  .B \-quick
  ] [
- .B \-r
- ] [
  .B \-v
  ] [
  .B \-white
--- 40,45 ----
***************
*** 82,93 ****
  down as you move around the board, the square you are currently over will
  be highlighted.
  .LP
! There are various buttons and cyclic selections available. Their meanings
! are given below, plus an indication of their keyboard equivalents. With the
! cyclic selections, clicking over the left half of the cycle item increments
! the selection, and clicking over the right half of the cycle item decrements
! the selection. With the SunView and XView versions, it is also possible to
! make a selection from a popup menu using the right mouse button.
  .LP
  By default, a human will play black, and the computer will play white. If
  you want a human vs human startup or some other combination, then you should
--- 84,94 ----
  down as you move around the board, the square you are currently over will
  be highlighted.
  .LP
! There are various buttons, choice, toggles and cyclic selections available.
! Their meanings are given below, plus an indication of their keyboard
! equivalents. With the cyclic selections, clicking over the left half of the
! cycle item increments the selection, and clicking over the right half of the
! cycle item decrements the selection.
  .LP
  By default, a human will play black, and the computer will play white. If
  you want a human vs human startup or some other combination, then you should
***************
*** 95,102 ****
  .SH REVE BUTTONS
  .LP
  With the graphics versions, there are eight buttons that are normally
! displayed at the top of the Reve window. Each of these buttons, except
! the "done" button has a keyboard equivalent which is given in brackets below.
  .LP
  .IP "\fBload [ L ]\fP" 18
  Load a game file. The format of this game file is given below. With the
--- 96,103 ----
  .SH REVE BUTTONS
  .LP
  With the graphics versions, there are eight buttons that are normally
! displayed at the top of the Reve window. Each of these buttons, has a
! keyboard equivalent which is given in brackets below.
  .LP
  .IP "\fBload [ L ]\fP" 18
  Load a game file. The format of this game file is given below. With the
***************
*** 124,158 ****
  Undo the last "move". If the opponent is the computer, the two "moves" are
  undone. A "move" is considered to be all previous consecutive moves by
  the opponent.
! .IP "\fBdone [ No keyboard equivalent]\fP" 18
! Change \fIreve\fP to an icon.
  .IP "\fBquit [ q ]\fP" 18
  Exit the
  .I reve
  program.
! .SH REVE CYCLIC SELECTIONS
! With the graphical versions, just below the eight buttons are four cycle items.
! These can either be selected with the left mouse button, to increment or
! decrement the current selection (depending upon which half on the item
! you click over), or a selection can be made from a popup menu when you
! click with the right mouse button (SunView and XView versions only).
! Each cycle value has a keyboard equivalent which is given in brackets below.
! This must be followed by the value of the new selection you wish to make.
! The dumb tty version has the equivalent of these items displayed to the
  right of the reve board display.
  .LP
! .IP "\fBBlack: [ B ]\fP" 18
! Select whether the black player should be a human or the computer. The
! keyboard equivalents are 'h' for human, and 'c' for computer.
! .IP "\fBWhite: [ W ]\fP" 18
! Select whether the white player should be a human or the computer. The
! keyboard equivalents are the same as for the \fBBlack:\fP item.
  .IP "\fBDifficulty: [ D ]\fP" 18
! Sets the degree of difficulty for the computers moves. Keyboard selection
! values are in the range '1' to '9'. The computer move is determined on a
! time basis. The degree of difficulty determines the total amount of time
! that the computer will take to make all its moves. Here are the time periods
! for each level of difficulty:
  .LP
  	Difficulty	Time
  .LP
--- 125,160 ----
  Undo the last "move". If the opponent is the computer, the two "moves" are
  undone. A "move" is considered to be all previous consecutive moves by
  the opponent.
! .IP "\fBprops [ p ]\fP" 18
! Display a property sheet containing choices and toggles which will
! alter various \fIreve\fP properties.
  .IP "\fBquit [ q ]\fP" 18
  Exit the
  .I reve
  program.
! .SH REVE PROPERTY SHEET SELECTIONS
! With the graphical versions, there is a property sheet window which can be
! displayed. The property sheet has two choice items, one cyclic item, and six
! toggle items. Click with the left mouse button over the option you want from
! the choice items. With the cyclic items, click with the left mouse button over
! the appropriate half, to either increment or decrement the current value.
! Clicking left over the toggle item boxes, will toggle the value of that item
! on or off.
! The choice items also have keyboard equivalents which are given in brackets
! below. They must be followed by the value of the new selection you wish to
! make. The dumb tty version has the equivalent of these items displayed to the
  right of the reve board display.
  .LP
! .IP "\fBComputer plays: [ C ]\fP" 18
! A choice item which selects what color[s] the computer should play. The
! keyboard equivalents are 'b' for black, 'w' for white, 'n' for neither,
! and 'a' for all (both).
  .IP "\fBDifficulty: [ D ]\fP" 18
! A choice item which sets the degree of difficulty for the computers moves.
! Keyboard selection values are in the range '1' to '9'. The computer move is
! determined on a time basis. The degree of difficulty determines the total
! amount of time that the computer will take to make all its moves. Here are the
! time periods for each level of difficulty:
  .LP
  	Difficulty	Time
  .LP
***************
*** 175,184 ****
  	9		60 minutes.
  .LP
  Level eight is tournament level.
! .IP "\fBNotes: [ N ]\fP" 18
! Select whether computer notes are displayed. When you are playing against
! the computer, the note gives the position of the last computer move, and
! an indication of whether it was a good or bad move.
  .SH OPTIONS
  .TP
  .B \-animate
--- 177,198 ----
  	9		60 minutes.
  .LP
  Level eight is tournament level.
! .IP "\fBSet search depth: [ No keyboard equivalent ]\fP" 18
! A cyclic item which sets the maximum search depth for a computer move.
! .IP "\fBAnimate move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for animating the computer move and the dragging of human pieces.
! .IP "\fBShow current best move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for showing the current best move as the computer makes it's
! move.
! .IP "\fBShow last move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for outlining the square containing the last move.
! .IP "\fBShow evaluation information option. [ No keyboard equivalent ]\fP" 18
! A toggle information for displaying evaluation information for each computer
! move.
! .IP "\fBNumber last move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for number the last move stone.
! .IP "\fBDon't show flip option. [ No keyboard equivalent ]\fP" 18
! A toggle item to prevent the flip of the stones as a turn is completed.
  .SH OPTIONS
  .TP
  .B \-animate
***************
*** 186,191 ****
--- 200,209 ----
  corner of the board, and when you hold the left mouse button down, your
  stone is dragged around.
  .TP
+ .B \-bestmove
+ As the computer is making it's move, continually show the position of the
+ best move found so far.
+ .TP
  .BI \-black " [ display ]"
  Black will be played by a human. With the X11 variant of
  .I reve
***************
*** 225,230 ****
--- 243,254 ----
  Load a game file. The format of this game file is given below. The board
  will be setup with these stones.
  .TP
+ .B \-log
+ Save a log of computer move information to the file
+ .I reve.res
+ as the game progresses. This information is probably only useful to
+ people trying to improve the computer algorithm.
+ .TP
  .B \-m
  Always display in monochrome, even on a color screen.
  .TP
***************
*** 237,248 ****
  .B \-quick
  Play a quick game. Don't flash the stones as they are being turned.
  .TP
- .B \-r
- Save a log of computer move information to the file
- .I reve.res
- as the game progresses. This information is probably only useful to
- people trying to improve the computer algorithm.
- .TP
  .B \-?
  Print the version number and usage message for this release of the
  .I reve
--- 261,266 ----
***************
*** 272,277 ****
--- 290,383 ----
  .BI \-WP " x y"
  Start the icon position at
  .I x y
+ .SH RESOURCES
+ On startup, the X11 and XView version of
+ .I reve
+ will use the following X resources:
+ .TP 15
+ .PD 0
+ .B Resource:
+ reve.animate
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether various animation effects are shown.
+ .sp
+ .TP
+ .B Resource:
+ reve.bestmove
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether to continually show the best move so far, as the computer
+ is making it's move.
+ .sp
+ .TP
+ .B Resource:
+ reve.difficulty
+ .TP
+ .B Values:
+ Difficulty value (numeric)
+ .TP
+ .B Description
+ The computer difficulty level.
+ .sp
+ .TP
+ .B Resource:
+ reve.last
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether the position of the last stone placed is shown by a square.
+ .sp
+ .TP
+ .B Resource:
+ reve.log
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether to save a log of computer information to the file
+ .I reve.res/
+ .sp
+ .TP
+ .B Resource:
+ reve.notes
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether todisplay computer notes.
+ .sp
+ .TP
+ .B Resource:
+ reve.number
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether the last stone placed in numbered.
+ .sp
+ .TP
+ .B Resource:
+ reve.quick
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether a quick game should be played. Stones are not flashed as
+ they are placed, if this resource is set true.
+ .sp
  .SH REVE GAMES FILE FORMAT
  .I Reve
  has the ability to load or save games. The format of the games files are:

------- reve.man.text -------
*** /tmp/da07632	Sun Dec  9 15:17:15 1990
--- reve.man.text	Sun Dec  9 14:35:19 1990
***************
*** 9,19 ****
       reve - an othello game.
  
  SYNOPSIS
!      reve [ -animate ] [ -b [ display ] ] [ -c ] [ -d  difficulty
!      ]  [  -e edgefile ] [ -g geometry ] [ -i ] [ -last ] [ -load
!      gamefile ] [ -m ] [ -notes ] [ -number ] [ -quick ] [ -r ] [
!      -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y ] [ -WP x y
!      ]
  
  DESCRIPTION
       Reve is a version of the popular Othello game.  It  contains
--- 9,19 ----
       reve - an othello game.
  
  SYNOPSIS
!      reve [ -animate ] [ -bestmove ] [ -black [ display ] ] [  -c
!      ] [ -d difficulty ] [ -e edgefile ] [ -g geometry ] [ -i ] [
!      -last ] [ -load gamefile ] [ -log ] [ -m  ]  [  -notes  ]  [
!      -number  ] [ -quick ] [ -v ] [ -white [ display ] ] [ -? ] [
!      -Wi ] [ -Wp x y ] [ -WP x y ]
  
  DESCRIPTION
       Reve is a version of the popular Othello game.  It  contains
***************
*** 46,66 ****
       the board,  the  square  you  are  currently  over  will  be
       highlighted.
  
!      There are various buttons and cyclic  selections  available.
!      Their  meanings are given below, plus an indication of their
!      keyboard equivalents. With the cyclic  selections,  clicking
!      over  the  left half of the cycle item increments the selec-
!      tion, and clicking over the right half  of  the  cycle  item
!      decrements  the  selection.  With the SunView and XView ver-
!      sions, it is also possible to make a selection from a  popup
!      menu using the right mouse button.
  
       By default, a human will play black, and the  computer  will
       play  white.  If  you  want a human vs human startup or some
  
  
  
! Sun Release 4.1   Last change: 18 October 1990                  1
  
  
  
--- 46,66 ----
       the board,  the  square  you  are  currently  over  will  be
       highlighted.
  
!      There are various buttons, choice, toggles and cyclic selec-
!      tions  available.   Their  meanings are given below, plus an
!      indication of their keyboard equivalents.  With  the  cyclic
!      selections,  clicking  over  the left half of the cycle item
!      increments the selection, and clicking over the  right  half
!      of the cycle item decrements the selection.
  
       By default, a human will play black, and the  computer  will
       play  white.  If  you  want a human vs human startup or some
+      other combination, then you should use the appropriate  com-
+      mand line options (see below).
  
  
  
! Sun Release 4.1   Last change: 29 November 1990                 1
  
  
  
***************
*** 71,84 ****
  
  
  
-      other combination, then you should use the appropriate  com-
-      mand line options (see below).
- 
  REVE BUTTONS
       With the graphics versions, there are eight buttons that are
       normally  displayed  at  the top of the Reve window. Each of
!      these buttons, except  the  "done"  button  has  a  keyboard
!      equivalent which is given in brackets below.
  
       load [ L ]        Load a game file. The format of this  game
                         file  is  given  below. With the graphical
--- 71,81 ----
  
  
  
  REVE BUTTONS
       With the graphics versions, there are eight buttons that are
       normally  displayed  at  the top of the Reve window. Each of
!      these buttons, has a keyboard equivalent which is  given  in
!      brackets below.
  
       load [ L ]        Load a game file. The format of this  game
                         file  is  given  below. With the graphical
***************
*** 115,132 ****
                         A "move" is considered to be all  previous
                         consecutive moves by the opponent.
  
!      done [ No keyboard equivalent]
!                        Change reve to an icon.
  
       quit [ q ]        Exit the reve program.
  
! REVE CYCLIC SELECTIONS
!      With the graphical versions, just below  the  eight  buttons
!      are four cycle items.  These can either be selected with the
  
  
  
! Sun Release 4.1   Last change: 18 October 1990                  2
  
  
  
--- 112,132 ----
                         A "move" is considered to be all  previous
                         consecutive moves by the opponent.
  
!      props [ p ]       Display  a   property   sheet   containing
!                        choices and toggles which will alter vari-
!                        ous reve properties.
  
       quit [ q ]        Exit the reve program.
  
! REVE PROPERTY SHEET SELECTIONS
!      With the graphical versions, there is a property sheet  win-
!      dow  which  can  be  displayed.  The  property sheet has two
!      choice items, one cyclic item, and six toggle  items.  Click
!      with the left mouse button over the option you want from the
  
  
  
! Sun Release 4.1   Last change: 29 November 1990                 2
  
  
  
***************
*** 137,171 ****
  
  
  
!      left mouse button, to increment  or  decrement  the  current
!      selection  (depending  upon which half on the item you click
!      over), or a selection can be made from a popup menu when you
!      click  with  the  right mouse button (SunView and XView ver-
!      sions only).  Each cycle value  has  a  keyboard  equivalent
!      which  is given in brackets below.  This must be followed by
!      the value of the new selection you wish to make.   The  dumb
!      tty  version  has the equivalent of these items displayed to
!      the right of the reve board display.
  
!      Black: [ B ]      Select whether the black player should  be
!                        a  human  or  the  computer.  The keyboard
!                        equivalents are 'h' for human, and 'c' for
!                        computer.
  
!      White: [ W ]      Select whether the white player should  be
!                        a  human  or  the  computer.  The keyboard
!                        equivalents are the same as for the Black:
!                        item.
  
-      Difficulty: [ D ] Sets the degree of difficulty for the com-
-                        puters  moves.  Keyboard  selection values
-                        are in the range '1' to '9'. The  computer
-                        move  is  determined  on a time basis. The
-                        degree of difficulty determines the  total
-                        amount of time that the computer will take
-                        to make all its moves. Here are  the  time
-                        periods for each level of difficulty:
- 
            Difficulty     Time
  
            1         Time allocation disabled (fast simple move).
--- 137,169 ----
  
  
  
!      choice items. With the cyclic items,  click  with  the  left
!      mouse  button over the appropriate half, to either increment
!      or decrement the current value.  Clicking left over the tog-
!      gle  item  boxes,  will  toggle the value of that item on or
!      off.  The choice items also have keyboard equivalents  which
!      are  given  in  brackets below. They must be followed by the
!      value of the new selection you wish to make.  The  dumb  tty
!      version  has  the equivalent of these items displayed to the
!      right of the reve board display.
  
!      Computer plays: [ C ]
!                        A choice item which selects what  color[s]
!                        the  computer  should  play.  The keyboard
!                        equivalents are 'b'  for  black,  'w'  for
!                        white,  'n'  for  neither, and 'a' for all
!                        (both).
  
!      Difficulty: [ D ] A choice item which  sets  the  degree  of
!                        difficulty  for the computers moves.  Key-
!                        board selection values are  in  the  range
!                        '1'  to  '9'.  The computer move is deter-
!                        mined on a time basis. The degree of  dif-
!                        ficulty  determines  the  total  amount of
!                        time that the computer will take  to  make
!                        all  its  moves. Here are the time periods
!                        for each level of difficulty:
  
            Difficulty     Time
  
            1         Time allocation disabled (fast simple move).
***************
*** 180,212 ****
  
       Level eight is tournament level.
  
!      Notes: [ N ]      Select   whether   computer   notes    are
!                        displayed.  When  you  are playing against
!                        the computer, the note gives the  position
!                        of  the last computer move, and an indica-
!                        tion of whether it was a good or bad move.
  
! OPTIONS
!      -animate
!           Show animation. The computer's stone will glide in from
  
  
  
- Sun Release 4.1   Last change: 18 October 1990                  3
  
  
  
  
  
  
  REVE(6)                  GAMES AND DEMOS                  REVE(6)
  
  
  
            the top left corner of the board, and when you hold the
            left mouse button down, your stone is dragged around.
  
!      -b [ display ]
            Black will be played by a human. With the  X11  variant
            of  reve  it  is  possible  to give an optional display
            value.
--- 178,236 ----
  
       Level eight is tournament level.
  
!      Set search depth: [ No keyboard equivalent ]
!                        A  cyclic  item  which  sets  the  maximum
!                        search depth for a computer move.
  
!      Animate move option. [ No keyboard equivalent ]
!                        A toggle item for animating  the  computer
!                        move and the dragging of human pieces.
  
+      Show current best move option. [ No keyboard equivalent ]
+                        A toggle item for showing the current best
+                        move as the computer makes it's move.
  
  
  
+ Sun Release 4.1   Last change: 29 November 1990                 3
  
  
  
  
  
+ 
  REVE(6)                  GAMES AND DEMOS                  REVE(6)
  
  
  
+      Show last move option. [ No keyboard equivalent ]
+                        A toggle item  for  outlining  the  square
+                        containing the last move.
+ 
+      Show evaluation information option. [ No keyboard equivalent ]
+                        A   toggle   information   for  displaying
+                        evaluation information for  each  computer
+                        move.
+ 
+      Number last move option. [ No keyboard equivalent ]
+                        A toggle item for  number  the  last  move
+                        stone.
+ 
+      Don't show flip option. [ No keyboard equivalent ]
+                        A toggle item to prevent the flip  of  the
+                        stones as a turn is completed.
+ 
+ OPTIONS
+      -animate
+           Show animation. The computer's stone will glide in from
            the top left corner of the board, and when you hold the
            left mouse button down, your stone is dragged around.
  
!      -bestmove
!           As the computer is making it's move,  continually  show
!           the position of the best move found so far.
! 
!      -black [ display ]
            Black will be played by a human. With the  X11  variant
            of  reve  it  is  possible  to give an optional display
            value.
***************
*** 231,236 ****
--- 255,274 ----
            information.
  
       -i   Invert the reve window before displaying it. For use by
+ 
+ 
+ 
+ Sun Release 4.1   Last change: 29 November 1990                 4
+ 
+ 
+ 
+ 
+ 
+ 
+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
+ 
+ 
+ 
            people   who  started  their  graphics  environment  in
            inverse mode. This option is currently only implemented
            for the SunView version.
***************
*** 243,248 ****
--- 281,291 ----
            Load a game file. The format of this game file is given
            below. The board will be setup with these stones.
  
+      -log Save a log of computer move  information  to  the  file
+           reve.res  as  the  game progresses. This information is
+           probably only useful to people trying  to  improve  the
+           computer algorithm.
+ 
       -m   Always display in monochrome, even on a color screen.
  
       -notes
***************
*** 255,279 ****
            Play a quick game. Don't flash the stones as  they  are
            being turned.
  
- 
- 
- 
- Sun Release 4.1   Last change: 18 October 1990                  4
- 
- 
- 
- 
- 
- 
- REVE(6)                  GAMES AND DEMOS                  REVE(6)
- 
- 
- 
-      -r   Save a log of computer move  information  to  the  file
-           reve.res  as  the  game progresses. This information is
-           probably only useful to people trying  to  improve  the
-           computer algorithm.
- 
       -?   Print the version number and  usage  message  for  this
            release of the reve program.
  
--- 298,303 ----
***************
*** 280,286 ****
       -v   Print the version number and  usage  message  for  this
            release of the reve program.
  
!      -w [ display ]
            White will be played by a human. With the  X11  variant
            of  reve  it  is  possible  to give an optional display
            value.
--- 304,310 ----
       -v   Print the version number and  usage  message  for  this
            release of the reve program.
  
!      -white [ display ]
            White will be played by a human. With the  X11  variant
            of  reve  it  is  possible  to give an optional display
            value.
***************
*** 295,346 ****
       -WP x y
            Start the icon position at x y
  
  REVE GAMES FILE FORMAT
       Reve has the ability to load or save games.  The  format  of
       the games files are:
- 
            1,   <C-4>     -    [ remarks field ]
            2,   -    <E-3>     [ remarks field ]
- 
       There is one move per line. Lines starting with  a  '#'  and
       blank lines are ignored. The first field of each line is the
       move number. This will be present before the  comma.  It  is
       used  as  a  consistency check. Next are the black and white
       fields. If the '<' character is present  before  the  white.
-      The  three  characters between the '<' and '>' are the move,
-      and give the column and row. The column  letter  can  be  in
-      either lower or upper case.
  
-      It is possible for one player to have two or more consequen-
-      tive  moves,  hence  the need for the above scheme.  Reve is
-      flexible about white space (except between the '<'  and  '>'
-      characters).  The remarks field is ignored. The program will
-      stop on the first line it thinks is in  error,  and  display
-      the  reason  for  this.  As valid lines are read from a game
-      file, the board is updated.
  
- FILES
-      /usr/local/lib/reve.edgetable
  
  
  
- Sun Release 4.1   Last change: 18 October 1990                  5
  
  
  
  
- 
- 
  REVE(6)                  GAMES AND DEMOS                  REVE(6)
  
  
  
            edge stability table for  all  possible  edge  combina-
            tions.
- 
  BUGS
       See the TODO file for the list of known problems.
- 
  AUTHORS
       Computer strategy:  Yves Gallot    galloty@cernvax.cern.ch
       Graphics interface: Rich Burridge  richb@Aus.Sun.COM
--- 319,422 ----
       -WP x y
            Start the icon position at x y
  
+ RESOURCES
+      On startup, the X11 and XView version of reve will  use  the
+ 
+ 
+ 
+ Sun Release 4.1   Last change: 29 November 1990                 5
+ 
+ 
+ 
+ 
+ 
+ 
+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
+ 
+ 
+ 
+      following X resources:
+ 
+      Resource:      reve.animate
+      Values:        True, False (False)
+      Description    Indicates whether various  animation  effects
+                     are shown.
+ 
+      Resource:      reve.bestmove
+      Values:        True, False (False)
+      Description    Indicates whether  to  continually  show  the
+                     best  move  so far, as the computer is making
+                     it's move.
+ 
+      Resource:      reve.difficulty
+      Values:        Difficulty value (numeric)
+      Description    The computer difficulty level.
+ 
+      Resource:      reve.last
+      Values:        True, False (False)
+      Description    Indicates whether the position  of  the  last
+                     stone placed is shown by a square.
+ 
+      Resource:      reve.log
+      Values:        True, False (False)
+      Description    Indicates whether to save a log  of  computer
+                     information to the file reve.res/
+ 
+      Resource:      reve.notes
+      Values:        True, False (False)
+      Description    Indicates whether todisplay computer notes.
+ 
+      Resource:      reve.number
+      Values:        True, False (False)
+      Description    Indicates whether the last  stone  placed  in
+                     numbered.
+ 
+      Resource:      reve.quick
+      Values:        True, False (False)
+      Description    Indicates whether  a  quick  game  should  be
+                     played.  Stones  are  not flashed as they are
+                     placed, if this resource is set true.
+ 
  REVE GAMES FILE FORMAT
       Reve has the ability to load or save games.  The  format  of
       the games files are:
            1,   <C-4>     -    [ remarks field ]
            2,   -    <E-3>     [ remarks field ]
       There is one move per line. Lines starting with  a  '#'  and
       blank lines are ignored. The first field of each line is the
       move number. This will be present before the  comma.  It  is
       used  as  a  consistency check. Next are the black and white
       fields. If the '<' character is present  before  the  white.
  
  
  
+ Sun Release 4.1   Last change: 29 November 1990                 6
  
  
  
  
  
  
  REVE(6)                  GAMES AND DEMOS                  REVE(6)
  
  
  
+      The  three  characters between the '<' and '>' are the move,
+      and give the column and row. The column  letter  can  be  in
+      either lower or upper case.
+      It is possible for one player to have two or more consequen-
+      tive  moves,  hence  the need for the above scheme.  Reve is
+      flexible about white space (except between the '<'  and  '>'
+      characters).  The remarks field is ignored. The program will
+      stop on the first line it thinks is in  error,  and  display
+      the  reason  for  this.  As valid lines are read from a game
+      file, the board is updated.
+ FILES
+      /usr/local/lib/reve.edgetable
            edge stability table for  all  possible  edge  combina-
            tions.
  BUGS
       See the TODO file for the list of known problems.
  AUTHORS
       Computer strategy:  Yves Gallot    galloty@cernvax.cern.ch
       Graphics interface: Rich Burridge  richb@Aus.Sun.COM
***************
*** 380,396 ****
  
  
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! Sun Release 4.1   Last change: 18 October 1990                  6
  
  
  
--- 456,462 ----
  
  
  
! Sun Release 4.1   Last change: 29 November 1990                 7