Index: /Daodan/src/Daodan.c
===================================================================
--- /Daodan/src/Daodan.c	(revision 692)
+++ /Daodan/src/Daodan.c	(revision 693)
@@ -40,4 +40,5 @@
 bool patch_getcmdline = true;
 bool patch_disablecmdline = true;
+bool patch_optionsvisible = true;
 
 bool patch_safeprintf = true;
@@ -57,4 +58,23 @@
 typedef int (__cdecl *CHINESEPROC)(DWORD WINAPI); 
 bool patch_chinese = false;
+
+
+
+void ONICALL DDrShowResumeButton(int window, int visibility)
+{
+	if (visibility)
+		WMrWindow_SetLocation(window, 150, 350);
+	WMrWindow_SetVisible(window, visibility);
+}
+
+
+/* Options always visible patch */
+void ONICALL DDrShowOptionsButton(int window, int visibility)
+{
+	WMrWindow_SetVisible(window, 1);
+}
+
+
+
 bool DDrPatch_Init()
 {
@@ -280,6 +300,16 @@
 //FLATLINE?	DDrPatch_MakeCall((void*)(OniExe + 0x000C26CB), FLrHook_DoorOpen); 
 //FLATLINE?	DDrPatch_MakeCall((void*)(OniExe + 0x000EE3CF), FLrHook_ConsoleActivate);
+
+
+	// Fix options not visible in main menu when a game was started
+	if(patch_optionsvisible)
+	{
+		DDrPatch_MakeCall((void*)(OniExe + 0x000d2d2d), DDrShowOptionsButton);
+		DDrPatch_MakeCall((void*)(OniExe + 0x000d2d43), DDrShowResumeButton);
+	}
+
 	return true;
 }
+
 
 enum {s_unknown, s_options, s_patch, s_bsl, s_language} ini_section;
@@ -387,4 +417,6 @@
 			else if (!_stricmp(name, "newweap"))
 				patch_newweapon = !_stricmp(inifile_cleanstr(value), "true");
+			else if (!_stricmp(name, "optionsvisible"))
+				patch_optionsvisible = !_stricmp(inifile_cleanstr(value), "true");
 			else
 				DDrStartupMessage("unrecognised patch \"%s\"", name);
Index: /Daodan/src/Oni_Symbols.h
===================================================================
--- /Daodan/src/Oni_Symbols.h	(revision 692)
+++ /Daodan/src/Oni_Symbols.h	(revision 693)
@@ -197,4 +197,9 @@
 DefFunc(void, AI2rDisplayDebuggingInfo, ONICALL, (Character* Char), 0x0048C5F0);
 DefFunc(uint32_t, M3rTextureMap_New, ONICALL, (short width, short height, int type, int allocated, int flags, char* name, void** output), 0x041EB00);
+
+// Make a dialog element (in)visible and change its position
+DefFunc(void, WMrWindow_SetVisible, ONICALL, (int window, int visibility), 0x00475a10);
+DefFunc(void, WMrWindow_SetLocation, ONICALL, (int window, int x, int y), 0x004756d0);
+
 #undef DefFunc
 
Index: /Daodan/src/_Version.h
===================================================================
--- /Daodan/src/_Version.h	(revision 692)
+++ /Daodan/src/_Version.h	(revision 693)
@@ -6,5 +6,5 @@
 
 #define DAODAN_VERSION_MAJOR 3
-#define DAODAN_VERSION_MINOR 1
+#define DAODAN_VERSION_MINOR 2
 #define DAODAN_VERSION_STRING STRINGIZE(DAODAN_VERSION_MAJOR) "." STRINGIZE(DAODAN_VERSION_MINOR)
 
