Esempio n. 1
0
        //全データの取得
        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);
                }
            }
        }
Esempio n. 4
0
        //全データの取得
        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);
            }
        }