Example #1
0
        public List <PropHeader> ReadHeadersTillNone()
        {
            List <PropHeader> ret = new List <PropHeader>();
            bool run = true;

            while (run)
            {
                PropHeader p = new PropHeader();
                if (readerpos > memory.Length)
                {
                    //nothing else to interpret.
                    run = false;
                    continue;
                }
                p.name = BitConverter.ToInt32(memory, readerpos);
                if (!pcc.isName(p.name))
                {
                    run = false;
                }
                else
                {
                    if (pcc.getNameEntry(p.name) != "None")
                    {
                        p.type = BitConverter.ToInt32(memory, readerpos + 8);
                        if (!pcc.isName(p.type) || getType(pcc.getNameEntry(p.type)) == -1)
                        {
                            run = false;
                        }
                        else
                        {
                            p.size   = BitConverter.ToInt32(memory, readerpos + 16);
                            p.index  = BitConverter.ToInt32(memory, readerpos + 20);
                            p.offset = readerpos;
                            ret.Add(p);
                            readerpos += p.size + 24;
                            if (getType(pcc.getNameEntry(p.type)) == BOOL_PROPERTY)//Boolbyte
                            {
                                readerpos++;
                            }
                            if (getType(pcc.getNameEntry(p.type)) == STRUCT_PROPERTY || //StructName
                                getType(pcc.getNameEntry(p.type)) == BYTE_PROPERTY)     //byteprop
                            {
                                readerpos += 8;
                            }
                        }
                    }
                    else
                    {
                        p.type   = p.name;
                        p.size   = 0;
                        p.index  = 0;
                        p.offset = readerpos;
                        ret.Add(p);
                        readerpos += 8;
                        run        = false;
                    }
                }
            }
            return(ret);
        }
Example #2
0
 public TreeNode GenerateNode(PropHeader p)
 {
     string s = p.offset.ToString("X4") + " : ";
     s += "Name: \"" + pcc.GetName(p.name) + "\" ";
     s += "Type: \"" + pcc.GetName(p.type) + "\" ";
     s += "Size: " + p.size.ToString() + " Value: ";
     switch (isType(pcc.GetName(p.type)))
     {
         case 1:
             int idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += idx.ToString();
             break;
         case 3:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += idx.ToString() + " ";
             if (idx == 0)
                 s += "None";
             else
                 s += pcc.GetClass(idx);
             break;
         case 8:
             int count = BitConverter.ToInt32(memory, p.offset + 24);
             s += "\"";
             for (int i = 0; i < count - 1; i++)
                 s += (char)memory[p.offset + 28 + i];
             s += "\"";
             break;
         case 5:
             byte val = memory[p.offset + 24];
             s += (val == 1).ToString();
             break;
         case 2:
             float f = BitConverter.ToSingle(memory, p.offset + 24);
             s += f.ToString() + "f";
             break;
         case 0:
         case 4:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += "\"" + pcc.GetName(idx) + "\"";
             break;
         case 6:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += "\"" + pcc.GetName(idx) + "\"";
             break;
         case 7:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += idx.ToString() + "(count)";
             break;
         case 9:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += "#" + idx.ToString();
             break;
     }
     TreeNode ret = new TreeNode(s);
     ret.Name = p.offset.ToString();
     return ret;
 }
Example #3
0
        public List <PropHeader> ReadHeadersTillNone()
        {
            List <PropHeader> ret = new List <PropHeader>();
            bool run = true;

            while (run)
            {
                PropHeader p = new PropHeader();
                p.name = BitConverter.ToInt32(memory, readerpos);
                if (!pcc.isName(p.name))
                {
                    run = false;
                }
                else
                {
                    if (pcc.getNameEntry(p.name) != "None")
                    {
                        p.type = BitConverter.ToInt32(memory, readerpos + 8);
                        if (!pcc.isName(p.type) || getType(pcc.getNameEntry(p.type)) == -1 || BitConverter.ToInt32(memory, readerpos + 4) != 0)
                        {
                            run = false;
                        }
                        else
                        {
                            p.size   = BitConverter.ToInt32(memory, readerpos + 16);
                            p.index  = BitConverter.ToInt32(memory, readerpos + 20);
                            p.offset = readerpos;
                            ret.Add(p);
                            readerpos += p.size + 24;
                            if (getType(pcc.getNameEntry(p.type)) == BOOL_PROPERTY)
                            {
                                readerpos += 4;
                            }
                            if (getType(pcc.getNameEntry(p.type)) == STRUCT_PROPERTY)
                            {
                                readerpos += 8;
                            }
                        }
                    }
                    else
                    {
                        p.type   = p.name;
                        p.size   = 0;
                        p.index  = 0;
                        p.offset = readerpos;
                        ret.Add(p);
                        readerpos += 8;
                        run        = false;
                    }
                }
            }
            return(ret);
        }
Example #4
0
        public List <PropHeader> ReadHeadersTillNone()
        {
            List <PropHeader> ret = new List <PropHeader>();
            bool run = true;

            while (run)
            {
                PropHeader p = new PropHeader();
                p.name = BitConverter.ToInt32(memory, readerpos);
                if (!pcc.isName(p.name))
                {
                    run = false;
                }
                else
                {
                    if (pcc.GetName(p.name) != "None")
                    {
                        p.type = BitConverter.ToInt32(memory, readerpos + 8);
                        if (!pcc.isName(p.type) || isType(pcc.GetName(p.type)) == -1)
                        {
                            run = false;
                        }
                        else
                        {
                            p.size   = BitConverter.ToInt32(memory, readerpos + 16);
                            p.index  = BitConverter.ToInt32(memory, readerpos + 20);
                            p.offset = readerpos;
                            ret.Add(p);
                            readerpos += p.size + 24;
                            if (isType(pcc.GetName(p.type)) == 5)//Boolbyte
                            {
                                readerpos += 4;
                            }
                            if (isType(pcc.GetName(p.type)) == 0)//StructName
                            {
                                readerpos += 8;
                            }
                        }
                    }
                    else
                    {
                        p.type   = p.name;
                        p.size   = 0;
                        p.index  = 0;
                        p.offset = readerpos;
                        ret.Add(p);
                        readerpos += 8;
                        run        = false;
                    }
                }
            }
            return(ret);
        }
Example #5
0
 public List<PropHeader> ReadHeadersTillNone()
 {
     List<PropHeader> ret = new List<PropHeader>();
     bool run = true;
     while (run)
     {
         PropHeader p = new PropHeader();
         p.name = BitConverter.ToInt32(memory, readerpos);
         if (!pcc.isName(p.name))
             run = false;
         else
         {
             if (pcc.GetName(p.name) != "None")
             {
                 p.type = BitConverter.ToInt32(memory, readerpos + 8);
                 if (!pcc.isName(p.type) || isType(pcc.GetName(p.type)) == -1)
                     run = false;
                 else
                 {
                     p.size = BitConverter.ToInt32(memory, readerpos + 16);
                     p.index = BitConverter.ToInt32(memory, readerpos + 20);
                     p.offset = readerpos;
                     ret.Add(p);
                     readerpos += p.size + 24;
                     if (isType(pcc.GetName(p.type)) == 5)//Boolbyte
                         readerpos+=4;
                     if (isType(pcc.GetName(p.type)) == 0)//StructName
                         readerpos += 8;
                 }
             }
             else
             {
                 p.type = p.name;
                 p.size = 0;
                 p.index = 0;
                 p.offset = readerpos;
                 ret.Add(p);
                 readerpos += 8;
                 run = false;
             }
         }
     }
     return ret;
 }
Example #6
0
        public TreeNode GenerateNode(PropHeader p)
        {
            string s = p.offset.ToString("X4") + " : ";

            s += "Name: \"" + pcc.getNameEntry(p.name) + "\" ";
            s += "Type: \"" + pcc.getNameEntry(p.type) + "\" ";
            s += "Size: " + p.size.ToString() + " Value: ";
            int propertyType = getType(pcc.getNameEntry(p.type));
            int idx;

            switch (propertyType)
            {
            case INT_PROPERTY:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString();
                break;

            case OBJECT_PROPERTY:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + " (" + pcc.getObjectName(idx) + ")";
                break;

            case STRING_PROPERTY:
                int count = BitConverter.ToInt32(memory, p.offset + 24);
                s += "\"";
                for (int i = 0; i < count - 1; i++)
                {
                    s += (char)memory[p.offset + 28 + i];
                }
                s += "\"";
                break;

            case BOOL_PROPERTY:
                byte val = memory[p.offset + 24];
                s += (val == 1).ToString();
                break;

            case FLOAT_PROPERTY:
                float f = BitConverter.ToSingle(memory, p.offset + 24);
                s += f.ToString() + "f";
                break;

            case STRUCT_PROPERTY:
            case NAME_PROPERTY:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.getNameEntry(idx) + "\"";
                break;

            case BYTE_PROPERTY:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.getNameEntry(idx) + "\"";
                break;

            case ARRAY_PROPERTY:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + "(count)";
                break;

            case STRINGREF_PROPERTY:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "#" + idx.ToString() + ": ";
                s  += tlkset == null ? "(.tlk not loaded)" : tlkset.findDataById(idx);
                break;
            }
            TreeNode ret = new TreeNode(s);

            ret.Tag  = propertyType;
            ret.Name = p.offset.ToString();
            return(ret);
        }
Example #7
0
 public TreeNode GenerateNode(PropHeader p)
 {
     string s = p.offset.ToString("X4") + " : ";
     s += "Name: \"" + pcc.getNameEntry(p.name) + "\" ";
     s += "Type: \"" + pcc.getNameEntry(p.type) + "\" ";
     s += "Size: " + p.size.ToString() + " Value: ";
     switch (isType(pcc.getNameEntry(p.type)))
     {
         case 1:
         case 3:
             int idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += idx.ToString();
             break;
         case 8:
             int count = BitConverter.ToInt32(memory, p.offset + 24);
             s += "\"";
             for (int i = 0; i < count * -1 - 1; i++)
                 s += (char)memory[p.offset + 28 + i * 2];
             s += "\"";
             break;
         case 5:
             byte val = memory[p.offset + 24];
             s += (val == 1).ToString();
             break;
         case 2:
             float f = BitConverter.ToSingle(memory, p.offset + 24);
             s += f.ToString() + "f";
             break;
         case 0:
         case 4:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += "\"" + pcc.getNameEntry(idx) + "\"";
             break;
         case 6:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             int idx2 = BitConverter.ToInt32(memory, p.offset + 32);
             s += "\"" + pcc.getNameEntry(idx) + "\",\"" + pcc.getNameEntry(idx2) + "\"";
             break;
         case 7:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += idx.ToString() + "(count)";
             break;
         case 9:
             idx = BitConverter.ToInt32(memory, p.offset + 24);
             s += "#" + idx.ToString() + ": ";
             s += talkFile.findDataById(idx);
             break;
     }
     TreeNode ret = new TreeNode(s);
     ret.Name = p.offset.ToString();
     return ret;
 }
Example #8
0
        public List <PropHeader> ReadHeadersTillNone()
        {
            List <PropHeader> ret = new List <PropHeader>();
            bool run = true;

            while (run)
            {
                PropHeader p = new PropHeader();
                if (readerpos > memory.Length || readerpos < 0)
                {
                    //nothing else to interpret.
                    run = false;
                    continue;
                }
                p.name = BitConverter.ToInt32(memory, readerpos);

                if (readerpos == 4 && pcc.isName(p.name) && pcc.getNameEntry(p.name) == className)
                {
                    //It's a primitive component header
                    //Debug.WriteLine("Primitive Header " + pcc.Names[p.name]);
                    readerpos += 12;
                    continue;
                }

                if (!pcc.isName(p.name))
                {
                    run = false;
                }
                else
                {
                    if (pcc.getNameEntry(p.name) != "None")
                    {
                        p.type = BitConverter.ToInt32(memory, readerpos + 8);
                        if (!pcc.isName(p.type) || getType(pcc.getNameEntry(p.type)) == nodeType.Unknown)
                        {
                            run = false;
                        }
                        else
                        {
                            p.size   = BitConverter.ToInt32(memory, readerpos + 16);
                            p.index  = BitConverter.ToInt32(memory, readerpos + 20);
                            p.offset = readerpos;
                            ret.Add(p);
                            readerpos += p.size + 24;
                            if (getType(pcc.getNameEntry(p.type)) == nodeType.BoolProperty)//Boolbyte
                            {
                                readerpos++;
                            }
                            if (getType(pcc.getNameEntry(p.type)) == nodeType.StructProperty || //StructName
                                getType(pcc.getNameEntry(p.type)) == nodeType.ByteProperty)     //byteprop
                            {
                                readerpos += 8;
                            }
                        }
                    }
                    else
                    {
                        p.type   = p.name;
                        p.size   = 0;
                        p.index  = 0;
                        p.offset = readerpos;
                        ret.Add(p);
                        readerpos += 8;
                        run        = false;
                    }
                }
            }
            return(ret);
        }
Example #9
0
        public TreeNode GenerateNode(PropHeader p)
        {
            string s = p.offset.ToString("X4") + ": ";

            s += "Name: \"" + pcc.getNameEntry(p.name) + "\" ";
            s += "Type: \"" + pcc.getNameEntry(p.type) + "\" ";
            s += "Size: " + p.size.ToString() + " Value: ";
            nodeType propertyType = getType(pcc.getNameEntry(p.type));
            int      idx;
            byte     val;

            switch (propertyType)
            {
            case nodeType.IntProperty:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString();
                break;

            case nodeType.ObjectProperty:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + " (" + pcc.getObjectName(idx) + ")";
                break;

            case nodeType.StrProperty:
                int count = BitConverter.ToInt32(memory, p.offset + 24);
                s += "\"";
                for (int i = 0; i < count * -1 - 1; i++)
                {
                    s += (char)memory[p.offset + 28 + i * 2];
                }
                s += "\"";
                break;

            case nodeType.BoolProperty:
                val = memory[p.offset + 24];
                s  += (val == 1).ToString();
                break;

            case nodeType.FloatProperty:
                float f = BitConverter.ToSingle(memory, p.offset + 24);
                s += f.ToString("0.0######");
                break;

            case nodeType.NameProperty:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.getNameEntry(idx) + "\"_" + BitConverter.ToInt32(memory, p.offset + 28);
                break;

            case nodeType.StructProperty:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.getNameEntry(idx) + "\"";
                break;

            case nodeType.ByteProperty:
                if (p.size == 1)
                {
                    val = memory[p.offset + 32];
                    s  += val.ToString();
                }
                else
                {
                    idx = BitConverter.ToInt32(memory, p.offset + 24);
                    int idx2 = BitConverter.ToInt32(memory, p.offset + 32);
                    s += "\"" + pcc.getNameEntry(idx) + "\",\"" + pcc.getNameEntry(idx2) + "\"";
                }
                break;

            case nodeType.ArrayProperty:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + "(count)";
                break;

            case nodeType.StringRefProperty:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "#" + idx.ToString() + ": ";
                s  += TalkFiles.tlkList.Count == 0 ? "(.tlk not loaded)" : TalkFiles.findDataById(idx);
                break;
            }
            TreeNode ret = new TreeNode(s);

            ret.Tag  = propertyType;
            ret.Name = p.offset.ToString();
            return(ret);
        }
Example #10
0
        public TreeNode GenerateNode(PropHeader p)
        {
            string s = p.offset.ToString("X4") + " : ";

            s += "Name: \"" + pcc.GetName(p.name) + "\" ";
            s += "Type: \"" + pcc.GetName(p.type) + "\" ";
            s += "Size: " + p.size.ToString() + " Value: ";
            switch (isType(pcc.GetName(p.type)))
            {
            case 1:
            case 3:
                int idx = BitConverter.ToInt32(memory, p.offset + 24);
                s += idx.ToString();
                break;

            case 8:
                int count = BitConverter.ToInt32(memory, p.offset + 24);
                s += "\"";
                for (int i = 0; i < count - 1; i++)
                {
                    s += (char)memory[p.offset + 28 + i * 1];
                }
                s += "\"";
                break;

            case 5:
                byte val = memory[p.offset + 24];
                s += (val == 1).ToString();
                break;

            case 2:
                float f = BitConverter.ToSingle(memory, p.offset + 24);
                s += f.ToString() + "f";
                break;

            case 0:
            case 4:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.GetName(idx) + "\"";
                break;

            case 6:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.GetName(idx) + "\"";
                break;

            case 7:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + "(count)";
                break;

            case 9:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "#" + idx.ToString();
                break;
            }
            TreeNode ret = new TreeNode(s);

            ret.Name = p.offset.ToString();
            return(ret);
        }
Example #11
0
 public List<PropHeader> ReadHeadersTillNone()
 {
     List<PropHeader> ret = new List<PropHeader>();
     bool run = true;
     while (run)
     {
         PropHeader p = new PropHeader();
         p.name = BitConverter.ToInt32(PropMemory, PropReadPos);
         int test = BitConverter.ToInt32(PropMemory, PropReadPos + 4);     
         if (!pcc.isName(p.name) || test != 0)
             run = false;
         else
         {
             string namename = pcc.GetName(p.name);
             if (pcc.GetName(p.name) != "None")
             {
                 p.type = BitConverter.ToInt32(PropMemory, PropReadPos + 8);
                 int test2 = BitConverter.ToInt32(PropMemory, PropReadPos + 12);
                 int test3 = BitConverter.ToInt32(PropMemory, PropReadPos + 20);
                 if (!pcc.isName(p.type) || isType(pcc.GetName(p.type)) == -1 || test2 != 0 || test3 != 0)
                     run = false;
                 else
                 {
                     p.size = BitConverter.ToInt32(PropMemory, PropReadPos + 16);
                     p.index = BitConverter.ToInt32(PropMemory, PropReadPos + 20);
                     p.offset = PropReadPos;
                     ret.Add(p);
                     PropReadPos += p.size + 24;
                     if (isType(pcc.GetName(p.type)) == 5)//Boolbyte
                         PropReadPos++;
                     if (isType(pcc.GetName(p.type)) == 0 ||//StructName
                         isType(pcc.GetName(p.type)) == 6)//byteprop
                         PropReadPos += 8;
                 }
             }
             else
             {
                 p.type = p.name;
                 p.size = 0;
                 p.index = 0;
                 p.offset = PropReadPos;
                 ret.Add(p);
                 PropReadPos += 8;
                 run = false;
             }
         }
     }
     return ret;
 }
Example #12
0
        public TreeNode GenerateNode(PropHeader p)
        {
            string s = p.offset.ToString("X4") + " : ";

            s += "Name: \"" + pcc.getNameEntry(p.name) + "\" ";
            s += "Type: \"" + pcc.getNameEntry(p.type) + "\" ";
            s += "Size: " + p.size.ToString() + " Value: ";
            int idx = -1;

            switch (isType(pcc.getNameEntry(p.type)))
            {
            case 3:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + " ";
                if (idx == 0)
                {
                    s += "None";
                }
                else
                {
                    s += pcc.GetClass(idx);
                }
                break;

            case 1:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString();
                break;

            case 8:
                int count = BitConverter.ToInt32(memory, p.offset + 24);
                s += "\"";

                if (GameVersion == 1)
                {
                    for (int i = 0; i < count - 1; i++)
                    {
                        s += (char)memory[p.offset + 28 + i];
                    }
                }
                else
                {
                    for (int i = 0; i < count * -1 - 1; i++)
                    {
                        s += (char)memory[p.offset + 28 + i * 2];
                    }
                }
                s += "\"";
                break;

            case 5:
                byte val = memory[p.offset + 24];
                s += (val == 1).ToString();
                break;

            case 2:
                float f = BitConverter.ToSingle(memory, p.offset + 24);
                s += f.ToString() + "f";
                break;

            case 0:
            case 4:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += "\"" + pcc.getNameEntry(idx) + "\"";
                break;

            case 6:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                if (GameVersion == 3)
                {
                    int idx2 = BitConverter.ToInt32(memory, p.offset + 32);
                    s += "\"" + pcc.getNameEntry(idx) + "\",\"" + pcc.getNameEntry(idx2) + "\"";
                }
                else if (GameVersion == 2)
                {
                    s += "\"" + pcc.GetName(idx) + "\"";
                }
                break;

            case 7:
                idx = BitConverter.ToInt32(memory, p.offset + 24);
                s  += idx.ToString() + "(count)";
                break;

            case 9:
                idx = BitConverter.ToInt32(memory, p.offset + 24);

                if (GameVersion == 3)
                {
                    s += "#" + idx.ToString() + ": ";
                    s += talkFile.findDataById(idx);
                }
                else if (GameVersion == 2)
                {
                    s += "#" + idx.ToString();
                }
                break;
            }
            TreeNode ret = new TreeNode(s);

            ret.Name = p.offset.ToString();
            return(ret);
        }
Example #13
0
 public TreeNode GenerateNode(PropHeader p)
 {
     string s = p.offset.ToString("X4") + " : ";
     s += "Name: \"" + pcc.GetName(p.name) + "\" ";
     s += "Type: \"" + pcc.GetName(p.type) + "\" ";
     s += "Size: " + p.size + " Value: ";
     switch (isType(pcc.GetName(p.type)))
     {
         case 1:
         case 3:
             int idx = BitConverter.ToInt32(PropMemory, p.offset + 24);
             s += idx.ToString();
             break;
         case 8:
             int count = BitConverter.ToInt32(PropMemory, p.offset + 24);
             s += "\"";
             for (int i = 0; i < count * -1 - 1; i++)
                 s += (char)PropMemory[p.offset + 28 + i * 2];
             s += "\"";
             break;
         case 5:
             byte val = PropMemory[p.offset + 24];
             s += (val == 1).ToString();
             break;
         case 2:
             float f = BitConverter.ToSingle(PropMemory, p.offset + 24);
             s += f + "f";
             break;
         case 0:
         case 4:
             idx = BitConverter.ToInt32(PropMemory, p.offset + 24);
             s += "\"" + pcc.GetName(idx) + "\"";
             break;
         case 6:
             if (p.size == 8)
             {
                 idx = BitConverter.ToInt32(PropMemory, p.offset + 24);
                 int idx2 = BitConverter.ToInt32(PropMemory, p.offset + 32);
                 s += "\"" + pcc.GetName(idx) + "\",\"" + pcc.GetName(idx2) + "\""; 
             }
             else
             {
                 s += PropMemory[p.offset + 32].ToString();
             }
             break;
         case 7:
             idx = BitConverter.ToInt32(PropMemory, p.offset + 24);
             s += idx + "(count)";
             break;
         case 9:
             idx = BitConverter.ToInt32(PropMemory, p.offset + 24);
             s += "#" + idx ;
             break;
     }
     TreeNode ret = new TreeNode(s);
     ret.Name = p.offset.ToString();
     return ret;
 }