//全データの取得 public static void MakeAllDataLength(List <Address> list) { { InputFormRef InputFormRef = Init(null); FEBuilderGBA.Address.AddAddress(list, InputFormRef, "EventBattleTalk1", new uint[] { 8 }); List <uint> tracelist = new List <uint>(); uint addr = InputFormRef.BaseAddress; for (int i = 0; i < InputFormRef.DataCount; i++, addr += InputFormRef.BlockSize) { uint textid = Program.ROM.u16(addr + 4); if (textid <= 0) { continue; } uint spEventP = Program.ROM.u32(addr + 8); if (!U.isSafetyPointer(spEventP)) { continue; } uint unitid = Program.ROM.u8(addr + 0); string event_name = "EventBattleTalk1" + " " + U.ToHexString(unitid) + " " + UnitForm.GetUnitName(unitid); EventScriptForm.ScanScript(list, addr + 8, true, false, event_name, tracelist); } } { InputFormRef InputFormRef = N1_Init(null); FEBuilderGBA.Address.AddAddress(list, InputFormRef, "EventBattleTalk2", new uint[] { }); } }
//全データの取得 public static void MakeAllDataLength(List <Address> list) { List <uint> tracelist = new List <uint>(); { InputFormRef InputFormRef = N_Init(null); FEBuilderGBA.Address.AddAddress(list, InputFormRef, "WorldMapEvent ", new uint[] { 0 }); uint p = InputFormRef.BaseAddress; for (int i = 0; i < InputFormRef.DataCount; i++, p += InputFormRef.BlockSize) { string name = "WorldMapEvent " + U.To0xHexString(i) + " "; EventScriptForm.ScanScript(list, p, true, true, name, tracelist); } } { uint p = Program.ROM.RomInfo.ending1_event_pointer(); string name = R._("エリウッドエンディング"); EventScriptForm.ScanScript(list, p, true, true, name, tracelist); } { uint p = Program.ROM.RomInfo.ending2_event_pointer(); string name = R._("ヘクトルエンディング"); EventScriptForm.ScanScript(list, p, true, true, name, tracelist); } }
//全データの取得 public static void MakeAllDataLength(List <Address> list) { InputFormRef InputFormRef = Init(null); FEBuilderGBA.Address.AddAddress(list, InputFormRef, "Haiku", new uint[] { 8 }); List <uint> tracelist = new List <uint>(); uint addr = InputFormRef.BaseAddress; for (int i = 0; i < InputFormRef.DataCount; i++, addr += InputFormRef.BlockSize) { // uint textid = Program.ROM.u16(addr + 6); // if (textid <= 0) // { // continue; // } uint spEventP = Program.ROM.u32(addr + 8); if (!U.isSafetyPointer(spEventP)) { continue; } uint unitid = Program.ROM.u8(addr + 0); string event_name = "Haiku" + " " + U.ToHexString(unitid) + " " + UnitForm.GetUnitName(unitid); EventScriptForm.ScanScript(list, addr + 8, true, false, event_name, tracelist); } InputFormRef N1_InputFormRef = N1_Init(null); uint[] pointers = new uint[] { Program.ROM.RomInfo.event_haiku_tutorial_1_pointer(), Program.ROM.RomInfo.event_haiku_tutorial_2_pointer() }; for (int n = 0; n < pointers.Length; n++) { N1_InputFormRef.ReInitPointer(pointers[n]); string name = "Haiku tutorial_" + n; FEBuilderGBA.Address.AddAddress(list, InputFormRef, name, new uint[] { 4 }); addr = N1_InputFormRef.BaseAddress; for (int i = 0; i < N1_InputFormRef.DataCount; i++, addr += N1_InputFormRef.BlockSize) { uint spEventP = Program.ROM.u32(addr + 4); if (!U.isSafetyPointer(spEventP)) { continue; } uint unitid = Program.ROM.u8(addr + 0); string event_name = name + " " + U.ToHexString(unitid) + " " + UnitForm.GetUnitName(unitid); EventScriptForm.ScanScript(list, addr + 4, true, false, event_name, tracelist); } } }
//全データの取得 public static void MakeAllDataLength(List <Address> list) { List <uint> tracelist = new List <uint>(); uint mapmax = MapSettingForm.GetDataCount(); for (uint mapid = 0; mapid < mapmax; mapid++) { uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid); if (wmapid == 0) {//存在しない continue; } //FE6はPLISTが格納されている. uint p; uint event_addr = MapPointerForm.PlistToOffsetAddrFast(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid, out p); if (event_addr == U.NOT_FOUND) { continue; } string name = "WorldMapEvent " + U.To0xHexString(mapid) + " "; EventScriptForm.ScanScript(list, p, true, true, name, tracelist); } }