@Override
	public void applySignature() {
		// FRLG
		if (romEntry.romType == RomType_FRLG) {
			// intro sprites : first 251 only due to size
			int introPokemon = RandomSource.nextInt(251) + 1;
			int frontSprites = readPointer(0x128);
			int palettes = readPointer(0x130);

			rom[romEntry.getValue("IntroCryOffset")] = (byte) introPokemon;
			rom[romEntry.getValue("IntroOtherOffset")] = (byte) introPokemon;

			int spriteBase = romEntry.getValue("IntroSpriteOffset");
			writePointer(spriteBase, frontSprites + introPokemon * 8);
			writePointer(spriteBase + 4, palettes + introPokemon * 8);
		} else if (romEntry.romType == RomType_Ruby
				|| romEntry.romType == RomType_Sapp) {
			// intro sprites : hoenn pokes only
			int introPokemon = pokeNumTo3GIndex(RandomSource.nextInt(135) + 252);
			int frontSprites = romEntry.getValue("PokemonFrontSprites");
			int palettes = romEntry.getValue("PokemonNormalPalettes");
			int cryCommand = romEntry.getValue("IntroCryOffset");
			int otherCommand = romEntry.getValue("IntroOtherOffset");

			if (introPokemon > 255) {
				rom[cryCommand] = (byte) 0xFF;
				rom[cryCommand + 1] = 0x20;

				rom[cryCommand + 2] = (byte) (introPokemon - 255);
				rom[cryCommand + 3] = 0x30;

				rom[otherCommand] = (byte) 0xFF;
				rom[otherCommand + 1] = 0x24;

				rom[otherCommand + 2] = (byte) (introPokemon - 255);
				rom[otherCommand + 3] = 0x34;
			} else {
				rom[cryCommand] = (byte) introPokemon;
				rom[cryCommand + 1] = 0x20;

				writeWord(cryCommand + 2, 0x46C0);

				rom[otherCommand] = (byte) introPokemon;
				rom[otherCommand + 1] = 0x20;

				writeWord(otherCommand + 2, 0x46C0);
			}

			writePointer(romEntry.getValue("IntroSpriteOffset"), frontSprites
					+ introPokemon * 8);
			writePointer(romEntry.getValue("IntroPaletteOffset"), palettes
					+ introPokemon * 8);
		} else {
			// Emerald, intro sprite: any Pokemon.
			int introPokemon = pokeNumTo3GIndex(randomPokemon().number);
			writeWord(romEntry.getValue("IntroSpriteOffset"), introPokemon);
			writeWord(romEntry.getValue("IntroCryOffset"), introPokemon);
		}

	}