I've made a program that interprets the pixels in an image as logic gates, which allows you to design logic circuits in paint and then tweak and run them in my program. I don't really know all that much about circuit design. My background is more in high level computer science. I got started with playing with redstone in Minecraft, but found it quite slow (to build with and to execute), so I started trying to make something similar, but faster and easier to use. I'm curious what people who actually know something about logic circuit design think of the set-up, and what should be added to make it more useful or usable or fun. Here's the link to the program:
http://www.alrecenk.com/games/CircuitEditor/
The basic idea is that each pixel is interpreted as one of 7 blocks (by color obviously), which can each be either on or off (also indicated by color). It saves/loads both the types and states of blocks as PNG, but it does a sort of circuit compilation when opened in the program so that it can tick at a few kilohertz. I could probably make it faster, but so far it's been sufficient. The blocks are as follows (copied from the read-me):
Black : does nothing
White : Wire, turns on if connected to an output which is on
Red : Not, turns on if not connected to a wire that is on
Cyan : And, turns on if all connecting wires are on, also useful as a diode to prevent signals from feeding backwards from on OR or other operation
Blue : Output, turns on if a neighboring operation block is on (NOT,AND, or MEMOUT)
Green : Wire crossing, passes signals between left and right separately from signals going up and down. Neighbor positions are calculated as the first non-green block in each of the four directions. .This means green blocks can be placed between the interactions of any other blocks.
Yellow: Memory Input, Turns on if any neighboring wires are on
Purple: Memory Output, If connected to an on wire then it's value is set to the OR of all connecting memory inputs. Otherwise it holds it's value from the previous tick. Memory output blocks can also be used as switches when not connected to a memory input block.
Below is the fanciest circuit I've been able to make so far. It cycles between 4 8x8 images, by reading from a set of 32 8-bit registers.
http://www.alrecenk.com/games/CircuitEditor/
The basic idea is that each pixel is interpreted as one of 7 blocks (by color obviously), which can each be either on or off (also indicated by color). It saves/loads both the types and states of blocks as PNG, but it does a sort of circuit compilation when opened in the program so that it can tick at a few kilohertz. I could probably make it faster, but so far it's been sufficient. The blocks are as follows (copied from the read-me):
Black : does nothing
White : Wire, turns on if connected to an output which is on
Red : Not, turns on if not connected to a wire that is on
Cyan : And, turns on if all connecting wires are on, also useful as a diode to prevent signals from feeding backwards from on OR or other operation
Blue : Output, turns on if a neighboring operation block is on (NOT,AND, or MEMOUT)
Green : Wire crossing, passes signals between left and right separately from signals going up and down. Neighbor positions are calculated as the first non-green block in each of the four directions. .This means green blocks can be placed between the interactions of any other blocks.
Yellow: Memory Input, Turns on if any neighboring wires are on
Purple: Memory Output, If connected to an on wire then it's value is set to the OR of all connecting memory inputs. Otherwise it holds it's value from the previous tick. Memory output blocks can also be used as switches when not connected to a memory input block.
Below is the fanciest circuit I've been able to make so far. It cycles between 4 8x8 images, by reading from a set of 32 8-bit registers.