@Override
	public void setMovesLearnt(Map<Pokemon, List<MoveLearnt>> movesets) {
		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];
			List<MoveLearnt> ourMoves = movesets.get(pkmn);
			int movenum = 0;
			// Skip over evolution data
			while (rom[realPointer] != 0) {
				if (rom[realPointer] == 5) {
					realPointer += 4;
				} else {
					realPointer += 3;
				}
			}
			realPointer++;
			while (rom[realPointer] != 0 && movenum < ourMoves.size()) {
				rom[realPointer] = (byte) (ourMoves.get(movenum).level);
				rom[realPointer + 1] = (byte) (ourMoves.get(movenum).move);
				realPointer += 2;
				movenum++;
			}
			// Make sure we finish off the moveset
			rom[realPointer] = 0;
		}
	}