diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs
index 8719949653..f4879bb3f7 100644
--- a/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/BizHawk.Client.EmuHawk/MainForm.cs
@@ -1080,14 +1080,24 @@ namespace BizHawk.Client.EmuHawk
 			}
 		}
 
+		public void Unthrottle()
+		{
+			_unthrottled = true;
+		}
+
+		public void Throttle()
+		{
+			_unthrottled = false;
+		}
+
 		void ThrottleMessage()
 		{
 			string ttype = ":(none)";
-			if(Global.Config.SoundThrottle) { ttype = ":Sound"; }
-			if(Global.Config.VSyncThrottle) { ttype = String.Format(":Vsync{0}",Global.Config.VSync?"[ena]":"[dis]");  }
-			if(Global.Config.ClockThrottle) { ttype = ":Clock"; }
+			if (Global.Config.SoundThrottle) { ttype = ":Sound"; }
+			if (Global.Config.VSyncThrottle) { ttype = string.Format(":Vsync{0}", Global.Config.VSync?"[ena]":"[dis]");  }
+			if (Global.Config.ClockThrottle) { ttype = ":Clock"; }
 			string xtype = _unthrottled ? "Unthrottled" : "Throttled";
-			string msg = string.Format("{0}{1} ",xtype,ttype);
+			string msg = string.Format("{0}{1} ", xtype, ttype);
 
 			GlobalWin.OSD.AddMessage(msg);
 		}
diff --git a/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.Designer.cs b/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.Designer.cs
index 4943344866..27b61bb41f 100644
--- a/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.Designer.cs
+++ b/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.Designer.cs
@@ -29,7 +29,7 @@
 		private void InitializeComponent()
 		{
 			this.BotMenu = new MenuStripEx();
-			this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.FileSubMenu = new System.Windows.Forms.ToolStripMenuItem();
 			this.NewMenuItem = new System.Windows.Forms.ToolStripMenuItem();
 			this.OpenMenuItem = new System.Windows.Forms.ToolStripMenuItem();
 			this.SaveMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -38,7 +38,7 @@
 			this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
 			this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
 			this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-			this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.OptionsSubMenu = new System.Windows.Forms.ToolStripMenuItem();
 			this.countRerecordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
 			this.RunBtn = new System.Windows.Forms.Button();
 			this.BotStatusStrip = new System.Windows.Forms.StatusStrip();
@@ -84,6 +84,7 @@
 			this.label8 = new System.Windows.Forms.Label();
 			this.StartFromSlotBox = new System.Windows.Forms.ComboBox();
 			this.ControlGroupBox = new System.Windows.Forms.GroupBox();
+			this.TurboWhileBottingMenuItem = new System.Windows.Forms.ToolStripMenuItem();
 			this.BotMenu.SuspendLayout();
 			this.BotStatusStrip.SuspendLayout();
 			this.ControlsBox.SuspendLayout();
@@ -98,17 +99,17 @@
 			// 
 			this.BotMenu.ClickThrough = true;
 			this.BotMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.fileToolStripMenuItem,
-            this.optionsToolStripMenuItem});
+            this.FileSubMenu,
+            this.OptionsSubMenu});
 			this.BotMenu.Location = new System.Drawing.Point(0, 0);
 			this.BotMenu.Name = "BotMenu";
 			this.BotMenu.Size = new System.Drawing.Size(587, 24);
 			this.BotMenu.TabIndex = 0;
 			this.BotMenu.Text = "menuStrip1";
 			// 
-			// fileToolStripMenuItem
+			// FileSubMenu
 			// 
-			this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+			this.FileSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.NewMenuItem,
             this.OpenMenuItem,
             this.SaveMenuItem,
@@ -116,10 +117,10 @@
             this.RecentSubMenu,
             this.toolStripSeparator1,
             this.ExitMenuItem});
-			this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
-			this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
-			this.fileToolStripMenuItem.Text = "&File";
-			this.fileToolStripMenuItem.DropDownOpened += new System.EventHandler(this.FileSubMenu_DropDownOpened);
+			this.FileSubMenu.Name = "FileSubMenu";
+			this.FileSubMenu.Size = new System.Drawing.Size(37, 20);
+			this.FileSubMenu.Text = "&File";
+			this.FileSubMenu.DropDownOpened += new System.EventHandler(this.FileSubMenu_DropDownOpened);
 			// 
 			// NewMenuItem
 			// 
@@ -185,19 +186,21 @@
 			this.ExitMenuItem.Text = "E&xit";
 			this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click);
 			// 
-			// optionsToolStripMenuItem
+			// OptionsSubMenu
 			// 
-			this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+			this.OptionsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.TurboWhileBottingMenuItem,
             this.countRerecordsToolStripMenuItem});
-			this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
-			this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
-			this.optionsToolStripMenuItem.Text = "&Options";
+			this.OptionsSubMenu.Name = "OptionsSubMenu";
+			this.OptionsSubMenu.Size = new System.Drawing.Size(61, 20);
+			this.OptionsSubMenu.Text = "&Options";
+			this.OptionsSubMenu.DropDownOpened += new System.EventHandler(this.OptionsSubMenu_DropDownOpened);
 			// 
 			// countRerecordsToolStripMenuItem
 			// 
 			this.countRerecordsToolStripMenuItem.Enabled = false;
 			this.countRerecordsToolStripMenuItem.Name = "countRerecordsToolStripMenuItem";
-			this.countRerecordsToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
+			this.countRerecordsToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
 			this.countRerecordsToolStripMenuItem.Text = "Count Rerecords";
 			// 
 			// RunBtn
@@ -687,6 +690,13 @@
 			this.ControlGroupBox.TabStop = false;
 			this.ControlGroupBox.Text = "Control";
 			// 
+			// TurboWhileBottingMenuItem
+			// 
+			this.TurboWhileBottingMenuItem.Name = "TurboWhileBottingMenuItem";
+			this.TurboWhileBottingMenuItem.Size = new System.Drawing.Size(181, 22);
+			this.TurboWhileBottingMenuItem.Text = "Turbo While Botting";
+			this.TurboWhileBottingMenuItem.Click += new System.EventHandler(this.TurboWhileBottingMenuItem_Click);
+			// 
 			// BasicBot
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -725,7 +735,7 @@
 		#endregion
 
 		private MenuStripEx BotMenu;
-		private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+		private System.Windows.Forms.ToolStripMenuItem FileSubMenu;
 		private System.Windows.Forms.ToolStripMenuItem ExitMenuItem;
 		private System.Windows.Forms.Button RunBtn;
 		private System.Windows.Forms.ToolStripMenuItem OpenMenuItem;
@@ -740,7 +750,7 @@
 		private System.Windows.Forms.Label label2;
 		private System.Windows.Forms.Label AttemptsLabel;
 		private System.Windows.Forms.Label FramesLabel;
-		private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
+		private System.Windows.Forms.ToolStripMenuItem OptionsSubMenu;
 		private System.Windows.Forms.ToolStripMenuItem countRerecordsToolStripMenuItem;
 		private System.Windows.Forms.GroupBox GoalGroupBox;
 		private System.Windows.Forms.Label label7;
@@ -780,5 +790,6 @@
 		private System.Windows.Forms.Button PlayBestButton;
 		private System.Windows.Forms.ToolStripStatusLabel MessageLabel;
 		private System.Windows.Forms.GroupBox ControlGroupBox;
+		private System.Windows.Forms.ToolStripMenuItem TurboWhileBottingMenuItem;
 	}
 }
\ No newline at end of file
diff --git a/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs b/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
index d7fea0af54..1fff33f854 100644
--- a/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
+++ b/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
@@ -49,9 +49,11 @@ namespace BizHawk.Client.EmuHawk
 			public BasicBotSettings()
 			{
 				RecentBotFiles = new RecentFiles();
+				TurboWhenBotting = true;
 			}
 
 			public RecentFiles RecentBotFiles { get; set; }
+			public bool TurboWhenBotting { get; set; }
 		}
 
 		#endregion
@@ -420,6 +422,20 @@ namespace BizHawk.Client.EmuHawk
 
 		#endregion
 
+		#region Options Menu
+
+		private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e)
+		{
+			TurboWhileBottingMenuItem.Checked = Settings.TurboWhenBotting;
+		}
+
+		private void TurboWhileBottingMenuItem_Click(object sender, EventArgs e)
+		{
+			Settings.TurboWhenBotting ^= true;
+        }
+
+		#endregion
+
 		private void RunBtn_Click(object sender, EventArgs e)
 		{
 			StartBot();
@@ -438,11 +454,13 @@ namespace BizHawk.Client.EmuHawk
 
 		private void PlayBestButton_Click(object sender, EventArgs e)
 		{
+			StopBot();
 			_replayMode = true;
 			_dontUpdateValues = true;
 			GlobalWin.MainForm.LoadQuickSave(SelectedSlot); // Triggers an UpdateValues call
 			_dontUpdateValues = false;
 			_startFrame = Emulator.Frame;
+			SetNormalSpeed();
 			GlobalWin.MainForm.UnpauseEmulator();
 		}
 
@@ -543,7 +561,8 @@ namespace BizHawk.Client.EmuHawk
 				TieBreaker1 = TieBreaker1Address,
 				TieBreaker2 = TieBreaker2Address,
 				TieBreaker3 = TieBreaker3Address,
-				FromSlot = FromSlot
+				FromSlot = FromSlot,
+				FrameLength = FrameLength
 			};
 
 			var json = ConfigService.SaveWithType(data);
@@ -734,10 +753,10 @@ namespace BizHawk.Client.EmuHawk
 
 			_targetFrame = Global.Emulator.Frame + (int)FrameLengthNumeric.Value;
 
-			if (GlobalWin.MainForm.EmulatorPaused)
+			GlobalWin.MainForm.UnpauseEmulator();
+			if (Settings.TurboWhenBotting)
 			{
-				GlobalWin.MainForm.UnpauseEmulator();
-				// TODO: speed!
+				SetMaxSpeed();
 			}
 		}
 
@@ -781,6 +800,17 @@ namespace BizHawk.Client.EmuHawk
 			}
 
 			GlobalWin.MainForm.PauseEmulator();
+			SetNormalSpeed();
+        }
+
+		private void SetMaxSpeed()
+		{
+			GlobalWin.MainForm.Unthrottle();
+		}
+
+		private void SetNormalSpeed()
+		{
+			GlobalWin.MainForm.Throttle();
 		}
 	}
 }