@Override
	public boolean doMove() {
		int curIndex = curGb.readMemory(curGb.pokemon.fightCurMoveNumAddress);
		//System.out.println("current move index "+curIndex+", goal position is "+goalIndex);

		int stepsDown = (goalIndex + numOwnMoves - curIndex) % numOwnMoves;
		int stepsUp = (curIndex + numOwnMoves - goalIndex) % numOwnMoves;
		if(stepsDown < stepsUp) {
			//System.out.println("taking "+stepsDown+" steps down");
			while(stepsDown-->0)
				new EflPressButton(Move.DOWN, PressMetric.PRESSED).execute();
		} else if(stepsUp > 0) {
			//System.out.println("taking "+stepsUp+" steps up");
			while(stepsUp-->0)
				new EflPressButton(Move.UP, PressMetric.PRESSED).execute();
		}
		//Thread.sleep(1000);
		return true;
	}