public void run()
	{
		title.titleMusic.loop();
		while(titleScreen)
		{
			repaint();
			frames++;
      		framerateManager();
      		try
      		{
      			Thread.sleep(slp);
      		}
      		catch(Exception ignored){}
		}

		title.titleMusic.stop();
		repaint();

		loadPokemonImages();
		launchTime=System.currentTimeMillis();
		if(file.isDirectory())
		load();
		else
		{
			createCurrentArea();
			do
			{
				name =(JOptionPane.showInputDialog(null, "What is your name? (<7 chars)", name));
			}
			while(name==null);

			if(name.length()>7)
				name=name.substring(0,7);

			do
			{
				rivalName =(JOptionPane.showInputDialog(null, "What is your RIVAL's name? (<7 chars)", rivalName));
			}
			while(rivalName==null);

			if(rivalName.length()>7)
				rivalName=rivalName.substring(0,7);

			String starter="Type your starter!";
			while(starter==null||(!starter.equalsIgnoreCase("Bulbasaur")&&!starter.equalsIgnoreCase("Charmander")&&!starter.equalsIgnoreCase("Squirtle")))
			{
				starter =(JOptionPane.showInputDialog(null, "Bulbasaur, Charmander, or Squirtle?", starter));
			}

			if(starter.equalsIgnoreCase("Bulbasaur"))
			{
				partyPokemon[0]=new Pokemon(Pokemon.Species.BULBASAUR);
				Pokedex.seen(partyPokemon[0].pokedexNumber-1);
				Pokedex.caught(partyPokemon[0].pokedexNumber-1);
			}
			else if(starter.equalsIgnoreCase("Charmander"))
			{
				partyPokemon[0]=new Pokemon(Pokemon.Species.CHARMANDER);
				Pokedex.seen(partyPokemon[0].pokedexNumber-1);
				Pokedex.caught(partyPokemon[0].pokedexNumber-1);
			}
			else if(starter.equalsIgnoreCase("Squirtle"))
			{
				partyPokemon[0]=new Pokemon(Pokemon.Species.SQUIRTLE);
				Pokedex.seen(partyPokemon[0].pokedexNumber-1);
				Pokedex.caught(partyPokemon[0].pokedexNumber-1);
			}

			do
			{
				partyPokemon[0].nickname=(JOptionPane.showInputDialog(null, "What is its nickname? (<10 Chars)", partyPokemon[0].nickname));
			}
			while(partyPokemon[0].nickname==null);

			partyPokemon[0].setNickname(partyPokemon[0].nickname);

			partyPokemon[0].originalTrainer=name;
			partyPokemon[0].idNumber=trainerIdNumber;

			Pokedex.seen(partyPokemon[0].pokedexNumber-1);
			Pokedex.caught(partyPokemon[0].pokedexNumber-1);
			
			Inventory.addItem(new Item(Item.Type.TOWN_MAP,1));
			
			if(DONATE)
			{
				Inventory.money=10000;
				Inventory.addItem(new Item(Item.Type.POTION,20));
				Inventory.addItem(new Item(Item.Type.POKE_BALL,20));
				Inventory.addItem(new Item(Item.Type.TM,1,1));
			}

			System.out.println("Could not find save data");
			System.out.println("Creating savedata directory");
			save();
			System.out.println("Starting game...");

		}

		if(DEBUG)
		debug();

		while(true)
		{
			manageTime();
			repaint();
			frames++;
      		framerateManager();

      		if(moving&&!paused&&!onComp)
      			checkMovement();

      		if(trainerEnc&&!paused&&!onComp)
      			beginTrainerBattle();
      		else if(!paused&&!onComp)
      			checkTrainerEncounter();

      		if(performingAction&&!paused&&!onComp)
      		actionHandler();

      		try
      		{
      			Thread.sleep(slp);
      		}
      		catch(Exception e){e.printStackTrace();}
		}
	}