浏览代码

adf: ADF output should be 160 tracks minimum.
And only more if there is AmigaDOS data to be stored.

Keir Fraser 4 年之前
父节点
当前提交
8387eabb8f
共有 1 个文件被更改,包括 8 次插入3 次删除
  1. 8 3
      scripts/greaseweazle/image/adf.py

+ 8 - 3
scripts/greaseweazle/image/adf.py

@@ -76,11 +76,16 @@ class ADF:
         tlen = self.sec_per_track * 512
         tdat = bytearray()
 
-        for t in self.track_list:
-            if t is None or not hasattr(t, 'get_adf_track'):
+        for tracknr in range(len(self.track_list)):
+            t = self.track_list[tracknr]
+            if t is not None and hasattr(t, 'get_adf_track'):
+                tdat += t.get_adf_track()
+            elif tracknr < 160:
+                # Pad empty/damaged tracks.
                 tdat += bytes(tlen)
             else:
-                tdat += t.get_adf_track()
+                # Do not extend past 160 tracks unless there is data.
+                break
 
         if len(self.track_list) < 160:
             tdat += bytes(tlen * (160 - len(self.track_list)))