diff --git a/AquaMai/AquaMai.csproj b/AquaMai/AquaMai.csproj
index b9bc0103..617c41b7 100644
--- a/AquaMai/AquaMai.csproj
+++ b/AquaMai/AquaMai.csproj
@@ -273,6 +273,7 @@
+
diff --git a/AquaMai/AquaMai.toml b/AquaMai/AquaMai.toml
index 36cdbaec..d246aedb 100644
--- a/AquaMai/AquaMai.toml
+++ b/AquaMai/AquaMai.toml
@@ -26,6 +26,8 @@ LoadAssetBundleWithoutManifest=true
SkipEventInfo=true
# Random BGM, put Mai2Cue.{acb,awb} of old version of the game in `LocalAssets\Mai2Cue` and rename them
RandomBgm=false
+# Play "Master" difficulty on Demo screen
+DemoMaster=true
# Execute some command on game idle or on game start
ExecOnIdle=""
ExecOnEntry=""
diff --git a/AquaMai/Config.cs b/AquaMai/Config.cs
index 3290300e..42c1a361 100644
--- a/AquaMai/Config.cs
+++ b/AquaMai/Config.cs
@@ -23,6 +23,7 @@ namespace AquaMai
public bool LoadAssetBundleWithoutManifest { get; set; }
public bool QuickSkip { get; set; }
public bool RandomBgm { get; set; }
+ public bool DemoMaster { get; set; }
public string CustomVersionString { get; set; }
public string ExecOnIdle { get; set; }
public string ExecOnEntry { get; set; }
diff --git a/AquaMai/UX/DemoMaster.cs b/AquaMai/UX/DemoMaster.cs
new file mode 100644
index 00000000..1f640dcf
--- /dev/null
+++ b/AquaMai/UX/DemoMaster.cs
@@ -0,0 +1,27 @@
+using DB;
+using HarmonyLib;
+using MAI2.Util;
+using Manager;
+using Process;
+
+namespace AquaMai.UX
+{
+ public class DemoMaster
+ {
+ [HarmonyPostfix]
+ [HarmonyPatch(typeof(AdvDemoProcess), "OnStart")]
+ public static void AdvDemoProcessPostStart()
+ {
+ var userOption = Singleton.Instance.GetGameScore(0).UserOption;
+ userOption.NoteSpeed = OptionNotespeedID.Speed7_0;
+ }
+
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(GamePlayManager), "InitializeAdvertise")]
+ public static void PreInitializeAdvertise()
+ {
+ GameManager.SelectDifficultyID[0] = 3;
+ GameManager.SelectDifficultyID[1] = 3;
+ }
+ }
+}
\ No newline at end of file