public void printInfo(StateBuffer in) {
		if(in.size() == 0) {
			System.out.println("StateBuffer EMPTY!");
			return;
		}
		curGb.restore(in.getStates().iterator().next()); // restore some state
		Util.runToNextInputFrame(); // skip to menu, ensuring mons are loaded

		int enemyHP = Util.getMemoryWordBE(curGb.pokemon.fightEnemyMonHPAddress);
		int playerHP = Util.getMemoryWordBE(curGb.pokemon.fightBattleMonHPAddress);

		System.out.println("Enemy HP: "+enemyHP);
		System.out.print("Enemy stats:");
		for(int i=0;i<5;i++) {
			int stat = DamageCalc.getStat(false, i, false);
			int ostat = DamageCalc.getStat(false, i, true);
			System.out.print(" " + stat);
			if(ostat != stat)
				System.out.print("("+ostat+")");
		}
		System.out.println();
		for(int i=0;i<4;i++)
			DamageCalc.printMoveDebugInfo(false, i);

		System.out.println();

		System.out.println("Own HP: "+playerHP);
		System.out.print("Own stats:");
		for(int i=0;i<5;i++) {
			int stat = DamageCalc.getStat(true, i, false);
			int ostat = DamageCalc.getStat(true, i, true);
			System.out.print(" " + stat);
			if(ostat != stat)
				System.out.print("("+ostat+")");
		}
		System.out.println();
		for(int i=0;i<4;i++)
			DamageCalc.printMoveDebugInfo(true, i);
	}