private EncounterSet readWildArea(int offset, int numOfEntries,
			String setName) {
		EncounterSet thisSet = new EncounterSet();
		thisSet.rate = rom[offset];
		thisSet.displayName = setName;
		// Grab the *real* pointer to data
		int dataOffset = readPointer(offset + 4);
		// Read the entries
		for (int i = 0; i < numOfEntries; i++) {
			// min, max, species, species
			Encounter enc = new Encounter();
			enc.level = rom[dataOffset + i * 4];
			enc.maxLevel = rom[dataOffset + i * 4 + 1];
			try {
				enc.pokemon = pokes[poke3GIndexToNum(readWord(dataOffset + i
						* 4 + 2))];
			} catch (ArrayIndexOutOfBoundsException ex) {
				throw ex;
			}
			thisSet.encounters.add(enc);
		}
		return thisSet;
	}