# Combinator tile

## Recommended Posts

Don't you think, that logic gates take far too much space? Could we get a combinator tile, that could perform loop-less programs? It could have 8-bit input (Q1-Q8), 8-bit output (D1-D8) and a simple programming language consisting of:

```if(Dx==1):
Qy=1```

Turns a fixed output active when a fixed input is 1.

```if(D1 AND D5 == 1):
Q1=1
Q4=1
Q8=1```

AND gate - activates fixed outputs when fixed inputs are active/inactive in a deserved way. If it was a XOR thing instead, it would behave like a XOR, you get the idea. NOT would do:

```if(D3!=1):
Q5=1
Q7=1```

There is a NOT for input D3, that will keep Q5 and Q7 active for the time it's 0. Also if it was written

`if(D3!=0):`

would ativate consequent, when D3 would be a 1.

Now for variables:

```x=0
if(deserved_input_a==1):
x=1
if(deserved_input_b==1):
x=0
if(x==1):
Q2=1
if(x==0):
Q1=1```

declares a binary variable x, sets it to 1 for a given binary input, resets it for another input. If they are the same, it sets and resets it within a single step, so nothing happens. Logical output Q2 is 1 for the first input and Q1 will become 1 for another. But this one:

```x=0
if(deserved_input_a==1):
x=1
if(x==1):
Q2=1
if(deserved_input_a==1):
x=0```

should sens nothing, just for tidyness. It should work in a way that would activate an output only when it would became active and stay that way on the end of a step.

```x=[x0,x1,x2,x3,x4]
if(D5==1):
x[3]=1```

This in python is called a list - x is an array of binary numbers with adresses from 0 (first one, x1) to 3 (fourth one, x4). Active input D5 makes it remember a 1 for x3.

Since it's geting 2^8 possible logical inputs and is going to get 2^8 possible logical outpust (total 256 bits or 32 bytes), it could calculate all possibilities after clicking "compile". I did not include loops in here because actually you get those easily, using ingame memory toogles. Well, we could get an 8-bit versin of this , an 8x3 tile consisting of an array of 8 S's, 8 Qs and a sneaky little reset, just like this

ssssssss
R
qqqqqqqq

##### Share on other sites

I agree that logic gates take up too much space but everything you said after that was like *swoosh!* — right over my head.

##### Share on other sites

2 hours ago, withers said:

I agree that logic gates take up too much space but everything you said after that was like *swoosh!* — right over my head.

It's because you are not a programer

##### Share on other sites

At least we can build logic gates behind tiles.

I`m not sure if i understan correctly but do you want a logic gat that has 8 input ports and 8 output ports plus a reset one? This thing would be pretty large.

I know advanced programmers would find a lot of uses for those but for us who only know basics finding a use for the XOR or the logic bit is already a hard task.

##### Share on other sites

Lat large, 8x3 (and 8x2 combinator) thing would be very, very useful, both of them. Like regulating airlock pump speed with no need of fooling around with dosens of buffers, using only one of those. You could also use that for improving your oxygen control. Or For an ultra hight-tech power management. Or making a cool jukebox with long, complex melodies. Or for smart cosmodrom management (with not so many miles of automation wire). Sky is the limit.

##### Share on other sites

I like this idea, but the only thing you've done here that can't be easily done with the gates we already have is the muxing and demuxing... of course since yours is programmable it is capable of more complicated operations since you can map many-to-many, one-to-many, many-to-one, and one-to-one all on the same device. It could be really useful.

I feel like this could contribute heavily to lag.

If I had to ask for new automation parts, here's my wish list:

1) clocks: we could really use a clock part, something with configurable duty cycle and period. The current clock part has a fixed period of one cycle, which means using it to control things more finely is impossible. You could set it to 3s on, and 3s off, or 1 and 1, or 1 on and 9 off (for a 10% duty cycle).

2) pulse generators / edge detectors: Right now, toggling an RS latch makes turning a pulse into a steady-state signal easy, but going the other way requires several gates... and trying to build a rising-edge detector vs a falling-edge detector vs a pure edge detector can be taxing.

3) T flip-flops: need I say more... toggle state with one input... should be easy.

4) graded signals (basic voltage levels): this one is a bit lower because it could be difficult to implement and could affect performance, but the game-play impact could be enormous. Basically I'd like to see machines and sensors capable of sending out different voltage levels; perhaps a 0-15. You could indicate the level by the brightness of the wire. 0 is off, 1-15 is on (to varying degrees). This could allow us to fine-tune control systems to help avoid over-correction. We could sense temperature, for example, in multiple modes: 15 is exactly the specified temperature, 14 is 1 degree higher or lower, 13 is within 5 degrees, 12 is within 10 degrees, etc OR 1 is very low temp, 15 is very high temp (for an absolute reading). This could allow for much more complex systems. You could even use a voltage level to configure other sensors, allowing them to change modes depending on circumstance. For example: I want my battery to enable my generators sooner if my power consumption is very high. I know this one is probably outside the scope of the game, but it's on my wishlist so I included it.

##### Share on other sites

5 minutes ago, impyre said:

1) clocks: we could really use a clock part, something with configurable duty cycle and period. The current clock part has a fixed period of one cycle, which means using it to control things more finely is impossible. You could set it to 3s on, and 3s off, or 1 and 1, or 1 on and 9 off (for a 10% duty cycle).

You can make a plateau clock with a buffer, a filter and a NOT. Actually works.

##### Share on other sites

1 minute ago, Vincie said:

You can make a plateau clock with a buffer, a filter and a NOT. Actually works.

@Vincie Yeah, I've used them plenty. They have configurable duty cycle and period, and can be enabled/disabled automatically; however, they also cause lag, and require more materials to set up than a single gate/part. I just think it'd be nice to have a clock part (clock enable port would be nice but not necessary).

##### Share on other sites

That is true. An actual clock would be a precious gift, regarding the season. Dear Santa, please bring my dupes a clock signal generator...

##### Share on other sites

1 hour ago, impyre said:

@Vincie Yeah, I've used them plenty. They have configurable duty cycle and period, and can be enabled/disabled automatically; however, they also cause lag, and require more materials to set up than a single gate/part. I just think it'd be nice to have a clock part (clock enable port would be nice but not necessary).

It also don't allow to make a timer so that a system stay active for a difined time and then just stop.

So a real timer should be great.

Maybe also a diode, so we could cross automation wires without always need of a bridge.

##### Share on other sites

2 hours ago, Gwido said:

Maybe also a diode, so we could cross automation wires without always need of a bridge.

##### Share on other sites

a diode makes sure a signal only goes one way. This can help isolate inputs from outputs, etc. You can also use them to build multi-input or gates. The only way to do this now is to use two not gates in a row or to use an or gate with one input left disconnected.

##### Share on other sites

Also something, is that if each input or output is a bit, then it will be more easier to program and to understand if the inputs and ouputs will be boolean.