Пример #1
0
        static InputFormRef.ADDR_AND_LENGTH get_cstring_data_pos_callback(uint addr)
        {
            int    length = 0;
            string str    = Program.ROM.getString(addr, out length);

            InputFormRef.ADDR_AND_LENGTH aal = new InputFormRef.ADDR_AND_LENGTH();
            aal.addr   = addr;
            aal.length = (uint)U.Padding2((uint)length + 1); //nullを入れる.
            return(aal);
        }
Пример #2
0
        //道データの長さを求める.
        static InputFormRef.ADDR_AND_LENGTH get_path_data_length_callback(uint addr)
        {
            addr = U.toOffset(addr);

            uint length = WorldMapPathForm.CalcPathDataLength(addr);

            InputFormRef.ADDR_AND_LENGTH aal = new InputFormRef.ADDR_AND_LENGTH();
            aal.addr   = addr;
            aal.length = length;
            return(aal);
        }
Пример #3
0
        private InputFormRef.ADDR_AND_LENGTH get_data_pos_callback(uint addr)
        {
            uint length = CalcLength(addr);

            //範囲外探索 00 00 00 00 が続く限り検索してみる.
            uint more = MoveToFreeSapceForm.SearchOutOfRange(addr + length);

            //8バイトアライメント
            more = (more / 8) * 8;

            InputFormRef.ADDR_AND_LENGTH aal = new InputFormRef.ADDR_AND_LENGTH();
            aal.addr   = addr;
            aal.length = length + more;
            return(aal);
        }
Пример #4
0
        private InputFormRef.ADDR_AND_LENGTH get_data_pos_callback(uint addr)
        {
            uint length = 0;

            if (U.isSafetyOffset(addr + 2))
            {
                uint w = Program.ROM.u8(addr + 0);
                uint h = Program.ROM.u8(addr + 1);
                length = 4 + (w * h);
            }

            InputFormRef.ADDR_AND_LENGTH aal = new InputFormRef.ADDR_AND_LENGTH();
            aal.addr   = addr;
            aal.length = length;
            return(aal);
        }