public void SetDuration(ISOExtractor file, int turns)
        {
            var newBytes = BitConverter.GetBytes(turns);

            file.ISOStream.Seek(StartOffset() + Constants.StatusEffectDurationOffset, SeekOrigin.Begin);
            file.ISOStream.Write(newBytes);
        }
Exemple #2
0
        private bool OpenFile()
        {
            // did they give us crap?
            try
            {
                if (openISODialog.FileName.EndsWith("zip"))
                {
                    if (!Configuration.UseMemoryStreams)
                    {
                        var dialogResult = MessageBox.Show(
                            "Selecting zip files was intended for people using memory stream but you have disabled this option. Hitting Ok will extract the ISO to your disk.",
                            "Just so you know...",
                            MessageBoxButtons.OKCancel
                            );
                        if (dialogResult != DialogResult.OK)
                        {
                            return(false);
                        }
                    }

                    // keep this one open
                    var extractStream = $"{Configuration.ExtractDirectory}/{openISODialog.SafeFileName}.iso".GetNewStream();
                    using var fileStream = File.OpenRead(openISODialog.FileName);
                    using var zip        = new ZipArchive(fileStream);
                    foreach (var entry in zip.Entries)
                    {
                        if (entry.Name.EndsWith(".iso"))
                        {
                            using var entryStream = entry.Open();
                            entryStream.CopyTo(extractStream);
                            break;
                        }
                    }
                    isoExtractor = new ISOExtractor(extractStream);
                }
                else
                {
                    isoExtractor = new ISOExtractor(openISODialog.FileName);
                }
                return(true);
            }
            catch
            {
                // aha!
                MessageBox.Show("Game not recognized!");
                progressMessageLabel.Text = "Failed";
                iso?.Dispose();
                isoExtractor?.Dispose();
                iso          = null;
                isoExtractor = null;
                return(false);
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            var directoryName = "./files";

            if (!Directory.Exists(directoryName))
            {
                Directory.CreateDirectory(directoryName);
            }
            var isoExtract = new ISOExtractor("Pokemon XD - Gale of Darkness (USA).iso");
            var iso        = isoExtract.ExtractISO();

            Console.Read();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.DefaultExt = ".iso";
            dlg.Filter     = "Gamecube ISO Files (*.iso)|*.iso";
            dlg.Title      = "Select an unmodified copy of Crash Tag Team Racing (NTSC)";

            Nullable <bool> result = dlg.ShowDialog();

            if (result == true)
            {
                ISOExtractor.Run(dlg.FileName);
                MessageBox.Show("Done!");
            }
        }
 public int Duration(ISOExtractor file)
 {
     return(file.ISOStream.GetByteAtOffset(StartOffset() + Constants.StatusEffectDurationOffset));
 }
 public int NameID(ISOExtractor file)
 {
     return(file.ISOStream.GetUShortAtOffset(StartOffset() + Constants.StatusEffectNameIDOffset));
 }