瀏覽代碼

edsk: Fix weak data positioning, and always use empty/unformatted writing mode.

Keir Fraser 4 年之前
父節點
當前提交
e837e7c581
共有 2 個文件被更改,包括 3 次插入2 次删除
  1. 1 1
      scripts/greaseweazle/image/edsk.py
  2. 2 1
      scripts/greaseweazle/track.py

+ 1 - 1
scripts/greaseweazle/image/edsk.py

@@ -311,7 +311,7 @@ class EDSK(Image):
                         continue
                         continue
                     t += mfm.encode(bytes(track.gap_presync))
                     t += mfm.encode(bytes(track.gap_presync))
                     t += mfm.sync_bytes
                     t += mfm.sync_bytes
-                    track.weak += [((s+len(t)//2+4)*16, n*16) for s,n in weak]
+                    track.weak += [((s+len(t)//2+1)*16, n*16) for s,n in weak]
                     dmark = (mfm.IBM_MFM.DDAM if errs.deleted_dam
                     dmark = (mfm.IBM_MFM.DDAM if errs.deleted_dam
                              else mfm.IBM_MFM.DAM)
                              else mfm.IBM_MFM.DAM)
                     gap_included = False
                     gap_included = False

+ 2 - 1
scripts/greaseweazle/track.py

@@ -66,6 +66,7 @@ class MasterTrack:
         self.splice = splice
         self.splice = splice
         self.weak = weak
         self.weak = weak
         self.precomp = None
         self.precomp = None
+        self.force_random_weak = True
 
 
     def __str__(self):
     def __str__(self):
         s = "\nMaster Track: splice @ %d\n" % self.splice
         s = "\nMaster Track: splice @ %d\n" % self.splice
@@ -101,7 +102,7 @@ class MasterTrack:
             e = s + n
             e = s + n
             assert 0 < s < e < bitlen
             assert 0 < s < e < bitlen
             pattern = bitarray(endian="big")
             pattern = bitarray(endian="big")
-            if n < 400:
+            if n < 400 or self.force_random_weak:
                 # Short weak regions are written with no flux transitions.
                 # Short weak regions are written with no flux transitions.
                 # Actually we insert a flux transition every 32 bitcells, else
                 # Actually we insert a flux transition every 32 bitcells, else
                 # we risk triggering Greaseweazle's No Flux Area generator.
                 # we risk triggering Greaseweazle's No Flux Area generator.