+static char *validate_desc(game_params *params, char *desc)
+{
+ int area = grid_area(params->d1, params->d2, solids[params->solid]->order);
+ int i, j;
+
+ i = (area + 3) / 4;
+ for (j = 0; j < i; j++) {
+ int c = desc[j];
+ if (c >= '0' && c <= '9') continue;
+ if (c >= 'A' && c <= 'F') continue;
+ if (c >= 'a' && c <= 'f') continue;
+ return "Not enough hex digits at start of string";
+ /* NB if desc[j]=='\0' that will also be caught here, so we're safe */
+ }
+
+ if (desc[i] != ',')
+ return "Expected ',' after hex digits";
+
+ i++;
+ do {
+ if (desc[i] < '0' || desc[i] > '9')
+ return "Expected decimal integer after ','";
+ i++;
+ } while (desc[i]);
+
+ return NULL;
+}
+
+static game_state *new_game(midend_data *me, game_params *params, char *desc)