static void InsertGame(InitialRomInfo rom) { using (var cmd = DB.Con.CreateCommand()) { cmd.CommandText = "INSERT INTO game (system, name, created_date) VALUES (@System, @Name, datetime('now','localtime'))"; cmd.Parameters.Add(new SqliteParameter("@System", rom.GuessedSystem)); cmd.Parameters.Add(new SqliteParameter("@Name", rom.Name)); cmd.ExecuteNonQuery(); } }
static bool GameInDatabase(InitialRomInfo rom) { using (var cmd = DB.Con.CreateCommand()) { cmd.CommandText = "SELECT game_id FROM game WHERE system = @System and name = @Name"; cmd.Parameters.Add(new SqliteParameter("@System", rom.GuessedSystem)); cmd.Parameters.Add(new SqliteParameter("@Name", rom.Name)); var result = cmd.ExecuteScalar(); return(result != null); } }
static void InsertRom(InitialRomInfo rom) { using (var cmd = DB.Con.CreateCommand()) { cmd.CommandText = "INSERT INTO rom (crc32, md5, sha1, size, system, name, region, version_tags, created_date) " + "VALUES (@crc32, @md5, @sha1, @size, @System, @Name, @Region, @VersionTags, datetime('now','localtime'))"; cmd.Parameters.Add(new SqliteParameter("@crc32", rom.CRC32)); cmd.Parameters.Add(new SqliteParameter("@md5", rom.MD5)); cmd.Parameters.Add(new SqliteParameter("@sha1", rom.SHA1)); cmd.Parameters.Add(new SqliteParameter("@size", rom.Size)); cmd.Parameters.Add(new SqliteParameter("@System", rom.GuessedSystem)); cmd.Parameters.Add(new SqliteParameter("@Name", rom.Name)); cmd.Parameters.Add(new SqliteParameter("@Region", rom.GuessedRegion)); cmd.Parameters.Add(new SqliteParameter("@VersionTags", rom.VersionTags)); cmd.ExecuteNonQuery(); } }
static InitialRomInfo GenerateRomHashDirect(string file, byte[] filebytes) { var info = new InitialRomInfo(); var fileInfo = new FileInfo(file); string ext = fileInfo.Extension.ToLowerInvariant().Replace(".", ""); info.FileName = fileInfo.Name; // Parse the filename to guess things about the rom var name = Path.GetFileNameWithoutExtension(fileInfo.Name); if (name.StartsWith("[BIOS] ")) { name = name.Replace("[BIOS] ", "") + " [BIOS]"; } string modifiers = ""; int modIndex = name.IndexOfAny(modifierStartChars); if (modIndex > 0) { modifiers = name.Substring(modIndex); name = name.Substring(0, modIndex); } info.Name = name.Trim(); // parse out modifiers var mods = new List <string>(); modifiers = modifiers.Replace(")", ";").Replace("]", ";"); modifiers = modifiers.Replace("(", "").Replace("[", ""); var m_ = modifiers.Split(';'); foreach (var mi in m_) { var m = mi.Trim(); if (m.Length == 0) { continue; } mods.Add(m); } info.VersionTags = ""; foreach (var mi in mods) { if (info.VersionTags.Length != 0) { info.VersionTags += ";"; } switch (mi.ToLower()) { case "j": case "jp": case "jpn": case "japan": info.GuessedRegion = "Japan"; break; case "usa": case "us": case "u": info.GuessedRegion = "USA"; break; case "europe": case "eur": case "e": info.GuessedRegion = "Europe"; break; case "world": case "w": info.GuessedRegion = "World"; break; case "korea": case "kr": case "k": info.GuessedRegion = "Korea"; break; case "brazil": case "br": info.GuessedRegion = "Brazil"; break; case "taiwan": case "tw": info.GuessedRegion = "Taiwan"; break; case "usa, europe": info.GuessedRegion = "USA;Europe"; break; case "japan, europe": info.GuessedRegion = "Europe;Japan"; break; case "japan, usa": info.GuessedRegion = "USA;Japan"; break; default: info.VersionTags += mi; break; } } // transform binary to canonical binary representation (de-header/de-stripe/de-swap) byte[] romBytes = filebytes; switch (ext) { case "sms": case "gg": case "sg": case "pce": case "sgx": romBytes = MaybeStripHeader512(filebytes); break; case "smd": if (filebytes.Length % 1024 == 512) { System.Windows.Forms.MessageBox.Show("derp"); } romBytes = DeInterleaveSMD(filebytes); break; case "z64": case "n64": case "v64": throw new NotImplementedException("n64 demutate not done"); } // guess system switch (ext) { case "sms": info.GuessedSystem = "SMS"; break; case "gg": info.GuessedSystem = "GG"; break; case "sg": info.GuessedSystem = "SG"; break; case "pce": info.GuessedSystem = "PCE"; break; case "sgx": info.GuessedSystem = "SGX"; break; case "smd": case "gen": info.GuessedSystem = "GEN"; break; case "nes": info.GuessedSystem = "NES"; break; default: info.GuessedSystem = "Unknown"; break; } // Perform hashing info.CRC32 = Hash_CRC32(romBytes); info.MD5 = Hash_MD5(romBytes); info.SHA1 = Hash_SHA1(romBytes); info.Size = romBytes.Length; return(info); }