@Override
	public void setTrainers(List<Trainer> trainerData) {
		int baseOffset = romEntry.getValue("TrainerData");
		int amount = romEntry.getValue("TrainerCount");
		int entryLen = romEntry.getValue("TrainerEntrySize");
		Iterator<Trainer> theTrainers = trainerData.iterator();
		for (int i = 1; i < amount; i++) {
			int trOffset = baseOffset + i * entryLen;
			Trainer tr = theTrainers.next();
			// Write out the data as type 0 to avoid moves & hold items carrying
			// over
			rom[trOffset] = 0;
			rom[trOffset + (entryLen - 8)] = (byte) tr.pokemon.size();
			int pointerToPokes = readPointer(trOffset + (entryLen - 4));
			Iterator<TrainerPokemon> pokes = tr.pokemon.iterator();
			// Pokemon data!
			// if (pokeDataType == 0) {
			// blocks of 8 bytes
			for (int poke = 0; poke < tr.pokemon.size(); poke++) {
				TrainerPokemon thisPoke = pokes.next();
				writeWord(pointerToPokes + poke * 8, thisPoke.AILevel);
				writeWord(pointerToPokes + poke * 8 + 2, thisPoke.level);
				writeWord(pointerToPokes + poke * 8 + 4,
						pokeNumTo3GIndex(thisPoke.pokemon.number));
				writeWord(pointerToPokes + poke * 8 + 6, 0);
			}
		}