public SkillConfigFE8NSkillForm()
        {
            InitializeComponent();
            this.AddressList.OwnerDraw(DrawSkillAndText, DrawMode.OwnerDrawFixed);

            PatchUtil.skill_system_enum skill = PatchUtil.SearchSkillSystem();
            if (skill == PatchUtil.skill_system_enum.FE8N ||
                skill == PatchUtil.skill_system_enum.yugudora)
            {
                this.Pointers = FindSkillFE8NVer1IconPointers();
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver2)
            {
                this.Pointers = SkillConfigFE8NVer2SkillForm.FindSkillFE8NVer2IconPointers();
            }
            else
            {
                return;
            }

            this.InputFormRef = Init(this);
            this.InputFormRef.MakeGeneralAddressListContextMenu(true);
            this.InputFormRef.CheckProtectionPaddingALIGN4 = false;

            this.FilterComboBox.BeginUpdate();
            for (int i = 0; i < this.Pointers.Length; i++)
            {
                uint p = Program.ROM.p32(this.Pointers[i]);
                this.FilterComboBox.Items.Add(U.ToHexString(p));
            }
            this.FilterComboBox.EndUpdate();
            this.FilterComboBox.SelectedIndex = 0;
        }
Beispiel #2
0
        public void InitExportFilter(uint filter)
        {
            List <UseValsID> list = new List <UseValsID>();

            if (filter == 1)
            {//ユニット関係のみ
                UnitForm.MakeVarsIDArray(list);
            }
            else if (filter == 2)
            {//クラス関係のみ
                ClassForm.MakeVarsIDArray(list);
            }
            else if (filter == 3)
            {//アイテム関係のみ
                ItemForm.MakeVarsIDArray(list);
            }
            else if (filter == 4)
            {//サウンドルーム関係のみ
                if (Program.ROM.RomInfo.version == 6)
                {
                    SoundRoomFE6Form.MakeVarsIDArray(list);
                }
                else
                {
                    SoundRoomForm.MakeVarsIDArray(list);
                }
            }
            else if (filter == 5)
            {//支援会話関係
                SupportTalkForm.MakeVarsIDArray(list);
            }
            else if (filter == 6)
            {//スキル関係
                if (Program.ROM.RomInfo.is_multibyte)
                {
                    SkillConfigFE8NSkillForm.MakeVarsIDArray(list);
                    SkillConfigFE8NVer2SkillForm.MakeVarsIDArray(list);
                }
                else
                {
                    SkillConfigSkillSystemForm.MakeVarsIDArray(list);
                }
            }
            else
            {//all
                ExportFilterArray = null;
                return;
            }

            ExportFilterArray = new Dictionary <int, bool>();
            foreach (UseValsID val in list)
            {
                ExportFilterArray[(int)val.ID] = true;
            }
        }
Beispiel #3
0
        static skill_system_enum SearchSkillSystemLow()
        {
            PatchTableSt[] table = new PatchTableSt[] {
                new PatchTableSt {
                    name = "yugudora", ver = "FE8J", addr = 0xEE594, data = new byte[] { 0x4B, 0xFA, 0x2F, 0x59 }
                },
                new PatchTableSt {
                    name = "FE8N", ver = "FE8J", addr = 0x89268, data = new byte[] { 0x00, 0x4B, 0x9F, 0x46 }
                },
                new PatchTableSt {
                    name = "midori", ver = "FE8J", addr = 0xFE58E0, data = new byte[] { 0x05, 0x1C, 0x00, 0xF0, 0x25, 0xF8, 0x01, 0x29, 0x04, 0xD0, 0x28, 0x1C, 0x00, 0xF0, 0x28, 0xF8 }
                },
                new PatchTableSt {
                    name = "SkillSystem", ver = "FE8U", addr = 0x2ACF8, data = new byte[] { 0x70, 0x47 }
                },
            };

            string version = Program.ROM.RomInfo.VersionToFilename();

            foreach (PatchTableSt t in table)
            {
                if (t.ver != version)
                {
                    continue;
                }

                byte[] data = Program.ROM.getBinaryData(t.addr, t.data.Length);
                if (U.memcmp(t.data, data) != 0)
                {
                    continue;
                }
                if (t.name == "FE8N")
                {
                    if (SkillConfigFE8NVer2SkillForm.IsFE8NVer2())
                    {
                        return(skill_system_enum.FE8N_ver2);
                    }
                    return(skill_system_enum.FE8N);
                }
                if (t.name == "yugudora")
                {
                    return(skill_system_enum.yugudora);
                }
                if (t.name == "midori")
                {
                    return(skill_system_enum.midori);
                }
                if (t.name == "SkillSystem")
                {
                    return(skill_system_enum.SkillSystem);
                }
            }
            return(skill_system_enum.NO);
        }
Beispiel #4
0
 private void B21_ValueChanged(object sender, EventArgs e)
 {
     if (IsFE8NVer2SkillNoSyo())
     {//FE8NVer2のスキルの書
         uint skillid = (uint)B21.Value;
         SKILLICON.Image   = SkillConfigFE8NVer2SkillForm.DrawSkillIcon(skillid);
         SKILLNAME.Text    = SkillConfigFE8NVer2SkillForm.GetSkillText(skillid);
         SKILLICON.Visible = true;
         SKILLNAME.Visible = true;
     }
 }
Beispiel #5
0
 static uint FindSkillIconAndText(PatchUtil.skill_system_enum skill, uint[] pointers, string searchSkillName, out string outText)
 {
     if (skill == PatchUtil.skill_system_enum.FE8N_ver2)
     {
         return(SkillConfigFE8NVer2SkillForm.FindSkillIconAndText(pointers, searchSkillName, out outText));
     }
     else if (skill == PatchUtil.skill_system_enum.midori)
     {//緑パッチ 詳細不明
         outText = "";
         return(U.NOT_FOUND);
     }
     else
     {
         return(SkillConfigFE8NSkillForm.FindSkillIconAndText(pointers, searchSkillName, out outText));
     }
 }
Beispiel #6
0
        public static void MakeClassSkillButtons(PatchUtil.skill_system_enum skill, uint cid, Button[] buttons, ToolTipEx tooltip)
        {
            if (buttons == null)
            {
                return;
            }

            int skillCount = 0;

            if (skill == PatchUtil.skill_system_enum.SkillSystem)
            {
                skillCount = SkillAssignmentClassSkillSystemForm.MakeClassSkillButtons(cid, buttons, tooltip);
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver2)
            {
                skillCount = SkillConfigFE8NVer2SkillForm.MakeClassSkillButtons(cid, buttons, tooltip);
            }
            SkillUtil.ApplyModButton(buttons, skillCount);
        }
Beispiel #7
0
 public static string GetSkillName(uint skillid)
 {
     if (Program.ROM.RomInfo.version() != 8)
     {
         return("");
     }
     PatchUtil.skill_system_enum skillsystem = PatchUtil.SearchSkillSystem();
     if (skillsystem == PatchUtil.skill_system_enum.SkillSystem)
     {
         string name = SkillConfigSkillSystemForm.GetSkillName(skillid);
         return(name);
     }
     else if (skillsystem == PatchUtil.skill_system_enum.FE8N_ver2)
     {
         string name = SkillConfigFE8NVer2SkillForm.GetSkillText(skillid);
         return(name);
     }
     return("");
 }
Beispiel #8
0
 public static Bitmap DrawIcon(uint skillid)
 {
     if (Program.ROM.RomInfo.version() != 8)
     {
         return(ImageUtil.BlankDummy());
     }
     PatchUtil.skill_system_enum skillsystem = PatchUtil.SearchSkillSystem();
     if (skillsystem == PatchUtil.skill_system_enum.SkillSystem)
     {
         Bitmap bitmap = SkillConfigSkillSystemForm.DrawSkillIcon(skillid);
         return(bitmap);
     }
     else if (skillsystem == PatchUtil.skill_system_enum.FE8N_ver2)
     {
         Bitmap bitmap = SkillConfigFE8NVer2SkillForm.DrawSkillIcon(skillid);
         return(bitmap);
     }
     return(ImageUtil.BlankDummy());
 }
        //全データの取得
        public static void MakeAllDataLength(List <Address> list)
        {
            uint[] pointer;

            PatchUtil.skill_system_enum skill = PatchUtil.SearchSkillSystem();
            if (skill == PatchUtil.skill_system_enum.FE8N ||
                skill == PatchUtil.skill_system_enum.yugudora)
            {
                pointer = FindSkillFE8NVer1IconPointers();
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver3)
            {//ver3では利用しません
                return;
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver2)
            {
                pointer = SkillConfigFE8NVer2SkillForm.FindSkillFE8NVer2IconPointers();
            }
            else
            {
                return;
            }

            if (pointer == null)
            {
                return;
            }

            InputFormRef ifr = Init(null);

            for (int i = 0; i < pointer.Length; i++)
            {
                ifr.ReInitPointer(pointer[i]);
                if (ifr.DataCount <= 0)
                {
                    continue;
                }
                FEBuilderGBA.Address.AddAddress(list, ifr
                                                , "SkillConfigFE8N" + U.ToHexString(i)
                                                , new uint[] { });
            }
        }
Beispiel #10
0
 private void B21_ValueChanged(object sender, EventArgs e)
 {
     if (IsFE8NSkillNoSyo())
     {//FE8NVer2のスキルの書
         uint skillid = (uint)B21.Value;
         PatchUtil.skill_system_enum skill = PatchUtil.SearchSkillSystem();
         if (skill == FEBuilderGBA.PatchUtil.skill_system_enum.FE8N_ver3)
         {
             SKILLICON.Image = SkillConfigFE8NVer3SkillForm.DrawSkillIcon(skillid);
             SKILLNAME.Text  = SkillConfigFE8NVer3SkillForm.GetSkillText(skillid);
         }
         else
         {
             SKILLICON.Image = SkillConfigFE8NVer2SkillForm.DrawSkillIcon(skillid);
             SKILLNAME.Text  = SkillConfigFE8NVer2SkillForm.GetSkillText(skillid);
         }
         SKILLICON.Visible = true;
         SKILLNAME.Visible = true;
     }
 }
        //テキストの取得
        public static void MakeVarsIDArray(List <UseValsID> list)
        {
            uint[] pointer;

            PatchUtil.skill_system_enum skill = PatchUtil.SearchSkillSystem();
            if (skill == PatchUtil.skill_system_enum.FE8N ||
                skill == PatchUtil.skill_system_enum.yugudora)
            {
                pointer = FindSkillFE8NVer1IconPointers();
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver3)
            {//ver3では利用しません
                return;
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver2)
            {
                pointer = SkillConfigFE8NVer2SkillForm.FindSkillFE8NVer2IconPointers();
            }
            else
            {
                return;
            }

            if (pointer == null)
            {
                return;
            }

            InputFormRef ifr = Init(null);

            for (int i = 0; i < pointer.Length; i++)
            {
                ifr.ReInitPointer(pointer[i]);
                if (ifr.DataCount <= 0)
                {
                    continue;
                }
                UseValsID.AppendTextID(list, FELint.Type.SKILL_CONFIG, ifr, new uint[] { 2 });
            }
        }
Beispiel #12
0
        public SkillAssignmentUnitFE8NForm()
        {
            InitializeComponent();

            PatchUtil.skill_system_enum skill = PatchUtil.SearchSkillSystem();
            Dictionary <uint, string>   SCROLL1;
            Dictionary <uint, string>   SCROLL2;
            Dictionary <uint, string>   MASTERY;

            uint[] pointers;
            if (skill == PatchUtil.skill_system_enum.yugudora)
            {//ユグドラパッチ 初期FE8Nカスタム
                pointers = SkillConfigFE8NSkillForm.FindSkillFE8NVer1IconPointers();
                SCROLL1  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_yugudora_skill1_scroll_"));
                SCROLL2  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_yugudora_skill2_scroll_"));
                MASTERY  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill3_mastery_"));
            }
            else if (skill == PatchUtil.skill_system_enum.midori)
            {//緑パッチ
                pointers = SkillConfigFE8NSkillForm.FindSkillFE8NVer1IconPointers();
                SCROLL1  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_midori_skill1_scroll_"));
                SCROLL2  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_midori_skill2_scroll_"));
                MASTERY  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_midori_skill3_mastery_"));
            }
            else if (skill == PatchUtil.skill_system_enum.FE8N_ver2)
            {//FE8N ver2
                pointers = SkillConfigFE8NVer2SkillForm.FindSkillFE8NVer2IconPointers();
                SCROLL1  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill1_scroll_"));
                SCROLL2  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill2_scroll_"));
                MASTERY  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill3_mastery_"));
            }
            else
            {//FE8N
                pointers = SkillConfigFE8NSkillForm.FindSkillFE8NVer1IconPointers();
                SCROLL1  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill1_scroll_"));
                SCROLL2  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill2_scroll_"));
                MASTERY  = U.LoadDicResource(U.ConfigDataFilename("skill_extends_FE8N_skill3_mastery_"));
            }

            string find;
            string text;
            uint   icon;

            find             = U.at(SCROLL1, 0x01);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_01.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_0.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x02);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_02.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_1.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x04);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_04.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_2.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x08);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_08.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_3.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x10);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_10.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_4.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x20);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_20.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_5.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x40);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_40.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_6.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL1, 0x80);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_40_BIT_80.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE0_7.Image   = DrawSkillIcon(skill, icon);


            find             = U.at(SCROLL2, 0x01);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_01.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_0.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x02);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_02.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_1.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x04);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_04.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_2.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x08);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_08.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_3.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x10);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_10.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_4.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x20);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_20.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_5.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x40);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_40.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_6.Image   = DrawSkillIcon(skill, icon);

            find             = U.at(SCROLL2, 0x80);
            icon             = FindSkillIconAndText(skill, pointers, find, out text);
            L_41_BIT_80.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE1_7.Image   = DrawSkillIcon(skill, icon);

            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_0.Text = R._("なし");


            find = U.at(MASTERY, 0x01);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_1.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_1.Image    = DrawSkillIcon(skill, icon);

            find = U.at(MASTERY, 0x02);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_2.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_2.Image    = DrawSkillIcon(skill, icon);

            find = U.at(MASTERY, 0x03);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_3.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_3.Image    = DrawSkillIcon(skill, icon);

            find = U.at(MASTERY, 0x04);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_4.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_4.Image    = DrawSkillIcon(skill, icon);

            find = U.at(MASTERY, 0x05);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_5.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_5.Image    = DrawSkillIcon(skill, icon);

            find = U.at(MASTERY, 0x06);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_6.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_6.Image    = DrawSkillIcon(skill, icon);

            find = U.at(MASTERY, 0x07);
            icon = FindSkillIconAndText(skill, pointers, find, out text);
            L_39_RADIO_7.Text = U.nl2none(icon == U.NOT_FOUND ? find : text);
            IMAGE2_7.Image    = DrawSkillIcon(skill, icon);

            InputFormRef.TabControlHideTabOption(SkillTab);

            List <Control> controls = InputFormRef.GetAllControls(this);

            InputFormRef.MakeLinkEvent("", controls);
        }