The shift register is a clocked buffer able to delay a signal, or multiple signal changes.
Can be rotated or configured using a spanner.
There are two options which can be configured:
- Period: Effects the clock's rate. This is the time between samples/shifts.
- Length: Dictates how many values are stored in the buffer. This is how many shifts occur until a value comes out the other side
On the rising edge of the internal clock the HIGH or LOW value at the input is stored in the first stage of the buffer, and the oldest stored value is pushed out of the other end.
Used in a simple manner they delay any throughput of signal for a period of time roughly equal to period x length.
 Dev Quote
A quote from the developer, Jack.
"A shift register is basically a clocked buffer. In JJX the shift register is a SISO kind, which is Serial In Serial Out.
Basically it has an internal clock which on each tick takes the value from the input and push it into the buffer, at the same time pushing out the last value of the buffer.
The period dictates how fast the internal clock goes while the length dictates the length of the internal buffer.
By using it in a simple manner is works like a delayer which delays the signal by period*length ticks but they actually store a binary pattern inside so for example, if you switch a lever fast with a short period they will reproduce the pattern after a fixed amount of time (which is regulated by the length).
The clock period is like a "pooling rate" on the input pin of the register so that you can adjust how fast it samples data to push it inside the internal buffer.
They're kinda useful devices in real electronics where usually SIPO registers allows to output multiple data signals by controlling them with just 1 serial data."