diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index 563d9b97c..e7d45ccbe 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -73,6 +73,7 @@ local void GameShowCredits(void);
 local void GameMenuObjectives(void);
 local void GameMenuEndScenario(void);
 local void GameOptions(void);
+local void SetCdMode(Menuitem *mi);
 
 local void EndScenarioRestart(void);
 local void EndScenarioSurrender(void);
@@ -756,7 +757,7 @@ local Menuitem GameOptionsMenuItems[] = {
     { MI_TYPE_TEXT, 144, 11, 0, LargeFont, NULL, NULL,
 	{ text:{ "Options", MI_TFLAGS_CENTERED} } },
     { MI_TYPE_GEM, 10, 42, 0, LargeFont, NULL, NULL,
-	{ gem:{ 0, 18, 18, MBUTTON_GEM_SQUARE, EndMenu} } },
+	{ gem:{ 4, 18, 18, MBUTTON_GEM_SQUARE, SetCdMode} } },
     { MI_TYPE_TEXT, 144, 44, 0, LargeFont, NULL, NULL,
 	{ text:{ "CD Audio Enabled", MI_TFLAGS_CENTERED} } },
     { MI_TYPE_BUTTON, 32, 90, MenuButtonSelected, LargeFont, NULL, NULL,
@@ -1485,6 +1486,26 @@ local void GameOptions(void)
     ProcessMenu(MENU_GAME_OPTIONS, 1);
 }
 
+local void SetCdMode(Menuitem *mi)
+{
+    if (!strcmp(":off", CDMode)) {
+//	CDMode = ":random";
+	PlayMusic(":random");
+    } else {
+#ifdef USE_SDLCD 
+        SDL_CDStop(CDRom);
+        SDL_CDClose(CDRom);
+#endif 
+	
+#ifdef USE_LIBCDA 
+        cd_stop();
+        cd_close();
+        cd_exit();
+#endif
+	CDMode = ":off";
+    }
+}
+
 /**
 **	Show the game credits.
 */