1 Automata Copyright © 1991 by Jerry Mack. All rights reserved. Automata is an extremely versatile, cellular-automaton simulation. Virtually every aspect of the simulation can be altered, saved and later recalled. Also, Automata supplies many powerful editing functions (e.g. patterns, rotations, reflctions, and more) for creating and modifying cell configurations. Additional features include editable icons, an immense variety of rules from which to choose, "music" which changes as the cell configuration changes and methods to speed execution from 3 to 60 (or more) generations per second. Introduction: A cellular automaton consists of the following: 1) a collection of cells; 2) a set of states, important because each cell must be in one of these states at all times; and 3) a set of rules which determine how the cell-states "evolve" with time. The cells in Automata are arranged in a 100x100 array known as the playfield. Each cell occupies a small square in the playfield, and each square has up to eight neighboring squares which touch it on a side or corner. Cells along the edges of the playfield have fewer than eight neighbors, but they can be treated as if they have more neighbors by connecting the edges. The way in which the edges are connected is known as the topology of the playfield. More on topologies later. Take any cell in the playfield and call it the home cell. Each home cell has a neighborhood associated with it. This neighborhood usually consists of some or all of the eight cells surrounding the home cell. Normally, each cell in the playfield has the same type of neighborhood. We can specify a "rule of evolution" for a cell based upon the home cell's state and the states of its neighboring cells. For example, we might require that if the home cell and three of its neighbors are ON during this generation, then the home cell will be ON during the next generation. However, if the home cell and MORE than three of its neighbors are ON during this generation, then the home cell will be OFF during the next generation. Another example can be taken from John Conway's popular game known as "Life": 1) If the home cell is ON and two or three of its neighbors are on, the home cell will be ON during the next generation. 2) If the home cell is OFF and three of its neighbors are on, the home cell will be ON during the next generation. 3) Otherwise, the home cell will be OFF during the next generation. The neighborhood in Life consists of all eight cells surrounding the home cell, and each cell can be in one of two states: ON or off. This simple rule gives rise to patterns which spin, crawl, breed, evolve and perform other amazing feats. Remarkable, when you consider that these patterns are no more than bits in the computer's memory. 2 To observe some of these Life patterns, perform the following actions immediately after starting Automata: 1) Click on the Evolution gadget, putting you in Evolution mode. 2) Click on the Life gadget, giving you access to the Life models. The default rules (for the black background) are Conway's rules. 3) Click on the Accept gadget, returning you to the Main screen. 4) Click on the Population gadget so you can edit the cell patterns. 5) Click on the Randomization gadget (middle of the screen at the (right edge, a box with a bunch of dots in it) once or twice. This will add cell states at random locations on the playfield. Alternatively, you may click the left mouse button when the pointer is in the playfield. This will turn ON or OFF the cell underneath the pointer. If you hold down the left mouse-button while moving the mouse, you will continuously change the cells over which the pointer passes. 6) Click on the Accept gadget to return to the Main screen. 7) Click on the Flag gadget to start the evolution. You can stop the action (and regain control of Automata) by clicking the left mouse button. Among the many features of Automata is the use of four different ON states instead of just one. Thus, your rules of evolution can allow ON states to evolve into other ON states or into the OFF state. Also, you may have up to four different automata on the playfield, each with its own rule of evolution. Thus if you put the black automaton on the left half of the screen and the white automaton on the right half, then any patterns which cross from one side to the other will evolve differently than before. Just how differently depends on your choice of rules. The Evolution screen was designed to allow you to quickly change your rules and observe how the patterns respond. Likewise, many powerful and easy-to-use commands have been placed in the Populate screen, eliminating much of the tedium in creating and modifying patterns. The Music screen gives you considerable leeway in "composing" the music (noise?) the patterns can create. Unfortunately, I did not have time to implement the digitized sounds I had hoped to use (violin, flute, etc.). Thus, only a simple sine-wave pattern is available for sounds. If there is enough interest, I may correct this deficiency. The Icons screen allows you to change the icons for each state. The different icon sizes represent the different zoom factors available. You will need at least 768K of memory to run Automata. Sorry... Finally, there are many things I dislike about Automata, (the bugs, the region-handling, the music(?), etc.) but I can't spend any more time on this project. I hope you can find some enjoyment from Automata. Jerry Mack 3 I) Main Screen Let me cover the features of the right hand side of the display, known as the control panel. First, there is the Topology gadget, which allows you to select what type of topology to assign to the playfield. Clicking on this gadget creates a pop-up menu underneath the pointer, allowing you to choose one of fifteen topologies. The topology assigned to the playfield when Automata starts up is the Torus, which connects the top and bottom edges together, as well as the left and right edges together. Thus, the cells along the top edge have the cells along the bottom edge as their neighbors and vice-versa (similarly for the left and right edges). Cells at the corners of a Torus have neighbors on every edge of the playfield. The available topologies are as follows: Square: Do not connect the edges; R Cylinder: Connect the top row to the bottom row; C Cylinder: Connect the left column to the right column; R Mobius Strip: Twist-connect the top row to the bottom row (connect the lower right cell to the upper left cell, etc.); C Mobius Strip: Twist-connect the left column to the right column; Torus: Connect the top row to the bottom row and the left column to the right column; UL Cone: Connect the left column to the top row; UR Cone: Connect the right column to the top row; LL Cone: Connect the left column to the bottom row; LR Cone: Connect the right column to the bottom row; ULLR Sphere: Connect the left column to the top row and the right column to the bottom row; LLUR Sphere: Connect the left column to the bottom row and the right column to the top row; R Klein Bottle: Connect the left column to the right column and twist-connect the top row to the bottom row; C Klein Bottle: Connect the top row to the bottom row and twist-connect the left column to the right column; Projective Plane: Twist-connect the top row to the bottom row and the left column to the right column. Note: R means row-connected, C means column-connected, UL means upper-left-connected, UR means upper-right-connected, LL means lower-left-connected, LR means lower-right-connected, ULLR means upper-left-to-lower-right connected and LLUR means lower-left-to-upper-right connected. 4 Next, the Neighborhood gadget allows you choose which of the home cell's nearby cells will be considered as neighbors. Clicking on the Neighborhood gadget displays a pop-up menu beneath the pointer, allowing you to easily choose a neighborhood. The dark cell in the center of each neighborhood represents the home cell, and the light cells surrounding it represent which cells will be considered as its neighbors during evolution. The Switching item in the Neighborhood pop-up menu demonstrates another feature of Automata: dual neighborhoods. You can have Automata switch between neighborhoods automatically as often as you wish. The current neighborhood is indicated by the triangular pointer between the two neighborhood icons (underneath the Neighborhood gadget). Choosing the Switching item brings up a requester, allowing you to change the current neighborhood and to decide when to switch neighborhoods. The Sound gadget (below the Flag gadget) allows you to turn on (and off, fortunately) the "music" feature of Automata. Each of the four audio channels of the Amiga is assigned an ON state. The note and volume output by each audio channel is determined by the number of cells in the channel's associated state. The Flag gadget, as mentioned, allows you to start and stop the simulation. Actually, any mouse click will stop the simulation. Another method of starting/stopping the simulation is the Single-step menu item under the Special menu. This item starts the simulation for one cycle and then stops it. Use this when you want to examine closely how a particular configuration evolves. The Multi-step menu item is also related to the Flag gadget, in that you can set the number of generations Automata will evolve before stopping when you click on the Flag gadget. Thus, if you want the simulation to stop every fifteen cycles, choose the Multi-step item, enter "15" into the string gadget, and click on the Accept gadget. Whenever you click on the Flag gadget, Automata will stop the simulation after 15 cycles (or after a click of the left mouse-button). In case you didn't notice, I used the word cycles instead of generations the past few paragraphs. That is because the unit of evolution in Automata is the cycle. The unit of evolution for each state is the generation. Thus, each state may take more than one cycle before it evolves. You can use this feature to create fast-breeding states and slow-breeding states. Be careful, though, as slow-breeding states can be affected by other states (e.g. predators) while waiting to evolve. You choose the number of cycles each state waits before evolving by selecting the Generations menu item under the Special menu. Next in line in the Special Menu is the Updates item, which allows you to specify how many cycles to allow the playfield to evolve before redrawing the display. The default is to redraw the playfield every cycle, so that you can observe all the changes. If you only want to observe every fifth cycle, then choose this menu item, type "5" into the upper string gadget and select the Accept gadget. Now, whenever you turn on the simulation, the display will redrawn only once for every five cycles of evolution. 5 The Updates menu item is one way to speed up the evolution of Automata. A more effective way is the use of Evolve regions, which restrict evolution to the region of the playfield you specify. Selecting the Evolve region menu-item under the Special menu highlights the current Evolve region, which is the entire playfield when you start Automata. If you press the left mouse button over one corner of the new Evolve region, drag the mouse to the other corner and release the mouse button, you will have specified a new Evolve region. All evolution will be restricted to this Evolve region, allowing substantial improvements in execution speed. Note: when the Evolve region is visible, you may keep redrawing the region until you are satisfied with it. You can remove the Evolve region display by clicking the mouse in the playfield, clicking on a gadget or making a menu selection. The final item in the Special menu is the Screen to back item, which allows you to access the other tasks running on your Amiga. No machine hogs here. The Display menu highlights the accounting features of Automata. These dislplays slow down the simulation somewhat, but offer information which will be of interest at various times during the simulation. The View menu allows you change your view of the playfield for better inspection and/or population. Specifically, you may zoom in (a maximum of two times) or zoom out; pan left, right, up or down; and you may quickly move to the corners or center of the playfield (useful when you've zoomed in). The Project menu allows you to save and restore virtually every feature of Automata. A caveat is in order: the file requester I am currently using does not work well, making it difficult to create new files. After several attempts to create a new file, it should send the name to Automata even after you click on the Cancel gadget. If you have the requester re-examine the contents of the directory, you will find your file and can restore it. Alternatively, you may create a dummy file from the shell and choose that file as you save file. I want to point out a final feature visible in the Main screen: multiple automata. As I mentioned, you can choose from an IMMENSE variety of evolutionary rules. What I didn't mention was that you can have different rules applied at different cells in the playfield. Automata allows you to have four sets of rules active, each set being referred to as an automaton. Thus each cell has an underlying automaton affixed to it, as well as the state currently assigned to it. The rules assigned to a state do not change during evolution, for they determine how the cell will change states as it evolves. The states, of course may or may not change as the cell evolves. The different rules are denoted by the underlying automaton icon assigned to each cell. The default icons are simply the colors black, dark grey, light grey and white. The state icons are drawn over the automaton icons, but the automaton icons are always present, allowing you to determine which set of rules apply at each cell in the playfield. The remaining gadgets in the Main screen (to the right of the Flag and Sound gadgets) activate the other modes of Automata. These modes allow you to modify the rules, change the cell configurations, alter the music created by the state configurations and modify the icons used to represent the states and automata. 6 II) Evolution Models The number of rules available with eight neighbors and five states is IMMENSE (approximately 10^1730 or 10 followed by 1730 zeros). Most cellular-automaton simulations give you a choice of one rule, though some give you up to a dozen or two. Automata gives you a LOT more (e.g., the Ecosystem Model alone contains more than 10^67 different rules). With such an IMMENSE variety of rules from which to choose, you need an easy and quick method of changing rules, since the whole point of this simulation is discovering new types of evolution on an automaton (and having fun, of course). The last thing you want is to spend 15 minutes reading a manual every time you want to change a rule. Thus, I designed these models to be as intuitive and flexible as possible. All of the models have four icons displayed at the bottom of the screen, left of the Accept gadget in the control panel. These icons allow you to have four separate sets of (evolution) rules present on the playfield at any time. Clicking on one of these icons brings up the rules currently defined for the associated automaton. You can then change those rules and see what kind of configurations emerge. To find out which set of rules are in effect at any cell in the playfield, you need only look at the underlying automaton icon for that cell. Because cells can be in several ON states, it is possible for a cell to satisfy the conditions for more than one state at a time. In other words, a cell might be able to evolve into more than one state in the next generation. In order to resolve these conflicts as easily as possible, any cell in such a quandary will be OFF in the next generation. All of the evolutionary models have two main menus: a Project menu, with which you can save the current model or restore a saved model; and the Icons menu, with which you can view the icons in whatever size you are most familiar. Following are brief descriptions of each of the models available in Automata, from which you choose evolution rules. Life Model The icons on the left represent the ON states, and the numbers to their right represent the number of neighbors in that state required for the birth or continued life of a cell. For example, suppose the number 3 lies below the egg and to the right of the first state-icon. Then any cell which is OFF and has three neighbors in the first state will itself be in the first state the next generation. Likewise, suppose the numbers 2,3 lie below the sunrise-by- the-river icon and to the right of the first state-icon. Then any cell which is in the first state must have either two or three neighbors in the first state to remain in the first state the next generation. In the default rules, all of the states behave the same in a given automaton, though they behave differently for different automata: Neighbors of same state Neighbors of same state Automaton needed for a birth needed to avoid death black 3 2 or 3 dark gray 2 2 or 3 light gray 2 3 or 4 white 2 1 or 2 7 To change any of the values for the birth or life requirements, click on the left or right arrow in the appropriate row and column. The left arrow decreases the value(s) above it, while the right arrow increases the value(s). Any changes you make with the arrows apply only to the current automaton. To change the rules for another automaton, simply click on the gadget surrounding the desired automaton. Ecosystem Model The icons on the lower left of the screen represent the ON states available. Clicking on one of these brings up the rules applying to that state when it is in the selected automaton. The egg and sunrise icons have the same meaning as in the Life Model, only now you have a wider selection of neighbors for them. When the button image behind a number disappears, that number has been selected. Thus, the birth and life rules for the first (leftmost) state in the first (black) automaton are the same as in the Life Model: three like neighbors for a birth and two or three like neighbors to avoid death. The other two icons represent a predator (far left) and a virus (to the immediate right of the predator). The three states below these two icons represent the states other than the selected state. The selected state can prey upon or infect any of these states. The numbers below the predator and virus icons represent the number of neighbors required for the selected state to prey upon or infect another state. If a cell is preyed upon, that cell will be OFF next generation. If a cell is infected, that cell will become the selected state next generation. As always, conflicts result in the cell being OFF next generation. As an example, take the predator and infection rules for the first (black) automaton. If you select either of the first two states (lower left of the screen), you will find that neither of them preys upon or infects the other states. However, if you select the third state, you will find that it can infect the each of the remaining states. Select the prey state at the upper-left of the screen to examine/modify the way in which the third state preys/infects the other states. The default rules are as follows: if a cell in state #3 has 7 or 8 neighbors in state #1, then that cell will be in state #1 next generation; if a cell in state #2 has between 4 and 8 neighbors in state #1, then it will be in state #1 next generation; and if a cell in state #4 has between 5 and 8 neighbors in state #1, then it will be in state #1 next generation. Following the same steps for state #4 instead of state #3 shows that state #4 only preys upon two of the other states. Thus, if a cell in state #1 has 2 or 3 neighbors in state #4, then the cell will be empty the next generation. Also, If a cell in state #2 has 1, 2 or 3 neighbors in state #4, then the cell will be empty next generation. By selecting different combinations of automaton, predator/virus and prey icons, you can quickly change the behavior of the patterns of states. Species Model Each non-empty cell evolves from state #1 to state #4 to an empty (dead) cell. Thus, a cell in state #1 will be in cell #2 next generation, in state #3 the following generation, then on to state #4 and will be empty again the generation following that. 8 Births are allowed when an empty cell has the proper number of breeding neighbors. A neighbor is considered a breeder if it is in state #2 or state #3. The default rule for the black automaton allows an empty cell to give birth (i.e., become state #1 next generation) if between 2 and 5 of its neighbors are breeders. Cycles Model The key to this model is the Palette, which allows you to choose an active state. This active state can then be inserted into the boxes to the right of an arrow or a colon. Look at the box labelled Cycles: this box shows you how a cell in a non-empty state will evolve the next generation. For example, in the default rules, the first line in the Cycles box has state #1 evolving into state #3, state #2 evolving into the off state (N stands for None), state #3 evolving into state #2 and state #4 evolving into state #3. Thus, a cell in state #4 would be in state #1 the next generation, state #3 the following generation, state #2 the generation after that and would finally become empty the subsequent generation. The Births section (in the center of the screen, top to bottom, 11 rows with colons in them) details how empty cells will evolve based upon the type of neighbors they have. In the row near the top of the screen, again using the default rules, an empty cell having at least one neighbor in each state would be in state #2 the next generation. Likewise, a cell with at least one neighbor in state #1, at least one neighbor in state #2 and at least one neighbor in state #3 (but no neighbors in state #4) would be in state #3 the following generation (second row). You can change the Birth and Cycle rules by clicking the mouse while the pointer is in any of the dark blue boxes to the right of a colon or an arrow. The contents of the selected box will be replaced with the icon of the currently selected state in the Palette. Thus, if you selected the N icon in the Palette box (no state) and clicked in each of the boxes to the right of arrow in the Cycle box, then all non-empty cells would be empty the next generation, Modulo Math Model In this model, each cell is a computer that you can program. Every state has associated with it a value and an operation. The value of the state can be found below the state's icon on the left of the screen. The operation associated with the state can be found to the right of the icon representing that state. The available operations are as follows, reading from left to right: addition, subtraction, multiplication, integer division, modulo division and exponentiation. The value of the state can be modified by clicking the left mouse- button when the pointer is over the value. A pop-up menu appears allowing you to select a value. If the chosen value is being used by another state, then that state's new value is the chosen state's old value. You may change the operation of a state by selecting the new operation. At the start of every generation, each cell is assigned the value associated with its state (empty cells are assigned the value 0). Each cell then has its value modified by its neighboring cells, starting with neighbors in state #1 and continuing sequentially through neighbors in state #4. 9 In order to explain this model in more detail, I shall use examples from the default rules for the black automaton. The first state has a value of 2 and the operation of addition. Thus, whenever a cell has a neighbor in state #1, the value of 2 is added to the current value of the cell to yield the cell's new value. After this operation, the cell's current value is modified by modulo division, the base being the value shown at the lower-left of the screen. This modulo base may be changed via the Modulo menu available only in this model. This operation described above is repeated for each of the cell's neighbors in state #1. Thus, if a cell has four neighbors in state #1, then 2 would be added to the cell's value (modulo 10) to yield the cell's new value; this would be repeated three more times to yield the cell's value after interacting with its neighbors in state #1. After finishing with state #1, the cell would interact with its neighbors in state #2, state #3 and state #4 (in that order). Empty neighbors have no effect upon the value of the cell. The new state of the cell is determined by the value the cell has after interacting with its neighbors: if the new value corresponds to a value associated with a state, then the cell will be in that state the next generation; otherwise, the cell will be empty the next generation. Finally, the method in which the operations are carried out requires explaining. In all cases, the value of a cell is operated UPON by the value of its neighbors. So if a cell currently has the value 4 and the neighbor being tallied has the value 2, then the possible operations are as follows: ADDITION 4 + 2 = 6 SUBTRACTION 4 - 2 = 2 MULTIPLICATION 4 * 2 = 8 INTEGER DIVISION 4 / 2 = 2 MODULO DIVISION 4 % 2 = 0 EXPONENTIATION 4 ^ 2 = 6 The value for exponentiation is 6 instead of 16 because each operation is divided modulo 10 (in the default rules). Circuits Model This model is similar to the above model, except that the values are bit-patterns and the operations are the logical operations AND, OR, XOR, NOT, NAND, NOR and XNOR. The operations are carried out in the same manner as in the Modulo Math Model, starting with neighbors in state #1 and ending with neighbors in state #4. Also, because these are logical operations upon bit-patterns, no modulo division is performed after each operation. If a cell has a bit-pattern of 0101 and the neighbor being tallied has a bit-pattern of 0011, then the new bit-pattern of the cell is as follows for each of the logical operations: 0101 AND 0011 = 0001 0101 OR 0011 = 0111 0101 XOR 0011 = 0110 NOT 0101 = 1010 0101 NAND 0011 = 1110 0101 NOR 0011 = 1000 0101 XNOR 0011 = 1001 10 Voting Model The icons represent four political factions: liberal (dove), conservative (hawk), independent (middle-of-the-road) and extremist (time bomb). The default voting rule is that the the plurality wins, meaning that a cell will evolve into the state of which the cell has the most neighbors. Thus, if a cell has three neighbors in state #1, two neighbors in state #2, two empty neighbors and one neighbor in state #4, then the cell will be in state #1 the next generation (regardless of the cell's current state). You can limit or disable the default rule via the Elect menu, which allows you to specify bounds within which a state can "win" an election. For instance, suppose a cell has three neighbors of state #3 and no others. Normally, that cell would evolve into state #3 next generation. However, if the election limits are from 4 to 6 (bottom left corner of the screen), then the cell will be empty next generation because the plurality wasn't large enough. You can alter the default rule further by invoking the special rules of "siege" conversion, internal dissent and persuasion. Any cell which has the specified number of neighbors for each special rule will invoke the special evolution indicated. As in all the models, any conflict results in an empty cell next generation. The range of values which can invoke a special rule can be changed by clicking the left mouse-button when the pointer is over that rule's value-box. A pop-up menu will appear which allows you to select a new range of values or to disable the special rule. Consider the default rules for the black automaton: in the following explanation of these special rules, I shall use the synonyms HAWK, MODERATE, DOVE and EXTREMIST for states #1, #2, #3 and #4, respectively. Then the special rules are as follows: If a cell has and the cell then the cell as neighbors is in state will become a(n) Siege conversion #1: 4 or more HAWKS DOVE EXTREMIST Siege conversion #2: 5 or more DOVES HAWK EXTREMIST Internal dissent: 3 or more EXTREMISTS EXTREMIST EMPTY Persuasion #1: 5 or more DOVES MODERATE DOVE Persuasion #2: 4 or more HAWKS MODERATE HAWK The five special rules above, if activated, have precedence over the plurality rule, regardless of the election limits. As always, any conflict over the future of a cell results in that cell being empty next generation. Battle Model This model is designed to create pattens which can "move" about the screen like spaceships in a video game. While the general rules are fixed, you can specify what happens when ships collide or are near a collision. In the following discussion, I shall use the synonyms SHIP #1, COLLISION, SHIP #2 and ENGINE for states #1, #2, #3 and #4, respectively. 11 The three rules you can modify are as follows: 1) When a cell which contains SHIP #1 has a neighbor containing a COLLISION, you can choose for the cell to contain either a COLLISION or SHIP #1 next generation. 2) When a cell which contains SHIP #2 has a neighbor containing a COLLISION, you can choose for the cell to contain either a COLLISION or SHIP #2 next generation. 3) When a cell contains SHIP #1 has a neighbor containing SHIP #2, you can choose for the cell to contain a COLLISION, SHIP #1, or SHIP #2 the next generation. For those interested in recreating this model (or some variant) on their own, I include the pseudocode for the one-ship case; the two-ship case is too complex to describe here. Since only one ship is allowed, no collisions are possible, so there are only three states possible: ship, engine and empty. Here is the algorithm (comments are in parentheses): IF cell IS engine THEN cell BECOMES empty ELSE IF cell IS ship cell BECOMES engine ELSE (cell IS empty) IF cell HAS 2 ship-neighbors THEN cell BECOMES ship ELSE cell REMAINS empty ENDIF ENDIF This rule is simple enough that you can experiment on your own by adding collisions, more ships, etc. If there is enough interest, I may release the two-ship algorithm that I use. III) Population Mode This is essentially a sophisticated paint mode, except you are working with cell states and automata instead of colors. All of the features below operate upon the Edit region, unless otherwise specified. The Edit region is a rectangle on the playfield which you can resize by selecting the Edit region menu-item under the Special menu. You then press the left mouse- button (don't release it yet) when the pointer is at one corner of the new region and drag the pointer to the other corner, where you finally release the left mouse-button. The contents of the region are copied to a buffer for later pasting. The Paste All menu item allows you to paste the entire contents of the edit region anywhere in the playfield (an outline of the new region will follow the pointer). The Paste some menu-item is similar, except that it only copies non-empty cells in the edit region. Finally, the Paste one menu-item only copies the cells in the currently-selected state. To get out of copy mode, select one of the patterns in the Pattens menu. 12 The upper gadget allows you to choose between the cell states and the automata. The palette will display the state (automaton) icons when you are modifying the cell-state (automaton) configurations. The name below the palette refers to the pattern which will be on the playfield where you click the left mouse-button. Thus, in Point mode you will change individual cells, whereas in Block mode you will change four cells at a time. There are 64 patterns available in the Patterns menu plus the Point mode in the Special menu. The row-and-column indicator displays the row and column of the cell under the pointer. When the pointer moves out of the playfield, the row and column numbers are erased. The Replace gadget allows you to replace one state/automaton with another (remember, these operations are performed upon all cells within the Edit region). When you click on this gadget, a prompt appears asking you to select an icon. The state/automaton you select will replace whatever state/automaton was previously selected. The Swap gadget works much the same as the Replace gadget, except that any occurrence of either of the two states/automata will be replaced by the other state/automaton. The Remove gadget removes all instances of the selected state/ automaton from the Edit region. The Clear gadget removes all states from the Edit region when editing cell states. When editing automata, automata #2, #3, and #4 will be replaced by automata #1, since each cell must have an automaton (a set of evolutionary rules) assigned to it. The Flood gadget will insert the selected state/automaton into every cell of the Edit region. The Undo gadget will undo the most recent populate operation performed. The Reflection gadgets are, from left to right: ULLR (upper-left to lower-right), LLUR (lower-left to upper-right), Vertical and Horizontal. The names refer to the direction within the Edit Region through which the cells are reflected. Thus, if the Horizontal reflec- tion is selected, the cells in the Edit reflection will be reflected across the vertical line through the middle of the Edit region. The Randomization gadget fills a random distribution of cells in the Edit region with the selected state/automaton. The density at which it populates cells within the region can be modified by choosing one of the menu-items below the Randomization Density menu-item in the Special Menu. The Rotation gadgets (90°, 180° and 270°) work the same as the Reflection gadgets, with the exception that the cells within the Edit region are rotated about the center of the region instead of being reflected. Since only square regions can be rotated, the rotation will only be performed upon the largest square which can fit wholly within the Edit region. The Translation gadgets shift the Edit region Left, Right, Up and Down. The shifts occur entirely within the Edit region; thus, a Right translation will move the right-most column in the Edit region to the left-most column in the region. The number of cells to shift is given by the value in the integer gadget right of the Translation gadgets. 13 The Project Menu allows you to save/restore specific regions of the screen. You can save/restore either cell-state or automaton patterns. When saving, only the cell states or the automata are saved, depending upon which is being populated (see gadget at top of control panel). The View menu allows you to pan and zoom through the playfield, which can significantly reduce the effort involved in creating precise patterns of cell states and/or automata. IV) Music(?) Mode Automata allows you to create "music" based upon the cell patterns at each generation. Each of the ON states is assigned to one of the Amiga's audio channels. After each generation, the number of cells in each state are counted and the notes and volumes to be played are calculated. Then the calculated notes are played until the next generation or until the "music" is turned off by clicking the Music gadget (earmuffs when off, musical notes when on). The notes to be played are calculated as follows: If the number of cells in a state fall within the Low and High thresholds for that state, a note will be played in the associated audio channel. The note to be played will fall between the Low and High note. There is a direct relationship between how far is the note played from the Low note and how far is the number of cells in that state from the Low threshold. The lower the number of cells in that state (while still between the thresholds), the lower the note will be played. Likewise, the higher the number of cells, the higher the note played. The Project menu allows you to save and/or restore Music config- urations. The Icons menu allows you to display the icons with which you are most familiar. V) Icons Mode This is a paint mode which allows you to modify the icons used to represent the states and automata. Because you can zoom in and out to three levels within the playfield, there are three sets of icons which you can edit. The Small, Medium and Large gadgets switch between those three sets of icons. Below the icon-size gadgets lies the color palette. The selected color is the one which most paint operations will use. If you click the left mouse-button inside the magnified image of the selected icon, the underlying pixel will be changed to the selected color. The only exception is color #1 (black), which is actually transparent for cell states, allowing you to see part of the underlying automaton. The upper row of icon gadgets (below the magnified icon) are the icons of the cell states; the left column of icon gadgets are the icons of the automata. Selecting any one of these gadgets will display a magnified image of the associated icon, allowing you to make pixel-level changes to the icon. The matrix of icon images displays every possible combination of cell states overlying automata. This is of use in avoiding icons which are difficult to distinguish from each other, especially when the underlying automata icons show through. 14 The Copy gadget allows you to copy one icon to another. When you select the Copy gadget, a prompt appears asking you to select an icon. The icon you select will be replaced by the previously selected icon. The Swap gadget works much the same way as the Copy gadget, except the two selected icons are swapped. The Dye gadget allows you to replace a color in an icon with another color from the palette. When you select the Dye gadget, you are prompted to select another color. The color you select will replace the previously selected color within the currently selected icon. The Flood gadget will fill the selected icon with the selected color. The Undo gadget will undo the most recent icon-edit operation. The Reset gadget will restore the icons which were in effect when you entered the Icons Mode. The Project Menu allows you to save/restore icon images you create. If you don't like what you see, you can always change it. Bugs (things I did not have time to fix or replace): 1) The Randomization Density menu-items in the Population mode do not work correctly in this version. I could neither find nor recreate the original version of Automata, so you'll have to be satisfied with this beta version. Sorry... 2) The file requester (from Inovatronics) won't allow you to create files, at least not easily. Thus, if you want to save the environment of any portion of Automata, you might want to first create a dummy file with the desired name. 3) When you run Automata, the memory allocated for the Micro and Led fonts is not deallocated. Thus, the first time (and ONLY the first time) you run Automata, you will see a loss of about 5K of memory. This memory isn't really lost, since these fonts can be allocated by other tasks. 4) I wanted to replace the simple sine-wave patterns I send to the audio channels with digitized samples of violins, flutes, or some other instrument. I probably would have allowed you to load digitized sounds from SMUS or IFF files or whatever. VI) Limitations While Automata was designed to work in a multitasking environment, it is possible to overload the Amiga when running Automata. Running two copies of Automata is one way to crash the Amiga (but only if both copies are drawing to the screen). Other tasks which directly access the blitter may also experience difficulties when Automata is running, though I have not tested this exhaustively.