Example #1
0
 public static RomModel FindRom(RomData Data)
 {
     using (var db = new LiteDatabase(dbName))
     {
         var col = db.GetCollection <RomModel>();
         return(col.FindOne(r => r.PRGSHA == Data.PRGSHA && r.CHRSHA == Data.CHRSHA));
     }
 }
Example #2
0
        public static async Task <RomInfo> GetRomInfo(RomData Data)
        {
            try
            {
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri(baseAddress);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage response = await client.GetAsync($"Roms/{Data.PRGSHA}/{Data.CHRSHA}");

                string responseBody = await response.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <RomInfo>(responseBody));
            }
            catch { return(null); }
        }
Example #3
0
        public static RomData GetRomInfo(string Path)
        {
            try
            {
                SHA1 sha = new SHA1CryptoServiceProvider();

                using (var file = File.OpenRead(Path))
                {
                    byte[] headData = new byte[Marshal.SizeOf(typeof(NESHeader))];
                    file.Read(headData, 0, headData.Length);

                    GCHandle  handle = GCHandle.Alloc(headData, GCHandleType.Pinned);
                    NESHeader header = (NESHeader)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(NESHeader));
                    handle.Free();

                    int trainerSize = (header.Flags6 & (byte)Flags6.Trainer) > 0 ? 512 : 0;

                    byte[] prgData = new byte[16384 * header.PRGSize];
                    byte[] chrData = new byte[8192 * header.CHRSize];

                    bool pal = (header.Flags9 & 1) == 1;

                    file.Seek(16 + trainerSize, SeekOrigin.Begin);
                    file.Read(prgData, 0, prgData.Length);

                    file.Read(chrData, 0, chrData.Length);

                    var hash = string.Concat(sha.ComputeHash(file).Select(b => b.ToString("X2")));

                    var prgHash = string.Concat(sha.ComputeHash(prgData).Select(b => b.ToString("X2")));
                    var chrHash = string.Concat(sha.ComputeHash(chrData).Select(b => b.ToString("X2")));

                    RomData data = new RomData {
                        PRGSHA = prgHash, CHRSHA = chrHash
                    };

                    return(data);
                }
            }
            catch { return(null); }
        }