Tiles that think
Mirrors, splitters and colour splitters always do the same thing to light: bend it, multiply it, take it apart. The logic tiles do something else. They look at what arrives, and then emit light of their own.
There are fourteen of them. Seven only compute — they combine two beams into one. Five have a memory: they remember what happened, long after the beam is gone. And two are clocks that blink all by themselves.
A logic tile never passes light through. It takes your beam as a question and answers with a new beam — in the same colour, because the colour it demands is also the colour it emits. What travels on is not your beam but the tile's answer. That is the whole trick — and the reason fourteen tiles are enough to build circuits that have nothing to do with optics any more.
This page assumes the ordinary guide — crystals, mirrors, colour mixing and doors are not explained again here.
The five rules
Read these first — nearly every surprise comes out of this list rather than out of any one tile.
- One colour, matched exactly Every logic tile has exactly one colour. It is both things at once: the colour you have to hit it with, and the colour it emits. And it has to match exactly — a white beam does not trigger a red tile. You can read the colour off the tinted input markers: those stay lit even when the tile itself is dark. The one exception is the Multiplexer — it only tests its select line for that colour, and relays whatever arrives on its data lines.
- A state change costs a tick The tile checks its conditions first, then changes state — and only on the next tick does the new light actually exist. A tick is a thirty-second of a second (31.25 ms). This is the most important timing fact in the game: it is why the Delay delays, and why a pulse is exactly one tick long.
- Dark is a real condition Several tiles require a side to be dark — not merely “not matching”. A Flip-Flop cannot be reset while set is still held, and the XOR gate tells “exactly one” from “both” in precisely this way.
- The Multiplexer is the exception It is the only tile that relays light instead of emitting its own. That is why passing through it costs no tick — and why the beam keeps its colour. Only switching costs it a tick.
- What you see here is the default rotation You cannot rotate tiles in play — but whoever builds a level can place any of them in all four rotations, so you will meet the same tile in any of the four. Every side named on this page is given for the unrotated tile; in a rotated one all the ports travel with it unchanged, and the only thing that differs is which way they face. The house rule for the default rotation: the main run enters at the bottom and leaves at the top, a second input is on the left, a second output on the right. Two tiles break it — both are flagged below.
All fourteen at a glance
The plates look alike — what tells them apart is the mark in the middle.
| Tile | In | Out | In one line |
|---|---|---|---|
| OR Gate | left, bottom | top | Lit while at least one of the two inputs is lit |
| XOR Gate | left, bottom | top | Lit while exactly one of the two inputs is lit |
| XNOR Gate | left, bottom | top | Lit while the inputs agree — including when both are dark |
| Half Adder | left, bottom | top, right | Exactly one → top; both → right. Never both at once |
| Multiplexer | bottom, left, right | top | Relays one of two beams — which one is decided by the right side |
| Delay | bottom | top | Repeats its input one tick later |
| Edge Detector | bottom | top | A pulse of exactly one tick, the moment light arrives |
| Flip-Flop | bottom sets, left resets | right Q, top Q′ | Remembers a momentary trigger — permanently |
| D Latch | bottom enables, left data | right Q, top Q′ | Follows the data while enabled — holds it the moment it is not |
| D Flip-Flop | bottom clock, left data | right Q, top Q′ | Captures the data on every rising clock edge |
| T Flip-Flop | bottom clock | right Q, top Q′ | Flips on every clock edge — halving the frequency |
| JK Flip-Flop | bottom clock, left J, top K | right Q | The universal one: set, reset, hold or toggle |
| Beacon | — none — | right | Blinks by itself, forever, with nothing from you |
| Gated Beacon | bottom switches on | right | Blinks only while switched on — and pauses rather than starting over |
Tiles that compute
No memory — what comes out depends only on what is going in right now.
About the pictures: the input markers are always tinted — they show the colour you have to hit the tile with, not whether light is arriving there. Where light is actually flowing, you can see it as short red beams at the edge of the tile. The Multiplexer further down is the exception: its data sides stay dark until something arrives there, and then take that thing's colour.
OR Gate
Lit while at least one of its two inputs carries its colour. With both dark, the gate is dark too.
Use it to merge two triggers into one line: two different crystals, two different switches — either one, same result. Without it, two sources aiming at one target need physical routing that often simply does not fit on the grid.
The simplest of the fourteen — and the one you will reach for most often.
In left · bottom
Out top
XOR Gate
Lit while exactly one of its two inputs carries its colour. It goes dark when both are lit — and equally when both are dark.
This is the tile that says “these two disagree”. A comparator. Paired with a Delay it even detects change on a single line — you simply compare now against a moment ago.
In left · bottom
Out top
XNOR Gate
The opposite of the XOR gate: it is lit while the inputs agree. Both lit — it emits. Both dark — it emits as well.
And that is the catch: an untouched XNOR gate on an empty grid is already firing. It is a light source until something disturbs it. Of all fourteen tiles it is the only one that is permanently on by itself.
It gives you a line that is normally on and that the player switches off. Everything else in the game starts dark.
In left · bottom
Out top
Half Adder
It adds its two inputs and keeps the two cases cleanly apart: with exactly one lit, the output on top comes on. With both lit, the output on the right comes on instead — the carry.
Never both at once. That is not a simplification; it is the arithmetic.
The XOR gate tells you that there is a difference. The Half Adder tells you which case you are in — and sends each one down its own line.
In left · bottom
Out top (sum) · right (carry)
Multiplexer
A set of points. Two beams arrive — one from below, one from the left — and one of them is relayed out of the top. Which one is decided by the right side: dark means bottom, lit means left.
It is the only tile that relays light instead of generating its own. That is why passing through it costs no tick, and why the very beam that went in comes out again — in any colour. Every other logic tile emits only its one colour, whatever hit it.
That is also why it reads differently from every other tile. Only its select side on the right is permanently in the tile's colour — that is the colour you have to switch it with. Both data sides and the output are dark while nothing is flowing there, and otherwise show the colour that is actually arriving.
So a multiplexer tells you what it is doing on its face: which colours are present, and which of them it is letting through right now.
In bottom (A) · left (B) · right (select)
Out top
Delay
Repeats exactly what arrives — one tick later. On the way up and on the way down alike.
You need it when two signals have to arrive together but have travelled paths of different length. Or when a pulse has to be held one tick longer than it lasts on its own.
Distance is not what counts — the number of tiles on the way is. Each one costs a tick.
In bottom
Out top
Edge Detector
It reports the moment light arrives — with a pulse of exactly one tick. After that it stays dark, however long the beam is held.
To get another pulse the input has to go out first and then come back. That is the difference between “light is present” and “light has just arrived”.
A laser is permanently on. The clocked tiles need a change. The Edge Detector is the adapter between the two.
In bottom
Out top
Tiles with a memory
What they do depends on what happened before, too.
These five have two outputs: Q on the right and Q′ on top. Q′ is always the opposite of Q — exactly one of the two is lit, once the tile has left its starting state. While it is still untouched, both are dark. The one exception is the JK Flip-Flop, which only has Q.
In the pictures below no light arrives and yet light comes out. That is not a mistake — it is the whole point of these five. They keep emitting long after the beam that triggered them is gone.
Flip-Flop
Turns a brief trigger into a lasting state. A beam from below sets it, a beam from the left resets it — and in between it keeps whatever it was given, long after the light is gone.
Two traps. While it is still fresh, resetting does nothing at all — the tile ignores its reset line until it has been set at least once. And the opposite side must be dark: you cannot reset while set is still held.
A beam that sweeps past once leaves it on forever. That is how a moment becomes a result.
In bottom (set) · left (reset)
Out right (Q) · top (Q′)
D Latch
A window. While the enable at the bottom is lit, the output tracks the data beam on the left continuously. Drop the enable and the tile freezes, keeping whatever was there last.
Every change needs the enable. Take it away and the tile is blind to everything happening on the left.
Capture a state and hold it — at exactly the moment you close the window again.
In bottom (enable) · left (data)
Out right (Q) · top (Q′)
D Flip-Flop
Same ports as the D Latch, different behaviour: it looks only at the instant the clock at the bottom comes on. Whatever is on the left at that moment is captured and held until the next clock edge.
The difference from the D Latch in one sentence: if the data changes while the enable is held, the D Latch follows it — the D Flip-Flop does not.
Hang everything that must change together off one clock. Then every tile grabs its input at the same instant.
In bottom (clock) · left (data)
Out right (Q) · top (Q′)
T Flip-Flop
One input only: the clock, at the bottom. Every time it comes on, the output flips. Two clock edges bring it back where it started — so its output runs at half the clock's frequency.
Two uses. As a frequency divider: chain several off a Beacon and you get half, a quarter, an eighth of the base period — that is how you get long waits out of a fast clock. As a switch: one line that alternates between on and off each time it is triggered.
In bottom (clock)
Out right (Q) · top (Q′)
JK Flip-Flop
The universal one. It can do everything the others do — what exactly is decided by two control lines at the instant the clock at the bottom comes on: J on the left, K on top.
J alone: set. K alone: reset. Both: flip. Neither: everything stays as it is.
It takes an input on top — the only one of the fourteen that does. In a rotated tile that side travels with it; look for where the triangle sits.
In bottom (clock) · left (J) · top (K)
Out right (Q)
Clocks
Two tiles that make time — one on its own, one on your command.
Beacon
Blinks on and off by itself, from the very first tick, with no input and nothing from you. It emits to the right. How long each half lasts is set by the level — a full cycle is twice that.
Anything that listens for clock edges needs a source like this, and the Beacon is the only one that runs without the player doing anything. It also turns timing itself into the puzzle: obstacles passable only during one half of a cycle.
The editor offers it twice — “starts lit” and “starts dark”. It is the same tile; you are only choosing which phase it begins in. Two beacons of equal length, one of each, run in antiphase.
In — none —
Out right
Gated Beacon
The same clock, with a switch. It blinks only while its enable side at the bottom carries its colour. Dark or wrong-coloured, and it stands still. It emits to the right, exactly like a plain Beacon, so one drops straight in for the other.
Unlike a plain Beacon it is not a light source at rest: it sits dark in the level until you switch it on.
And it pauses rather than starting over. Drop the enable mid-half and restore it, and you get the remainder of that half — not a fresh one. That makes it the first countdown in the game you can stop and resume.
In bottom (enable)
Out right
Building blocks
What to combine when you need something particular.
| You want … | Use | Why |
|---|---|---|
| … to turn a steady beam into a clock | Edge Detector | The clocked tiles need a change; a laser just shines straight through |
| … to slow a clock down | T Flip-Flop | Each one halves the frequency — chained, you get ½, ¼, ⅛ |
| … to make a moment permanent | Flip-Flop | Latches on the first hit and stays latched |
| … to make something permanent momentary | Edge Detector | Exactly the inverse of the Flip-Flop |
| … to merge two lines into one | OR · XOR · XNOR · Half Adder | Either will do → OR. Exactly one → XOR. Agreement → XNOR. Both cases kept apart → Half Adder |
| … to split one line onto two paths | Multiplexer | The select sits under your circuit's control, not chance's |
| … two signals to arrive together | Delay | One tick per tile — count tiles, not squares |
| … a line that is normally on | XNOR Gate | The only tile that starts on and stays on |
| … a countdown the player starts | Gated Beacon | It pauses and resumes instead of beginning again |
For the curious
The exact states, and the timing rules circuits fail on. For anyone who wants the whole picture.
The exact states — tiles that compute
| Tile | State | Emits | Leaves it when |
|---|---|---|---|
| OR | default | — | either input matches |
| lit | top | neither input matches | |
| XOR | default | — | exactly one matches (the other must be dark) |
| lit | top | both match or neither matches | |
| XNOR | default | top | exactly one matches |
| differ | — | both match or neither matches | |
| Half Adder | default | — | neither input is lit |
| one | top (sum) | exactly one input is lit | |
| both | right (carry) | both inputs are lit | |
| Multiplexer | default | relays bottom → top | the select on the right matches |
| switched | relays left → top | the select on the right goes dark | |
| Delay | default | — | the input matches |
| lit | top | the input goes dark | |
| Edge Detector | default | — | the input matches |
| pulse | top | unconditionally, on the next tick | |
| held | — | the input goes dark |
The exact states — tiles with a memory
| Tile | State | Emits | Leaves it when |
|---|---|---|---|
| Flip-Flop | default | — | set is lit and reset is dark |
| Q on | right (Q) | reset is lit and set is dark | |
| Q off | top (Q′) | set is lit and reset is dark | |
| D Latch | default | — | enable + data lit → Q on; enable lit + data dark → Q off |
| Q on | right (Q) | enable lit and data dark | |
| Q off | top (Q′) | enable lit and data lit | |
| D Flip-Flop | default | — | a rising clock edge |
| Q on (clock high / low) | right (Q) | next rising edge with data dark | |
| Q off (clock high / low) | top (Q′) | next rising edge with data lit | |
| T Flip-Flop | default | — | the clock comes on |
| Q on (clock high / low) | right (Q) | the next rising edge | |
| Q off (clock high / low) | top (Q′) | the next rising edge | |
| JK Flip-Flop | Q = 0 (clock low / high) | — | a rising edge with J lit |
| Q = 1 (clock high / low) | right (Q) | a rising edge with K lit |
The clocked tiles have two states per output, differing only in whether the clock is currently high or low. That is also why they look identical on the tile face: the clock beam is drawn on the grid anyway.
JK Flip-Flop — the truth table
| J (left) | K (top) | On a rising clock edge |
|---|---|---|
| dark | dark | hold — nothing changes |
| lit | dark | set — Q comes on |
| dark | lit | reset — Q goes off |
| lit | lit | toggle |
Tie J and K to the same source and you have a T Flip-Flop.
Timing rules circuits fail on
A single tick cannot win a crystal
A crystal only counts once it has been lit for two consecutive ticks — becoming lit costs it a tick itself, and the check happens only afterwards. The Edge Detector, though, emits for exactly one. Put a Delay in parallel if a pulse has to win a crystal.
A single tick does lose a bomb
A bomb has no such grace period, and it does not distinguish colours either: any colour, one tick, level lost. A pulse too short for a crystal is more than enough for a bomb.
Every tile in the chain costs a tick
Two signals that must arrive together have to pass through the same number of tiles — not merely the same distance. The one exception is the Multiplexer: relaying costs nothing.
A tile in motion does not count down
Push a tile that carries a timer and its counter stops, resuming only once the tile comes to rest. A Beacon you send across the grid loses the time spent travelling.
The first cycle can be one tick short
The laser ignites only after the first light pass. Anything driven by it therefore starts one tick later than the same circuit running from tick zero. After that it stays in phase.