From 964d30375fedafc65c4a010e071b07e0c382ee81 Mon Sep 17 00:00:00 2001 From: wartori Date: Fri, 1 Nov 2024 23:54:12 +0100 Subject: [PATCH 01/20] Introduce FastMode for MiniInstaller --- MiniInstaller/Program.cs | 273 +++++++++++++++++++++++++++++---------- 1 file changed, 206 insertions(+), 67 deletions(-) diff --git a/MiniInstaller/Program.cs b/MiniInstaller/Program.cs index 65bfafb98..0cc73d7f7 100644 --- a/MiniInstaller/Program.cs +++ b/MiniInstaller/Program.cs @@ -60,27 +60,23 @@ public static void LogErr(string line) { } public static int Main(string[] args) { + if (args.Length == 0) return Standard(args); + if (args[0] == "--fastmode") return FastMode(args); + return Standard(args); + } + + public static bool Init() { if (Type.GetType("Mono.Runtime") != null) { Console.WriteLine("MiniInstaller is unable to run under mono!"); - return 1; + return false; } // Set working directory Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!); - // Handle creating backup symlinks after obtaining elevation - if (args.Length > 0 && args[0] == $"{nameof(CreateBackupSymlinksWithElevation)}_PostElevationRequest") { - PathGame = args[1]; - PathOrig = args[2]; - CreateBackupSymlinks(); - return 0; - } - - Console.WriteLine("Everest MiniInstaller"); - if (!SetupPaths()) { // setting up paths failed (Celeste.exe was not found). - return 1; + return false; } // .NET hates it when strong-named dependencies get updated. @@ -99,77 +95,204 @@ public static int Main(string[] args) { return null; }; + return true; + } + + public static DisposableTuple SetupLogger() { if (File.Exists(PathLog)) File.Delete(PathLog); - using (Stream fileStream = File.OpenWrite(PathLog)) - using (StreamWriter fileWriter = new StreamWriter(fileStream, Console.OutputEncoding)) - using (LogWriter logWriter = new LogWriter(Console.Out, Console.Error, fileWriter)) { - try { - WaitForGameExit(); + Stream fileStream = File.OpenWrite(PathLog); + StreamWriter fileWriter = new StreamWriter(fileStream, Console.OutputEncoding); + LogWriter logWriter = new LogWriter(Console.Out, Console.Error, fileWriter); + + return new DisposableTuple(logWriter, fileWriter, fileStream); + } - DetermineInstallPlatform(); + public static int Standard(string[] args) { + if (!Init()) return 1; + + // Handle creating backup symlinks after obtaining elevation + if (args.Length > 0 && args[0] == $"{nameof(CreateBackupSymlinksWithElevation)}_PostElevationRequest") { + PathGame = args[1]; + PathOrig = args[2]; + CreateBackupSymlinks(); + return 0; + } - Backup(); + Console.WriteLine("Everest MiniInstaller"); - MoveFilesFromUpdate(); + using DisposableTuple _ = SetupLogger(); + try { + WaitForGameExit(); - if (File.Exists(PathEverestDLL)) - File.Delete(PathEverestDLL); + DetermineInstallPlatform(); - if (Platform == InstallPlatform.MacOS && !File.Exists(Path.Combine(PathGame, "Celeste.png"))) - File.Move(Path.Combine(PathGame, "Celeste-icon.png"), Path.Combine(PathGame, "Celeste.png")); - else - File.Delete(Path.Combine(PathGame, "Celeste-icon.png")); + Backup(); - DeleteSystemLibs(); - SetupNativeLibs(); - CopyControllerDB(); + MoveFilesFromUpdate(); - if (AsmMonoMod == null || AsmNETCoreifier == null) - LoadModders(); + if (File.Exists(PathEverestDLL)) + File.Delete(PathEverestDLL); - ConvertToNETCore(Path.Combine(PathOrig, "Celeste.exe"), PathEverestExe); + if (Platform == InstallPlatform.MacOS && !File.Exists(Path.Combine(PathGame, "Celeste.png"))) + File.Move(Path.Combine(PathGame, "Celeste-icon.png"), Path.Combine(PathGame, "Celeste.png")); + else + File.Delete(Path.Combine(PathGame, "Celeste-icon.png")); - string everestModDLL = Path.ChangeExtension(PathCelesteExe, ".Mod.mm.dll"); - string[] mods = new string[] { PathEverestLib, everestModDLL }; - RunMonoMod(Path.Combine(PathEverestLib, "FNA.dll"), Path.Combine(PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well - RunMonoMod(PathEverestExe, dllPaths: mods); + DeleteSystemLibs(); + SetupNativeLibs(); + CopyControllerDB(); - string hookGenOutput = Path.Combine(PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(PathCelesteExe), ".dll")); - RunHookGen(PathEverestExe, PathCelesteExe); - RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer + if (AsmMonoMod == null || AsmNETCoreifier == null) + LoadModders(); - MoveExecutable(PathEverestExe, PathEverestDLL); - CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); - SetupAppHosts(PathEverestExe, PathEverestDLL, PathEverestDLL); + ConvertToNETCore(Path.Combine(PathOrig, "Celeste.exe"), PathEverestExe); - CombineXMLDoc(Path.ChangeExtension(PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(PathCelesteExe, ".xml")); + string everestModDLL = Path.ChangeExtension(PathCelesteExe, ".Mod.mm.dll"); + string[] mods = new string[] { PathEverestLib, everestModDLL }; + RunMonoMod(Path.Combine(PathEverestLib, "FNA.dll"), Path.Combine(PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well + RunMonoMod(PathEverestExe, dllPaths: mods); - // If we're updating, start the game. Otherwise, close the window. - if (PathUpdate != null) { - StartGame(); - } + string hookGenOutput = Path.Combine(PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(PathCelesteExe), ".dll")); + RunHookGen(PathEverestExe, PathCelesteExe); + RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer + + MoveExecutable(PathEverestExe, PathEverestDLL); + CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); + SetupAppHosts(PathEverestExe, PathEverestDLL, PathEverestDLL); - } catch (Exception e) { - string msg = e.ToString(); - LogLine(""); - LogErr(msg); - LogErr(""); - LogErr("Installing Everest failed."); - if (msg.Contains("--->")) - LogErr("Please review the error after the '--->' to see if you can fix it on your end."); - LogErr(""); - LogErr("If you need help, please create a new issue on GitHub @ https://github.com/EverestAPI/Everest"); - LogErr("or join the #modding_help channel on Discord (invite in the repo)."); - LogErr("Make sure to upload your log file."); + CombineXMLDoc(Path.ChangeExtension(PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(PathCelesteExe, ".xml")); + + // If we're updating, start the game. Otherwise, close the window. + if (PathUpdate != null) { + StartGame(); + } + + } catch (Exception e) { + string msg = e.ToString(); + LogLine(""); + LogErr(msg); + LogErr(""); + LogErr("Installing Everest failed."); + if (msg.Contains("--->")) + LogErr("Please review the error after the '--->' to see if you can fix it on your end."); + LogErr(""); + LogErr("If you need help, please create a new issue on GitHub @ https://github.com/EverestAPI/Everest"); + LogErr("or join the #modding_help channel on Discord (invite in the repo)."); + LogErr("Make sure to upload your log file."); + return 1; + + } finally { + // Let's not pollute . + Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", ""); + Environment.SetEnvironmentVariable("MONOMOD_MODS", ""); + Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", ""); + } + + return 0; + } + + /// + /// Fast mode serves as a way to speed up development environments, + /// allowing disabling most parts of the installation process to only focus on the ones + /// where changes are relevant. + /// + /// Its five flags are: + /// "maingame": Runs MonoMod.Patcher with the Celeste.exe from orig and moves it to the celeste.dll + /// "fna": Runs MonoMod.Patcher with FNA.dll + /// "hookgen": Runs MonoMod.HookGen with the present dll, then runs MonoMod.Patcher on it to relink the HEM + /// "apphost": Only if "maingame" is also present, forces the regeneration of an apphost and runtime config files + /// "xmldoc": Only if "xmldoc" is also present, combines xmldocs + /// + /// + /// + public static int FastMode(string[] args) { + bool doMainGame = false; + bool doFNA = false; + bool doHookGen = false; + bool doAppHost = false; + bool doXmlDoc = false; + if (args.Length == 1) { + doMainGame = true; + doFNA = true; + doHookGen = true; + doAppHost = true; + doXmlDoc = true; + } else { + doMainGame = args.Contains("maingame"); + doFNA = args.Contains("fna"); + doHookGen = args.Contains("hookgen"); + doAppHost = args.Contains("apphost"); + doXmlDoc = args.Contains("xmldoc"); + } + + try { + if (!Init()) return 1; + Console.WriteLine("Everest MiniInstaller - FastMode"); + + using DisposableTuple _ = SetupLogger(); + + DetermineInstallPlatform(); + + if (!Directory.Exists(PathOrig)) { + LogErr("FastMode is unsupported from a fresh installation, run miniinstaller normally first."); return 1; + } + + if (AsmMonoMod == null || AsmNETCoreifier == null) + LoadModders(); + + string everestModDLL = Path.ChangeExtension(PathCelesteExe, ".Mod.mm.dll"); + string[] mods = new string[] { PathEverestLib, everestModDLL }; - } finally { - // Let's not pollute . - Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", ""); - Environment.SetEnvironmentVariable("MONOMOD_MODS", ""); - Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", ""); + if (doMainGame) { + if (File.Exists(PathEverestDLL)) + File.Delete(PathEverestDLL); + // We really only need to coreify celeste + ConvertToNETCoreSingle(Path.Combine(PathOrig, "Celeste.exe"), PathEverestDLL); } + + if (doFNA) { + RunMonoMod(Path.Combine(PathEverestLib, "FNA.dll"), Path.Combine(PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well + } + + if (doMainGame) { + RunMonoMod(PathEverestDLL, dllPaths: mods); + } + + // This should never change no matter the current settings + string hookGenOutput = Path.Combine(PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(PathCelesteExe), ".dll")); + if (doHookGen) { + RunHookGen(PathEverestDLL, PathCelesteExe); + RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer + } + + if (doMainGame) { + // There's usually no reason to do this more than once ever, so don't unless explicitly told + // And assembly references changing is also a rare occasion, so skip it as well + if (doAppHost) { + CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); + SetupAppHosts(PathEverestExe, PathEverestDLL, PathEverestDLL); + } + + // Combining xml docs is slow, and most of the time not even required + if (doXmlDoc) { + CombineXMLDoc(Path.ChangeExtension(PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(PathCelesteExe, ".xml")); + } + } + } catch (Exception e) { + string msg = e.ToString(); + LogLine(""); + LogErr(msg); + LogErr(""); + LogErr("Installing Everest with FastMode failed."); + LogErr($"Settings: ({nameof(doMainGame)}, {nameof(doFNA)}, {nameof(doHookGen)}, {nameof(doAppHost)}) -> ({doMainGame}, {doFNA}, {doHookGen}, {doAppHost})"); + LogErr("Try rerunning fast mode with more settings enabled, otherwise do a full standard run."); + return 1; + } finally { + Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", ""); + Environment.SetEnvironmentVariable("MONOMOD_MODS", ""); + Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", ""); } return 0; @@ -715,12 +838,12 @@ public static void RunMonoMod(string asmFrom, string asmTo = null, string[] dllP } } - public static void RunHookGen(string asm, string target) { + public static void RunHookGen(string asm, string targetName) { LogLine($"Running MonoMod.RuntimeDetour.HookGen for {asm}"); // We're lazy. Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", PathGame); Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", "0"); - AsmHookGen.EntryPoint.Invoke(null, new object[] { new string[] { "--private", asm, Path.Combine(Path.GetDirectoryName(target), "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(target), "dll")) } }); + AsmHookGen.EntryPoint.Invoke(null, new object[] { new string[] { "--private", asm, Path.Combine(Path.GetDirectoryName(targetName), "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(targetName), "dll")) } }); } public static void ConvertToNETCore(string asmFrom, string asmTo = null, HashSet convertedAsms = null) { @@ -745,8 +868,12 @@ public static void ConvertToNETCore(string asmFrom, string asmTo = null, HashSet ConvertToNETCore(dstDepPath, convertedAsms: convertedAsms); } - LogLine($"Converting {asmFrom} to .NET Core"); + ConvertToNETCoreSingle(asmFrom, asmTo); + } + public static void ConvertToNETCoreSingle(string asmFrom, string asmTo) { + LogLine($"Converting {asmFrom} to .NET Core"); + string asmTmp = Path.Combine(PathTmp, Path.GetFileName(asmTo)); try { AsmNETCoreifier.GetType("NETCoreifier.Coreifier") @@ -1099,5 +1226,17 @@ static void CreateOrigDoc(XmlNode node, ref XmlNode origDoc) { [DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)] static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); + public class DisposableTuple : IDisposable { + private readonly IDisposable[] _iDisposables; + public DisposableTuple(params IDisposable[] disposables) { + _iDisposables = disposables; + } + + public void Dispose() { + foreach (IDisposable iDisposable in _iDisposables) { + iDisposable.Dispose(); + } + } + } } } From 2f506cedb1a30e1b548c35dadab7b292dd7b35d6 Mon Sep 17 00:00:00 2001 From: wartori Date: Fri, 1 Nov 2024 23:59:30 +0100 Subject: [PATCH 02/20] Remove PathEverestExe in favour of PathCelesteExe --- MiniInstaller/Program.cs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/MiniInstaller/Program.cs b/MiniInstaller/Program.cs index 0cc73d7f7..801801d8b 100644 --- a/MiniInstaller/Program.cs +++ b/MiniInstaller/Program.cs @@ -37,7 +37,7 @@ public enum InstallPlatform { public static string PathGame; public static string PathOSXExecDir; public static string PathCelesteExe; - public static string PathEverestExe, PathEverestDLL; + public static string PathEverestDLL; public static string PathEverestLib; public static string PathOrig; public static string PathLog; @@ -146,20 +146,20 @@ public static int Standard(string[] args) { if (AsmMonoMod == null || AsmNETCoreifier == null) LoadModders(); - ConvertToNETCore(Path.Combine(PathOrig, "Celeste.exe"), PathEverestExe); + ConvertToNETCore(Path.Combine(PathOrig, "Celeste.exe"), PathCelesteExe); string everestModDLL = Path.ChangeExtension(PathCelesteExe, ".Mod.mm.dll"); string[] mods = new string[] { PathEverestLib, everestModDLL }; RunMonoMod(Path.Combine(PathEverestLib, "FNA.dll"), Path.Combine(PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well - RunMonoMod(PathEverestExe, dllPaths: mods); + RunMonoMod(PathCelesteExe, dllPaths: mods); string hookGenOutput = Path.Combine(PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(PathCelesteExe), ".dll")); - RunHookGen(PathEverestExe, PathCelesteExe); + RunHookGen(PathCelesteExe, PathCelesteExe); RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer - MoveExecutable(PathEverestExe, PathEverestDLL); + MoveExecutable(PathCelesteExe, PathEverestDLL); CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); - SetupAppHosts(PathEverestExe, PathEverestDLL, PathEverestDLL); + SetupAppHosts(PathCelesteExe, PathEverestDLL, PathEverestDLL); CombineXMLDoc(Path.ChangeExtension(PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(PathCelesteExe, ".xml")); @@ -272,7 +272,7 @@ public static int FastMode(string[] args) { // And assembly references changing is also a rare occasion, so skip it as well if (doAppHost) { CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); - SetupAppHosts(PathEverestExe, PathEverestDLL, PathEverestDLL); + SetupAppHosts(PathCelesteExe, PathEverestDLL, PathEverestDLL); } // Combining xml docs is slow, and most of the time not even required @@ -320,9 +320,9 @@ public static bool SetupPaths() { // Here lies a reminder that patching into Everest.exe only caused confusion and issues. // RIP Everest.exe 2019 - 2020 - PathEverestExe = PathCelesteExe; - PathEverestDLL = Path.ChangeExtension(PathEverestExe, ".dll"); - PathEverestLib = Path.Combine(Path.GetDirectoryName(PathEverestExe), "everest-lib"); + // PathEverestExe = PathCelesteExe; + PathEverestDLL = Path.ChangeExtension(PathCelesteExe, ".dll"); + PathEverestLib = Path.Combine(Path.GetDirectoryName(PathCelesteExe), "everest-lib"); PathOrig = Path.Combine(PathGame, "orig"); PathLog = Path.Combine(PathGame, "miniinstaller-log.txt"); @@ -354,7 +354,7 @@ public static void WaitForGameExit() { } if ( - (File.Exists(PathEverestExe) && !CanReadWrite(PathEverestExe)) || + (File.Exists(PathCelesteExe) && !CanReadWrite(PathCelesteExe)) || (File.Exists(PathEverestDLL) && !CanReadWrite(PathEverestDLL)) ) { LogErr("Celeste not read-writeable - waiting"); @@ -1056,9 +1056,9 @@ public static void StartGame() { // If the game was installed via Steam, it should restart in a Steam context on its own. if (Platform != InstallPlatform.Windows) { // The Linux and macOS version apphosts don't end in ".exe" - game.StartInfo.FileName = Path.ChangeExtension(PathEverestExe, null); + game.StartInfo.FileName = Path.ChangeExtension(PathCelesteExe, null); } else { - game.StartInfo.FileName = PathEverestExe; + game.StartInfo.FileName = PathCelesteExe; } game.StartInfo.WorkingDirectory = PathGame; game.Start(); From f832a097e811216e5aaef10a446bde960440471e Mon Sep 17 00:00:00 2001 From: wartori Date: Sat, 2 Nov 2024 01:17:40 +0100 Subject: [PATCH 03/20] Split Program.cs into multiple files --- MiniInstaller/BackUp.cs | 143 +++ MiniInstaller/DepCalls.cs | 133 +++ MiniInstaller/Globals.cs | 90 ++ MiniInstaller/InGameUpdaterHelper.cs | 85 ++ MiniInstaller/LibAndDepHandling.cs | 275 +++++ MiniInstaller/Logger.cs | 49 + MiniInstaller/MiscUtil.cs | 85 ++ MiniInstaller/Program.cs | 1160 ++-------------------- MiniInstaller/WindowsElevationRequest.cs | 157 +++ MiniInstaller/XmlDoc.cs | 78 ++ 10 files changed, 1169 insertions(+), 1086 deletions(-) create mode 100644 MiniInstaller/BackUp.cs create mode 100644 MiniInstaller/DepCalls.cs create mode 100644 MiniInstaller/Globals.cs create mode 100644 MiniInstaller/InGameUpdaterHelper.cs create mode 100644 MiniInstaller/LibAndDepHandling.cs create mode 100644 MiniInstaller/Logger.cs create mode 100644 MiniInstaller/MiscUtil.cs create mode 100644 MiniInstaller/WindowsElevationRequest.cs create mode 100644 MiniInstaller/XmlDoc.cs diff --git a/MiniInstaller/BackUp.cs b/MiniInstaller/BackUp.cs new file mode 100644 index 000000000..aece3d4bb --- /dev/null +++ b/MiniInstaller/BackUp.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; + +namespace MiniInstaller; + +public static class BackUp { + public static void Backup() { + // Backup / restore the original game files we're going to modify. + // TODO: Maybe invalidate the orig dir when the backed up version < installed version? + if (!Directory.Exists(Globals.PathOrig)) { + Logger.LogLine("Creating backup orig directory"); + Directory.CreateDirectory(Globals.PathOrig); + } + + // Backup the game executable + Backup(Globals.PathCelesteExe); + + // Backup game dependencies + BackupPEDeps(Path.Combine(Globals.PathOrig, Path.GetRelativePath(Globals.PathGame, Globals.PathCelesteExe)), Globals.PathGame); + + // Backup all system libraries explicitly, as we'll delete those + foreach (string file in Directory.GetFiles(Globals.PathGame)) { + if (MiscUtil.IsSystemLibrary(file)) + Backup(file); + } + + // Backup MonoKickstart executable / config (for Linux + MacOS) + Backup(Path.Combine(Globals.PathOSXExecDir ?? Globals.PathGame, "Celeste")); + Backup(Path.Combine(Globals.PathGame, "Celeste.bin.x86")); + Backup(Path.Combine(Globals.PathGame, "Celeste.bin.x86_64")); + Backup(Path.Combine(Globals.PathGame, "monoconfig")); + Backup(Path.Combine(Globals.PathGame, "monomachineconfig")); + Backup(Path.Combine(Globals.PathGame, "FNA.dll.config")); + + // Backup native libraries + foreach (string libName in Globals.WindowsNativeLibFileNames) + Backup(Path.Combine(Globals.PathGame, libName)); + Backup(Path.Combine(Globals.PathGame, "lib")); + Backup(Path.Combine(Globals.PathGame, "lib64")); + if (Globals.PathOSXExecDir != null) + Backup(Path.Combine(Globals.PathOSXExecDir, "osx")); + + // Backup misc files + Backup(Globals.PathCelesteExe + ".config"); + Backup(Path.Combine(Globals.PathGame, "gamecontrollerdb.txt")); + + // Apply patch vanilla libraries + string patchLibsDir = Path.Combine(Globals.PathEverestLib, "lib-vanilla"); + if (Directory.Exists(patchLibsDir)) { + static void ApplyVanillaPatchLibs(string patchLibsDir, string targetDir) { + foreach (string src in Directory.GetFileSystemEntries(patchLibsDir)) { + string dst = Path.Combine(targetDir, Path.GetRelativePath(patchLibsDir, src)); + if (File.Exists(src)) { + if (File.Exists(dst)) + File.Delete(dst); + File.Move(src, dst); + } else if (Directory.Exists(src)) { + Directory.CreateDirectory(dst); + ApplyVanillaPatchLibs(src, dst); + } + } + } + + Logger.LogLine("Applying patch vanilla libraries"); + ApplyVanillaPatchLibs(patchLibsDir, Globals.PathOrig); + Directory.Delete(patchLibsDir, true); + } + + //Create symlinks + try { + CreateBackupSymlinks(); + } catch (Exception e) { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { + throw; + } + + if (!WindowsElevationRequest.HandleWindowsElevationProcedure(e)) + throw; + } + } + + public static void CreateBackupSymlinks() { + if (!Directory.Exists(Path.Combine(Globals.PathOrig, "Content"))) + Directory.CreateSymbolicLink(Path.Combine(Globals.PathOrig, "Content"), Path.GetRelativePath(Globals.PathOrig, Path.Combine(Globals.PathGame, "Content"))); + + if (Globals.Platform == Globals.InstallPlatform.Windows && !Directory.Exists(Path.Combine(Globals.PathOrig, "Saves"))) { + Directory.CreateDirectory(Path.Combine(Globals.PathGame, "Saves")); + Directory.CreateSymbolicLink(Path.Combine(Globals.PathOrig, "Saves"), Path.GetRelativePath(Globals.PathOrig, Path.Combine(Globals.PathGame, "Saves"))); + } + } + + public static void CreateBackupSymlinksFallback() { + if (!Directory.Exists(Path.Combine(Globals.PathOrig, "Content"))) { + static void CopyDirectory(string src, string dst) { + Directory.CreateDirectory(dst); + + foreach (string file in Directory.GetFiles(src)) + File.Copy(file, Path.Combine(dst, Path.GetRelativePath(src, file))); + + foreach (string dir in Directory.GetDirectories(src)) + CopyDirectory(dir, Path.Combine(dst, Path.GetRelativePath(src, dir))); + } + CopyDirectory(Path.Combine(Globals.PathGame, "Content"), Path.Combine(Globals.PathOrig, "Content")); + } + + // We can't have a fallback for the saves folder symlink + } + + private static void BackupPEDeps(string path, string depFolder, HashSet backedUpDeps = null) { + backedUpDeps ??= new HashSet() { path }; + + foreach (string dep in MiscUtil.GetPEAssemblyReferences(path).Keys) { + string asmRefPath = Path.Combine(depFolder, $"{dep}.dll"); + if (!File.Exists(asmRefPath) || backedUpDeps.Contains(asmRefPath)) + continue; + + backedUpDeps.Add(asmRefPath); + if (File.Exists(Path.Combine(Globals.PathOrig, $"{dep}.dll"))) + continue; + + Backup(asmRefPath); + BackupPEDeps(asmRefPath, depFolder, backedUpDeps); + } + } + + private static void Backup(string from, string backupDst = null) { + string to = Path.Combine(backupDst ?? Globals.PathOrig, Path.GetFileName(from)); + if(Directory.Exists(from)) { + if (!Directory.Exists(to)) + Directory.CreateDirectory(to); + + foreach (string entry in Directory.GetFileSystemEntries(from)) + Backup(entry, to); + } else if(File.Exists(from)) { + if (File.Exists(from) && !File.Exists(to)) { + Logger.LogLine($"Backing up {from} => {to}"); + File.Copy(from, to); + } + } + } +} \ No newline at end of file diff --git a/MiniInstaller/DepCalls.cs b/MiniInstaller/DepCalls.cs new file mode 100644 index 000000000..43de41522 --- /dev/null +++ b/MiniInstaller/DepCalls.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; + +namespace MiniInstaller; + +public static class DepCalls { + public static Assembly AsmMonoMod; + public static Assembly AsmHookGen; + public static Assembly AsmNETCoreifier; + + public static void LoadModders() { + if (AsmMonoMod != null && AsmNETCoreifier != null) return; + // We can't add MonoMod as a reference to MiniInstaller, as we don't want to accidentally lock the file. + // Instead, load it dynamically and invoke the entry point. + // We also need to lazily load any dependencies. + Logger.LogLine("Loading Mono.Cecil"); + LazyLoadAssembly(Path.Combine(Globals.PathGame, "Mono.Cecil.dll")); + Logger.LogLine("Loading Mono.Cecil.Mdb"); + LazyLoadAssembly(Path.Combine(Globals.PathGame, "Mono.Cecil.Mdb.dll")); + Logger.LogLine("Loading Mono.Cecil.Pdb"); + LazyLoadAssembly(Path.Combine(Globals.PathGame, "Mono.Cecil.Pdb.dll")); + Logger.LogLine("Loading MonoMod.Utils.dll"); + LazyLoadAssembly(Path.Combine(Globals.PathGame, "MonoMod.Utils.dll")); + Logger.LogLine("Loading MonoMod"); + AsmMonoMod ??= LazyLoadAssembly(Path.Combine(Globals.PathGame, "MonoMod.Patcher.dll")); + Logger.LogLine("Loading MonoMod.RuntimeDetour.dll"); + LazyLoadAssembly(Path.Combine(Globals.PathGame, "MonoMod.RuntimeDetour.dll")); + Logger.LogLine("Loading MonoMod.RuntimeDetour.HookGen"); + AsmHookGen ??= LazyLoadAssembly(Path.Combine(Globals.PathGame, "MonoMod.RuntimeDetour.HookGen.dll")); + Logger.LogLine("Loading NETCoreifier"); + AsmNETCoreifier ??= LazyLoadAssembly(Path.Combine(Globals.PathGame, "NETCoreifier.dll")); + } + + private static Assembly LazyLoadAssembly(string path) { + Logger.LogLine($"Lazily loading {path}"); + ResolveEventHandler tmpResolver = (s, e) => { + string asmPath = Path.Combine(Path.GetDirectoryName(path), new AssemblyName(e.Name).Name + ".dll"); + if (!File.Exists(asmPath)) + return null; + return Assembly.LoadFrom(asmPath); + }; + AppDomain.CurrentDomain.AssemblyResolve += tmpResolver; + Assembly asm = Assembly.Load(Path.GetFileNameWithoutExtension(path)); + AppDomain.CurrentDomain.AssemblyResolve -= tmpResolver; + AppDomain.CurrentDomain.TypeResolve += (s, e) => { + return asm.GetType(e.Name) != null ? asm : null; + }; + AppDomain.CurrentDomain.AssemblyResolve += (s, e) => { + return e.Name == asm.FullName || e.Name == asm.GetName().Name ? asm : null; + }; + return asm; + } + + public static void RunMonoMod(string asmFrom, string asmTo = null, string[] dllPaths = null) { + asmTo ??= asmFrom; + dllPaths ??= new string[] { Globals.PathGame }; + + Logger.LogLine($"Running MonoMod for {asmFrom}"); + + string asmTmp = Path.Combine(Globals.PathTmp, Path.GetFileName(asmTo)); + try { + // We're lazy. + Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", Globals.PathGame); + Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", "0"); + int returnCode = (int) AsmMonoMod.EntryPoint.Invoke(null, new object[] { Enumerable.Repeat(asmFrom, 1).Concat(dllPaths).Append(asmTmp).ToArray() }); + + if (returnCode != 0) + File.Delete(asmTmp); + + if (!File.Exists(asmTmp)) + throw new Exception($"MonoMod failed creating a patched assembly: exit code {returnCode}!"); + + MiscUtil.MoveExecutable(asmTmp, asmTo); + } finally { + File.Delete(asmTmp); + File.Delete(Path.ChangeExtension(asmTmp, "pdb")); + File.Delete(Path.ChangeExtension(asmTmp, "mdb")); + } + } + + public static void RunHookGen(string asm, string targetName) { + Logger.LogLine($"Running MonoMod.RuntimeDetour.HookGen for {asm}"); + // We're lazy. + Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", Globals.PathGame); + Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", "0"); + AsmHookGen.EntryPoint.Invoke(null, new object[] { new string[] { "--private", asm, Path.Combine(Path.GetDirectoryName(targetName), "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(targetName), "dll")) } }); + } + + public static void ConvertToNETCore(string asmFrom, string asmTo = null, HashSet convertedAsms = null) { + asmTo ??= asmFrom; + convertedAsms ??= new HashSet(); + + if (!convertedAsms.Add(asmFrom)) + return; + + // Convert dependencies first + string[] deps = MiscUtil.GetPEAssemblyReferences(asmFrom).Keys.ToArray(); + + if (deps.Contains("NETCoreifier")) + return; // Don't convert an assembly twice + + foreach (string dep in deps) { + string srcDepPath = Path.Combine(Path.GetDirectoryName(asmFrom), $"{dep}.dll"); + string dstDepPath = Path.Combine(Path.GetDirectoryName(asmTo), $"{dep}.dll"); + if (File.Exists(srcDepPath) && !MiscUtil.IsSystemLibrary(srcDepPath)) + ConvertToNETCore(srcDepPath, dstDepPath, convertedAsms); + else if (File.Exists(dstDepPath) && !MiscUtil.IsSystemLibrary(srcDepPath)) + ConvertToNETCore(dstDepPath, convertedAsms: convertedAsms); + } + + ConvertToNETCoreSingle(asmFrom, asmTo); + } + + public static void ConvertToNETCoreSingle(string asmFrom, string asmTo) { + Logger.LogLine($"Converting {asmFrom} to .NET Core"); + + string asmTmp = Path.Combine(Globals.PathTmp, Path.GetFileName(asmTo)); + try { + AsmNETCoreifier.GetType("NETCoreifier.Coreifier") + .GetMethod("ConvertToNetCore", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string), typeof(string) }, null) + .Invoke(null, new object[] { asmFrom, asmTmp }); + + MiscUtil.MoveExecutable(asmTmp, asmTo); + } finally { + File.Delete(asmTmp); + File.Delete(Path.ChangeExtension(asmTmp, "pdb")); + File.Delete(Path.ChangeExtension(asmTmp, "mdb")); + } + } +} \ No newline at end of file diff --git a/MiniInstaller/Globals.cs b/MiniInstaller/Globals.cs new file mode 100644 index 000000000..2c2688d55 --- /dev/null +++ b/MiniInstaller/Globals.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.ObjectModel; +using System.IO; + +namespace MiniInstaller; + +public static class Globals { + public static readonly ReadOnlyCollection WindowsNativeLibFileNames = Array.AsReadOnly(new string[] { + "fmod.dll", "fmodstudio.dll", "CSteamworks.dll", "steam_api.dll", "FNA3D.dll", "SDL2.dll" + }); + + public static readonly ReadOnlyCollection EverestSystemLibs = Array.AsReadOnly(new string[] { + "System.Drawing.Common.dll", "System.Security.Permissions.dll", "System.Windows.Extensions.dll" + }); + + public static string PathUpdate; + public static string PathGame; + public static string PathOSXExecDir; + public static string PathCelesteExe; + public static string PathEverestDLL; + public static string PathEverestLib; + public static string PathOrig; + public static string PathLog; + public static string PathTmp; + public static bool SetupPaths() { + PathGame = Directory.GetCurrentDirectory(); + Console.WriteLine(PathGame); + + if (Path.GetFileName(PathGame) == "everest-update" && ( + File.Exists(Path.Combine(Path.GetDirectoryName(PathGame), "Celeste.exe")) || + File.Exists(Path.Combine(Path.GetDirectoryName(PathGame), "Celeste.dll")) + )) { + // We're updating Everest via the in-game installler. + PathUpdate = PathGame; + PathGame = Path.GetDirectoryName(PathUpdate); + } + + PathCelesteExe = Path.Combine(PathGame, "Celeste.exe"); + if (!File.Exists(PathCelesteExe) && !File.Exists(Path.ChangeExtension(PathCelesteExe, ".dll"))) { + Logger.LogErr("Celeste.exe not found!"); + Logger.LogErr("Did you extract the .zip into the same place as Celeste?"); + return false; + } + + // Here lies a reminder that patching into Everest.exe only caused confusion and issues. + // RIP Everest.exe 2019 - 2020 + // PathEverestExe = PathCelesteExe; + PathEverestDLL = Path.ChangeExtension(PathCelesteExe, ".dll"); + PathEverestLib = Path.Combine(Path.GetDirectoryName(PathCelesteExe), "everest-lib"); + + PathOrig = Path.Combine(PathGame, "orig"); + PathLog = Path.Combine(PathGame, "miniinstaller-log.txt"); + + if (!Directory.Exists(Path.Combine(PathGame, "Mods"))) { + Logger.LogLine("Creating Mods directory"); + Directory.CreateDirectory(Path.Combine(PathGame, "Mods")); + } + + // Can't check for platform as some people could be running MiniInstaller via wine. + if (PathGame.Replace(Path.DirectorySeparatorChar, '/').Trim('/').EndsWith(".app/Contents/Resources")) { + PathOSXExecDir = Path.Combine(Path.GetDirectoryName(PathGame), "MacOS"); + if (!Directory.Exists(PathOSXExecDir)) PathOSXExecDir = null; + } + + PathTmp = Directory.CreateTempSubdirectory("Everest_MiniInstaller").FullName; + + return true; + } + + public enum InstallPlatform { + Windows, Linux, MacOS + } + + public static InstallPlatform Platform; + public static void DetermineInstallPlatform() { + if (Environment.GetEnvironmentVariable("MINIINSTALLER_PLATFORM") is string platformEnv && !string.IsNullOrEmpty(platformEnv)) + Platform = Enum.Parse(platformEnv, true); + else { + // We can't use RuntimeInformation because of wine + if (PathOSXExecDir != null) + Platform = InstallPlatform.MacOS; + else if (File.Exists(Path.ChangeExtension(PathCelesteExe, null))) + Platform = InstallPlatform.Linux; + else + Platform = InstallPlatform.Windows; + } + + Logger.LogLine($"Determined install platform: {Platform}"); + } +} \ No newline at end of file diff --git a/MiniInstaller/InGameUpdaterHelper.cs b/MiniInstaller/InGameUpdaterHelper.cs new file mode 100644 index 000000000..deab06968 --- /dev/null +++ b/MiniInstaller/InGameUpdaterHelper.cs @@ -0,0 +1,85 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Threading; + +namespace MiniInstaller; + +public static class InGameUpdaterHelper { + public static void MoveFilesFromUpdate(string srcPath = null, string dstPath = null) { + if (srcPath == null) { + if (Globals.PathUpdate == null) + return; + + Logger.LogLine("Moving files from update directory"); + srcPath ??= Globals.PathUpdate; + dstPath ??= Globals.PathGame; + + // Check if we have a new runtime (=there is a piton-runtime folder both in the game and the update directory) + if (Directory.Exists(Path.Combine(Globals.PathGame, "piton-runtime")) && Directory.Exists(Path.Combine(Globals.PathUpdate, "piton-runtime"))) + Directory.Delete(Path.Combine(Globals.PathGame, "piton-runtime"), true); + } + + if (!Directory.Exists(dstPath)) + Directory.CreateDirectory(dstPath); + + foreach (string entrySrc in Directory.GetFileSystemEntries(srcPath)) { + string entryDst = Path.Combine(dstPath, Path.GetRelativePath(srcPath, entrySrc)); + + if (File.Exists(entrySrc)) { + Logger.LogLine($"Copying {entrySrc} +> {entryDst}"); + File.Copy(entrySrc, entryDst, true); + } else + MoveFilesFromUpdate(entrySrc, entryDst); + } + } + + public static void WaitForGameExit() { + if (int.TryParse(Environment.GetEnvironmentVariable("EVEREST_UPDATE_CELESTE_PID"), out int celestePid)) { + try { + Process celesteProc = Process.GetProcessById(celestePid); + celesteProc.Kill(false); + celesteProc.WaitForExit(); + } catch {} + } + + if ( + (File.Exists(Globals.PathCelesteExe) && !CanReadWrite(Globals.PathCelesteExe)) || + (File.Exists(Globals.PathEverestDLL) && !CanReadWrite(Globals.PathEverestDLL)) + ) { + Logger.LogErr("Celeste not read-writeable - waiting"); + while (!CanReadWrite(Globals.PathCelesteExe)) + Thread.Sleep(5000); + } + } + + // AFAIK there's no "clean" way to check for any file locks in C#. + private static bool CanReadWrite(string path) { + try { + new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite | FileShare.Delete).Dispose(); + return true; + } catch { + return false; + } + } + + public static void StartGame() { + Logger.LogLine("Restarting Celeste"); + + // Let's not pollute the game with our MonoMod env vars. + Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", ""); + Environment.SetEnvironmentVariable("MONOMOD_MODS", ""); + Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", ""); + + Process game = new Process(); + // If the game was installed via Steam, it should restart in a Steam context on its own. + if (Globals.Platform != Globals.InstallPlatform.Windows) { + // The Linux and macOS version apphosts don't end in ".exe" + game.StartInfo.FileName = Path.ChangeExtension(Globals.PathCelesteExe, null); + } else { + game.StartInfo.FileName = Globals.PathCelesteExe; + } + game.StartInfo.WorkingDirectory = Globals.PathGame; + game.Start(); + } +} \ No newline at end of file diff --git a/MiniInstaller/LibAndDepHandling.cs b/MiniInstaller/LibAndDepHandling.cs new file mode 100644 index 000000000..90665e97e --- /dev/null +++ b/MiniInstaller/LibAndDepHandling.cs @@ -0,0 +1,275 @@ +using Microsoft.NET.HostModel.AppHost; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; +using System.Text.Json; +using System.Text.RegularExpressions; + +namespace MiniInstaller; + +public static class LibAndDepHandling { + public static void DeleteSystemLibs() { + Logger.LogLine("Deleting system libraries"); + + foreach (string file in Directory.GetFiles(Globals.PathGame)) { + if (!MiscUtil.IsSystemLibrary(file)) + continue; + Logger.LogLine($"Deleting {file}"); + File.Delete(file); + } + } + + public static void SetupNativeLibs() { + string[] libSrcs; // Later entries take priority + string libDstDir; + Dictionary dllMap = new Dictionary(); + + switch (Globals.Platform) { + case Globals.InstallPlatform.Windows: { + // Setup Windows native libs + if (Environment.Is64BitOperatingSystem) { + libSrcs = new string[] { Path.Combine(Globals.PathEverestLib, "lib64-win-x64"), Path.Combine(Globals.PathGame, "runtimes", "win-x64", "native") }; + libDstDir = Path.Combine(Globals.PathGame, "lib64-win-x64"); + dllMap.Add("fmodstudio64.dll", "fmodstudio.dll"); + } else { + // We can take some native libraries from the vanilla install + libSrcs = new string[] { + Path.Combine(Globals.PathOrig, "fmod.dll"), Path.Combine(Globals.PathOrig, "fmodstudio.dll"), Path.Combine(Globals.PathOrig, "steam_api.dll"), + Path.Combine(Globals.PathEverestLib, "lib64-win-x86"), Path.Combine(Globals.PathGame, "runtimes", "win-x86", "native") + }; + libDstDir = Path.Combine(Globals.PathGame, "lib64-win-x86"); + } + } break; + case Globals.InstallPlatform.Linux: { + // Setup Linux native libs + libSrcs = new string[] { Path.Combine(Globals.PathOrig, "lib64"), Path.Combine(Globals.PathEverestLib, "lib64-linux"), Path.Combine(Globals.PathGame, "runtimes", "linux-x64", "native") }; + libDstDir = Path.Combine(Globals.PathGame, "lib64-linux"); + MiscUtil.ParseMonoNativeLibConfig(Path.Combine(Globals.PathOrig, "Celeste.exe.config"), "linux", dllMap, "lib{0}.so"); + MiscUtil.ParseMonoNativeLibConfig(Path.Combine(Globals.PathOrig, "FNA.dll.config"), "linux", dllMap, "lib{0}.so"); + dllMap.Add("libSDL2_image-2.0.so.0", "libSDL2_image.so"); // Required by EverestSplash + } break; + case Globals.InstallPlatform.MacOS:{ + // Setup MacOS native libs + libSrcs = new string[] { Path.Combine(Globals.PathOrig, "osx"), Path.Combine(Globals.PathEverestLib, "lib64-osx"), Path.Combine(Globals.PathGame, "runtimes", "osx", "native") }; + libDstDir = Path.Combine(Globals.PathGame, "lib64-osx"); + MiscUtil.ParseMonoNativeLibConfig(Path.Combine(Globals.PathOrig, "Celeste.exe.config"), "osx", dllMap, "lib{0}.dylib"); + MiscUtil.ParseMonoNativeLibConfig(Path.Combine(Globals.PathOrig, "FNA.dll.config"), "osx", dllMap, "lib{0}.dylib"); + dllMap.Add("libSDL2_image-2.0.0.dylib", "libSDL2_image.dylib"); // Required by EverestSplash + } break; + default: return; + } + + // Copy native libraries for the OS + if (!Directory.Exists(libDstDir)) + Directory.CreateDirectory(libDstDir); + + foreach (string libSrc in libSrcs) { + if (!Directory.Exists(libSrc)) + continue; + + void CopyNativeLib(string src, string dst) { + string symlinkPath = null; + if (dllMap.TryGetValue(Path.GetFileName(dst), out string mappedName)) { + // On Linux, additionally create a symlink for the unmapped path + // Luckilfy for us only Linux requires such symlinks, as Windows can't create them + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + symlinkPath = dst; + + dst = Path.Combine(Path.GetDirectoryName(dst), mappedName); + } + + File.Copy(src, dst, true); + + if (symlinkPath != null && symlinkPath != dst) { + File.Delete(symlinkPath); + File.CreateSymbolicLink(symlinkPath, Path.GetRelativePath(Path.GetDirectoryName(symlinkPath)!, dst)); + } + } + + if (File.Exists(libSrc)) { + string libDst = Path.Combine(libDstDir, Path.GetFileName(libSrc)); + Logger.LogLine($"Copying native library from {libSrc} -> {libDst}"); + CopyNativeLib(libSrc, libDst); + } else if (Directory.Exists(libSrc)) { + Logger.LogLine($"Copying native libraries from {libSrc} -> {libDstDir}"); + foreach (string fileSrc in Directory.GetFiles(libSrc)) + CopyNativeLib(fileSrc, Path.Combine(libDstDir, Path.GetRelativePath(libSrc, fileSrc))); + } + } + + // Delete old libraries + foreach (string libFile in Globals.WindowsNativeLibFileNames) + File.Delete(Path.Combine(Globals.PathGame, libFile)); + + foreach (string libDir in new string[] { "lib", "lib64", "everest-lib64", "runtimes" }) { + if (Directory.Exists(Path.Combine(Globals.PathGame, libDir))) + Directory.Delete(Path.Combine(Globals.PathGame, libDir), true); + } + + if (Globals.PathOSXExecDir != null && Path.Exists(Path.Combine(Globals.PathOSXExecDir, "osx"))) + Directory.Delete(Path.Combine(Globals.PathOSXExecDir, "osx"), true); + + // Finally make EverestSplash executable + if (Globals.Platform is Globals.InstallPlatform.Linux or Globals.InstallPlatform.MacOS) { + string splashTarget = Globals.Platform switch { + Globals.InstallPlatform.Linux => "EverestSplash-linux", + Globals.InstallPlatform.MacOS => "EverestSplash-osx", + _ => throw new InvalidOperationException(), + }; + // Permission flags may get overwritten in the packaging process + Process chmodProc = + Process.Start(new ProcessStartInfo("chmod", $"u+x \"EverestSplash/{splashTarget}\"")); + chmodProc?.WaitForExit(); + if (chmodProc?.ExitCode != 0) Logger.LogLine("Failed to set EverestSplash executable flag"); + } + + } + + public static void CopyControllerDB() { + File.Copy(Path.Combine(Globals.PathEverestLib, "gamecontrollerdb.txt"), Path.Combine(Globals.PathGame, "gamecontrollerdb.txt"), true); + Logger.LogLine("Copied gamecontrollerdb.txt"); + } + + public static void CreateRuntimeConfigFiles(string execAsm, string[] manualDeps = null) { + manualDeps ??= Array.Empty(); + + Logger.LogLine($"Creating .NET runtime configuration files for {execAsm}"); + + //Determine current .NET version + string frameworkName = Assembly.GetExecutingAssembly().GetCustomAttribute().FrameworkName; + if(!frameworkName.StartsWith(".NETCoreApp,Version=v")) + throw new Exception($"Invalid target framework name! - '{frameworkName}'"); + + string netVer = frameworkName.Substring(".NETCoreApp,Version=v".Length); + if(!Regex.IsMatch(netVer, @"\d+\.\d+")) + throw new Exception($"Invalid target .NET version! - '{netVer}'"); + + //.runtimeconfig.json + using (FileStream fs = File.OpenWrite(Path.ChangeExtension(execAsm, ".runtimeconfig.json"))) + using (Utf8JsonWriter writer = new Utf8JsonWriter(fs, new JsonWriterOptions() { Indented = true })) { + writer.WriteStartObject(); + writer.WriteStartObject("runtimeOptions"); + writer.WriteString("tfm", $"net{netVer}"); + writer.WriteStartObject("framework"); + writer.WriteString("name", "Microsoft.NETCore.App"); + writer.WriteString("version", $"{netVer}.0"); + writer.WriteEndObject(); + writer.WriteEndObject(); + writer.WriteEndObject(); + } + + //.deps.json + Dictionary> asms = new Dictionary>(); + + void DiscoverAssemblies(string asm) { + if(asms.ContainsKey(asm)) + return; + + Dictionary deps = MiscUtil.GetPEAssemblyReferences(asm); + asms.Add(asm, deps); + + foreach((string dep, Version _) in deps) { + string depPath = Path.Combine(Path.GetDirectoryName(asm), $"{dep}.dll"); + if (File.Exists(depPath)) + DiscoverAssemblies(depPath); + } + } + DiscoverAssemblies(execAsm); + foreach (string dep in manualDeps) + DiscoverAssemblies(dep); + + using (FileStream fs = File.OpenWrite(Path.ChangeExtension(execAsm, ".deps.json"))) + using (Utf8JsonWriter writer = new Utf8JsonWriter(fs, new JsonWriterOptions() { Indented = true })) { + writer.WriteStartObject(); + + writer.WriteStartObject("runtimeTarget"); + writer.WriteString("name", frameworkName); + writer.WriteString("signature", ""); + writer.WriteEndObject(); + + writer.WriteStartObject("compilationOptions"); + writer.WriteEndObject(); + + writer.WriteStartObject("targets"); + writer.WriteStartObject(frameworkName); + foreach ((string asmPath, Dictionary asmDeps) in asms) { + writer.WriteStartObject($"{Path.GetFileNameWithoutExtension(asmPath)}/{MiscUtil.GetPEAssemblyVersion(asmPath)}"); + + writer.WriteStartObject("runtime"); + writer.WriteStartObject(Path.GetFileName(asmPath)); + writer.WriteEndObject(); + writer.WriteEndObject(); + + if (asmDeps.Count > 0) { + writer.WriteStartObject("dependencies"); + foreach (var dep in asmDeps) + writer.WriteString(dep.Key, dep.Value.ToString()); + writer.WriteEndObject(); + } + + writer.WriteEndObject(); + } + writer.WriteEndObject(); + writer.WriteEndObject(); + + writer.WriteStartObject("libraries"); + foreach ((string asmPath, Dictionary asmDeps) in asms) { + writer.WriteStartObject($"{Path.GetFileNameWithoutExtension(asmPath)}/{MiscUtil.GetPEAssemblyVersion(asmPath)}"); + writer.WriteString("type", (asmPath == execAsm) ? "project" : "reference"); + writer.WriteBoolean("servicable", false); + writer.WriteString("sha512", string.Empty); + writer.WriteEndObject(); + } + writer.WriteEndObject(); + + writer.WriteEndObject(); + } + } + + public static void SetupAppHosts(string appExe, string appDll, string resDll = null) { + // We only support setting copying the host resources on Windows + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + resDll = null; + + // Delete MonoKickstart files + File.Delete(Path.ChangeExtension(appExe, ".bin.x86")); + File.Delete(Path.ChangeExtension(appExe, ".bin.x86_64")); + File.Delete($"{appExe}.config"); + File.Delete(Path.Combine(Path.GetDirectoryName(appExe), "monoconfig")); + File.Delete(Path.Combine(Path.GetDirectoryName(appExe), "monomachineconfig")); + File.Delete(Path.Combine(Path.GetDirectoryName(appExe), "FNA.dll.config")); + + string hostsDir = Path.Combine(Globals.PathGame, "piton-apphosts"); + + switch (Globals.Platform) { + case Globals.InstallPlatform.Windows: { + // Bind Windows apphost + Logger.LogLine($"Binding Windows {(Environment.Is64BitOperatingSystem ? "64" : "32")} bit apphost {appExe}"); + HostWriter.CreateAppHost( + Path.Combine(hostsDir, $"win.{(Environment.Is64BitOperatingSystem ? "x64" : "x86")}.exe"), + appExe, Path.GetRelativePath(Path.GetDirectoryName(appExe), appDll), + assemblyToCopyResorcesFrom: resDll, + windowsGraphicalUserInterface: true + ); + } break; + case Globals.InstallPlatform.Linux:{ + // Bind Linux apphost + Logger.LogLine($"Binding Linux apphost {Path.ChangeExtension(appExe, null)}"); + HostWriter.CreateAppHost(Path.Combine(hostsDir, "linux"), Path.ChangeExtension(appExe, null), Path.GetRelativePath(Path.GetDirectoryName(appExe), appDll)); + } break; + case Globals.InstallPlatform.MacOS: { + // Bind OS X apphost + Logger.LogLine($"Binding OS X apphost {Path.ChangeExtension(appExe, null)}"); + HostWriter.CreateAppHost(Path.Combine(hostsDir, "osx"), Path.ChangeExtension(appExe, null), Path.GetRelativePath(Path.GetDirectoryName(appExe), appDll)); + + File.Delete(Path.Combine(Globals.PathOSXExecDir, Path.GetFileNameWithoutExtension(appExe))); + File.CreateSymbolicLink(Path.Combine(Globals.PathOSXExecDir, Path.GetFileNameWithoutExtension(appExe)), + Path.GetRelativePath(Globals.PathOSXExecDir, Path.ChangeExtension(appExe, null))); + } break; + } + } +} \ No newline at end of file diff --git a/MiniInstaller/Logger.cs b/MiniInstaller/Logger.cs new file mode 100644 index 000000000..d7b018cc9 --- /dev/null +++ b/MiniInstaller/Logger.cs @@ -0,0 +1,49 @@ +using Celeste.Mod.Helpers; +using System; +using System.IO; + +namespace MiniInstaller; + +// public static partial class Program { +// +// // This can be set from the in-game installer via reflection. +// public static Action LineLogger; +// } + +public static class Logger { + private static Action LineLogger; + + public static void LogLine(string line) { + LineLogger?.Invoke(line); + Console.WriteLine(line); + } + + public static void LogErr(string line) { + LineLogger?.Invoke(line); + Console.Error.WriteLine(line); + } + + public static DisposableTuple SetupLogger() { + if (File.Exists(Globals.PathLog)) + File.Delete(Globals.PathLog); + Stream fileStream = File.OpenWrite(Globals.PathLog); + StreamWriter fileWriter = new StreamWriter(fileStream, Console.OutputEncoding); + LogWriter logWriter = new LogWriter(Console.Out, Console.Error, fileWriter); + + return new DisposableTuple(logWriter, fileWriter, fileStream); + } + + + public class DisposableTuple : IDisposable { + private readonly IDisposable[] _iDisposables; + public DisposableTuple(params IDisposable[] disposables) { + _iDisposables = disposables; + } + + public void Dispose() { + foreach (IDisposable iDisposable in _iDisposables) { + iDisposable.Dispose(); + } + } + } +} \ No newline at end of file diff --git a/MiniInstaller/MiscUtil.cs b/MiniInstaller/MiscUtil.cs new file mode 100644 index 000000000..e1b4d0245 --- /dev/null +++ b/MiniInstaller/MiscUtil.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection.Metadata; +using System.Reflection.PortableExecutable; +using System.Xml; + +namespace MiniInstaller; + +public static class MiscUtil { + + public static Version GetPEAssemblyVersion(string path) { + using (FileStream fs = File.OpenRead(path)) + using (PEReader pe = new PEReader(fs)) + return pe.GetMetadataReader().GetAssemblyDefinition().Version; + } + + public static Dictionary GetPEAssemblyReferences(string path) { + using (FileStream fs = File.OpenRead(path)) + using (PEReader pe = new PEReader(fs)) { + MetadataReader meta = pe.GetMetadataReader(); + + Dictionary deps = new Dictionary(); + foreach (AssemblyReference asmRef in meta.AssemblyReferences.Select(meta.GetAssemblyReference)) + deps.TryAdd(meta.GetString(asmRef.Name), asmRef.Version); + + return deps; + } + } + + public static void ParseMonoNativeLibConfig(string configFile, string os, Dictionary dllMap, string dllNameScheme) { + if (!File.Exists(configFile)) + return; + + Logger.LogLine($"Parsing Mono config file {configFile}"); + + //Read the config file + XmlDocument configDoc = new XmlDocument(); + configDoc.Load(configFile); + foreach (XmlNode node in configDoc.DocumentElement) { + if (node is not XmlElement dllmapElement || node.Name != "dllmap") + continue; + + // Check the dllmap entry OS + if (!dllmapElement.GetAttribute("os").Split(',').Contains(os)) + continue; + + // Add an entry to the dllmap + dllMap[dllmapElement.GetAttribute("target")] = string.Format(dllNameScheme, dllmapElement.GetAttribute("dll")); + } + } + + public static bool IsSystemLibrary(string file) { + if (Path.GetExtension(file) != ".dll") + return false; + + if (Path.GetFileName(file).StartsWith("System.") && !Globals.EverestSystemLibs.Contains(Path.GetFileName(file))) + return true; + + return new string[] { + "mscorlib.dll", + "Mono.Posix.dll", + "Mono.Security.dll" + }.Any(name => Path.GetFileName(file).Equals(name, StringComparison.OrdinalIgnoreCase)); + } + + // This is not "pure" but I guess it also somewhat fits here + public static void MoveExecutable(string srcPath, string dstPath) { + File.Delete(dstPath); + File.Move(srcPath, dstPath); + + if (Path.GetFullPath(Path.ChangeExtension(srcPath, null)) != Path.GetFullPath(Path.ChangeExtension(dstPath, null))) { + if (File.Exists(Path.ChangeExtension(srcPath, ".pdb"))) { + File.Delete(Path.ChangeExtension(dstPath, ".pdb")); + File.Move(Path.ChangeExtension(srcPath, ".pdb"), Path.ChangeExtension(dstPath, ".pdb")); + } + + if (File.Exists(Path.ChangeExtension(srcPath, ".mdb"))) { + File.Delete(Path.ChangeExtension(dstPath, ".mdb")); + File.Move(Path.ChangeExtension(srcPath, ".mdb"), Path.ChangeExtension(dstPath, ".mdb")); + } + } + } +} \ No newline at end of file diff --git a/MiniInstaller/Program.cs b/MiniInstaller/Program.cs index 801801d8b..6836ff033 100644 --- a/MiniInstaller/Program.cs +++ b/MiniInstaller/Program.cs @@ -1,68 +1,15 @@ -using Celeste.Mod.Helpers; -using Microsoft.NET.HostModel.AppHost; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Diagnostics; +using System; using System.IO; using System.Linq; using System.Reflection; -using System.Reflection.Metadata; -using System.Reflection.PortableExecutable; using System.Runtime.InteropServices; -using System.Runtime.Versioning; -using System.Text.Json; -using System.Text.RegularExpressions; -using System.Threading; -using System.Xml; namespace MiniInstaller { - public class Program { - - public static readonly ReadOnlyCollection WindowsNativeLibFileNames = Array.AsReadOnly(new string[] { - "fmod.dll", "fmodstudio.dll", "CSteamworks.dll", "steam_api.dll", "FNA3D.dll", "SDL2.dll" - }); - - public static readonly ReadOnlyCollection EverestSystemLibs = Array.AsReadOnly(new string[] { - "System.Drawing.Common.dll", "System.Security.Permissions.dll", "System.Windows.Extensions.dll" - }); - - public enum InstallPlatform { - Windows, Linux, MacOS - } - public static InstallPlatform Platform; - - public static string PathUpdate; - public static string PathGame; - public static string PathOSXExecDir; - public static string PathCelesteExe; - public static string PathEverestDLL; - public static string PathEverestLib; - public static string PathOrig; - public static string PathLog; - public static string PathTmp; - - public static Assembly AsmMonoMod; - public static Assembly AsmHookGen; - public static Assembly AsmNETCoreifier; - - // This can be set from the in-game installer via reflection. - public static Action LineLogger; - public static void LogLine(string line) { - LineLogger?.Invoke(line); - Console.WriteLine(line); - } - - public static void LogErr(string line) { - LineLogger?.Invoke(line); - Console.Error.WriteLine(line); - } - + public static partial class Program { public static int Main(string[] args) { - if (args.Length == 0) return Standard(args); + if (args.Length == 0) return StandardMode(args); if (args[0] == "--fastmode") return FastMode(args); - return Standard(args); + return StandardMode(args); } public static bool Init() { @@ -74,10 +21,13 @@ public static bool Init() { // Set working directory Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!); - if (!SetupPaths()) { + if (!Globals.SetupPaths()) { // setting up paths failed (Celeste.exe was not found). return false; } + + + Globals.DetermineInstallPlatform(); // .NET hates it when strong-named dependencies get updated. AppDomain.CurrentDomain.AssemblyResolve += (asmSender, asmArgs) => { @@ -89,8 +39,8 @@ public static bool Init() { if (asm != null) return asm; - if (PathUpdate != null) - return Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(PathUpdate), asmName.Name + ".dll")); + if (Globals.PathUpdate != null) + return Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(Globals.PathUpdate), asmName.Name + ".dll")); return null; }; @@ -98,88 +48,70 @@ public static bool Init() { return true; } - public static DisposableTuple SetupLogger() { - if (File.Exists(PathLog)) - File.Delete(PathLog); - Stream fileStream = File.OpenWrite(PathLog); - StreamWriter fileWriter = new StreamWriter(fileStream, Console.OutputEncoding); - LogWriter logWriter = new LogWriter(Console.Out, Console.Error, fileWriter); - - return new DisposableTuple(logWriter, fileWriter, fileStream); - } - - public static int Standard(string[] args) { + public static int StandardMode(string[] args) { if (!Init()) return 1; - - // Handle creating backup symlinks after obtaining elevation - if (args.Length > 0 && args[0] == $"{nameof(CreateBackupSymlinksWithElevation)}_PostElevationRequest") { - PathGame = args[1]; - PathOrig = args[2]; - CreateBackupSymlinks(); - return 0; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { + if (WindowsElevationRequest.HandlePostElevationBackup(args)) return 0; } Console.WriteLine("Everest MiniInstaller"); - using DisposableTuple _ = SetupLogger(); + using Logger.DisposableTuple _ = Logger.SetupLogger(); try { - WaitForGameExit(); + InGameUpdaterHelper.WaitForGameExit(); - DetermineInstallPlatform(); + BackUp.Backup(); - Backup(); + InGameUpdaterHelper.MoveFilesFromUpdate(); - MoveFilesFromUpdate(); + if (File.Exists(Globals.PathEverestDLL)) + File.Delete(Globals.PathEverestDLL); - if (File.Exists(PathEverestDLL)) - File.Delete(PathEverestDLL); - - if (Platform == InstallPlatform.MacOS && !File.Exists(Path.Combine(PathGame, "Celeste.png"))) - File.Move(Path.Combine(PathGame, "Celeste-icon.png"), Path.Combine(PathGame, "Celeste.png")); + if (Globals.Platform == Globals.InstallPlatform.MacOS && !File.Exists(Path.Combine(Globals.PathGame, "Celeste.png"))) + File.Move(Path.Combine(Globals.PathGame, "Celeste-icon.png"), Path.Combine(Globals.PathGame, "Celeste.png")); else - File.Delete(Path.Combine(PathGame, "Celeste-icon.png")); + File.Delete(Path.Combine(Globals.PathGame, "Celeste-icon.png")); - DeleteSystemLibs(); - SetupNativeLibs(); - CopyControllerDB(); + LibAndDepHandling.DeleteSystemLibs(); + LibAndDepHandling.SetupNativeLibs(); + LibAndDepHandling.CopyControllerDB(); - if (AsmMonoMod == null || AsmNETCoreifier == null) - LoadModders(); + DepCalls.LoadModders(); - ConvertToNETCore(Path.Combine(PathOrig, "Celeste.exe"), PathCelesteExe); + DepCalls.ConvertToNETCore(Path.Combine(Globals.PathOrig, "Celeste.exe"), Globals.PathCelesteExe); - string everestModDLL = Path.ChangeExtension(PathCelesteExe, ".Mod.mm.dll"); - string[] mods = new string[] { PathEverestLib, everestModDLL }; - RunMonoMod(Path.Combine(PathEverestLib, "FNA.dll"), Path.Combine(PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well - RunMonoMod(PathCelesteExe, dllPaths: mods); + string everestModDLL = Path.ChangeExtension(Globals.PathCelesteExe, ".Mod.mm.dll"); + string[] mods = new string[] { Globals.PathEverestLib, everestModDLL }; + DepCalls.RunMonoMod(Path.Combine(Globals.PathEverestLib, "FNA.dll"), Path.Combine(Globals.PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well + DepCalls.RunMonoMod(Globals.PathCelesteExe, dllPaths: mods); - string hookGenOutput = Path.Combine(PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(PathCelesteExe), ".dll")); - RunHookGen(PathCelesteExe, PathCelesteExe); - RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer + string hookGenOutput = Path.Combine(Globals.PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(Globals.PathCelesteExe), ".dll")); + DepCalls.RunHookGen(Globals.PathCelesteExe, Globals.PathCelesteExe); + DepCalls.RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer - MoveExecutable(PathCelesteExe, PathEverestDLL); - CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); - SetupAppHosts(PathCelesteExe, PathEverestDLL, PathEverestDLL); + MiscUtil.MoveExecutable(Globals.PathCelesteExe, Globals.PathEverestDLL); + LibAndDepHandling.CreateRuntimeConfigFiles(Globals.PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); + LibAndDepHandling.SetupAppHosts(Globals.PathCelesteExe, Globals.PathEverestDLL, Globals.PathEverestDLL); - CombineXMLDoc(Path.ChangeExtension(PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(PathCelesteExe, ".xml")); + XmlDoc.CombineXMLDoc(Path.ChangeExtension(Globals.PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(Globals.PathCelesteExe, ".xml")); // If we're updating, start the game. Otherwise, close the window. - if (PathUpdate != null) { - StartGame(); + if (Globals.PathUpdate != null) { + InGameUpdaterHelper.StartGame(); } } catch (Exception e) { string msg = e.ToString(); - LogLine(""); - LogErr(msg); - LogErr(""); - LogErr("Installing Everest failed."); - if (msg.Contains("--->")) - LogErr("Please review the error after the '--->' to see if you can fix it on your end."); - LogErr(""); - LogErr("If you need help, please create a new issue on GitHub @ https://github.com/EverestAPI/Everest"); - LogErr("or join the #modding_help channel on Discord (invite in the repo)."); - LogErr("Make sure to upload your log file."); + Logger.LogLine(""); + Logger.LogErr(msg); + Logger.LogErr(""); + Logger.LogErr("Installing Everest failed."); + if (msg.Contains("--->")) Logger.LogErr("Please review the error after the '--->' to see if you can fix it on your end."); + Logger.LogErr(""); + Logger.LogErr("If you need help, please create a new issue on GitHub @ https://github.com/EverestAPI/Everest"); + Logger.LogErr("or join the #modding_help channel on Discord (invite in the repo)."); + Logger.LogErr("Make sure to upload your log file."); return 1; } finally { @@ -204,8 +136,6 @@ public static int Standard(string[] args) { /// "apphost": Only if "maingame" is also present, forces the regeneration of an apphost and runtime config files /// "xmldoc": Only if "xmldoc" is also present, combines xmldocs /// - /// - /// public static int FastMode(string[] args) { bool doMainGame = false; bool doFNA = false; @@ -230,64 +160,63 @@ public static int FastMode(string[] args) { if (!Init()) return 1; Console.WriteLine("Everest MiniInstaller - FastMode"); - using DisposableTuple _ = SetupLogger(); + using Logger.DisposableTuple _ = Logger.SetupLogger(); - DetermineInstallPlatform(); + Globals.DetermineInstallPlatform(); - if (!Directory.Exists(PathOrig)) { - LogErr("FastMode is unsupported from a fresh installation, run miniinstaller normally first."); + if (!Directory.Exists(Globals.PathOrig)) { + Logger.LogErr("FastMode is unsupported from a fresh installation, run miniinstaller normally first."); return 1; } - if (AsmMonoMod == null || AsmNETCoreifier == null) - LoadModders(); + DepCalls.LoadModders(); - string everestModDLL = Path.ChangeExtension(PathCelesteExe, ".Mod.mm.dll"); - string[] mods = new string[] { PathEverestLib, everestModDLL }; + string everestModDLL = Path.ChangeExtension(Globals.PathCelesteExe, ".Mod.mm.dll"); + string[] mods = new string[] { Globals.PathEverestLib, everestModDLL }; if (doMainGame) { - if (File.Exists(PathEverestDLL)) - File.Delete(PathEverestDLL); + if (File.Exists(Globals.PathEverestDLL)) + File.Delete(Globals.PathEverestDLL); // We really only need to coreify celeste - ConvertToNETCoreSingle(Path.Combine(PathOrig, "Celeste.exe"), PathEverestDLL); + DepCalls.ConvertToNETCoreSingle(Path.Combine(Globals.PathOrig, "Celeste.exe"), Globals.PathEverestDLL); } if (doFNA) { - RunMonoMod(Path.Combine(PathEverestLib, "FNA.dll"), Path.Combine(PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well + DepCalls.RunMonoMod(Path.Combine(Globals.PathEverestLib, "FNA.dll"), Path.Combine(Globals.PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well } if (doMainGame) { - RunMonoMod(PathEverestDLL, dllPaths: mods); + DepCalls.RunMonoMod(Globals.PathEverestDLL, dllPaths: mods); } // This should never change no matter the current settings - string hookGenOutput = Path.Combine(PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(PathCelesteExe), ".dll")); + string hookGenOutput = Path.Combine(Globals.PathGame, "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(Globals.PathCelesteExe), ".dll")); if (doHookGen) { - RunHookGen(PathEverestDLL, PathCelesteExe); - RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer + DepCalls.RunHookGen(Globals.PathEverestDLL, Globals.PathCelesteExe); + DepCalls.RunMonoMod(hookGenOutput, dllPaths: mods); // We need to fix some MonoMod crimes, so relink it against the legacy MonoMod layer } if (doMainGame) { // There's usually no reason to do this more than once ever, so don't unless explicitly told // And assembly references changing is also a rare occasion, so skip it as well if (doAppHost) { - CreateRuntimeConfigFiles(PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); - SetupAppHosts(PathCelesteExe, PathEverestDLL, PathEverestDLL); + LibAndDepHandling.CreateRuntimeConfigFiles(Globals.PathEverestDLL, new string[] { everestModDLL, hookGenOutput }); + LibAndDepHandling.SetupAppHosts(Globals.PathCelesteExe, Globals.PathEverestDLL, Globals.PathEverestDLL); } // Combining xml docs is slow, and most of the time not even required if (doXmlDoc) { - CombineXMLDoc(Path.ChangeExtension(PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(PathCelesteExe, ".xml")); + XmlDoc.CombineXMLDoc(Path.ChangeExtension(Globals.PathCelesteExe, ".Mod.mm.xml"), Path.ChangeExtension(Globals.PathCelesteExe, ".xml")); } } } catch (Exception e) { string msg = e.ToString(); - LogLine(""); - LogErr(msg); - LogErr(""); - LogErr("Installing Everest with FastMode failed."); - LogErr($"Settings: ({nameof(doMainGame)}, {nameof(doFNA)}, {nameof(doHookGen)}, {nameof(doAppHost)}) -> ({doMainGame}, {doFNA}, {doHookGen}, {doAppHost})"); - LogErr("Try rerunning fast mode with more settings enabled, otherwise do a full standard run."); + Logger.LogLine(""); + Logger.LogErr(msg); + Logger.LogErr(""); + Logger.LogErr("Installing Everest with FastMode failed."); + Logger.LogErr($"Settings: ({nameof(doMainGame)}, {nameof(doFNA)}, {nameof(doHookGen)}, {nameof(doAppHost)}) -> ({doMainGame}, {doFNA}, {doHookGen}, {doAppHost})"); + Logger.LogErr("Try rerunning fast mode with more settings enabled, otherwise do a full standard run."); return 1; } finally { Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", ""); @@ -297,946 +226,5 @@ public static int FastMode(string[] args) { return 0; } - - public static bool SetupPaths() { - PathGame = Directory.GetCurrentDirectory(); - Console.WriteLine(PathGame); - - if (Path.GetFileName(PathGame) == "everest-update" && ( - File.Exists(Path.Combine(Path.GetDirectoryName(PathGame), "Celeste.exe")) || - File.Exists(Path.Combine(Path.GetDirectoryName(PathGame), "Celeste.dll")) - )) { - // We're updating Everest via the in-game installler. - PathUpdate = PathGame; - PathGame = Path.GetDirectoryName(PathUpdate); - } - - PathCelesteExe = Path.Combine(PathGame, "Celeste.exe"); - if (!File.Exists(PathCelesteExe) && !File.Exists(Path.ChangeExtension(PathCelesteExe, ".dll"))) { - LogErr("Celeste.exe not found!"); - LogErr("Did you extract the .zip into the same place as Celeste?"); - return false; - } - - // Here lies a reminder that patching into Everest.exe only caused confusion and issues. - // RIP Everest.exe 2019 - 2020 - // PathEverestExe = PathCelesteExe; - PathEverestDLL = Path.ChangeExtension(PathCelesteExe, ".dll"); - PathEverestLib = Path.Combine(Path.GetDirectoryName(PathCelesteExe), "everest-lib"); - - PathOrig = Path.Combine(PathGame, "orig"); - PathLog = Path.Combine(PathGame, "miniinstaller-log.txt"); - - if (!Directory.Exists(Path.Combine(PathGame, "Mods"))) { - LogLine("Creating Mods directory"); - Directory.CreateDirectory(Path.Combine(PathGame, "Mods")); - } - - // Can't check for platform as some people could be running MiniInstaller via wine. - if (PathGame.Replace(Path.DirectorySeparatorChar, '/').Trim('/').EndsWith(".app/Contents/Resources")) { - PathOSXExecDir = Path.Combine(Path.GetDirectoryName(PathGame), "MacOS"); - if (!Directory.Exists(PathOSXExecDir)) - PathOSXExecDir = null; - } - - PathTmp = Directory.CreateTempSubdirectory("Everest_MiniInstaller").FullName; - - return true; - } - - public static void WaitForGameExit() { - if (int.TryParse(Environment.GetEnvironmentVariable("EVEREST_UPDATE_CELESTE_PID"), out int celestePid)) { - try { - Process celesteProc = Process.GetProcessById(celestePid); - celesteProc.Kill(false); - celesteProc.WaitForExit(); - } catch {} - } - - if ( - (File.Exists(PathCelesteExe) && !CanReadWrite(PathCelesteExe)) || - (File.Exists(PathEverestDLL) && !CanReadWrite(PathEverestDLL)) - ) { - LogErr("Celeste not read-writeable - waiting"); - while (!CanReadWrite(PathCelesteExe)) - Thread.Sleep(5000); - } - } - - public static void DetermineInstallPlatform() { - if (Environment.GetEnvironmentVariable("MINIINSTALLER_PLATFORM") is string platformEnv && !string.IsNullOrEmpty(platformEnv)) - Platform = Enum.Parse(platformEnv, true); - else { - // We can't use RuntimeInformation because of wine - if (PathOSXExecDir != null) - Platform = InstallPlatform.MacOS; - else if (File.Exists(Path.ChangeExtension(PathCelesteExe, null))) - Platform = InstallPlatform.Linux; - else - Platform = InstallPlatform.Windows; - } - - LogLine($"Determined install platform: {Platform}"); - } - - public static void Backup() { - // Backup / restore the original game files we're going to modify. - // TODO: Maybe invalidate the orig dir when the backed up version < installed version? - if (!Directory.Exists(PathOrig)) { - LogLine("Creating backup orig directory"); - Directory.CreateDirectory(PathOrig); - } - - // Backup the game executable - Backup(PathCelesteExe); - - // Backup game dependencies - BackupPEDeps(Path.Combine(PathOrig, Path.GetRelativePath(PathGame, PathCelesteExe)), PathGame); - - // Backup all system libraries explicitly, as we'll delete those - foreach (string file in Directory.GetFiles(PathGame)) { - if(IsSystemLibrary(file)) - Backup(file); - } - - // Backup MonoKickstart executable / config (for Linux + MacOS) - Backup(Path.Combine(PathOSXExecDir ?? PathGame, "Celeste")); - Backup(Path.Combine(PathGame, "Celeste.bin.x86")); - Backup(Path.Combine(PathGame, "Celeste.bin.x86_64")); - Backup(Path.Combine(PathGame, "monoconfig")); - Backup(Path.Combine(PathGame, "monomachineconfig")); - Backup(Path.Combine(PathGame, "FNA.dll.config")); - - // Backup native libraries - foreach (string libName in WindowsNativeLibFileNames) - Backup(Path.Combine(PathGame, libName)); - Backup(Path.Combine(PathGame, "lib")); - Backup(Path.Combine(PathGame, "lib64")); - if (PathOSXExecDir != null) - Backup(Path.Combine(PathOSXExecDir, "osx")); - - // Backup misc files - Backup(PathCelesteExe + ".config"); - Backup(Path.Combine(PathGame, "gamecontrollerdb.txt")); - - // Apply patch vanilla libraries - string patchLibsDir = Path.Combine(PathEverestLib, "lib-vanilla"); - if (Directory.Exists(patchLibsDir)) { - static void ApplyVanillaPatchLibs(string patchLibsDir, string targetDir) { - foreach (string src in Directory.GetFileSystemEntries(patchLibsDir)) { - string dst = Path.Combine(targetDir, Path.GetRelativePath(patchLibsDir, src)); - if (File.Exists(src)) { - if (File.Exists(dst)) - File.Delete(dst); - File.Move(src, dst); - } else if (Directory.Exists(src)) { - Directory.CreateDirectory(dst); - ApplyVanillaPatchLibs(src, dst); - } - } - } - - LogLine("Applying patch vanilla libraries"); - ApplyVanillaPatchLibs(patchLibsDir, PathOrig); - Directory.Delete(patchLibsDir, true); - } - - //Create symlinks - try { - CreateBackupSymlinks(); - } catch (Exception e) { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - throw; - } - - const uint ERROR_ACCESS_DENIED = 0x80070005U; - const uint ERROR_PRIVILEGE_NOT_HELD = 0x80070522U; - - const uint ERROR_INVALID_FUNCTION = 0x80070001U; - - switch (unchecked((uint) e.HResult)) { - case ERROR_ACCESS_DENIED or ERROR_PRIVILEGE_NOT_HELD: - LogLine("Failed to create backup symlinks due to missing privilege or access denial - asking user if they want to retry with elevation"); - // On Windows, offer to try again with elevation - if (!CreateBackupSymlinksWithElevation()) { - throw; - } - break; - case ERROR_INVALID_FUNCTION: - LogLine("Failed to create backup symlinks due to invalid function - warning user"); - if (!WarnAboutBackupSymlinkFilesystem()) { - throw; - } - break; - default: - throw; - } - } - } - - [SupportedOSPlatform("windows")] - private static bool CreateBackupSymlinksWithElevation() { - switch ( - MessageBox(0, """ - The installer requires administrator privileges during the first installation to link the vanilla installation to the modded one. - This is required to share save data with the "restart into vanilla" feature. - If denied, installation will continue, but saves will NOT be shared between vanilla and Everest. - - Proceed with administrator privileges? - """.Trim(), "Everest Installation Elevation Request", 0x00000003U | 0x00000040U | 0x00010000U) // MB_YESNOCANCEL | MB_ICONINFORMATION | MB_SETFOREGROUND - ) { - case 2: // IDCANCEL - LogLine("User cancelled installation - rethrowing original error"); - return false; - case 6: // IDYES - LogLine("User accepted elevation request - starting elevated process"); - - //Create symlinks with elevation - retry:; - try { - ProcessStartInfo startInfo = new ProcessStartInfo() { - FileName = Environment.ProcessPath ?? throw new Exception("No process path available"), - Verb = "RunAs", - UseShellExecute = true - }; - foreach (string arg in Environment.GetCommandLineArgs()[1..]) - startInfo.ArgumentList.Add(arg); - - startInfo.ArgumentList.Add($"{nameof(CreateBackupSymlinksWithElevation)}_PostElevationRequest"); - startInfo.ArgumentList.Add(PathGame); - startInfo.ArgumentList.Add(PathOrig); - - Process elevatedProc = Process.Start(startInfo); - elevatedProc.WaitForExit(); - if (elevatedProc.ExitCode == 0) { - LogLine("Succesfully created backup symlinks with elevation"); - break; - } - } catch (Win32Exception e) { - if (e.NativeErrorCode == 1223 || unchecked((uint) e.HResult) == 0x800704c7) // ERROR_CANCELLED - LogLine("User cancelled elevation request"); - else - throw; - } - - //Failed to create symlinks - LogLine("Failed to create backup symlinks with elevation - offering user to retry"); - - switch ( - MessageBox(0, """ - Failed to link the vanilla installation to the modded one with elevated privileges. - This could be caused by declining the elevation request. - Without elevation, installation will proceed normally, but saves will NOT be shared between vanilla and Everest. - - Would you like to retry? - """.Trim(), "Everest Installation Error", 0x00000006U | 0x00000010U | 0x00010000U) // MB_CANCELTRYCONTINUE | MB_ICONERROR | MB_SETFOREGROUND - ) { - case 2: // IDCANCEL - LogLine("User cancelled installation - rethrowing original error"); - return false; - case 10: // IDTRYAGAIN - LogLine("Retrying elevated symlink creation"); - goto retry; - case 11: // IDCONTINUE - LogLine("User chose to contine installation - running fallback logic"); - CreateBackupSymlinksFallback(); - break; - case 0: throw new Win32Exception(); - } - - break; - case 7: // IDNO - // Run fallback logic - LogLine("User denied elevation request - running fallback logic"); - CreateBackupSymlinksFallback(); - break; - case 0: throw new Win32Exception(); - } - - return true; - } - - [SupportedOSPlatform("windows")] - private static bool WarnAboutBackupSymlinkFilesystem() { - switch ( - MessageBox(0, """ - The installer failed to link the vanilla installation to the modded one due to missing support by your filesystem. - Installation can continue, but saves will NOT be shared between vanilla and Everest. - To fix this issue, install vanilla Celeste on an NTFS partition (this generally means a hard drive/SSD instead of an SD card or flash drive) and repeat the installation there. - """.Trim(), "Everest Installation Filesystem Warning", 0x00000001U | 0x00000030U | 0x00010000U) // MB_OKCANCEL | MB_ICONWARNING | MB_SETFOREGROUND) - ) { - case 2: // IDCANCEL - LogLine("User cancelled installation - rethrowing original error"); - return false; - case 1: // IDOK - LogLine("Continuing installation on non-NTFS filesystem - running fallback logic"); - CreateBackupSymlinksFallback(); - break; - case 0: - throw new Win32Exception(); - } - return true; - } - - private static void CreateBackupSymlinks() { - if (!Directory.Exists(Path.Combine(PathOrig, "Content"))) - Directory.CreateSymbolicLink(Path.Combine(PathOrig, "Content"), Path.GetRelativePath(PathOrig, Path.Combine(PathGame, "Content"))); - - if (Platform == InstallPlatform.Windows && !Directory.Exists(Path.Combine(PathOrig, "Saves"))) { - Directory.CreateDirectory(Path.Combine(PathGame, "Saves")); - Directory.CreateSymbolicLink(Path.Combine(PathOrig, "Saves"), Path.GetRelativePath(PathOrig, Path.Combine(PathGame, "Saves"))); - } - } - - private static void CreateBackupSymlinksFallback() { - if (!Directory.Exists(Path.Combine(PathOrig, "Content"))) { - static void CopyDirectory(string src, string dst) { - Directory.CreateDirectory(dst); - - foreach (string file in Directory.GetFiles(src)) - File.Copy(file, Path.Combine(dst, Path.GetRelativePath(src, file))); - - foreach (string dir in Directory.GetDirectories(src)) - CopyDirectory(dir, Path.Combine(dst, Path.GetRelativePath(src, dir))); - } - CopyDirectory(Path.Combine(PathGame, "Content"), Path.Combine(PathOrig, "Content")); - } - - // We can't have a fallback for the saves folder symlink - } - - public static void BackupPEDeps(string path, string depFolder, HashSet backedUpDeps = null) { - backedUpDeps ??= new HashSet() { path }; - - foreach (string dep in GetPEAssemblyReferences(path).Keys) { - string asmRefPath = Path.Combine(depFolder, $"{dep}.dll"); - if (!File.Exists(asmRefPath) || backedUpDeps.Contains(asmRefPath)) - continue; - - backedUpDeps.Add(asmRefPath); - if (File.Exists(Path.Combine(PathOrig, $"{dep}.dll"))) - continue; - - Backup(asmRefPath); - BackupPEDeps(asmRefPath, depFolder, backedUpDeps); - } - } - - public static void Backup(string from, string backupDst = null) { - string to = Path.Combine(backupDst ?? PathOrig, Path.GetFileName(from)); - if(Directory.Exists(from)) { - if (!Directory.Exists(to)) - Directory.CreateDirectory(to); - - foreach (string entry in Directory.GetFileSystemEntries(from)) - Backup(entry, to); - } else if(File.Exists(from)) { - if (File.Exists(from) && !File.Exists(to)) { - LogLine($"Backing up {from} => {to}"); - File.Copy(from, to); - } - } - } - - public static void MoveFilesFromUpdate(string srcPath = null, string dstPath = null) { - if (srcPath == null) { - if (PathUpdate == null) - return; - - LogLine("Moving files from update directory"); - srcPath ??= PathUpdate; - dstPath ??= PathGame; - - // Check if we have a new runtime (=there is a piton-runtime folder both in the game and the update directory) - if (Directory.Exists(Path.Combine(PathGame, "piton-runtime")) && Directory.Exists(Path.Combine(PathUpdate, "piton-runtime"))) - Directory.Delete(Path.Combine(PathGame, "piton-runtime"), true); - } - - if (!Directory.Exists(dstPath)) - Directory.CreateDirectory(dstPath); - - foreach (string entrySrc in Directory.GetFileSystemEntries(srcPath)) { - string entryDst = Path.Combine(dstPath, Path.GetRelativePath(srcPath, entrySrc)); - - if (File.Exists(entrySrc)) { - LogLine($"Copying {entrySrc} +> {entryDst}"); - File.Copy(entrySrc, entryDst, true); - } else - MoveFilesFromUpdate(entrySrc, entryDst); - } - } - - public static void DeleteSystemLibs() { - LogLine("Deleting system libraries"); - - foreach (string file in Directory.GetFiles(PathGame)) { - if (!IsSystemLibrary(file)) - continue; - LogLine($"Deleting {file}"); - File.Delete(file); - } - } - - public static void SetupNativeLibs() { - string[] libSrcs; // Later entries take priority - string libDstDir; - Dictionary dllMap = new Dictionary(); - - switch (Platform) { - case InstallPlatform.Windows: { - // Setup Windows native libs - if (Environment.Is64BitOperatingSystem) { - libSrcs = new string[] { Path.Combine(PathEverestLib, "lib64-win-x64"), Path.Combine(PathGame, "runtimes", "win-x64", "native") }; - libDstDir = Path.Combine(PathGame, "lib64-win-x64"); - dllMap.Add("fmodstudio64.dll", "fmodstudio.dll"); - } else { - // We can take some native libraries from the vanilla install - libSrcs = new string[] { - Path.Combine(PathOrig, "fmod.dll"), Path.Combine(PathOrig, "fmodstudio.dll"), Path.Combine(PathOrig, "steam_api.dll"), - Path.Combine(PathEverestLib, "lib64-win-x86"), Path.Combine(PathGame, "runtimes", "win-x86", "native") - }; - libDstDir = Path.Combine(PathGame, "lib64-win-x86"); - } - } break; - case InstallPlatform.Linux: { - // Setup Linux native libs - libSrcs = new string[] { Path.Combine(PathOrig, "lib64"), Path.Combine(PathEverestLib, "lib64-linux"), Path.Combine(PathGame, "runtimes", "linux-x64", "native") }; - libDstDir = Path.Combine(PathGame, "lib64-linux"); - ParseMonoNativeLibConfig(Path.Combine(PathOrig, "Celeste.exe.config"), "linux", dllMap, "lib{0}.so"); - ParseMonoNativeLibConfig(Path.Combine(PathOrig, "FNA.dll.config"), "linux", dllMap, "lib{0}.so"); - dllMap.Add("libSDL2_image-2.0.so.0", "libSDL2_image.so"); // Required by EverestSplash - } break; - case InstallPlatform.MacOS:{ - // Setup MacOS native libs - libSrcs = new string[] { Path.Combine(PathOrig, "osx"), Path.Combine(PathEverestLib, "lib64-osx"), Path.Combine(PathGame, "runtimes", "osx", "native") }; - libDstDir = Path.Combine(PathGame, "lib64-osx"); - ParseMonoNativeLibConfig(Path.Combine(PathOrig, "Celeste.exe.config"), "osx", dllMap, "lib{0}.dylib"); - ParseMonoNativeLibConfig(Path.Combine(PathOrig, "FNA.dll.config"), "osx", dllMap, "lib{0}.dylib"); - dllMap.Add("libSDL2_image-2.0.0.dylib", "libSDL2_image.dylib"); // Required by EverestSplash - } break; - default: return; - } - - // Copy native libraries for the OS - if (!Directory.Exists(libDstDir)) - Directory.CreateDirectory(libDstDir); - - foreach (string libSrc in libSrcs) { - if (!Directory.Exists(libSrc)) - continue; - - void CopyNativeLib(string src, string dst) { - string symlinkPath = null; - if (dllMap.TryGetValue(Path.GetFileName(dst), out string mappedName)) { - // On Linux, additionally create a symlink for the unmapped path - // Luckilfy for us only Linux requires such symlinks, as Windows can't create them - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - symlinkPath = dst; - - dst = Path.Combine(Path.GetDirectoryName(dst), mappedName); - } - - File.Copy(src, dst, true); - - if (symlinkPath != null && symlinkPath != dst) { - File.Delete(symlinkPath); - File.CreateSymbolicLink(symlinkPath, Path.GetRelativePath(Path.GetDirectoryName(symlinkPath)!, dst)); - } - } - - if (File.Exists(libSrc)) { - string libDst = Path.Combine(libDstDir, Path.GetFileName(libSrc)); - LogLine($"Copying native library from {libSrc} -> {libDst}"); - CopyNativeLib(libSrc, libDst); - } else if (Directory.Exists(libSrc)) { - LogLine($"Copying native libraries from {libSrc} -> {libDstDir}"); - foreach (string fileSrc in Directory.GetFiles(libSrc)) - CopyNativeLib(fileSrc, Path.Combine(libDstDir, Path.GetRelativePath(libSrc, fileSrc))); - } - } - - // Delete old libraries - foreach (string libFile in WindowsNativeLibFileNames) - File.Delete(Path.Combine(PathGame, libFile)); - - foreach (string libDir in new string[] { "lib", "lib64", "everest-lib64", "runtimes" }) { - if (Directory.Exists(Path.Combine(PathGame, libDir))) - Directory.Delete(Path.Combine(PathGame, libDir), true); - } - - if (PathOSXExecDir != null && Path.Exists(Path.Combine(PathOSXExecDir, "osx"))) - Directory.Delete(Path.Combine(PathOSXExecDir, "osx"), true); - - // Finally make EverestSplash executable - if (Platform is InstallPlatform.Linux or InstallPlatform.MacOS) { - string splashTarget = Platform switch { - InstallPlatform.Linux => "EverestSplash-linux", - InstallPlatform.MacOS => "EverestSplash-osx", - _ => throw new InvalidOperationException(), - }; - // Permission flags may get overwritten in the packaging process - Process chmodProc = - Process.Start(new ProcessStartInfo("chmod", $"u+x \"EverestSplash/{splashTarget}\"")); - chmodProc?.WaitForExit(); - if (chmodProc?.ExitCode != 0) - LogLine("Failed to set EverestSplash executable flag"); - } - - } - - public static void CopyControllerDB() { - File.Copy(Path.Combine(PathEverestLib, "gamecontrollerdb.txt"), Path.Combine(PathGame, "gamecontrollerdb.txt"), true); - LogLine("Copied gamecontrollerdb.txt"); - } - - public static void LoadModders() { - // We can't add MonoMod as a reference to MiniInstaller, as we don't want to accidentally lock the file. - // Instead, load it dynamically and invoke the entry point. - // We also need to lazily load any dependencies. - LogLine("Loading Mono.Cecil"); - LazyLoadAssembly(Path.Combine(PathGame, "Mono.Cecil.dll")); - LogLine("Loading Mono.Cecil.Mdb"); - LazyLoadAssembly(Path.Combine(PathGame, "Mono.Cecil.Mdb.dll")); - LogLine("Loading Mono.Cecil.Pdb"); - LazyLoadAssembly(Path.Combine(PathGame, "Mono.Cecil.Pdb.dll")); - LogLine("Loading MonoMod.Utils.dll"); - LazyLoadAssembly(Path.Combine(PathGame, "MonoMod.Utils.dll")); - LogLine("Loading MonoMod"); - AsmMonoMod ??= LazyLoadAssembly(Path.Combine(PathGame, "MonoMod.Patcher.dll")); - LogLine("Loading MonoMod.RuntimeDetour.dll"); - LazyLoadAssembly(Path.Combine(PathGame, "MonoMod.RuntimeDetour.dll")); - LogLine("Loading MonoMod.RuntimeDetour.HookGen"); - AsmHookGen ??= LazyLoadAssembly(Path.Combine(PathGame, "MonoMod.RuntimeDetour.HookGen.dll")); - LogLine("Loading NETCoreifier"); - AsmNETCoreifier ??= LazyLoadAssembly(Path.Combine(PathGame, "NETCoreifier.dll")); - } - - public static void RunMonoMod(string asmFrom, string asmTo = null, string[] dllPaths = null) { - asmTo ??= asmFrom; - dllPaths ??= new string[] { PathGame }; - - LogLine($"Running MonoMod for {asmFrom}"); - - string asmTmp = Path.Combine(PathTmp, Path.GetFileName(asmTo)); - try { - // We're lazy. - Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", PathGame); - Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", "0"); - int returnCode = (int) AsmMonoMod.EntryPoint.Invoke(null, new object[] { Enumerable.Repeat(asmFrom, 1).Concat(dllPaths).Append(asmTmp).ToArray() }); - - if (returnCode != 0) - File.Delete(asmTmp); - - if (!File.Exists(asmTmp)) - throw new Exception($"MonoMod failed creating a patched assembly: exit code {returnCode}!"); - - MoveExecutable(asmTmp, asmTo); - } finally { - File.Delete(asmTmp); - File.Delete(Path.ChangeExtension(asmTmp, "pdb")); - File.Delete(Path.ChangeExtension(asmTmp, "mdb")); - } - } - - public static void RunHookGen(string asm, string targetName) { - LogLine($"Running MonoMod.RuntimeDetour.HookGen for {asm}"); - // We're lazy. - Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", PathGame); - Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", "0"); - AsmHookGen.EntryPoint.Invoke(null, new object[] { new string[] { "--private", asm, Path.Combine(Path.GetDirectoryName(targetName), "MMHOOK_" + Path.ChangeExtension(Path.GetFileName(targetName), "dll")) } }); - } - - public static void ConvertToNETCore(string asmFrom, string asmTo = null, HashSet convertedAsms = null) { - asmTo ??= asmFrom; - convertedAsms ??= new HashSet(); - - if (!convertedAsms.Add(asmFrom)) - return; - - // Convert dependencies first - string[] deps = GetPEAssemblyReferences(asmFrom).Keys.ToArray(); - - if (deps.Contains("NETCoreifier")) - return; // Don't convert an assembly twice - - foreach (string dep in deps) { - string srcDepPath = Path.Combine(Path.GetDirectoryName(asmFrom), $"{dep}.dll"); - string dstDepPath = Path.Combine(Path.GetDirectoryName(asmTo), $"{dep}.dll"); - if (File.Exists(srcDepPath) && !IsSystemLibrary(srcDepPath)) - ConvertToNETCore(srcDepPath, dstDepPath, convertedAsms); - else if (File.Exists(dstDepPath) && !IsSystemLibrary(srcDepPath)) - ConvertToNETCore(dstDepPath, convertedAsms: convertedAsms); - } - - ConvertToNETCoreSingle(asmFrom, asmTo); - } - - public static void ConvertToNETCoreSingle(string asmFrom, string asmTo) { - LogLine($"Converting {asmFrom} to .NET Core"); - - string asmTmp = Path.Combine(PathTmp, Path.GetFileName(asmTo)); - try { - AsmNETCoreifier.GetType("NETCoreifier.Coreifier") - .GetMethod("ConvertToNetCore", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string), typeof(string) }, null) - .Invoke(null, new object[] { asmFrom, asmTmp }); - - MoveExecutable(asmTmp, asmTo); - } finally { - File.Delete(asmTmp); - File.Delete(Path.ChangeExtension(asmTmp, "pdb")); - File.Delete(Path.ChangeExtension(asmTmp, "mdb")); - } - } - - public static void MoveExecutable(string srcPath, string dstPath) { - File.Delete(dstPath); - File.Move(srcPath, dstPath); - - if (Path.GetFullPath(Path.ChangeExtension(srcPath, null)) != Path.GetFullPath(Path.ChangeExtension(dstPath, null))) { - if (File.Exists(Path.ChangeExtension(srcPath, ".pdb"))) { - File.Delete(Path.ChangeExtension(dstPath, ".pdb")); - File.Move(Path.ChangeExtension(srcPath, ".pdb"), Path.ChangeExtension(dstPath, ".pdb")); - } - - if (File.Exists(Path.ChangeExtension(srcPath, ".mdb"))) { - File.Delete(Path.ChangeExtension(dstPath, ".mdb")); - File.Move(Path.ChangeExtension(srcPath, ".mdb"), Path.ChangeExtension(dstPath, ".mdb")); - } - } - } - - public static void CreateRuntimeConfigFiles(string execAsm, string[] manualDeps = null) { - manualDeps ??= Array.Empty(); - - LogLine($"Creating .NET runtime configuration files for {execAsm}"); - - //Determine current .NET version - string frameworkName = Assembly.GetExecutingAssembly().GetCustomAttribute().FrameworkName; - if(!frameworkName.StartsWith(".NETCoreApp,Version=v")) - throw new Exception($"Invalid target framework name! - '{frameworkName}'"); - - string netVer = frameworkName.Substring(".NETCoreApp,Version=v".Length); - if(!Regex.IsMatch(netVer, @"\d+\.\d+")) - throw new Exception($"Invalid target .NET version! - '{netVer}'"); - - //.runtimeconfig.json - using (FileStream fs = File.OpenWrite(Path.ChangeExtension(execAsm, ".runtimeconfig.json"))) - using (Utf8JsonWriter writer = new Utf8JsonWriter(fs, new JsonWriterOptions() { Indented = true })) { - writer.WriteStartObject(); - writer.WriteStartObject("runtimeOptions"); - writer.WriteString("tfm", $"net{netVer}"); - writer.WriteStartObject("framework"); - writer.WriteString("name", "Microsoft.NETCore.App"); - writer.WriteString("version", $"{netVer}.0"); - writer.WriteEndObject(); - writer.WriteEndObject(); - writer.WriteEndObject(); - } - - //.deps.json - Dictionary> asms = new Dictionary>(); - - void DiscoverAssemblies(string asm) { - if(asms.ContainsKey(asm)) - return; - - Dictionary deps = GetPEAssemblyReferences(asm); - asms.Add(asm, deps); - - foreach((string dep, Version _) in deps) { - string depPath = Path.Combine(Path.GetDirectoryName(asm), $"{dep}.dll"); - if (File.Exists(depPath)) - DiscoverAssemblies(depPath); - } - } - DiscoverAssemblies(execAsm); - foreach (string dep in manualDeps) - DiscoverAssemblies(dep); - - using (FileStream fs = File.OpenWrite(Path.ChangeExtension(execAsm, ".deps.json"))) - using (Utf8JsonWriter writer = new Utf8JsonWriter(fs, new JsonWriterOptions() { Indented = true })) { - writer.WriteStartObject(); - - writer.WriteStartObject("runtimeTarget"); - writer.WriteString("name", frameworkName); - writer.WriteString("signature", ""); - writer.WriteEndObject(); - - writer.WriteStartObject("compilationOptions"); - writer.WriteEndObject(); - - writer.WriteStartObject("targets"); - writer.WriteStartObject(frameworkName); - foreach ((string asmPath, Dictionary asmDeps) in asms) { - writer.WriteStartObject($"{Path.GetFileNameWithoutExtension(asmPath)}/{GetPEAssemblyVersion(asmPath)}"); - - writer.WriteStartObject("runtime"); - writer.WriteStartObject(Path.GetFileName(asmPath)); - writer.WriteEndObject(); - writer.WriteEndObject(); - - if (asmDeps.Count > 0) { - writer.WriteStartObject("dependencies"); - foreach (var dep in asmDeps) - writer.WriteString(dep.Key, dep.Value.ToString()); - writer.WriteEndObject(); - } - - writer.WriteEndObject(); - } - writer.WriteEndObject(); - writer.WriteEndObject(); - - writer.WriteStartObject("libraries"); - foreach ((string asmPath, Dictionary asmDeps) in asms) { - writer.WriteStartObject($"{Path.GetFileNameWithoutExtension(asmPath)}/{GetPEAssemblyVersion(asmPath)}"); - writer.WriteString("type", (asmPath == execAsm) ? "project" : "reference"); - writer.WriteBoolean("servicable", false); - writer.WriteString("sha512", string.Empty); - writer.WriteEndObject(); - } - writer.WriteEndObject(); - - writer.WriteEndObject(); - } - } - - public static void SetupAppHosts(string appExe, string appDll, string resDll = null) { - // We only support setting copying the host resources on Windows - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - resDll = null; - - // Delete MonoKickstart files - File.Delete(Path.ChangeExtension(appExe, ".bin.x86")); - File.Delete(Path.ChangeExtension(appExe, ".bin.x86_64")); - File.Delete($"{appExe}.config"); - File.Delete(Path.Combine(Path.GetDirectoryName(appExe), "monoconfig")); - File.Delete(Path.Combine(Path.GetDirectoryName(appExe), "monomachineconfig")); - File.Delete(Path.Combine(Path.GetDirectoryName(appExe), "FNA.dll.config")); - - string hostsDir = Path.Combine(PathGame, "piton-apphosts"); - - switch (Platform) { - case InstallPlatform.Windows: { - // Bind Windows apphost - LogLine($"Binding Windows {(Environment.Is64BitOperatingSystem ? "64" : "32")} bit apphost {appExe}"); - HostWriter.CreateAppHost( - Path.Combine(hostsDir, $"win.{(Environment.Is64BitOperatingSystem ? "x64" : "x86")}.exe"), - appExe, Path.GetRelativePath(Path.GetDirectoryName(appExe), appDll), - assemblyToCopyResorcesFrom: resDll, - windowsGraphicalUserInterface: true - ); - } break; - case InstallPlatform.Linux:{ - // Bind Linux apphost - LogLine($"Binding Linux apphost {Path.ChangeExtension(appExe, null)}"); - HostWriter.CreateAppHost(Path.Combine(hostsDir, "linux"), Path.ChangeExtension(appExe, null), Path.GetRelativePath(Path.GetDirectoryName(appExe), appDll)); - } break; - case InstallPlatform.MacOS: { - // Bind OS X apphost - LogLine($"Binding OS X apphost {Path.ChangeExtension(appExe, null)}"); - HostWriter.CreateAppHost(Path.Combine(hostsDir, "osx"), Path.ChangeExtension(appExe, null), Path.GetRelativePath(Path.GetDirectoryName(appExe), appDll)); - - File.Delete(Path.Combine(PathOSXExecDir, Path.GetFileNameWithoutExtension(appExe))); - File.CreateSymbolicLink(Path.Combine(PathOSXExecDir, Path.GetFileNameWithoutExtension(appExe)), - Path.GetRelativePath(PathOSXExecDir, Path.ChangeExtension(appExe, null))); - } break; - } - } - - public static void StartGame() { - LogLine("Restarting Celeste"); - - // Let's not pollute the game with our MonoMod env vars. - Environment.SetEnvironmentVariable("MONOMOD_DEPDIRS", ""); - Environment.SetEnvironmentVariable("MONOMOD_MODS", ""); - Environment.SetEnvironmentVariable("MONOMOD_DEPENDENCY_MISSING_THROW", ""); - - Process game = new Process(); - // If the game was installed via Steam, it should restart in a Steam context on its own. - if (Platform != InstallPlatform.Windows) { - // The Linux and macOS version apphosts don't end in ".exe" - game.StartInfo.FileName = Path.ChangeExtension(PathCelesteExe, null); - } else { - game.StartInfo.FileName = PathCelesteExe; - } - game.StartInfo.WorkingDirectory = PathGame; - game.Start(); - } - - - // AFAIK there's no "clean" way to check for any file locks in C#. - static bool CanReadWrite(string path) { - try { - new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite | FileShare.Delete).Dispose(); - return true; - } catch { - return false; - } - } - - static bool IsSystemLibrary(string file) { - if (Path.GetExtension(file) != ".dll") - return false; - - if (Path.GetFileName(file).StartsWith("System.") && !EverestSystemLibs.Contains(Path.GetFileName(file))) - return true; - - return new string[] { - "mscorlib.dll", - "Mono.Posix.dll", - "Mono.Security.dll" - }.Any(name => Path.GetFileName(file).Equals(name, StringComparison.OrdinalIgnoreCase)); - } - - static void ParseMonoNativeLibConfig(string configFile, string os, Dictionary dllMap, string dllNameScheme) { - if (!File.Exists(configFile)) - return; - - LogLine($"Parsing Mono config file {configFile}"); - - //Read the config file - XmlDocument configDoc = new XmlDocument(); - configDoc.Load(configFile); - foreach (XmlNode node in configDoc.DocumentElement) { - if (node is not XmlElement dllmapElement || node.Name != "dllmap") - continue; - - // Check the dllmap entry OS - if (!dllmapElement.GetAttribute("os").Split(',').Contains(os)) - continue; - - // Add an entry to the dllmap - dllMap[dllmapElement.GetAttribute("target")] = string.Format(dllNameScheme, dllmapElement.GetAttribute("dll")); - } - } - - static Assembly LazyLoadAssembly(string path) { - LogLine($"Lazily loading {path}"); - ResolveEventHandler tmpResolver = (s, e) => { - string asmPath = Path.Combine(Path.GetDirectoryName(path), new AssemblyName(e.Name).Name + ".dll"); - if (!File.Exists(asmPath)) - return null; - return Assembly.LoadFrom(asmPath); - }; - AppDomain.CurrentDomain.AssemblyResolve += tmpResolver; - Assembly asm = Assembly.Load(Path.GetFileNameWithoutExtension(path)); - AppDomain.CurrentDomain.AssemblyResolve -= tmpResolver; - AppDomain.CurrentDomain.TypeResolve += (s, e) => { - return asm.GetType(e.Name) != null ? asm : null; - }; - AppDomain.CurrentDomain.AssemblyResolve += (s, e) => { - return e.Name == asm.FullName || e.Name == asm.GetName().Name ? asm : null; - }; - return asm; - } - - static Version GetPEAssemblyVersion(string path) { - using (FileStream fs = File.OpenRead(path)) - using (PEReader pe = new PEReader(fs)) - return pe.GetMetadataReader().GetAssemblyDefinition().Version; - } - - static Dictionary GetPEAssemblyReferences(string path) { - using (FileStream fs = File.OpenRead(path)) - using (PEReader pe = new PEReader(fs)) { - MetadataReader meta = pe.GetMetadataReader(); - - Dictionary deps = new Dictionary(); - foreach (AssemblyReference asmRef in meta.AssemblyReferences.Select(meta.GetAssemblyReference)) - deps.TryAdd(meta.GetString(asmRef.Name), asmRef.Version); - - return deps; - } - } - - static void CombineXMLDoc(string xmlFrom, string xmlTo) { - LogLine("Combining Documentation"); - XmlDocument from = new XmlDocument(); - XmlDocument to = new XmlDocument(); - - // Not worth crashing over. - try { - from.Load(xmlFrom); - to.Load(xmlTo); - } catch (FileNotFoundException e) { - LogLine(e.Message); - LogErr("Documentation combining aborted."); - return; - } - - XmlNodeList members = from.DocumentElement.LastChild.ChildNodes; - - // Reverse for loop so that we can remove nodes without breaking everything - for (int i = members.Count - 1; i >= 0; i--) { - XmlNode node = members[i]; - XmlAttribute name = node.Attributes["name"]; - string noPatch = name.Value.Replace("patch_", ""); - if (!noPatch.Equals(name.Value)) { - // Remove internal inheritdoc members that would otherwise override "vanilla" celeste members. - if (node.SelectNodes($"inheritdoc[@cref='{noPatch}']").Count == 1) { - node.ParentNode.RemoveChild(node); - continue; - } - name.Value = noPatch; - } - - // Fix up any references to patch_ class members. - foreach (XmlAttribute cref in node.SelectNodes(".//@cref")) - cref.Value = cref.Value.Replace("patch_", ""); - - // I couldn't find a way to just do this for all orig_ methods, so an tag needs to be manually added to them. - // And of course there also doesn't seem to be support for adding custom tags to the xmldoc prompts -_- - if (node.ChildNodes.Count == 1 && node.FirstChild.LocalName.Equals("origdoc")) { - XmlNode origDoc = from.CreateElement("summary"); - CreateOrigDoc(node.FirstChild, ref origDoc); - node.RemoveChild(node.FirstChild); - node.AppendChild(origDoc); - } - } - - // Remove any pre-existing Everest docs - members = to.DocumentElement.ChildNodes; - for (int i = members.Count - 1; i >= 0; i--) { - XmlNode node = members[i]; - if (node.Attributes?["name"] != null && node.Attributes["name"].Value == "Everest") { - to.DocumentElement.RemoveChild(node); - } - } - - // Add an Everest tag onto the docs to be added - XmlAttribute attrib = from.CreateAttribute("name"); - attrib.Value = "Everest"; - from.DocumentElement.LastChild.Attributes.Append(attrib); - - to.DocumentElement.AppendChild(to.ImportNode(from.DocumentElement.LastChild, true)); - to.Save(xmlTo); - } - - static void CreateOrigDoc(XmlNode node, ref XmlNode origDoc) { - string cref = node.Attributes["cref"]?.Value; - if (cref == null) { - cref = node.ParentNode.Attributes["name"].Value.Replace("orig_", ""); - } - - origDoc.InnerXml = "Vanilla Method. Use instead."; - } - - [SupportedOSPlatform("windows")] - [DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)] - static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); - - public class DisposableTuple : IDisposable { - private readonly IDisposable[] _iDisposables; - public DisposableTuple(params IDisposable[] disposables) { - _iDisposables = disposables; - } - - public void Dispose() { - foreach (IDisposable iDisposable in _iDisposables) { - iDisposable.Dispose(); - } - } - } } } diff --git a/MiniInstaller/WindowsElevationRequest.cs b/MiniInstaller/WindowsElevationRequest.cs new file mode 100644 index 000000000..0daec94b6 --- /dev/null +++ b/MiniInstaller/WindowsElevationRequest.cs @@ -0,0 +1,157 @@ +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; + +namespace MiniInstaller; + +public static class WindowsElevationRequest { + + [SupportedOSPlatform("windows")] + public static bool HandleWindowsElevationProcedure(Exception e) { + const uint ERROR_ACCESS_DENIED = 0x80070005U; + const uint ERROR_PRIVILEGE_NOT_HELD = 0x80070522U; + + const uint ERROR_INVALID_FUNCTION = 0x80070001U; + + switch (unchecked((uint) e.HResult)) { + case ERROR_ACCESS_DENIED or ERROR_PRIVILEGE_NOT_HELD: + Logger.LogLine("Failed to create backup symlinks due to missing privilege or access denial - asking user if they want to retry with elevation"); + // On Windows, offer to try again with elevation + if (!CreateBackupSymlinksWithElevation()) { + return false; + } + break; + case ERROR_INVALID_FUNCTION: + Logger.LogLine("Failed to create backup symlinks due to invalid function - warning user"); + if (!WarnAboutBackupSymlinkFilesystem()) { + return false; + } + break; + default: + return false; + } + + return true; + } + + [SupportedOSPlatform("windows")] + private static bool CreateBackupSymlinksWithElevation() { + switch ( + MessageBox(0, """ + The installer requires administrator privileges during the first installation to link the vanilla installation to the modded one. + This is required to share save data with the "restart into vanilla" feature. + If denied, installation will continue, but saves will NOT be shared between vanilla and Everest. + + Proceed with administrator privileges? + """.Trim(), "Everest Installation Elevation Request", 0x00000003U | 0x00000040U | 0x00010000U) // MB_YESNOCANCEL | MB_ICONINFORMATION | MB_SETFOREGROUND + ) { + case 2: // IDCANCEL + Logger.LogLine("User cancelled installation - rethrowing original error"); + return false; + case 6: // IDYES + Logger.LogLine("User accepted elevation request - starting elevated process"); + + //Create symlinks with elevation + retry:; + try { + ProcessStartInfo startInfo = new ProcessStartInfo() { + FileName = Environment.ProcessPath ?? throw new Exception("No process path available"), + Verb = "RunAs", + UseShellExecute = true + }; + foreach (string arg in Environment.GetCommandLineArgs()[1..]) + startInfo.ArgumentList.Add(arg); + + startInfo.ArgumentList.Add($"{nameof(CreateBackupSymlinksWithElevation)}_PostElevationRequest"); + startInfo.ArgumentList.Add(Globals.PathGame); + startInfo.ArgumentList.Add(Globals.PathOrig); + + Process elevatedProc = Process.Start(startInfo); + elevatedProc.WaitForExit(); + if (elevatedProc.ExitCode == 0) { + Logger.LogLine("Succesfully created backup symlinks with elevation"); + break; + } + } catch (Win32Exception e) { + if (e.NativeErrorCode == 1223 || unchecked((uint) e.HResult) == 0x800704c7) // ERROR_CANCELLED + Logger.LogLine("User cancelled elevation request"); + else + throw; + } + + //Failed to create symlinks + Logger.LogLine("Failed to create backup symlinks with elevation - offering user to retry"); + + switch ( + MessageBox(0, """ + Failed to link the vanilla installation to the modded one with elevated privileges. + This could be caused by declining the elevation request. + Without elevation, installation will proceed normally, but saves will NOT be shared between vanilla and Everest. + + Would you like to retry? + """.Trim(), "Everest Installation Error", 0x00000006U | 0x00000010U | 0x00010000U) // MB_CANCELTRYCONTINUE | MB_ICONERROR | MB_SETFOREGROUND + ) { + case 2: // IDCANCEL + Logger.LogLine("User cancelled installation - rethrowing original error"); + return false; + case 10: // IDTRYAGAIN + Logger.LogLine("Retrying elevated symlink creation"); + goto retry; + case 11: // IDCONTINUE + Logger.LogLine("User chose to contine installation - running fallback logic"); + BackUp.CreateBackupSymlinksFallback(); + break; + case 0: throw new Win32Exception(); + } + + break; + case 7: // IDNO + // Run fallback logic + Logger.LogLine("User denied elevation request - running fallback logic"); + BackUp.CreateBackupSymlinksFallback(); + break; + case 0: throw new Win32Exception(); + } + + return true; + } + + [SupportedOSPlatform("windows")] + private static bool WarnAboutBackupSymlinkFilesystem() { + switch ( + MessageBox(0, """ + The installer failed to link the vanilla installation to the modded one due to missing support by your filesystem. + Installation can continue, but saves will NOT be shared between vanilla and Everest. + To fix this issue, install vanilla Celeste on an NTFS partition (this generally means a hard drive/SSD instead of an SD card or flash drive) and repeat the installation there. + """.Trim(), "Everest Installation Filesystem Warning", 0x00000001U | 0x00000030U | 0x00010000U) // MB_OKCANCEL | MB_ICONWARNING | MB_SETFOREGROUND) + ) { + case 2: // IDCANCEL + Logger.LogLine("User cancelled installation - rethrowing original error"); + return false; + case 1: // IDOK + Logger.LogLine("Continuing installation on non-NTFS filesystem - running fallback logic"); + BackUp.CreateBackupSymlinksFallback(); + break; + case 0: + throw new Win32Exception(); + } + return true; + } + + [SupportedOSPlatform("windows")] + public static bool HandlePostElevationBackup(string[] args) { + // Handle creating backup symlinks after obtaining elevation + if (args.Length <= 0 || args[0] != $"{nameof(CreateBackupSymlinksWithElevation)}_PostElevationRequest") return false; + Globals.PathGame = args[1]; + Globals.PathOrig = args[2]; + BackUp.CreateBackupSymlinks(); + return true; + } + + [SupportedOSPlatform("windows")] + [DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)] + static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); + +} \ No newline at end of file diff --git a/MiniInstaller/XmlDoc.cs b/MiniInstaller/XmlDoc.cs new file mode 100644 index 000000000..929cd34eb --- /dev/null +++ b/MiniInstaller/XmlDoc.cs @@ -0,0 +1,78 @@ +using System.IO; +using System.Xml; + +namespace MiniInstaller; + +public static class XmlDoc { + public static void CombineXMLDoc(string xmlFrom, string xmlTo) { + Logger.LogLine("Combining Documentation"); + XmlDocument from = new XmlDocument(); + XmlDocument to = new XmlDocument(); + + // Not worth crashing over. + try { + from.Load(xmlFrom); + to.Load(xmlTo); + } catch (FileNotFoundException e) { + Logger.LogLine(e.Message); + Logger.LogErr("Documentation combining aborted."); + return; + } + + XmlNodeList members = from.DocumentElement.LastChild.ChildNodes; + + // Reverse for loop so that we can remove nodes without breaking everything + for (int i = members.Count - 1; i >= 0; i--) { + XmlNode node = members[i]; + XmlAttribute name = node.Attributes["name"]; + string noPatch = name.Value.Replace("patch_", ""); + if (!noPatch.Equals(name.Value)) { + // Remove internal inheritdoc members that would otherwise override "vanilla" celeste members. + if (node.SelectNodes($"inheritdoc[@cref='{noPatch}']").Count == 1) { + node.ParentNode.RemoveChild(node); + continue; + } + name.Value = noPatch; + } + + // Fix up any references to patch_ class members. + foreach (XmlAttribute cref in node.SelectNodes(".//@cref")) + cref.Value = cref.Value.Replace("patch_", ""); + + // I couldn't find a way to just do this for all orig_ methods, so an tag needs to be manually added to them. + // And of course there also doesn't seem to be support for adding custom tags to the xmldoc prompts -_- + if (node.ChildNodes.Count == 1 && node.FirstChild.LocalName.Equals("origdoc")) { + XmlNode origDoc = from.CreateElement("summary"); + CreateOrigDoc(node.FirstChild, ref origDoc); + node.RemoveChild(node.FirstChild); + node.AppendChild(origDoc); + } + } + + // Remove any pre-existing Everest docs + members = to.DocumentElement.ChildNodes; + for (int i = members.Count - 1; i >= 0; i--) { + XmlNode node = members[i]; + if (node.Attributes?["name"] != null && node.Attributes["name"].Value == "Everest") { + to.DocumentElement.RemoveChild(node); + } + } + + // Add an Everest tag onto the docs to be added + XmlAttribute attrib = from.CreateAttribute("name"); + attrib.Value = "Everest"; + from.DocumentElement.LastChild.Attributes.Append(attrib); + + to.DocumentElement.AppendChild(to.ImportNode(from.DocumentElement.LastChild, true)); + to.Save(xmlTo); + } + + private static void CreateOrigDoc(XmlNode node, ref XmlNode origDoc) { + string cref = node.Attributes["cref"]?.Value; + if (cref == null) { + cref = node.ParentNode.Attributes["name"].Value.Replace("orig_", ""); + } + + origDoc.InnerXml = "Vanilla Method. Use instead."; + } +} \ No newline at end of file From 776154350772a691cd0a98541fad136200bd9eda Mon Sep 17 00:00:00 2001 From: wartori Date: Sat, 2 Nov 2024 15:51:44 +0100 Subject: [PATCH 04/20] Cache coreified dll in fastmode --- MiniInstaller/Program.cs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/MiniInstaller/Program.cs b/MiniInstaller/Program.cs index 6836ff033..e6fc235f7 100644 --- a/MiniInstaller/Program.cs +++ b/MiniInstaller/Program.cs @@ -138,6 +138,7 @@ public static int StandardMode(string[] args) { /// public static int FastMode(string[] args) { bool doMainGame = false; + bool coreGameCacheRegen = false; bool doFNA = false; bool doHookGen = false; bool doAppHost = false; @@ -150,6 +151,7 @@ public static int FastMode(string[] args) { doXmlDoc = true; } else { doMainGame = args.Contains("maingame"); + coreGameCacheRegen = args.Contains("coreifier-invalidate-cache"); doFNA = args.Contains("fna"); doHookGen = args.Contains("hookgen"); doAppHost = args.Contains("apphost"); @@ -174,19 +176,25 @@ public static int FastMode(string[] args) { string everestModDLL = Path.ChangeExtension(Globals.PathCelesteExe, ".Mod.mm.dll"); string[] mods = new string[] { Globals.PathEverestLib, everestModDLL }; - if (doMainGame) { - if (File.Exists(Globals.PathEverestDLL)) - File.Delete(Globals.PathEverestDLL); + string coreGameCacheFile = Path.ChangeExtension(Globals.PathCelesteExe, ".CoreGameCache.dll"); + + if (doMainGame && !File.Exists(coreGameCacheFile)) + coreGameCacheRegen = true; + + if (coreGameCacheRegen && File.Exists(coreGameCacheFile)) + File.Delete(coreGameCacheFile); + + if (coreGameCacheRegen) { // We really only need to coreify celeste - DepCalls.ConvertToNETCoreSingle(Path.Combine(Globals.PathOrig, "Celeste.exe"), Globals.PathEverestDLL); + DepCalls.ConvertToNETCoreSingle(Path.Combine(Globals.PathOrig, "Celeste.exe"), coreGameCacheFile); } - + if (doFNA) { DepCalls.RunMonoMod(Path.Combine(Globals.PathEverestLib, "FNA.dll"), Path.Combine(Globals.PathGame, "FNA.dll"), dllPaths: mods); // We need to patch some methods in FNA as well } if (doMainGame) { - DepCalls.RunMonoMod(Globals.PathEverestDLL, dllPaths: mods); + DepCalls.RunMonoMod(coreGameCacheFile, Globals.PathEverestDLL, dllPaths: mods); } // This should never change no matter the current settings From 551ab1f311b3553ae1968de14aa8106852f1a767 Mon Sep 17 00:00:00 2001 From: wartori Date: Sat, 2 Nov 2024 18:45:27 +0100 Subject: [PATCH 05/20] Add linux build scripts --- Celeste.Mod.mm/Celeste.Mod.mm.csproj | 5 ++- README.md | 2 + buildscripts/building-everest.md | 22 ++++++++++ .../linux/complete_builld_and_install.sh | 35 ++++++++++++++++ buildscripts/linux/quick_patch.sh | 41 +++++++++++++++++++ 5 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 buildscripts/building-everest.md create mode 100755 buildscripts/linux/complete_builld_and_install.sh create mode 100755 buildscripts/linux/quick_patch.sh diff --git a/Celeste.Mod.mm/Celeste.Mod.mm.csproj b/Celeste.Mod.mm/Celeste.Mod.mm.csproj index d276820c9..002a995e4 100644 --- a/Celeste.Mod.mm/Celeste.Mod.mm.csproj +++ b/Celeste.Mod.mm/Celeste.Mod.mm.csproj @@ -83,13 +83,14 @@ + - + - + diff --git a/README.md b/README.md index f625d83f0..1332fb25d 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ For information about mod development, check out the [Everest Wiki](https://gith - macOS: `Celeste.app/Contents/Resources` - Run `./MiniInstaller-linux` or `./MiniInstaller-osx` +For an automated building process check the build scripts, documentation [here](./buildscripts/building-everest.md). + ## Contributing Contributions of any kind are welcome, and a guide on how to contribute effectively to the Everest project is available [here](./CONTRIBUTING.md). Make sure to join the discussion in the [Celeste Discord](https://discord.gg/6qjaePQ), and feel free to ask any questions you have there as well. diff --git a/buildscripts/building-everest.md b/buildscripts/building-everest.md new file mode 100644 index 000000000..2f4097ff4 --- /dev/null +++ b/buildscripts/building-everest.md @@ -0,0 +1,22 @@ +# Building Everest + +In order to build everest two steps are required: building the source files +and copying and installing them. +This process can be automated through the build scripts. +All requirements stated in "Compiling Everest yourself" in the [README.md](../README.md) apply here as well. + +- `complete_build_and_install.sh`: This script's goal is to take a vanilla version of celeste and + generate, copy and install all the files in order to get everest running. It is somewhat slow + since it makes no assumptions on what is currently there.
+ Use it to install everest from source for the first time, or to reset an installation to a working + state. +- `quick_patch.sh`: This script's goal is to get any changes in `Celeste.Mod.mm` as quickly as possible + to the game, thus it skips over a lot of steps. In order to run it you need a working installation + of everest already in the target location. + Use it to quickly test any modifications to everest itself. + +Both scripts need to know where your game is, as such a variable called `CELESTEPATHGAME` is present +in both of them, adjust it to fit yours. + +If the scripts are integrated into an IDE workflow, it is recommended to force the ide to skip building, +since both of them will build the files already. \ No newline at end of file diff --git a/buildscripts/linux/complete_builld_and_install.sh b/buildscripts/linux/complete_builld_and_install.sh new file mode 100755 index 000000000..88a700dd4 --- /dev/null +++ b/buildscripts/linux/complete_builld_and_install.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# This script is used to completely install or upgrade an celeste installation from the source files, +# you must call this script first before you're able to use quick_patch.sh + +# Feel free to modify it to where yours is +CELESTEGAMEPATH="../../_celestegame" + +# It is sufficient to build only this two projects currently, all other ones will be build and copied as part of the build +# process of this two. +TARGET_PROJECTS_PATH=( "../../Celeste.Mod.mm/Celeste.Mod.mm.csproj" "../../MiniInstaller/MiniInstaller.csproj" ) + +ARTIFACT_DIR="../../artifacts/Everest" + +# For TAS consistency it usually is necessary to build in Release mode, but for anything else Debug will suffice +# and provide better debugger support +CONFIGURATION="Debug" + +mkdir -p $ARTIFACT_DIR || exit + +echo "Building with dotnet" +for PROJECT in "${TARGET_PROJECTS_PATH[@]}" ; do + echo "Building $PROJECT" + dotnet publish "$PROJECT" -o $ARTIFACT_DIR -c $CONFIGURATION || exit +done + +echo "Copying files" +cp -r $ARTIFACT_DIR/* ./$CELESTEGAMEPATH/ || exit + +if [ "$2" != "--skipinstall" ]; then + echo "Installing everest" + cd $CELESTEGAMEPATH || exit + echo Calling MiniInstaller-linux + ./MiniInstaller-linux || exit +fi diff --git a/buildscripts/linux/quick_patch.sh b/buildscripts/linux/quick_patch.sh new file mode 100755 index 000000000..027024736 --- /dev/null +++ b/buildscripts/linux/quick_patch.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# This script is used to quickly build and setup all the necessary files for any changes in Celeste.Mod.mm to be +# applied, +# Note: there are some edge cases, such as modifying patches for FNA, that are not covered by this script by +# default. This specific edge case can be fixed by adding "fna" to the `MiniInstaller-linux` call, refer to +# fast-mode documentation for more information. + +# Feel free to modify it to where yours is +CELESTEGAMEPATH="../../_celestegame" + +ARTIFACT_DIR="../../artifacts/quick_patch" + +TARGET_PROJECT_PATH="../../Celeste.Mod.mm/Celeste.Mod.mm.csproj" + +# For TAS consistency it usually is necessary to build in Release mode, but for anything else Debug will suffice +# and provide better debugger support +CONFIGURATION="Debug" + +mkdir -p $ARTIFACT_DIR || exit + +if [ "$1" == "--first-run" ] || [ ! -f $ARTIFACT_DIR/MonoMod.Backports.dll ]; then + echo Doing a complete build given that dependencies are missing + dotnet build $TARGET_PROJECT_PATH --output $ARTIFACT_DIR -c $CONFIGURATION || exit +fi + +echo Building $TARGET_PROJECT_PATH without restore nor dependencies +dotnet build $TARGET_PROJECT_PATH --no-restore --no-dependencies --output $ARTIFACT_DIR -c $CONFIGURATION || exit + +echo Copying artifacts into game dir +cp -r $ARTIFACT_DIR/* ./$CELESTEGAMEPATH/ || exit + +cd $CELESTEGAMEPATH || exit + +if [ ! -f "./MiniInstaller-linux" ]; then + echo "Could not find MiniInstaller-linux! Run complete_build_and_install.sh in order to set it up." + exit +fi + +echo Calling MiniInstaller-linux +./MiniInstaller-linux --fastmode maingame From 932b22ee84612a3915efab94153e7eae395c296b Mon Sep 17 00:00:00 2001 From: wartori Date: Tue, 5 Nov 2024 21:59:49 +0100 Subject: [PATCH 06/20] Adjust linux build scripts according the given feedback --- buildscripts/building-everest.md | 3 +- .../linux/complete_build_and_install.sh | 35 +++++++++++++++++++ .../linux/complete_builld_and_install.sh | 35 ------------------- buildscripts/linux/config.sh | 13 +++++++ buildscripts/linux/quick_patch.sh | 25 ++++++------- 5 files changed, 61 insertions(+), 50 deletions(-) create mode 100755 buildscripts/linux/complete_build_and_install.sh delete mode 100755 buildscripts/linux/complete_builld_and_install.sh create mode 100644 buildscripts/linux/config.sh diff --git a/buildscripts/building-everest.md b/buildscripts/building-everest.md index 2f4097ff4..952e22c56 100644 --- a/buildscripts/building-everest.md +++ b/buildscripts/building-everest.md @@ -16,7 +16,8 @@ All requirements stated in "Compiling Everest yourself" in the [README.md](../RE Use it to quickly test any modifications to everest itself. Both scripts need to know where your game is, as such a variable called `CELESTEPATHGAME` is present -in both of them, adjust it to fit yours. +in `config.sh`, adjust it to fit yours, or override when calling the scripts, defaults to: `_celestegame` in +the repo root. If the scripts are integrated into an IDE workflow, it is recommended to force the ide to skip building, since both of them will build the files already. \ No newline at end of file diff --git a/buildscripts/linux/complete_build_and_install.sh b/buildscripts/linux/complete_build_and_install.sh new file mode 100755 index 000000000..bce55fc00 --- /dev/null +++ b/buildscripts/linux/complete_build_and_install.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +set -e + +# This script is used to completely install or upgrade an celeste installation from the source files, +# you must call this script first before you're able to use quick_patch.sh + +source config.sh + +# It is sufficient to build only this two projects currently, all other ones will be build and copied as part of the build +# process of this two. +TARGET_PROJECTS_PATH=( + "$EVERESTPATH/Celeste.Mod.mm/Celeste.Mod.mm.csproj" + "$EVERESTPATH/MiniInstaller/MiniInstaller.csproj" +) + +OUT_DIR="$ARTIFACT_DIR/Everest" + +mkdir -p "$OUT_DIR" + +echo "Building with dotnet" +for PROJECT in "${TARGET_PROJECTS_PATH[@]}" ; do + echo "Building $PROJECT" + dotnet publish "$PROJECT" -o "$OUT_DIR" -c $CONFIGURATION +done + +echo "Copying files" +cp -r "$OUT_DIR"/* ./"$CELESTEGAMEPATH"/ + +if [ "$2" != "--skipinstall" ]; then + echo "Installing everest" + cd "$CELESTEGAMEPATH" + echo Calling MiniInstaller-linux + ./MiniInstaller-linux +fi diff --git a/buildscripts/linux/complete_builld_and_install.sh b/buildscripts/linux/complete_builld_and_install.sh deleted file mode 100755 index 88a700dd4..000000000 --- a/buildscripts/linux/complete_builld_and_install.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -# This script is used to completely install or upgrade an celeste installation from the source files, -# you must call this script first before you're able to use quick_patch.sh - -# Feel free to modify it to where yours is -CELESTEGAMEPATH="../../_celestegame" - -# It is sufficient to build only this two projects currently, all other ones will be build and copied as part of the build -# process of this two. -TARGET_PROJECTS_PATH=( "../../Celeste.Mod.mm/Celeste.Mod.mm.csproj" "../../MiniInstaller/MiniInstaller.csproj" ) - -ARTIFACT_DIR="../../artifacts/Everest" - -# For TAS consistency it usually is necessary to build in Release mode, but for anything else Debug will suffice -# and provide better debugger support -CONFIGURATION="Debug" - -mkdir -p $ARTIFACT_DIR || exit - -echo "Building with dotnet" -for PROJECT in "${TARGET_PROJECTS_PATH[@]}" ; do - echo "Building $PROJECT" - dotnet publish "$PROJECT" -o $ARTIFACT_DIR -c $CONFIGURATION || exit -done - -echo "Copying files" -cp -r $ARTIFACT_DIR/* ./$CELESTEGAMEPATH/ || exit - -if [ "$2" != "--skipinstall" ]; then - echo "Installing everest" - cd $CELESTEGAMEPATH || exit - echo Calling MiniInstaller-linux - ./MiniInstaller-linux || exit -fi diff --git a/buildscripts/linux/config.sh b/buildscripts/linux/config.sh new file mode 100644 index 000000000..105d9e44d --- /dev/null +++ b/buildscripts/linux/config.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Assume default script location +EVERESTPATH=${EVERESTPATH:-"$(dirname "$0")/../.."} + +# Feel free to adjust it to where your is +CELESTEGAMEPATH=${CELESTEGAMEPATH:-"$EVERESTPATH/_celestegame"} + +# For TAS consistency it usually is necessary to build in Release mode, but for anything else Debug will suffice +# and provide better debugger support +CONFIGURATION=${CONFIGURATION:-"Debug"} + +ARTIFACT_DIR=${ARTIFACT_DIR:-"$EVERESTPATH/artifacts"} diff --git a/buildscripts/linux/quick_patch.sh b/buildscripts/linux/quick_patch.sh index 027024736..27a29d762 100755 --- a/buildscripts/linux/quick_patch.sh +++ b/buildscripts/linux/quick_patch.sh @@ -1,36 +1,33 @@ #!/usr/bin/env bash +set -e + # This script is used to quickly build and setup all the necessary files for any changes in Celeste.Mod.mm to be # applied, # Note: there are some edge cases, such as modifying patches for FNA, that are not covered by this script by # default. This specific edge case can be fixed by adding "fna" to the `MiniInstaller-linux` call, refer to # fast-mode documentation for more information. -# Feel free to modify it to where yours is -CELESTEGAMEPATH="../../_celestegame" - -ARTIFACT_DIR="../../artifacts/quick_patch" +source config.sh -TARGET_PROJECT_PATH="../../Celeste.Mod.mm/Celeste.Mod.mm.csproj" +TARGET_PROJECT_PATH="$EVERESTPATH/Celeste.Mod.mm/Celeste.Mod.mm.csproj" -# For TAS consistency it usually is necessary to build in Release mode, but for anything else Debug will suffice -# and provide better debugger support -CONFIGURATION="Debug" +OUT_DIR="$ARTIFACT_DIR/quick_patch" -mkdir -p $ARTIFACT_DIR || exit +mkdir -p "$OUT_DIR" -if [ "$1" == "--first-run" ] || [ ! -f $ARTIFACT_DIR/MonoMod.Backports.dll ]; then +if [ "$1" == "--first-run" ] || [ ! -f "$OUT_DIR"/MonoMod.Backports.dll ]; then echo Doing a complete build given that dependencies are missing - dotnet build $TARGET_PROJECT_PATH --output $ARTIFACT_DIR -c $CONFIGURATION || exit + dotnet build "$TARGET_PROJECT_PATH" --output "$OUT_DIR" -c $CONFIGURATION fi echo Building $TARGET_PROJECT_PATH without restore nor dependencies -dotnet build $TARGET_PROJECT_PATH --no-restore --no-dependencies --output $ARTIFACT_DIR -c $CONFIGURATION || exit +dotnet build "$TARGET_PROJECT_PATH" --no-restore --no-dependencies --output "$OUT_DIR" -c $CONFIGURATION echo Copying artifacts into game dir -cp -r $ARTIFACT_DIR/* ./$CELESTEGAMEPATH/ || exit +cp -r "$OUT_DIR"/* ./"$CELESTEGAMEPATH"/ -cd $CELESTEGAMEPATH || exit +cd "$CELESTEGAMEPATH" if [ ! -f "./MiniInstaller-linux" ]; then echo "Could not find MiniInstaller-linux! Run complete_build_and_install.sh in order to set it up." From b8b2b839350a16784b50e5b012ece606d842be2b Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 24 Nov 2024 19:19:54 +0100 Subject: [PATCH 07/20] Add MMR flag to stub out FNA's window for headless operations The flag is hardcoded for now, it'll be a MiniInstaller flag later --- Celeste.Mod.mm/Mod/Everest/Everest.Flags.cs | 5 +- Celeste.Mod.mm/MonoModRules.Game.cs | 2 + Celeste.Mod.mm/Patches/FNA/Game.cs | 12 ++-- Celeste.Mod.mm/Patches/FNA/Headless/Game.cs | 56 +++++++++++++++ .../Patches/FNA/Headless/HeadlessWindow.cs | 70 +++++++++++++++++++ 5 files changed, 138 insertions(+), 7 deletions(-) create mode 100644 Celeste.Mod.mm/Patches/FNA/Headless/Game.cs create mode 100644 Celeste.Mod.mm/Patches/FNA/Headless/HeadlessWindow.cs diff --git a/Celeste.Mod.mm/Mod/Everest/Everest.Flags.cs b/Celeste.Mod.mm/Mod/Everest/Everest.Flags.cs index b49c52879..9ccfc71fc 100644 --- a/Celeste.Mod.mm/Mod/Everest/Everest.Flags.cs +++ b/Celeste.Mod.mm/Mod/Everest/Everest.Flags.cs @@ -30,9 +30,9 @@ public static class Flags { public static bool VanillaIsFNA { get; private set;} /// - /// Is Everest running headlessly? + /// Is Everest running without a window? /// - public static bool IsHeadless { get; private set; } + public static bool IsHeadless { get; internal set; } /// /// Is the game running using Mono - always false on .NET Core Everest. @@ -75,7 +75,6 @@ internal static void Initialize() { VanillaIsXNA = !VanillaIsFNA; } - IsHeadless = Environment.GetEnvironmentVariable("EVEREST_HEADLESS") == "1"; AvoidRenderTargets = Environment.GetEnvironmentVariable("EVEREST_NO_RT") == "1"; PreferLazyLoading = false; diff --git a/Celeste.Mod.mm/MonoModRules.Game.cs b/Celeste.Mod.mm/MonoModRules.Game.cs index 064af6cc8..511ad552d 100644 --- a/Celeste.Mod.mm/MonoModRules.Game.cs +++ b/Celeste.Mod.mm/MonoModRules.Game.cs @@ -91,6 +91,8 @@ private static void InitGameRules(MonoModder modder) { MonoModRule.Flag.Set("Steamworks", isSteamworks); MonoModRule.Flag.Set("NoLauncher", !isSteamworks); + MonoModRule.Flag.Set("Headless", true); + MonoModRule.Flag.Set("Has:BirdTutorialGuiButtonPromptEnum", MonoModRule.Modder.FindType("Celeste.BirdTutorialGui/ButtonPrompt")?.SafeResolve() != null); // Run game preprocessor diff --git a/Celeste.Mod.mm/Patches/FNA/Game.cs b/Celeste.Mod.mm/Patches/FNA/Game.cs index f6af74efc..449b1d02e 100644 --- a/Celeste.Mod.mm/Patches/FNA/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Game.cs @@ -5,11 +5,15 @@ using System; namespace Microsoft.Xna.Framework { - + [GameDependencyPatch("FNA")] - public class patch_Game { + public partial class patch_Game { public GameWindow Window { get; private set; } + + [MonoModIfFlag("Headless")] + [PatchGameBeforeLoop] private extern void orig_BeforeLoop(); + private void BeforeLoop() { orig_BeforeLoop(); @@ -20,7 +24,7 @@ private void BeforeLoop() { // SDL_HINT_FORCE_RAISEWINDOW is required solely for Windows, ignored on other systems SDL.SDL_SetHint("SDL_HINT_FORCE_RAISEWINDOW", "true"); SDL.SDL_RaiseWindow(Window.Handle); - } + } } -} \ No newline at end of file +} diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs new file mode 100644 index 000000000..54836c121 --- /dev/null +++ b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs @@ -0,0 +1,56 @@ +#pragma warning disable CS0626 // Method, operator, or accessor is marked external and has no attributes on it + +using Mono.Cecil; +using MonoMod; +using MonoMod.Cil; +using MonoMod.InlineRT; +using MonoMod.Utils; +using System; + +namespace Microsoft.Xna.Framework { + + [GameDependencyPatch("FNA")] + public partial class patch_Game { + + [MonoModConstructor] + [MonoModIgnore] + [MonoModIfFlag("Headless")] + [PatchGameCtor] + public extern void ctor(); + } +} + +namespace MonoMod { + /// + /// A patch replacing the GameWindow instance + /// + [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchGameCtor))] + class PatchGameCtor : Attribute { } + + /// + /// A patch removing registering the graphics adapter + /// + [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchGameBeforeLoop))] + class PatchGameBeforeLoop : Attribute { } + + static partial class MonoModRules { + public static void PatchGameCtor(ILContext context, CustomAttribute attrib) { + ILCursor cursor = new ILCursor(context); + + TypeDefinition t_HeadlessWindow = MonoModRule.Modder.FindType("Microsoft.Xna.Framework.HeadlessWindow").Resolve(); + MethodReference m_HeadlessWindow_ctor = MonoModRule.Modder.Module.ImportReference(t_HeadlessWindow.FindMethod(".ctor")); + + // Replace 'FNAPlatform.CreateWindow()' with 'new HeadlessWindow()' + cursor.GotoNext(instr => instr.MatchLdsfld("Microsoft.Xna.Framework.FNAPlatform", "CreateWindow")); + cursor.RemoveRange(2); + cursor.EmitNewobj(m_HeadlessWindow_ctor); + } + + public static void PatchGameBeforeLoop(ILContext context, CustomAttribute attrib) { + ILCursor cursor = new ILCursor(context); + + // Remove 'this.currentAdapter = FNAPlatform.RegisterGame(this);' + cursor.RemoveRange(5); + } + } +} diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/HeadlessWindow.cs b/Celeste.Mod.mm/Patches/FNA/Headless/HeadlessWindow.cs new file mode 100644 index 000000000..bae5ea2e2 --- /dev/null +++ b/Celeste.Mod.mm/Patches/FNA/Headless/HeadlessWindow.cs @@ -0,0 +1,70 @@ +using Microsoft.Xna.Framework.Graphics; +using MonoMod; +using System; + +namespace Microsoft.Xna.Framework { + namespace Graphics { + // Expose internal FND3D bindings + [MonoModIgnore] + [GameDependencyPatch("FNA")] + public static class FNA3D { + public static extern uint FNA3D_PrepareWindowAttributes(); + } + } + + // Expose internal GameWindow + [MonoModIgnore] + [GameDependencyPatch("FNA")] + public abstract class GameWindow { + public abstract bool AllowUserResizing { get; set; } + public abstract Rectangle ClientBounds { get; } + public abstract DisplayOrientation CurrentOrientation { get; internal set; } + public abstract IntPtr Handle { get; } + public abstract string ScreenDeviceName { get; } + + public abstract void BeginScreenDeviceChange(bool willBeFullScreen); + public abstract void EndScreenDeviceChange(string screenDeviceName, int clientWidth, int clientHeight); + + protected internal abstract void SetSupportedOrientations(DisplayOrientation orientations); + protected abstract void SetTitle(string title); + } + + [GameDependencyPatch("FNA")] + public class HeadlessWindow : GameWindow { + public override bool AllowUserResizing { + get => false; + set {} + } + + public override Rectangle ClientBounds => Rectangle.Empty; + + public override DisplayOrientation CurrentOrientation { + get => DisplayOrientation.Default; + internal set {} + } + + public override IntPtr Handle => IntPtr.Zero; + public override string ScreenDeviceName => string.Empty; + + public HeadlessWindow() { + // Needs to be called before the graphics device is created + FNA3D.FNA3D_PrepareWindowAttributes(); + } + + public override void BeginScreenDeviceChange(bool willBeFullScreen) { + // Stub + } + + public override void EndScreenDeviceChange(string screenDeviceName, int clientWidth, int clientHeight) { + // Stub + } + + protected internal override void SetSupportedOrientations(DisplayOrientation orientations) { + // Stub + } + + protected override void SetTitle(string title) { + // Stub + } + } +} From 1b0c408bdeac8f9c96769db46bb6ff5e4dec402a Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 24 Nov 2024 19:36:29 +0100 Subject: [PATCH 08/20] Update FNA3D Linux binary for headless support --- ....patch => FNA3D_ExclusiveFullscreen.patch} | 0 lib-ext/FNA3D_Headless.patch | 828 ++++++++++++++++++ lib-ext/MojoShader_Headless.patch | 460 ++++++++++ lib-ext/README.md | 15 + lib-ext/lib64-linux/libFNA3D.so.0 | Bin 735080 -> 772248 bytes 5 files changed, 1303 insertions(+) rename lib-ext/{FNA3D.patch => FNA3D_ExclusiveFullscreen.patch} (100%) create mode 100644 lib-ext/FNA3D_Headless.patch create mode 100644 lib-ext/MojoShader_Headless.patch create mode 100644 lib-ext/README.md diff --git a/lib-ext/FNA3D.patch b/lib-ext/FNA3D_ExclusiveFullscreen.patch similarity index 100% rename from lib-ext/FNA3D.patch rename to lib-ext/FNA3D_ExclusiveFullscreen.patch diff --git a/lib-ext/FNA3D_Headless.patch b/lib-ext/FNA3D_Headless.patch new file mode 100644 index 000000000..fc3a4de57 --- /dev/null +++ b/lib-ext/FNA3D_Headless.patch @@ -0,0 +1,828 @@ +commit cfc4fff63b9a450ea305af8df3625cde3b247fd6 +Author: psyGamer +Date: Sun Nov 24 11:00:39 2024 +0100 + + Add Headless driver backend + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 34d9045..f4c6aee 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,6 +49,7 @@ endif() + + # Defines + add_definitions( ++ -DFNA3D_DRIVER_HEADLESS + -DFNA3D_DRIVER_VULKAN + -DFNA3D_DRIVER_OPENGL + ) +@@ -118,6 +119,7 @@ add_library(FNA3D + src/FNA3D_PipelineCache.h + # Source Files + src/FNA3D.c ++ src/FNA3D_Driver_Headless.c + src/FNA3D_Driver_D3D11.c + src/FNA3D_Driver_OpenGL.c + src/FNA3D_Driver_SDL.c +@@ -141,6 +143,7 @@ add_library(mojoshader STATIC + MojoShader/profiles/mojoshader_profile_hlsl.c + MojoShader/profiles/mojoshader_profile_spirv.c + MojoShader/profiles/mojoshader_profile_metal.c ++ MojoShader/mojoshader_headless.c + ) + if(TRACING_SUPPORT) + add_executable(fna3d_replay replay/replay.c) +diff --git a/src/FNA3D.c b/src/FNA3D.c +index 17e890a..24768e6 100644 +--- a/src/FNA3D.c ++++ b/src/FNA3D.c +@@ -40,6 +40,9 @@ + /* Drivers */ + + static const FNA3D_Driver *drivers[] = { ++#if FNA3D_DRIVER_HEADLESS ++ &HeadlessDriver, ++#endif + #if FNA3D_DRIVER_SDL + &SDLGPUDriver, + #endif +@@ -160,6 +163,11 @@ uint32_t FNA3D_PrepareWindowAttributes(void) + continue; + } + } ++ else if (SDL_strcasecmp("Headless", drivers[i]->Name) != 0) ++ { ++ // Only allow headless mode explicitly ++ continue; ++ } + if (drivers[i]->PrepareWindowAttributes(&result)) + { + break; +diff --git a/src/FNA3D_Driver.h b/src/FNA3D_Driver.h +index 4f07960..b6e7f27 100644 +--- a/src/FNA3D_Driver.h ++++ b/src/FNA3D_Driver.h +@@ -825,6 +825,7 @@ typedef struct FNA3D_Driver + ); + } FNA3D_Driver; + ++FNA3D_SHAREDINTERNAL FNA3D_Driver HeadlessDriver; + FNA3D_SHAREDINTERNAL FNA3D_Driver LegacyVulkanDriver; + FNA3D_SHAREDINTERNAL FNA3D_Driver D3D11Driver; + FNA3D_SHAREDINTERNAL FNA3D_Driver OpenGLDriver; +diff --git a/src/FNA3D_Driver_Headless.c b/src/FNA3D_Driver_Headless.c +new file mode 100644 +index 0000000..8d48637 +--- /dev/null ++++ b/src/FNA3D_Driver_Headless.c +@@ -0,0 +1,714 @@ ++/* FNA3D - 3D Graphics Library for FNA ++* ++ * Copyright (c) 2020-2024 Ethan Lee ++ * ++ * This software is provided 'as-is', without any express or implied warranty. ++ * In no event will the authors be held liable for any damages arising from ++ * the use of this software. ++ * ++ * Permission is granted to anyone to use this software for any purpose, ++ * including commercial applications, and to alter it and redistribute it ++ * freely, subject to the following restrictions: ++ * ++ * 1. The origin of this software must not be misrepresented; you must not ++ * claim that you wrote the original software. If you use this software in a ++ * product, an acknowledgment in the product documentation would be ++ * appreciated but is not required. ++ * ++ * 2. Altered source versions must be plainly marked as such, and must not be ++ * misrepresented as being the original software. ++ * ++ * 3. This notice may not be removed or altered from any source distribution. ++ * ++ * Ethan "flibitijibibo" Lee ++ * ++ */ ++ ++#if FNA3D_DRIVER_HEADLESS ++ ++#include "FNA3D_Driver.h" ++ ++#ifdef USE_SDL3 ++#include ++#else ++#include ++#define SDL_Mutex SDL_mutex ++#endif ++ ++typedef struct Headless_Renderer ++{ ++ MOJOSHADER_headlessContext *mojoshaderContext; ++ ++ uint32_t stencilReference; ++ uint32_t multisampleMask; ++ float blendConstants[4]; ++} Headless_Renderer; ++ ++/* Stubs */ ++ ++static void Headless_VerifyVertexSampler( ++ FNA3D_Renderer *driverData, ++ int32_t index, ++ FNA3D_Texture *texture, ++ FNA3D_SamplerState *sampler ++) {} ++ ++static void Headless_VerifySampler( ++ FNA3D_Renderer *driverData, ++ int32_t index, ++ FNA3D_Texture *texture, ++ FNA3D_SamplerState *sampler ++) {} ++ ++static void Headless_SwapBuffers( ++ FNA3D_Renderer *driverData, ++ FNA3D_Rect *sourceRectangle, ++ FNA3D_Rect *destinationRectangle, ++ void* overrideWindowHandle ++) {} ++ ++static uint8_t Headless_SupportsSRGBRenderTargets(FNA3D_Renderer *driverData) ++{ ++ return SDL_TRUE; ++} ++ ++static uint8_t Headless_SupportsS3TC(FNA3D_Renderer *driverData) ++{ ++ return SDL_TRUE; ++} ++ ++static uint8_t Headless_SupportsNoOverwrite(FNA3D_Renderer *driverData) ++{ ++ return SDL_TRUE; ++} ++ ++static uint8_t Headless_SupportsHardwareInstancing(FNA3D_Renderer *driverData) ++{ ++ return SDL_TRUE; ++} ++ ++static uint8_t Headless_SupportsDXT1(FNA3D_Renderer *driverData) ++{ ++ return SDL_TRUE; ++} ++ ++static uint8_t Headless_SupportsBC7(FNA3D_Renderer *driverData) ++{ ++ return SDL_TRUE; ++} ++ ++static void Headless_SetViewport( ++ FNA3D_Renderer *driverData, ++ FNA3D_Viewport *viewport ++) {} ++ ++static void Headless_SetVertexBufferData( ++ FNA3D_Renderer *driverData, ++ FNA3D_Buffer *buffer, ++ int32_t offsetInBytes, ++ void* data, ++ int32_t elementCount, ++ int32_t elementSizeInBytes, ++ int32_t vertexStride, ++ FNA3D_SetDataOptions options ++) {} ++ ++static void Headless_SetTextureName( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ const char *text ++) {} ++ ++static void Headless_SetTextureDataYUV( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *y, ++ FNA3D_Texture *u, ++ FNA3D_Texture *v, ++ int32_t yWidth, ++ int32_t yHeight, ++ int32_t uvWidth, ++ int32_t uvHeight, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_SetTextureDataCube( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ int32_t x, ++ int32_t y, ++ int32_t w, ++ int32_t h, ++ FNA3D_CubeMapFace cubeMapFace, ++ int32_t level, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_SetTextureData3D( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ int32_t x, ++ int32_t y, ++ int32_t z, ++ int32_t w, ++ int32_t h, ++ int32_t d, ++ int32_t level, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_SetTextureData2D( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ int32_t x, ++ int32_t y, ++ int32_t w, ++ int32_t h, ++ int32_t level, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_SetStringMarker( ++ FNA3D_Renderer *driverData, ++ const char *text ++) {} ++ ++static void Headless_SetScissorRect( ++ FNA3D_Renderer *driverData, ++ FNA3D_Rect *scissor ++) {} ++ ++static void Headless_SetRenderTargets( ++ FNA3D_Renderer *driverData, ++ FNA3D_RenderTargetBinding *renderTargets, ++ int32_t numRenderTargets, ++ FNA3D_Renderbuffer *depthStencilBuffer, ++ FNA3D_DepthFormat depthFormat, ++ uint8_t preserveTargetContents ++) {} ++ ++static void Headless_SetReferenceStencil( ++ FNA3D_Renderer *driverData, ++ int32_t ref ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*)driverData; ++ renderer->stencilReference = ref; ++} ++ ++static void Headless_SetMultiSampleMask( ++ FNA3D_Renderer *driverData, ++ int32_t mask ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*) driverData; ++ renderer->multisampleMask = mask; ++} ++ ++static void Headless_SetIndexBufferData( ++ FNA3D_Renderer *driverData, ++ FNA3D_Buffer *buffer, ++ int32_t offsetInBytes, ++ void* data, ++ int32_t dataLength, ++ FNA3D_SetDataOptions options ++) {} ++ ++static void Headless_SetEffectTechnique( ++ FNA3D_Renderer *driverData, ++ FNA3D_Effect *effect, ++ MOJOSHADER_effectTechnique *technique ++) {} ++ ++static void Headless_SetDepthStencilState( ++ FNA3D_Renderer *driverData, ++ FNA3D_DepthStencilState *depthStencilState ++) {} ++ ++static void Headless_SetBlendState( ++ FNA3D_Renderer *driverData, ++ FNA3D_BlendState *blendState ++) {} ++ ++static void Headless_SetBlendFactor( ++ FNA3D_Renderer *driverData, ++ FNA3D_Color *blendFactor ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*) driverData; ++ ++ if ( ++ blendFactor->r != renderer->blendConstants[0] || ++ blendFactor->g != renderer->blendConstants[1] || ++ blendFactor->b != renderer->blendConstants[2] || ++ blendFactor->a != renderer->blendConstants[3] ++ ) { ++ renderer->blendConstants[0] = (float) blendFactor->r / 255.0f; ++ renderer->blendConstants[1] = (float) blendFactor->g / 255.0f; ++ renderer->blendConstants[2] = (float) blendFactor->b / 255.0f; ++ renderer->blendConstants[3] = (float) blendFactor->a / 255.0f; ++ } ++} ++ ++static void Headless_ResolveTarget( ++ FNA3D_Renderer *driverData, ++ FNA3D_RenderTargetBinding *target ++) {} ++ ++static void Headless_ResetBackbuffer( ++ FNA3D_Renderer *driverData, ++ FNA3D_PresentationParameters *presentationParameters ++) {} ++ ++static void Headless_ReadBackbuffer( ++ FNA3D_Renderer *driverData, ++ int32_t x, ++ int32_t y, ++ int32_t w, ++ int32_t h, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static int32_t Headless_QueryPixelCount( ++ FNA3D_Renderer *driverData, ++ FNA3D_Query *query ++) { ++ return 0; ++} ++ ++static void Headless_QueryEnd( ++ FNA3D_Renderer *driverData, ++ FNA3D_Query *query ++) {} ++ ++static uint8_t Headless_QueryComplete( ++ FNA3D_Renderer *driverData, ++ FNA3D_Query *query ++) { ++ return 0; ++} ++ ++static void Headless_QueryBegin( ++ FNA3D_Renderer *driverData, ++ FNA3D_Query *query ++) {} ++ ++static void Headless_GetVertexBufferData( ++ FNA3D_Renderer *driverData, ++ FNA3D_Buffer *buffer, ++ int32_t offsetInBytes, ++ void* data, ++ int32_t elementCount, ++ int32_t elementSizeInBytes, ++ int32_t vertexStride ++) {} ++ ++static void Headless_GetTextureDataCube( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ int32_t x, ++ int32_t y, ++ int32_t w, ++ int32_t h, ++ FNA3D_CubeMapFace cubeMapFace, ++ int32_t level, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_GetTextureData3D( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ int32_t x, ++ int32_t y, ++ int32_t z, ++ int32_t w, ++ int32_t h, ++ int32_t d, ++ int32_t level, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_GetTextureData2D( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture, ++ int32_t x, ++ int32_t y, ++ int32_t w, ++ int32_t h, ++ int32_t level, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_GetSysRenderer( ++ FNA3D_Renderer *driverData, ++ FNA3D_SysRendererEXT *sysrenderer ++) {} ++ ++static int32_t Headless_GetReferenceStencil( ++ FNA3D_Renderer *driverData ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*)driverData; ++ return (int32_t) renderer->stencilReference; ++} ++ ++static int32_t Headless_GetMultiSampleMask( ++ FNA3D_Renderer *driverData ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*) driverData; ++ return (int32_t) renderer->multisampleMask; ++} ++ ++static void Headless_GetMaxTextureSlots( ++ FNA3D_Renderer *driverData, ++ int32_t *textures, ++ int32_t *vertexTextures ++) { ++ *textures = MAX_TEXTURE_SAMPLERS; ++ *vertexTextures = MAX_VERTEXTEXTURE_SAMPLERS; ++} ++ ++static int32_t Headless_GetMaxMultiSampleCount( ++ FNA3D_Renderer *driverData, ++ FNA3D_SurfaceFormat format, ++ int32_t multiSampleCount ++) { ++ // "Support" up to 8 multi-samples (based on SDL's max) ++ return SDL_min(multiSampleCount, 8); ++} ++ ++static void Headless_GetIndexBufferData( ++ FNA3D_Renderer *driverData, ++ FNA3D_Buffer *buffer, ++ int32_t offsetInBytes, ++ void* data, ++ int32_t dataLength ++) {} ++ ++static void Headless_GetBlendFactor( ++ FNA3D_Renderer *driverData, ++ FNA3D_Color *blendFactor ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*) driverData; ++ ++ blendFactor->r = (uint8_t) SDL_roundf(renderer->blendConstants[0] * 255.0f); ++ blendFactor->g = (uint8_t) SDL_roundf(renderer->blendConstants[1] * 255.0f); ++ blendFactor->b = (uint8_t) SDL_roundf(renderer->blendConstants[2] * 255.0f); ++ blendFactor->a = (uint8_t) SDL_roundf(renderer->blendConstants[3] * 255.0f); ++} ++ ++static FNA3D_SurfaceFormat Headless_GetBackbufferSurfaceFormat( ++ FNA3D_Renderer *driverData ++) { ++ return FNA3D_SURFACEFORMAT_COLOR; ++} ++ ++static void Headless_GetBackbufferSize( ++ FNA3D_Renderer *driverData, ++ int32_t *w, ++ int32_t *h ++) { ++ *w = 0; ++ *h = 0; ++} ++ ++static int32_t Headless_GetBackbufferMultiSampleCount( ++ FNA3D_Renderer *driverData ++) { ++ return 8; ++} ++ ++static FNA3D_DepthFormat Headless_GetBackbufferDepthFormat( ++ FNA3D_Renderer *driverData ++) { ++ return FNA3D_DEPTHFORMAT_D24S8; ++} ++ ++static FNA3D_Buffer* Headless_GenVertexBuffer( ++ FNA3D_Renderer *driverData, ++ uint8_t dynamic, ++ FNA3D_BufferUsage usage, ++ int32_t sizeInBytes ++) { ++ return (FNA3D_Buffer*) 1; ++} ++ ++static FNA3D_Buffer* Headless_GenIndexBuffer( ++ FNA3D_Renderer *driverData, ++ uint8_t dynamic, ++ FNA3D_BufferUsage usage, ++ int32_t sizeInBytes ++) { ++ return (FNA3D_Buffer*) 1; ++} ++ ++static FNA3D_Renderbuffer* Headless_GenDepthStencilRenderbuffer( ++ FNA3D_Renderer *driverData, ++ int32_t width, ++ int32_t height, ++ FNA3D_DepthFormat format, ++ int32_t multiSampleCount ++) { ++ return (FNA3D_Renderbuffer*) 1; ++} ++ ++static FNA3D_Renderbuffer* Headless_GenColorRenderbuffer( ++ FNA3D_Renderer *driverData, ++ int32_t width, ++ int32_t height, ++ FNA3D_SurfaceFormat format, ++ int32_t multiSampleCount, ++ FNA3D_Texture *texture ++) { ++ return (FNA3D_Renderbuffer*) 1; ++} ++ ++static void Headless_EndPassRestore( ++ FNA3D_Renderer *driverData, ++ FNA3D_Effect *effect ++) {} ++ ++static void Headless_DrawPrimitives( ++ FNA3D_Renderer *driverData, ++ FNA3D_PrimitiveType primitiveType, ++ int32_t vertexStart, ++ int32_t primitiveCount ++) {} ++ ++static void Headless_DrawInstancedPrimitives( ++ FNA3D_Renderer *driverData, ++ FNA3D_PrimitiveType primitiveType, ++ int32_t baseVertex, ++ int32_t minVertexIndex, ++ int32_t numVertices, ++ int32_t startIndex, ++ int32_t primitiveCount, ++ int32_t instanceCount, ++ FNA3D_Buffer *indices, ++ FNA3D_IndexElementSize indexElementSize ++) {} ++ ++static void Headless_DrawIndexedPrimitives( ++ FNA3D_Renderer *driverData, ++ FNA3D_PrimitiveType primitiveType, ++ int32_t baseVertex, ++ int32_t minVertexIndex, ++ int32_t numVertices, ++ int32_t startIndex, ++ int32_t primitiveCount, ++ FNA3D_Buffer *indices, ++ FNA3D_IndexElementSize indexElementSize ++) {} ++ ++static FNA3D_Texture* Headless_CreateTextureCube( ++ FNA3D_Renderer *driverData, ++ FNA3D_SurfaceFormat format, ++ int32_t size, ++ int32_t levelCount, ++ uint8_t isRenderTarget ++) { ++ return (FNA3D_Texture*) 1; ++} ++ ++static FNA3D_Texture* Headless_CreateTexture3D( ++ FNA3D_Renderer *driverData, ++ FNA3D_SurfaceFormat format, ++ int32_t width, ++ int32_t height, ++ int32_t depth, ++ int32_t levelCount ++ ) { ++ return (FNA3D_Texture*) 1; ++} ++ ++static FNA3D_Texture* Headless_CreateTexture2D( ++ FNA3D_Renderer *driverData, ++ FNA3D_SurfaceFormat format, ++ int32_t width, ++ int32_t height, ++ int32_t levelCount, ++ uint8_t isRenderTarget ++ ) { ++ return (FNA3D_Texture*) 1; ++} ++ ++static FNA3D_Texture* Headless_CreateSysTexture( ++ FNA3D_Renderer *driverData, ++ FNA3D_SysTextureEXT *systexture ++ ) { ++ return (FNA3D_Texture*) 1; ++} ++ ++static FNA3D_Query* Headless_CreateQuery( ++ FNA3D_Renderer *driverData ++) { ++ return NULL; ++} ++ ++/* MojoShader backend */ ++ ++static void Headless_CreateEffect( ++ FNA3D_Renderer *driverData, ++ uint8_t *effectCode, ++ uint32_t effectCodeLength, ++ FNA3D_Effect **effect, ++ MOJOSHADER_effect **effectData ++) { ++ Headless_Renderer *renderer = (Headless_Renderer*) driverData; ++ MOJOSHADER_effectShaderContext shaderBackend = {0}; ++ ++ shaderBackend.shaderContext = renderer->mojoshaderContext; ++ shaderBackend.compileShader = (MOJOSHADER_compileShaderFunc) MOJOSHADER_headlessCompileShader; ++ shaderBackend.getParseData = (MOJOSHADER_getParseDataFunc) MOJOSHADER_headlessGetShaderParseData; ++ // Other callbacks aren't required to parse shaders ++ shaderBackend.m = NULL; ++ shaderBackend.f = NULL; ++ shaderBackend.malloc_data = NULL; ++ ++ *effectData = MOJOSHADER_compileEffect( ++ effectCode, ++ effectCodeLength, ++ NULL, ++ 0, ++ NULL, ++ 0, ++ &shaderBackend ++ ); ++ *effect = (FNA3D_Effect*) effectData; ++} ++ ++static void Headless_CloneEffect( ++ FNA3D_Renderer *driverData, ++ FNA3D_Effect *cloneSource, ++ FNA3D_Effect **effect, ++ MOJOSHADER_effect **effectData ++) { ++ MOJOSHADER_effect *cloneSourceEffect = (MOJOSHADER_effect*) cloneSource; ++ ++ *effectData = MOJOSHADER_cloneEffect(cloneSourceEffect); ++ *effect = (FNA3D_Effect*) effectData; ++} ++ ++static void Headless_Clear( ++ FNA3D_Renderer *driverData, ++ FNA3D_ClearOptions options, ++ FNA3D_Vec4 *color, ++ float depth, ++ int32_t stencil ++) {} ++ ++static void Headless_BeginPassRestore( ++ FNA3D_Renderer *driverData, ++ FNA3D_Effect *effect, ++ MOJOSHADER_effectStateChanges *stateChanges ++) {} ++ ++static void Headless_ApplyVertexBufferBindings( ++ FNA3D_Renderer *driverData, ++ FNA3D_VertexBufferBinding *bindings, ++ int32_t numBindings, ++ uint8_t bindingsUpdated, ++ int32_t baseVertex ++) {} ++ ++static void Headless_ApplyRasterizerState( ++ FNA3D_Renderer *driverData, ++ FNA3D_RasterizerState *rasterizerState ++) {} ++ ++static void Headless_ApplyEffect( ++ FNA3D_Renderer *driverData, ++ FNA3D_Effect *effect, ++ uint32_t pass, ++ MOJOSHADER_effectStateChanges *stateChanges ++) {} ++ ++static void Headless_AddDisposeVertexBuffer( ++ FNA3D_Renderer *driverData, ++ FNA3D_Buffer *buffer ++) {} ++ ++static void Headless_AddDisposeTexture( ++ FNA3D_Renderer *driverData, ++ FNA3D_Texture *texture ++) {} ++ ++static void Headless_AddDisposeRenderbuffer( ++ FNA3D_Renderer *driverData, ++ FNA3D_Renderbuffer *renderbuffer ++) {} ++ ++static void Headless_AddDisposeQuery( ++ FNA3D_Renderer *driverData, ++ FNA3D_Query *query ++) {} ++ ++static void Headless_AddDisposeIndexBuffer( ++ FNA3D_Renderer *driverData, ++ FNA3D_Buffer *buffer ++) {} ++ ++static void Headless_AddDisposeEffect( ++ FNA3D_Renderer *driverData, ++ FNA3D_Effect *effect ++) { ++ MOJOSHADER_effect *effectData = (MOJOSHADER_effect*) effect; ++ MOJOSHADER_deleteEffect(effectData); ++} ++ ++/* Initialization */ ++ ++static uint8_t Headless_PrepareWindowAttributes(uint32_t *flags) ++{ ++ return SDL_TRUE; ++} ++ ++static void Headless_DestroyDevice(FNA3D_Device *device) ++{ ++ Headless_Renderer *renderer = (Headless_Renderer*) device->driverData; ++ ++ MOJOSHADER_headlessDestroyContext(renderer->mojoshaderContext); ++ SDL_free(renderer); ++ SDL_free(device); ++} ++ ++static FNA3D_Device* Headless_CreateDevice( ++ FNA3D_PresentationParameters *presentationParameters, ++ uint8_t debugMode ++) { ++ FNA3D_Device *result = SDL_malloc(sizeof(FNA3D_Device)); ++ ASSIGN_DRIVER(Headless) ++ ++ Headless_Renderer *renderer = SDL_malloc(sizeof(Headless_Renderer)); ++ SDL_memset(renderer, '\0', sizeof(Headless_Renderer)); ++ ++ result->driverData = (FNA3D_Renderer*) renderer; ++ ++ renderer->mojoshaderContext = MOJOSHADER_headlessCreateContext(NULL, NULL, NULL); ++ if (renderer->mojoshaderContext == NULL) ++ { ++ FNA3D_LogError("Could not create MojoShader context"); ++ SDL_free(renderer); ++ SDL_free(result); ++ return NULL; ++ } ++ ++ return result; ++} ++ ++FNA3D_Driver HeadlessDriver = { ++ "Headless", ++ Headless_PrepareWindowAttributes, ++ Headless_CreateDevice ++}; ++ ++#else ++ ++extern int this_tu_is_empty; ++ ++#endif /* FNA3D_DRIVER_HEADLESS */ ++ ++/* vim: set noexpandtab shiftwidth=8 tabstop=8: */ +diff --git a/src/FNA3D_Driver_headless.h b/src/FNA3D_Driver_headless.h +new file mode 100644 +index 0000000..444964c +--- /dev/null ++++ b/src/FNA3D_Driver_headless.h +@@ -0,0 +1,30 @@ ++/* FNA3D - 3D Graphics Library for FNA ++* ++ * Copyright (c) 2020-2024 Ethan Lee ++ * ++ * This software is provided 'as-is', without any express or implied warranty. ++ * In no event will the authors be held liable for any damages arising from ++ * the use of this software. ++ * ++ * Permission is granted to anyone to use this software for any purpose, ++ * including commercial applications, and to alter it and redistribute it ++ * freely, subject to the following restrictions: ++ * ++ * 1. The origin of this software must not be misrepresented; you must not ++ * claim that you wrote the original software. If you use this software in a ++ * product, an acknowledgment in the product documentation would be ++ * appreciated but is not required. ++ * ++ * 2. Altered source versions must be plainly marked as such, and must not be ++ * misrepresented as being the original software. ++ * ++ * 3. This notice may not be removed or altered from any source distribution. ++ * ++ * Ethan "flibitijibibo" Lee ++ * ++ */ ++ ++#ifndef FNA3D_DRIVER_HEADLESS_H ++#define FNA3D_DRIVER_HEADLESS_H ++ ++#endif //FNA3D_DRIVER_HEADLESS_H diff --git a/lib-ext/MojoShader_Headless.patch b/lib-ext/MojoShader_Headless.patch new file mode 100644 index 000000000..f48843907 --- /dev/null +++ b/lib-ext/MojoShader_Headless.patch @@ -0,0 +1,460 @@ +commit 93c93c5115a5a3171d75fa47fab5ccccdde2c852 +Author: psyGamer +Date: Sun Nov 24 17:03:27 2024 +0100 + + Add minimal headless shader parsing backend + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4e87e32..76d72b7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -176,6 +176,7 @@ ADD_LIBRARY(mojoshader + mojoshader_d3d11.c + mojoshader_vulkan.c + mojoshader_sdlgpu.c ++ mojoshader_headless.c + profiles/mojoshader_profile_arb1.c + profiles/mojoshader_profile_bytecode.c + profiles/mojoshader_profile_d3d.c +diff --git a/mojoshader.h b/mojoshader.h +index 930c28f..9d930e8 100644 +--- a/mojoshader.h ++++ b/mojoshader.h +@@ -4351,6 +4351,74 @@ DECLSPEC void MOJOSHADER_sdlGetShaders(MOJOSHADER_sdlContext *ctx, + DECLSPEC unsigned int MOJOSHADER_sdlGetSamplerSlots(MOJOSHADER_sdlShaderData *shader); + + ++/* Headless interface... */ ++ ++typedef struct MOJOSHADER_headlessContext MOJOSHADER_headlessContext; ++typedef struct MOJOSHADER_headlessShaderData MOJOSHADER_headlessShaderData; ++ ++/* ++ * Prepares a context to manage headless shaders. ++ * ++ * You do not need to call this if all you want is MOJOSHADER_parse(). ++ * ++ * As MojoShader requires some memory to be allocated, you may provide a ++ * custom allocator to this function, which will be used to allocate/free ++ * memory. They function just like malloc() and free(). We do not use ++ * realloc(). If you don't care, pass NULL in for the allocator functions. ++ * If your allocator needs instance-specific data, you may supply it with the ++ * (malloc_d) parameter. This pointer is passed as-is to your (m) and (f) ++ * functions. ++ * ++ * Returns a new context on success, NULL on error. ++ */ ++DECLSPEC MOJOSHADER_headlessContext *MOJOSHADER_headlessCreateContext(MOJOSHADER_malloc m, ++ MOJOSHADER_free f, ++ void *malloc_d); ++ ++/* ++ * Deinitialize MojoShader's headless shader management. ++ * ++ * This will clean up resources previously allocated. ++ * ++ * This will not clean up shaders and programs you created! Please call ++ * MOJOSHADER_headlessDeleteShader() and MOJOSHADER_headlessDeleteProgram() to clean ++ * those up before calling this function! ++ * ++ * This function destroys the MOJOSHADER_headlessContext you pass it. ++ */ ++DECLSPEC void MOJOSHADER_headlessDestroyContext(MOJOSHADER_headlessContext *ctx); ++ ++/* ++ * Compile a buffer of Direct3D shader bytecode into an headless shader module. ++ * ++ * (tokenbuf) is a buffer of Direct3D shader bytecode. ++ * (bufsize) is the size, in bytes, of the bytecode buffer. ++ * (swiz), (swizcount), (smap), and (smapcount) are passed to ++ * MOJOSHADER_parse() unmolested. ++ * ++ * Returns NULL on error, or a shader handle on success. ++ * ++ * Compiled shaders from this function may not be shared between contexts. ++ */ ++DECLSPEC MOJOSHADER_headlessShaderData *MOJOSHADER_headlessCompileShader(MOJOSHADER_headlessContext *ctx, ++ const char *mainfn, ++ const unsigned char *tokenbuf, ++ const unsigned int bufsize, ++ const MOJOSHADER_swizzle *swiz, ++ const unsigned int swizcount, ++ const MOJOSHADER_samplerMap *smap, ++ const unsigned int smapcount); ++ ++/* ++ * Get the MOJOSHADER_parseData structure that was produced from the ++ * call to MOJOSHADER_headlessCompileShader(). ++ * ++ * This data is read-only, and you should NOT attempt to free it. This ++ * pointer remains valid until the shader is deleted. ++ */ ++DECLSPEC const MOJOSHADER_parseData *MOJOSHADER_headlessGetShaderParseData(MOJOSHADER_headlessShaderData *shader); ++ ++ + /* Effects interface... */ + #include "mojoshader_effects.h" + +diff --git a/mojoshader_effects.c b/mojoshader_effects.c +index 1b24fd3..b6fd9d5 100644 +--- a/mojoshader_effects.c ++++ b/mojoshader_effects.c +@@ -1075,6 +1075,137 @@ parseEffect_outOfMemory: + return &MOJOSHADER_out_of_mem_effect; + } // MOJOSHADER_parseEffect + ++MOJOSHADER_effect *MOJOSHADER_compileEffectMeta(const unsigned char *buf, ++ const unsigned int _len, ++ const MOJOSHADER_swizzle *swiz, ++ const unsigned int swizcount, ++ const MOJOSHADER_samplerMap *smap, ++ const unsigned int smapcount, ++ const MOJOSHADER_effectShaderContext *ctx) ++{ ++ const uint8 *ptr = (const uint8 *) buf; ++ uint32 len = (uint32) _len; ++ ErrorList *errors; ++ MOJOSHADER_malloc m; ++ MOJOSHADER_free f; ++ void *d; ++ ++ /* Need a backend! */ ++ if (ctx == NULL) ++ return &MOJOSHADER_need_a_backend_effect; ++ ++ /* Supply both m and f, or neither */ ++ if ( ((ctx->m == NULL) && (ctx->f != NULL)) ++ || ((ctx->m != NULL) && (ctx->f == NULL)) ) ++ return &MOJOSHADER_out_of_mem_effect; ++ ++ /* Use default malloc/free if m/f were not passed */ ++ if (ctx->m == NULL) ++ m = MOJOSHADER_internal_malloc; ++ else ++ m = ctx->m; ++ if (ctx->f == NULL) ++ f = MOJOSHADER_internal_free; ++ else ++ f = ctx->f; ++ d = ctx->malloc_data; ++ ++ /* malloc base effect structure */ ++ MOJOSHADER_effect *retval = (MOJOSHADER_effect *) m(sizeof (MOJOSHADER_effect), ++ ctx->malloc_data); ++ if (retval == NULL) ++ return &MOJOSHADER_out_of_mem_effect; ++ memset(retval, '\0', sizeof (*retval)); ++ ++ /* Store ctx in effect structure */ ++ memcpy(&retval->ctx, ctx, sizeof(MOJOSHADER_effectShaderContext)); ++ retval->ctx.m = m; ++ retval->ctx.f = f; ++ ++ if (len < 8) ++ goto parseEffect_unexpectedEOF; ++ ++ /* Read in header magic, seek to initial offset */ ++ const uint8 *base = NULL; ++ uint16 magic; ++ uint8 version_major; ++ uint8 version_minor; ++ read_version_token(&ptr, &len, &magic, &version_major, &version_minor); ++ if ((magic == 0xBCF0) && (version_major == 0x0B) && (version_minor == 0xCF)) ++ { ++ /* The Effect compiler provided with XNA4 adds some extra mess at the ++ * beginning of the file. It's useless though, so just skip it. ++ * -flibit ++ */ ++ const uint32 skip = readui32(&ptr, &len) - 8; ++ ptr += skip; ++ len += skip; ++ read_version_token(&ptr, &len, &magic, &version_major, &version_minor); ++ } // if ++ if (!((magic == 0xFEFF) && (version_major == 0x09) && (version_minor == 0x01))) ++ { ++ MOJOSHADER_deleteEffect(retval); ++ return &MOJOSHADER_not_an_effect_effect; ++ } // if ++ else ++ { ++ const uint32 offset = readui32(&ptr, &len); ++ base = ptr; ++ if (offset > len) ++ goto parseEffect_unexpectedEOF; ++ ptr += offset; ++ len -= offset; ++ } // else ++ ++ if (len < 16) ++ goto parseEffect_unexpectedEOF; ++ ++ /* Parse structure counts */ ++ const uint32 numparams = readui32(&ptr, &len); ++ const uint32 numtechniques = readui32(&ptr, &len); ++ /*const uint32 FIXME =*/ readui32(&ptr, &len); ++ const uint32 numobjects = readui32(&ptr, &len); ++ ++ /* Alloc structures now, so object types can be stored */ ++ retval->object_count = numobjects; ++ const uint32 siz = sizeof (MOJOSHADER_effectObject) * numobjects; ++ retval->objects = (MOJOSHADER_effectObject *) m(siz, d); ++ if (retval->objects == NULL) ++ goto parseEffect_outOfMemory; ++ memset(retval->objects, '\0', siz); ++ ++ /* Parse effect parameters */ ++ retval->param_count = numparams; ++ readparameters(numparams, base, &ptr, &len, ++ &retval->params, retval->objects, ++ m, d); ++ ++ /* Parse effect techniques */ ++ retval->technique_count = numtechniques; ++ readtechniques(numtechniques, base, &ptr, &len, ++ &retval->techniques, retval->objects, ++ m, d); ++ ++ /* Initial effect technique/pass */ ++ retval->current_technique = &retval->techniques[0]; ++ retval->current_pass = -1; ++ ++ ++ if (len < 8) ++ goto parseEffect_unexpectedEOF; ++ ++ retval->error_count = 0; ++ retval->object_count = 0; ++ ++ return retval; ++ ++parseEffect_unexpectedEOF: ++ MOJOSHADER_deleteEffect(retval); ++ return &MOJOSHADER_unexpected_eof_effect; ++parseEffect_outOfMemory: ++ MOJOSHADER_deleteEffect(retval); ++ return &MOJOSHADER_out_of_mem_effect; ++} // MOJOSHADER_parseEffectMeta + + void freetypeinfo(MOJOSHADER_symbolTypeInfo *typeinfo, + MOJOSHADER_free f, void *d) +diff --git a/mojoshader_effects.h b/mojoshader_effects.h +index 48d9a4e..9ede0e8 100644 +--- a/mojoshader_effects.h ++++ b/mojoshader_effects.h +@@ -676,6 +676,29 @@ DECLSPEC MOJOSHADER_effect *MOJOSHADER_compileEffect(const unsigned char *tokenb + const unsigned int smapcount, + const MOJOSHADER_effectShaderContext *ctx); + ++/* Resolves metadata information such as parameters / techniques within the effect. ++ * Intended to be used for headless operations. ++ * ++ * (tokenbuf) is a buffer of Direct3D shader bytecode. ++ * (bufsize) is the size, in bytes, of the bytecode buffer. ++ * (swiz), (swizcount), (smap), and (smapcount) are passed to ++ * MOJOSHADER_parse() unmolested. ++ * (ctx) contains all the function pointers needed to create and bind shaders ++ * for a specific backend (OpenGL, Metal, etc). ++ * ++ * This function returns a MOJOSHADER_effect*, containing effect data which ++ * includes shaders usable with the provided backend. ++ * ++ * This call is only as thread safe as the backend functions! ++ */ ++DECLSPEC MOJOSHADER_effect *MOJOSHADER_compileEffectMeta(const unsigned char *tokenbuf, ++ const unsigned int bufsize, ++ const MOJOSHADER_swizzle *swiz, ++ const unsigned int swizcount, ++ const MOJOSHADER_samplerMap *smap, ++ const unsigned int smapcount, ++ const MOJOSHADER_effectShaderContext *ctx); ++ + /* Delete the shaders that were allocated for an effect. + * + * (effect) is a MOJOSHADER_effect* obtained from MOJOSHADER_compileEffect(). +diff --git a/mojoshader_headless.c b/mojoshader_headless.c +new file mode 100644 +index 0000000..d34b460 +--- /dev/null ++++ b/mojoshader_headless.c +@@ -0,0 +1,164 @@ ++/** ++* MojoShader; generate shader programs from bytecode of compiled ++ * Direct3D shaders. ++ * ++ * Please see the file LICENSE.txt in the source's root directory. ++ */ ++ ++#define __MOJOSHADER_INTERNAL__ 1 ++#include "mojoshader_internal.h" ++ ++struct MOJOSHADER_headlessContext ++{ ++ const char* profile; ++ ++ MOJOSHADER_malloc malloc_fn; ++ MOJOSHADER_free free_fn; ++ void *malloc_data; ++}; ++ ++struct MOJOSHADER_headlessShaderData ++{ ++ const MOJOSHADER_parseData *parseData; ++ uint16_t tag; ++ uint32_t refcount; ++ uint32_t samplerSlots; ++ int32_t uniformBufferSize; ++}; ++ ++/* Error state... */ ++ ++static char error_buffer[1024] = { '\0' }; ++ ++static void set_error(const char *str) ++{ ++ snprintf(error_buffer, sizeof (error_buffer), "%s", str); ++} // set_error ++ ++static inline void out_of_memory(void) ++{ ++ set_error("out of memory"); ++} // out_of_memory ++ ++/* Internals */ ++ ++/* Public API */ ++ ++MOJOSHADER_headlessContext *MOJOSHADER_headlessCreateContext( ++ MOJOSHADER_malloc m, ++ MOJOSHADER_free f, ++ void *malloc_d ++) { ++ MOJOSHADER_headlessContext* resultCtx; ++ ++ if (m == NULL) m = MOJOSHADER_internal_malloc; ++ if (f == NULL) f = MOJOSHADER_internal_free; ++ ++ resultCtx = (MOJOSHADER_headlessContext*) m(sizeof(MOJOSHADER_headlessContext), malloc_d); ++ if (resultCtx == NULL) ++ { ++ out_of_memory(); ++ goto init_fail; ++ } // if ++ ++ memset(resultCtx, '\0', sizeof(MOJOSHADER_headlessContext)); ++ ++#ifdef __APPLE__ ++ resultCtx->profile = "metal"; ++#else ++ resultCtx->profile = "spirv"; ++#endif ++ ++ resultCtx->malloc_fn = m; ++ resultCtx->free_fn = f; ++ resultCtx->malloc_data = malloc_d; ++ ++ return resultCtx; ++ ++ init_fail: ++ if (resultCtx != NULL) ++ f(resultCtx, malloc_d); ++ return NULL; ++} // MOJOSHADER_headlessCreateContext ++ ++void MOJOSHADER_headlessDestroyContext( ++ MOJOSHADER_headlessContext *ctx ++) { ++ ctx->free_fn(ctx, ctx->malloc_data); ++} // MOJOSHADER_sdlDestroyContext ++ ++static uint16_t shaderTagCounter = 1; ++ ++MOJOSHADER_headlessShaderData *MOJOSHADER_headlessCompileShader( ++ MOJOSHADER_headlessContext *ctx, ++ const char *mainfn, ++ const unsigned char *tokenbuf, ++ const unsigned int bufsize, ++ const MOJOSHADER_swizzle *swiz, ++ const unsigned int swizcount, ++ const MOJOSHADER_samplerMap *smap, ++ const unsigned int smapcount ++) { ++ MOJOSHADER_headlessShaderData *shader = NULL; ++ int maxSamplerIndex = 0; ++ int i; ++ ++ const MOJOSHADER_parseData *pd = MOJOSHADER_parse( ++ ctx->profile, mainfn, ++ tokenbuf, bufsize, ++ swiz, swizcount, ++ smap, smapcount, ++ ctx->malloc_fn, ++ ctx->free_fn, ++ ctx->malloc_data ++ ); ++ ++ if (pd->error_count > 0) ++ { ++ set_error(pd->errors[0].error); ++ goto parse_shader_fail; ++ } // if ++ ++ shader = (MOJOSHADER_headlessShaderData*) ctx->malloc_fn(sizeof(MOJOSHADER_headlessShaderData), ctx->malloc_data); ++ if (shader == NULL) ++ { ++ out_of_memory(); ++ goto parse_shader_fail; ++ } // if ++ ++ shader->parseData = pd; ++ shader->refcount = 1; ++ shader->tag = shaderTagCounter++; ++ ++ /* XNA allows empty shader slots in the middle, so we have to find the actual max binding index */ ++ for (i = 0; i < pd->sampler_count; i += 1) ++ { ++ if (pd->samplers[i].index > maxSamplerIndex) ++ { ++ maxSamplerIndex = pd->samplers[i].index; ++ } ++ } ++ ++ shader->samplerSlots = (uint32_t) maxSamplerIndex + 1; ++ ++ shader->uniformBufferSize = 0; ++ for (i = 0; i < pd->uniform_count; i++) ++ { ++ shader->uniformBufferSize += Max(pd->uniforms[i].array_count, 1); ++ } // for ++ shader->uniformBufferSize *= 16; // Yes, even the bool registers are this size ++ ++ return shader; ++ ++ parse_shader_fail: ++ MOJOSHADER_freeParseData(pd); ++ if (shader != NULL) ++ ctx->free_fn(shader, ctx->malloc_data); ++ return NULL; ++} // MOJOSHADER_headlessCompileShader ++ ++const MOJOSHADER_parseData *MOJOSHADER_headlessGetShaderParseData( ++ MOJOSHADER_headlessShaderData *shader ++) { ++ return (shader != NULL) ? shader->parseData : NULL; ++} // MOJOSHADER_headlessGetShaderParseData +\ No newline at end of file +diff --git a/mojoshader_internal.h b/mojoshader_internal.h +index 61af06d..e67a923 100644 +--- a/mojoshader_internal.h ++++ b/mojoshader_internal.h +@@ -340,7 +340,10 @@ static inline int Min(const int a, const int b) + { + return ((a < b) ? a : b); + } // Min +- ++static inline int Max(const int a, const int b) ++{ ++ return ((a > b) ? a : b); ++} // Max + + // Hashtables... + diff --git a/lib-ext/README.md b/lib-ext/README.md new file mode 100644 index 000000000..93e618ffb --- /dev/null +++ b/lib-ext/README.md @@ -0,0 +1,15 @@ +# Extra Libraries + +These are additional / updated libraries provided by Everest. + +- `lib-vanilla`: + - Libraries which are used for the vanilla installation. + - `FNA3D.dll` is compiled with the `FNA3D_ExclusiveFullscreen.patch` applied and is statically linked. + - Other libraries are taken from **fnalibs** / vanilla installations. +- `lib64-*`: + - Libraries which are used by the Everest installation + - `FNA3D.dll` is compiled with the `FNA3D_ExclusiveFullscreen.patch` applied and is statically linked. + - `libFNA3D.so.0` is compiled with the `FNA3D_Headless.patch` and `MojoShader_Headless.patch` applied. + - Other libraries are taken from **fnalibs** / vanilla installations. +- `FNA.dll`: + - `FNA.Core.csproj` compiled on the `23.03` tag diff --git a/lib-ext/lib64-linux/libFNA3D.so.0 b/lib-ext/lib64-linux/libFNA3D.so.0 index 121fed3bc1c80c54b3cbe7714134293cdd3ebd2c..77997ae899800c65bdf5e14068dfe7fc92e08e42 100755 GIT binary patch literal 772248 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 HkD#mVyWEJawn({OI5`9#~ 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

V8OW-?Bzt(bT?eN)?iYp(;(NRQo54Pr0# zMaGW|Pv)H5!^32OgKOcNDTn1)k!1T)Pt38_<;FMdb%sW~hOa%#?JhNb&u$ z-|ClD*_YP8Oss|fx9zXJ>r3md*1GFx0{scTmY=dMx(0Po4gmTbjj{f8G4=gBec#*v zm$c8`Ka=AIOAlKE!~z!AsHu!LTSf~fn4ejJC|{)bqea_07rCbfyV4h5k0+JnUv1Rw zr5!AjrxtCGjINhPDJXzb%th{LCC$dFk4d!ni%-_agz5SHn;G2yP$OPZH*H!$_?~Nt zRpo1Txuv`vzsDDLx!L)ZR;6^&s;7SQ!WW8qqi;wl6EI@nJw+R)@b^JBZ#4p$w8?mG z154YP5!d_h8*a+`%7P2Aj@-d!Rw5|9ZNIeI_5FRcYr#Bf4Ucw5XYmk|apP0pOMc3z zyNSoySo%C&1v+YU+~}y=eWm5MrRU>&R24B-dAJ}hH2z3!g*?9m$7V~mO$|- z!`oCX7DdNXIb@OrojcX0W6^i6LBYUDSWe(pZbO5vCYDBCHBJL)(Vy17FD4$2Du_)) zb|GC0(ZY_)RB_7yQ|&b$#AXrf&YXXnG`s=;zhjd&m$r%);~MN`zzV!32SN3a<_01p z@hvnb4)9W^1JBd_S&8F`r68PZVa+UK?Tt;Pj^5JHNOrs{jkP~?G?k|Fy3mQ=Q_XE8 zIGai{B*DdYc+Jfuq&JmjNkV3@C%xt>5?oEC{Ujkf*yE}hLPADU=>SRSAMDAfL96(7 zW>e{Ty`hOYpu$WKUU!ZSJWcaBHh4>*DE5n4uZvYF+rtSpb2oufIs5B!6Ducn3%C)U z=AIe|4|jtWMHsooIz!S-P{SLU+{@jY28-3k@ zl9RPIGIgUX-)qV$iVx!$GVit>$WU()sF4#*1P9e{L*zK^|_yD3A;_%0A%I(J5 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�xRSr3{LP%7bUOH?X%+ET$R-H^-eI&Mg^ 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 literal 735080 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

& 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 T#lK>v>6JWhe-+f;703TSF2d}# From ee34ba3e42384d6c63a3c1cb5430fb303b9d7bbb Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 24 Nov 2024 19:51:34 +0100 Subject: [PATCH 09/20] Properly set Everest.Flags.IsHeadless --- Celeste.Mod.mm/Patches/FNA/Headless/Game.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs index 54836c121..38e2a8e6a 100644 --- a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs @@ -40,6 +40,13 @@ public static void PatchGameCtor(ILContext context, CustomAttribute attrib) { TypeDefinition t_HeadlessWindow = MonoModRule.Modder.FindType("Microsoft.Xna.Framework.HeadlessWindow").Resolve(); MethodReference m_HeadlessWindow_ctor = MonoModRule.Modder.Module.ImportReference(t_HeadlessWindow.FindMethod(".ctor")); + TypeDefinition t_Flags = MonoModRule.Modder.Module.GetType("Celeste.Mod.Everest/Flags"); + MethodReference m_Flags_setIsHeadless = MonoModRule.Modder.Module.ImportReference(t_Flags.FindProperty("IsHeadless")!.GetMethod); + + // Insert 'Everest.Flags.IsHeadless = true' + cursor.EmitLdcI4(1 /* true */); + cursor.EmitCall(m_Flags_setIsHeadless); + // Replace 'FNAPlatform.CreateWindow()' with 'new HeadlessWindow()' cursor.GotoNext(instr => instr.MatchLdsfld("Microsoft.Xna.Framework.FNAPlatform", "CreateWindow")); cursor.RemoveRange(2); From 864118ba462983f569c810e50363fbada069c8b2 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 24 Nov 2024 20:40:25 +0100 Subject: [PATCH 10/20] Forward "headless" CLI flag from MiniInstaller to MMR --- Celeste.Mod.mm/MonoModRules.Game.cs | 2 -- Celeste.Mod.mm/MonoModRules.cs | 3 +++ Celeste.Mod.mm/Patches/Celeste.cs | 11 ++++++++++- Celeste.Mod.mm/Patches/FNA/Headless/Game.cs | 9 +-------- MiniInstaller/Program.cs | 16 ++++++++++------ 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Celeste.Mod.mm/MonoModRules.Game.cs b/Celeste.Mod.mm/MonoModRules.Game.cs index 511ad552d..064af6cc8 100644 --- a/Celeste.Mod.mm/MonoModRules.Game.cs +++ b/Celeste.Mod.mm/MonoModRules.Game.cs @@ -91,8 +91,6 @@ private static void InitGameRules(MonoModder modder) { MonoModRule.Flag.Set("Steamworks", isSteamworks); MonoModRule.Flag.Set("NoLauncher", !isSteamworks); - MonoModRule.Flag.Set("Headless", true); - MonoModRule.Flag.Set("Has:BirdTutorialGuiButtonPromptEnum", MonoModRule.Modder.FindType("Celeste.BirdTutorialGui/ButtonPrompt")?.SafeResolve() != null); // Run game preprocessor diff --git a/Celeste.Mod.mm/MonoModRules.cs b/Celeste.Mod.mm/MonoModRules.cs index a1b0b69da..1f0cb56aa 100644 --- a/Celeste.Mod.mm/MonoModRules.cs +++ b/Celeste.Mod.mm/MonoModRules.cs @@ -102,6 +102,9 @@ private static void InitCommonRules(MonoModder modder) { if (MonoModder.Version < monoModderAsmRef.Version) throw new Exception($"Unexpected version of MonoMod patcher: {MonoModder.Version} (expected {monoModderAsmRef.Version}+)"); + // Data is set by MiniInstaller + MonoModRule.Flag.Set("Headless", (bool?)AppDomain.CurrentDomain.GetData("Everest_IsHeadless") ?? false); + // Add common post processor modder.PostProcessors += CommonPostProcessor; } diff --git a/Celeste.Mod.mm/Patches/Celeste.cs b/Celeste.Mod.mm/Patches/Celeste.cs index b12e53123..178314108 100644 --- a/Celeste.Mod.mm/Patches/Celeste.cs +++ b/Celeste.Mod.mm/Patches/Celeste.cs @@ -15,6 +15,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; +using MonoMod.InlineRT; using MonoMod.Utils; using System.Text.RegularExpressions; using System.Text; @@ -28,7 +29,7 @@ class patch_Celeste : Celeste { // We're effectively in Celeste, but still need to "expose" private fields to our mod. private bool firstLoad; - + [PatchCelesteMain] public static extern void orig_Main(string[] args); @@ -393,6 +394,14 @@ static partial class MonoModRules { public static void PatchCelesteMain(ILContext context, CustomAttribute attrib) { ILCursor cursor = new ILCursor(context); + + TypeDefinition t_Flags = MonoModRule.Modder.Module.GetType("Celeste.Mod.Everest/Flags"); + MethodReference m_Flags_setIsHeadless = MonoModRule.Modder.Module.ImportReference(t_Flags.FindProperty("IsHeadless")!.SetMethod); + + // Insert 'Everest.Flags.IsHeadless = ' + cursor.EmitLdcI4(MonoModRule.Flag.Get("Headless") ? 1 : 0); + cursor.EmitCall(m_Flags_setIsHeadless); + // TryGotoNext used because SDL_GetPlatform does not exist on XNA if (cursor.TryGotoNext(instr => instr.MatchCall("SDL2.SDL", "SDL_GetPlatform"))) { cursor.Next.OpCode = OpCodes.Ldstr; diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs index 38e2a8e6a..d356661a4 100644 --- a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs @@ -12,9 +12,9 @@ namespace Microsoft.Xna.Framework { [GameDependencyPatch("FNA")] public partial class patch_Game { + [MonoModIfFlag("Headless")] [MonoModConstructor] [MonoModIgnore] - [MonoModIfFlag("Headless")] [PatchGameCtor] public extern void ctor(); } @@ -40,13 +40,6 @@ public static void PatchGameCtor(ILContext context, CustomAttribute attrib) { TypeDefinition t_HeadlessWindow = MonoModRule.Modder.FindType("Microsoft.Xna.Framework.HeadlessWindow").Resolve(); MethodReference m_HeadlessWindow_ctor = MonoModRule.Modder.Module.ImportReference(t_HeadlessWindow.FindMethod(".ctor")); - TypeDefinition t_Flags = MonoModRule.Modder.Module.GetType("Celeste.Mod.Everest/Flags"); - MethodReference m_Flags_setIsHeadless = MonoModRule.Modder.Module.ImportReference(t_Flags.FindProperty("IsHeadless")!.GetMethod); - - // Insert 'Everest.Flags.IsHeadless = true' - cursor.EmitLdcI4(1 /* true */); - cursor.EmitCall(m_Flags_setIsHeadless); - // Replace 'FNAPlatform.CreateWindow()' with 'new HeadlessWindow()' cursor.GotoNext(instr => instr.MatchLdsfld("Microsoft.Xna.Framework.FNAPlatform", "CreateWindow")); cursor.RemoveRange(2); diff --git a/MiniInstaller/Program.cs b/MiniInstaller/Program.cs index e6fc235f7..6e72ea312 100644 --- a/MiniInstaller/Program.cs +++ b/MiniInstaller/Program.cs @@ -7,6 +7,9 @@ namespace MiniInstaller { public static partial class Program { public static int Main(string[] args) { + // Forward to MonoModRules + AppDomain.CurrentDomain.SetData("Everest_IsHeadless", args.Contains("headless")); + if (args.Length == 0) return StandardMode(args); if (args[0] == "--fastmode") return FastMode(args); return StandardMode(args); @@ -20,13 +23,13 @@ public static bool Init() { // Set working directory Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!); - + if (!Globals.SetupPaths()) { // setting up paths failed (Celeste.exe was not found). return false; } - - + + Globals.DetermineInstallPlatform(); // .NET hates it when strong-named dependencies get updated. @@ -123,7 +126,7 @@ public static int StandardMode(string[] args) { return 0; } - + ///

/// Fast mode serves as a way to speed up development environments, /// allowing disabling most parts of the installation process to only focus on the ones @@ -135,6 +138,7 @@ public static int StandardMode(string[] args) { /// "hookgen": Runs MonoMod.HookGen with the present dll, then runs MonoMod.Patcher on it to relink the HEM /// "apphost": Only if "maingame" is also present, forces the regeneration of an apphost and runtime config files /// "xmldoc": Only if "xmldoc" is also present, combines xmldocs + /// "headless": Enables headless mode, for usage inside CIs /// public static int FastMode(string[] args) { bool doMainGame = false; @@ -177,10 +181,10 @@ public static int FastMode(string[] args) { string[] mods = new string[] { Globals.PathEverestLib, everestModDLL }; string coreGameCacheFile = Path.ChangeExtension(Globals.PathCelesteExe, ".CoreGameCache.dll"); - + if (doMainGame && !File.Exists(coreGameCacheFile)) coreGameCacheRegen = true; - + if (coreGameCacheRegen && File.Exists(coreGameCacheFile)) File.Delete(coreGameCacheFile); From 0f048a913ecb890fb6ee6ea945c943f854483eb3 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 24 Nov 2024 21:07:44 +0100 Subject: [PATCH 11/20] Fix selecting headless FNA3D driver implicitly instead of explicitly --- lib-ext/FNA3D_Headless.patch | 8 ++++---- lib-ext/lib64-linux/libFNA3D.so.0 | Bin 772248 -> 772248 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib-ext/FNA3D_Headless.patch b/lib-ext/FNA3D_Headless.patch index fc3a4de57..e45c422f5 100644 --- a/lib-ext/FNA3D_Headless.patch +++ b/lib-ext/FNA3D_Headless.patch @@ -9,7 +9,7 @@ index 34d9045..f4c6aee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ endif() - + # Defines add_definitions( + -DFNA3D_DRIVER_HEADLESS @@ -38,7 +38,7 @@ index 17e890a..24768e6 100644 +++ b/src/FNA3D.c @@ -40,6 +40,9 @@ /* Drivers */ - + static const FNA3D_Driver *drivers[] = { +#if FNA3D_DRIVER_HEADLESS + &HeadlessDriver, @@ -50,7 +50,7 @@ index 17e890a..24768e6 100644 continue; } } -+ else if (SDL_strcasecmp("Headless", drivers[i]->Name) != 0) ++ else if (SDL_strcasecmp("Headless", drivers[i]->Name) == 0) + { + // Only allow headless mode explicitly + continue; @@ -65,7 +65,7 @@ index 4f07960..b6e7f27 100644 @@ -825,6 +825,7 @@ typedef struct FNA3D_Driver ); } FNA3D_Driver; - + +FNA3D_SHAREDINTERNAL FNA3D_Driver HeadlessDriver; FNA3D_SHAREDINTERNAL FNA3D_Driver LegacyVulkanDriver; FNA3D_SHAREDINTERNAL FNA3D_Driver D3D11Driver; diff --git a/lib-ext/lib64-linux/libFNA3D.so.0 b/lib-ext/lib64-linux/libFNA3D.so.0 index 77997ae899800c65bdf5e14068dfe7fc92e08e42..443cc62906a3a5aba7391db349475e4afb98d600 100755 GIT binary patch delta 86 zcmbO+QGdon{S6AtB6*ir_^wUfxH9#A?;@p}ncttEcahs{!Yp}!v837WaJ%1OMj&Pa eVrC#_0b*7lW&>h&Am#vKP9Wym?su5mixmK*vn4YC delta 86 zcmbO+QGdon{S6AtBA5Sq_5F!_d8A%5>&})9de07oMa|x9!Yp}!v9#ImaJ%1OMj&Pa eVrC#_0b*7lW&>h&Am#vKP9Wym?su5mixmLTYbD75 From a4792859871b7a646a03ba98d84fc2db502ed4af Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 24 Nov 2024 21:37:19 +0100 Subject: [PATCH 12/20] Force "Headless" driver and disable splash in headless mode --- Celeste.Mod.mm/Mod/Everest/Everest.cs | 12 +++------ Celeste.Mod.mm/Patches/Celeste.cs | 35 ++++++++++++++++++--------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/Celeste.Mod.mm/Mod/Everest/Everest.cs b/Celeste.Mod.mm/Mod/Everest/Everest.cs index 1ab099230..002b72a82 100644 --- a/Celeste.Mod.mm/Mod/Everest/Everest.cs +++ b/Celeste.Mod.mm/Mod/Everest/Everest.cs @@ -425,10 +425,8 @@ static void UnregisterModDetour(object detour) { // Before even initializing anything else, make sure to prepare any static flags. Flags.Initialize(); - if (!Flags.IsHeadless) { - // Initialize the content helper. - Content.Initialize(); - } + // Initialize the content helper. + Content.Initialize(); MainThreadHelper.Instance = new MainThreadHelper(Celeste.Instance); STAThreadHelper.Instance = new STAThreadHelper(Celeste.Instance); @@ -457,10 +455,8 @@ static void UnregisterModDetour(object detour) { Loader.LoadAuto(); - if (!Flags.IsHeadless) { - // Load stray .bins afterwards. - Content.Crawl(new MapBinsInModsModContent(Path.Combine(PathEverest, "Mods"))); - } + // Load stray .bins afterwards. + Content.Crawl(new MapBinsInModsModContent(Path.Combine(PathEverest, "Mods"))); // Also let all mods parse the arguments. Queue args = new Queue(Args); diff --git a/Celeste.Mod.mm/Patches/Celeste.cs b/Celeste.Mod.mm/Patches/Celeste.cs index 178314108..eb4a330f5 100644 --- a/Celeste.Mod.mm/Patches/Celeste.cs +++ b/Celeste.Mod.mm/Patches/Celeste.cs @@ -30,11 +30,16 @@ class patch_Celeste : Celeste { private bool firstLoad; + // Method needs to be created dynamically, since the headless state is only known during MMR + [PatchCelesteSetHeadlessFlag] + private static void SetHeadlessFlag() {} [PatchCelesteMain] public static extern void orig_Main(string[] args); [MonoModPublic] public static void Main(string[] args) { + SetHeadlessFlag(); + if (Thread.CurrentThread.Name != "Main Thread") { Thread.CurrentThread.Name = "Main Thread"; } @@ -198,7 +203,7 @@ private static void MainInner(string[] args) { AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; // Get the splash up and running asap - if (!args.Contains("--disable-splash") && File.Exists(Path.Combine(".", "EverestSplash", "EverestSplash.dll"))) { + if (!Everest.Flags.IsHeadless && !args.Contains("--disable-splash") && File.Exists(Path.Combine(".", "EverestSplash", "EverestSplash.dll"))) { string targetRenderer = ""; for (int i = 0; i < args.Length; i++) { // The splash will use the same renderer as fna if (args[i] == "--graphics" && args.Length > i + 1) { @@ -236,12 +241,17 @@ static void SetEnvVar(string name, string value) { SetEnvVar("FNA_AUDIO_DISABLE_SOUND", "1"); for (int i = 0; i < args.Length; i++) { - if (args[i] == "--graphics" && i < args.Length - 1) { + if (!Everest.Flags.IsHeadless && args[i] == "--graphics" && i < args.Length - 1) { SetEnvVar("FNA3D_FORCE_DRIVER", args[i + 1]); i++; } // No --disable-lateswaptear as that is now explicitly opt-in } + + // Force "Headless" driver + if (Everest.Flags.IsHeadless) { + SetEnvVar("FNA3D_FORCE_DRIVER", "Headless"); + } } [SupportedOSPlatform("linux")] @@ -294,14 +304,7 @@ Please join the Celeste Discord server and drag and drop your log.txt into #modd [MonoModConstructor] [MonoModOriginalName("orig_ctor_Celeste")] // For Everest.Installer public void ctor() { - // Everest.Flags aren't initialized this early. - if (Environment.GetEnvironmentVariable("EVEREST_HEADLESS") == "1") { - Instance = this; - Version = new Version(0, 0, 0, 0); - Console.WriteLine("CELESTE HEADLESS VIA EVEREST"); - } else { - orig_ctor_Celeste(); - } + orig_ctor_Celeste(); Logger.Info("boot", $"Active compatibility mode: {Everest.CompatibilityMode}"); @@ -384,6 +387,12 @@ protected override void OnExiting(object sender, EventArgs args) { } namespace MonoMod { + /// + /// Patch the original Celeste constructor, to set the state of headless mode + /// + [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchCelesteSetHeadlessFlag))] + class PatchCelesteSetHeadlessFlagAttribute : Attribute { } + /// /// Patch the original Celeste entry point instead of reimplementing it in Everest. /// @@ -392,7 +401,7 @@ class PatchCelesteMainAttribute : Attribute { } static partial class MonoModRules { - public static void PatchCelesteMain(ILContext context, CustomAttribute attrib) { + public static void PatchCelesteSetHeadlessFlag(ILContext context, CustomAttribute attrib) { ILCursor cursor = new ILCursor(context); TypeDefinition t_Flags = MonoModRule.Modder.Module.GetType("Celeste.Mod.Everest/Flags"); @@ -401,6 +410,10 @@ public static void PatchCelesteMain(ILContext context, CustomAttribute attrib) { // Insert 'Everest.Flags.IsHeadless = ' cursor.EmitLdcI4(MonoModRule.Flag.Get("Headless") ? 1 : 0); cursor.EmitCall(m_Flags_setIsHeadless); + } + + public static void PatchCelesteMain(ILContext context, CustomAttribute attrib) { + ILCursor cursor = new ILCursor(context); // TryGotoNext used because SDL_GetPlatform does not exist on XNA if (cursor.TryGotoNext(instr => instr.MatchCall("SDL2.SDL", "SDL_GetPlatform"))) { From dca748b0f0f614ca390d577739aaf8c87f26e4da Mon Sep 17 00:00:00 2001 From: psyGamer Date: Mon, 25 Nov 2024 20:10:14 +0100 Subject: [PATCH 13/20] Reduce Game.Tick() to only Update() --- Celeste.Mod.mm/Patches/FNA/Headless/Game.cs | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs index d356661a4..1e733401c 100644 --- a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs @@ -1,4 +1,5 @@ #pragma warning disable CS0626 // Method, operator, or accessor is marked external and has no attributes on it +#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value using Mono.Cecil; using MonoMod; @@ -10,13 +11,32 @@ namespace Microsoft.Xna.Framework { [GameDependencyPatch("FNA")] - public partial class patch_Game { + public partial class patch_Game : Game { + // We're effectively in Game, but still need to "expose" private fields to our mod. + private readonly patch_GameTime gameTime; [MonoModIfFlag("Headless")] [MonoModConstructor] [MonoModIgnore] [PatchGameCtor] public extern void ctor(); + + // Directly call Update(), avoiding timing / Render() + [MonoModIfFlag("Headless")] + [MonoModLinkFrom("System.Void Microsoft.Xna.Framework.Game::Tick()")] + public void UpdateWrapper() { + gameTime.ElapsedGameTime = TargetElapsedTime; + gameTime.TotalGameTime += TargetElapsedTime; + + Update(gameTime); + } + } + + [GameDependencyPatch("FNA")] + public class patch_GameTime : GameTime { + // We're effectively in GameTime, but still need to "expose" private fields to our mod. + public new TimeSpan TotalGameTime { get; internal set; } + public new TimeSpan ElapsedGameTime { get; internal set; } } } From 66ff6a53ab74eca0807dbb998b010e1b79789e12 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Wed, 27 Nov 2024 18:27:27 +0100 Subject: [PATCH 14/20] Stub-out FMOD functions and disable audio in headless mode --- Celeste.Mod.mm/MonoModRules.Game.cs | 20 ++++- Celeste.Mod.mm/MonoModRules.cs | 83 +++++++++++++++++++++ Celeste.Mod.mm/Patches/Audio.cs | 40 ++++++++-- Celeste.Mod.mm/Patches/Celeste.cs | 24 ++++++ Celeste.Mod.mm/Patches/FNA/Headless/Game.cs | 4 +- Celeste.Mod.mm/Patches/GameLoader.cs | 7 +- 6 files changed, 166 insertions(+), 12 deletions(-) diff --git a/Celeste.Mod.mm/MonoModRules.Game.cs b/Celeste.Mod.mm/MonoModRules.Game.cs index 064af6cc8..bdcc3b7ee 100644 --- a/Celeste.Mod.mm/MonoModRules.Game.cs +++ b/Celeste.Mod.mm/MonoModRules.Game.cs @@ -2,6 +2,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Collections.Generic; +using Monocle; using MonoMod.Cil; using MonoMod.InlineRT; using MonoMod.Utils; @@ -154,20 +155,33 @@ public static void GamePreProcessor(MonoModder modder) { if (IsRelinkingXNAInstall) modder.Log("[Celeste.Mod.mm] Converting XNA game install to FNA"); - static void VisitType(TypeDefinition type) { + MethodReference stubAttrCtor = RulesModule.GetType($"MonoMod.{nameof(PatchStubExternAttribute)}").Methods.First(m => m.IsConstructor); + stubAttrCtor = modder.Module.ImportReference(stubAttrCtor); + + static void VisitType(TypeDefinition type, MethodReference stubAttrCtor) { // Remove readonly attribute from all static fields // This "fixes" https://github.com/dotnet/runtime/issues/11571, which breaks some mods foreach (FieldDefinition field in type.Fields) if ((field.Attributes & FieldAttributes.Static) != 0) field.Attributes &= ~FieldAttributes.InitOnly; + // Stub out extern FMOD methods in headless mode + if (MonoModRule.Flag.Get("Headless") && type.Namespace.StartsWith("FMOD")) { + foreach (MethodDefinition method in type.Methods) { + if ((method.Attributes & MethodAttributes.Static) != 0 && method.Name.StartsWith("FMOD_")) { + // Console.WriteLine($"ADDING ATTR {method}"); + method.CustomAttributes.Add(new CustomAttribute(stubAttrCtor)); + } + } + } + // Visit nested types foreach (TypeDefinition nestedType in type.NestedTypes) - VisitType(nestedType); + VisitType(nestedType, stubAttrCtor); } foreach (TypeDefinition type in modder.Module.Types) - VisitType(type); + VisitType(type, stubAttrCtor); } public static void GamePostProcessor(MonoModder modder) { diff --git a/Celeste.Mod.mm/MonoModRules.cs b/Celeste.Mod.mm/MonoModRules.cs index 1f0cb56aa..a58b47b0c 100644 --- a/Celeste.Mod.mm/MonoModRules.cs +++ b/Celeste.Mod.mm/MonoModRules.cs @@ -36,6 +36,13 @@ public ForceNameAttribute(string name) {} ///
[MonoModCustomMethodAttribute(nameof(MonoModRules.PatchInitblk))] class PatchInitblkAttribute : Attribute { } + + /// + /// Patches an extern method to be stubbed. Uses default values for return type / out-parameters + /// + [MonoModIfFlag("Headless")] + [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchStubExtern))] + class PatchStubExternAttribute : Attribute { } #endregion static partial class MonoModRules { @@ -223,6 +230,82 @@ public static void PatchInitblk(ILContext il, CustomAttribute attrib) { } } + public static void PatchStubExtern(MethodDefinition method, CustomAttribute attrib) { + // Console.WriteLine($"RUNNING STUB {method} {method.Attributes}"); + method.Attributes &= ~(MethodAttributes.PInvokeImpl | MethodAttributes.CompilerControlled | MethodAttributes.HideBySig); + + ILContext il = new ILContext(method); + ILCursor cursor = new ILCursor(il); + + TypeDefinition returnType = method.ReturnType.Resolve(); + + // Insert 'outParam = default;' + foreach (ParameterDefinition param in method.Parameters) { + if (!param.IsOut) continue; + + TypeDefinition paramType = param.ParameterType.Resolve(); + TypeReference enumType = paramType.IsEnum ? GetEnumUnderlyingType(paramType) : null; + + if (paramType.FullName is "System.Byte" or "System.SByte" || enumType?.FullName is "System.Byte" or "System.SByte") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcI4(0); + cursor.EmitStindI1(); + } else if (paramType.FullName is "System.Int16" or "System.UInt16" || enumType?.FullName is "System.Int16" or "System.UInt16") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcI4(0); + cursor.EmitStindI2(); + } else if (paramType.FullName is "System.Int32" or "System.UInt32" || enumType?.FullName is "System.Int32" or "System.UInt32") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcI4(0); + cursor.EmitStindI4(); + } else if (paramType.FullName is "System.Int64" or "System.UInt64" || enumType?.FullName is "System.Int64" or "System.UInt64") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcI8(0); + cursor.EmitStindI8(); + } else if (paramType.FullName is "System.IntPtr" or "System.UIntPtr" || enumType?.FullName is "System.IntPtr" or "System.UIntPtr") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcI4(0); + cursor.EmitConvI(); + cursor.EmitStindI(); + } else if (paramType.FullName is "System.Single" || enumType?.FullName is "System.Single") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcR4(0.0f); + cursor.EmitStindR4(); + } else if (paramType.FullName is "System.Double" || enumType?.FullName is "System.Double") { + cursor.EmitLdarg(param.Index); + cursor.EmitLdcR8(0.0); + cursor.EmitStindR8(); + } else if (paramType.IsValueType) { + cursor.EmitLdarg(param.Index); + cursor.EmitInitobj(MonoModRule.Modder.Module.ImportReference(paramType)); + } else { + cursor.EmitLdarg(param.Index); + cursor.EmitLdnull(); + cursor.EmitStindRef(); + } + } + + // Insert 'return default;' + if (returnType.FullName == "System.Void") { + cursor.EmitRet(); + } else if (returnType.IsPrimitive || returnType.IsEnum) { + cursor.EmitLdcI4(0); + cursor.EmitRet(); + } else if (!returnType.IsValueType) { + cursor.EmitLdnull(); + cursor.EmitRet(); + } else { + throw new Exception($"Unsupported return type '{returnType.FullName}' of method '{method.FullName}' to be stubbed"); + } + + return; + + // Adapted from Mono.Cecil.Rocks.TypeDefinitionsRock.GetEnumUnderlyingType + static TypeReference GetEnumUnderlyingType(TypeDefinition enumType) { + return enumType.Fields.First(f => !f.IsStatic).FieldType; + } + } + /// /// Fix ILSpy unable to decompile enumerator after MonoMod patching
/// (yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()) diff --git a/Celeste.Mod.mm/Patches/Audio.cs b/Celeste.Mod.mm/Patches/Audio.cs index b1862b929..2a0b02b27 100644 --- a/Celeste.Mod.mm/Patches/Audio.cs +++ b/Celeste.Mod.mm/Patches/Audio.cs @@ -48,9 +48,15 @@ internal static void CheckFmod(RESULT result) { [MonoModReplace] public static void Init() { + if (Everest.Flags.IsHeadless) { + // Stub out audio system + system = new FMOD.Studio.System(IntPtr.Zero); + return; + } + bool fmodLiveUpdate = Settings.Instance.LaunchWithFMODLiveUpdate; Settings.Instance.LaunchWithFMODLiveUpdate |= CoreModule.Settings.LaunchWithFMODLiveUpdateInEverest; - + // Original initialization code { FMOD.Studio.INITFLAGS flags = FMOD.Studio.INITFLAGS.NORMAL; @@ -111,6 +117,10 @@ public static void Init() { } public static void IngestNewBanks() { + if (Everest.Flags.IsHeadless) { + return; + } + lock (Everest.Content.Map) { foreach (ModAsset asset in Everest.Content.Map.Values.Where(asset => asset.Type == typeof(AssetTypeBank))) { if (!ingestedModBankPaths.Contains(asset.PathVirtual)) { @@ -122,6 +132,10 @@ public static void IngestNewBanks() { [MonoModReplace] public static void Unload() { + if (Everest.Flags.IsHeadless) { + return; + } + if (system == null) return; @@ -137,6 +151,10 @@ public static void Unload() { /// Loads an FMOD Bank from the given asset. ///
public static Bank IngestBank(ModAsset asset) { + if (Everest.Flags.IsHeadless) { + return new Bank(IntPtr.Zero); + } + Logger.Verbose("Audio.IngestBank", asset.PathVirtual); ingestedModBankPaths.Add(asset.PathVirtual); @@ -188,6 +206,10 @@ public static Bank IngestBank(ModAsset asset) { /// Loads an FMOD GUID table from the given asset. /// public static void IngestGUIDs(ModAsset asset) { + if (Everest.Flags.IsHeadless) { + return; + } + Logger.Verbose("Audio.IngestGUIDs", asset.PathVirtual); using (Stream stream = asset.Stream) using (StreamReader reader = new StreamReader(asset.Stream)) { @@ -222,7 +244,7 @@ public static void IngestGUIDs(ModAsset asset) { public static extern void orig_ReleaseUnusedDescriptions(); public static void ReleaseUnusedDescriptions() { - if (!CoreModule.Settings.UnloadUnusedAudio) + if (Everest.Flags.IsHeadless || !CoreModule.Settings.UnloadUnusedAudio) return; orig_ReleaseUnusedDescriptions(); } @@ -230,7 +252,7 @@ public static void ReleaseUnusedDescriptions() { [MonoModReplace] public static string GetEventName(EventInstance instance) { - if (instance == null) + if (Everest.Flags.IsHeadless || instance == null) return ""; instance.getDescription(out EventDescription desc); @@ -241,7 +263,7 @@ public static string GetEventName(EventInstance instance) { } public static string GetEventName(EventDescription desc) { - if (desc == null) + if (Everest.Flags.IsHeadless || desc == null) return ""; desc.getID(out Guid id); @@ -256,7 +278,7 @@ public static string GetEventName(EventDescription desc) { } public static string GetBankName(Bank bank) { - if (bank == null) + if (Everest.Flags.IsHeadless || bank == null) return ""; bank.getID(out Guid id); @@ -270,6 +292,10 @@ public static string GetBankName(Bank bank) { [MonoModReplace] public static EventDescription GetEventDescription(string path) { + if (Everest.Flags.IsHeadless) { + return new EventDescription(IntPtr.Zero); + } + EventDescription desc = null; if (path == null || Audio.cachedEventDescriptions.TryGetValue(path, out desc)) return desc; @@ -311,6 +337,10 @@ public static class patch_Banks { [MonoModReplace] public static Bank Load(string name, bool loadStrings) { + if (Everest.Flags.IsHeadless) { + return new Bank(IntPtr.Zero); + } + if (Banks == null) Banks = new Dictionary(); diff --git a/Celeste.Mod.mm/Patches/Celeste.cs b/Celeste.Mod.mm/Patches/Celeste.cs index eb4a330f5..bd1fdc681 100644 --- a/Celeste.Mod.mm/Patches/Celeste.cs +++ b/Celeste.Mod.mm/Patches/Celeste.cs @@ -329,6 +329,8 @@ protected override void Initialize() { Everest.Initialize(); } + [MonoModIfFlag("Headless")] + [PatchCelesteLoadContent] protected extern void orig_LoadContent(); protected override void LoadContent() { // Note: You may instinctually call base.LoadContent(); @@ -399,6 +401,12 @@ class PatchCelesteSetHeadlessFlagAttribute : Attribute { } [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchCelesteMain))] class PatchCelesteMainAttribute : Attribute { } + /// + /// Patch the original LoadContent method, to avoid loading graphics in headless mode + /// + [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchCelesteLoadContent))] + class PatchCelesteLoadContentAttribute : Attribute { } + static partial class MonoModRules { public static void PatchCelesteSetHeadlessFlag(ILContext context, CustomAttribute attrib) { @@ -412,6 +420,22 @@ public static void PatchCelesteSetHeadlessFlag(ILContext context, CustomAttribut cursor.EmitCall(m_Flags_setIsHeadless); } + public static void PatchCelesteLoadContent(ILContext context, CustomAttribute attrib) { + ILCursor cursor = new ILCursor(context); + + TypeDefinition t_Flags = MonoModRule.Modder.Module.GetType("Celeste.Mod.Everest/Flags"); + MethodReference m_Flags_getIsHeadless = MonoModRule.Modder.Module.ImportReference(t_Flags.FindProperty("IsHeadless")!.GetMethod); + + // Replace 'if (!IsGGP)' with 'if (!IsGGP && !Everest.Flags.IsHeadless)' + ILLabel label = null; + cursor.GotoNext(MoveType.After, instr => + instr.MatchLdsfld("Celeste.Celeste", "IsGGP"), + instr => instr.MatchBrtrue(out label)); + + cursor.EmitCall(m_Flags_getIsHeadless); + cursor.EmitBrtrue(label); + } + public static void PatchCelesteMain(ILContext context, CustomAttribute attrib) { ILCursor cursor = new ILCursor(context); diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs index 1e733401c..3ac653e97 100644 --- a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs @@ -42,13 +42,13 @@ public class patch_GameTime : GameTime { namespace MonoMod { /// - /// A patch replacing the GameWindow instance + /// A patch which replaces the GameWindow instance with a headless one /// [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchGameCtor))] class PatchGameCtor : Attribute { } /// - /// A patch removing registering the graphics adapter + /// A patch which removes registering the graphics adapter /// [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchGameBeforeLoop))] class PatchGameBeforeLoop : Attribute { } diff --git a/Celeste.Mod.mm/Patches/GameLoader.cs b/Celeste.Mod.mm/Patches/GameLoader.cs index d847a052f..8a14f2ec7 100644 --- a/Celeste.Mod.mm/Patches/GameLoader.cs +++ b/Celeste.Mod.mm/Patches/GameLoader.cs @@ -85,8 +85,10 @@ private void LoadThread() { Stopwatch timer = Stopwatch.StartNew(); Audio.Init(); - // Original code loads audio banks here. - Settings.Instance.ApplyVolumes(); + if (!Everest.Flags.IsHeadless) { + // Original code loads audio banks here. + Settings.Instance.ApplyVolumes(); + } audioLoaded = true; Console.WriteLine(" - AUDIO LOAD: " + timer.ElapsedMilliseconds + "ms"); timer.Stop(); @@ -112,6 +114,7 @@ private void LoadThread() { timer.Stop(); timer = Stopwatch.StartNew(); + // TODO: Disable FTL in headless MainThreadHelper.Boost = 50; patch_VirtualTexture.WaitFinishFastTextureLoading(); MainThreadHelper.Schedule(() => MainThreadHelper.Boost = 0).AsTask().Wait(); From 66bbd6c37dd1a4371faddcdd137bfc932eff8b44 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Wed, 27 Nov 2024 19:43:18 +0100 Subject: [PATCH 15/20] Disable graphics loading in headless mode --- Celeste.Mod.mm/Patches/Monocle/Atlas.cs | 72 +++++++++++++++++-- Celeste.Mod.mm/Patches/Monocle/MTexture.cs | 7 ++ .../Patches/Monocle/VirtualTexture.cs | 11 ++- Celeste.Mod.mm/Patches/ObjModel.cs | 22 ++++++ 4 files changed, 102 insertions(+), 10 deletions(-) diff --git a/Celeste.Mod.mm/Patches/Monocle/Atlas.cs b/Celeste.Mod.mm/Patches/Monocle/Atlas.cs index 50b176807..a67c50fa6 100644 --- a/Celeste.Mod.mm/Patches/Monocle/Atlas.cs +++ b/Celeste.Mod.mm/Patches/Monocle/Atlas.cs @@ -20,7 +20,7 @@ class patch_Atlas : Atlas { /// /// The internal string-MTexture dictionary. /// - public Dictionary Textures => textures; + public Dictionary Textures => Everest.Flags.IsHeadless ? stubbedTexturesDict : textures; private Dictionary links = new Dictionary(); private Dictionary> orderedTexturesCache; private Stack FallbackStack; @@ -33,6 +33,10 @@ class patch_Atlas : Atlas { public string[] DataPaths; public AtlasDataFormat? DataFormat; + // Used for headless mode + private static readonly List stubbedTexturesList = new() { patch_MTexture.Stub }; + private static readonly Dictionary stubbedTexturesDict = new() { { "stub", patch_MTexture.Stub } }; + [MonoModReplace] private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat format) { patch_Atlas atlas = (patch_Atlas) _atlas; @@ -263,6 +267,10 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromAtlas(string path, AtlasDataFormat format); /// public static new Atlas FromAtlas(string path, AtlasDataFormat format) { + if (Everest.Flags.IsHeadless) { + return new Atlas(); + } + patch_Atlas atlas = (patch_Atlas) orig_FromAtlas(path, format); atlas.DataMethod = "FromAtlas"; atlas.DataPath = path; @@ -276,6 +284,10 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromMultiAtlas(string rootPath, string[] dataPath, AtlasDataFormat format); /// public static new Atlas FromMultiAtlas(string rootPath, string[] dataPath, AtlasDataFormat format) { + if (Everest.Flags.IsHeadless) { + return new Atlas(); + } + patch_Atlas atlas = (patch_Atlas) orig_FromMultiAtlas(rootPath, dataPath, format); atlas.DataMethod = "FromMultiAtlas"; atlas.DataPath = rootPath; @@ -290,6 +302,10 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromMultiAtlas(string rootPath, string filename, AtlasDataFormat format); /// public static new Atlas FromMultiAtlas(string rootPath, string filename, AtlasDataFormat format) { + if (Everest.Flags.IsHeadless) { + return new Atlas(); + } + patch_Atlas atlas = (patch_Atlas) orig_FromMultiAtlas(rootPath, filename, format); atlas.DataMethod = "FromMultiAtlas"; atlas.DataPath = rootPath; @@ -304,6 +320,10 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromDirectory(string path); /// public static new Atlas FromDirectory(string path) { + if (Everest.Flags.IsHeadless) { + return new Atlas(); + } + patch_Atlas atlas = (patch_Atlas) orig_FromDirectory(path); atlas.DataMethod = "FromDirectory"; atlas.DataPath = path; @@ -352,7 +372,7 @@ public MTexture PopFallback() { /// Feed the given ModAsset into the atlas. /// public void Ingest(ModAsset asset) { - if (asset == null) + if (Everest.Flags.IsHeadless || asset == null) return; // Crawl through all child assets. @@ -409,10 +429,18 @@ public void Ingest(ModAsset asset) { } public bool HasAtlasSubtextures(string key) { + if (Everest.Flags.IsHeadless) { + return true; + } + return HasAtlasSubtexturesAt(key, 0); } public bool HasAtlasSubtexturesAt(string key, int index) { + if (Everest.Flags.IsHeadless) { + return true; + } + if (orderedTexturesCache.TryGetValue(key, out List list)) { return index >= 0 && index < list.Count; } else { @@ -420,9 +448,29 @@ public bool HasAtlasSubtexturesAt(string key, int index) { } } + [MonoModIfFlag("Headless")] + [MonoModReplace] + public new bool Has(string id) { + return true; + } + + [MonoModIfFlag("Headless")] + [MonoModReplace] + public new MTexture GetOrDefault(string id, MTexture defaultTexture) { + return defaultTexture; + } + + [MonoModIfFlag("Headless")] + [MonoModReplace] + public new void Dispose() { } + // log missing subtextures when getting an animation (for example, decals) public extern List orig_GetAtlasSubtextures(string key); public new List GetAtlasSubtextures(string key) { + if (Everest.Flags.IsHeadless) { + return stubbedTexturesList; + } + PushFallback(null); List result = orig_GetAtlasSubtextures(key); PopFallback(); @@ -440,11 +488,15 @@ public bool HasAtlasSubtexturesAt(string key, int index) { [MonoModReplace] public new MTexture GetAtlasSubtexturesAt(string key, int index) { + if (Everest.Flags.IsHeadless) { + return patch_MTexture.Stub; + } + if (orderedTexturesCache.TryGetValue(key, out List list)) { if (index < 0 || index >= list.Count) { Logger.Warn("Atlas", $"Requested atlas subtexture that falls out of range: {RelativeDataPath}{key} {index}"); return GetFallback(); - } + } return list[index]; } @@ -465,16 +517,22 @@ public bool HasAtlasSubtexturesAt(string key, int index) { public new MTexture this[string id] { [MonoModReplace] get { + if (Everest.Flags.IsHeadless) { + return patch_MTexture.Stub; + } + if (!textures.TryGetValue(id, out MTexture result)) { Logger.Warn("Atlas", $"Requested texture that does not exist: {RelativeDataPath}{id}"); return GetFallback(); } return result; } - - // we don't want to modify the setter, but want it to exist in the patch class so that we can call it from within our patches. - [MonoModIgnore] - set { } + [MonoModReplace] + set { + if (!Everest.Flags.IsHeadless) { + textures[id] = value; + } + } } } public static class AtlasExt { diff --git a/Celeste.Mod.mm/Patches/Monocle/MTexture.cs b/Celeste.Mod.mm/Patches/Monocle/MTexture.cs index 9dd0ad484..c0ffcb9bf 100644 --- a/Celeste.Mod.mm/Patches/Monocle/MTexture.cs +++ b/Celeste.Mod.mm/Patches/Monocle/MTexture.cs @@ -44,6 +44,13 @@ public Atlas Atlas { private List _ModAssets; + // Stub texture used for headless mode + // 8x8 since that's a common texture size (also < 8 breaks tilesets) + private static MTexture stub = null; + internal static MTexture Stub => stub ??= new MTexture((VirtualTexture) (object) new patch_VirtualTexture("stub", 8, 8, Color.White)) { + AtlasPath = "stub" + }; + [MonoModIgnore] public patch_MTexture(VirtualTexture vtex) : base(vtex) { } diff --git a/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs b/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs index 92ebef549..8f490b35c 100644 --- a/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs +++ b/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs @@ -102,7 +102,7 @@ public Texture2D Texture_Safe { } } - if (!MainThreadHelper.IsMainThread) { + if (!MainThreadHelper.IsMainThread) { // Otherwise wait for it to get loaded. (Don't wait locked!) return _Texture_QueuedLoad.Result; } @@ -362,7 +362,7 @@ internal override void Unload() { } } - internal bool LoadImmediately => + internal bool LoadImmediately => !_Texture_FTLLoading && ((CoreModule.Settings.ThreadedGL ?? Everest.Flags.PreferThreadedGL) || MainThreadHelper.IsMainThread); internal bool Load(bool wait, Func load) { if (LoadImmediately) { @@ -421,6 +421,11 @@ internal bool Load(bool wait, Func load) { [MonoModReplace] [PatchInitblk] internal override unsafe void Reload() { + if (Everest.Flags.IsHeadless) { + Texture_Unsafe = new Texture2D(Engine.Graphics.GraphicsDevice, 1, 1); + return; + } + // Unload task might end up conflicting with Reload - let's instead force-unload in Load. // Unload(); @@ -798,7 +803,7 @@ private bool CanPreload { } private bool Preload(bool force = false) { - if (!CoreModule.Settings.LazyLoading && !force) { + if (Everest.Flags.IsHeadless || !CoreModule.Settings.LazyLoading && !force) { return false; } diff --git a/Celeste.Mod.mm/Patches/ObjModel.cs b/Celeste.Mod.mm/Patches/ObjModel.cs index e1c962984..7b09aabc2 100644 --- a/Celeste.Mod.mm/Patches/ObjModel.cs +++ b/Celeste.Mod.mm/Patches/ObjModel.cs @@ -20,11 +20,29 @@ class patch_ObjModel : ObjModel { private object _Vertices_QueuedLoadLock; private ValueTask _Vertices_QueuedLoad; + [MonoModIfFlag("Headless")] + [MonoModReplace] + public new static ObjModel Create(string filename) { + return new ObjModel(); + } + + [MonoModIfFlag("Headless")] + [MonoModReplace] + public new void Draw(Effect effect) { } + + [MonoModIfFlag("Headless")] + [MonoModReplace] + public new void Dispose() { } + /// /// Create a new ObjModel from a stream /// The filename is mainly just to check if it's a .export /// public static ObjModel CreateFromStream(Stream stream, string fname) { + if (Everest.Flags.IsHeadless) { + return new ObjModel(); + } + ObjModel objModel = new ObjModel(); List list = new List(); List list2 = new List(); @@ -113,6 +131,10 @@ public static ObjModel CreateFromStream(Stream stream, string fname) { private extern bool orig_ResetVertexBuffer(); private bool ResetVertexBuffer() { + if (Everest.Flags.IsHeadless) { + return true; + } + // Checking for IsDisposed on other threads should be fine... if (Vertices != null && !Vertices.IsDisposed && !Vertices.GraphicsDevice.IsDisposed) return false; From eb43b8b520ce01fd9f4999ad0218eeea39e3b84f Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sat, 30 Nov 2024 13:20:43 +0100 Subject: [PATCH 16/20] Only load width and height from textures in headless mode --- Celeste.Mod.mm/Patches/FNA/Game.cs | 1 - Celeste.Mod.mm/Patches/FNA/Headless/Game.cs | 1 + Celeste.Mod.mm/Patches/Monocle/Atlas.cs | 70 ++----------------- Celeste.Mod.mm/Patches/Monocle/MTexture.cs | 7 -- .../Patches/Monocle/VirtualTexture.cs | 14 ++-- Celeste.Mod.mm/Patches/ObjModel.cs | 1 + 6 files changed, 18 insertions(+), 76 deletions(-) diff --git a/Celeste.Mod.mm/Patches/FNA/Game.cs b/Celeste.Mod.mm/Patches/FNA/Game.cs index 449b1d02e..fcc3cc921 100644 --- a/Celeste.Mod.mm/Patches/FNA/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Game.cs @@ -10,7 +10,6 @@ namespace Microsoft.Xna.Framework { public partial class patch_Game { public GameWindow Window { get; private set; } - [MonoModIfFlag("Headless")] [PatchGameBeforeLoop] private extern void orig_BeforeLoop(); diff --git a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs index 3ac653e97..8f5816cab 100644 --- a/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs +++ b/Celeste.Mod.mm/Patches/FNA/Headless/Game.cs @@ -50,6 +50,7 @@ class PatchGameCtor : Attribute { } /// /// A patch which removes registering the graphics adapter /// + [MonoModIfFlag("Headless")] [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchGameBeforeLoop))] class PatchGameBeforeLoop : Attribute { } diff --git a/Celeste.Mod.mm/Patches/Monocle/Atlas.cs b/Celeste.Mod.mm/Patches/Monocle/Atlas.cs index a67c50fa6..3035fc523 100644 --- a/Celeste.Mod.mm/Patches/Monocle/Atlas.cs +++ b/Celeste.Mod.mm/Patches/Monocle/Atlas.cs @@ -20,7 +20,7 @@ class patch_Atlas : Atlas { /// /// The internal string-MTexture dictionary. /// - public Dictionary Textures => Everest.Flags.IsHeadless ? stubbedTexturesDict : textures; + public Dictionary Textures => textures; private Dictionary links = new Dictionary(); private Dictionary> orderedTexturesCache; private Stack FallbackStack; @@ -33,10 +33,6 @@ class patch_Atlas : Atlas { public string[] DataPaths; public AtlasDataFormat? DataFormat; - // Used for headless mode - private static readonly List stubbedTexturesList = new() { patch_MTexture.Stub }; - private static readonly Dictionary stubbedTexturesDict = new() { { "stub", patch_MTexture.Stub } }; - [MonoModReplace] private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat format) { patch_Atlas atlas = (patch_Atlas) _atlas; @@ -267,10 +263,6 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromAtlas(string path, AtlasDataFormat format); /// public static new Atlas FromAtlas(string path, AtlasDataFormat format) { - if (Everest.Flags.IsHeadless) { - return new Atlas(); - } - patch_Atlas atlas = (patch_Atlas) orig_FromAtlas(path, format); atlas.DataMethod = "FromAtlas"; atlas.DataPath = path; @@ -284,10 +276,6 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromMultiAtlas(string rootPath, string[] dataPath, AtlasDataFormat format); /// public static new Atlas FromMultiAtlas(string rootPath, string[] dataPath, AtlasDataFormat format) { - if (Everest.Flags.IsHeadless) { - return new Atlas(); - } - patch_Atlas atlas = (patch_Atlas) orig_FromMultiAtlas(rootPath, dataPath, format); atlas.DataMethod = "FromMultiAtlas"; atlas.DataPath = rootPath; @@ -302,10 +290,6 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromMultiAtlas(string rootPath, string filename, AtlasDataFormat format); /// public static new Atlas FromMultiAtlas(string rootPath, string filename, AtlasDataFormat format) { - if (Everest.Flags.IsHeadless) { - return new Atlas(); - } - patch_Atlas atlas = (patch_Atlas) orig_FromMultiAtlas(rootPath, filename, format); atlas.DataMethod = "FromMultiAtlas"; atlas.DataPath = rootPath; @@ -320,10 +304,6 @@ private static void ReadAtlasData(Atlas _atlas, string path, AtlasDataFormat for public static extern Atlas orig_FromDirectory(string path); /// public static new Atlas FromDirectory(string path) { - if (Everest.Flags.IsHeadless) { - return new Atlas(); - } - patch_Atlas atlas = (patch_Atlas) orig_FromDirectory(path); atlas.DataMethod = "FromDirectory"; atlas.DataPath = path; @@ -372,7 +352,7 @@ public MTexture PopFallback() { /// Feed the given ModAsset into the atlas. /// public void Ingest(ModAsset asset) { - if (Everest.Flags.IsHeadless || asset == null) + if (asset == null) return; // Crawl through all child assets. @@ -429,18 +409,10 @@ public void Ingest(ModAsset asset) { } public bool HasAtlasSubtextures(string key) { - if (Everest.Flags.IsHeadless) { - return true; - } - return HasAtlasSubtexturesAt(key, 0); } public bool HasAtlasSubtexturesAt(string key, int index) { - if (Everest.Flags.IsHeadless) { - return true; - } - if (orderedTexturesCache.TryGetValue(key, out List list)) { return index >= 0 && index < list.Count; } else { @@ -448,29 +420,9 @@ public bool HasAtlasSubtexturesAt(string key, int index) { } } - [MonoModIfFlag("Headless")] - [MonoModReplace] - public new bool Has(string id) { - return true; - } - - [MonoModIfFlag("Headless")] - [MonoModReplace] - public new MTexture GetOrDefault(string id, MTexture defaultTexture) { - return defaultTexture; - } - - [MonoModIfFlag("Headless")] - [MonoModReplace] - public new void Dispose() { } - // log missing subtextures when getting an animation (for example, decals) public extern List orig_GetAtlasSubtextures(string key); public new List GetAtlasSubtextures(string key) { - if (Everest.Flags.IsHeadless) { - return stubbedTexturesList; - } - PushFallback(null); List result = orig_GetAtlasSubtextures(key); PopFallback(); @@ -488,10 +440,6 @@ public bool HasAtlasSubtexturesAt(string key, int index) { [MonoModReplace] public new MTexture GetAtlasSubtexturesAt(string key, int index) { - if (Everest.Flags.IsHeadless) { - return patch_MTexture.Stub; - } - if (orderedTexturesCache.TryGetValue(key, out List list)) { if (index < 0 || index >= list.Count) { Logger.Warn("Atlas", $"Requested atlas subtexture that falls out of range: {RelativeDataPath}{key} {index}"); @@ -517,22 +465,16 @@ public bool HasAtlasSubtexturesAt(string key, int index) { public new MTexture this[string id] { [MonoModReplace] get { - if (Everest.Flags.IsHeadless) { - return patch_MTexture.Stub; - } - if (!textures.TryGetValue(id, out MTexture result)) { Logger.Warn("Atlas", $"Requested texture that does not exist: {RelativeDataPath}{id}"); return GetFallback(); } return result; } - [MonoModReplace] - set { - if (!Everest.Flags.IsHeadless) { - textures[id] = value; - } - } + + // we don't want to modify the setter, but want it to exist in the patch class so that we can call it from within our patches. + [MonoModIgnore] + set { } } } public static class AtlasExt { diff --git a/Celeste.Mod.mm/Patches/Monocle/MTexture.cs b/Celeste.Mod.mm/Patches/Monocle/MTexture.cs index c0ffcb9bf..9dd0ad484 100644 --- a/Celeste.Mod.mm/Patches/Monocle/MTexture.cs +++ b/Celeste.Mod.mm/Patches/Monocle/MTexture.cs @@ -44,13 +44,6 @@ public Atlas Atlas { private List _ModAssets; - // Stub texture used for headless mode - // 8x8 since that's a common texture size (also < 8 breaks tilesets) - private static MTexture stub = null; - internal static MTexture Stub => stub ??= new MTexture((VirtualTexture) (object) new patch_VirtualTexture("stub", 8, 8, Color.White)) { - AtlasPath = "stub" - }; - [MonoModIgnore] public patch_MTexture(VirtualTexture vtex) : base(vtex) { } diff --git a/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs b/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs index 8f490b35c..19aba074f 100644 --- a/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs +++ b/Celeste.Mod.mm/Patches/Monocle/VirtualTexture.cs @@ -290,8 +290,10 @@ public static void WaitFinishFastTextureLoading() { internal patch_VirtualTexture(string path) { Path = path; Name = path; - if (!Preload()) + if (!Preload(force: Everest.Flags.IsHeadless) && !Everest.Flags.IsHeadless) Reload(); + if (Everest.Flags.IsHeadless) + Texture_Unsafe = new Texture2D(Engine.Graphics.GraphicsDevice, Width, Height); } [MonoModConstructor] @@ -301,16 +303,20 @@ internal patch_VirtualTexture(string name, int width, int height, Color color) { Width = width; Height = height; this.color = color; - if (!Preload()) + if (!Preload(force: Everest.Flags.IsHeadless) && !Everest.Flags.IsHeadless) Reload(); + if (Everest.Flags.IsHeadless) + Texture_Unsafe = new Texture2D(Engine.Graphics.GraphicsDevice, Width, Height); } [MonoModConstructor] internal patch_VirtualTexture(ModAsset metadata) { Metadata = metadata; Name = metadata.PathVirtual; - if (!Preload()) + if (!Preload(force: Everest.Flags.IsHeadless) && !Everest.Flags.IsHeadless) Reload(); + if (Everest.Flags.IsHeadless) + Texture_Unsafe = new Texture2D(Engine.Graphics.GraphicsDevice, Width, Height); } [MonoModReplace] @@ -803,7 +809,7 @@ private bool CanPreload { } private bool Preload(bool force = false) { - if (Everest.Flags.IsHeadless || !CoreModule.Settings.LazyLoading && !force) { + if (!CoreModule.Settings.LazyLoading && !force) { return false; } diff --git a/Celeste.Mod.mm/Patches/ObjModel.cs b/Celeste.Mod.mm/Patches/ObjModel.cs index 7b09aabc2..a5404a70f 100644 --- a/Celeste.Mod.mm/Patches/ObjModel.cs +++ b/Celeste.Mod.mm/Patches/ObjModel.cs @@ -32,6 +32,7 @@ class patch_ObjModel : ObjModel { [MonoModIfFlag("Headless")] [MonoModReplace] + [PatchInterface] public new void Dispose() { } /// From fbea436393cff93dd7a0cb774e9eec9e688a7f14 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sat, 30 Nov 2024 14:13:15 +0100 Subject: [PATCH 17/20] Disable DiscordSDK and error log opening in headless mode --- Celeste.Mod.mm/Mod/Core/CoreModule.cs | 2 +- Celeste.Mod.mm/Mod/Core/CoreModuleSettings.cs | 2 +- Celeste.Mod.mm/Patches/Celeste.cs | 24 ------------------- Celeste.Mod.mm/Patches/Monocle/ErrorLog.cs | 2 +- 4 files changed, 3 insertions(+), 27 deletions(-) diff --git a/Celeste.Mod.mm/Mod/Core/CoreModule.cs b/Celeste.Mod.mm/Mod/Core/CoreModule.cs index 1ae2391b2..530aa3365 100644 --- a/Celeste.Mod.mm/Mod/Core/CoreModule.cs +++ b/Celeste.Mod.mm/Mod/Core/CoreModule.cs @@ -53,7 +53,7 @@ public override void LoadSettings() { base.LoadSettings(); // The field can be set to true by default without the setter being called by YamlDotNet. - if (Settings.DiscordRichPresence) { + if (Settings.DiscordRichPresence && !Everest.Flags.IsHeadless) { Everest.DiscordSDK.CreateInstance(); } diff --git a/Celeste.Mod.mm/Mod/Core/CoreModuleSettings.cs b/Celeste.Mod.mm/Mod/Core/CoreModuleSettings.cs index 32b404077..7d0d6dc72 100644 --- a/Celeste.Mod.mm/Mod/Core/CoreModuleSettings.cs +++ b/Celeste.Mod.mm/Mod/Core/CoreModuleSettings.cs @@ -586,7 +586,7 @@ public void CreateDiscordRichPresenceEntry(TextMenu menu, bool inGame) { TextMenu.Item masterSwitch = new TextMenu.OnOff(Dialog.Clean("modoptions_coremodule_discordrichpresence"), DiscordRichPresence) .Change(value => { DiscordRichPresence = value; - if (DiscordRichPresence) { + if (DiscordRichPresence && !Everest.Flags.IsHeadless) { Everest.DiscordSDK.CreateInstance()?.UpdatePresence(session); } else { Everest.DiscordSDK.Instance?.Dispose(); diff --git a/Celeste.Mod.mm/Patches/Celeste.cs b/Celeste.Mod.mm/Patches/Celeste.cs index bd1fdc681..eb4a330f5 100644 --- a/Celeste.Mod.mm/Patches/Celeste.cs +++ b/Celeste.Mod.mm/Patches/Celeste.cs @@ -329,8 +329,6 @@ protected override void Initialize() { Everest.Initialize(); } - [MonoModIfFlag("Headless")] - [PatchCelesteLoadContent] protected extern void orig_LoadContent(); protected override void LoadContent() { // Note: You may instinctually call base.LoadContent(); @@ -401,12 +399,6 @@ class PatchCelesteSetHeadlessFlagAttribute : Attribute { } [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchCelesteMain))] class PatchCelesteMainAttribute : Attribute { } - /// - /// Patch the original LoadContent method, to avoid loading graphics in headless mode - /// - [MonoModCustomMethodAttribute(nameof(MonoModRules.PatchCelesteLoadContent))] - class PatchCelesteLoadContentAttribute : Attribute { } - static partial class MonoModRules { public static void PatchCelesteSetHeadlessFlag(ILContext context, CustomAttribute attrib) { @@ -420,22 +412,6 @@ public static void PatchCelesteSetHeadlessFlag(ILContext context, CustomAttribut cursor.EmitCall(m_Flags_setIsHeadless); } - public static void PatchCelesteLoadContent(ILContext context, CustomAttribute attrib) { - ILCursor cursor = new ILCursor(context); - - TypeDefinition t_Flags = MonoModRule.Modder.Module.GetType("Celeste.Mod.Everest/Flags"); - MethodReference m_Flags_getIsHeadless = MonoModRule.Modder.Module.ImportReference(t_Flags.FindProperty("IsHeadless")!.GetMethod); - - // Replace 'if (!IsGGP)' with 'if (!IsGGP && !Everest.Flags.IsHeadless)' - ILLabel label = null; - cursor.GotoNext(MoveType.After, instr => - instr.MatchLdsfld("Celeste.Celeste", "IsGGP"), - instr => instr.MatchBrtrue(out label)); - - cursor.EmitCall(m_Flags_getIsHeadless); - cursor.EmitBrtrue(label); - } - public static void PatchCelesteMain(ILContext context, CustomAttribute attrib) { ILCursor cursor = new ILCursor(context); diff --git a/Celeste.Mod.mm/Patches/Monocle/ErrorLog.cs b/Celeste.Mod.mm/Patches/Monocle/ErrorLog.cs index c3885e760..95df115e9 100644 --- a/Celeste.Mod.mm/Patches/Monocle/ErrorLog.cs +++ b/Celeste.Mod.mm/Patches/Monocle/ErrorLog.cs @@ -56,7 +56,7 @@ public static void Write(Exception e) { [PatchErrorLogOpen] public static extern void orig_Open(); public static void Open() { - if (Environment.GetEnvironmentVariable("EVEREST_NO_ERRORLOG_ON_CRASH") != "1" && CoreModule.Settings.OpenErrorLogOnCrash) + if (Environment.GetEnvironmentVariable("EVEREST_NO_ERRORLOG_ON_CRASH") != "1" && CoreModule.Settings.OpenErrorLogOnCrash && !Everest.Flags.IsHeadless) orig_Open(); } From 573d5c43e875e0553cea765ef64ca604dca8b8b1 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 15 Dec 2024 19:01:30 +0100 Subject: [PATCH 18/20] Skip out-of-box-experience in headless mode --- Celeste.Mod.mm/Mod/UI/OuiOOBE.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Celeste.Mod.mm/Mod/UI/OuiOOBE.cs b/Celeste.Mod.mm/Mod/UI/OuiOOBE.cs index afbab4437..23a5ecabb 100644 --- a/Celeste.Mod.mm/Mod/UI/OuiOOBE.cs +++ b/Celeste.Mod.mm/Mod/UI/OuiOOBE.cs @@ -327,7 +327,7 @@ private IEnumerator FadeBgTo(float to) { } public override bool IsStart(Overworld overworld, Overworld.StartMode start) { - if (start != Overworld.StartMode.Titlescreen) + if (start != Overworld.StartMode.Titlescreen || Everest.Flags.IsHeadless) return false; if (CoreModule.Settings.CurrentVersion != null) { if (CoreModule.Settings.SaveDataFlush ?? false) From 0adc56cb32e5dc57d0115a19f43f2ba54c109318 Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 15 Dec 2024 19:01:49 +0100 Subject: [PATCH 19/20] Always skip game intro in headless mode --- Celeste.Mod.mm/Patches/GameLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Celeste.Mod.mm/Patches/GameLoader.cs b/Celeste.Mod.mm/Patches/GameLoader.cs index 8a14f2ec7..aa2897cee 100644 --- a/Celeste.Mod.mm/Patches/GameLoader.cs +++ b/Celeste.Mod.mm/Patches/GameLoader.cs @@ -48,7 +48,7 @@ public override void Begin() { break; } - if (CoreModule.Settings.LaunchWithoutIntro && introRoutine != null) { + if ((CoreModule.Settings.LaunchWithoutIntro || Everest.Flags.IsHeadless) && introRoutine != null) { skipped = true; } } From a35b464a0824ecc6ad4d7147af2d99145afd1c6f Mon Sep 17 00:00:00 2001 From: psyGamer Date: Sun, 15 Dec 2024 19:02:33 +0100 Subject: [PATCH 20/20] Prevent mod auto-updating in headless mode --- Celeste.Mod.mm/Patches/GameLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Celeste.Mod.mm/Patches/GameLoader.cs b/Celeste.Mod.mm/Patches/GameLoader.cs index aa2897cee..86c467ae3 100644 --- a/Celeste.Mod.mm/Patches/GameLoader.cs +++ b/Celeste.Mod.mm/Patches/GameLoader.cs @@ -137,7 +137,7 @@ private static Scene _GetNextScene(Overworld.StartMode startMode, HiresSnow snow bool transitionToModUpdater = false; - if (CoreModule.Settings.AutoUpdateModsOnStartup) { + if (CoreModule.Settings.AutoUpdateModsOnStartup && !Everest.Flags.IsHeadless) { if (!ModUpdaterHelper.IsAsyncUpdateCheckingDone()) { // update checking is not done yet. // transition to mod updater screen to display the "checking for updates" message.