Index: oup/current/DataAccess/Access_OUP_ADB.pas
===================================================================
--- oup/current/DataAccess/Access_OUP_ADB.pas	(revision 172)
+++ oup/current/DataAccess/Access_OUP_ADB.pas	(revision 173)
@@ -91,5 +91,5 @@
     if FQuery.FieldByName('name').AsString = 'lvl' then
       FLevelNumber := StrToInt(FQuery.FieldByName('value').AsString);
-    if FQuery.FieldByName('name').AsString = 'DataOS' then
+    if FQuery.FieldByName('name').AsString = 'os' then
     begin
       if FQuery.FieldByName('value').AsString = 'WIN' then
Index: oup/current/DataAccess/Access_OniArchive.pas
===================================================================
--- oup/current/DataAccess/Access_OniArchive.pas	(revision 172)
+++ oup/current/DataAccess/Access_OniArchive.pas	(revision 173)
@@ -647,4 +647,7 @@
 
 function TAccess_OniArchive.AppendRawFile(LocSep: Boolean; Src: TStream): Integer;
+const
+  EmptyBytes: Array[0..31] of Byte = (
+      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 );
 begin
   if not LocSep then
@@ -653,7 +656,11 @@
       Fraw_file := TFileStream.Create(AnsiReplaceStr(FFileName, '.dat', '.raw'),
         fmOpenReadWrite);
+    if (Fraw_file.Size mod 32) > 0 then
+      Fraw_file.Write(EmptyBytes[0], 32 - (Fraw_file.Size mod 32));
     Result := Fraw_file.Size;
     Fraw_file.Seek(0, soFromEnd);
     Fraw_file.CopyFrom(Src, Src.Size);
+    if (Fraw_file.Size mod 32) > 0 then
+      Fraw_file.Write(EmptyBytes[0], 32 - (Fraw_file.Size mod 32));
     if UnloadWhenUnused then
     begin
@@ -669,7 +676,11 @@
       Fsep_file := TFileStream.Create(AnsiReplaceStr(FFileName, '.dat', '.sep'),
         fmOpenReadWrite);
+    if (Fsep_file.Size mod 32) > 0 then
+      Fsep_file.Write(EmptyBytes[0], 32 - (Fsep_file.Size mod 32));
     Result := Fsep_file.Size;
     Fsep_file.Seek(0, soFromEnd);
     Fsep_file.CopyFrom(Src, Src.Size);
+    if (Fsep_file.Size mod 32) > 0 then
+      Fsep_file.Write(EmptyBytes[0], 32 - (Fsep_file.Size mod 32));
     if UnloadWhenUnused then
     begin
Index: oup/current/Global/RawList.pas
===================================================================
--- oup/current/Global/RawList.pas	(revision 172)
+++ oup/current/Global/RawList.pas	(revision 173)
@@ -117,5 +117,5 @@
 begin
   SetLength(Result, 1);
-  if ConManager.Connection[ConnectionID].DataOS = DOS_MAC then
+  if ConManager.Connection[ConnectionID].DataOS in [DOS_MACBETA, DOS_MAC] then
   begin
     ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $10, 4, @datasize);
Index: oup/current/Helper/LevelDB.pas
===================================================================
--- oup/current/Helper/LevelDB.pas	(revision 172)
+++ oup/current/Helper/LevelDB.pas	(revision 173)
@@ -239,5 +239,5 @@
     case Connection.DataOS of
       DOS_WIN: DatHeader.OSIdent[i] := HeaderOSIdentWin[i];
-      DOS_MAC: DatHeader.OSIdent[i] := HeaderOSIdentMac[i];
+      DOS_MAC, DOS_WINDEMO: DatHeader.OSIdent[i] := HeaderOSIdentMac[i];
       DOS_MACBETA: DatHeader.OSIdent[i] := HeaderOSIdentMacBeta[i];
     end;
@@ -280,5 +280,9 @@
       case Connection.DataOS of
         DOS_WIN:     ExtensionsHeader[i].Ident := FileTypes[j].IdentWin;
-        DOS_WINDEMO: ExtensionsHeader[i].Ident := FileTypes[j].IdentMac;
+        DOS_WINDEMO:
+            if FileTypes[j].Extension = 'SNDD' then
+              ExtensionsHeader[i].Ident := FileTypes[j].IdentWin
+            else
+              ExtensionsHeader[i].Ident := FileTypes[j].IdentMac;
         DOS_MAC:     ExtensionsHeader[i].Ident := FileTypes[j].IdentMac;
         DOS_MACBETA: ExtensionsHeader[i].Ident := FileTypes[j].IdentMac;
@@ -492,5 +496,5 @@
       DeleteFile(target);
     end;
-end;
+  end;
 
 
