@Override
	public Map<Pokemon, List<MoveLearnt>> getMovesLearnt() {
		Map<Pokemon, List<MoveLearnt>> movesets = new TreeMap<Pokemon, List<MoveLearnt>>();
		int pointersOffset = romEntry.getValue("PokemonMovesetsTableOffset");
		for (int i = 1; i <= 251; i++) {
			int pointer = readWord(pointersOffset + (i - 1) * 2);
			int realPointer = calculateOffset(bankOf(pointersOffset), pointer);
			Pokemon pkmn = pokes[i];
			// Skip over evolution data
			while (rom[realPointer] != 0) {
				if (rom[realPointer] == 5) {
					realPointer += 4;
				} else {
					realPointer += 3;
				}
			}
			List<MoveLearnt> ourMoves = new ArrayList<MoveLearnt>();
			realPointer++;
			while (rom[realPointer] != 0) {
				MoveLearnt learnt = new MoveLearnt();
				learnt.level = rom[realPointer] & 0xFF;
				learnt.move = rom[realPointer + 1] & 0xFF;
				ourMoves.add(learnt);
				realPointer += 2;
			}
			movesets.put(pkmn, ourMoves);
		}
		return movesets;
	}