@Override
	public Map<Pokemon, List<MoveLearnt>> getMovesLearnt() {
		Map<Pokemon, List<MoveLearnt>> movesets = new TreeMap<Pokemon, List<MoveLearnt>>();
		int baseOffset = romEntry.getValue("PokemonMovesets");
		for (int i = 1; i <= 411; i++) {
			int offsToPtr = baseOffset + (i - 1) * 4;
			int moveDataLoc = readPointer(offsToPtr);
			if (i >= 252 && i <= 276) {
				continue;
			}
			Pokemon pkmn = pokes[poke3GIndexToNum(i)];
			List<MoveLearnt> moves = new ArrayList<MoveLearnt>();
			while ((rom[moveDataLoc] & 0xFF) != 0xFF
					|| (rom[moveDataLoc + 1] & 0xFF) != 0xFF) {
				int move = (rom[moveDataLoc] & 0xFF);
				int level = (rom[moveDataLoc + 1] & 0xFE) >> 1;
				if ((rom[moveDataLoc + 1] & 0x01) == 0x01) {
					move += 256;
				}
				MoveLearnt ml = new MoveLearnt();
				ml.level = level;
				ml.move = move;
				moves.add(ml);
				moveDataLoc += 2;
			}
			movesets.put(pkmn, moves);
		}
		return movesets;
	}