private int readLandEncounters(int offset, List<EncounterSet> areas,
			boolean useTimeOfDay) {
		String[] todNames = new String[] { "Morning", "Day", "Night" };
		while ((rom[offset] & 0xFF) != 0xFF) {
			int mapBank = rom[offset] & 0xFF;
			int mapNumber = rom[offset + 1] & 0xFF;
			String mapName = mapNames[mapBank][mapNumber];
			if (useTimeOfDay) {
				for (int i = 0; i < 3; i++) {
					EncounterSet encset = new EncounterSet();
					encset.rate = rom[offset + 2 + i] & 0xFF;
					encset.displayName = mapName + " Grass/Cave ("
							+ todNames[i] + ")";
					for (int j = 0; j < 7; j++) {
						Encounter enc = new Encounter();
						enc.level = rom[offset + 5 + (i * 14) + (j * 2)] & 0xFF;
						enc.maxLevel = 0;
						enc.pokemon = pokes[rom[offset + 5 + (i * 14) + (j * 2)
								+ 1] & 0xFF];
						encset.encounters.add(enc);
					}
					areas.add(encset);
				}
			} else {
				// Use Day only
				EncounterSet encset = new EncounterSet();
				encset.rate = rom[offset + 3] & 0xFF;
				encset.displayName = mapName + " Grass/Cave";
				for (int j = 0; j < 7; j++) {
					Encounter enc = new Encounter();
					enc.level = rom[offset + 5 + 14 + (j * 2)] & 0xFF;
					enc.maxLevel = 0;
					enc.pokemon = pokes[rom[offset + 5 + 14 + (j * 2) + 1] & 0xFF];
					encset.encounters.add(enc);
				}
				areas.add(encset);
			}
			offset += 47;
		}
		return offset + 1;
	}