* ----------------------------------------------------------------------
* Copyright (c) 1993, 1994, 1995 Matthias Mutz
* Copyright (c) 1999 Michael Vanier and the Free Software Foundation
+ * Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation
*
* GNU SHOGI is based on GNU CHESS
*
if (in_opening_stage)
{
+#ifndef MINISHOGI
+/* FIXME: [HGM] The 3rd-rank Pawn section is meaningless in mini-Shogi,
+ * (which does not have opposing Pawns), and can do out-of-bound access,
+ * as the promotion zone is only 1 rank, so Pawns can be closer than 3 ranks
+ * to the board edge.
+ */
if (crow(c1, sq) == 2) /* pawn on 3d rank */
{
if (board[(c1 == black) ?
}
}
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9
+ * board - and anyway we don't know the stage really :)
+ */
if ((GameType[c1] == STATIC_ROOK) && (sq == csquare(c1, 43)))
{
if ((atk2[csquare(c1, 52)] & CNT_MASK) < 2)
s += (ds = -2 * fv1[ATTACKED]);
}
}
+#endif
}
return s;
if (in_opening_stage)
{
+#ifndef MINISHOGI
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9
+ * board - and anyway we don't know the stage really :)
+ */
if (GameType[c1] == STATIC_ROOK)
{
if (csquare(c1, sq) == 12)
}
}
}
+#endif
}
else
{
if (in_opening_stage)
{
+#ifndef MINISHOGI
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9
+ * board - and anyway we don't know the stage really :)
+ */
if ((GameType[c1] == STATIC_ROOK) && (GameType[c2] != STATIC_ROOK))
{
if (Mvboard[csquare(c1, 3)])
s += (ds = -2 * fv1[OPENWRONG]);
}
}
+#endif
}
else
{
if (in_opening_stage)
{
+#ifndef MINISHOGI
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9
+ * board - and anyway we don't know the stage really :)
+ */
if (GameType[c1] == RANGING_ROOK)
{
/* Bishops diagonal should not be open */
s += (ds = -fv1[OPENWRONG]);
}
}
+#endif
}
else
{
if (in_opening_stage)
{
+#ifndef MINISHOGI
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9
+ * board - and anyway we don't know the stage really :)
+ */
short WRONG = fv1[OPENWRONG], OPOK = WRONG / 3;
if (GameType[c1] == STATIC_ROOK)
}
}
}
+#endif
}
else
{
if (fv1[KSFTY] != 0)
s += KingScan(sq);
+#ifndef MINISHOGI
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9
+ * board - and anyway we don't know the stage really :)
+ */
if (in_opening_stage)
{
if ((GameType[c1] != UNKNOWN) && (ccolumn(c1, sq) == 4))
s += (ds = -fv1[OPENWRONG] / 2);
}
}
+#endif
/* CHECKME: is this correct? */
if ((ds = fv1[HOPN]))
* Try to determine the game type of "side".
*/
+#ifndef MINISHOGI
inline static void
GuessGameType(short side_to_move)
{
}
}
}
+#endif
{
short side;
+#ifndef MINISHOGI
+ /* FIXME: calculations below are wrong for minishogi, all done for 9x9 */
GuessGameType(side_to_move);
+#else
+ GameType[black] = UNKNOWN;
+ GameType[white] = UNKNOWN;
+#endif
array_zero(Mpawn, sizeof(Mpawn));
#ifndef MINISHOGI
+/* FIXME: calculations below are wrong for minishogi, all done for 9x9 */
void
DetermineStage(short side)
{