I
J
Rotation type
|
Notable usage
|
Diagram
|
State 1
|
State 2
|
State 3
|
State 4
|
Centre
|
SRS and related systems
|
|
|
|
|
Bottom
|
Sega and related systems
|
|
|
|
|
Outside
|
Magical Tetris Challenge
|
|
|
|
|
2 by 2
|
|
|
|
|
|
L
Rotation type
|
Notable usage
|
Diagram
|
State 1
|
State 2
|
State 3
|
State 4
|
Centre
|
SRS/related
|
|
|
|
|
O
Rotation type
|
Notable usage
|
Diagram
|
State 1
|
State 2
|
State 3
|
State 4
|
1-state
|
Almost everything
|
|
4-state, offset
|
Tetris 64 (with Rotation Center turned on)
|
|
|
|
|
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
|
|
|
|
|
Bottom
|
Sega
|
|
|
|
|
Outside
|
|
|
|
|
|
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
|
|
|
S, v -> h
|
|
|
Z, h -> v
|
|
|
Z, v -> h
|
|
|
L, d
|
Impossible
|
*
|
*
|
Impossible
|
L, l
|
|
|
|
|
L, u
|
*
|
Impossible
|
Impossible
|
Impossible
|
L, r
|
|
|
|
|
J, d
|
Impossible
|
|
*
|
Impossible
|
J, l
|
|
|
|
|
J, u
|
Impossible
|
Impossible
|
Impossible
|
*
|
J, r
|
|
|
|
|
T, d
|
Impossible
|
Impossible
|
Impossible
|
Impossible
|
T, l
|
Impossible
|
|
|
|
T, u
|
*
|
Impossible
|
Impossible
|
*
|
T, r
|
|
|
|
Impossible
|
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)
|
Tetr.io
J, L, S, T, Z Tetromino Wall Kick Data
|
Test 1
|
Test 2
|
Test 3
|
Test 4
|
Test 5
|
Test 6
|
0->2 |
( 0, 0) |
( 0,+1) |
(+1,+1) |
(-1,+1) |
(+1, 0) |
(-1, 0)
|
2->0 |
( 0, 0) |
( 0,-1) |
(-1,-1) |
(+1,-1) |
(-1, 0) |
(+1, 0)
|
L->R |
( 0, 0) |
(-1, 0) |
(-1,+2) |
(-1,+1) |
( 0,+2) |
( 0,+1)
|
R->L |
( 0, 0) |
(+1, 0) |
(+1,+2) |
(+1,+1) |
( 0,+2) |
( 0,+1)
|