/*
* Generate move strings in different formats.
+ *
+ * INPUT:
+ * - f piece to be moved
+ * - 0 < f < NO_SQUARES source square
+ * - NO_SQUARES <= f NO_SQUARES + 2*NO_PIECES dropped piece modulo NO_PIECES
+ * - t & 0x7f target square
+ * - t & 0x80 promotion flag
+ * - flag FIXME: must be zero ?
+ *
+ * OUTPUT:
+ * - GLOBAL mvstr
*/
void
if (f[1] == '*' || f[1] == '\'')
{
- c2 = '9' - f[2];
- r2 = 'i' - f[3];
+ c2 = COL_NAME(f[2]);
+ r2 = ROW_NAME(f[3]);
return ((NO_SQUARES + *fpiece) << 8) | locn(r2, c2);
}
else
{
- c1 = '9' - f[1];
- r1 = 'i' - f[2];
- c2 = '9' - f[3];
- r2 = 'i' - f[4];
+ c1 = COL_NAME(f[1]);
+ r1 = ROW_NAME(f[2]);
+ c2 = COL_NAME(f[3]);
+ r2 = ROW_NAME(f[4]);
p = (f[5] == '+') ? 0x80 : 0;
return (locn(r1, c1) << 8) | locn(r2, c2) | p;
fprintf(fd, CP[37], w, b, Game50,
flag.force ? "force" : "");
- fprintf(fd, empty);
+ fputs(empty, fd);
fprintf(fd, CP[111], TCflag, OperatorTime);
fprintf(fd, CP[117],
TimeControl.clock[black], TimeControl.moves[black],
TimeControl.clock[white], TimeControl.moves[white]);
- fprintf(fd, empty);
+ fputs(empty, fd);
for (i = NO_ROWS - 1; i > -1; i--)
{
- fprintf(fd, "%c ", 'i' - i);
+ fprintf(fd, "%c ", ROW_NAME(i));
for (c = 0; c < NO_COLS; c++)
{
fprintf(fd, "\n");
}
- fprintf(fd, empty);
- fprintf(fd, " 9 8 7 6 5 4 3 2 1\n");
- fprintf(fd, empty);
+ fputs(empty, fd);
+ fprintf(fd, " 9 8 7 6 5 4 3 2 1\n"); /* FIXME */
+ fputs(empty, fd);
fprintf(fd, " p l n s g b r k\n");
for (side = 0; side <= 1; side++)
fprintf(fd, "\n");
}
- fprintf(fd, empty);
- fprintf(fd, CP[126]);
+ fputs(empty, fd);
+ fputs(CP[126], fd);
for (i = 1; i <= GameCnt; i++)
{
/* fprintf(fd, "gnushogi game %d\n", u); */
fprintf(fd, CP[161], version, patchlevel);
- fprintf(fd, CP[10]);
- fprintf(fd, CP[11]);
+ fputs(CP[10], fd);
+ fputs(CP[11], fd);
for (i = 1; i <= GameCnt; i++)
{