Skip to content

RotationSystem

Poobslag edited this page Jan 13, 2025 · 3 revisions

Spawn Position

Turbo Fat pieces can spawn in 30 different positions based on the player's input and the state of the playfield.

If the player holds "left" or "right" when the piece spawns, the piece will spawn on the edges of the playfield. If the player does not hold "left" or "right", the piece will spawn in the center of the playfield. If the piece is blocked, the game will attempt alternative spawn positions according to the following tables.

Left Spawn Positions

Spawn 1 Spawn 2 Spawn 3 Spawn 4 Spawn 5 Spawn 6
(-4, 0) (-4, -1) (-3, 0) (-3, -1) (-2, 0) (-2, -1)
(-1, 0) (-1, -1) ( 0, 0) ( 0, -1) ( 1, 0) ( 1, -1)

Center Spawn Positions

Spawn 1 Spawn 2 Spawn 3 Spawn 4 Spawn 5 Spawn 6
( 0, 0) ( 0, -1) (-1, 0) (-1, -1) ( 1, 0) ( 1, -1)

Right Spawn Positions

Spawn 1 Spawn 2 Spawn 3 Spawn 4 Spawn 5 Spawn 6
( 4, 0) ( 4, -1) ( 3, 0) ( 3, -1) ( 2, 0) ( 2, -1)
( 1, 0) ( 1, -1) ( 0, 0) ( 0, -1) (-1, 0) (-1, -1)

Wall Kicks

When a piece is blocked from rotation, the game will attempt to move it or "kick it" nearby. Turbo Fat uses a unique set of kicks to make it easier to flip pieces into snack boxes and cake boxes. A few notes:

  • When a rotation is attempted, multiple positions are sequentially tested. If none succeed, the rotation fails.
  • The naming of the rotation states use the following convention:
    • 0 = spawn state
    • R = state resulting from a clockwise ("right") rotation
    • L = state resulting from a counter-clockwise ("left") rotation
    • 2 = state resulting from two rotations

C, K, V Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7
0 → R ( 0, 0) ( 0, -1) ( 0, 1) ( 1, 0) (-1, 0) (-1, 1) ( 1, 1)
R → 0 ( 0, 0) ( 0, 1) ( 0, -1) (-1, 0) ( 1, 0) ( 1, -1) (-1, -1)
R → 2 ( 0, 0) ( 0, -1) ( 0, 1) ( 1, 0) (-1, 0) (-1, 1) (-1, -1)
2 → R ( 0, 0) ( 0, 1) ( 0, -1) (-1, 0) ( 1, 0) ( 1, -1) ( 1, 1)
2 → L ( 0, 0) ( 0, 1) ( 1, 0) (-1, 0) ( 0, -1) ( 1, -1) (-1, -1)
L → 2 ( 0, 0) ( 0, -1) (-1, 0) ( 1, 0) ( 0, 1) (-1, 1) ( 1, 1)
L → 0 ( 0, 0) ( 0, 1) ( 1, 0) (-1, 0) ( 0, -1) ( 1, -1) ( 1, 1)
0 → L ( 0, 0) ( 0, -1) (-1, 0) ( 1, 0) ( 0, 1) (-1, 1) (-1, -1)

I Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5
0 → R ( 0, 0) (-2, 0) ( 1, 0) (-2, 1) ( 1, -2)
R → 0 ( 0, 0) ( 2, 0) (-1, 0) ( 2, -1) (-1, 2)
R → 2 ( 0, 0) (-1, 0) ( 2, 0) (-1, -2) ( 2, 1)
2 → R ( 0, 0) ( 1, 0) (-2, 0) ( 1, 2) (-2, -1)
2 → L ( 0, 0) ( 2, 0) (-1, 0) ( 2, -1) (-1, 2)
L → 2 ( 0, 0) (-2, 0) ( 1, 0) (-2, 1) ( 1, -2)
L → 0 ( 0, 0) ( 1, 0) (-2, 0) ( 1, 2) (-2, -1)
0 → L ( 0, 0) (-1, 0) ( 2, 0) (-1, -2) ( 2, 1)

J, L, S, Z Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 Test 8+
0 → R ( 0, 0) ( 1, 0) (-1, 0) (-1, -1) ( 0, 1) ( 0, -1) (-1, 1)
R → 0 ( 0, 0) (-1, 0) ( 1, 0) ( 1, 1) ( 0, -1) ( 0, 1) ( 1, -1)
R → 2 ( 0, 0) ( 1, 0) ( 1, 1) ( 1, -1) ( 0, -1) ( 0, 1) (-1, 0) ( 0, -2), ( 1, -2)
2 → R ( 0, 0) (-1, 0) (-1, -1) (-1, 1) ( 0, 1) ( 0, -1) ( 1, 0) ( 0, 2), (-1, 2)
2 → L ( 0, 0) ( 1, 0) ( 1, -1) ( 1, 1) ( 0, -1) ( 0, 1) (-1, 0) ( 0, 2), ( 1, 2)
L → 2 ( 0, 0) (-1, 0) (-1, 1) (-1, -1) ( 0, 1) ( 0, -1) ( 1, 0) ( 0, -2), (-1, -2)
L → 0 ( 0, 0) ( 1, 0) (-1, 0) (-1, 1) ( 0, 1) ( 0, -1) (-1, -1)
0 → L ( 0, 0) (-1, 0) ( 1, 0) ( 1, -1) ( 0, -1) ( 0, 1) ( 1, 1)
0 → 2 ( 0, 0) ( 0, -1)
2 → 0 ( 0, 0) ( 0, 1)
R → L ( 0, 0) ( 1, 0)

P Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5
0 → R ( 0, 0) ( 0, -1) (-1, 0) (-1, -1) ( 0, 1)
R → 0 ( 0, 0) ( 0, 1) ( 1, 0) ( 1, 1) ( 0, -1)
R → 2 ( 0, 0) ( 1, 0) ( 1, -1) ( 0, -1) ( 0, 1)
2 → R ( 0, 0) (-1, 0) (-1, 1) ( 0, 1) ( 0, -1)
2 → L ( 0, 0) ( 0, 1) ( 1, 0) ( 1, 1) ( 0, -1)
L → 2 ( 0, 0) ( 0, -1) (-1, 0) (-1, -1) ( 0, 1)
L → 0 ( 0, 0) (-1, 0) (-1, 1) ( 0, 1) ( 0, -1)
0 → L ( 0, 0) ( 1, 0) ( 1, -1) ( 0, -1) ( 0, 1)
0 → 2 ( 0, 0) ( 0, -1) ( 1, -1)
2 → 0 ( 0, 0) ( 0, 1) (-1, 1)
R → L ( 0, 0) ( 1, 0) ( 1, 1)
L → R ( 0, 0) (-1, 0) (-1, -1)

Q Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5
0 → R ( 0, 0) (-1, 0) (-1, -1) ( 0, -1) ( 0, 1)
R → 0 ( 0, 0) ( 1, 0) ( 1, 1) ( 0, 1) ( 0, -1)
R → 2 ( 0, 0) ( 0, -1) ( 1, 0) ( 1, -1) ( 0, 1)
2 → R ( 0, 0) ( 0, 1) (-1, 0) (-1, 1) ( 0, -1)
2 → L ( 0, 0) ( 1, 0) ( 1, 1) ( 0, 1) ( 0, -1)
L → 2 ( 0, 0) (-1, 0) (-1, -1) ( 0, -1) ( 0, 1)
L → 0 ( 0, 0) ( 0, 1) (-1, 0) (-1, 1) ( 0, -1)
0 → L ( 0, 0) ( 0, -1) ( 1, 0) ( 1, -1) ( 0, 1)
0 → 2 ( 0, 0) ( 0, -1) (-1, -1)
2 → 0 ( 0, 0) ( 0, 1) ( 1, 1)
R → L ( 0, 0) ( 1, 0) ( 1, -1)
L → R ( 0, 0) (-1, 0) (-1, 1)

T Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5
0 → R ( 0, 0) (-1, 0) (-1, -1) ( 0, 1) ( 0, -1)
R → 0 ( 0, 0) ( 1, 0) ( 1, 1) ( 0, -1) ( 0, 1)
R → 2 ( 0, 0) ( 1, 0) ( 1, -1) ( 0, -1) (-1, 0)
2 → R ( 0, 0) (-1, 0) (-1, 1) ( 0, 1) ( 1, 0)
2 → L ( 0, 0) ( 1, 0) ( 1, 1) ( 0, 1) (-1, 0)
L → 2 ( 0, 0) (-1, 0) (-1, -1) ( 0, -1) ( 1, 0)
L → 0 ( 0, 0) (-1, 0) (-1, 1) ( 0, -1) ( 0, 1)
0 → L ( 0, 0) ( 1, 0) ( 1, -1) ( 0, 1) ( 0, -1)
0 → 2 ( 0, 0) ( 0, -1)
2 → 0 ( 0, 0) ( 0, 1)
R → L ( 0, 0) ( 1, 0)
L → R ( 0, 0) (-1, 0)

U Piece Kicks

Test 1 Test 2 Test 3 Test 4 Test 5 Test 6
0 → R ( 0, 0) ( 1, 0) (-1, 0) (-1, -1) ( 0, 1) ( 0, -1)
R → 0 ( 0, 0) (-1, 0) ( 1, 0) ( 1, 1) ( 0, -1) ( 0, 1)
R → 2 ( 0, 0) ( 1, -1) ( 0, -1) ( 1, 0) ( 0, -2) ( 1, 1)
2 → R ( 0, 0) (-1, 1) ( 0, 1) (-1, 0) ( 0, 2) (-1, -1)
2 → L ( 0, 0) ( 1, 1) ( 0, 1) ( 1, 0) ( 0, 2) ( 1, -1)
L → 2 ( 0, 0) (-1, -1) ( 0, -1) (-1, 0) ( 0, -2) (-1, 1)
L → 0 ( 0, 0) ( 1, 0) (-1, 0) (-1, 1) ( 0, 1) ( 0, -1)
0 → L ( 0, 0) (-1, 0) ( 1, 0) ( 1, -1) ( 0, -1) ( 0, 1)
0 → 2 ( 0, 0) ( 0, -1)
2 → 0 ( 0, 0) ( 0, 1)
R → L ( 0, 0) ( 1, 0)
L → R ( 0, 0) (-1, 0)