Esempio n. 1
0
        public EditPreparedList(ROMInterface romIF, bool resolve, Data objPlaces, Data data)
        {
            this.romIF = romIF;

            loadData(resolve, data, objPlaces);

            InitializeComponent();

            setText(additionalIDs, additional);
            setText(resolvedIDs, resolved);
            setText(newResolvedIDs, newResolved);
            information.Text = infoText.Replace("\n", "\r\n");
            resolvedIDs.Enabled = resolve;
        }
Esempio n. 2
0
File: ROM.cs Progetto: anta-/YSedit
        //追加データはヘッダ付の可変長データで、
        //アドレス順にソートされたDouble-linked list。
        //追加する時はO(データ数)でexSpace中のどこか適当な場所に追加する
        //ヘッダ:
        // 0   RomAddr prev。最初の場合は0
        // 4   RomAddr next。最後の場合はexSpaceAddr + exSpaceSize
        // 8   uint    このデータのサイズ(このヘッダー部分は含めない)
        /// <summary>
        /// pathのファイルを開く
        /// </summary>
        /// <exception cref="System.IO.IOException">ファイルが開けなかった時</exception>
        /// <exception cref="UnauthorizedAccessException">ファイルが開けなかった時</exception>
        /// <exception cref="ROM.UnknownROMException">ROMのバージョンが不明・ROMファイルでない場合</exception>
        /// <exception cref="DataException">ROMファイル中におかしなデータがあった場合</exception>
        public ROM(string path)
        {
            bool proceeded = false;
            try
            {
                romFile = File.Open(
                    path,
                    FileMode.Open,
                    FileAccess.ReadWrite,
                    FileShare.Read);

                romIF = new ROMInterface(checkValidROM());

                proceeded = true;
            }
            finally
            {
                if (!proceeded)
                    Dispose();
            }
        }
Esempio n. 3
0
File: Map.cs Progetto: anta-/YSedit
        /// <summary>
        /// Mapに関してデータを読み、初期化をする
        /// </summary>
        /// <exception cref="ArgumentException">mapNumberが大きすぎた場合</exception>
        /// <exception cref="DataException">mapNumberが無効なマップを指している、またはROMが壊れている場合</exception>
        public Map(ROM rom_, byte mapNumber, MainView mainView)
        {
            rom = rom_;
            romIF = rom.romIF;
            this.mainView = mainView;
            mainView.onChanged += () => { rom.newChange(true); };

            if (romIF.mapNumbers <= mapNumber)
                throw new ArgumentException("map number is too big");

            currentMapNumber = mapNumber;
            ustruct5 = rom.readData(romIF.ustruct5Table + mapNumber * romIF.ustruct5_size, romIF.ustruct5_size);
            var iUStruct3 = ustruct5.getDataID(romIF.uttruct5_iUStruct3);
            ustruct3 = rom.readData(iUStruct3, romIF.ustruct3_size);
            var iiPlaceVector = ustruct3.getDataID(romIF.ustruct3_iiPlaceVector);
            var iPlaceVector = rom.readData(iiPlaceVector, 4).getDataID(0);
            placeVector = rom.readData(iPlaceVector, romIF.placeVector_size);
            var iObjPlaces = placeVector.getDataID(romIF.placeVector_iObjPlaces);
            var objPlaces = rom.readData(iObjPlaces,
                placeVector.getHalf(romIF.placeVector_numberOfObjPlaces) * romIF.objPlaceC_size);

            mainView.setObjPlaces(objPlaces);   //objPlacesはmainViewが持つ
            mainView.size = new System.Drawing.Size(0x2000, 0x200); //TODO: データから読み込む
        }