List <Address> SearchAllLZ77Data(InputFormRef.AutoPleaseWait wait) { //念のためパッチのCheckIFをスキャンをやり直す. PatchForm.ClearCheckIF(); wait.DoEvents("GrepAllStructPointers"); List <DisassemblerTrumb.LDRPointer> ldrmap = DisassemblerTrumb.MakeLDRMap(Program.ROM.Data, 0x100, Program.ROM.RomInfo.compress_image_borderline_address, true); List <Address> structList = U.MakeAllStructPointersList(false); U.AppendAllASMStructPointersList(structList , ldrmap , isPatchInstallOnly: true , isPatchPointerOnly: false , isPatchStructOnly: false , isUseOtherGraphics: false , isUseOAMSP: false ); AsmMapFile.InvalidateUNUNSED(structList); Dictionary <uint, bool> dupCheck = new Dictionary <uint, bool>(); List <Address> ret = new List <Address>(); foreach (Address a in structList) { if (!Address.IsLZ77(a.DataType)) { continue; } if (dupCheck.ContainsKey(a.Addr)) { continue; } ret.Add(a); dupCheck[a.Addr] = true; } ret.Sort((aa, bb) => { return((int)(aa.Addr - bb.Addr)); }); return(ret); }
//ROM読みこみに伴うシステムの初期化. static void InitSystem(string fullfilename) { Log.Notify("InitSystem:", Path.GetFileName(ROM.Filename), "ver:", ROM.RomInfo.VersionToFilename(), "length:", ROM.Data.Length.ToString("X"), "FEBuilderGBA:", U.getVersion()); //Undoバッファの準備 Undo = new Undo(); //数を求める部分はあまりにたくさん呼び出すのでキャッシュすることにしました. InputFormRef.ClearCacheDataCount(); //パッチのインストールの是非の判定 FE8には策パッチがあるのでキャッシュする. PatchForm.ClearCheckIF(); if (fullfilename != "") { //変更監視 UpdateWatcher.RegistMain(fullfilename); } //tbl適応判定 OptionForm.AutoUpdateTBLOption(); //システム側のテキストエンコード どうやってUnicodeにするかどうか. ReBuildSystemTextEncoder(); //FEテキストエンコード用のハフマンツリーマップの構成 ReBuildFETextEncoder(); //イベントの読込 ReLoadEventScript(); //イベント条件の解釈リスト EventCondForm.PreLoadResource(U.ConfigDataFilename("eventcond_")); //AI1 と 2, 3 EventUnitForm.PreLoadResourceAI1(U.ConfigDataFilename("ai1_")); EventUnitForm.PreLoadResourceAI2(U.ConfigDataFilename("ai2_")); EventUnitForm.PreLoadResourceAI3(U.ConfigDataFilename("ai3_")); //SondEffectリスト SongTableForm.PreLoadResource(U.ConfigDataFilename("sound_")); //UnitActionリスト UnitActionPointerForm.PreLoadResource(U.ConfigDataFilename("unitaction_")); //ROM内アニメ ImageRomAnimeForm.PreLoadResource(); ImageTSAAnimeForm.PreLoadResource(); if (Program.ROM.RomInfo.version() == 8) { ImageTSAAnime2Form.PreLoadResource(); } //MODの読込. ReLoadMod(); //新規に追加ユニットリストキャッシュの削除 EventUnitForm.ClearNewData(); //システムアイコンキャッシュのクリア ImageSystemIconForm.ClearCache(); //EVENTとASMのキャッシュをクリア AsmMapFileAsmCache = new FEBuilderGBA.AsmMapFileAsmCache(); //asm mapキャッシュの更新. AsmMapFileAsmCache.ClearCache(); //RAM ReBuildRAM(); if (fullfilename != "" && fullfilename != Program.Config.at("Last_Rom_Filename")) {//最後に開いたファイル名を保存する. Program.Config["Last_Rom_Filename"] = fullfilename; Program.Config.Save(); } //Log.Notify("InitSystem:Complate"); }