protected override void OnClosing(CancelEventArgs e) { if (ROMUtils.HasLoadedROM()) { DoCloseWindow(ref Assets); DoCloseWindow(ref Sound); DoCloseWindow(ref Texts); DoCloseWindow(ref Textures); DoCloseWindow(ref Tracks); switch (Utils.ShowYesNoMessage(Utils.GetResource("common:saveChanges"), Utils.GetResource("common:warn"))) { case MessageBoxResult.Yes: { var sf = new System.Windows.Forms.SaveFileDialog { Filter = Utils.GetNDSFilter(), Title = Utils.GetResource("common:dialogROMSave"), }; if (sf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ROMUtils.ROM.Save(sf.FileName); } break; } case MessageBoxResult.Cancel: { e.Cancel = true; break; } } } base.OnClosing(e); }
private void ROMOpenButton_Click(object sender, RoutedEventArgs e) { OpenFileDialog od = new OpenFileDialog { Multiselect = false, Title = Utils.GetResource("ROMOpen"), Filter = Utils.GetNDSFilter(), }; if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK) { LoadedROM = ROMUtils.LoadROM(od.FileName); if (LoadedROM == null) { ShowNotification("The selected file is not a valid Nintendo DS ROM."); return; } if (!LoadedROM.IsMKDS()) { ShowNotification("The selected file is not a valid Mario Kart DS ROM."); LoadedROM = null; return; } Title = Utils.GetResource("program") + " - " + Path.GetFileName(od.FileName); ShowNotification("MKDS ROM loaded: " + Path.GetFileName(od.FileName)); ROMPath = od.FileName; AssetsCard.IsEnabled = true; KartsCard.IsEnabled = true; TexturesCard.IsEnabled = true; SoundCard.IsEnabled = true; TextsCard.IsEnabled = true; } }
private void ROMOpenButton_Click(object sender, RoutedEventArgs e) { var od = new System.Windows.Forms.OpenFileDialog { Multiselect = false, Title = Utils.GetResource("common:dialogROMOpen"), Filter = Utils.GetNDSFilter(), }; if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { ROMUtils.TryLoad(od.FileName); Title = Utils.GetResource("common:program") + " - " + Path.GetFileName(od.FileName); ShowMessage(Utils.GetResource("common:successROMLoad") + ": " + Path.GetFileName(od.FileName) + "\n" + Utils.GetResource("common:buildDateInfo") + " \"" + ROMUtils.GetBuildDate() + "\""); AssetsButton.IsEnabled = true; KartsButton.IsEnabled = true; TexturesButton.IsEnabled = true; SoundButton.IsEnabled = true; TextsButton.IsEnabled = true; TracksButton.IsEnabled = true; } catch (NotMKDSROMException) { ShowMessage(Utils.GetResource("common:invalidMKDSROM")); } catch { ShowMessage(Utils.GetResource("common:invalidNDSROM")); } } }
protected override void OnClosing(CancelEventArgs e) { Playing = false; Stop = true; var fs = MainWindow.LoadedROM.ToFileSystem(); var sdatfile = ROMUtils.GetSFSFile("sound_data.sdat", fs); sdatfile.Data = Data.Write(); MainWindow.LoadedROM.FromFileSystem(fs); base.OnClosing(e); }
private void SoundButton_Click(object sender, RoutedEventArgs e) { if (sound == null) { sound = new SoundWindow { Owner = this }; sound.Closing += new CancelEventHandler((object s, CancelEventArgs e2) => { Focus(); sound = null; }); sound.Load(new SDAT(ROMUtils.GetFile("sound_data.sdat", LoadedROM.ToFileSystem()))); sound.Show(); } else { sound.Focus(); } }
public void Load() { if (ComboIndex < 0) { LanguageCombo.SelectedIndex = 0; } var rfs = MainWindow.LoadedROM.ToFileSystem(); string ext = GetCARCExtension(LanguageCombo.SelectedIndex); var cbmain2d = ROMUtils.GetFile("Main2D" + ext + ".carc", rfs); var bmain2d = ROM.LZ77_Decompress(cbmain2d); Main2D = new NARC(bmain2d); var dmain2d = Main2D.ToFileSystem(); var common = ROMUtils.GetFile("common.bmg", dmain2d); Common = new BMG(common); var cbstatic2d = ROMUtils.GetFile("Static2D.carc", rfs); var bstatic2d = ROM.LZ77_Decompress(cbstatic2d); Static2D = new NARC(bstatic2d); var dstatic2d = Static2D.ToFileSystem(); var mbchild = ROMUtils.GetFile("MBChild" + ext + ".bmg", dstatic2d); MBChild = new BMG(mbchild); var cbchksel = ROMUtils.GetFile("CharacterKartSelect" + ext + ".carc", rfs); var bchksel = ROM.LZ77_Decompress(cbchksel); CharacterKartSelect = new NARC(bchksel); var dchksel = CharacterKartSelect.ToFileSystem(); var ksel = ROMUtils.GetFile("kart_select.bmg", dchksel); KartSelect = new BMG(ksel); var cbwlmenu = ROMUtils.GetFile("WLMenu" + ext + ".carc", rfs); var bwlmenu = ROM.LZ77_Decompress(cbwlmenu); WLMenu = new NARC(bwlmenu); var dwlmenu = WLMenu.ToFileSystem(); var banner = ROMUtils.GetFile("banner.bmg", dwlmenu); Banner = new BMG(banner); CommonTextsList.Items.Clear(); MBChildTextsList.Items.Clear(); KartSelectTextsList.Items.Clear(); DlPlayTextsList.Items.Clear(); foreach (var str in Common.DAT1.Strings) { CommonTextsList.Items.Add(new TextBox() { TextWrapping = TextWrapping.Wrap, AcceptsReturn = true, Text = str, }); } foreach (var str in MBChild.DAT1.Strings) { MBChildTextsList.Items.Add(new TextBox() { TextWrapping = TextWrapping.Wrap, AcceptsReturn = true, Text = str, }); } foreach (var str in KartSelect.DAT1.Strings) { KartSelectTextsList.Items.Add(new TextBox() { TextWrapping = TextWrapping.Wrap, AcceptsReturn = true, Text = str, }); } foreach (var str in Banner.DAT1.Strings) { DlPlayTextsList.Items.Add(new TextBox() { TextWrapping = TextWrapping.Wrap, AcceptsReturn = true, Text = str, }); } }
private void Save(int Lang) { string ext = GetCARCExtension(Lang); var rfs = MainWindow.LoadedROM.ToFileSystem(); int idx = 0; foreach (TextBox elem in CommonTextsList.Items) { Common.DAT1.Strings[idx] = elem.Text; idx++; } var common = Common.Save(); var dmain2d = Main2D.ToFileSystem(); var fcommon = ROMUtils.GetSFSFile("common.bmg", dmain2d); fcommon.Data = common; Main2D.FromFileSystem(dmain2d); var fmain2d = ROMUtils.GetSFSFile("Main2D" + ext + ".carc", rfs); fmain2d.Data = ROM.LZ77_Compress(Main2D.Write()); idx = 0; foreach (TextBox elem in MBChildTextsList.Items) { MBChild.DAT1.Strings[idx] = elem.Text; idx++; } var mbchild = MBChild.Save(); var dstatic2d = Static2D.ToFileSystem(); var fmbchild = ROMUtils.GetSFSFile("MBChild" + ext + ".bmg", dstatic2d); fmbchild.Data = mbchild; Static2D.FromFileSystem(dstatic2d); var fstatic2d = ROMUtils.GetSFSFile("Static2D.carc", rfs); fstatic2d.Data = ROM.LZ77_Compress(Static2D.Write()); idx = 0; foreach (TextBox elem in KartSelectTextsList.Items) { KartSelect.DAT1.Strings[idx] = elem.Text; idx++; } var ksel = KartSelect.Save(); var dchksel = CharacterKartSelect.ToFileSystem(); var fksel = ROMUtils.GetSFSFile("kart_select.bmg", dchksel); fksel.Data = ksel; CharacterKartSelect.FromFileSystem(dchksel); var fchksel = ROMUtils.GetSFSFile("CharacterKartSelect" + ext + ".carc", rfs); fchksel.Data = ROM.LZ77_Compress(CharacterKartSelect.Write()); idx = 0; foreach (TextBox elem in DlPlayTextsList.Items) { Banner.DAT1.Strings[idx] = elem.Text; idx++; } var banner = Banner.Save(); var dwlmenu = WLMenu.ToFileSystem(); var fbanner = ROMUtils.GetSFSFile("banner.bmg", dwlmenu); fbanner.Data = banner; WLMenu.FromFileSystem(dwlmenu); var fwlmenu = ROMUtils.GetSFSFile("WLMenu" + ext + ".carc", rfs); fwlmenu.Data = ROM.LZ77_Compress(WLMenu.Write()); MainWindow.LoadedROM.FromFileSystem(rfs); }
private void SequenceImportButton_Click(object sender, RoutedEventArgs e) { bool chplay = false; if (!Stop && Playing) { chplay = true; PlayButton.Content = new PackIcon { Kind = PackIconKind.Play }; Playing = !Playing; } var od = new OpenFileDialog { Title = Utils.GetResource("sound:sequenceReplace"), Filter = Utils.GetResource("sound:midiFile") + " |*.mid|" + Utils.GetResource("sound:sseqFile") + " (SSEQ)|*.sseq", Multiselect = false, }; if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string ext = Path.GetExtension(od.FileName); string sseq = ""; if (ext.EndsWith("sseq")) { sseq = od.FileName; } else if (ext.EndsWith("mid")) { string fname = Path.GetFileNameWithoutExtension(od.FileName); MIDIConverter cvtr = ROMUtils.DetermineConverter(); if (cvtr == MIDIConverter.Invalid) { Utils.ShowMessage(Utils.GetResource("sound:errorMidiConversion")); return; } else if (cvtr == MIDIConverter.MIDI2SSEQ) { string midi2sseq = Utils.GetSelfPath() + "\\midi2sseq.exe"; var p = new Process { StartInfo = new ProcessStartInfo { FileName = midi2sseq, Arguments = "\"" + od.FileName + "\"", UseShellExecute = false, CreateNoWindow = true, } }; p.Start(); p.WaitForExit(); if (!File.Exists(Utils.GetSelfPath() + "\\" + fname + ".sseq")) { Utils.ShowMessage(Utils.GetResource("sound:errorSequenceConversion")); if (chplay) { PlayButton.Content = new PackIcon { Kind = PackIconKind.Pause }; Playing = !Playing; } return; } sseq = Utils.GetSelfPath() + "\\" + fname + ".sseq"; } else if (cvtr == MIDIConverter.SmfSeqConv) { string smfconv = Utils.GetSelfPath() + "\\smfconv.exe"; string seqconv = Utils.GetSelfPath() + "\\seqconv.exe"; var p = new Process { StartInfo = new ProcessStartInfo { FileName = smfconv, Arguments = "\"" + od.FileName + "\"", UseShellExecute = false, CreateNoWindow = true, } }; p.Start(); p.WaitForExit(); string basenoext = Path.GetDirectoryName(od.FileName) + "\\" + fname; if (!File.Exists(basenoext + ".smft")) { Utils.ShowMessage(Utils.GetResource("sound:errorSequenceConversion")); if (chplay) { PlayButton.Content = new PackIcon { Kind = PackIconKind.Pause }; Playing = !Playing; } return; } var p2 = new Process { StartInfo = new ProcessStartInfo { FileName = seqconv, Arguments = "\"" + basenoext + ".smft\"", UseShellExecute = false, CreateNoWindow = true, } }; p2.Start(); p2.WaitForExit(); if (!File.Exists(basenoext + ".sseq")) { Utils.ShowMessage(Utils.GetResource("sound:errorSequenceConversion")); if (chplay) { PlayButton.Content = new PackIcon { Kind = PackIconKind.Play }; Playing = false; Stop = true; } return; } File.Delete(basenoext + ".smft"); sseq = basenoext + ".sseq"; } } Data.FileAllocationTable.Entries[(int)Data.InfoBlock.SequenceInfos[SequencesCombo.SelectedIndex].FileId].Data = File.ReadAllBytes(sseq); Reload(); if (ext.EndsWith("mid")) { File.Delete(sseq); } } if (chplay) { PlayButton.Content = new PackIcon { Kind = PackIconKind.Play }; Playing = false; Stop = true; } }