The algorithm used with the LDA:
[random 1] -> [11:10] [random 1] -> [10] [random 2]&3 + 2 -> [11] (repeat)
If you do not reload a from $ fe, you do:
[random 1] -> [11:10] [ramdom 1] -> [10] [random 1]&3 + 2 -> [11] (repeat)
Therefore, the low and high byte of the address pixel is a function of the same random number. They are not independent. This creates a correlation between them. What appears in the pattern that you see. If your fake screen was 256 pixels wide, it would be a straight diagonal; based on the fact that you see 8 stripes, I can conclude that your output should be 256/8 = 32 pixels wide.
The problem is not that you are mistaken to say that "a random number in the battery ... should make a small low byte for the screen address." it's that you also use it for high byte. You use it for both. High byte is a direct function of low byte. So there is a bunch of big bytes that you will never hit because they do not satisfy the constraint, which is high=(low&3)+2 . These pixels remain inactive.
Tommy source share