Esempio n. 1
0
 public MainFE6Form()
 {
     InitializeComponent();
     FixedButton();
     InputFormRef.RecolorMenuStrip(this.menuStrip1);
     MainFormUtil.MakeExplainFunctions(this.ControlPanel);
 }
Esempio n. 2
0
        private void ROMRebuildForm_Load(object sender, EventArgs e)
        {
            string orignal_romfile;

            using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(null))
            {
                if (Program.ROM.Data.Length
                    <= U.toOffset(Program.ROM.RomInfo.extends_address))
                {
                    R.ShowStopError("このROMは拡張領域を利用していないので、リビルドできません。");
                    this.Close();
                    return;
                }

                List <FELint.ErrorSt> systemErrorList = Program.AsmMapFileAsmCache.GetFELintCache(FELint.SYSTEM_MAP_ID);
                if (systemErrorList != null && systemErrorList.Count > 0)
                {
                    DialogResult dr =
                        R.ShowNoYes("警告\r\nこのROMにはシステムエラーがあるので、リビルドを実行するべきではありません。\r\n危険を承知した上でも、それでも実行しますか?");
                    if (dr != System.Windows.Forms.DialogResult.Yes)
                    {
                        this.Close();
                        return;
                    }
                }
                String dir = Path.GetDirectoryName(Program.ROM.Filename);
                orignal_romfile = MainFormUtil.FindOrignalROM(dir);
            }

            this.OrignalFilename.Text = orignal_romfile;
            this.RebuildAddress.Value = U.toOffset(Program.ROM.RomInfo.extends_address);
        }
        private void Subtile_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(this))
            {
                uint text_id = TextForm.SearchText(this.CurrentText);
                if (text_id == U.NOT_FOUND)
                {
                    return;
                }

                string clipbord = "";
                uint   num      = TranslateTextUtil.GrepReverseSearchDic(this.SimpleTranslateToTranslateDataFilename, U.ToHexString(text_id) + "]");
                if (num == U.NOT_FOUND)
                {
                    clipbord = "[" + U.ToHexString(text_id) + "]";
                }
                clipbord += this.CurrentText;
                U.SetClipboardText(clipbord);

                try
                {
                    MainFormUtil.OpenTextEditor(this.SimpleTranslateToTranslateDataFilename, num);
                }
                catch (Exception ee)
                {
                    R.ShowStopError(ee.ToString());
                }
            }
        }
Esempio n. 4
0
 public static void CheckInitWizard()
 {
     if (ToolInitWizardForm.IsShowWizard())
     {//初期設定がされていない場合は、ウィザードを起動する.
         MainFormUtil.RunToolInitWizard();
     }
 }
Esempio n. 5
0
        public static void WriteEA(string EA, uint freearea, uint org_sp, Undo.UndoData undodata, SymbolUtil.DebugSymbol storeSymbol)
        {
            string output;
            string symbol;
            bool   r;

            try
            {
                r = MainFormUtil.CompilerEventAssembler(EA, freearea, org_sp, out output, out symbol);
            }
            catch (Win32Exception e)
            {
                r      = false;
                symbol = "";
                output = R._("プロセスを実行できません。\r\nfilename:{0}\r\n{1}", EA, e.ToString());
            }
            if (!r)
            {
                throw new PatchForm.PatchException(output);
            }

            r = Program.ROM.SwapNewROMData(File.ReadAllBytes(output)
                                           , "event_assembler", undodata);
            if (!r)
            {
                throw new PatchForm.PatchException(R.Notify("変更をユーザーが取り消しました"));
            }
            SymbolUtil.ProcessSymbolByComment(EA, symbol, storeSymbol, 0);

            //EAの結果作成したROMを消します. 残すとROMがPATCHディレクトリに残るのでいろいろよろしくない.
            File.Delete(output);
        }
Esempio n. 6
0
        private void OtherROMSongTable_MouseDoubleClick(object sender, MouseEventArgs ee)
        {
            uint song_id = (uint)(OtherROMSongTable.SelectedIndex);

            if (song_id <= 0)
            {
                return;
            }

            Process p;

            try
            {
                p = MainFormUtil.PoolRunAs("sappy", this.OtherROMFilename);
            }
            catch (Exception e)
            {
                R.ShowStopError("Sappyプロセスを実行できません。\r\n{0}", e.ToString());
                return;
            }
            if (p == null)
            {
                return;
            }

            SappyPlaying sappy = new SappyPlaying();

            sappy.StartPlay(p, song_id);
        }
        int BinarySearchNotContainThisPatch(InputFormRef.AutoPleaseWait pleaseWait, int imin, int imax)
        {
            if (imax <= imin)
            {//見つからない
                return(-1);
            }
            int imid = imin + (imax - imin) / 2;

            pleaseWait.DoEvents(R._("パッチを含まないバックアップを探索中。進捗:{1}/{2} {0}"
                                    , Path.GetFileName(this.FindBackup.Files[imid].FilePath)
                                    , imid, this.FindBackup.Files.Count));

            byte[] rom = MainFormUtil.OpenROMToByte(
                this.FindBackup.Files[imid].FilePath
                , this.FindBackup.OrignalFilename);
            if (rom.Length <= 0)
            {//このバックアップは壊れている!
            }
            else
            {
                if (!SearchContainThisPatchBy(rom))
                {//このROMは、差分を含んでいないので利用可能
                 //ただし、もっと新しいバージョンがあるかもしれないのでさらに探索.
                    int prev = BinarySearchNotContainThisPatch(pleaseWait, imin, imid - 1);
                    if (prev < 0 || prev > imid)
                    {//前方にない場合は、自分が発見したものを返す.
                        return(imid);
                    }
                    return(prev);
                }
            }

            //未発見なので、後方へ検索する
            return(BinarySearchNotContainThisPatch(pleaseWait, imid + 1, imax));
        }
Esempio n. 8
0
        private void SongTrackImportMidiForm_Load(object sender, EventArgs e)
        {
            if (!HasNIMAP())
            {
                HowDoYouLikePatchForm.CheckAndShowPopupDialog(HowDoYouLikePatchForm.TYPE.NIMAP_By_SongTrack);
                PickupInstrument();
            }
            if (OptionForm.GetMidfix4agb() == "")
            {
                UseMidfix4agb_checkBox.Hide();
                WARNING_midfix4agb_label.Show();
            }
            else
            {
                WARNING_midfix4agb_label.Hide();
                UseMidfix4agb_checkBox.Show();
            }

            if (MainFormUtil.CanUseMID2AGB())
            {     //mid2agbを利用できる.
                if (OptionForm.midi_importer() == OptionForm.midi_importer_enum.MID2AGB)
                { //mid2agbがディフォルト
                    this.tabControl1.SelectedIndex = 1;
                }
            }
            else
            {//mid2agbを利用できない.
                Explain_mid2agb.Text           = R._("mid2agbが設定されていません。\r\n設定画面より、mid2agbの設定をしてください。");
                Mid2AGBOKButton.Enabled        = false;
                this.tabControl1.SelectedIndex = 0;
            }
            Mid2agbV.Value = 80;
            //Mid2agbR.SelectedIndex = 0;
        }
Esempio n. 9
0
        public static int ComandLineRebuild()
        {
            String dir             = Path.GetDirectoryName(Program.ROM.Filename);
            string orignalFilename = MainFormUtil.FindOrignalROM(dir);

            if (!File.Exists(orignalFilename))
            {
                U.echo(R.Error("無改造ROMを指定してください。"));
                return(-1);
            }
            U.echo("ComandLineRebuild");

            string romRebuildFilename = Program.ROM.Filename;
            uint   rebuildAddress     = U.toOffset(Program.ROM.RomInfo.extends_address);

            Make(romRebuildFilename, orignalFilename, rebuildAddress);

            uint   addr = U.Padding4(Program.ROM.RomInfo.compress_image_borderline_address);
            uint   freeAreaMinimumSize    = 2048;
            uint   freeAreaStartAddress   = U.Padding4(Program.ROM.RomInfo.compress_image_borderline_address);
            string appendFreeAreaFilename = "";
            uint   useShareSameData       = 1;
            string stdout = ReOpen(romRebuildFilename, orignalFilename, 1, freeAreaMinimumSize, freeAreaStartAddress, appendFreeAreaFilename, useShareSameData);

            U.echo(stdout);

            return(0);
        }
        private void OverraideCheckDialog_Load(object sender, EventArgs e)
        {
            DiaplayFilename.Text   = Program.ROM.Filename;
            this.HintTextBox.Text += "\r\n" + MainFormUtil.GetReport7zURL();

            this.MyCancelButton.Focus();
            System.Media.SystemSounds.Hand.Play();
        }
Esempio n. 11
0
 public MainFE6Form()
 {
     InitializeComponent();
     FixedButton();
     ToolRunHintMessageForm.RemoveRunTestMenuIfUserWant(this.menuStrip1, this.TestRunStripMenuItem);
     InputFormRef.RecolorMenuStrip(this.menuStrip1);
     MainFormUtil.MakeExplainFunctions(this.ControlPanel);
 }
Esempio n. 12
0
 private void EndButton_Click(object sender, EventArgs e)
 {
     if (this.OpenCommunities.Checked)
     {
         MainFormUtil.GotoCommunities();
     }
     this.Close();
 }
        private void Translate_from_SelectedIndexChanged(object sender, EventArgs e)
        {
            String dir  = Path.GetDirectoryName(Program.ROM.Filename);
            string from = U.InnerSplit(Translate_from.Text, "=", 0);

            TranslateFormROMFilename.Text       = MainFormUtil.FindOrignalROMByLang(dir, from);
            SimpleTranslateFromROMFilename.Text = TranslateFormROMFilename.Text;
        }
Esempio n. 14
0
 private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (!MainFormUtil.IsNotSaveYet(this))
     {
         return;
     }
     MainFormUtil.Open(this);
 }
        private void Translate_to_SelectedIndexChanged(object sender, EventArgs e)
        {
            String dir = Path.GetDirectoryName(Program.ROM.Filename);
            string to  = U.InnerSplit(Translate_to.Text, "=", 0);

            TranslateToROMFilename.Text       = MainFormUtil.FindOrignalROMByLang(dir, to);
            SimpleTranslateToROMFilename.Text = TranslateToROMFilename.Text;
            FontROMTextBox.Text = TranslateToROMFilename.Text;
        }
 bool CopyToEmu(FindBackup.FileInfo fi, string emulator_filename)
 {
     byte[] bin = MainFormUtil.OpenROMToByte(fi.FilePath, this.OrignalFilename.Text);
     if (bin.Length <= 0)
     {
         return(false);
     }
     U.WriteAllBytes(emulator_filename, bin);
     return(true);
 }
Esempio n. 17
0
        private void OpenROMButton_Click(object sender, EventArgs e)
        {
            string romfilename = Program.OpenROMDialog();
            bool   r           = MainFormUtil.Open(this, romfilename, false, "");

            if (r)
            {
                this.Close();
            }
        }
Esempio n. 18
0
        private void UPSPatchForm_Load(object sender, EventArgs e)
        {
            using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(null))
            {
                String dir             = Path.GetDirectoryName(Program.ROM.Filename);
                string orignal_romfile = MainFormUtil.FindOrignalROM(dir);

                this.OrignalFilename.Text = orignal_romfile;
            }
        }
Esempio n. 19
0
        private void SongTable_DoubleClick(object sender, EventArgs e)
        {
            uint song_id = (uint)(SongTable.SelectedIndex);

            if (song_id <= 0)
            {
                return;
            }
            MainFormUtil.RunAsSappy(song_id);
        }
Esempio n. 20
0
        private void MainFE0Form_FormClosing(object sender, FormClosingEventArgs e)
        {
#if DEBUG
            //デバッグ時はいちいち聞かれると面倒なのでスルーする
#else
            if (!MainFormUtil.IsNotSaveYet(this))
            {
                e.Cancel = true;
            }
#endif
        }
Esempio n. 21
0
 private void OKButton_Click(object sender, EventArgs e)
 {
     if (DoNotShowThisMessageAgain.Checked)
     {
         Program.Config["RunTestMessage"] = "1";
         //configの保存
         Program.Config.Save();
     }
     this.Close();
     MainFormUtil.RunAs("emulator");
 }
Esempio n. 22
0
        static string RunAutoReCompile(string eaFilename)
        {
            if (!File.Exists(eaFilename))
            {
                return("");
            }

            EAUtil ea = new EAUtil(eaFilename);

            foreach (EAUtil.Data d in ea.DataList)
            {
                if (d.Dir == "")
                {
                    continue;
                }

                if (d.DataType == EAUtil.DataEnum.ASM ||
                    d.DataType == EAUtil.DataEnum.LYN)
                {
                    string targetfilename = Path.Combine(d.Dir, d.Name);

                    string sourceCode;
                    if (!IsUpdateSourceCode(targetfilename, out sourceCode))
                    {
                        continue;
                    }

                    MainFormUtil.CompileType compileType = MainFormUtil.CompileType.NONE;
                    if (d.DataType == EAUtil.DataEnum.LYN)
                    {
                        if (targetfilename.IndexOf(".lyn.event") >= 0)
                        {
                            compileType = MainFormUtil.CompileType.CONVERT_LYN;
                        }
                        else
                        {
                            compileType = MainFormUtil.CompileType.KEEP_ELF;
                        }
                    }

                    string error;
                    string symbol;
                    bool   r = MainFormUtil.Compile(sourceCode, out error, out symbol, compileType, checkMissingLabelCheck: true);
                    if (!r)
                    {
                        return(error);
                    }
                    SymbolUtil.ProcessSymbolByComment(sourceCode, symbol, SymbolUtil.DebugSymbol.SaveSymTxt, 0);
                }
            }

            return("");
        }
Esempio n. 23
0
        private void ToolDisasmSourceCode_Shown(object sender, EventArgs e)
        {
            using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(null))
            {
                SrcCodeFilename.Text = StoreSrcCode;

                String dir             = Path.GetDirectoryName(Program.ROM.Filename);
                string orignal_romfile = MainFormUtil.FindOrignalROM(dir);

                this.OrignalFilename.Text = orignal_romfile;
            }
        }
Esempio n. 24
0
        public static string MakeUpdateMessage()
        {
            string str = R._("現在利用しているバージョンから、1か月以上が経過しています。\r\n新しいバージョンが出ていないか確認してください。");

            string lang = OptionForm.lang();
            string url  = MainFormUtil.GetManualURL();

            str += "\r\n" + "https://github.com/FEBuilderGBA/FEBuilderGBA/releases/latest";
            str += "\r\n" + url;

            return(str);
        }
        public byte[] GetOrignalROMData()
        {
            byte[] rom = MainFormUtil.OpenROMToByte(
                this.OrignalFilename.Text
                , this.FindBackup.OrignalFilename);
            if (rom.Length <= 0)
            {//ROMを読み込めないので、バニラを取得.
                rom = MainFormUtil.OpenROMToByte(this.FindBackup.OrignalFilename);
            }

            return(rom);
        }
        private void BackupList_DoubleClick(object sender, EventArgs e)
        {
            if (this.BackupList.SelectedIndex < 0 || this.BackupList.SelectedIndex >= this.FindBackup.Files.Count)
            {
                return;
            }
            FindBackup.FileInfo fi = this.FindBackup.Files[this.BackupList.SelectedIndex];
            if (!CheckOrignalROMIfUPS(fi))
            {
                return;
            }

            string run_name          = "emulator";
            string emulator_filename = U.MakeFilename(run_name);

            using (InputFormRef.AutoPleaseWait wait = new InputFormRef.AutoPleaseWait(this))
            {
                bool r = CopyToEmu(fi, emulator_filename);
                if (!r)
                {
                    return;
                }
            }

            if (!File.Exists(emulator_filename))
            {
                R.ShowStopError("エミュレータにロードするROMを作れませんでした。\r\n{0}", emulator_filename);
                return;
            }

            //セーブファイルが壊されるかもしれないので保存しよう.
            string saveFile = MainFormUtil.FindCurrentSavFilename(Program.ROM.Filename);

            byte[] saveFileBin = null;
            if (File.Exists(saveFile))
            {
                saveFileBin = File.ReadAllBytes(saveFile);
            }

            Process process = MainFormUtil.RunAs(run_name, emulator_filename);

            if (process == null)
            {
                return;
            }
            process.Exited += (ss, ee) => {
                //エミュレータが終了したら、保存していたセーブファイルを書き戻す.
                if (saveFile != "" && saveFileBin != null)
                {
                    U.WriteAllBytes(saveFile, saveFileBin);
                }
            };
        }
Esempio n. 27
0
        public static int CommandLineImport()
        {
            U.echo("CommandLineImport");
            string fromrom = U.at(Program.ArgsDic, "--fromrom");

            if (fromrom == "")
            {
                fromrom = U.at(Program.ArgsDic, "--target");
            }
            if (!File.Exists(fromrom))
            {
                U.echo("曲を取り出すROMを「--fromrom」で指定してください。");
                return(-2);
            }

            SongExchangeForm f = (SongExchangeForm)InputFormRef.JumpFormLow <SongExchangeForm>();

            f.LoadSongListAtOtherROM(fromrom);

            uint tosong = U.atoi0x(U.at(Program.ArgsDic, "--tosong"));

            if (tosong <= 0)
            {
                U.echo("曲をインポートする場所を「--tosong」で指定してください。");
                return(-2);
            }
            U.SelectedIndexSafety(f.SongTable, tosong);

            uint fromsong = U.atoi0x(U.at(Program.ArgsDic, "--fromsong"));

            if (fromsong <= 0)
            {
                U.echo("曲をエクスポートする場所を「--fromsong」で指定してください。");
                return(-2);
            }
            U.SelectedIndexSafety(f.OtherROMSongTable, fromsong);

            f.ConvertButton_Click(null, null);

            //インポートに成功したら保存する.
            if (Program.ROM.Modified)
            {
                MainFormUtil.SaveForce(f);
            }
            else
            {
                U.echo("曲のインポートに失敗しました。");
                return(-1);
            }

            return(0);
        }
Esempio n. 28
0
        private void Step2NextButton_Click(object sender, EventArgs e)
        {
            if (InputFormRef.IsPleaseWaitDialog(this))
            {//2重割り込み禁止
                return;
            }
            string errorMessage = MainFormUtil.CheckOrignalROM(OrignalFilename.Text);

            if (errorMessage != "")
            {
                R.ShowStopError(errorMessage);
                OrignalFilename.ErrorMessage = R._(errorMessage);
                return;
            }

            OrignalFilename.ErrorMessage = "";


            string         title  = R._("レポートを保存するファイル名を選択してください");
            string         filter = R._("report.7z|*.report.7z|All files|*");
            SaveFileDialog save   = new SaveFileDialog();

            save.Title        = title;
            save.Filter       = filter;
            save.AddExtension = true;
            Program.LastSelectedFilename.Load(this, "", save, MakeReportFilename());

            DialogResult dr = save.ShowDialog();

            if (dr != DialogResult.OK)
            {
                return;
            }
            if (save.FileNames.Length <= 0 || !U.CanWriteFileRetry(save.FileNames[0]))
            {
                return;
            }

            using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(this))
            {
                string error = MakeReport(save.FileNames[0]);
                if (error != "")
                {
                    R.ShowStopError("レポートを作れませんでした。\r\n{0}", error);
                    return;
                }
            }
            MainTab.SelectedTab = EndPage;

            //エクスプローラで選択しよう
            U.SelectFileByExplorer(save.FileNames[0]);
        }
        private void OrignalSelectButton_Click(object sender, EventArgs e)
        {
            string title  = R._("アンインストールしたパッチを含んでいないROMを選択してください");
            string filter = R._("ROMs|*.gba;*.ups|GBA ROMs|*.gba|UPS files|*.ups|GBA.7Z|*.gba.7z|ROMRebuild|*.rebuild|Binary files|*.bin|All files|*");

            OpenFileDialog open = new OpenFileDialog();

            open.Title  = title;
            open.Filter = filter;
            if (Program.LastSelectedFilename != null)
            {
                Program.LastSelectedFilename.Load(this, "", open);
            }
            DialogResult dr = open.ShowDialog();

            if (dr != DialogResult.OK)
            {
                return;
            }
            if (!U.CanReadFileRetry(open))
            {
                return;
            }

            if (Program.LastSelectedFilename != null)
            {
                Program.LastSelectedFilename.Save(this, "", open);
            }
            string filename = open.FileNames[0];

            if (this.FindBackup.OrignalFilename == filename)
            {//無改造ROM
                Log.Debug("無改造ROMなので利用できます");
            }
            else
            {
                //念のため確認する
                byte[] rom = MainFormUtil.OpenROMToByte(
                    filename
                    , this.FindBackup.OrignalFilename);
                if (!IsOrignalROM(rom))
                {
                    if (SearchContainThisPatchBy(rom))
                    {
                        R.ShowStopError("このROMはアンインストール対象のパッチを含んでいるので利用できません。");
                        return;
                    }
                }
            }
            //利用できるらしい.
            OrignalFilename.Text = filename;
        }
Esempio n. 30
0
        private void OpenLastROMButton_Click(object sender, EventArgs e)
        {
            string romfilename = Program.GetLastROMFilename();

            if (romfilename != "")
            {
                bool r = MainFormUtil.Open(this, romfilename, false, "");
                if (r)
                {
                    this.Close();
                }
            }
        }