private void generateMoveList() {
		moveList = new ArrayList<Integer>();
		int curX = 0, curY = 0;
		boolean upperCase = true;
		for(int i=0;i<name.length();i++) {
			char c = name.charAt(i);
			int newX = getCharX(c);
			int newY = getCharY(c);
			if(newX == -1 || newY == -1)
				throw new RuntimeException("invalid character "+c+" found");
			boolean newUpperCase = !isLowerCase(c);
			boolean caseSwitchNeeded = (newUpperCase && !upperCase) || (!newUpperCase && upperCase);
			generateMoves(curX, curY, newX, newY, caseSwitchNeeded);
			moveList.add(Move.A);
			if(caseSwitchNeeded)
				upperCase = !upperCase;
			curX = newX;
			curY = newY;
		}
	}