public void SetDuration(ISOExtractor file, int turns) { var newBytes = BitConverter.GetBytes(turns); file.ISOStream.Seek(StartOffset() + Constants.StatusEffectDurationOffset, SeekOrigin.Begin); file.ISOStream.Write(newBytes); }
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); } }
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)); }