diff --git a/process_dvi.py b/process_dvi.py index 0c649dd..2c23384 100644 --- a/process_dvi.py +++ b/process_dvi.py @@ -8,6 +8,7 @@ def find_control_position(raw_words): control_counter = 0 for w1, w2 in zip(raw_words, raw_words[1:]): lw = w2 | (w1 << 10) + lw = w1 | (w2 << 10) found_control = False for i in range(10): e = (lw >> i) & (2**10 - 1) @@ -29,7 +30,7 @@ def find_control_position(raw_words): def char_align(raw_words, control_position): r = [] for w1, w2 in zip(raw_words, raw_words[1:]): - lw = w2 | (w1 << 10) + lw = w1 | (w2 << 10) e = (lw >> control_position) & (2**10 - 1) r.append(e) return r @@ -69,6 +70,22 @@ def main(): while word: raw_words.append(struct.unpack(">H", word)[0]) word = f.read(2) + + raw_words = raw_words[4:-4]; + + r = [] + for i in range(0, len(raw_words) - 7, 8): + r.append(raw_words[i + 7]) + r.append(raw_words[i + 6]) + r.append(raw_words[i + 5]) + r.append(raw_words[i + 4]) + r.append(raw_words[i + 3]) + r.append(raw_words[i + 2]) + r.append(raw_words[i + 1]) + r.append(raw_words[i + 0]) + + raw_words = r + control_position = find_control_position(raw_words) print("Syncing characters at {0}".format(control_position)) chars = char_align(raw_words, control_position) @@ -89,7 +106,7 @@ def main(): prev_de = de #for row in img: # print(len(row)) - img = [row for row in img if len(row) == 633] # FIXME + img = [row for row in img if len(row) == 640] # FIXME write_image("tst.ppm", img) main()