--- main-win.c	2011-06-15 19:46:30.000000000 -0500
+++ main-win.org.c	2011-06-11 15:08:00.000000000 -0500
@@ -82,18 +82,6 @@
 
 #if (defined(WINDOWS) && !defined(USE_SDL))
 
-#ifndef GetWindowLongPtr
-#define GetWindowLongPtr GetWindowLong
-#endif
-#ifndef SetWindowLongPtr
-#define SetWindowLongPtr SetWindowLong
-#endif
-#ifndef GWLP_USERDATA
-#define GWLP_USERDATA GWL_USERDATA
-#endif
-#ifndef AC_SRC_ALPHA
-#define AC_SRC_ALPHA     0x01
-#endif
 
 #define HAS_CLEANUP
 
@@ -112,6 +100,7 @@
 #endif /* HTML_HELP */
 
 
+
 #ifdef ALLOW_BORG
 
 /*
@@ -200,50 +189,16 @@
 #define IDM_OPTIONS_GRAPHICS_DAVID  403
 #define IDM_OPTIONS_GRAPHICS_NOMAD  404
 #define IDM_OPTIONS_GRAPHICS_NICE   405
-#define IDM_OPTIONS_GRAPHICS_SHOCK  406
-#define IDM_OPTIONS_GRAPHICS_EXTRA  407
-//#define IDM_OPTIONS_TRPTILE         407
-//#define IDM_OPTIONS_DBLTILE         408
-//#define IDM_OPTIONS_BIGTILE         409
+#define IDM_OPTIONS_TRPTILE         407
+#define IDM_OPTIONS_DBLTILE         408
+#define IDM_OPTIONS_BIGTILE         409
 #define IDM_OPTIONS_LOW_PRIORITY    420
 #define IDM_OPTIONS_SAVER           430
 #define IDM_OPTIONS_MAP             440
 
-#define IDM_OPTIONS_TILE_1x1        447
-#define IDM_OPTIONS_TILE_2x1        448
-#define IDM_OPTIONS_TILE_4x2        449
-#define IDM_OPTIONS_TILE_2x2        450
-#define IDM_OPTIONS_TILE_3x1        451
-#define IDM_OPTIONS_TILE_3x3        452
-#define IDM_OPTIONS_TILE_4x4        453
-#define IDM_OPTIONS_TILE_6x3        454
-#define IDM_OPTIONS_TILE_6x6        455
-#define IDM_OPTIONS_TILE_8x4        456
-#define IDM_OPTIONS_TILE_8x8        457
-#define IDM_OPTIONS_TILE_16x8       458
-#define IDM_OPTIONS_TILE_16x16      459
-
 #define IDM_HELP_GENERAL		901
 #define IDM_HELP_SPOILERS		902
 
-/* Specifications for graphics modes.  */
-static const struct {
- 	const char *file;			// Base name of png file (if any)
-	const char *name;			// Value of ANGBAND_GRAF variable
-	int menuItem;			// Menu item to select the fileset
-	short grafID;			// id of tile set should be >0 and unique for anything new
-	short overdrawCol;	// column in the file where tiles to the right of draw the tile above as well
-	const char *menuname;			// Value of ANGBAND_GRAF variable
-} graphics_modes[] = {
-	{ "8x8.png",     "old", IDM_OPTIONS_GRAPHICS_OLD,   1,  0, "&Old tiles"},
-	{ "16x16.png",   "new", IDM_OPTIONS_GRAPHICS_ADAM,  2,  0, "&Adam Bolt's tiles"},
-	{ "32x32.png", "david", IDM_OPTIONS_GRAPHICS_DAVID, 3,  0, "&David Gervais' tiles"},
-	{ "8x16.png",  "nomad", IDM_OPTIONS_GRAPHICS_NOMAD, 4,  0, "No&mad's tiles"},
-	{ "64x64.png", "shock", IDM_OPTIONS_GRAPHICS_SHOCK, 6,122, "&Shockbolt's tiles"},
-	{ "32x32.png", "david", IDM_OPTIONS_GRAPHICS_EXTRA, 7,  0, "&Extra tiles"},
-	{ NULL,           NULL, IDM_OPTIONS_GRAPHICS_NONE,  0,  0, "&None"}
-};
-
 
 /*
  * This may need to be removed for some compilers XXX XXX XXX
@@ -551,14 +506,8 @@
  */
 static DIBINIT infMask;
 
-static int overdraw = 0;
-static int overdrawRow = 8;
-static BLENDFUNCTION blendfn;
 #endif /* USE_GRAPHICS */
 
-static char tileset[32] = "";
-static char tilegraf[8] = "";
-
 
 #ifdef USE_SOUND
 
@@ -791,18 +740,49 @@
 
         if (use_graphics_nice)
           {
-            if (tileset[0])
-            {
-              char *end;
-              td->tile_wid = strtol(tileset,&end,10);
-              td->tile_hgt = strtol(end+1,&end,10);
-            }
-            else
-            {
-              /* Reset the tile info */
-              td->tile_wid = td->font_wid;
-              td->tile_hgt = td->font_hgt;
-            }
+            switch (use_graphics)
+              {
+              case GRAPHICS_DAVID_GERVAIS:
+                {
+                  /* Reset the tile info */
+                  td->tile_wid = 32;
+                  td->tile_hgt = 32;
+                  break;
+                }
+                
+              case GRAPHICS_ADAM_BOLT:
+                {
+                  /* Reset the tile info */
+                  td->tile_wid = 16;
+                  td->tile_hgt = 16;
+                  break;
+                }
+
+              case GRAPHICS_NOMAD:
+                {
+                  /* Reset the tile info */
+                  td->tile_wid = 8;
+                  td->tile_hgt = 16;
+                  break;
+                }
+                
+              case GRAPHICS_ORIGINAL:
+                {
+                  /* Reset the tile info */
+                  td->tile_wid = 8;
+                  td->tile_hgt = 8;
+                  break;
+                }
+                
+              case GRAPHICS_NONE:
+                {
+                  /* Reset the tile info */
+                  td->tile_wid = td->font_wid;
+                  td->tile_hgt = td->font_hgt;
+                  break;
+                }
+                
+              }
             
 	    tile_width = 1;
 	    tile_height = 1;
@@ -959,14 +939,6 @@
         wsprintf(buf, "%d", tile_height);
         WritePrivateProfileString("Angband", "TileHeight", buf, ini_file);
 
-        /* Save the tile file name */
-        WritePrivateProfileString("Angband", "TileSet", tileset, ini_file);
-        /* Save the tile "type" used in pref files */
-        WritePrivateProfileString("Angband", "TileType", tilegraf, ini_file);
-        /* Save the Overdraw state */
-        wsprintf(buf, "%d", overdraw);
-        WritePrivateProfileString("Angband", "Overdraw", buf, ini_file);
-
 	/* Save window prefs */
 	for (i = 0; i < MAX_TERM_DATA; i++)
 	{
@@ -1033,21 +1005,12 @@
         arg_graphics_nice = GetPrivateProfileInt("Angband", "Graphics_Nice", TRUE, ini_file);
 
 	/* Extract the tile width */
-	tile_width = GetPrivateProfileInt("Angband", "TileWidth", 1, ini_file);
+	tile_width = GetPrivateProfileInt("Angband", "TileWidth", FALSE, ini_file);
 
 	/* Extract the tile height */
-	tile_height = GetPrivateProfileInt("Angband", "TileHeight", 1, ini_file);
-
-	/* Extract the tile set file name */
-	i = GetPrivateProfileString("Angband", "TileSet", "",tileset, 32, ini_file);
-
-	/* Extract the tile set pref type */
-	i = GetPrivateProfileString("Angband", "TileType", "none",tilegraf, 8, ini_file);
+	tile_height = GetPrivateProfileInt("Angband", "TileHeight", FALSE, ini_file);
 
-	/* Extract the overdraw state */
-	overdraw = GetPrivateProfileInt("Angband", "Overdraw", 0, ini_file);
-
-  /* Extract the "arg_wizard" flag */
+	/* Extract the "arg_wizard" flag */
 	arg_wizard = (GetPrivateProfileInt("Angband", "Wizard", 0, ini_file) != 0);
 
 	/* Extract the "arg_rebalance" flag */
@@ -1323,23 +1286,25 @@
 		int wid, hgt;
 		const char *name;
 
-    
-		 if (tileset[0] && arg_graphics) {
-      char *end;
-      if (!tilegraf[0]) {
-			  plog_fmt("invalid tile name '%s'", tilegraf);
-			  return FALSE;
-      }
-      wid = strtol(tileset,&end,10);
-      hgt = strtol(end+1,&end,10);
-      if ((wid < 2) || (hgt < 2)) {
-			  plog_fmt("invalid tile dimensions in tileset name: '%s'", tileset);
-			  return FALSE;
-      }
-      name = tileset;
-      ANGBAND_GRAF = tilegraf;
+		if (arg_graphics == GRAPHICS_DAVID_GERVAIS) {
+			wid = 32;
+			hgt = 32;
+			name = "32x32.png";
+			ANGBAND_GRAF = "david";
 			use_transparency = FALSE;
-    } else {
+		} else if (arg_graphics == GRAPHICS_ADAM_BOLT){
+			wid = 16;
+			hgt = 16;
+			name = "16x16.png";
+			ANGBAND_GRAF = "new";
+			use_transparency = TRUE;
+		} else if (arg_graphics == GRAPHICS_NOMAD) {
+			wid = 16;
+			hgt = 16;
+			name = "8x16.png";
+			ANGBAND_GRAF = "nomad";
+			use_transparency = TRUE;
+		} else {
 			wid = 8;
 			hgt = 8;
 			name = "8x8.png";
@@ -1376,68 +1341,6 @@
 	/* Result */
 	return (can_use_graphics);
 }
-static bool init_graphics_alpha(void)
-{
-	/* Initialize once */
-	/* if (can_use_graphics != arg_graphics) */
-	{
-		char buf[1024];
-		int wid, hgt;
-		const char *name;
-
-    
-		 if (tileset[0] && arg_graphics) {
-      char *end;
-      if (!tilegraf[0]) {
-			  plog_fmt("invalid tile name '%s'", tilegraf);
-			  return FALSE;
-      }
-      wid = strtol(tileset,&end,10);
-      hgt = strtol(end+1,&end,10);
-      if ((wid < 2) || (hgt < 2)) {
-			  plog_fmt("invalid tile dimensions in tileset name: '%s'", tileset);
-			  return FALSE;
-      }
-      name = tileset;
-      ANGBAND_GRAF = tilegraf;
-			use_transparency = FALSE;
-    } else {
-			wid = 8;
-			hgt = 8;
-			name = "8x8.png";
-			ANGBAND_GRAF = "old";
-		}
-
-		/* Access the bitmap file */
-		path_build(buf, sizeof(buf), ANGBAND_DIR_XTRA_GRAF, name);
-
-		/* Load the image or quit */
-		if (!ReadDIB_PNG_Alpha(data[0].w, buf, &infGraph)) {
-			plog_fmt("Cannot read file '%s'", name);
-			return FALSE;
-		}
-
-		/* Save the new sizes */
-		infGraph.CellWidth = wid;
-		infGraph.CellHeight = hgt;
-
-		/* Activate a palette */
-		if (!new_palette())
-		{
-			/* Free bitmap XXX XXX XXX */
-
-			/* Oops */
-			plog("Cannot activate palette!");
-			return (FALSE);
-		}
-
-		/* Graphics available */
-		can_use_graphics = arg_graphics;
-	}
-
-	/* Result */
-	return (can_use_graphics);
-}
 #endif /* USE_GRAPHICS */
 
 
@@ -1737,8 +1640,6 @@
 #endif /* 0 */
 
 
-errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp, const byte *tap, const char *tcp);
-errr Term_pict_win_alpha(int x, int y, int n, const byte *ap, const char *cp, const byte *tap, const char *tcp);
 /*
  * React to global changes
  */
@@ -1852,29 +1753,14 @@
 		FreeDIB(&infMask);
 
 		/* Initialize (if needed) */
-    if (overdraw) {
-		  if (arg_graphics && !init_graphics_alpha())
-		  {
-			  /* Warning */
-			  plog("Cannot initialize graphics!");
-
-			  /* Cannot enable */
-			  arg_graphics = GRAPHICS_NONE;
-      } else {
-       	td->t.pict_hook = Term_pict_win_alpha;
-      }
-    } else {
-		  if (arg_graphics && !init_graphics())
-		  {
-			  /* Warning */
-			  plog("Cannot initialize graphics!");
-
-			  /* Cannot enable */
-			  arg_graphics = GRAPHICS_NONE;
-      } else {
-       	td->t.pict_hook = Term_pict_win;
-		  }
-    }
+		if (arg_graphics && !init_graphics())
+		{
+			/* Warning */
+			plog("Cannot initialize graphics!");
+
+			/* Cannot enable */
+			arg_graphics = GRAPHICS_NONE;
+		}
 
 		/* Change setting */
 		use_graphics = arg_graphics;
@@ -2261,7 +2147,7 @@
  * Given a position in the ISO Latin-1 character set, return
  * the correct character on this system.
  */
-static byte Term_xchar_win(byte c)
+ static byte Term_xchar_win(byte c)
 {
  	/* The Windows port uses the Latin-1 standard */
  	return (c);
@@ -2401,14 +2287,14 @@
 		w2 = td->map_tile_wid;
 		h2 = td->map_tile_hgt;
 		tw2 = w2;
-    th2 = h2;
+                th2 = h2;
 	}
 	else
 	{
 		w2 = td->tile_wid;
 		h2 = td->tile_hgt;
 
-    /* Large tile mode */
+                /* Large tile mode */
 		th2 = tile_height * h2;
 		tw2 = tile_width * w2;
 	}
@@ -2424,7 +2310,9 @@
 	hdcSrc = CreateCompatibleDC(hdc);
 	hbmSrcOld = SelectObject(hdcSrc, infGraph.hBitmap);
 
-  if (infMask.hBitmap)
+	if ((arg_graphics == GRAPHICS_ADAM_BOLT) ||
+		(arg_graphics == GRAPHICS_NOMAD) ||
+	    (arg_graphics == GRAPHICS_DAVID_GERVAIS))
 	{
 		hdcMask = CreateCompatibleDC(hdc);
 		SelectObject(hdcMask, infMask.hBitmap);
@@ -2435,7 +2323,7 @@
 	}
 
 	/* Draw attr/char pairs */
-  for (i = n-1; i >= 0; i--, x2 -= w2)
+        for (i = n-1; i >= 0; i--, x2 -= w2)
 	{
 		byte a = ap[i];
 		char c = cp[i];
@@ -2448,7 +2336,9 @@
 		x1 = col * w1;
 		y1 = row * h1;
 
-    if (hdcMask)
+		if ((arg_graphics == GRAPHICS_ADAM_BOLT) ||
+			(arg_graphics == GRAPHICS_NOMAD) ||
+		    (arg_graphics == GRAPHICS_DAVID_GERVAIS))
 		{
 			x3 = (tcp[i] & 0x7F) * w1;
 			y3 = (tap[i] & 0x7F) * h1;
@@ -2459,11 +2349,11 @@
 				/* Copy the terrain picture from the bitmap to the window */
 				BitBlt(hdc, x2, y2, tw2, th2, hdcSrc, x3, y3, SRCCOPY);
 
-        /* Only draw if terrain and overlay are different */
-        if ((x1 != x3) || (y1 != y3))
+                                /* Only draw if terrain and overlay are different */
+                                if ((x1 != x3) || (y1 != y3))
                                 {
-				  /* Mask out the tile */
-				  BitBlt(hdc, x2, y2, tw2, th2, hdcMask, x1, y1, SRCAND);
+				        /* Mask out the tile */
+				        BitBlt(hdc, x2, y2, tw2, th2, hdcMask, x1, y1, SRCAND);
 
 					/* Draw the tile */
 					BitBlt(hdc, x2, y2, tw2, th2, hdcSrc, x1, y1, SRCPAINT);
@@ -2511,14 +2401,13 @@
 		}
 	}
 
-  if (overdraw) {
-  }
-
 	/* Release */
 	SelectObject(hdcSrc, hbmSrcOld);
 	DeleteDC(hdcSrc);
 
-	if (hdcMask)
+	if ((arg_graphics == GRAPHICS_ADAM_BOLT) ||
+		(arg_graphics == GRAPHICS_NOMAD) ||
+	    (arg_graphics == GRAPHICS_DAVID_GERVAIS))
 	{
 		/* Release */
 		SelectObject(hdcMask, hbmSrcOld);
@@ -2538,116 +2427,7 @@
 	/* Success */
 	return 0;
 }
-static errr Term_pict_win_alpha(int x, int y, int n, const byte *ap, const char *cp, const byte *tap, const char *tcp)
-{
-	term_data *td = (term_data*)(Term->data);
-
-#ifdef USE_GRAPHICS
-
-	int i;
-	int x1, y1, w1, h1;
-	int x2, y2, w2, h2, tw2, th2;
-	int x3, y3;
-
-	HDC hdc;
-	HDC hdcSrc;
-	HBITMAP hbmSrcOld;
-
-	/* Erase the grids */
-	Term_wipe_win(x, y, n);
 
-	/* Size of bitmap cell */
-	w1 = infGraph.CellWidth;
-	h1 = infGraph.CellHeight;
-
-	/* Size of window cell */
-	if (td->map_active)
-	{
-		w2 = td->map_tile_wid;
-		h2 = td->map_tile_hgt;
-		tw2 = w2;
-    th2 = h2;
-	}
-	else
-	{
-		w2 = td->tile_wid;
-		h2 = td->tile_hgt;
-
-    /* Large tile mode */
-		th2 = tile_height * h2;
-		tw2 = tile_width * w2;
-	}
-
-	/* Location of window cell */
-	x2 = x * w2 + td->size_ow1;
-	y2 = y * h2 + td->size_oh1;
-
-	/* Info */
-	hdc = GetDC(td->w);
-
-	/* More info */
-	hdcSrc = CreateCompatibleDC(hdc);
-	hbmSrcOld = SelectObject(hdcSrc, infGraph.hBitmap);
-
-	/* Draw attr/char pairs */
-  for (i = n-1; i >= 0; i--, x2 -= w2)
-	{
-		byte a = ap[i];
-		char c = cp[i];
-
-		/* Extract picture */
-		int row = (a & 0x7F);
-		int col = (c & 0x7F);
-
-		/* Location of bitmap cell */
-		x1 = col * w1;
-		y1 = row * h1;
-
-		x3 = (tcp[i] & 0x7F) * w1;
-		y3 = (tap[i] & 0x7F) * h1;
- 
-		/* Set the correct mode for stretching the tiles */
-		SetStretchBltMode(hdc, COLORONCOLOR);
-
-  	/* Perfect size */
-		if ((w1 == tw2) && (h1 == th2))
-		{
-			/* Copy the terrain picture from the bitmap to the window */
-			BitBlt(hdc, x2, y2, tw2, th2, hdcSrc, x3, y3, SRCCOPY);
-    }
-    else
-    {
-		  /* Copy the terrain picture from the bitmap to the window */
-		  StretchBlt(hdc, x2, y2, tw2, th2, hdcSrc, x3, y3, w1, h1, SRCCOPY);
-    }
-		/* Only draw if terrain and overlay are different */
-		if ((x1 != x3) || (y1 != y3))
-		{
-		  /* Copy the picture from the bitmap to the window */
-		  AlphaBlend(hdc, x2, y2, tw2, th2, hdcSrc, x1, y1, w1, h1, blendfn);
-    }
-    if (overdraw && (col > overdraw) && (y > 2) && (row > overdrawRow)) {
-  		AlphaBlend(hdc, x2, y2-th2, tw2, th2, hdcSrc, x1, y1-h1, w1, h1, blendfn);
-    }
-  }
-
-	/* Release */
-	SelectObject(hdcSrc, hbmSrcOld);
-	DeleteDC(hdcSrc);
-
-	/* Release */
-	ReleaseDC(td->w, hdc);
-
-#else /* USE_GRAPHICS */
-
-	/* Just erase this grid */
-	return (Term_wipe_win(x, y, n));
-
-#endif /* USE_GRAPHICS */
-
-	/* Success */
-	return 0;
-}
 
 static void windows_map_aux(void)
 {
@@ -2787,8 +2567,7 @@
 	term_data *td;
 
 	char buf[1024];
-  MENUITEMINFO mii;
-	HMENU hm;
+
 
 	/* Main window */
 	td = &data[0];
@@ -2950,27 +2729,6 @@
 	/* Create a "brush" for drawing the "cursor" */
 	hbrYellow = CreateSolidBrush(win_clr[TERM_YELLOW]);
 
-  /* Populate the graphic options sub menu with the graphics modes */
-  hm = GetMenu(data[0].w);
-  i=0;
-  mii.cbSize = sizeof(MENUITEMINFO);
-  mii.fMask = MIIM_ID | MIIM_TYPE;
-  mii.fType = MFT_STRING;
-  while (graphics_modes[i].grafID != 0) {
-    mii.wID = graphics_modes[i].menuItem; // graphics_modes[i].grafID + IDM_OPTIONS_GRAPHICS_NONE;
-    mii.dwTypeData = graphics_modes[i].menuname;
-    mii.cch = strlen(graphics_modes[i].menuname);
-    InsertMenuItem(hm,IDM_OPTIONS_GRAPHICS_NONE, FALSE, &mii);
-    //InsertMenuItem(hm,399, FALSE, &mii);
-
-    ++i;
-  }
-
-  /* setup the alpha blending function */
-  blendfn.BlendOp = AC_SRC_OVER;
-  blendfn.BlendFlags = 0;
-  blendfn.AlphaFormat = AC_SRC_NO_PREMULT_ALPHA;//AC_SRC_ALPHA;
-  blendfn.SourceConstantAlpha = 255;
 
 	/* Process pending messages */
 	(void)Term_xtra_win_flush();
@@ -3136,48 +2894,29 @@
 	}
 
 	/* Menu "Options", disable all */
-  i=0;
-  do {
-	  EnableMenuItem(hm, graphics_modes[i].menuItem,
-	                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  } while (graphics_modes[i++].grafID != 0); 
-
-  EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NICE,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-
-  EnableMenuItem(hm, IDM_OPTIONS_SAVER,
+	EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NONE,
+	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+	EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_OLD,
+	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+	EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_ADAM,
+	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+	EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NOMAD,
+	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+	EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_DAVID,
+	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+        EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NICE,
+                       MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+        EnableMenuItem(hm, IDM_OPTIONS_TRPTILE,
+                       MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+        EnableMenuItem(hm, IDM_OPTIONS_DBLTILE,
+                       MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+	EnableMenuItem(hm, IDM_OPTIONS_BIGTILE,
+	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+	EnableMenuItem(hm, IDM_OPTIONS_SAVER,
 	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
 	EnableMenuItem(hm, IDM_OPTIONS_LOW_PRIORITY,
 	               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
 
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_1x1,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_2x1,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_2x2,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_3x1,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_3x3,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_4x2,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_4x4,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_6x3,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_6x6,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_8x4,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_8x8,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_16x8,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-  EnableMenuItem(hm, IDM_OPTIONS_TILE_16x16,
-                 MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-
-
 	/* Menu "Options", Item "Map" */
 	if (inkey_flag && initialized && (use_graphics != GRAPHICS_NONE))
 		EnableMenuItem(GetMenu(data[0].w), IDM_OPTIONS_MAP, MF_BYCOMMAND | MF_ENABLED);
@@ -3186,79 +2925,25 @@
 		               MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
 
 	/* Menu "Options", update all */
-  i=0;
-  do {
-	  CheckMenuItem(hm, graphics_modes[i].menuItem,
-	                (arg_graphics == graphics_modes[i].grafID ? MF_CHECKED : MF_UNCHECKED));
-  } while (graphics_modes[i++].grafID != 0); 
-
-  CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_NICE,
-                (arg_graphics_nice ? MF_CHECKED : MF_UNCHECKED));
-
-  if ((tile_width == 1) && (tile_height == 1))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_1x1, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_1x1, MF_UNCHECKED);
-
-  if ((tile_width == 2) && (tile_height == 1))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_2x1, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_2x1, MF_UNCHECKED);
-
-  if ((tile_width == 2) && (tile_height == 2))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_2x2, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_2x2, MF_UNCHECKED);
-
-  if ((tile_width == 3) && (tile_height == 1))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_3x1, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_3x1, MF_UNCHECKED);
-
-  if ((tile_width == 3) && (tile_height == 3))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_3x3, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_3x3, MF_UNCHECKED);
-
-  if ((tile_width == 4) && (tile_height == 2))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_4x2, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_4x2, MF_UNCHECKED);
-
-  if ((tile_width == 4) && (tile_height == 4))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_4x4, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_4x4, MF_UNCHECKED);
-
-  if ((tile_width == 6) && (tile_height == 3))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_6x3, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_6x3, MF_UNCHECKED);
-
-  if ((tile_width == 6) && (tile_height == 6))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_6x6, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_6x6, MF_UNCHECKED);
-
-  if ((tile_width == 8) && (tile_height == 4))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_8x4, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_8x4, MF_UNCHECKED);
-
-  if ((tile_width == 8) && (tile_height == 8))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_8x8, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_8x8, MF_UNCHECKED);
-
-  if ((tile_width == 16) && (tile_height == 8))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_16x8, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_16x8, MF_UNCHECKED);
-
-  if ((tile_width == 16) && (tile_height == 16))
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_16x16, MF_CHECKED);
-  else
-    CheckMenuItem(hm, IDM_OPTIONS_TILE_16x16, MF_UNCHECKED);
+	CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_NONE,
+	              (arg_graphics == GRAPHICS_NONE ? MF_CHECKED : MF_UNCHECKED));
+	CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_OLD,
+	              (arg_graphics == GRAPHICS_ORIGINAL ? MF_CHECKED : MF_UNCHECKED));
+	CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_ADAM,
+	              (arg_graphics == GRAPHICS_ADAM_BOLT ? MF_CHECKED : MF_UNCHECKED));
+	CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_NOMAD,
+	              (arg_graphics == GRAPHICS_NOMAD ? MF_CHECKED : MF_UNCHECKED));
+	CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_DAVID,
+	              (arg_graphics == GRAPHICS_DAVID_GERVAIS ? MF_CHECKED : MF_UNCHECKED));
+
+        CheckMenuItem(hm, IDM_OPTIONS_GRAPHICS_NICE,
+                      (arg_graphics_nice ? MF_CHECKED : MF_UNCHECKED));
+        CheckMenuItem(hm, IDM_OPTIONS_TRPTILE,
+                      (tile_height == 3 ? MF_CHECKED : MF_UNCHECKED));
+        CheckMenuItem(hm, IDM_OPTIONS_DBLTILE,
+                      (tile_height == 2 ? MF_CHECKED : MF_UNCHECKED));
+	CheckMenuItem(hm, IDM_OPTIONS_BIGTILE,
+	              (tile_width == (2 * tile_height) ? MF_CHECKED : MF_UNCHECKED));
 
 #ifdef USE_SAVER
 	CheckMenuItem(hm, IDM_OPTIONS_SAVER,
@@ -3272,28 +2957,16 @@
 	if (inkey_flag && initialized)
 	{
 		/* Menu "Options", Item "Graphics" */
-    i=0;
-    do {
-	    EnableMenuItem(hm, graphics_modes[i].menuItem,MF_ENABLED );
-    } while (graphics_modes[i++].grafID != 0); 
-
+		EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NONE, MF_ENABLED);
+		EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_OLD, MF_ENABLED);
+		EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_ADAM, MF_ENABLED);
+		EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NOMAD, MF_ENABLED);
+		EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_DAVID, MF_ENABLED);
 		EnableMenuItem(hm, IDM_OPTIONS_GRAPHICS_NICE, MF_ENABLED);
-
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_1x1, MF_ENABLED);
-		EnableMenuItem(hm, IDM_OPTIONS_TILE_2x1, MF_ENABLED);
-		EnableMenuItem(hm, IDM_OPTIONS_TILE_2x2, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_3x1, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_3x3, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_4x2, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_4x4, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_6x3, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_6x6, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_8x4, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_8x8, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_16x8, MF_ENABLED);
-    EnableMenuItem(hm, IDM_OPTIONS_TILE_16x16, MF_ENABLED);
-
-  }
+		EnableMenuItem(hm, IDM_OPTIONS_TRPTILE, MF_ENABLED);
+		EnableMenuItem(hm, IDM_OPTIONS_DBLTILE, MF_ENABLED);
+		EnableMenuItem(hm, IDM_OPTIONS_BIGTILE, MF_ENABLED);
+	}
 #endif /* USE_GRAPHICS */
 
 #ifdef USE_SAVER
@@ -3808,66 +3481,91 @@
 			break;
 		}
 
-
-    case IDM_OPTIONS_GRAPHICS_NICE:
-    {
-      /* Paranoia */
-      if (!inkey_flag || !initialized)
+		case IDM_OPTIONS_GRAPHICS_NONE:
+		{
+			/* Paranoia */
+			if (!inkey_flag || !initialized)
 			{
 				plog("You may not do that right now.");
-        break;
-      }
+				break;
+			}
 
-      /* Toggle "arg_graphics_nice" */
-      arg_graphics_nice = !arg_graphics_nice;
+			/* Toggle "arg_graphics" */
+			if (arg_graphics != GRAPHICS_NONE)
+			{
+				arg_graphics = GRAPHICS_NONE;
 
-      /* React to changes */
-      Term_xtra_win_react();
+				/* React to changes */
+				Term_xtra_win_react();
 
-      /* Hack -- Force redraw */
-      Term_key_push(KTRL('R'));
+				/* Hack -- Force redraw */
+				Term_key_push(KTRL('R'));
+			}
 
-      break;
-    }
+			break;
+		}
 
-    case IDM_OPTIONS_GRAPHICS_NONE:
 		case IDM_OPTIONS_GRAPHICS_OLD:
+		{
+			/* Paranoia */
+			if (!inkey_flag || !initialized)
+			{
+				plog("You may not do that right now.");
+				break;
+			}
+
+			/* Toggle "arg_graphics" */
+			if (arg_graphics != GRAPHICS_ORIGINAL)
+			{
+				arg_graphics = GRAPHICS_ORIGINAL;
+
+				/* React to changes */
+				Term_xtra_win_react();
+
+				/* Hack -- Force redraw */
+				Term_key_push(KTRL('R'));
+			}
+
+			break;
+		}
+
 		case IDM_OPTIONS_GRAPHICS_ADAM:
+		{
+			/* Paranoia */
+			if (!inkey_flag || !initialized)
+			{
+				plog("You may not do that right now.");
+				break;
+			}
+
+			/* Toggle "arg_graphics" */
+			if (arg_graphics != GRAPHICS_ADAM_BOLT)
+			{
+				arg_graphics = GRAPHICS_ADAM_BOLT;
+
+				/* React to changes */
+				Term_xtra_win_react();
+
+				/* Hack -- Force redraw */
+				Term_key_push(KTRL('R'));
+			}
+
+			break;
+		}
+
 		case IDM_OPTIONS_GRAPHICS_NOMAD:
-		case IDM_OPTIONS_GRAPHICS_DAVID:
-		case IDM_OPTIONS_GRAPHICS_SHOCK:
-		case IDM_OPTIONS_GRAPHICS_EXTRA:
 		{
-      int selected_mode = 0;
 			/* Paranoia */
 			if (!inkey_flag || !initialized)
 			{
 				plog("You may not do that right now.");
 				break;
 			}
-      i=0;
-      do {
-        if (graphics_modes[i].menuItem == wCmd) {
-			    selected_mode = graphics_modes[i].grafID;
-          overdraw = graphics_modes[i].overdrawCol;
-          if (graphics_modes[i].file) {
-            strncpy(tileset,graphics_modes[i].file,32);
-          } else {
-            tileset[0] = 0;
-          }
-          if (graphics_modes[i].file) {
-            strncpy(tilegraf,graphics_modes[i].name,8);
-          } else {
-            tilegraf[0] = 0;
-          }
-          break;
-        }
-      } while (graphics_modes[i++].grafID != 0); 
 
 			/* Toggle "arg_graphics" */
-			if (arg_graphics != selected_mode)
+			if (arg_graphics != GRAPHICS_NOMAD)
 			{
-				arg_graphics = selected_mode;
+				arg_graphics = GRAPHICS_NOMAD;
 
 				/* React to changes */
 				Term_xtra_win_react();
@@ -3878,120 +3576,157 @@
 
 			break;
 		}
-    case IDM_OPTIONS_TILE_1x1:
-    case IDM_OPTIONS_TILE_2x1:
-    case IDM_OPTIONS_TILE_2x2:
-    case IDM_OPTIONS_TILE_3x1:
-    case IDM_OPTIONS_TILE_3x3:
-    case IDM_OPTIONS_TILE_4x2:
-    case IDM_OPTIONS_TILE_4x4:
-    case IDM_OPTIONS_TILE_6x3:
-    case IDM_OPTIONS_TILE_6x6:
-    case IDM_OPTIONS_TILE_8x4:
-    case IDM_OPTIONS_TILE_8x8:
-    case IDM_OPTIONS_TILE_16x8:
-    case IDM_OPTIONS_TILE_16x16:
-    {
-      /* Paranoia */
-      if (!inkey_flag || !initialized)
-      {
-              plog("You may not do that right now.");
-              break;
-      }
-	    switch (wCmd)
-	    {
-        case IDM_OPTIONS_TILE_1x1:
-          {
-			      tile_width = 1;
-			      tile_height = 1;
-            break;
-          }
-        case IDM_OPTIONS_TILE_2x1:
-          {
-			      tile_width = 2;
-			      tile_height = 1;
-            break;
-          }
-        case IDM_OPTIONS_TILE_2x2:
-          {
-			      tile_width = 2;
-			      tile_height = 2;
-            break;
-          }
-        case IDM_OPTIONS_TILE_3x1:
-          {
-			      tile_width = 3;
-			      tile_height = 1;
-            break;
-          }
-        case IDM_OPTIONS_TILE_3x3:
-          {
-			      tile_width = 3;
-			      tile_height = 3;
-            break;
-          }
-        case IDM_OPTIONS_TILE_4x2:
-          {
-			      tile_width = 4;
-			      tile_height = 2;
-            break;
-          }
-        case IDM_OPTIONS_TILE_4x4:
-          {
-			      tile_width = 4;
-			      tile_height = 4;
-            break;
-          }
-        case IDM_OPTIONS_TILE_6x3:
-          {
-			      tile_width = 6;
-			      tile_height = 3;
-            break;
-          }
-        case IDM_OPTIONS_TILE_6x6:
-          {
-			      tile_width = 6;
-			      tile_height = 6;
-            break;
-          }
-        case IDM_OPTIONS_TILE_8x4:
-          {
-			      tile_width = 8;
-			      tile_height = 4;
-            break;
-          }
-        case IDM_OPTIONS_TILE_8x8:
-          {
-			      tile_width = 8;
-			      tile_height = 8;
-            break;
-          }
-        case IDM_OPTIONS_TILE_16x8:
-          {
-			      tile_width = 16;
-			      tile_height = 8;
-            break;
-          }
-        case IDM_OPTIONS_TILE_16x16:
-          {
-			      tile_width = 16;
-			      tile_height = 16;
-            break;
-          }
-      }
 
-      /* Set flag */
-      change_tilesize = TRUE;
+		case IDM_OPTIONS_GRAPHICS_DAVID:
+		{
+			/* Paranoia */
+			if (!inkey_flag || !initialized)
+			{
+				plog("You may not do that right now.");
+				break;
+			}
 
-      /* React to changes */
-      Term_xtra_win_react();
+			/* Toggle "arg_graphics" */
+			if (arg_graphics != GRAPHICS_DAVID_GERVAIS)
+			{
+				arg_graphics = GRAPHICS_DAVID_GERVAIS;
 
-      /* Hack -- Force redraw */
-      Term_key_push(KTRL('R'));
+				/* React to changes */
+				Term_xtra_win_react();
+
+				/* Hack -- Force redraw */
+				Term_key_push(KTRL('R'));
+			}
 
 			break;
 		}
 
+                case IDM_OPTIONS_GRAPHICS_NICE:
+                {
+                        /* Paranoia */
+                        if (!inkey_flag || !initialized)
+			{
+				plog("You may not do that right now.");
+                                break;
+                        }
+
+                        /* Toggle "arg_graphics_nice" */
+                        arg_graphics_nice = !arg_graphics_nice;
+
+                        /* React to changes */
+                        Term_xtra_win_react();
+
+                        /* Hack -- Force redraw */
+                        Term_key_push(KTRL('R'));
+
+                        break;
+                }
+
+                case IDM_OPTIONS_TRPTILE:
+                {
+                        /* Paranoia */
+                        if (!inkey_flag || !initialized)
+                        {
+                                plog("You may not do that right now.");
+                                break;
+                        }
+
+                        /* Reduce... */
+			if (tile_height == 3)
+			{
+			        tile_width /= 3;
+			        tile_height /= 3;
+			}
+
+                        /* ...or increase */
+			else
+			{
+			        tile_width /= tile_height;
+			        tile_width *= 3;
+			        tile_height = 3;
+			}
+
+
+                        /* Set flag */
+                        change_tilesize = TRUE;
+
+                        /* React to changes */
+                        Term_xtra_win_react();
+
+                        /* Hack -- Force redraw */
+                        Term_key_push(KTRL('R'));
+
+                        break;
+                        }
+
+                case IDM_OPTIONS_DBLTILE:
+                                {
+                        /* Paranoia */
+                        if (!inkey_flag || !initialized)
+                                        {
+                                plog("You may not do that right now.");
+                                break;
+                                }
+
+                        /* Reduce... */
+			if (tile_height == 2)
+			{
+			        tile_width /= 2;
+			        tile_height /= 2;
+			}
+
+                        /* ...or increase */
+			else
+			{
+			        tile_width /= tile_height;
+			        tile_height = 2;
+			        tile_width *= tile_height;
+			}
+
+                        /* Set flag */
+                        change_tilesize = TRUE;
+
+                        /* React to changes */
+                        Term_xtra_win_react();
+
+                        /* Hack -- Force redraw */
+                        Term_key_push(KTRL('R'));
+
+                        break;
+                                                }
+
+		case IDM_OPTIONS_BIGTILE:
+		{
+			/* Paranoia */
+			if (!inkey_flag || !initialized)
+			{
+				plog("You may not do that right now.");
+				break;
+			}
+
+                        /* Reduce... */
+			if (tile_height != tile_width)
+			{
+			        tile_width = tile_height;
+			}
+
+                        /* ...or increase */
+			else
+			{
+			        tile_width *= 2;
+			}
+
+                       /* Set flag */
+                        change_tilesize = TRUE;
+
+                        /* React to changes */
+                        Term_xtra_win_react();
+
+ 			/* Mega-Hack : Redraw screen */
+			Term_key_push(KTRL('R'));
+
+			break;
+		}
 
 #ifdef USE_SAVER
 
@@ -4564,11 +4299,7 @@
 
 
 	/* Acquire proper "term_data" info */
-#ifdef _WIN64
 	td = (term_data *)GetWindowLongPtr(hWnd, GWLP_USERDATA);
-#else
-	td = (term_data *)GetWindowLongPtr(hWnd, GWLP_USERDATA);
-#endif
 
 	/* Process message */
 	switch (uMsg)
@@ -5022,10 +4753,10 @@
 	/* Free strings */
 	string_free(ini_file);
 	string_free(argv0);
-	//string_free(ANGBAND_DIR_XTRA_FONT);
-	//string_free(ANGBAND_DIR_XTRA_GRAF);
-	//string_free(ANGBAND_DIR_XTRA_SOUND);
-	//string_free(ANGBAND_DIR_XTRA_HELP);
+	string_free(ANGBAND_DIR_XTRA_FONT);
+	string_free(ANGBAND_DIR_XTRA_GRAF);
+	string_free(ANGBAND_DIR_XTRA_SOUND);
+	string_free(ANGBAND_DIR_XTRA_HELP);
 
 #ifdef HAS_CLEANUP
 	cleanup_angband();
@@ -5155,14 +4886,12 @@
 	validate_file(path);
 
 
-  if (ANGBAND_DIR_XTRA_FONT == NULL)
-  {
-	  /* Build the "font" path */
-	  path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "font");
-
-	  /* Allocate the path */
-	  ANGBAND_DIR_XTRA_FONT = string_make(path);
-  }
+	/* Build the "font" path */
+	path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "font");
+
+	/* Allocate the path */
+	ANGBAND_DIR_XTRA_FONT = string_make(path);
+
 	/* Validate the "font" directory */
 	validate_dir(ANGBAND_DIR_XTRA_FONT);
 
@@ -5175,14 +4904,12 @@
 
 #ifdef USE_GRAPHICS
 
-  if (ANGBAND_DIR_XTRA_GRAF == NULL)
-  {
-	  /* Build the "graf" path */
-	  path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "graf");
-
-	  /* Allocate the path */
-	  ANGBAND_DIR_XTRA_GRAF = string_make(path);
-  }
+	/* Build the "graf" path */
+	path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "graf");
+
+	/* Allocate the path */
+	ANGBAND_DIR_XTRA_GRAF = string_make(path);
+
 	/* Validate the "graf" directory */
 	validate_dir(ANGBAND_DIR_XTRA_GRAF);
 
@@ -5191,27 +4918,23 @@
 
 #ifdef USE_SOUND
 
-  if (ANGBAND_DIR_XTRA_SOUND == NULL)
-  {
-	  /* Build the "sound" path */
-	  path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "sound");
-
-	  /* Allocate the path */
-	  ANGBAND_DIR_XTRA_SOUND = string_make(path);
-  }
+	/* Build the "sound" path */
+	path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "sound");
+
+	/* Allocate the path */
+	ANGBAND_DIR_XTRA_SOUND = string_make(path);
+
 	/* Validate the "sound" directory */
 	validate_dir(ANGBAND_DIR_XTRA_SOUND);
 
 #endif /* USE_SOUND */
 
-  if (ANGBAND_DIR_XTRA_HELP == NULL)
-  {
-	  /* Build the "help" path */
-	  path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "help");
-
-	  /* Allocate the path */
-	  ANGBAND_DIR_XTRA_HELP = string_make(path);
-  }
+	/* Build the "help" path */
+	path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "help");
+
+	/* Allocate the path */
+	ANGBAND_DIR_XTRA_HELP = string_make(path);
+
 #if 0
 	/* Validate the "help" directory */
 	validate_dir(ANGBAND_DIR_XTRA_HELP);
