private void MagicListExpandsButton_Click(object sender, EventArgs e)
        {
            DialogResult dr = R.ShowYesNo("魔法テーブルを拡張してもよろしいですか?");

            if (dr != System.Windows.Forms.DialogResult.Yes)
            {
                return;
            }

            Undo.UndoData undodata = Program.Undo.NewUndoData(this, "expands");

            uint csaSpellTablePointer = ImageUtilMagic.GetCSASpellTablePointer();

            if (csaSpellTablePointer == U.NOT_FOUND)
            {
                R.ShowStopError("CSASpellTable Not Found.");
                return;
            }

            //魔法エフェクトテーブルの拡張.
            uint spellDataCount = ImageUtilMagicFEditor.SpellDataCount();
            uint datasize       = spellDataCount;

            InputFormRef.ExpandsArea(this, 254, Program.ROM.RomInfo.magic_effect_pointer, datasize, FEBuilderGBA.InputFormRef.ExpandsFillOption.NO, 4, undodata);

            //CSA追加魔法テーブルの拡張
            if (U.isSafetyOffset(csaSpellTablePointer) && InputFormRef != null)
            {//CSA追加魔法テーブルが正しくセットされている場合
                datasize = InputFormRef.DataCount;
            }
            else
            {//セットされていなければ初期値は0
                datasize = 0;
            }

            uint csaSpellTable = InputFormRef.ExpandsArea(this, 254, csaSpellTablePointer, datasize, FEBuilderGBA.InputFormRef.ExpandsFillOption.NO, 5 * 4, undodata);

            Program.Undo.Push(undodata);

            //開きなおす.
            InputFormRef.ReOpenForm <ImageMagicCSACreatorForm>();
        }
        public static uint ExpandsArea(Form form, string typename, uint newdatacount, Undo.UndoData undodata)
        {
            uint pointer;

            if (typename == "UNITMENU")
            {
                pointer = MenuDefinitionForm.GetUnitMenuPointer();
            }
            else if (typename == "GAMEMENU")
            {
                pointer = MenuDefinitionForm.GetGameMenuPointer();
            }
            else if (typename == "DEBUG1")
            {
                pointer = MenuDefinitionForm.GetDebug1MenuPointer();
            }
            else if (typename == "ITEMMENU")
            {
                pointer = MenuDefinitionForm.GetItemMenuPointer();
            }
            else
            {
                return(U.NOT_FOUND);
            }

            uint newaddr;

            {
                InputFormRef.ExpandsEventArgs eearg = new InputFormRef.ExpandsEventArgs();

                InputFormRef ifr = Init(null);
                ifr.ReInitPointer(pointer);

                eearg.OldBaseAddress = ifr.BaseAddress;
                eearg.OldDataCount   = ifr.DataCount;
                eearg.BlockSize      = ifr.BlockSize;

                newaddr = ifr.ExpandsArea(form, newdatacount, undodata, pointer);
                if (newaddr == U.NOT_FOUND)
                {
                    return(U.NOT_FOUND);
                }

                eearg.NewBaseAddress = newaddr;
                eearg.NewDataCount   = newdatacount;
                AddressListExpandsEventInner(form, eearg, undodata);
            }
            InputFormRef.ClearCacheDataCount();
            return(newaddr);
        }
Beispiel #3
0
        public static uint ExpandsArea(Form form, uint current_count, uint newdatacount, Undo.UndoData undodata)
        {
            InputFormRef InputFormRef = Init(null, (int)current_count);
            uint         newaddr      = InputFormRef.ExpandsArea(form, newdatacount, undodata, Program.ROM.RomInfo.ccbranch_pointer);

            if (newaddr == U.NOT_FOUND)
            {
                return(U.NOT_FOUND);
            }
            //見習いのCC分岐には1箇所だけ、CCテーブル+1された箇所が存在する.
            uint ccbranch2 = Program.ROM.RomInfo.ccbranch2_pointer;

            Program.ROM.write_p32(ccbranch2, newaddr + 1, undodata);

            return(newaddr);
        }
Beispiel #4
0
        public static uint ExpandsArea(Form form, uint newdatacount, Undo.UndoData undodata)
        {
            InputFormRef InputFormRef = Init(null);

            uint newdatasize = newdatacount;
            uint olddatasize = InputFormRef.DataCount;

            uint newaddr = InputFormRef.ExpandsArea(form
                                                    , newdatasize
                                                    , Program.ROM.RomInfo.icon_pointer()
                                                    , olddatasize
                                                    , FEBuilderGBA.InputFormRef.ExpandsFillOption.FIRST
                                                    , InputFormRef.BlockSize
                                                    , undodata);

            if (newaddr == U.NOT_FOUND)
            {
                return(U.NOT_FOUND);
            }

            return(newaddr);
        }
Beispiel #5
0
        public static uint ExpandsArea(Form form, uint current_count, uint newdatacount, Undo.UndoData undodata)
        {
            InputFormRef InputFormRef = Init(null);

            return(InputFormRef.ExpandsArea(form, newdatacount, undodata, Program.ROM.RomInfo.unit_move_icon_pointer()));
        }
        public static uint ExpandsArea(Form form, uint current_count, uint newdatacount, Undo.UndoData undodata)
        {
            InputFormRef InputFormRef = N_Init(null, (int)current_count);

            return(InputFormRef.ExpandsArea(form, newdatacount, undodata, Program.ROM.RomInfo.class_alphaname_pointer));
        }