User:Arcorann/Rotation: Difference between revisions

From TetrisWiki
Jump to navigation Jump to search
(38 intermediate revisions by the same user not shown)
Line 72: Line 72:
|-
|-
|4-state
|4-state
|BPS (start at state 1), SRS (start at state 3)
|BPS, SRS
|<playfield>
|<playfield>
....
....
Line 402: Line 402:
!Z
!Z
! Kicks?
! Kicks?
!Code
|-
|-
|[[Original Rotation System]]|| CCW || UR (h) || Centre (d) || Centre (d) || 1-state || LR (h) || Centre (d) || LR (h) || No
|[[Original Rotation System]]<br />[[Tetris (ZX Spectrum, V.A. Baliasov)]]|| CCW || UR (h) || Centre (d) || Centre (d) || 1-state || LR (h) || Centre (d) || LR (h) || No || O-85
|-
|-
|[[Tetris (ZX Spectrum, Andic Software)]]|| CW || Centre (u) || Centre (r) || Centre (l) || 1-state || LR (v) || Centre (l) || LL (v)
|[[Tetris (ZX Spectrum, Andic Software)]]|| CW || Centre (u) || Centre (r) || Centre (l) || 1-state || LR (v) || Centre (l) || LL (v)
|-
|-
|[[Tetris (PC, Spectrum HoloByte)]] || CCW || UR (h) || Bottom (d) || Bottom (d) || 1-state || LR (h) || Centre (d) || LR (h) || No
|[[Tetris (Mirrorsoft)#ZX_Spectrum_Version]] || CCW || UL (h) || Centre (u) || Centre (u) || 1-state || UL (h) || Centre (u) || UL (h) ||
|-
|[[Tetris (PC, Spectrum HoloByte)]] || CCW || UR (h) || Bottom (d) || Bottom (d) || 1-state || LR (h) || Centre (d) || LR (h) || No || H-88
|-
|-
|[[Aint]] || CW || Propeller (l) || Centre (d) || Centre (d) || 1-state || Centre (l) || Centre (d) || Centre (l)
|[[Aint]] || CW || Propeller (l) || Centre (d) || Centre (d) || 1-state || Centre (l) || Centre (d) || Centre (l)
Line 415: Line 418:
|[[The Son of Tetris Project]] || CCW || UL (h) || UL (d) || UL (d) || 1-state || UL (h) || Centre (d) || UL (h)
|[[The Son of Tetris Project]] || CCW || UL (h) || UL (d) || UL (d) || 1-state || UL (h) || Centre (d) || UL (h)
|-
|-
|[[Sega Rotation]] || CCW || UR (h) || Bottom (d) || Bottom (d) || 1-state || LL (h) || Bottom (d) || LR (h) || No
|[[Sega Rotation]] || CCW || UR (h) || Bottom (d) || Bottom (d) || 1-state || LL (h) || Bottom (d) || LR (h) || No || S-88
|-
|[[Tetris (Atari)]] || CCW || TL (h) || UL (d) || UL (d) || 1-state || UL (h) || UL (d) || UL (h) || Yes || A-88
|-
|[[Vs. Tetris]] || Both || TL (h) || UL (d) || UL (d) || 1-state || UL (h) || UL (d) || UL (h) || Yes || A-88
|-
|-
|[[Tetris (Atari)]] || CCW || TL (h) || UL (d) || UL (d) || 1-state || UL (h) || UL (d) || UL (h) || Yes
|[[Tetris (BPS)]]<br />[[Tetris (Famicom)]] || CCW || LL (*) || Centre (*) || Centre (*) || 1-state || LR (*) || Centre (*) || LR (*) || No || F-88
|-
|-
|[[Tetris (Famicom)]] || CCW || LL (*) || Centre (*) || Centre (*) || 1-state || LR (*) || Centre (*) || LR (*) || No
|[[Tetris (NES, Tengen)]] || Both || TL (h) || UL (d) || UL (d) || 1-state || UL (h) || UL (d) || UL (h) || Yes || A-88
|-
|-
|[[Tetris (NES, Tengen)]] || Both || TL (h) || UL (d) || UL (d) || 1-state || UL (h) || UL (d) || UL (h) || Yes
|[[Tetris (Mega Drive)]] || Both || UR (h) || Bottom (d) || Bottom (d) || 1-state || LL (h) || Bottom (d) || LR (h) || No || S-88
|-
|-
|[[Tetris (Game Boy)]]|| Both || LL (h) || Centre (d) || Centre (d) || 1-state || LL (h) || Centre (d) || LL (h)
|[[Tetris (Game Boy)]]|| Both || LL (h) || Centre (d) || Centre (d) || 1-state || LL (h) || Centre (d) || LL (h) || No || G-89
|-
|-
|[[Tetris (NES, Nintendo)]]|| Both || LR (h) || Centre (d) || Centre (d) || 1-state || LR (h) || Centre (d) || LR (h)
|[[Tetris (NES, Nintendo)]]|| Both || LR (h) || Centre (d) || Centre (d) || 1-state || LR (h) || Centre (d) || LR (h) || No || N-89
|-
|-
|[[Tetris (Microsoft Entertainment Pack for Windows)]] || CCW || DownwardR (h) || Centre (d) || Centre (d) || 1-state || UR (h) || Centre (d) || UL (h)
|[[Tetris (Microsoft Entertainment Pack for Windows)]] || CCW || DownwardR (h) || Centre (d) || Centre (d) || 1-state || UR (h) || Centre (d) || UL (h) || || W-90
|-
|-
|[[Tetris 2 + Bombliss]] || Both || Centre (u) || Centre (d) || Centre (d) || 1-state || Centre (d) || Centre (d) || Centre (d)
|[[Super Tetris]] || CCW || UL (h) || Centre (d) || Centre (d) || 1-state || UL (h) || Centre (d) || UL (h) || || M-91
|-
|-
|[[Tetris Battle Gaiden]] || Both || Centre (d) || Centre (u) || Centre (u) || 1-state || Centre (d) || Centre (u) || Centre (d)
|[[Tetris 2 + Bombliss]] || Both || Centre (u) || Centre (d) || Centre (d) || 1-state || Centre (d) || Centre (d) || Centre (d) || No || B-91
|-
|-
|SRS || Both || Centre (u) || Centre (u) || Centre (u) || 1-state || Centre (u) || Centre (u) || Centre (u) || Yes
|[[Tetris Classic]] || Both (buggy) || UR (h) || Bottom (d) || Bottom (d) || 1-state || LR (h) || Centre (d) || LR (h) || No || H-88
|-
|[[Tetris Battle Gaiden]] || Both || Centre-Rev (d) || Centre (u) || Centre (u) || 1-state || Centre (d) || Centre (u) || Centre (d) || No ||B-93
|-
|[[Super Tetris 3]] || Both || Centre (u) || Centre (u) || Centre (u) || 1-state || Centre (d) || Centre (u) || Centre (d) || No || B-94
|-
|[[Tetris X]]<br />[[Tetris 4D]] || Both || Centre-Rev (d) || Centre (u) || Centre (u) || 1-state || Centre (u) || Centre (u) || Centre (u) || No
|-
|[[Tetris DX]] || Both || Centre (u) || Centre (d) || Centre (d) || 1-state || Centre (u) || Centre (d) || Centre (u) || Yes
|-
|[[SuperLite 1500 Series: The Tetris]] || Both || Centre (d) || Centre (u) || Centre (u) || 1-state || Centre (u) || Centre (u) || Centre (u) || Yes
|-
|SRS || Both || Centre (u) || Centre (u) || Centre (u) || 1-state || Centre (u) || Centre (u) || Centre (u) || Yes || B-A1
|-
|-
|[[Tetris 64]] (Rotation Center on) || Both || Propeller (l) || Centre (d) || Centre (d) || Offset (ur) || Centre (u) || Centre (d) || Centre (d)
|[[Tetris 64]] (Rotation Center on) || Both || Propeller (l) || Centre (d) || Centre (d) || Offset (ur) || Centre (u) || Centre (d) || Centre (d)
Line 440: Line 459:
|-
|-
|[[Magical Tetris Challenge]]|| Both || UL (v) || Outside (l) || Outside (r) || 1-state || Centre (l) || Centre (d) || Centre (r)
|[[Magical Tetris Challenge]]|| Both || UL (v) || Outside (l) || Outside (r) || 1-state || Centre (l) || Centre (d) || Centre (r)
|-
|[[Pokémon Tetris]] || Both || Centre (u) || Centre (d) || Centre (d) || 1-state || Centre (d) || Centre (d) || Centre (d) || || B*-81
|-
|-
|[[Face to Face]] || CCW || UR (h) || Centre (d) || Centre (d) || 1-state || UL (h) || Centre (d) || UL (h)  
|[[Face to Face]] || CCW || UR (h) || Centre (d) || Centre (d) || 1-state || UL (h) || Centre (d) || UL (h)  
Line 446: Line 467:
|-
|-
|[[Zentris]] || Selectable || UL (v) || LR (l) || LR (r) || 1-state || LR (v) || LR (d) || LR (v) || No
|[[Zentris]] || Selectable || UL (v) || LR (l) || LR (r) || 1-state || LR (v) || LR (d) || LR (v) || No
|-
|[[Klotz]] || CCW || UR (h) || Centre || Centre || 1-state || LL (h) || Centre || UL (h)
|-
|-
|[[Emlith]] || Selectable || LL (v) || Centre (l) || Centre (r) || 1-state || LR (v) || Centre (r) || LR (v) || Yes
|[[Emlith]] || Selectable || LL (v) || Centre (l) || Centre (r) || 1-state || LR (v) || Centre (r) || LR (v) || Yes
|-
|-
|[[Wintris]] || CCW || Centre-Rev (*) || Outside (*) || Outside (*) || 1-state || LR (*) || Outside (*) || LR (*)
|[[Wintris]] || CCW || Centre-Rev (*) || Outside (*) || Outside (*) || 1-state || LR (*) || Outside (*) || LR (*)
|-
|Tetanus On Drugs (PC ver.) || Both || LL (h) || Centre (d) || Centre (d) || 1-state || LL (h) || Centre (u) || LR (h)
|-
|-
|[[Futilitris]] ||Both ||UL (2) ||2 by 2 (right)||2 by 2 (right) ||1-state ||UL (2)||Centre (up) ||LR (2)
|[[Futilitris]] ||Both ||UL (2) ||2 by 2 (right)||2 by 2 (right) ||1-state ||UL (2)||Centre (up) ||LR (2)
|-
|Craptris || Both ||
|-
|-
|Shirase Rotation System || Both || ...
|Shirase Rotation System || Both || ...
|}
== Pentomino rotations by game ==
Reserved.
== Shirase Rotation System ==
A joke rotation system made by Makiki99. Take the wallkick system from SRS, then apply offsets to each of the rotation states. Luckily for us, the offsets are consistent:
{|
!State
!Offset
|-
|Up || 1 left
|-
|Right || 1 up
|-
|Down || 1 right
|-
|Left || 1 down
|}
== ARS kick diagrams ==
{|
! rowspan="2" |Rotation
! colspan="2" |Counterclockwise
! colspan="2" |Clockwise
|-
! Right
! Left
! Right
! Left
|-
|S, h -> v
|<playfield>
.1-..
.1TT.
.TT-.
</playfield>
|<playfield>
-12..
--TT.
.TT2.
</playfield>
|-
|S, v -> h
|<playfield>
.T...
.TT--
.1T-.
</playfield>
|<playfield>
.T...
.TT1.
--T..
</playfield>
|-
|Z, h -> v
|<playfield>
...1-
.SS--
..SS.
</playfield>
|<playfield>
..-..
.SS1.
.-SS.
</playfield>
<playfield>
..-12
.SS.2
.-SS.
</playfield>
|-
|Z, v -> h
|<playfield>
...S.
.1SS.
..S--
</playfield>
|<playfield>
...S.
--SS.
.-S1.
</playfield>
|-
|L, d
|Impossible
<playfield>
..x-.
.LLL.
.Lx--
</playfield>
|*<playfield>
.-x..
.LLL.
.L-1.
</playfield>
|*<playfield>
.1--.
.LLL.
.L.-.
</playfield>
|Impossible
<playfield>
--x..
.LLL.
.Lx..
</playfield>
|-
|L, l
|<playfield>
.LL..
.1L--
.1L..
</playfield>
|<playfield>
.LL..
--L1.
-.L..
</playfield>
<playfield>
.LL..
--L.2
-1L..
</playfield>
|<playfield>
.LL..
..L1-
.1L--
</playfield>
|<playfield>
.LL..
..L..
--L1.
</playfield>
<playfield>
.LL..
..L12
--L.2
</playfield>
|-
|L, u
|*<playfield>
.1--.
...L.
.LLL.
</playfield>
|Impossible
<playfield>
--x..
.-xL.
.LLL.
</playfield>
|Impossible
<playfield>
..x-.
..xL.
.LLL-
</playfield>
|Impossible
<playfield>
.-x..
.-xL.
.LLL.
</playfield>
|-
|L, r
|<playfield>
..L..
..L1-
.1LL-
</playfield>
|<playfield>
..L..
..L12
--LL2
</playfield>
|<playfield>
..L..
.1L--
.1LL.
</playfield>
|<playfield>
..L..
--L1.
-.LL.
</playfield>
<playfield>
..L..
--L.2
-1LL.
</playfield>
|-
|J, d
|Impossible
<playfield>
..x--
.JJJ.
..xJ.
</playfield>
|<playfield>
.--1.
.JJJ.
.-.J.
</playfield>
|*<playfield>
..x-.
.JJJ.
.1-J.
</playfield>
|Impossible
<playfield>
.-x..
.JJJ.
--xJ.
</playfield>
|-
|J, l
|<playfield>
..J..
.1J--
.JJ1-
</playfield>
|<playfield>
..J..
--J1.
.JJ..
</playfield>
<playfield>
..J..
--J.2
.JJ12
</playfield>
|<playfield>
..J..
.1J..
.JJ--
</playfield>
|<playfield>
..J..
-.J..
-JJ1.
</playfield>
<playfield>
..J..
-1J..
-JJ.2
</playfield>
|-
|J, u
|Impossible
<playfield>
..x-.
.Jx-.
.JJJ.
</playfield>
|Impossible
<playfield>
.-x..
.Jx..
-JJJ.
</playfield>
|Impossible
<playfield>
..x--
.Jx-.
.JJJ.
</playfield>
|*
<playfield>
.--1.
.J...
.JJJ.
</playfield>
|-
|J, r
|<playfield>
..JJ.
.1J..
.1J--
</playfield>
|<playfield>
..JJ.
-.J..
--J1.
</playfield>
<playfield>
..JJ.
-1J..
--J.2
</playfield>
|<playfield>
..JJ.
.1J--
..J1-
</playfield>
|<playfield>
..JJ.
--J1.
..J..
</playfield>
<playfield>
..JJ.
--J.2
..J12
</playfield>
|-
|T, d
|Impossible
<playfield>
..x-.
.III-
..I-.
</playfield>
|Impossible
<playfield>
.-x..
.III.
.-I..
</playfield>
|Impossible
<playfield>
..x-.
.III.
..I-.
</playfield>
|Impossible
<playfield>
.-x..
-III.
.-I..
</playfield>
|-
|T, l
|Impossible
<playfield>
..I..
.II--
..I-.
</playfield>
|<playfield>
..I..
-II1.
.-I..
</playfield>
|<playfield>
..I..
.II-.
.1I--
</playfield>
|<playfield>
..I..
.II..
--I1.
</playfield>
|-
|T, u
|*
<playfield>
..x-.
.1I-.
.III.
</playfield>
|Impossible
<playfield>
.-x..
--I..
.III.
</playfield>
|Impossible
<playfield>
..x-.
..I--
.III.
</playfield>
|*
<playfield>
.-x..
.-I1.
.III.
</playfield>
|-
|T, r
|<playfield>
..I..
..II.
.1I--
</playfield>
|<playfield>
..I..
.-II.
--I1.
</playfield>
|<playfield>
..I..
.1II-
..I-.
</playfield>
|Impossible
<playfield>
..I..
--II.
.-I..
</playfield>
|-
|}
The centre column rule is ignored if the piece kicks off a block in a row above the appropriate centre column block, but not below (presumably due to block precedence.
== 180 degree rotations in SRS ==
=== Official SRS ===
Due to how the rotations in SRS are constructed, 180 degree rotations are well defined in SRS, though no official game implements them.
(Recall that values are given as x shift then y shift, with right and up positive.)
{| border="1" cellspacing="0"
|+'''J, L, S, T, Z Tetromino Wall Kick Data'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>||<tt>( 0, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>(-2, 0)</tt>||<tt>(-2, 0)</tt>||<tt>( 0, 0)</tt>||<tt>(-2, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>(+2, 0)</tt>||<tt>(+2, 0)</tt>||<tt>( 0, 0)</tt>||<tt>(+2, 0)</tt>
|}
Due to the symmetric locations of the rotation points, there are no kicks in states 0 or 2, and only one in states L or R.
{| border="1" cellspacing="0"
|+'''I Tetromino Wall Kick Data'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>(-3, 0)</tt>||<tt>(+3, 0)</tt>||<tt>(-3,+1)</tt>||<tt>(+3,+1)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>(+3, 0)</tt>||<tt>(-3, 0)</tt>||<tt>(+3,-1)</tt>||<tt>(-3,-1)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-1,-3)</tt>||<tt>(-1,+3)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+1,+3)</tt>||<tt>(+1,-3)</tt>
|}
Note that when the I is vertical, Test 2 maps the piece onto itself and thus this is in fact the only kick possible.
==== Reduced tables ====
This is why official SRS is fundamentally incompatible with 180 degree rotations.
{| border="1" cellspacing="0"
|+'''J, L, S, T, Z Tetromino Wall Kick Data (reduced)'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>(-2, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>(+2, 0)</tt>
|}
{| border="1" cellspacing="0"
|+'''I Tetromino Wall Kick Data (reduced)'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>(-3, 0)</tt>||<tt>(+3, 0)</tt>||<tt>(-3,+1)</tt>||<tt>(+3,+1)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>(+3, 0)</tt>||<tt>(-3, 0)</tt>||<tt>(+3,-1)</tt>||<tt>(-3,-1)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>(-1, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>(+1, 0)</tt>
|}
=== SRS-X ===
Compare the rotations in SRS-X from Heboris UE. Note that the code specifies down as positive; this has been adjusted for this table. Note also that the game numbers states as 0, 1, 2, 3 while in the table we have 0, R, 2, L (compare u, r, d, l above, or TTC's N, E, S, W).
{| border="1" cellspacing="0"
|+'''J, L, S, T, Z Tetromino Wall Kick Data'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
! bgcolor="#80A3F8" width="60"|Test 6
! bgcolor="#80A3F8" width="60"|Test 7
! bgcolor="#80A3F8" width="60"|Test 8
! bgcolor="#80A3F8" width="60"|Test 9
! bgcolor="#80A3F8" width="60"|Test 10
! bgcolor="#80A3F8" width="60"|Test 11
! bgcolor="#80A3F8" width="60"|Test 12
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+2, 0)</tt>||<tt>(+1,-1)</tt>||<tt>(+2,-1)</tt>||<tt>(-1, 0)</tt>||<tt>(-2, 0)</tt>||<tt>(-1,-1)</tt>||<tt>(-2,-1)</tt>||<tt>( 0,+1)</tt>||<tt>(+3, 0)</tt>||<tt>(-3, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-2, 0)</tt>||<tt>(-1,+1)</tt>||<tt>(-2,+1)</tt>||<tt>(+1, 0)</tt>||<tt>(+2, 0)</tt>||<tt>(+1,+1)</tt>||<tt>(+2,+1)</tt>||<tt>( 0,-1)</tt>||<tt>(-3, 0)</tt>||<tt>(+3, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,-2)</tt>||<tt>(+1,-1)</tt>||<tt>(+1,-2)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>(+1,+1)</tt>||<tt>(+1,+2)</tt>||<tt>(-1, 0)</tt>||<tt>( 0,-3)</tt>||<tt>( 0,+3)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,-2)</tt>||<tt>(-1,-1)</tt>||<tt>(-1,-2)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>(-1,+1)</tt>||<tt>(-1,+2)</tt>||<tt>(+1, 0)</tt>||<tt>( 0,-3)</tt>||<tt>( 0,+3)</tt>
|}
{| border="1" cellspacing="0"
|+'''I Tetromino Wall Kick Data'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
! bgcolor="#80A3F8" width="60"|Test 6
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-2, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+2, 0)</tt>||<tt>( 0,-1)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+2, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-2, 0)</tt>||<tt>( 0,+1)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,-2)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>(+1, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,-2)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>(-1, 0)</tt>
|}
=== NullpoMino Mild180 ===
Also, NullpoMino's Mild180. Note that the code in NullpoMino also specifies down as positive.
{| border="1" cellspacing="0"
|+'''J, L, S, T, Z Tetromino Wall Kick Data'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
! bgcolor="#80A3F8" width="60"|Test 6
! bgcolor="#80A3F8" width="60"|Test 7
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(-1, 0)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,+2)</tt>||<tt>( 0,-2)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(+1, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,-2)</tt>||<tt>( 0,+2)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>( 0,-2)</tt>||<tt>(+1, 0)</tt>||<tt>(-1, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>( 0,-2)</tt>||<tt>(-1, 0)</tt>||<tt>(+1, 0)</tt>
|}
{| border="1" cellspacing="0"
|+'''I Tetromino Wall Kick Data'''
|- align = center
! width="45"|
! bgcolor="#80A3F8" width="60"|Test 1
! bgcolor="#80A3F8" width="60"|Test 2
! bgcolor="#80A3F8" width="60"|Test 3
! bgcolor="#80A3F8" width="60"|Test 4
! bgcolor="#80A3F8" width="60"|Test 5
|- align = center
| bgcolor="#80A3F8"|0->2||<tt>( 0, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-2, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+2, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|2->0||<tt>( 0, 0)</tt>||<tt>(+1, 0)</tt>||<tt>(+2, 0)</tt>||<tt>(-1, 0)</tt>||<tt>(-2, 0)</tt>
|- align = center
| bgcolor="#80A3F8"|L->R||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>( 0,-2)</tt>
|- align = center
| bgcolor="#80A3F8"|R->L||<tt>( 0, 0)</tt>||<tt>( 0,-1)</tt>||<tt>( 0,+1)</tt>||<tt>( 0,+2)</tt>||<tt>( 0,-2)</tt>
|}
|}

Revision as of 04:59, 24 July 2020

I

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4
2-state, upper-right Original Rotation System, Sega Rotation
....
IIII
....
....
..I.
..I.
..I.
..I.
2-state, lower-right Tetris (NES, Nintendo)
....
....
IIII
....
..I.
..I.
..I.
..I.
2-state, lower-left Tetris (Game Boy)
Tetris (Famicom)
....
....
IIII
....
.I..
.I..
.I..
.I..
2-state, upper-left Magical Tetris Challenge
....
IIII
....
....
.I..
.I..
.I..
.I..
4-state BPS, SRS
....
IIII
....
....
..I.
..I.
..I.
..I.
....
....
IIII
....
.I..
.I..
.I..
.I..

J

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4
Centre SRS and related systems
J..
JJJ
...
.JJ
.J.
.J.
...
JJJ
..J
.J.
.J.
JJ.
Bottom Sega and related systems
...
J..
JJJ
.JJ
.J.
.J.
...
JJJ
..J
.J.
.J.
JJ.
Outside Magical Tetris Challenge
..J
..J
.JJ
...
J..
JJJ
JJ.
J..
J..
JJJ
..J
...
2 by 2
..J.
..J.
.JJ.
....
....
.J..
.JJJ
....
....
.JJ.
.J..
.J..
....
JJJ.
..J.
....

L

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4
Centre SRS/related
..L
LLL
...
.L.
.L.
.LL
...
LLL
L..
LL.
.L.
.L.

O

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4
1-state Almost everything
....
.OO.
.OO.
....
4-state, offset Tetris 64 (with Rotation Center turned on)
.OO
.OO
...
...
.OO
.OO
...
OO.
OO.
OO.
OO.
...

S

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4

T

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4
Centre BPS, SRS
.T.
TTT
...
.T.
.TT
.T.
...
TTT
.T.
.T.
TT.
.T.
Bottom Sega
...
.T.
TTT
.T.
.TT
.T.
...
TTT
.T.
.T.
TT.
.T.
Outside
...
.T.
TTT
T..
TT.
T..
TTT
.T.
...
..T
.TT
..T

Z

Rotation type Notable usage Diagram
State 1 State 2 State 3 State 4

Rotations by game

Game Directions I J L O S T Z Kicks? Code
Original Rotation System
Tetris (ZX Spectrum, V.A. Baliasov)
CCW UR (h) Centre (d) Centre (d) 1-state LR (h) Centre (d) LR (h) No O-85
Tetris (ZX Spectrum, Andic Software) CW Centre (u) Centre (r) Centre (l) 1-state LR (v) Centre (l) LL (v)
Tetris (Mirrorsoft)#ZX_Spectrum_Version CCW UL (h) Centre (u) Centre (u) 1-state UL (h) Centre (u) UL (h)
Tetris (PC, Spectrum HoloByte) CCW UR (h) Bottom (d) Bottom (d) 1-state LR (h) Centre (d) LR (h) No H-88
Aint CW Propeller (l) Centre (d) Centre (d) 1-state Centre (l) Centre (d) Centre (l)
EGAint Both Propeller (l) Centre (d) Centre (d) 1-state Centre (l) Centre (d) Centre (l)
The Son of Tetris Project CCW UL (h) UL (d) UL (d) 1-state UL (h) Centre (d) UL (h)
Sega Rotation CCW UR (h) Bottom (d) Bottom (d) 1-state LL (h) Bottom (d) LR (h) No S-88
Tetris (Atari) CCW TL (h) UL (d) UL (d) 1-state UL (h) UL (d) UL (h) Yes A-88
Vs. Tetris Both TL (h) UL (d) UL (d) 1-state UL (h) UL (d) UL (h) Yes A-88
Tetris (BPS)
Tetris (Famicom)
CCW LL (*) Centre (*) Centre (*) 1-state LR (*) Centre (*) LR (*) No F-88
Tetris (NES, Tengen) Both TL (h) UL (d) UL (d) 1-state UL (h) UL (d) UL (h) Yes A-88
Tetris (Mega Drive) Both UR (h) Bottom (d) Bottom (d) 1-state LL (h) Bottom (d) LR (h) No S-88
Tetris (Game Boy) Both LL (h) Centre (d) Centre (d) 1-state LL (h) Centre (d) LL (h) No G-89
Tetris (NES, Nintendo) Both LR (h) Centre (d) Centre (d) 1-state LR (h) Centre (d) LR (h) No N-89
Tetris (Microsoft Entertainment Pack for Windows) CCW DownwardR (h) Centre (d) Centre (d) 1-state UR (h) Centre (d) UL (h) W-90
Super Tetris CCW UL (h) Centre (d) Centre (d) 1-state UL (h) Centre (d) UL (h) M-91
Tetris 2 + Bombliss Both Centre (u) Centre (d) Centre (d) 1-state Centre (d) Centre (d) Centre (d) No B-91
Tetris Classic Both (buggy) UR (h) Bottom (d) Bottom (d) 1-state LR (h) Centre (d) LR (h) No H-88
Tetris Battle Gaiden Both Centre-Rev (d) Centre (u) Centre (u) 1-state Centre (d) Centre (u) Centre (d) No B-93
Super Tetris 3 Both Centre (u) Centre (u) Centre (u) 1-state Centre (d) Centre (u) Centre (d) No B-94
Tetris X
Tetris 4D
Both Centre-Rev (d) Centre (u) Centre (u) 1-state Centre (u) Centre (u) Centre (u) No
Tetris DX Both Centre (u) Centre (d) Centre (d) 1-state Centre (u) Centre (d) Centre (u) Yes
SuperLite 1500 Series: The Tetris Both Centre (d) Centre (u) Centre (u) 1-state Centre (u) Centre (u) Centre (u) Yes
SRS Both Centre (u) Centre (u) Centre (u) 1-state Centre (u) Centre (u) Centre (u) Yes B-A1
Tetris 64 (Rotation Center on) Both Propeller (l) Centre (d) Centre (d) Offset (ur) Centre (u) Centre (d) Centre (d)
The New Tetris Both LL (h) UR (d) UL (d) 1-state UR (h) Centre (u) UL (h)
Magical Tetris Challenge Both UL (v) Outside (l) Outside (r) 1-state Centre (l) Centre (d) Centre (r)
Pokémon Tetris Both Centre (u) Centre (d) Centre (d) 1-state Centre (d) Centre (d) Centre (d) B*-81
Face to Face CCW UR (h) Centre (d) Centre (d) 1-state UL (h) Centre (d) UL (h)
Yet Another Tetris Both Centre (*) Centre (*) Centre (*) 1-state Centre (*) Centre (*) Centre (*)
Zentris Selectable UL (v) LR (l) LR (r) 1-state LR (v) LR (d) LR (v) No
Klotz CCW UR (h) Centre Centre 1-state LL (h) Centre UL (h)
Emlith Selectable LL (v) Centre (l) Centre (r) 1-state LR (v) Centre (r) LR (v) Yes
Wintris CCW Centre-Rev (*) Outside (*) Outside (*) 1-state LR (*) Outside (*) LR (*)
Tetanus On Drugs (PC ver.) Both LL (h) Centre (d) Centre (d) 1-state LL (h) Centre (u) LR (h)
Futilitris Both UL (2) 2 by 2 (right) 2 by 2 (right) 1-state UL (2) Centre (up) LR (2)
Craptris Both
Shirase Rotation System Both ...

Pentomino rotations by game

Reserved.

Shirase Rotation System

A joke rotation system made by Makiki99. Take the wallkick system from SRS, then apply offsets to each of the rotation states. Luckily for us, the offsets are consistent:

State Offset
Up 1 left
Right 1 up
Down 1 right
Left 1 down

ARS kick diagrams

Rotation Counterclockwise Clockwise
Right Left Right Left
S, h -> v
.1-..
.1TT.
.TT-.
-12..
--TT.
.TT2.
S, v -> h
.T...
.TT--
.1T-.
.T...
.TT1.
--T..
Z, h -> v
...1-
.SS--
..SS.
..-..
.SS1.
.-SS.
..-12
.SS.2
.-SS.
Z, v -> h
...S.
.1SS.
..S--
...S.
--SS.
.-S1.
L, d Impossible
..X-.
.LLL.
.LX--
*
.-X..
.LLL.
.L-1.
*
.1--.
.LLL.
.L.-.
Impossible
--X..
.LLL.
.LX..
L, l
.LL..
.1L--
.1L..
.LL..
--L1.
-.L..
.LL..
--L.2
-1L..
.LL..
..L1-
.1L--
.LL..
..L..
--L1.
.LL..
..L12
--L.2
L, u *
.1--.
...L.
.LLL.
Impossible
--X..
.-XL.
.LLL.
Impossible
..X-.
..XL.
.LLL-
Impossible
.-X..
.-XL.
.LLL.
L, r
..L..
..L1-
.1LL-
..L..
..L12
--LL2
..L..
.1L--
.1LL.
..L..
--L1.
-.LL.
..L..
--L.2
-1LL.
J, d Impossible
..X--
.JJJ.
..XJ.
.--1.
.JJJ.
.-.J.
*
..X-.
.JJJ.
.1-J.
Impossible
.-X..
.JJJ.
--XJ.
J, l
..J..
.1J--
.JJ1-
..J..
--J1.
.JJ..
..J..
--J.2
.JJ12
..J..
.1J..
.JJ--
..J..
-.J..
-JJ1.
..J..
-1J..
-JJ.2
J, u Impossible
..X-.
.JX-.
.JJJ.
Impossible
.-X..
.JX..
-JJJ.
Impossible
..X--
.JX-.
.JJJ.
*
.--1.
.J...
.JJJ.
J, r
..JJ.
.1J..
.1J--
..JJ.
-.J..
--J1.
..JJ.
-1J..
--J.2
..JJ.
.1J--
..J1-
..JJ.
--J1.
..J..
..JJ.
--J.2
..J12
T, d Impossible
..X-.
.III-
..I-.
Impossible
.-X..
.III.
.-I..
Impossible
..X-.
.III.
..I-.
Impossible
.-X..
-III.
.-I..
T, l Impossible
..I..
.II--
..I-.
..I..
-II1.
.-I..
..I..
.II-.
.1I--
..I..
.II..
--I1.
T, u *
..X-.
.1I-.
.III.
Impossible
.-X..
--I..
.III.
Impossible
..X-.
..I--
.III.
*
.-X..
.-I1.
.III.
T, r
..I..
..II.
.1I--
..I..
.-II.
--I1.
..I..
.1II-
..I-.
Impossible
..I..
--II.
.-I..

The centre column rule is ignored if the piece kicks off a block in a row above the appropriate centre column block, but not below (presumably due to block precedence.

180 degree rotations in SRS

Official SRS

Due to how the rotations in SRS are constructed, 180 degree rotations are well defined in SRS, though no official game implements them.

(Recall that values are given as x shift then y shift, with right and up positive.)

J, L, S, T, Z Tetromino Wall Kick Data
Test 1 Test 2 Test 3 Test 4 Test 5
0->2 ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0)
2->0 ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0)
L->R ( 0, 0) (-2, 0) (-2, 0) ( 0, 0) (-2, 0)
R->L ( 0, 0) (+2, 0) (+2, 0) ( 0, 0) (+2, 0)

Due to the symmetric locations of the rotation points, there are no kicks in states 0 or 2, and only one in states L or R.

I Tetromino Wall Kick Data
Test 1 Test 2 Test 3 Test 4 Test 5
0->2 ( 0, 0) (-3, 0) (+3, 0) (-3,+1) (+3,+1)
2->0 ( 0, 0) (+3, 0) (-3, 0) (+3,-1) (-3,-1)
L->R ( 0, 0) (-1, 0) (-1, 0) (-1,-3) (-1,+3)
R->L ( 0, 0) (+1, 0) (+1, 0) (+1,+3) (+1,-3)

Note that when the I is vertical, Test 2 maps the piece onto itself and thus this is in fact the only kick possible.

Reduced tables

This is why official SRS is fundamentally incompatible with 180 degree rotations.

J, L, S, T, Z Tetromino Wall Kick Data (reduced)
Test 1 Test 2
0->2 ( 0, 0)
2->0 ( 0, 0)
L->R ( 0, 0) (-2, 0)
R->L ( 0, 0) (+2, 0)
I Tetromino Wall Kick Data (reduced)
Test 1 Test 2 Test 3 Test 4 Test 5
0->2 ( 0, 0) (-3, 0) (+3, 0) (-3,+1) (+3,+1)
2->0 ( 0, 0) (+3, 0) (-3, 0) (+3,-1) (-3,-1)
L->R ( 0, 0) (-1, 0)
R->L ( 0, 0) (+1, 0)

SRS-X

Compare the rotations in SRS-X from Heboris UE. Note that the code specifies down as positive; this has been adjusted for this table. Note also that the game numbers states as 0, 1, 2, 3 while in the table we have 0, R, 2, L (compare u, r, d, l above, or TTC's N, E, S, W).

J, L, S, T, Z Tetromino Wall Kick Data
Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 Test 8 Test 9 Test 10 Test 11 Test 12
0->2 ( 0, 0) (+1, 0) (+2, 0) (+1,-1) (+2,-1) (-1, 0) (-2, 0) (-1,-1) (-2,-1) ( 0,+1) (+3, 0) (-3, 0)
2->0 ( 0, 0) (-1, 0) (-2, 0) (-1,+1) (-2,+1) (+1, 0) (+2, 0) (+1,+1) (+2,+1) ( 0,-1) (-3, 0) (+3, 0)
L->R ( 0, 0) ( 0,-1) ( 0,-2) (+1,-1) (+1,-2) ( 0,+1) ( 0,+2) (+1,+1) (+1,+2) (-1, 0) ( 0,-3) ( 0,+3)
R->L ( 0, 0) ( 0,-1) ( 0,-2) (-1,-1) (-1,-2) ( 0,+1) ( 0,+2) (-1,+1) (-1,+2) (+1, 0) ( 0,-3) ( 0,+3)
I Tetromino Wall Kick Data
Test 1 Test 2 Test 3 Test 4 Test 5 Test 6
0->2 ( 0, 0) (-1, 0) (-2, 0) (+1, 0) (+2, 0) ( 0,-1)
2->0 ( 0, 0) (+1, 0) (+2, 0) (-1, 0) (-2, 0) ( 0,+1)
L->R ( 0, 0) ( 0,-1) ( 0,-2) ( 0,+1) ( 0,+2) (+1, 0)
R->L ( 0, 0) ( 0,-1) ( 0,-2) ( 0,+1) ( 0,+2) (-1, 0)

NullpoMino Mild180

Also, NullpoMino's Mild180. Note that the code in NullpoMino also specifies down as positive.

J, L, S, T, Z Tetromino Wall Kick Data
Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7
0->2 ( 0, 0) (+1, 0) (-1, 0) ( 0,+1) ( 0,-1) ( 0,+2) ( 0,-2)
2->0 ( 0, 0) (-1, 0) (+1, 0) ( 0,-1) ( 0,+1) ( 0,-2) ( 0,+2)
L->R ( 0, 0) ( 0,-1) ( 0,+1) ( 0,+2) ( 0,-2) (+1, 0) (-1, 0)
R->L ( 0, 0) ( 0,-1) ( 0,+1) ( 0,+2) ( 0,-2) (-1, 0) (+1, 0)
I Tetromino Wall Kick Data
Test 1 Test 2 Test 3 Test 4 Test 5
0->2 ( 0, 0) (-1, 0) (-2, 0) (+1, 0) (+2, 0)
2->0 ( 0, 0) (+1, 0) (+2, 0) (-1, 0) (-2, 0)
L->R ( 0, 0) ( 0,-1) ( 0,+1) ( 0,+2) ( 0,-2)
R->L ( 0, 0) ( 0,-1) ( 0,+1) ( 0,+2) ( 0,-2)