Index: oup/current/DataAccess/Access_OUP_ADB.pas
===================================================================
--- oup/current/DataAccess/Access_OUP_ADB.pas	(revision 111)
+++ oup/current/DataAccess/Access_OUP_ADB.pas	(revision 112)
@@ -262,4 +262,10 @@
       extension := fields.Strings[0];
     end;
+    if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then
+    begin
+      id := fields.Strings[2];
+      name := fields.Strings[1];
+      extension := fields.Strings[0];
+    end;
   end;
 
@@ -275,8 +281,5 @@
       if (NoEmptyFiles = False) or ((Fdat_files[i].FileType and $02) = 0) then
       begin
-        if AppSettings.FilenumbersAsHex then
-          id := IntToHex(Fdat_files[i].ID, 4)
-        else
-          id := FormatNumber(Fdat_files[i].ID, 5, '0');
+        id := FormatNumber(Fdat_files[i].ID, 5, '0');
         name := Fdat_files[i].Name;
         extension := Fdat_files[i].Extension;
@@ -286,4 +289,5 @@
           ST_NameAsc, ST_NameDesc: list.Add(name + ';' + id + ';' + extension);
           ST_ExtAsc, ST_ExtDesc:   list.Add(extension + ';' + id + ';' + name);
+          ST_ExtNameAsc, ST_ExtNameDesc: list.Add(name + ';' + extension + ';' + id);
         end;
       end;
@@ -294,5 +298,5 @@
   begin
     fields := TStringList.Create;
-    if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc] then
+    if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc, ST_ExtNameAsc] then
       for i := 0 to list.Count - 1 do
       begin
Index: oup/current/DataAccess/Access_OniArchive.pas
===================================================================
--- oup/current/DataAccess/Access_OniArchive.pas	(revision 111)
+++ oup/current/DataAccess/Access_OniArchive.pas	(revision 112)
@@ -60,27 +60,4 @@
 
 constructor TAccess_OniArchive.Create(DatFilename: String; ConnectionID: Integer; var Msg: TStatusMessages);
-type
-  THeader = packed record
-    Ident:      array[0..$13] of Byte;
-    Files:      Integer;
-    NamedFiles: Integer;
-    Extensions: Integer;
-    DataAddr:   Integer;
-    DataSize:   Integer;
-    NamesAddr:  Integer;
-    NamesSize:  Integer;
-    Ident2:     array[0..$F] of Byte;
-  end;
-  TFilesMap = array of packed record
-    Extension: array[0..$3] of Char;
-    DataAddr:  Integer;
-    NameAddr:  Integer;
-    FileSize:  Integer;
-    FileType:  LongWord;
-  end;
-  TNamedFilesMap = array of packed record
-    FileNumber: Integer;
-    blubb:      Integer;
-  end;
 const
   header_ident1_pc: array[0..$13] of Byte =
@@ -250,4 +227,10 @@
       extension := fields.Strings[0];
     end;
+    if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then
+    begin
+      id := fields.Strings[2];
+      name := fields.Strings[1];
+      extension := fields.Strings[0];
+    end;
   end;
 
@@ -263,8 +246,5 @@
       if (NoEmptyFiles = False) or ((Fdat_files[i].FileType and $02) = 0) then
       begin
-        if AppSettings.FilenumbersAsHex then
-          id := IntToHex(Fdat_files[i].ID, 4)
-        else
-          id := FormatNumber(Fdat_files[i].ID, 5, '0');
+        id := FormatNumber(Fdat_files[i].ID, 5, '0');
         name := Fdat_files[i].Name;
         extension := Fdat_files[i].Extension;
@@ -274,4 +254,5 @@
           ST_NameAsc, ST_NameDesc: list.Add(name + ';' + id + ';' + extension);
           ST_ExtAsc, ST_ExtDesc:   list.Add(extension + ';' + id + ';' + name);
+          ST_ExtNameAsc, ST_ExtNameDesc: list.Add(name + ';' + extension + ';' + id);
         end;
       end;
@@ -282,5 +263,5 @@
   begin
     fields := TStringList.Create;
-    if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc] then
+    if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc, ST_ExtNameAsc] then
       for i := 0 to list.Count - 1 do
       begin
Index: oup/current/DataAccess/ConnectionManager.pas
===================================================================
--- oup/current/DataAccess/ConnectionManager.pas	(revision 111)
+++ oup/current/DataAccess/ConnectionManager.pas	(revision 112)
@@ -35,4 +35,5 @@
     function CloseConnection(ID: Integer; var Msg: TStatusMessages): Boolean; overload;
     function CloseConnection(FileName: String; var Msg: TStatusMessages): Boolean; overload;
+    function FileOpened(FileName: String): Integer;
   published
   end;
@@ -261,4 +262,19 @@
 
 
+function TConnectionManager.FileOpened(FileName: String): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  if Length(FConnections) > 0 then
+    for i := 0 to High(FConnections) do
+      if FConnections[i].FileName = FileName then
+      begin
+        Result := FConnections[i].ConnectionID;
+        Exit;
+      end;
+end;
+
+
 initialization
   ConManager := TConnectionManager.Create;
Index: oup/current/Global/DatStructureLoader.pas
===================================================================
--- oup/current/Global/DatStructureLoader.pas	(revision 111)
+++ oup/current/Global/DatStructureLoader.pas	(revision 112)
@@ -13,8 +13,9 @@
       // 10    : bitset
       // 11    : raw-addr
-      // 12    : dat-file-ID
+      // 12    : untyped-dat-file-ID-link
       // 13..16: Signed Integer[1..4]
       // 17    : level-ID
       // 100..300: dat-file-name[0..200]
+      // 501..614: typed-dat-file-ID-link
       // 1000..9999: Unused data[0-8999]
       // 10000+: string[0+]
Index: oup/current/Global/Data.pas
===================================================================
--- oup/current/Global/Data.pas	(revision 111)
+++ oup/current/Global/Data.pas	(revision 112)
@@ -22,4 +22,123 @@
 }
 
+const
+	FileTypes: array[0..113] of TFileType = (
+		(Extension: 'AISA';  StructID: 501; Description: 'AI Character Setup Array';  IdentWin:($E9,$6B,$4C,$22,$2A,$00,$00,$00);  IdentMac:($E9,$6B,$4C,$22,$2A,$00,$00,$00)),
+		(Extension: 'AITR';  StructID: 502; Description: 'AI script trigger array';  IdentWin:($55,$EA,$1A,$00,$00,$00,$00,$00);  IdentMac:($55,$EA,$1A,$00,$00,$00,$00,$00)),
+		(Extension: 'AIWA';  StructID: 503; Description: 'AI Imported Waypoint Array';  IdentWin:($03,$7F,$10,$00,$00,$00,$00,$00);  IdentMac:($03,$7F,$10,$00,$00,$00,$00,$00)),
+		(Extension: 'AKAA';  StructID: 504; Description: 'Adjacency Array';  IdentWin:($77,$DE,$11,$00,$00,$00,$00,$00);  IdentMac:($77,$DE,$11,$00,$00,$00,$00,$00)),
+		(Extension: 'ABNA';  StructID: 505; Description: 'BSP tree node Array';  IdentWin:($A0,$6D,$12,$00,$00,$00,$00,$00);  IdentMac:($A0,$6D,$12,$00,$00,$00,$00,$00)),
+		(Extension: 'AKVA';  StructID: 506; Description: 'BNV Node Array';  IdentWin:($E0,$05,$DF,$00,$00,$00,$00,$00);  IdentMac:($E0,$05,$DF,$00,$00,$00,$00,$00)),
+		(Extension: 'AKBA';  StructID: 507; Description: 'Side Array';  IdentWin:($84,$28,$3A,$00,$00,$00,$00,$00);  IdentMac:($84,$28,$3A,$00,$00,$00,$00,$00)),
+		(Extension: 'AKBP';  StructID: 508; Description: 'BSP node Array';  IdentWin:($49,$F4,$0C,$00,$00,$00,$00,$00);  IdentMac:($49,$F4,$0C,$00,$00,$00,$00,$00)),
+		(Extension: 'AKDA';  StructID: 509; Description: 'Door Frame Array';  IdentWin:($64,$54,$2E,$00,$00,$00,$00,$00);  IdentMac:($64,$54,$2E,$00,$00,$00,$00,$00)),
+		(Extension: 'AKEV';  StructID: 510; Description: 'Akira Environment';  IdentWin:($75,$DE,$14,$30,$88,$00,$00,$00);  IdentMac:($75,$DE,$14,$30,$88,$00,$00,$00)),
+		(Extension: 'AGQC';  StructID: 511; Description: 'Gunk Quad Collision Array';  IdentWin:($91,$CB,$1C,$00,$00,$00,$00,$00);  IdentMac:($91,$CB,$1C,$00,$00,$00,$00,$00)),
+		(Extension: 'AGDB';  StructID: 512; Description: 'Gunk Quad Debug Array';  IdentWin:($17,$2E,$07,$00,$00,$00,$00,$00);  IdentMac:($17,$2E,$07,$00,$00,$00,$00,$00)),
+		(Extension: 'AGQG';  StructID: 513; Description: 'Gunk Quad General Array';  IdentWin:($D2,$03,$1C,$00,$00,$00,$00,$00);  IdentMac:($D2,$03,$1C,$00,$00,$00,$00,$00)),
+		(Extension: 'AGQM';  StructID: 514; Description: 'Gunk Quad Material';  IdentWin:($A6,$4A,$04,$00,$00,$00,$00,$00);  IdentMac:($A6,$4A,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'AGQR';  StructID: 515; Description: 'Gunk Quad Render Array';  IdentWin:($3B,$3A,$08,$00,$00,$00,$00,$00);  IdentMac:($3B,$3A,$08,$00,$00,$00,$00,$00)),
+		(Extension: 'AKOT';  StructID: 516; Description: 'Oct tree';  IdentWin:($08,$DA,$B8,$E7,$11,$00,$00,$00);  IdentMac:($08,$DA,$B8,$E7,$11,$00,$00,$00)),
+		(Extension: 'OTIT';  StructID: 517; Description: 'Oct tree interior node Array';  IdentWin:($D2,$51,$0A,$00,$00,$00,$00,$00);  IdentMac:($D2,$51,$0A,$00,$00,$00,$00,$00)),
+		(Extension: 'OTLF';  StructID: 518; Description: 'Oct tree leaf node Array';  IdentWin:($0B,$AC,$1E,$00,$00,$00,$00,$00);  IdentMac:($0B,$AC,$1E,$00,$00,$00,$00,$00)),
+		(Extension: 'QTNA';  StructID: 519; Description: 'Quad tree node Array';  IdentWin:($CC,$6E,$06,$00,$00,$00,$00,$00);  IdentMac:($CC,$6E,$06,$00,$00,$00,$00,$00)),
+		(Extension: 'BINA';  StructID: 520; Description: 'Binary Data';  IdentWin:($41,$DB,$00,$00,$00,$00,$00,$00);  IdentMac:($11,$5E,$01,$00,$00,$00,$00,$00)),
+		(Extension: 'ENVP';  StructID: 521; Description: 'Env Particle Array';  IdentWin:($C3,$C1,$67,$00,$00,$00,$00,$00);  IdentMac:($C3,$C1,$67,$00,$00,$00,$00,$00)),
+		(Extension: 'FXLR';  StructID: 522; Description: 'FX Laser effect';  IdentWin:($A9,$F8,$83,$95,$06,$00,$00,$00);  IdentMac:($A9,$F8,$83,$95,$06,$00,$00,$00)),
+		(Extension: '3CLA';  StructID: 523; Description: 'RGB Color Array';  IdentWin:($BE,$E6,$04,$00,$00,$00,$00,$00);  IdentMac:($BE,$E6,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'EDIA';  StructID: 524; Description: 'Edge Index Array';  IdentWin:($F7,$B6,$07,$00,$00,$00,$00,$00);  IdentMac:($F7,$B6,$07,$00,$00,$00,$00,$00)),
+		(Extension: 'M3GM';  StructID: 525; Description: 'Geometry';  IdentWin:($36,$E4,$78,$A0,$27,$00,$00,$00);  IdentMac:($36,$E4,$78,$A0,$27,$00,$00,$00)),
+		(Extension: 'GMAN';  StructID: 526; Description: 'Geometry Animation';  IdentWin:($A5,$F5,$72,$A6,$09,$00,$00,$00);  IdentMac:($A5,$F5,$72,$A6,$09,$00,$00,$00)),
+		(Extension: 'M3GA';  StructID: 527; Description: 'GeometryArray';  IdentWin:($B2,$20,$6B,$20,$05,$00,$00,$00);  IdentMac:($B2,$20,$6B,$20,$05,$00,$00,$00)),
+		(Extension: 'PLEA';  StructID: 528; Description: 'Plane Equation Array';  IdentWin:($38,$BC,$07,$00,$00,$00,$00,$00);  IdentMac:($38,$BC,$07,$00,$00,$00,$00,$00)),
+		(Extension: 'PNTA';  StructID: 529; Description: '3D Point Array';  IdentWin:($6C,$67,$37,$00,$00,$00,$00,$00);  IdentMac:($6C,$67,$37,$00,$00,$00,$00,$00)),
+		(Extension: 'QUDA';  StructID: 530; Description: 'Quad array';  IdentWin:($6A,$5E,$03,$00,$00,$00,$00,$00);  IdentMac:($6A,$5E,$03,$00,$00,$00,$00,$00)),
+		(Extension: 'TXCA';  StructID: 531; Description: 'Texture Coordinate Array';  IdentWin:($1A,$14,$09,$00,$00,$00,$00,$00);  IdentMac:($1A,$14,$09,$00,$00,$00,$00,$00)),
+		(Extension: 'TXMP';  StructID: 532; Description: 'Texture Map';  IdentWin:($81,$75,$18,$91,$08,$00,$00,$00);  IdentMac:($5F,$EB,$1E,$91,$08,$00,$00,$00)),
+		(Extension: 'TXAN';  StructID: 533; Description: 'Texture Map Animation';  IdentWin:($87,$43,$13,$8B,$0A,$00,$00,$00);  IdentMac:($87,$43,$13,$8B,$0A,$00,$00,$00)),
+		(Extension: 'TXMA';  StructID: 534; Description: 'Texture map array';  IdentWin:($90,$7F,$DE,$99,$05,$00,$00,$00);  IdentMac:($90,$7F,$DE,$99,$05,$00,$00,$00)),
+		(Extension: 'TXMB';  StructID: 535; Description: 'Texture Map Big';  IdentWin:($52,$6A,$16,$8B,$0A,$00,$00,$00);  IdentMac:($52,$6A,$16,$8B,$0A,$00,$00,$00)),
+		(Extension: 'TXPC';  StructID: 536; Description: 'Texture Procedure Data';  IdentWin:($7E,$A7,$0B,$00,$00,$00,$00,$00);  IdentMac:($7E,$A7,$0B,$00,$00,$00,$00,$00)),
+		(Extension: 'M3TA';  StructID: 537; Description: 'Triangle array';  IdentWin:($C1,$F7,$02,$00,$00,$00,$00,$00);  IdentMac:($C1,$F7,$02,$00,$00,$00,$00,$00)),
+		(Extension: 'VCRA';  StructID: 538; Description: '3D Vector Array';  IdentWin:($39,$47,$05,$00,$00,$00,$00,$00);  IdentMac:($39,$47,$05,$00,$00,$00,$00,$00)),
+		(Extension: 'Impt';  StructID: 539; Description: 'Impact';  IdentWin:($16,$4F,$04,$00,$00,$00,$00,$00);  IdentMac:($16,$4F,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'Mtrl';  StructID: 540; Description: 'Material';  IdentWin:($0D,$8E,$02,$00,$00,$00,$00,$00);  IdentMac:($0D,$8E,$02,$00,$00,$00,$00,$00)),
+		(Extension: 'NMSA';  StructID: 541; Description: 'Network Spawn Point Array';  IdentWin:($9C,$09,$0C,$00,$00,$00,$00,$00);  IdentMac:($9C,$09,$0C,$00,$00,$00,$00,$00)),
+		(Extension: 'CONS';  StructID: 542; Description: 'Console';  IdentWin:($DD,$0B,$8B,$DA,$13,$00,$00,$00);  IdentMac:($DD,$0B,$8B,$DA,$13,$00,$00,$00)),
+		(Extension: 'DOOR';  StructID: 543; Description: 'Door';  IdentWin:($67,$FD,$72,$31,$06,$00,$00,$00);  IdentMac:($67,$FD,$72,$31,$06,$00,$00,$00)),
+		(Extension: 'OFGA';  StructID: 544; Description: 'Object Furn Geom Array';  IdentWin:($62,$C3,$FA,$74,$13,$00,$00,$00);  IdentMac:($62,$C3,$FA,$74,$13,$00,$00,$00)),
+		(Extension: 'OBLS';  StructID: 545; Description: 'Object LS Data';  IdentWin:($3D,$70,$0B,$00,$00,$00,$00,$00);  IdentMac:($3D,$70,$0B,$00,$00,$00,$00,$00)),
+		(Extension: 'TRIG';  StructID: 546; Description: 'Trigger';  IdentWin:($2C,$CD,$D0,$DC,$21,$00,$00,$00);  IdentMac:($2C,$CD,$D0,$DC,$21,$00,$00,$00)),
+		(Extension: 'TRGE';  StructID: 547; Description: 'Trigger Emitter';  IdentWin:($3C,$B9,$A6,$71,$08,$00,$00,$00);  IdentMac:($3C,$B9,$A6,$71,$08,$00,$00,$00)),
+		(Extension: 'TURR';  StructID: 548; Description: 'Turret';  IdentWin:($BE,$05,$58,$C8,$49,$00,$00,$00);  IdentMac:($BE,$05,$58,$C8,$49,$00,$00,$00)),
+		(Extension: 'OBAN';  StructID: 549; Description: 'Object animation';  IdentWin:($24,$0C,$4E,$00,$00,$00,$00,$00);  IdentMac:($24,$0C,$4E,$00,$00,$00,$00,$00)),
+		(Extension: 'OBDC';  StructID: 550; Description: 'Door class array';  IdentWin:($0B,$CA,$9E,$BD,$07,$00,$00,$00);  IdentMac:($0B,$CA,$9E,$BD,$07,$00,$00,$00)),
+		(Extension: 'OBOA';  StructID: 551; Description: 'Starting Object Array';  IdentWin:($E1,$86,$89,$4F,$13,$00,$00,$00);  IdentMac:($E1,$86,$89,$4F,$13,$00,$00,$00)),
+		(Extension: 'CBPI';  StructID: 552; Description: 'Character Body Part Impacts';  IdentWin:($C2,$D6,$F9,$0B,$0C,$00,$00,$00);  IdentMac:($C2,$D6,$F9,$0B,$0C,$00,$00,$00)),
+		(Extension: 'CBPM';  StructID: 553; Description: 'Character Body Part Material';  IdentWin:($1F,$35,$A4,$6B,$02,$00,$00,$00);  IdentMac:($1F,$35,$A4,$6B,$02,$00,$00,$00)),
+		(Extension: 'ONCC';  StructID: 554; Description: 'Oni Character Class';  IdentWin:($EF,$59,$C7,$AA,$A5,$04,$00,$00);  IdentMac:($EF,$59,$C7,$AA,$A5,$04,$00,$00)),
+		(Extension: 'ONIA';  StructID: 555; Description: 'Oni Character Impact Array';  IdentWin:($9A,$2F,$2B,$00,$00,$00,$00,$00);  IdentMac:($9A,$2F,$2B,$00,$00,$00,$00,$00)),
+		(Extension: 'ONCP';  StructID: 556; Description: 'Oni Character Particle Array';  IdentWin:($21,$73,$2F,$00,$00,$00,$00,$00);  IdentMac:($21,$73,$2F,$00,$00,$00,$00,$00)),
+		(Extension: 'ONCV';  StructID: 557; Description: 'Oni Character Variant';  IdentWin:($F5,$99,$02,$00,$00,$00,$00,$00);  IdentMac:($F5,$99,$02,$00,$00,$00,$00,$00)),
+		(Extension: 'CRSA';  StructID: 558; Description: 'Corpse Array';  IdentWin:($CC,$D4,$43,$15,$0C,$00,$00,$00);  IdentMac:($CC,$D4,$43,$15,$0C,$00,$00,$00)),
+		(Extension: 'DPge';  StructID: 559; Description: 'Diary Page';  IdentWin:($6B,$68,$8A,$BA,$07,$00,$00,$00);  IdentMac:($6B,$68,$8A,$BA,$07,$00,$00,$00)),
+		(Extension: 'FILM';  StructID: 560; Description: 'Film';  IdentWin:($AD,$62,$1B,$33,$0B,$00,$00,$00);  IdentMac:($AD,$62,$1B,$33,$0B,$00,$00,$00)),
+		(Extension: 'ONFA';  StructID: 561; Description: 'Imported Flag Node Array';  IdentWin:($E7,$0C,$1B,$00,$00,$00,$00,$00);  IdentMac:($E7,$0C,$1B,$00,$00,$00,$00,$00)),
+		(Extension: 'ONGS';  StructID: 562; Description: 'Oni Game Settings';  IdentWin:($B6,$EB,$26,$02,$00,$00,$00,$00);  IdentMac:($B6,$EB,$26,$02,$00,$00,$00,$00)),
+		(Extension: 'HPge';  StructID: 563; Description: 'Help Page';  IdentWin:($3B,$71,$2F,$4B,$04,$00,$00,$00);  IdentMac:($3B,$71,$2F,$4B,$04,$00,$00,$00)),
+		(Extension: 'IGHH';  StructID: 564; Description: 'IGUI HUD Help';  IdentWin:($DE,$58,$8E,$E5,$08,$00,$00,$00);  IdentMac:($DE,$58,$8E,$E5,$08,$00,$00,$00)),
+		(Extension: 'IGPG';  StructID: 565; Description: 'IGUI Page';  IdentWin:($7D,$88,$67,$CE,$11,$00,$00,$00);  IdentMac:($7D,$88,$67,$CE,$11,$00,$00,$00)),
+		(Extension: 'IGPA';  StructID: 566; Description: 'IGUI Page Array';  IdentWin:($05,$09,$BE,$DD,$04,$00,$00,$00);  IdentMac:($05,$09,$BE,$DD,$04,$00,$00,$00)),
+		(Extension: 'IGSt';  StructID: 567; Description: 'IGUI String';  IdentWin:($25,$77,$A4,$A2,$02,$00,$00,$00);  IdentMac:($25,$77,$A4,$A2,$02,$00,$00,$00)),
+		(Extension: 'IGSA';  StructID: 568; Description: 'IGUI String Array';  IdentWin:($08,$A4,$BE,$DD,$04,$00,$00,$00);  IdentMac:($08,$A4,$BE,$DD,$04,$00,$00,$00)),
+		(Extension: 'IPge';  StructID: 569; Description: 'Item Page';  IdentWin:($BA,$69,$83,$93,$02,$00,$00,$00);  IdentMac:($BA,$69,$83,$93,$02,$00,$00,$00)),
+		(Extension: 'KeyI';  StructID: 570; Description: 'Key Icons';  IdentWin:($AD,$57,$47,$3F,$40,$00,$00,$00);  IdentMac:($AD,$57,$47,$3F,$40,$00,$00,$00)),
+		(Extension: 'ONLV';  StructID: 571; Description: 'Oni Game Level';  IdentWin:($A3,$2E,$9A,$B7,$7D,$00,$00,$00);  IdentMac:($A3,$2E,$9A,$B7,$7D,$00,$00,$00)),
+		(Extension: 'ONLD';  StructID: 572; Description: 'Oni Game Level Descriptor';  IdentWin:($A1,$12,$04,$00,$00,$00,$00,$00);  IdentMac:($A1,$12,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'ONMA';  StructID: 573; Description: 'Imported Marker Node Array';  IdentWin:($79,$47,$12,$00,$00,$00,$00,$00);  IdentMac:($79,$47,$12,$00,$00,$00,$00,$00)),
+		(Extension: 'ONOA';  StructID: 574; Description: 'Object Gunk Array';  IdentWin:($7C,$5C,$E7,$4B,$06,$00,$00,$00);  IdentMac:($7C,$5C,$E7,$4B,$06,$00,$00,$00)),
+		(Extension: 'OPge';  StructID: 575; Description: 'Objective Page';  IdentWin:($FB,$BB,$30,$4B,$04,$00,$00,$00);  IdentMac:($FB,$BB,$30,$4B,$04,$00,$00,$00)),
+		(Extension: 'ONSK';  StructID: 576; Description: 'Oni Sky class';  IdentWin:($67,$10,$26,$C2,$14,$00,$00,$00);  IdentMac:($67,$10,$26,$C2,$14,$00,$00,$00)),
+		(Extension: 'ONSA';  StructID: 577; Description: 'Imported Spawn Array';  IdentWin:($34,$46,$04,$00,$00,$00,$00,$00);  IdentMac:($34,$46,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'TxtC';  StructID: 578; Description: 'Text Console';  IdentWin:($27,$8B,$AC,$B7,$01,$00,$00,$00);  IdentMac:($27,$8B,$AC,$B7,$01,$00,$00,$00)),
+		(Extension: 'ONTA';  StructID: 579; Description: 'Trigger Array';  IdentWin:($C0,$FC,$A0,$00,$00,$00,$00,$00);  IdentMac:($C0,$FC,$A0,$00,$00,$00,$00,$00)),
+		(Extension: 'ONVL';  StructID: 580; Description: 'Oni Variant List';  IdentWin:($8A,$C5,$34,$44,$05,$00,$00,$00);  IdentMac:($8A,$C5,$34,$44,$05,$00,$00,$00)),
+		(Extension: 'WPge';  StructID: 581; Description: 'Weapon Page';  IdentWin:($B5,$89,$58,$6F,$04,$00,$00,$00);  IdentMac:($B5,$89,$58,$6F,$04,$00,$00,$00)),
+		(Extension: 'OSBD';  StructID: 582; Description: 'Oni Sound Binary Data';  IdentWin:($6C,$DB,$00,$00,$00,$00,$00,$00);  IdentMac:($3C,$5E,$01,$00,$00,$00,$00,$00)),
+		(Extension: 'PSpc';  StructID: 583; Description: 'Part Specification';  IdentWin:($48,$26,$08,$00,$00,$00,$00,$00);  IdentMac:($48,$26,$08,$00,$00,$00,$00,$00)),
+		(Extension: 'PSpL';  StructID: 584; Description: 'Part Specification List';  IdentWin:($05,$CC,$0C,$00,$00,$00,$00,$00);  IdentMac:($05,$CC,$0C,$00,$00,$00,$00,$00)),
+		(Extension: 'PSUI';  StructID: 585; Description: 'Part Specifications UI';  IdentWin:($FB,$96,$4E,$54,$CD,$03,$00,$00);  IdentMac:($FB,$96,$4E,$54,$CD,$03,$00,$00)),
+		(Extension: 'SNDD';  StructID: 586; Description: 'Sound Data';  IdentWin:($78,$05,$37,$00,$00,$00,$00,$00);  IdentMac:($EB,$11,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'SUBT';  StructID: 587; Description: 'Subtitle Array';  IdentWin:($68,$6C,$04,$00,$00,$00,$00,$00);  IdentMac:($68,$6C,$04,$00,$00,$00,$00,$00)),
+		(Extension: 'UUEA';  StructID: 588; Description: 'Error Binding Array';  IdentWin:($BC,$EE,$0A,$00,$00,$00,$00,$00);  IdentMac:($BC,$EE,$0A,$00,$00,$00,$00,$00)),
+		(Extension: 'TMFA';  StructID: 589; Description: 'Float Array';  IdentWin:($24,$53,$02,$00,$00,$00,$00,$00);  IdentMac:($24,$53,$02,$00,$00,$00,$00,$00)),
+		(Extension: 'IDXA';  StructID: 590; Description: 'Index Array';  IdentWin:($8F,$70,$02,$00,$00,$00,$00,$00);  IdentMac:($8F,$70,$02,$00,$00,$00,$00,$00)),
+		(Extension: 'TStr';  StructID: 591; Description: 'String';  IdentWin:($A0,$64,$00,$00,$00,$00,$00,$00);  IdentMac:($A0,$64,$00,$00,$00,$00,$00,$00)),
+		(Extension: 'StNA';  StructID: 592; Description: 'String Array';  IdentWin:($20,$B5,$8C,$99,$05,$00,$00,$00);  IdentMac:($20,$B5,$8C,$99,$05,$00,$00,$00)),
+		(Extension: 'TMRA';  StructID: 593; Description: 'Template Reference Array';  IdentWin:($21,$35,$07,$00,$00,$00,$00,$00);  IdentMac:($21,$35,$07,$00,$00,$00,$00,$00)),
+		(Extension: 'TRAS';  StructID: 594; Description: 'Totoro Aiming Screen';  IdentWin:($30,$A9,$21,$FA,$01,$00,$00,$00);  IdentMac:($30,$A9,$21,$FA,$01,$00,$00,$00)),
+		(Extension: 'TRAM';  StructID: 595; Description: 'Totoro Animation Sequence';  IdentWin:($18,$C9,$3C,$7E,$10,$00,$00,$00);  IdentMac:($18,$C9,$3C,$7E,$10,$00,$00,$00)),
+		(Extension: 'TRAC';  StructID: 596; Description: 'Animation Collection';  IdentWin:($2F,$FB,$E9,$26,$0F,$00,$00,$00);  IdentMac:($2F,$FB,$E9,$26,$0F,$00,$00,$00)),
+		(Extension: 'TRCM';  StructID: 597; Description: 'Totoro Quaternion Body';  IdentWin:($4E,$05,$DE,$92,$23,$00,$00,$00);  IdentMac:($4E,$05,$DE,$92,$23,$00,$00,$00)),
+		(Extension: 'TRBS';  StructID: 598; Description: 'Totoro Body Set';  IdentWin:($39,$42,$92,$A2,$02,$00,$00,$00);  IdentMac:($39,$42,$92,$A2,$02,$00,$00,$00)),
+		(Extension: 'TRMA';  StructID: 599; Description: 'Texture Map Array';  IdentWin:($57,$6D,$DE,$99,$05,$00,$00,$00);  IdentMac:($57,$6D,$DE,$99,$05,$00,$00,$00)),
+		(Extension: 'TRFT';  StructID: 600; Description: 'Totoro Facing Table';  IdentWin:($AF,$21,$02,$00,$00,$00,$00,$00);  IdentMac:($AF,$21,$02,$00,$00,$00,$00,$00)),
+		(Extension: 'TRGA';  StructID: 601; Description: 'Totoro Quaternion Body Geometry Array';  IdentWin:($F8,$20,$6B,$20,$05,$00,$00,$00);  IdentMac:($F8,$20,$6B,$20,$05,$00,$00,$00)),
+		(Extension: 'TRIA';  StructID: 602; Description: 'Totoro Quaternion Body Index Array';  IdentWin:($82,$C4,$0A,$00,$00,$00,$00,$00);  IdentMac:($82,$C4,$0A,$00,$00,$00,$00,$00)),
+		(Extension: 'TRSC';  StructID: 603; Description: 'Screen (aiming) Collection';  IdentWin:($17,$6B,$78,$99,$05,$00,$00,$00);  IdentMac:($17,$6B,$78,$99,$05,$00,$00,$00)),
+		(Extension: 'TRTA';  StructID: 604; Description: 'Totoro Quaternion Body Translation Array';  IdentWin:($E8,$59,$07,$00,$00,$00,$00,$00);  IdentMac:($E8,$59,$07,$00,$00,$00,$00,$00)),
+		(Extension: 'TSFT';  StructID: 605; Description: 'Font';  IdentWin:($EA,$DE,$91,$BA,$16,$00,$00,$00);  IdentMac:($EA,$DE,$91,$BA,$16,$00,$00,$00)),
+		(Extension: 'TSFF';  StructID: 606; Description: 'Font Family';  IdentWin:($8A,$48,$6C,$8A,$0A,$00,$00,$00);  IdentMac:($8A,$48,$6C,$8A,$0A,$00,$00,$00)),
+		(Extension: 'TSFL';  StructID: 607; Description: 'Font Language';  IdentWin:($29,$DE,$08,$00,$00,$00,$00,$00);  IdentMac:($29,$DE,$08,$00,$00,$00,$00,$00)),
+		(Extension: 'TSGA';  StructID: 608; Description: 'Glyph Array';  IdentWin:($98,$4E,$2A,$00,$00,$00,$00,$00);  IdentMac:($98,$4E,$2A,$00,$00,$00,$00,$00)),
+		(Extension: 'UVDL';  StructID: 609; Description: 'UV Data List';  IdentWin:($E5,$16,$0A,$00,$00,$00,$00,$00);  IdentMac:($E5,$16,$0A,$00,$00,$00,$00,$00)),
+		(Extension: 'WMCL';  StructID: 610; Description: 'WM Cursor List';  IdentWin:($76,$D0,$09,$00,$00,$00,$00,$00);  IdentMac:($76,$D0,$09,$00,$00,$00,$00,$00)),
+		(Extension: 'WMDD';  StructID: 611; Description: 'WM Dialog Data';  IdentWin:($C4,$F3,$1D,$00,$1C,$00,$00,$00);  IdentMac:($C4,$F3,$1D,$00,$1C,$00,$00,$00)),
+		(Extension: 'WMMB';  StructID: 612; Description: 'WM Menu Bar';  IdentWin:($37,$67,$0C,$D2,$06,$00,$00,$00);  IdentMac:($37,$67,$0C,$D2,$06,$00,$00,$00)),
+		(Extension: 'WMM_';  StructID: 613; Description: 'WM Menu';  IdentWin:($38,$1A,$0C,$00,$00,$00,$00,$00);  IdentMac:($38,$1A,$0C,$00,$00,$00,$00,$00)),
+		(Extension: 'ONWC';  StructID: 614; Description: 'Oni Weapon Class';  IdentWin:($B5,$EE,$E0,$A3,$93,$01,$00,$00);  IdentMac:($B5,$EE,$E0,$A3,$93,$01,$00,$00))
+	);
+
+
 implementation
 
Index: oup/current/Global/TypeDefs.pas
===================================================================
--- oup/current/Global/TypeDefs.pas	(revision 111)
+++ oup/current/Global/TypeDefs.pas	(revision 112)
@@ -23,6 +23,38 @@
   ); 
 
+  THeader = packed record
+    Ident:      array[0..$13] of Byte;
+    Files:      Integer;
+    NamedFiles: Integer;
+    Extensions: Integer;
+    DataAddr:   Integer;
+    DataSize:   Integer;
+    NamesAddr:  Integer;
+    NamesSize:  Integer;
+    Ident2:     array[0..$F] of Byte;
+  end;
+  TFilesMap = array of packed record
+    Extension: array[0..$3] of Char;
+    DataAddr:  Integer;
+    NameAddr:  Integer;
+    FileSize:  Integer;
+    FileType:  LongWord;
+  end;
+  TNamedFilesMap = array of packed record
+    FileNumber: Integer;
+    blubb:      Integer;
+  end;
+
+	TTypeIdent = array[0..7] of Byte;
+	TFileType = record
+		Extension:   String[4];
+		StructID:    Integer;
+    Description: String;
+		IdentWin:    TTypeIdent;
+    IdentMac:    TTypeIdent;
+	end;
+
   TExtensionsMap = array of packed record
-      Ident:       array[0..$7] of Byte;
+      Ident:       TTypeIdent;
       Extension:   array[0..$3] of Char;
       ExtCount:    Integer;
@@ -54,5 +86,7 @@
       ST_NameDesc,
       ST_ExtAsc,
-      ST_ExtDesc
+      ST_ExtDesc,
+      ST_ExtNameAsc,
+      ST_ExtNameDesc
   );
 
@@ -67,5 +101,4 @@
       DatPath:        String[250];
       ExtractPath:    String[250];
-      FilenumbersAsHex: Boolean;
       CharSet:        TFontCharSet;
       HideUnusedData: Boolean;
@@ -90,5 +123,5 @@
       ByID: array of TLinkByID;
   end;
-
+ 
 {
   TLevelInfo = record
Index: oup/current/Helper/LevelDB.pas
===================================================================
--- oup/current/Helper/LevelDB.pas	(revision 111)
+++ oup/current/Helper/LevelDB.pas	(revision 112)
@@ -1,3 +1,3 @@
-unit Helper_LevelDB;
+unit LevelDB;
 
 interface
@@ -16,6 +16,6 @@
     procedure btn_abortokClick(Sender: TObject);
   private
-    procedure HandleFile(ext: String; fileid: Integer; dir_dat2db: Boolean);
-    procedure stop_convert;
+    procedure HandleFile(Ext: String; FileID: Integer);
+    procedure StopConvert;
   public
     procedure CreateDatabase(Source, Target: String);
@@ -31,67 +31,72 @@
 {$R *.dfm}
 
-uses ABSMain, ABSDecUtil, Main, Functions, Data, OniImgClass, DataStructures, ConnectionManager;
+uses ABSMain, ABSDecUtil, Main,
+    ConnectionManager, TypeDefs, DataAccess, OniImgClass;
 
 type
-  THandler = procedure(fileid: LongWord; dir_dat2db: Boolean);
-
-  TConvertHandlers = record
+  THandler = procedure(FileID: Integer);
+  TConvertHandler = record
     Ext:     String[4];
-    needed:  Boolean;
     Handler: THandler;
   end;
 
 var
-  ConvertHandlers: array of TConvertHandlers;
-  loaded_filename: String;
-  converting: Boolean = False;
-  abort:     Boolean = False;
-  DataBase:  TABSDatabase;
-  Query:     TABSQuery;
-  MimeCoder: TStringFormat_MIME64;
-
-var
-  DatHeader:   THeader;
-  FilesHeader: TFilesMap;
+  ConvertHandlers: array of TConvertHandler;
+//  loaded_filename: String;
+  Converting:  Boolean = False;
+  Abort:       Boolean = False;
+
+
+function GetOpenMsg(msg: TStatusMessages): String;
+begin
+  case msg of
+    SM_AlreadyOpened:    Result := 'File already opened.';
+    SM_FileNotFound:     Result := 'File not found.';
+    SM_UnknownExtension: Result := 'Unknown extension.';
+    SM_IncompatibleFile: Result := 'Incompatible file format.';
+    SM_UnknownError:     Result := 'Unknown error.';
+  end;
+end;
+
+
+procedure TForm_LevelDB.CreateLevel(Source, Target: String);
+var
+  DatHeader:        THeader;
+  FilesHeader:      TFilesMap;
   NamedFilesHeader: TNamedFilesMap;
   ExtensionsHeader: TExtensionsMap;
-  Stream_Body, Stream_Names: TMemoryStream;
+
+  Stream_Body, Stream_Names:          TMemoryStream;
   Stream_Dat, Stream_Raw, Stream_Sep: TFileStream;
-  OniDataConnection: TOniData;
-
-
-
-
-procedure TForm_LevelDB.CreateLevel(Source, target: String);
-var
-  files: LongWord;
-
-  i, j:     LongWord;
-  temps, temps2: String;
-  Data, rawdata: Tdata;
-  absolutebegintime, begintime: Double;
-  step:     Byte;
-  rawlist:  TRawList;
-  extlist:  TExtensionsMap;
-  fileinfo: TFileInfo;
-  datlinks: TDatLinks;
-  OniImage: TOniImage;
-  levelid:  LongWord;
-  timeformat: TFormatSettings;
-
-  conIndex: Integer;
-  connection: TOniData;
+
+//  FileCount: Integer;
+//  temps, temps2: String;
+//  Data, rawdata: Tdata;
+  BeginTime, FileTime: Double;
+  Step:     Integer;
+//  rawlist:  TRawDataList;
+//  extlist:  TExtensionsMap;
+//  fileinfo: TFileInfo;
+//  datlinks: TDatLinks;
+  OniImage:   TOniImage;
+  LevelID:    Integer;
+  TimeFormat: TFormatSettings;
+
+  ConID:      Integer;
+  Connection: TDataAccess;
+  ConRepMsg:  TStatusMessages;
+
+  Strings:    TStrings;
+  i, j:       Integer;
 const
-  steps: Byte = 3;
-
-
-
-
-  procedure DoStep(stepname: String);
-  begin
-    Inc(step);
-    if stepname <> 'FIN' then
+  Steps: Byte = 3;
+
+
+  procedure DoStep(StepName: String);
+  begin
+    Inc(Step);
+    if StepName <> 'FIN' then
       group_progress.Caption :=
-        'Creating Dat (Step ' + IntToStr(step) + '/' + IntToStr(steps) + ': ' + stepname + ')'
+        'Creating Dat (Step ' + IntToStr(Step) + '/' + IntToStr(Steps) + ': ' + StepName + ')'
     else
       group_progress.Caption := 'Creating Dat (FINISHED)';
@@ -104,49 +109,79 @@
   //
 
-  timeformat.ShortTimeFormat := 'hh:nn:ss';
-  timeformat.LongTimeFormat := 'hh:nn:ss';
-  timeformat.TimeSeparator := ':';
-
-  connection := ConnectionExists(target);
-  if connection <> nil then
-  begin
-    ShowMessage('Destination-file is opened, close it in order to proceed conversion?');
+  TimeFormat.ShortTimeFormat := 'hh:nn:ss';
+  TimeFormat.LongTimeFormat  := 'hh:nn:ss';
+  TimeFormat.TimeSeparator   := ':';
+
+  ConID := ConManager.OpenConnection(Source, ConRepMsg);
+  if not (ConRepMsg in [SM_OK, SM_AlreadyOpened]) then
+  begin
+    ShowMessage('Source-file couldn''t be opened! Aborting' + CrLf + GetOpenMsg(ConRepMsg));
     Exit;
-  end;
-
-  connection := ConnectionExists(source);
-  if connection <> nil then
-  begin
-    ShowMessage('Source-file is opened, close it in order to proceed conversion?');
-    Exit;
-  end;
-
-
-  if CreateDataConnection(Source, ODB_ADB) = nil then
-  begin
-    ShowMessage('Could not connect to .oldb-file');
-    Exit;
-  end;
-  levelid  := OniDataConnection.LevelInfo.LevelNumber;
-  levelid  := (levelid * 2) * 256 * 256 * 256 + $01;
+  end else
+    Connection := ConManager.Connection[ConID];
+
+  ConID := ConManager.FileOpened(Target);
+  if ConID >= 0 then
+  begin
+    if MessageBox(Self.Handle, PChar('Destination-file is opened, close it in ' +
+          'order to proceed conversion?'), PChar('Destination-file opened'),
+          MB_YESNO + MB_ICONQUESTION) = ID_YES then
+    begin
+      if Form_Main.CheckConnectionCloseable(ConID) then
+        if not ConManager.CloseConnection(ConID, ConRepMsg) then
+        begin
+          ShowMessage('Couldn''t close destination-file. Aborting');
+          Exit;
+        end;
+    end else begin
+      ShowMessage('Aborting');
+      Exit;
+    end;
+  end;
+
+  if FileExists(Target) then
+  begin
+    if MessageBox(Self.Handle, PChar('Destination-file exists. ' +
+          'Overwrite it?'), PChar('Destination-file exists'),
+          MB_YESNO + MB_ICONWARNING) = ID_YES then
+    begin
+      if not DeleteFile(Target) then
+      begin
+        ShowMessage('Couldn''t delete file. Aborting');
+        Exit;
+      end else if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.raw')) then
+      begin
+        ShowMessage('Couldn''t delete file. Aborting');
+        Exit;
+      end else if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.sep')) then
+      begin
+        ShowMessage('Couldn''t delete file. Aborting');
+        Exit;
+      end;
+    end else begin
+      ShowMessage('Aborting');
+      Exit;
+    end;
+  end;
+
+  LevelID  := Connection.LevelNumber;
+  LevelID  := (LevelID * 2) * 256 * 256 * 256 + $01;
   OniImage := TOniImage.Create;
-
-  absolutebegintime := Time;
 
   Self.Visible := True;
   Form_Main.Visible := False;
-  step  := 0;
-  converting := True;
-  abort := False;
+  Step := 0;
+  Converting := True;
+  Abort := False;
   btn_abortok.Caption := '&Abort...';
   btn_abortok.Default := False;
-  absolutebegintime := Time;
+  BeginTime := Time;
 
   Stream_Body  := TMemoryStream.Create;
   Stream_Names := TMemoryStream.Create;
-  Stream_Dat   := TFileStream.Create(target, fmCreate);
-  Stream_Raw   := TFileStream.Create(AnsiReplaceStr(target, '.dat', '.raw'), fmCreate);
-  if OniDataConnection.OSisMac then
-    Stream_Sep := TFileStream.Create(AnsiReplaceStr(target, '.dat', '.sep'), fmCreate);
+  Stream_Dat   := TFileStream.Create(Target, fmCreate);
+  Stream_Raw   := TFileStream.Create(AnsiReplaceStr(Target, '.dat', '.raw'), fmCreate);
+  if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then
+    Stream_Sep := TFileStream.Create(AnsiReplaceStr(Target, '.dat', '.sep'), fmCreate);
 
   DoStep('Creating header');
@@ -156,5 +191,23 @@
   Application.ProcessMessages;
 
-  NamedFilesHeader := TOniDataADB(OniDataConnection).GetNamedFilesMap;
+  SetLength(NamedFilesHeader, 0);
+  Strings := TStringList.Create;
+  Strings := Connection.GetFilesList('', '', False, ST_ExtNameAsc);
+  for i := 0 to Strings.Count - 1 do
+  begin
+    if MidStr(Strings.Strings[i],
+          Pos('-', Strings.Strings[i]) + 1,
+          Length(Strings.Strings[i]) -
+            Pos('.', ReverseString(Strings.Strings[i])) -
+            Pos('-', Strings.Strings[i])
+        ) <> '' then
+    begin
+      SetLength(NamedFilesHeader, Length(NamedFilesHeader) + 1);
+      NamedFilesHeader[High(NamedFilesHeader)].FileNumber := StrToInt(MidStr(Strings.Strings[i], 1, 5));
+      NamedFilesHeader[High(NamedFilesHeader)].blubb := 0;
+    end;
+  end;
+
+  
   extlist := OniDataConnection.GetExtendedExtensionsList;
   for i := 0 to High(DatHeader.Ident) do
@@ -172,4 +225,5 @@
   SetLength(ExtensionsHeader, DatHeader.Extensions);
 
+
   DoStep('Writing extensions-header');
   progress.Max := Length(OniDataConnection.GetExtensionsList);
@@ -190,4 +244,5 @@
     Application.ProcessMessages;
   end;
+
 
   DoStep('Storing files-data');
@@ -354,4 +409,8 @@
 procedure TForm_LevelDB.CreateDatabase(Source, target: String);
 var
+  DataBase:    TABSDatabase;
+  Query:       TABSQuery;
+  MimeCoder:   TStringFormat_MIME64;
+
   i, j:     LongWord;
   temps, temps2: String;
Index: oup/current/Main.pas
===================================================================
--- oup/current/Main.pas	(revision 111)
+++ oup/current/Main.pas	(revision 112)
@@ -255,5 +255,4 @@
     AppSettings.DatPath        := ExtractFilepath(Application.EXEname);
     AppSettings.ExtractPath    := ExtractFilepath(Application.EXEname) + '\extract';
-    AppSettings.FilenumbersAsHex := False;
     AppSettings.CharSet        := DEFAULT_CHARSET;
     AppSettings.HideUnusedData := False;
Index: oup/current/OniUnPacker.bdsproj
===================================================================
--- oup/current/OniUnPacker.bdsproj	(revision 111)
+++ oup/current/OniUnPacker.bdsproj	(revision 112)
@@ -176,8 +176,5 @@
 			<Language Name="ProjectLang">$00000000</Language>
 			<Language Name="RootDir"></Language>
-		</Language>  
-    
-    
-    <Excluded_Packages>
+		</Language>  <Excluded_Packages>
       <Excluded_Packages Name="d:\programme\borland\bds\3.0\Bin\dbwebxprt.bpl">Borland Web Wizard Package</Excluded_Packages>
     </Excluded_Packages>
Index: oup/current/Settings.dfm
===================================================================
--- oup/current/Settings.dfm	(revision 111)
+++ oup/current/Settings.dfm	(revision 112)
@@ -4,5 +4,5 @@
   BorderStyle = bsToolWindow
   Caption = 'Settings'
-  ClientHeight = 235
+  ClientHeight = 197
   ClientWidth = 321
   Color = clBtnFace
@@ -20,5 +20,5 @@
   object label_charset: TLabel
     Left = 8
-    Top = 39
+    Top = 8
     Width = 145
     Height = 26
@@ -27,35 +27,27 @@
     WordWrap = True
   end
-  object check_filesashex: TCheckBox
-    Left = 8
-    Top = 8
-    Width = 145
-    Height = 17
-    Caption = 'Show filenumbers as Hex'
-    TabOrder = 0
-  end
   object btn_ok: TButton
     Left = 8
-    Top = 199
+    Top = 168
     Width = 57
     Height = 23
     Caption = 'OK'
     Default = True
-    TabOrder = 1
+    TabOrder = 0
     OnClick = btn_okClick
   end
   object btn_cancel: TButton
     Left = 112
-    Top = 199
+    Top = 168
     Width = 57
     Height = 23
     Cancel = True
     Caption = 'Cancel'
-    TabOrder = 2
+    TabOrder = 1
     OnClick = btn_cancelClick
   end
   object combo_charset: TComboBox
     Left = 160
-    Top = 40
+    Top = 9
     Width = 156
     Height = 21
@@ -63,5 +55,5 @@
     ItemHeight = 13
     ItemIndex = 0
-    TabOrder = 3
+    TabOrder = 2
     Text = 'default - 1'
     Items.Strings = (
@@ -78,33 +70,33 @@
   object check_hideunused: TCheckBox
     Left = 8
-    Top = 79
+    Top = 48
     Width = 209
     Height = 17
     Caption = 'Hide "Unused" data in StructureViewer'
-    TabOrder = 4
+    TabOrder = 3
   end
   object check_reg_dat: TCheckBox
     Left = 8
-    Top = 118
+    Top = 87
     Width = 180
     Height = 17
     Caption = 'Register .dat files with OUP'
-    TabOrder = 5
+    TabOrder = 4
   end
   object check_reg_oldb: TCheckBox
     Left = 8
-    Top = 141
+    Top = 110
     Width = 180
     Height = 17
     Caption = 'Register .oldb files with OUP'
-    TabOrder = 6
+    TabOrder = 5
   end
   object check_reg_opf: TCheckBox
     Left = 8
-    Top = 164
+    Top = 133
     Width = 180
     Height = 17
     Caption = 'Register .opf files with OUP'
-    TabOrder = 7
+    TabOrder = 6
   end
 end
Index: oup/current/Settings.pas
===================================================================
--- oup/current/Settings.pas	(revision 111)
+++ oup/current/Settings.pas	(revision 112)
@@ -7,5 +7,4 @@
 type
   TForm_Settings = class(TForm)
-    check_filesashex: TCheckBox;
     btn_ok:     TButton;
     btn_cancel: TButton;
@@ -98,5 +97,4 @@
   temps: String;
 begin
-  AppSettings.FilenumbersAsHex := check_filesashex.Checked;
   AppSettings.CharSet := StrToInt(
     MidStr(combo_charset.Items.Strings[combo_charset.ItemIndex], Pos(
@@ -183,5 +181,4 @@
     check_reg_opf.Checked := False;
 
-  check_filesashex.Checked := AppSettings.FilenumbersAsHex;
   check_hideunused.Checked := AppSettings.HideUnusedData;
 
