public void SetPrograms(IEnumerable <Program> programs, IEnumerable <Game> games) { // Clean file. INI files support only UTF16-little endian format. System.IO.File.WriteAllText(InitialFile.FullName, "", Encoding.Unicode); var ini = new Ini(InitialFile.FullName); // Get unique section names. var names = programs.Select(x => x.FileName.ToLower()).ToList(); var gameNames = games.Select(x => x.FileName.ToLower()).ToList(); names.AddRange(gameNames); names = names.Distinct().OrderBy(x => x).ToList(); // Write INI foreach (var name in names) { string section = ""; string productName = ""; string hookMask = ""; var program = programs.FirstOrDefault(x => x.FileName.ToLower() == name); if (program != null) { section = program.FileName; productName = program.FileProductName; hookMask = string.Format("0x{0:X8}", program.HookMask); } var game = games.FirstOrDefault(x => x.FileName.ToLower() == name); if (game != null) { section = game.FileName; productName = game.FileProductName; hookMask = string.Format("0x{0:X8}", game.HookMask); } ini.SetValue(section, "Name", productName); ini.SetValue(section, "HookMask", hookMask); } Refresh(); var md5name = System.IO.Path.GetFileNameWithoutExtension(InitialFile.Name); var md5file = System.IO.Path.Combine(InitialFile.Directory.FullName, md5name + ".md5"); var hash = string.Join("", Checksum.ToByteArray().Select(x => x.ToString("X2"))); var md5line = string.Format("{0} *{1}", hash, InitialFile.Name); System.IO.File.WriteAllText(md5file, md5line); }
public void SetPrograms(IEnumerable <Program> programs, IEnumerable <Game> games) { // Clean file. INI files support only UTF16-little endian format. var file = new System.IO.FileInfo(GdbFile.FullName); if (!file.Directory.Exists) { file.Directory.Create(); } System.IO.File.WriteAllText(GdbFile.FullName, "", Encoding.Unicode); var ini = new Ini(GdbFile.FullName); // Get unique section names. var names = programs.Select(x => x.FileName.ToLower()).ToList(); var gameNames = games.Select(x => x.FileName.ToLower()).ToList(); names.AddRange(gameNames); names = names.Distinct().OrderBy(x => x).ToList(); // Write INI foreach (var name in names) { string section = ""; string productName = ""; string hookMask = ""; string fakeVid = null; string fakePid = null; string dinputMask = null; string dinputFile = null; string timeout = null; var program = programs.FirstOrDefault(x => x.FileName.ToLower() == name); var game = games.FirstOrDefault(x => x.FileName.ToLower() == name); if (game != null) { section = game.FileName; productName = game.FileProductName; hookMask = string.Format("0x{0:X8}", game.HookMask); if (game.DInputMask > 0) { dinputMask = string.Format("0x{0:X8}", game.DInputMask); } if (!string.IsNullOrEmpty(game.DInputFile)) { dinputFile = game.DInputFile; } if (game.FakeVID > 0) { fakeVid = string.Format("0x{0:X4}", game.FakeVID); } if (game.FakePID > 0) { fakePid = string.Format("0x{0:X4}", game.FakePID); } if (game.Timeout >= 0) { timeout = game.Timeout.ToString(); } } // Use default settings as an alternative. else if (program != null) { section = program.FileName; productName = program.FileProductName; hookMask = string.Format("0x{0:X8}", program.HookMask); if (program.DInputMask > 0) { dinputMask = string.Format("0x{0:X8}", program.DInputMask); } if (!string.IsNullOrEmpty(program.DInputFile)) { dinputFile = program.DInputFile; } if (program.FakeVID > 0) { fakeVid = string.Format("0x{0:X4}", program.FakeVID); } if (program.FakePID > 0) { fakePid = string.Format("0x{0:X4}", program.FakePID); } if (program.Timeout >= 0) { timeout = program.Timeout.ToString(); } } ini.SetValue(section, "Name", productName); ini.SetValue(section, "HookMask", hookMask); ini.SetValue(section, "DinputMask", dinputMask); ini.SetValue(section, "DinputFile", dinputFile); ini.SetValue(section, "FakeVID", fakeVid); ini.SetValue(section, "FakePID", fakePid); ini.SetValue(section, "Timeout", timeout); } Refresh(); var hash = string.Join("", Checksum.ToByteArray().Select(x => x.ToString("X2"))); var md5line = string.Format("{0} *{1}", hash, GdbFile.Name); System.IO.File.WriteAllText(Md5File.FullName, md5line); }
public void SetPrograms(IEnumerable<Program> programs, IEnumerable<Game> games) { // Clean file. INI files support only UTF16-little endian format. var file = new System.IO.FileInfo(GdbFile.FullName); if (!file.Directory.Exists) file.Directory.Create(); System.IO.File.WriteAllText(GdbFile.FullName, "", Encoding.Unicode); var ini = new Ini(GdbFile.FullName); // Get unique section names. var names = programs.Select(x => x.FileName.ToLower()).ToList(); var gameNames = games.Select(x => x.FileName.ToLower()).ToList(); names.AddRange(gameNames); names = names.Distinct().OrderBy(x => x).ToList(); // Write INI foreach (var name in names) { string section = ""; string productName = ""; string hookMask = ""; string fakeVid = null; string fakePid = null; string dinputMask = null; string dinputFile = null; string timeout = null; var program = programs.FirstOrDefault(x => x.FileName.ToLower() == name); var game = games.FirstOrDefault(x => x.FileName.ToLower() == name); if (game != null) { section = game.FileName; productName = game.FileProductName; hookMask = string.Format("0x{0:X8}", game.HookMask); if (game.DInputMask > 0) dinputMask = string.Format("0x{0:X8}", game.DInputMask); if (!string.IsNullOrEmpty(game.DInputFile)) dinputFile = game.DInputFile; if (game.FakeVID > 0) fakeVid = string.Format("0x{0:X4}", game.FakeVID); if (game.FakePID > 0) fakePid = string.Format("0x{0:X4}", game.FakePID); if (game.Timeout >= 0) timeout = game.Timeout.ToString(); } // Use default settings as an alternative. else if (program != null) { section = program.FileName; productName = program.FileProductName; hookMask = string.Format("0x{0:X8}", program.HookMask); if (program.DInputMask > 0) dinputMask = string.Format("0x{0:X8}", program.DInputMask); if (!string.IsNullOrEmpty(program.DInputFile)) dinputFile = program.DInputFile; if (program.FakeVID > 0) fakeVid = string.Format("0x{0:X4}", program.FakeVID); if (program.FakePID > 0) fakePid = string.Format("0x{0:X4}", program.FakePID); if (program.Timeout >= 0) timeout = program.Timeout.ToString(); } ini.SetValue(section, "Name", productName); ini.SetValue(section, "HookMask", hookMask); ini.SetValue(section, "DinputMask", dinputMask); ini.SetValue(section, "DinputFile", dinputFile); ini.SetValue(section, "FakeVID", fakeVid); ini.SetValue(section, "FakePID", fakePid); ini.SetValue(section, "Timeout", timeout); } Refresh(); var hash = string.Join("", Checksum.ToByteArray().Select(x => x.ToString("X2"))); var md5line = string.Format("{0} *{1}", hash, GdbFile.Name); System.IO.File.WriteAllText(Md5File.FullName, md5line); }