Example #1
0
        internal FanCutCommon(FormMain formMain, string gameName, string assetsPath, List<TimelineSave> timelineSaves, string sha1Hash)
        {
            _formMain = formMain;
            _gameName = gameName;
            _assetsPath = assetsPath;
            _timelineSaves = timelineSaves;

            NesEmu.EMUHardReseted += onCoreHardReseted;

            layoutFormMain();

            OpenFileDialog romOpenFileDialog = new OpenFileDialog();
            romOpenFileDialog.Title = string.Format("Open {0} ROM", gameName);
            romOpenFileDialog.Filter = "NES ROM (*.nes) | *.nes";

            bool isROMSelected = false;

            while (!isROMSelected)
            {
                if (romOpenFileDialog.ShowDialog(formMain) == DialogResult.OK)
                {
                    StringBuilder romHashString;
                    using (FileStream romFileStream = new FileStream(romOpenFileDialog.FileName, FileMode.Open))
                    {
                        using (BufferedStream romBufferedStream = new BufferedStream(romFileStream))
                        {
                            using (SHA1Managed romSHA1 = new SHA1Managed())
                            {
                                byte[] romHash = romSHA1.ComputeHash(romBufferedStream);
                                romHashString = new StringBuilder(romHash.Length * 2);
                                foreach (byte b in romHash)
                                    romHashString.AppendFormat("{0:X2}", b);
                            }
                        }
                    }

                    if (romHashString.ToString() == sha1Hash)
                    {
                        isROMSelected = true;
                        formMain.OpenRom(romOpenFileDialog.FileName);
                    }
                    else
                        MessageBox.Show("You must load the proper ROM for this FanCut.", "ROM Mismatch");
                }
                else
                {
                    isROMSelected = true;
                    Application.Exit();
                }
            }
        }