Unfortunately, it doesn't appear to be possible to scale up, because if you add repeaters to the piston lines, the values just before the repeater won't be set to 0, for some unknown reason. Well, this entire circuit is based on quirks, so ironically it falls on quirks.
This circuit is also an interesting research area, if you are looking into update rules. I don't know exactly what is going on here.
to extend it you add a repeater on the activation line and set the repeater that carries the shift to three ticks.
awesome system, very inventive and the first time I have seen any one beat one of my components in terms of size. making it so that the method to reset and to shift the value is done by the same bit of logic is genius.
you should probably add the little setup that is needed in the size though.
You could also add a reset button if you wanted by making it hit both lines simultaneously.
awesome system, very inventive and the first time I have seen any one beat one of my components in terms of size.
My bidirectional shift register is significantly smaller when tiled than yours is. :tongue.gif: Still a bit bigger than this one, but oriented differently.
Yeah, I'm having a bit of trouble seeing the components here. Can't tell whether the repeaters point away or towards the camera. A nice close up, some side shots, and perhaps documentation signs (where is the output?) would help... :smile.gif: In any event, this thing looks really compact, so congrats!
The first "slice" you can see in the first picture is a monostable circuit. When one of the pistons comes down, it breaks the circuit and depowers the repeater. But the same block that breaks the circuit has a repeater going into it from the previous node (in whichever direction you're shifting from), so if the previous node was powered it will power the current one. It looks like it requires very precise timing.
A bit of searching reveals that the monostable circuit is commonly called a "basil flop". I'm not sure where it came from.
That's why I specified tiling. Mine's 3x4, but there's no buffer space required – you can fit four of them in a 6x8 space and they won't interfere. Yours is smaller by itself, but requires a one-meter buffer to tile in either of the longer dimensions, which effectively adds one to each of those. In addition, your height of 5 doesn't include the block the bottom-most redstone is on, which is obviously a necessary part of the system. So when tiled, mine takes up 3x4x8 (including the buffer for the longest dimension, which doesn't tile as neatly), or 96 m3, and yours takes up 2x7x8, or 112 m3. For a two-dimensional array, mine can be tiled in 3x4x7 for 84 m3 and yours in 2x6x8 for 96 m3 (or 2x7x7 for 98 m3).
I think that you could shave 1 off the longest dimension of two of my registers back-to-back by mirroring them about one set of control lines. I have not tested this, and similar optimizations may be possible with your design.
When tiled in a linked array (such as a byte), each of our registers would require lines to carry the shift signal to each register. For my design, this is a one-off size cost. I believe (though I have not checked) that yours is the same in this regard. In the case where only a single-bit register is needed, this gives your circuit the advantage because your control lines run through one register whereas mine run from register to register.
So a single one of your registers is smaller than a single one of mine, not counting empty buffer space, but an array of mine is smaller than an array of yours.
Not the monostable/pulse generators, but the the reset-set type D flops in this. So-called becuase a user Bazilshep created it (@RDF).
Indeed.
---
I checked my design, and it appears that not only could the control lines be shared between two facing modules, but with clever arrangement, the modules can be tiled in all three dimensions without buffers. So for the three-dimensional case, each module can be tiled every 3x4x6.5 meters, for a total effective volume of 78 m3. (At this point, of course, you're definitely losing access to all but the front plane of outputs, but this is probably going to be an issue with just about any three-dimensional tiling.)
I did mention that an array of mine would have an extra one-off wiring cost. Yours would as well. The only difference is that s single register of yours would not need extra wiring, for the same reason than an array of depth-1 registers of mine would not. It's exactly the same except that the directions in which our respective control lines run are orthogonal. (My register design cannot, in fact, be manually triggered, due to some optimizations I made.)
A two-deep arrangement of my registers (3x13xH) can be made cyclic just by linking the columns at the top and at the bottom. What sort of size gain you get from removing the cyclic feature from yours?
And while we're on the topic of additional features (:tongue.gif:), I'd like to note than an array of mine gives an output word side-by-side, spaced by 3, where it's easy to get the output to where it is needed. An array of your registers has more widely-separated outputs. Furthermore, even when tiled three-dimensionally, the first column of my modules has fully accessible outputs, whereas yours would only make the front value accessible in such a a case.
And, just to reiterate, the additional wiring to hook up an array of either of our registers does not scale with the number of registers – it's a single, up-front cost.
Extremely nice :smile.gif: This is very simple as well as compact... however, it causes quite some lag when you go large scale with it due to all the pistons firing simultaneously.
Yea one direction stoped working in 1.0 but it still works very well as a one directional shifter in counters and such. Also i have no idea how this thread was dug up but i find it pretty amusing.
to extend it you add a repeater on the activation line and set the repeater that carries the shift to three ticks.
Thanks so much.
My bidirectional shift register is significantly smaller when tiled than yours is. :tongue.gif: Still a bit bigger than this one, but oriented differently.
The first "slice" you can see in the first picture is a monostable circuit. When one of the pistons comes down, it breaks the circuit and depowers the repeater. But the same block that breaks the circuit has a repeater going into it from the previous node (in whichever direction you're shifting from), so if the previous node was powered it will power the current one. It looks like it requires very precise timing.
A bit of searching reveals that the monostable circuit is commonly called a "basil flop". I'm not sure where it came from.
I think that you could shave 1 off the longest dimension of two of my registers back-to-back by mirroring them about one set of control lines. I have not tested this, and similar optimizations may be possible with your design.
When tiled in a linked array (such as a byte), each of our registers would require lines to carry the shift signal to each register. For my design, this is a one-off size cost. I believe (though I have not checked) that yours is the same in this regard. In the case where only a single-bit register is needed, this gives your circuit the advantage because your control lines run through one register whereas mine run from register to register.
So a single one of your registers is smaller than a single one of mine, not counting empty buffer space, but an array of mine is smaller than an array of yours.
Indeed.
---
I checked my design, and it appears that not only could the control lines be shared between two facing modules, but with clever arrangement, the modules can be tiled in all three dimensions without buffers. So for the three-dimensional case, each module can be tiled every 3x4x6.5 meters, for a total effective volume of 78 m3. (At this point, of course, you're definitely losing access to all but the front plane of outputs, but this is probably going to be an issue with just about any three-dimensional tiling.)
Edit: This circut loses the first and last values. :l
A two-deep arrangement of my registers (3x13xH) can be made cyclic just by linking the columns at the top and at the bottom. What sort of size gain you get from removing the cyclic feature from yours?
And while we're on the topic of additional features (:tongue.gif:), I'd like to note than an array of mine gives an output word side-by-side, spaced by 3, where it's easy to get the output to where it is needed. An array of your registers has more widely-separated outputs. Furthermore, even when tiled three-dimensionally, the first column of my modules has fully accessible outputs, whereas yours would only make the front value accessible in such a a case.
It should work in all directions. Make sure the repeaters on top of the latches are set to 2 ticks.
Interested in pro redstone? Check out ORE at openredstone.org