Tetris

Build image: 
In-game name (NO VISITORS! Must be LEARNER rank or higher!): 
Hunters00Gauge
Builder name(s) and current ranks: 
Hunters00Gauge: Regular+
Creation location: 
1190 116 -2124
Machine Features: 

The Tetris is able to generate a piece from a 7 resetting bag, shift pieces left and right, rotate.
It has predictive collision detection for shifts and rotations.
the next 2 pieces are shown under next on the left bar and the piece in hold is underneath hold.
the current action is shown in the very bottom left.
the high and current score are shown in the top left (note that it does not use the original points system and each line cleared is just 1 point) you can clear up to four lines at a time.
There is a ghost render which is shows where the piece will land making it infinitely easier to line things up.
the ghost renderer is done by first rendering the tetris piece tiled vertically at the same x coordinate of the actual piece with a distance of 4 vertically between each piece.
this is then AND'd with the savedata and then shifted down one, this is done 4 times.
then the outputs of the AND's are bused to the right and vertically OR'd in 4's.
then these outputs are first checked to be below the y height of the pieces.
5 bits of information (the piece height) is bused over and then put into a vertical decoder and everything at and above the tetris piece gets disabled to stop the ghost from rendering ontop of overhangs.
then the highest still on line decides the y height of the ghost piece.
it is possible to hold your current piece for later and swap it out with whatever is in hold already.
if you have already held you cannot hold again until a new piece is generated.
The tetris can save pieces to the display.
the scoring displays actually don't use any BCD conversion instead there are 2 add 1 machines, one for the High score and one for the current score.
whenever the score is incremented the display is just pulsed and that increases the number and if the high is equal to the score then they are both incremented.
the tetris piece can instantly go to the ghost substantially increasing playability by pressing the "to ghost" button.
the piece moves using 2 barrel shifters: one vertical and one horizontal used to move them on those axis.
the rotation collision detection does the same thing but instead rotates the sprite first and compares the output to the savedata of the screen.
on the opposite side of the display there is a second barrel shifter which can display a 10x13 programmable image to the display with 5 possible but only 3 are actually used.
it decides where on the screen that the image will be rendered by rendering just above the highest savedata.
in the scenario of losing or ending the game the highest savedata will be saved into a temporary memory around back and the entire board from that point and all the way to the bottom of the screen left to right will be a solid wall of on pixels.
this is to hide the board being cleared and because they will slowly disappear from top to bottom and the image will scroll down with it.
it will say "game" and then a few seconds after its done scrolling it will change to "over" and after a few more seconds change to "play" indicating that its done and is playable again.
whenever the game is paused the board is hidden same with the next pieces and hold pieces during this the play screen is rendered.
there is not a queue but every action will be saved until they can be executed but you cant do multiple of the same move and the clock will always do them in the same order.
The order is: rotate, shift, move down and if necessary pause for piece save.
the clock is 48t per cycle and over three cycles that is 144t or 14.4 seconds per clock, that is the fastest tetris (not built solely on instant repeaters) on the server (so far).
there is a column on the right showing the current pieces height.
which is useful for whenever the piece is overlapping the ghost.
the display is not synced, I attempted to but with all the different delay from the 3 different things that render onto one screen its slightly difficult to sync all of them.
the display in the bottom left can show seven different icons and they have priority for each other.
Here is a list of what the icons mean from least to most priority:

  1. game in play/idle
  2. move left
  3. move right
  4. rotate
  5. to ghost
  6. hold
  7. paused

Sorry if this was sparratic and all over the place but that should cover the features.

Text edited by Ecconia

How To Use: 

To toggle the clock on/off press the "start/stop clock" button in white.
If there is already a game in play press the end button and once the sequence is done press the white button again.
the red and green buttons are for shifting left and right with the orange being for rotation.
dark green is for swapping hold and cyan is the to ghost button.
since the bottom left shows the current action you can see what is/has happened and if you are trying to input something like shift multiple times you can use this display to tell you when to press that button again.

Request status: 
Approved