A Tetris emulator through dwarfputer logic, controlling big 'drawbridge' pixels. For starters, don't worry about making it playable. Save that until later.
I just thought I ought to mention that I've already sketched out the rough idea behind it, so it wasn't entirely joking.
Let's just say that on a special tick, a randomiser consisting either a tethered animal or two, or a sloshing non-multiple-of-seven water cistern initiates (via pressure plates hard wired) one of the blocks, on demand, in one of its orientations. This pumps water into special cells related to the pattern (might as well be arranged in the same grid formation as the playing field, for ease of use, except there's two grid layers).
On a more regular tick, every cell with water is pumped into the next cell 'down' (same layer). There's pressure-plate logic to see if the lower layer (if not the 'bottom' row, when it's automatic) and one row further 'down' has water which causes the water to be dumped from the upper grid to the lower one and generates a "new piece" tick. If this happens while there's still water in the top-most row (in-game, just above the top of the display, and thus not even represented as such by the flipping drawbridges representing the presence of water in a more aesthetic sense) it triggers the end-game situation, drains all water from the lower level and starts it all off again.
The problem is that I believe you'd have to make the "fall" tick sequentially move each row (bottom to top), because setting them all going would just move the water-filled cells down to the bottom, or spread them out into non 7/7ths, depending on how the pumps react to the source/destination fill-levels.
As and when the ability for lateral movement is added, like the real thing it could wait a further tick before setting that in stone, as it were, and if you can 'mash the controls' quick enough, you can translate the piece over. (As per the 'falling', you'd need two "column-by-column" methods, one for going left, one from going right.) It seems easy enough to implement a way to translate the pieces sideways. It would be a similar system to them 'falling', except sideways. Where not blocked by falling-piece about to cross onto a 'fallen' bit of tile (handily, you're already differentiating between going left or right, so relatively easy to establish such cases), or indeed being at the edge it's heading towards, already, and thus an invalid move that is aborted and not even attempted.
I've not yet worked out the logic for rotations. And for now I'm ignoring the "drop fast" key (but could be a short-circuit enabled in the drop-tick section so that it just runs faster, without being too fast to regulate the row-by-row... and would also negate any attempt to shift or rotate the 'piece'). However, user control would be either by dwarf-pulled lever activation, or an animal/prisoner-logic wander across a suitable pressure plate on the way to an 'exit', as controlled by doors... and with other tried-and-tested methods to send them back in a loop to the holding cell while everything resets. I'm estimating that the (unhurried) 'Falling'-ticks might be made a few game-days long, with the appropriate governing mechanism, but that could be too generous.
Separate multi-source pressure-logic would detect completed lines in the lower ('fallen') grid, at the end of a "falling->fallen" transfer, drain those lines that satisfy the condition (through selective use of the more global 'reset' mechanism) and initiate a falling-like movement of all lines above. The 'falling tick' is subverted (easily done, with a mode change 'bit' of separate water-filled channel) and made to 'fall' the incomplete lines in the 'fallen' array instead of the 'falling' one. Similar set-up.
So, you see, largely possible!