Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Shatagelot Pwns, the Computing Project  (Read 1375 times)

Forumsdwarf

  • Bay Watcher
    • View Profile
Shatagelot Pwns, the Computing Project
« on: January 27, 2008, 07:07:00 am »

ABSTRACT:
The idea is to pimp your sculpture garden with proof of your superior nerdiness.  Spinning millstones prove you brought power and a waterfall proves you brought water and drainage.  Multicolor floodgates blinking like Christmas lights would prove you brought computing ... but serious bling would prove even to non-nerdy normal people just how nerdy you are.  You need a scrolling message!

Our goal is to use water logic to control a series of floor grates acting as pixels to continuously scroll the message "SHATAGELOT PWNS" from right to left.

LOGIC & MEMORY, PLAN A:
All logic and memory run on behind-the-scenes water logic.  The grates are just for display.  Each grate circuit would be programmed to copy the bit to its right except the rightmost, the "generators", which would be fed one pixel each from a serial stream of pixels making up a pixel row each of the hard-coded message.
The smallest practical ASCII font I could find was 4x6 (just a guideline -- we're not using fonts, just drawing an image that happens to be text.)  That's 6 pixel rows, then, at a length of 17 ("SHATAGELOT PWNS" + 2 spaces) * 5 (4 font + 1 space) = 85 bits per pixel row = 510 bits of static data.  We may well reduce that number by recording the pixel rows as "pen down" / "pen up" command bits, dropping "PWNS", squeezing some of the letter widths to 3 pixels, or scrunching the height down to 5 bits.
Each generator will need a way to address the next bit in its series.  Using the columns as banks for a single selector seems the right way to go, as the addresses on the generator column are all synchronized.  Ok, all generator rows will share a single input column selector.
The selector needs to increment as well as reset to 0 after it serves the 85th column of static bits.

LOGIC & MEMORY, PLAN B:
The message grates are both display and memory; the entire message is encoded on grates, with "hidden" grates holding whatever portion of the message isn't on the visible ones.  Every grate would have identical circuitry.  There would be no counters, adders, or banks.  There would be only one function: copy from source grate.
The problem with this idea is the copy handshake.  Grate L needs to copy Grate C and be copied by Grate R.  How does it copy Grate C yet still hand off its former state to Grate R?
There are solutions to the problem, but they raise the complexity of "Plan B" to something approaching "Plan A".

MEMORY:
If grates are a good way to store data we might use "Plan B" style memory in a "Plan A" style system design.  510 bits of static data seem a lot less daunting if we can express them as a compact block of floor grates.

TIMING:
It all has to be synchronized, even the copiers, as if they didn't know when to copy they'd make an unintelligible smear.
We might still get away with syncing up just the generator column if we add a "data ready" flag to the copier circuit; however, without perfect synchronization of the "data ready flags" coming off the generator column the message still smears.  Since the generator needs a clock anyway and since every clock pulse moves a bit through every pixel we might as well just make the clock universal and dispense with the "data ready" concept entirely.  Well, we weighed our options, always a good thing to do, but now we've decided: we need a clock and everyone must use it.
Each pixel circuit would either have to latch within the time allowed by an independently-timed clock in the manner of a real computer or the pixel circuits might latch based on a master "AND" circuit of ready signals from all pixels, which would in essence make the slowest pixel in any given cycle the "clock".  We might also do both, of course, latch the ready bit and clock pulse request bit and send a clock pulse when both go true, but given the enormous cost of water logic I'm thinking the traditional clock is best.  If your message smears, you're overclocked.  Deal with it.

"SHATAGELOT PWNS" would so pwn ... I'm sure there are other problems I haven't dealt with yet.  I'll come back to this later and see what you guys have to say.

Logged
"Let them eat XXtroutXX!" -Troas