@Override
	public void loadedRom() {
		for (RomEntry re : roms) {
			if (romCode(rom, re.romCode) && (rom[0xBC] & 0xFF) == re.version) {
				romEntry = re;
				break;
			}
		}

		tb = new String[256];
		d = new HashMap<String, Byte>();

		// Pokemon names offset
		if (romEntry.romType == RomType_Ruby
				|| romEntry.romType == RomType_Sapp) {
			int baseNomOffset = find(rom, "30B50025084CC8F7");
			romEntry.entries
					.put("PokemonNames", readPointer(baseNomOffset - 4));
		} else {
			romEntry.entries.put("PokemonNames", readPointer(0x144));
			romEntry.entries.put("MoveNames", readPointer(0x148));
			romEntry.entries.put("AbilityNames", readPointer(0x1C0));
			romEntry.entries.put("ItemData", readPointer(0x1C8));
			romEntry.entries.put("MoveData", readPointer(0x1CC) + 0xC);
		}

		loadTextTable(romEntry.tableFile);
		loadPokemonStats();
		pokemonList = Arrays.asList(pokes);
		loadMoves();

		// Get wild Pokemon offset
		int baseWPOffset = findMultiple(rom, "0348048009E00000FFFF0000").get(0);
		romEntry.entries.put("WildPokemon", readPointer(baseWPOffset + 12));

		// map banks
		int baseMapsOffset = findMultiple(rom, "80180068890B091808687047").get(
				0);
		romEntry.entries.put("MapHeaders", readPointer(baseMapsOffset + 12));

		// map labels
		if (romEntry.romType == RomType_FRLG) {
			int baseMLOffset = find(rom, "AC470000AE470000B0470000");
			romEntry.entries.put("MapLabels", readPointer(baseMLOffset + 12));
		} else {
			int baseMLOffset = find(rom, "C078288030BC01BC00470000");
			romEntry.entries.put("MapLabels", readPointer(baseMLOffset + 12));
		}

		mapLoadingDone = false;
		loadAbilityNames();
		loadItemNames();

	}