DTET Rotation System
The DTET Rotation System is the rotation system used in the fan game DTET. Although sometimes referred to by the abbreviation D.R.S., both the abbreviation and expanded form are informal names. The system was not given a specific name by Mihys, the author of the game.
DTET's basic rotations are strongly reminiscent of Sega rotation, but with two differences:
- S, Z and I tetrominoes now have 4 rotation states instead of 2. However, the two horizontal states are identical.
- The horizontal orientation of the I tetromino is shifted 1 cell down.
Pieces spawn horizontally in the center, (left of center for the odd width pieces) with their topmost solid block in row 20. The J, L and T spawn pointing downwards.
DTET's basic rotations
DTET only features two rotate buttons with no duplicate: "Rotate Left" and "Rotate Right". (Normally "Rotate Left" rotates counter-clockwise, and "Rotate Right" rotates clockwise). However, due to its sophisticated button processing routine, DTET still manages to retain the facility for rapid double rotations without having to double-tap with a single finger. The button processing routine also enables other innovative features, namely: instantaneous 180° Flips, Rotation Reversal, and Failure Compensation, as well as allowing for IRS-like behavior.
For as long as a button is pressed (held down), DTET will continually attempt to process it, every frame, until it succeeds in producing a rotation. Once a pressed button has produced a rotation, it must be released before it can produce any further rotations. Therefore, if a rotation fails due to an obstacle, but the rotate button is held down whilst the tetromino is moved away from the obstacle, the rotation will occur on the first frame on which it is possible. This has been called "Failure Compensation". Also, if a rotation is attempted during ARE and the rotate button held down until spawn, the rotation will occur on the first frame after spawn, if it is possible to do so, thereby creating an IRS-like rotation.
If after producing a rotation, a rotate button is not released, it will cause all rotations produced by the other rotate button to be reversed in sense, i.e. "Rotate Left" will produce a clockwise rotation and "Rotate Right" will produce a counter-clockwise rotation. This has been called "Rotation Reversal", and effectively allows the player to produce two successive rotations in the same sense. For example, to replicate the A, C double counter-clockwise rotation possible in TGM, in DTET the player would press and hold "Rotate Left", then whilst still held, press "Rotate Right".
If both buttons are pressed, and both are yet to produce a rotation, then DTET will continually attempt to process both buttons, every frame, potentially producing what looks like an instantaneous 180° rotation. This situation can arise if the buttons are pressed simultaneously, or if one or both buttons were pressed at an ealier frame but could not effect a rotation at that time due to some obstacle, and therefore Failure Compensation was applied. Regardless of which button was actually pressed first, DTET will attempt the processing order of "Rotate Left" followed by "Rotate Right" first, and "Rotate Right" followed by "Rotate Left" second. Note that if the first rotation is successfully processed, it will cause the subsequent rotation to be reversed. In effect, DTET is testing the following two possibilities:
- two successive counter-clockwise rotations, the first with left kick precedence and the second with right kick precedence (see below for wall kick precendence)
- two successive clockwise rotations, the first with right kick precedence and the second with left kick precedence.
Although any intermediate state is never rendered, it must still exist in order for the two successive rotations to be successful.
When rotating J, L and T tetrominoes, there is a third possibility that is attempted when the above two fail:
- rotate 180° with left kick precedence, bypassing any intermediate state.
Even if one of the three options can only be executed partially, DTET will always do this in preference to attempting a later option; e.g. a single counter-clockwise rotation will be performed in preference to two successive clockwise rotations. Failure Compensation will still apply to any rotate button which failed to produce a rotation.
The wall kicks in DTET are an extension of the system pioneered by Arika in TGM rotation. In addition to testing for wall kicks 1 cell to the left and right, DTET will also continue to test for wall kicks 1 cell down, followed by 1 cell diagonally down-left and down-right. DTET's wall kicks are sometimes described as "symmetric", the reason being that kicks left and down-left take precedence when rotating with the "Rotate Left" button, and kicks right and down-right take precedence when rotating with the "Rotate Right" button. Note that kick precendence is independent of whether the rotation is clockwise or counter-clockwise and is determined solely by the button pressed; "Rotate Right" will always have right kick precendence, and "Rotate Left" will always have left kick precendence:
Wall Kick Test Order
| 1 || one space left || one space right
| 2 || one space right || one space left
| 3 || one space down || one space down
| 4 || one space down-left || one space down-right
| 5 || one space down-right || one space down-left
Additionally, DTET Rotation does not employ the kick restrictions in TGM Rotation. As long as a piece is able to pass one of the kick tests, it will kick and rotate, no matter what adjacent blocks are occupied.
DTET Rotation appears in Heboris Unofficial Expansion, though it is implemented slightly differently:
- Double rotation is mapped to a separate button, instead of being executed by pressing both left and right rotation buttons. This is treated as an instantaneous 180° rotation with left kick precedence, bypassing any intermediate state, and unlike true DTET Rotation, I, S and Z tetrominoes are also allowed to perform this move.
- TGM3-style floor kick was added.
It is also an available option in Tessellate, although it is implemented with some inaccuracies regarding double rotation.