Index: /VisualSwapcodes/Unit1.dfm
===================================================================
--- /VisualSwapcodes/Unit1.dfm	(revision 98)
+++ /VisualSwapcodes/Unit1.dfm	(revision 99)
@@ -41,8 +41,4 @@
     TreeOptions.SelectionOptions = [toFullRowSelect]
     OnGetText = vstGetText
-    ExplicitLeft = 139
-    ExplicitTop = 3
-    ExplicitWidth = 535
-    ExplicitHeight = 500
     Columns = <
       item
@@ -86,7 +82,4 @@
     TabOrder = 1
     OnClick = listClick
-    ExplicitLeft = 3
-    ExplicitTop = 3
-    ExplicitHeight = 500
   end
 end
Index: /VisualSwapcodes/Unit1.pas
===================================================================
--- /VisualSwapcodes/Unit1.pas	(revision 98)
+++ /VisualSwapcodes/Unit1.pas	(revision 99)
@@ -104,25 +104,5 @@
           current_list.AddElem('SWAPC_2BYTE', 2)
         else if datas = 'SWAPC_1BYTE' then
-          current_list.AddElem('SWAPC_1BYTE', 1)
-        else if datas = 'SWAPC_FIXARR_S' then
-        begin
-          ReadLn(descfile, line);
-          if Pos('h', line) > 0 then
-            datas := MidStr(line, Pos('db ', line) + 3, Pos('h', line) - (Pos('db ', line) + 3) )
-          else
-            datas := MidStr(line, Pos('db ', line) + 3, Length(Line) - (Pos('db ', line) + 3) );
-          i := current_list.AddArray('SWAPC_FIXARR_S', StrToInt('$'+datas));
-          current_list := TSwapList(current_list.Child(i));
-        end else if datas = 'SWAPC_VARARR_S' then
-        begin
-          ReadLn(descfile, line);
-          i := current_list.AddArray('SWAPC_VARARR_S', 0);
-          current_list := TSwapList(current_list.Child(i));
-        end else if datas = 'SWAPC_TMPL_PTR' then
-        begin
-          ReadLn(descfile, line);
-          datas := MidStr(line, Pos('dd ', line) + 4, 4);
-          current_list.AddElem('SWAPC_TMPL_PTR: ' + datas, 4);
-        end;
+          current_list.AddElem('SWAPC_1BYTE', 1);
       end;
       if Pos('gTemplate_', line) = 1 then
@@ -170,5 +150,13 @@
       begin
         ReadLn(descfile, line);
-        i := current_list.AddArray('SWAPC_VARARR_S', 0);
+        datas := MidStr(line, Pos(' d', line) + 4, Length(line) - (Pos(' d', line) + 3));
+        if datas = 'SWAPC_8BYTE' then
+          i := current_list.AddArray('SWAPC_VARARR_S', 8)
+        else if datas = 'SWAPC_4BYTE' then
+          i := current_list.AddArray('SWAPC_VARARR_S', 4)
+        else if datas = 'SWAPC_2BYTE' then
+          i := current_list.AddArray('SWAPC_VARARR_S', 2)
+        else if datas = 'SWAPC_1BYTE' then
+          i := current_list.AddArray('SWAPC_VARARR_S', 1);
         current_list := TSwapList(current_list.Child(i));
       end else if datas = 'SWAPC_VARARR_E' then
@@ -223,5 +211,8 @@
 function TSwapList.CloseArray: TSwapList;
 begin
-  Self.size := Self.size * Self.count;
+  if Self.name = 'SWAPC_FIXARR_S' then
+    Self.size := Self.size * Self.count
+  else
+    Self.size := Self.count;
   Result := Self.parent;
 end;
@@ -239,7 +230,6 @@
   node:    PVirtualNode;
   name:    String;
-  address: Integer;
-
-  procedure AddChilds(parent: PVirtualNode; SwapList: TSwapList);
+
+  procedure AddChilds(parent: PVirtualNode; SwapList: TSwapList; address: Integer);
   var
     i: Integer;
@@ -252,9 +242,8 @@
         data.Size := SwapList.Child(i).size;
         data.Address := address;
-        if parent = nil then
-          address := address + data.Size;
+        address := address + data.Size;
         node := AddVSTEntry(VST, parent, data);
         if SwapList.Child(i) is TSwapList then
-          AddChilds(node, TSwapList(SwapList.Child(i)));
+          AddChilds(node, TSwapList(SwapList.Child(i)), address);
       end;
     end;
@@ -264,6 +253,4 @@
   VST.Clear;
   VST.BeginUpdate;
-
-  address := 0;
 
   name := list.Items.Strings[list.ItemIndex];
@@ -274,5 +261,5 @@
   if i < Length(Types) then
   begin
-    AddChilds(nil, Types[i].SwapList);
+    AddChilds(nil, Types[i].SwapList, 0);
   end;
 
