コード例 #1
0
ファイル: ASMFormatHelper.cs プロジェクト: xjamxx/FFTPatcher
        // Find whether or not this is a valid command (and has an entry in our encoding list). If it
        // does, return it; otherwise, return null.
        public EncodingFormat FindFormatByCommand(string command)
        {
            EncodingFormat format = null;

            EncodeDict.TryGetValue(command, out format);
            return(format);
        }
コード例 #2
0
ファイル: ASMFormatHelper.cs プロジェクト: xjamxx/FFTPatcher
        // For reading encoding files
        public void ReadEncodeList(string filepath)
        {
            StreamReader reader = new StreamReader(filepath);

            try
            {
                while (reader.Peek() != -1)
                {
                    string line = reader.ReadLine();

                    if (!string.IsNullOrEmpty(line))
                    {
                        line = ASMStringHelper.RemoveSpaces(line);
                        string[] lineArray = line.Split(':');

                        EncodingFormat encoding = new EncodingFormat();
                        encoding.Command = lineArray[0].ToLower();
                        encoding.Binary  = lineArray[1];
                        encoding.Syntax  = lineArray[2];

                        if (lineArray.Length > 3)
                        {
                            encoding.ImmediateLengths = ASMStringHelper.CreateIntList(lineArray[3]);
                        }
                        if (lineArray.Length > 4)
                        {
                            encoding.VFPURegisterTypes = ASMStringHelper.CreateIntList(lineArray[4]);
                        }
                        if (lineArray.Length > 5)
                        {
                            encoding.PartialRegisterSizes = ASMStringHelper.CreateIntList(lineArray[5]);
                        }
                        if (lineArray.Length > 6)
                        {
                            encoding.ShiftedImmediateAmounts = ASMStringHelper.CreateIntList(lineArray[6]);
                        }
                        if (lineArray.Length > 7)
                        {
                            encoding.VFPUPrefixType = int.Parse(lineArray[7]);
                        }

                        encoding = FindFormatDetails(encoding);

                        string expFormat = ExpandFormat(encoding);
                        encoding.ExpandedFormat = expFormat;

                        encoding = FindFormatBaseValues(encoding);
                        encoding = FindParameterIndexes(encoding);

                        EncodeList.Add(encoding);
                        EncodeDict.Add(encoding.Command, encoding);

                        AddToDecodeLists(expFormat, encoding);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                reader.Close();
            }
        }