toriProms[16] = { Z_MUST, 0, 0, 0, 0, Z_MUST },
waProms[16] = { Z_MUST, Z_2ND, Z_MUST, Z_MUST, Z_MUST, COLOR, COLOR, Z_MUST, Z_MUST, Z_MUST, COLOR, Z_MUST, COLOR, Z_MUST };
+char *betza[] = { // piece defs for sending to GUI
+ NULL, // suppresses setup command
+ "",
+ "",
+ NULL,
+ ",P& fW,L& fWbF,U& fWbF,C& fFsW,G& fFvW,M& fFvW,D& fFbsW,V& FfW,W& WfF,O& fR,H& fRbW2,S& sRvW,F& BfW,E& vRfF3bFsW,R& fRFbW,X& FAvWvD"
+ ",+P& WfF,+L& vRfF3bFsW,+U& BfW,+C& vRfFsW,+G& sRvW,+M& FfW,+D& WfF,+V& FfsW,+W& K,+O& K,+H& vN,+S& R,+F& BvRsW,+R& FAvWvD",
+ ",S& fW,P& fDbF,L& fRbrBblF,R& fRblBbrF,C& FvW,F& FfsW,+S& fAbD,+F& fBbRbF2fsW",
+};
+
+char *ptc[] = { // XBoard 4.9 piece-to-char table
+ NULL,
+ "P.BR.S...G.+.++.+Kp.br.s...g.+.++.+k",
+ "PNBR.S...G.++++.+Kpnbr.s...g.++++.+k",
+ NULL,
+ "P..^S^FV..^LW^OH.F.^R.E....R...D.GOL^M..^H.M.C.^CU.^W../.......^V.^P.^U..^DS.^GXK"
+ "p..^s^fv..^lw^oh.f.^r.e....r...d.gol^m..^h.m.c.^cu.^w../.......^v.^p.^u..^ds.^gxk",
+ "S.....F..........^F.P........^S....L........C......RKs.....f..........^f.p........^s....l........c......rk"
+};
+
typedef struct {
int files, ranks, hand, zone;
char *name;
GameInit (char *name)
{
int v, *ip, i, color, r, f, zone;
- unsigned char *moves, *codes; char c;
+ unsigned char *moves, *codes; char c, *p;
// determine variant parameters
if(sscanf(name, "%dx%d+%d_%c", &f, &r, &i, &c) == 4) {
startPos= variants[v].fen;
codes = variants[v].proms;
+ if((p = betza[v])) { // configure GUI for this variant
+ printf("setup (%s) %dx%d+%d_%s %s 0 1", ptc[v], nrFiles, nrRanks, maxDrop+1, (v == 4 ? "chu" : "shogi"), startPos);
+ while(*p) { if(*p == ',') printf("\npiece "); else printf("%c", *p); p++; }
+ printf("\n");
+ }
+
maxDrop += (v==2 || v==1); // Judkins & mini-Shogi have dummy Lance
// board