![]() To help accomplish this, we have worked on multiple methods of compiling higher-level language to QFTASM. Here is an illustration of our processor architecture:įrom here it is just a matter of implementing Tetris on the computer. Rather, the data is accompanied by a clock signal as it flows around the computer, which means we only need to focus on local but not global timings of the computer. Our computer is also asynchronous, meaning that there is no global clock controlling the computer. We created an assembly language, known as QFTASM (Quest for Tetris Assembly), which guided the construction of our processor. Whereas the Wireworld computer used a rudimentary transport-triggered architecture, this project uses a much more flexible RISC architecture complete with multiple opcodes and addressing modes. We spent significant effort on designing an architecture that was both as non-esoteric and as easily-implementable as possible. You can also see all of the different metapixel types that we used in our computer: B/S as the black background, B1/S in blue, B2/S in green, and B12/S1 in red.įrom here we developed an architecture for our processor. You can see "electrons" (each representing a single bit of data) enter and leave the gate. ![]() Here is an example of an OR gate, each cell in this image is actually an entire OTCA metapixel. Already at this stage we are dealing with concepts similar to real-world processor design. ![]() The next step was to construct a variety of fundamental logic gates to serve as the basis for the computer. Although it is not possible to emulate Wireworld with OTCA metapixels, it is possible to assign different metapixels different rules and to build metapixel arrangements that function similarly to wires. Wireworld and the Wireworld computer served as important sources of inspiration for this project, so we sought to create a similar constuction with metapixels. These metapixels are capable of emulating any "life-like" rule. At each layer, we get further away from the difficulties of Life and closer to the construction of a computer that is as easy to program as any other.įirst, we used OTCA metapixels as the foundation of our computer. Rather than develop a Tetris game in Life directly, we slowly ratcheted up the abstraction in a series of steps. The underlying idea of this project is abstraction. Questions can be directed to our development chatroom. Table of ContentsĪlso consider checking out our GitHub organization where we've put all of the code we've written as part of our solution. Please distribute any upvotes or bounties across all members of the team. Each member will write about specific sub-topics, roughly corresponding to the areas of the project in which they were most involved. We would also like to extend our thanks to 7H3_H4CK3R, Conor O'Brien, and the many other users who have put effort into solving this challenge.ĭue to the unprecedented scope of this collaboration, this answer is split in parts across multiple answers written by the members of this team. Although the composition of the team has varied over time, the participants as of writing are the following: This project is the culmination of the efforts of many users over the course of the past 1 & 1/2 years. The pattern file, in all its glory, can be found here, viewable in-browser here. This began as a quest but ended as an odyssey. Initial live cell count - smaller count wins. Smaller changes to input - the fewest cells (for the worst case in your automaton) that need to be manually adjusted for an interrupt wins.įastest execution - the fewest generations to advance one tick in the simulation wins. Your program will be scored on the following things, in order (with lower criteria acting as tiebreakers for higher criteria):īounding box size - the rectangular box with the smallest area that completely contains the given solution wins. The displayed result must visibly resemble an actual Tetris grid. moving a piece left or right, dropping it, rotating it, or randomly generating a new piece to place onto the grid), counting a specific number of generations as waiting time, and displaying the result somewhere on the automaton. Your program will receive input by manually changing the state of the automaton at a specific generation to represent an interrupt (e.g. Your task is to build a cellular automaton using the rules of Conway's game of life that will allow for the playing of a game of Tetris. In addition, it is known that the Game of Life is Turing-complete. In Conway's Game of Life, there exist constructs such as the metapixel which allow the Game of Life to simulate any other Game-of-Life rule system as well. Here is a theoretical question - one that doesn't afford an easy answer in any case, not even the trivial one.
0 Comments
Leave a Reply. |