Romixal
Terrarian
Screen is based on the real world matrix displays.
This design is similar to Moh.M@gdy’s implementation, but instead of using regular logic gates I used faulty ones.
With carefully planned execution order we can change state of the regular lamps on the whole row multiple times per tick,
wherein we actually can get some corresponding results from faulty logic gates.
These rows of “Faulty AND gates” I call “inverters”, because when they activated they change state of the pixels that they connected to.
Look at execution order, between step 1 and step 2 (4-5; 7-8; 10-11) we can place jumpers that change state of certain inverters.
That set of jumpers I used to call “frame block”:
So, now we can change any pixels on this screen in one tick.
But each next frame strictly rely on previous one, because we only can inverse state of pixels.
For example I pick these two frames:
Let’s say left frame is the current screen state and the right one we want to get.
Because we dealing with inverters, easy way to figure out when we need activate/deactivate them is overlay desirable frame on current frame with XOR algorithm.
You can do it with your graphical editor, by blending layers with “Difference” mode:
That image shows us where inverters should be turned on (white pixels) and turned off (black pixels).
Then we need to figure out when we toggle our inverters: we looking for thoes when horizontal line change it’s color, I highlighted those pixels with red color
(if previous frame left some inverters turned on, we need invert state of the first pixel of the corresponding row):
Then given pattern i apply to these cheat sheets, this mess helps me to build a frame block.
Left cheat sheet shows input wire, and the right one shows output.
And i end up with this frame-block at the end.
I’m not good at explaining how I get from this cheat sheet mess to this pretty frame block… Well, you will figure it out, it will be your homework.
Then I just repeated this process ~6571 times.
Feel free to ask your questions, if you don't get something.