void update1 (Graphics g, int i, int j)
	{
		if (i < 0 || i >= S || j < 0 || j >= S) return;
		char c[] = new char[1];
		int n;
		int xi = O + OTU + i * D;
		int xj = O + OTU + j * D;
		if (P.color(i, j) > 0 || P.color(i, j) < 0 && GF.blackOnly())
		{
			if (BlackStone != null)
			{
				g.drawImage(BlackStone, xi - 1, xj - 1, this);
			}
			else
			{
				g.setColor(GF.blackColor());
				g.fillOval(xi + 1, xj + 1, D - 2, D - 2);
				g.setColor(GF.blackSparkleColor());
				g.drawArc(xi + D / 2, xj + D / 4, D / 4, D / 4, 40, 50);
			}
		}
		else if (P.color(i, j) < 0)
		{
			if (WhiteStone != null)
			{
				g.drawImage(WhiteStone, xi - 1, xj - 1, this);
			}
			else
			{
				g.setColor(GF.whiteColor());
				g.fillOval(xi + 1, xj + 1, D - 2, D - 2);
				g.setColor(GF.whiteSparkleColor());
				g.drawArc(xi + D / 2, xj + D / 4, D / 4, D / 4, 40, 50);
			}
		}
		if (P.marker(i, j) != Field.NONE)
		{
			if (GF.bwColor())
			{
				if (P.color(i, j) >= 0)
					g.setColor(Color.white);
				else g.setColor(Color.black);
			}
			else g.setColor(GF.markerColor(P.color(i, j)));
			int h = D / 4;
			switch (P.marker(i, j))
			{
				case Field.CIRCLE:
					g.drawOval(xi + D / 2 - h, xj + D / 2 - h, 2 * h, 2 * h);
					break;
				case Field.CROSS:
					g.drawLine(xi + D / 2 - h, xj + D / 2 - h, xi + D / 2 + h,
						xj + D / 2 + h);
					g.drawLine(xi + D / 2 + h, xj + D / 2 - h, xi + D / 2 - h,
						xj + D / 2 + h);
					break;
				case Field.TRIANGLE:
					g.drawLine(xi + D / 2, xj + D / 2 - h, xi + D / 2 - h, xj
						+ D / 2 + h);
					g.drawLine(xi + D / 2, xj + D / 2 - h, xi + D / 2 + h, xj
						+ D / 2 + h);
					g.drawLine(xi + D / 2 - h, xj + D / 2 + h, xi + D / 2 + h,
						xj + D / 2 + h);
					break;
				default:
					g.drawRect(xi + D / 2 - h, xj + D / 2 - h, 2 * h, 2 * h);
			}
		}
		if (P.letter(i, j) != 0)
		{
			if (GF.bwColor())
			{
				if (P.color(i, j) >= 0)
					g.setColor(Color.white);
				else g.setColor(Color.black);
			}
			else g.setColor(GF.labelColor(P.color(i, j)));
			c[0] = (char)('a' + P.letter(i, j) - 1);
			String hs = new String(c);
			int w = fontmetrics.stringWidth(hs) / 2;
			int h = fontmetrics.getAscent() / 2 - 1;
			g.setFont(font);
			g.drawString(hs, xi + D / 2 - w, xj + D / 2 + h);
		}
		else if (P.haslabel(i, j))
		{
			if (GF.bwColor())
			{
				if (P.color(i, j) >= 0)
					g.setColor(Color.white);
				else g.setColor(Color.black);
			}
			else g.setColor(GF.labelColor(P.color(i, j)));
			String hs = P.label(i, j);
			int w = fontmetrics.stringWidth(hs) / 2;
			int h = fontmetrics.getAscent() / 2 - 1;
			g.setFont(font);
			g.drawString(hs, xi + D / 2 - w, xj + D / 2 + h);
		}
		else if (P.tree(i, j) != null && !VHide)
		{
			if (GF.bwColor())
				g.setColor(Color.white);
			else g.setColor(Color.green);
			g.drawLine(xi + D / 2 - D / 6, xj + D / 2, xi + D / 2 + D / 6, xj
				+ D / 2);
			g.drawLine(xi + D / 2, xj + D / 2 - D / 6, xi + D / 2, xj + D / 2
				+ D / 6);
		}
		if (sendi == i && sendj == j)
		{
			if (GF.bwColor())
			{
				if (P.color(i, j) > 0)
					g.setColor(Color.white);
				else g.setColor(Color.black);
			}
			else g.setColor(Color.gray);
			g.drawLine(xi + D / 2 - 1, xj + D / 2, xi + D / 2 + 1, xj + D / 2);
			g.drawLine(xi + D / 2, xj + D / 2 - 1, xi + D / 2, xj + D / 2 + 1);
		}
		if (lasti == i && lastj == j && showlast)
		{
			if (GF.lastNumber() || Range >= 0 && P.number(i, j) > Range)
			{
				if (P.color(i, j) > 0)
					g.setColor(Color.white);
				else g.setColor(Color.black);
				String hs = "" + P.number(i, j) % 100;
				int w = fontmetrics.stringWidth(hs) / 2;
				int h = fontmetrics.getAscent() / 2 - 1;
				g.setFont(font);
				g.drawString(hs, xi + D / 2 - w, xj + D / 2 + h);
			}
			else
			{
				if (GF.bwColor())
				{
					if (P.color(i, j) > 0)
						g.setColor(Color.white);
					else g.setColor(Color.black);
				}
				else g.setColor(Color.red);
				g.drawLine(xi + D / 2 - D / 6, xj + D / 2, xi + D / 2 + D / 6,
					xj + D / 2);
				g.drawLine(xi + D / 2, xj + D / 2 - D / 6, xi + D / 2, xj + D
					/ 2 + D / 6);
			}
		}
		else if (P.color(i, j) != 0 && Range >= 0 && P.number(i, j) > Range)
		{
			if (P.color(i, j) > 0)
				g.setColor(Color.white);
			else g.setColor(Color.black);
			String hs = "" + P.number(i, j) % 100;
			int w = fontmetrics.stringWidth(hs) / 2;
			int h = fontmetrics.getAscent() / 2 - 1;
			g.setFont(font);
			g.drawString(hs, xi + D / 2 - w, xj + D / 2 + h);
		}
	}