#Modern gamemode config
#PLEASE NOTE:
#SRS data Y offset is inverted, meaning that 1 will mean move up by 1 tile and -1 will move it down.
#Every other offset in this file is NOT inverted and when Y offset is increased it moves downwards.
#http://tetris.wikia.com/wiki/Tetris_Wiki
#http://tetris.wikia.com/wiki/Tetris_Guideline
#NAME
GM PPT (Pentominos + Tetris)

#Gamemode Settings
SETTINGSSTART
TSPIN 1
SRS 1
COMBO 1
B2B 1
GHOST 1
NOSZOZSO 1
INFINITE 1
MINWIDTH 6
MINHEIGHT 6
SETTINGSEND

#Level data
#http://tetris.wikia.com/wiki/Tetris_Worlds
#DATA <MAXLEVEL> <LINESFORNEXT> <EXTRALINESFORNEXT>
LEVELSETTINGS
DATA 20 10 0
#LEVEL <gravity> <lockframes> <falltiles>
#when fallframes are >= 60 it will drop by falltiles.
#fallframes are incremented by gravity.
#if gravity is 1 it'll take 1 second to drop a tile.
LEVELSTART
LEVEL 1 30 1
LEVEL 1.26102 30 1
LEVEL 1.61862 30 1
LEVEL 2.11536 30 1
LEVEL 2.8158 30 1
LEVEL 3.8166 30 1
LEVEL 5.274 30 1
LEVEL 7.416 30 1
LEVEL 10.65 30 1
LEVEL 15.588 30 1
LEVEL 23.28 30 1
LEVEL 35.4 30 1
LEVEL 55.2 30 1
LEVEL 87.6 30 1
LEVEL 70.8 30 2
LEVEL 117.37 30 2
LEVEL 99.206 30 4
LEVEL 85.616 30 8
LEVEL 76.219 30 16
LEVEL 67.934 30 32 
LEVELEND

SCORINGSTART
#Formula for further bonuses: 
#    800 + (cleared lines - 4) x 200 + (cleared lines - 4) x 100 x (cleared lines - 4)
LINECLEARBONUS
100
300
500
800

#Formula for further bonuses: 
#    400 + cleared lines x 400
ALLCLEARBONUS
800
1200
1600
2000

#Formula for further bonuses:
#    1100 + (cleared lines - 3) x 400 + (cleared lines - 3) x 200 x (cleared lines - 3)
TSPINBONUS
400
700
500
1100

TSPINMINI 100
SOFTDROP 1
HARDDROP 2
COMBO 50

B2BFACTOR 1.5
LEVELFACTOR 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

TEXT_B2B Back-to-Back
TEXT_TSPIN T-Spin
TEXT_TMINI T-Spin Mini
TEXT_COMBO Combo
TEXT_ALLCLEAR ALL CLEAR
TEXT_LINECLEARPLUS -tris
TEXT_LINECLEAR Single
TEXT_LINECLEAR Double
TEXT_LINECLEAR Triple
TEXT_LINECLEAR Tetris
TEXT_LINECLEAR Tetris+
SCORINGEND

#BLOCKS
#http://tetris.wikia.com/wiki/Tetromino
#http://tetris.wikia.com/wiki/Wall_kick
#http://tetris.wikia.com/wiki/SRS
BLOCKSTART

#I BLOCK
NEWBLOCK I
OFFSET 0 0
BBOX 4 4
----
0000
----
----
--0-
--0-
--0-
--0-
----
----
0000
----
-0--
-0--
-0--
-0--
SRSDATA
0 0 -2 0 1 0 -2 -1 1 2
0 0 2 0 -1 0 2 1 -1 -2
0 0 -1 0 2 0 -1 2 2 -1
0 0 1 0 -2 0 1 -2 -2 1
0 0 2 0 -1 0 2 1 -1 -2
0 0 -2 0 1 0 -2 -1 1 2
0 0 1 0 -2 0 1 -2 -2 1
0 0 -1 0 2 0 -1 2 2 -1
#NEWBLOCK proceeds to create a new block followed by the identifier letter, if it's a T then T spin checking will be done.
#NEWBLOCK <letter>
#
#OFFSET defines the spawn offset of the block
#OFFSET <x y>
#
#Tile and SRS information
#
#BBOX defines the width and height of the tile data
#it is then followed by tile data in the following lines by all 4 rotations (0-3)
#tile data is valid for numbers 0-7, use - for no tile
#
#Syntax:
#
#BBOX <width height>
#[tile data]
#
#SRSDATA
#ROTATION 0->1 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 1->0 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 1->2 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 2->1 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 2->3 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 3->2 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 3->0 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 0->3 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>

#J BLOCK
NEWBLOCK J
OFFSET 0 0
BBOX 3 3
1--
111
---
-11
-1-
-1-
---
111
--1
-1-
-1-
11-
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#L BLOCK
NEWBLOCK L
OFFSET 0 0
BBOX 3 3
--2
222
---
-2-
-2-
-22
---
222
2--
22-
-2-
-2-
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#O BLOCK
NEWBLOCK O
OFFSET 0 0
BBOX 4 3
-33-
-33-
----
-33-
-33-
----
-33-
-33-
----
-33-
-33-
----
SRSDATA
0 0 0 -1 0 -1 0 -1 0 -1
0 0 1 0 1 0 1 0 1 0
0 0 -1 0 -1 0 -1 0 -1 0
0 0 1 0 1 0 1 0 1 0
0 0 0 1 0 1 0 1 0 1
0 0 0 -1 0 -1 0 -1 0 -1
0 0 1 0 1 0 1 0 1 0
0 0 -1 0 -1 0 -1 0 -1 0

#S BLOCK
NEWBLOCK S
OFFSET 0 0
BBOX 3 3
-44
44-
---
-4-
-44
--4
---
-44
44-
4--
44-
-4-
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#T BLOCK
#
#TCORNERCOORDS are used for checking T spin corners
#TCORNERCOORDS LT<x1 y1> RT<x2 y2> RB<x3 y3> LB<x4 y4>
#
#TSIDECOORDS are used for determining if the T spin is a T spin or a mini T spin.
#TSIDECOORDS T<x1 y1> L<x2 y2> R<x3 y3> D<x4 y4>
#
NEWBLOCK T
TCORNERCOORDS 0 0 2 0 2 2 0 2
TSIDECOORDS 1 0 0 1 2 1 1 2
OFFSET 0 0
BBOX 3 3
-5-
555
---
-5-
-55
-5-
---
555
-5-
-5-
55-
-5-
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#Z BLOCK
NEWBLOCK Z
OFFSET 0 0
BBOX 3 3
66-
-66
---
--6
-66
-6-
---
66-
-66
-6-
66-
6--
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#I BLOCK
#at 1
NEWBLOCK I
OFFSET -1 -1
BBOX 6 6
------
------
00000-
------
------
------
---0--
---0--
---0--
---0--
---0--
------
------
------
------
-00000
------
------
------
--0---
--0---
--0---
--0---
--0---
SRSDATA
0 0 -2 0 1 0 -2 -1 1 2
0 0 2 0 -1 0 2 1 -1 -2
0 0 -1 0 2 0 -1 2 2 -1
0 0 1 0 -2 0 1 -2 -2 1
0 0 2 0 -1 0 2 1 -1 -2
0 0 -2 0 1 0 -2 -1 1 2
0 0 1 0 -2 0 1 -2 -2 1
0 0 -1 0 2 0 -1 2 2 -1
#NEWBLOCK proceeds to create a new block followed by the identifier letter, if it's a T then T spin checking will be done.
#NEWBLOCK <letter>
#
#OFFSET defines the spawn offset of the block
#OFFSET <x y>
#
#Tile and SRS information
#
#BBOX defines the width and height of the tile data
#it is then followed by tile data in the following lines by all 4 rotations (0-3)
#tile data is valid for numbers 0-7, use - for no tile
#
#Syntax:
#
#BBOX <width height>
#[tile data]
#
#SRSDATA
#ROTATION 0->1 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 1->0 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 1->2 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 2->1 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 2->3 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 3->2 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 3->0 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>
#ROTATION 0->3 <test1 x1 y1> <test2 x2 y2> <test3 x3 y3> <test4 x4 y4> <test5 x5 y5>

#J BLOCK
#at 2
NEWBLOCK J
OFFSET 0 0
BBOX 3 3
1--
111
-1-
-11
11-
-1-
-1-
111
--1
-1-
-11
11-
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#L BLOCK
#at 2
NEWBLOCK L
OFFSET 0 0
BBOX 3 3
--2
222
2--
22-
-2-
-22
--2
222
2--
22-
-2-
-22
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#O BLOCK
#at 4 (center)
NEWBLOCK O
OFFSET 0 -1
BBOX 4 4
----
-33-
-33-
-3--
----
333-
-33-
----
--3-
-33-
-33-
----
----
-33-
-333
----
SRSDATA
0 0 0 -1 0 -1 0 -1 0 -1
0 0 1 0 1 0 1 0 1 0
0 0 -1 0 -1 0 -1 0 -1 0
0 0 1 0 1 0 1 0 1 0
0 0 0 1 0 1 0 1 0 1
0 0 0 -1 0 -1 0 -1 0 -1
0 0 1 0 1 0 1 0 1 0
0 0 -1 0 -1 0 -1 0 -1 0

#S BLOCK
#at 1
NEWBLOCK S
OFFSET -1 -1
BBOX 5 5
-----
--44-
444--
-----
-----
--4--
--4--
--44-
---4-
-----
-----
-----
--444
-44--
-----
-----
-4---
-44--
--4--
--4--
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#T BLOCK
#
#TCORNERCOORDS are used for checking T spin corners
#TCORNERCOORDS LT<x1 y1> RT<x2 y2> RB<x3 y3> LB<x4 y4>
#
#TSIDECOORDS are used for determining if the T spin is a T spin or a mini T spin.
#TSIDECOORDS T<x1 y1> L<x2 y2> R<x3 y3> D<x4 y4>
#
#at 2
NEWBLOCK T
TCORNERCOORDS 1 1 3 1 3 3 1 3
TSIDECOORDS 2 1 1 2 3 2 2 3
OFFSET -1 -1
BBOX 5 5
--5--
--5--
-555-
-----
-----
-----
--5--
--555
--5--
-----
-----
-----
-555-
--5--
--5--
-----
--5--
555--
--5--
-----
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

#Z BLOCK
#at 2
NEWBLOCK Z
OFFSET 0 0
BBOX 3 3
66-
-66
--6
--6
-66
66-
6--
66-
-66
-66
66-
6--
SRSDATA
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 -1 0 2 1 2
0 0 1 0 1 -1 0 2 1 2
0 0 -1 0 -1 1 0 -2 -1 -2
0 0 1 0 1 1 0 -2 1 -2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 -1 0 -1 -1 0 2 -1 2
0 0 1 0 1 1 0 -2 1 -2

BLOCKEND
GMEND