Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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"));
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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();
     }
 }
Ejemplo n.º 6
0
        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,
                });
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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;
            }
        }