Tromi: Difference between revisions

From TetrisWiki
Jump to navigation Jump to search
(Created page with "{{stub}} {{Infobox | boxart = | caption = | developer = mycophobia | publisher = | platform = LÖVE | released = September 25, 2023 | latestrelease = | sequel = | preview = 1 | playfield = 20 × 10 | hold = | hard = | system = | title-scrn = | ingame-scrn = Tromi_ingame.jpg }} '''''Tromi''''' is a ''TGM'' fan game by Mycophobia. == External links == * [https://mycophobia.org/tromi.html Home page and downloa...")
 
(Small cleanup and fill missing information)
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{stub}}
{{Infobox
{{Infobox
| boxart  =  
| boxart  =  
Line 6: Line 5:
| publisher  =  
| publisher  =  
| platform      = LÖVE
| platform      = LÖVE
| released      = September 25, 2023
| released      = {{release | '''First release (Version 1)''' | December 26, 2022}} {{release | '''Official release (Version 2)''' | April, 08 2024}}
| latestrelease =  
| latestrelease = April 25, 2024 (Version 2.2)
| sequel        =  
| sequel        =  
| preview  = 1
| preview  = 1
| playfield = 20 × 10
| playfield = 20 × 10
| hold      =  
| hold      = No
| hard      =  
| hard      = No
| system    =  
| system    = Tromi Rotation System
| title-scrn      =  
| title-scrn      =  
| ingame-scrn    = Tromi_ingame.jpg
| ingame-scrn    = Tromi_ingame.jpg
}}
}}


'''''Tromi''''' is a ''[[TGM]]'' fan game by Mycophobia.
'''''Tromi''''' is a fan game by Mycophobia. It's inspired by ''[[TGM]]'' and is a heavy modification of ''[[Cambridge]]''.
Designed to be an old-school flavour and relaxing game while modernising what is necessary to allow for modern gameplay.
 
== Gameplay ==
=== Gravity ===
[[Gravity]] increases uniformly, unlike [[TGM series]] games; however, it still depends on the current level.
 
=== Level ===
Unlike in TGM, where level has a unique implementation, level in ''Tromi'' is simply based on your current score.
 
There are 10 levels in ''Tromi'', numbered from 0 to 9, and there are 6 small steps {{efn |''Tromi'', in behind the scene, actually recognise all 10 levels as 60 (internal) levels, but the speed table only contains 55 (internal) levels}} in every level (except level 9).
 
=== IRS ===
{{main|IRS}}
Normally a piece will appear in the rotation showed in the [[piece preview]]. With IRS, holding either the left or right rotation button will cause the piece to appear rotated 90 degrees. This allows the player a higher degree of freedom when placing pieces at higher game speeds.
 
== Grading ==
{| class="wikitable floatright"
|+ Grade list<br>(can be seen at "Name entry" screen)
! style="background:#33D5FD" | Beginner || style="background:#00F59B" | Intermediate || style="background:#FFFF00" | Expert
|-
| bgcolor = "#76F9FB" | 19 kyu || bgcolor="#6DFFC2" | 9 kyu || bgcolor="#FFFF6D" | 1 Dan
|-
| bgcolor = "#76F9FB" | 18 kyu || bgcolor="#6DFFC2" | 8 kyu || bgcolor="#FFFF6D" | 2 Dan
|-
| bgcolor = "#76F9FB" | 17 kyu || bgcolor="#6DFFC2" | 7 kyu || bgcolor="#FFFF6D" | 3 Dan
|-
| bgcolor = "#76F9FB" | 16 kyu || bgcolor="#6DFFC2" | 6 kyu || bgcolor="#FFFF6D" | 4 Dan
|-
| bgcolor = "#76F9FB" | 15 kyu || bgcolor="#6DFFC2" | 5 kyu || bgcolor="#FFFF6D" | 5 Dan
|-
| bgcolor = "#76F9FB" | 14 kyu || bgcolor="#6DFFC2" | 4 kyu || bgcolor="#FFFF6D" | 6 Dan
|-
| bgcolor = "#76F9FB" | 13 kyu || bgcolor="#6DFFC2" | 3 kyu || bgcolor="#FFFF6D" | 7 Dan
|-
| bgcolor = "#76F9FB" | 12 kyu || bgcolor="#6DFFC2" | 2 kyu || bgcolor="#FFFF6D" | 8 Dan
|-
| bgcolor = "#76F9FB" | 11 kyu || bgcolor="#6DFFC2" | 1 kyu || bgcolor="#FFFF6D" | 9 Dan
|-
| bgcolor = "#76F9FB" | 10 kyu
|}
=== Account system ===
''Tromi'' has an account system like ''[[TGM3]]'', but it doesn't come with any security system such as PIN or password. That's why you doesn't need to register any account for the first time, just fill in your (initial) name to play (like in guest mode).
 
=== Grading system ===
''Tromi'' has its own grading system, nominally based on the kyu/dan system of Go and Shogi, organised to correspond to specific points in the speed curve.<br>
Both ''Tromi'' and TGM3 have their own grading systems that are designed to track performance in multiple games, but the way they work is different.
* In TGM3, there is [[TGM3#User accounts and exams | the Promotion Exam and the Demotion Exam]]
* In ''Tromi'', there is [[Tromi#Promotion Meter | the Promotion Meter]]
 
=== Promotion Meter ===
Promotion Meter acts like a progress bar that shows how likely you are to be promoted or demoted. It ranges from -2 (high chance of demotion) to +2 (high chance of promotion). New players starting at 0.
 
After every game, your final score is compared to the table below based on your current grade. For every grade, there are 3 scores: Auto Promote, Promote, and Demote assigned to them.
* If your score is higher than your grade's Promote point, Promotion Meter will be boosted by one.
* On the other hand, if your score falls below your grade's Demote point, Promotion Meter will be dropped by one.
 
Once the Promotion Meter goes above +2, you will be promoted, but if the Promotion Meter falls below -2, you will be demoted. Both cases will lead to the Promotion Meter going back to 0.
 
There are two special cases:
* If your score is between your grade's Promote point and Demote point, or your run is too short (dropped less than 50 blocks){{efn | Only available in version 2.2 and later, versions earlier than that still drop your Promotion Meter}}; nothing will happen.
* If your score exceeds your grade's Auto Promote point, you will get the highest grade that your score qualifies for.
 
{| class="wikitable"
|+ Grade condition (required score)
! Grade || Auto<br>Promote || Promote || Demote || Grade || Auto<br>Promote || Promote || Demote || Grade || Auto<br>Promote || Promote || Demote
 
|- align = "center"
| bgcolor="#33D5FD" | 19 kyu
| bgcolor="#76F9FB" | 79,999|| bgcolor="#76F9FB" | 26,666|| bgcolor="#76F9FB" |-1
| bgcolor="#00F59B" | 9 kyu
| bgcolor="#6DFFC2" | 346,666|| bgcolor="#6DFFC2" | 293,333|| bgcolor="#6DFFC2" |180,000
| bgcolor="#FFFF00" | 1 Dan
| bgcolor="#FFFF6D" | 586,666|| bgcolor="#FFFF6D" | 533,333|| bgcolor="#FFFF6D" |420,000
 
|- align = "center"
| bgcolor="#33D5FD" | 18 kyu
| bgcolor="#76F9FB" | 106,666|| bgcolor="#76F9FB" | 53,333|| bgcolor="#76F9FB" |13,332
| bgcolor="#00F59B" | 8 kyu
| bgcolor="#6DFFC2" | 373,333|| bgcolor="#6DFFC2" | 319,999|| bgcolor="#6DFFC2" |180,000
| bgcolor="#FFFF00" | 2 Dan
| bgcolor="#FFFF6D" | 613,333|| bgcolor="#FFFF6D" | 559,999|| bgcolor="#FFFF6D" |420,000
 
|- align = "center"
| bgcolor="#33D5FD" | 17 kyu
| bgcolor="#76F9FB" | 133,333|| bgcolor="#76F9FB" | 79,999|| bgcolor="#76F9FB" |25,000
| bgcolor="#00F59B" | 7 kyu
| bgcolor="#6DFFC2" | 399,999|| bgcolor="#6DFFC2" | 346,666|| bgcolor="#6DFFC2" |240,000
| bgcolor="#FFFF00" | 3 Dan
| bgcolor="#FFFF6D" | 639,999|| bgcolor="#FFFF6D" | 586,666|| bgcolor="#FFFF6D" |480,000
 
|- align = "center"
| bgcolor="#33D5FD" | 16 kyu
| bgcolor="#76F9FB" | 159,999|| bgcolor="#76F9FB" | 106,666|| bgcolor="#76F9FB" |40,000
| bgcolor="#00F59B" | 6 kyu
| bgcolor="#6DFFC2" | 426,666|| bgcolor="#6DFFC2" | 373,333|| bgcolor="#6DFFC2" |240,000
| bgcolor="#FFFF00" | 4 Dan
| bgcolor="#FFFF6D" | 666,666|| bgcolor="#FFFF6D" | 613,333|| bgcolor="#FFFF6D" |480,000
 
|- align = "center"
| bgcolor="#33D5FD" | 15 kyu
| bgcolor="#76F9FB" | 186,666|| bgcolor="#76F9FB" | 133,333|| bgcolor="#76F9FB" |50,000
| bgcolor="#00F59B" | 5 kyu
| bgcolor="#6DFFC2" | 453,333|| bgcolor="#6DFFC2" | 399,999|| bgcolor="#6DFFC2" |300,000
| bgcolor="#FFFF00" | 5 Dan
| bgcolor="#FFFF6D" | 693,333|| bgcolor="#FFFF6D" | 639,999|| bgcolor="#FFFF6D" |480,000
 
|- align = "center"
| bgcolor="#33D5FD" | 14 kyu
| bgcolor="#76F9FB" | 213,333|| bgcolor="#76F9FB" | 159,999|| bgcolor="#76F9FB" |60,000
| bgcolor="#00F59B" | 4 kyu
| bgcolor="#6DFFC2" | 479,999|| bgcolor="#6DFFC2" | 426,666|| bgcolor="#6DFFC2" |300,000
| bgcolor="#FFFF00" | 6 Dan
| bgcolor="#FFFF6D" | 719,999|| bgcolor="#FFFF6D" | 666,666|| bgcolor="#FFFF6D" |480,000
 
|- align = "center"
| bgcolor="#33D5FD" | 13 kyu
| bgcolor="#76F9FB" | 239,999|| bgcolor="#76F9FB" | 186,666|| bgcolor="#76F9FB" |60,000
| bgcolor="#00F59B" | 3 kyu
| bgcolor="#6DFFC2" | 506,666|| bgcolor="#6DFFC2" | 453,333|| bgcolor="#6DFFC2" |360,000
| bgcolor="#FFFF00" | 7 Dan
| bgcolor="#FFFF6D" | 746,666|| bgcolor="#FFFF6D" | 693,333|| bgcolor="#FFFF6D" |540,000
 
|- align = "center"
| bgcolor="#33D5FD" | 12 kyu
| bgcolor="#76F9FB" | 266,666|| bgcolor="#76F9FB" | 213,333|| bgcolor="#76F9FB" |120,000
| bgcolor="#00F59B" | 2 kyu
| bgcolor="#6DFFC2" | 533,333|| bgcolor="#6DFFC2" | 479,999|| bgcolor="#6DFFC2" |360,000
| bgcolor="#FFFF00" | 8 Dan
| bgcolor="#FFFF6D" | 773,333|| bgcolor="#FFFF6D" | 719,999|| bgcolor="#FFFF6D" |540,000
 
|- align = "center"
| bgcolor="#33D5FD" | 11 kyu
| bgcolor="#76F9FB" | 293,333|| bgcolor="#76F9FB" | 239,999|| bgcolor="#76F9FB" |120,000
| bgcolor="#00F59B" | 1 kyu
| bgcolor="#6DFFC2" | 559,999|| bgcolor="#6DFFC2" | 506,666|| bgcolor="#6DFFC2" |360,000
| bgcolor="#FFFF00" | 9 Dan
| bgcolor="#FFFF6D" | 1,000,000|| bgcolor="#FFFF6D" | 719,999|| bgcolor="#FFFF6D" |540,000
 
|- align = "center"
| bgcolor="#33D5FD" | 10 kyu
| bgcolor="#76F9FB" | 319,999|| bgcolor="#76F9FB" | 266,666|| bgcolor="#76F9FB" |120,000
|}
 
== Formulas ==
=== Level and step ===
: <math>\text{Level} = \lfloor \text{Score} \div 60,000 \rfloor</math>
: <math>\text{Step} = \lfloor \text{Score}\div 10,000 \rfloor \bmod (\text{Level} \times 6) </math>
Where:
* <math>\lfloor \text{Score} \div 10,000 \rfloor</math> and <math>\lfloor \text{Score} \div 60,000 \rfloor</math> are rounded down.
* Level is your current level (should only be in the range of 0 to 9).
* Score is your current score.
* Step is the remainder, which is your current step in your current level (should only be in the range of 1 to 6).
 
=== Scoring ===
{| class="wikitable floatright" border="2" cellpadding="2" cellspacing="0" style="margin-left:1em; margin-right:1em; background:#f9f9f9; border:3px #999999 solid; border-collapse:collapse;"
|+ Lines Bonus reward
|-
! Lines !! Reward (Points)
|-
| Double || 1,667
|-
| Triple || 3,750
|-
| Quad || 6,668
|-
| Pentad || 8,335
|}
 
: <math>\text{Efficiency} = (\text{Moves} \div \text{[Active frames]}) \times \text{(0 if placement results in hole)}</math>
: <math>\text{Score} = (\text{[50 piece Avg. of Efficiency]} \times 1666 \times \text{Lines}) + \text{[Lines Bonus]}</math>
Where:
* Moves is the number of cells the piece moved (including manual moves, manual soft drops, and gravity).
* Active frames is the number of frames since the block spawned until the piece locked down.
* Lines is the number of lines you just cleared.
* Lines Bonus is the extra bonus for clearing two or more lines. Look at the table on the right to calculate
 
== Speed timings ==
{|
|-
<td>
{| class="wikitable" border="2" cellpadding="2" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:3px #999999 solid; border-collapse:collapse;"
|+ Dynamic value
! style="background:#0DB2FF" |Level
! style="background:#00FFB7" |Step
! style="background:#BBBBBB" |[[Gravity]]<br>(G)
! style="background:#FFA069" |[[ARE]]<br>(frame)
! style="background:#CC88FF" |[[Lock delay|Lock]]<br>(frame)
! style="background:#FFFF55" |[[DAS]]<br>(frame)
! style="background:#0DB2FF" |Level
! style="background:#00FFB7" |Step
! style="background:#BBBBBB" |[[Gravity]]<br>(G)
! style="background:#FFA069" |[[ARE]]<br>(frame)
! style="background:#CC88FF" |[[Lock delay|Lock]]<br>(frame)
! style="background:#FFFF55" |[[DAS]]<br>(frame)
|- align = center
| rowspan="6" bgcolor="#8AD2FF" | 0
| bgcolor = "#C8FFF6" | 1
|0.013
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| rowspan="6" bgcolor="#8AD2FF" | 5
| bgcolor = "#C8FFF6" | 1
|0.842
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 2
|0.015
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 2
|1.029
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 3
|0.016
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 3
|1.323
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 4
|0.018
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 4
|1.852
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 11
|- align = center
| bgcolor = "#C8FFF6" | 5
|0.021
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 5
|3.086
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 10
|- align = center
| bgcolor = "#C8FFF6" | 6
|0.025
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 6
|9.259
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 9
|- align = center
| rowspan="6" bgcolor="#8AD2FF" | 1
| bgcolor = "#C8FFF6" | 1
|0.027
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| rowspan="6" bgcolor="#8AD2FF" | 6
| bgcolor = "#C8FFF6" | 1
|20
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 2
|0.030
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 2
|20
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 3
|0.033
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 3
|20
| bgcolor = "#FFD3AC" | 19
| bgcolor = "#CCBBFF" | 28
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 4
|0.038
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 4
|20
| bgcolor = "#FFD3AC" | 18
| bgcolor = "#CCBBFF" | 27
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 5
|0.043
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 5
|20
| bgcolor = "#FFD3AC" | 17
| bgcolor = "#CCBBFF" | 26
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 6
|0.051
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 6
|20
| bgcolor = "#FFD3AC" | 17
| bgcolor = "#CCBBFF" | 25
| bgcolor = "#FFFF88" | 8
|- align = center
| rowspan="6" bgcolor="#8AD2FF" | 2
| bgcolor = "#C8FFF6" | 1
|0.056
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| rowspan="6" bgcolor="#8AD2FF" | 7
| bgcolor = "#C8FFF6" | 1
|20
| bgcolor = "#FFD3AC" | 16
| bgcolor = "#CCBBFF" | 24
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 2
|0.062
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 2
|20
| bgcolor = "#FFD3AC" | 16
| bgcolor = "#CCBBFF" | 23
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 3
|0.070
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 3
|20
| bgcolor = "#FFD3AC" | 15
| bgcolor = "#CCBBFF" | 23
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 4
|0.079
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 4
|20
| bgcolor = "#FFD3AC" | 15
| bgcolor = "#CCBBFF" | 22
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 5
|0.092
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 5
|20
| bgcolor = "#FFD3AC" | 14
| bgcolor = "#CCBBFF" | 21
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 6
|0.109
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 6
|20
| bgcolor = "#FFD3AC" | 14
| bgcolor = "#CCBBFF" | 21
| bgcolor = "#FFFF88" | 8
|- align = center
| rowspan="6" bgcolor="#8AD2FF" | 3
| bgcolor = "#C8FFF6" | 1
|0.120
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| rowspan="6" bgcolor="#8AD2FF" | 8
| bgcolor = "#C8FFF6" | 1
|20
| bgcolor = "#FFD3AC" | 14
| bgcolor = "#CCBBFF" | 20
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 2
|0.134
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 2
|20
| bgcolor = "#FFD3AC" | 13
| bgcolor = "#CCBBFF" | 20
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 3
|0.152
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 3
|20
| bgcolor = "#FFD3AC" | 13
| bgcolor = "#CCBBFF" | 20
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 4
|0.175
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 4
|20
| bgcolor = "#FFD3AC" | 13
| bgcolor = "#CCBBFF" | 19
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 5
|0.206
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 5
|20
| bgcolor = "#FFD3AC" | 13
| bgcolor = "#CCBBFF" | 19
| bgcolor = "#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 6
|0.250
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| bgcolor = "#C8FFF6" | 6
|20
| bgcolor = "#FFD3AC" | 13
| bgcolor = "#CCBBFF" | 19
| bgcolor = "#FFFF88" | 8
|- align = center
| rowspan="6" bgcolor="#8AD2FF" | 4
| bgcolor = "#C8FFF6" | 1
|0.281
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
| rowspan="6" bgcolor="#8AD2FF" | 9
| rowspan="6" bgcolor="#C8FFF6" |
| rowspan="6" |20
| rowspan="6" bgcolor="#FFD3AC" | 12
| rowspan="6" bgcolor="#CCBBFF" | 18
| rowspan="6" bgcolor="#FFFF88" | 8
|- align = center
| bgcolor = "#C8FFF6" | 2
|0.319
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 3
|0.370
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 4
|0.441
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 5
|0.545
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|- align = center
| bgcolor = "#C8FFF6" | 6
|0.712
| bgcolor = "#FFD3AC" | 20
| bgcolor = "#CCBBFF" | 30
| bgcolor = "#FFFF88" | 12
|}
</td>
<td style="vertical-align: top; border: 3px; padding-left: 1em">
{| class="wikitable"
|+ Fixed value
! style="background:#0DB2FF" align = "center" |'''Mode'''
! style="background:#00FFB7" align = "center" |'''Normal'''
! style="background:#FFA069" align = "center" |'''20G training'''
|-
| ARR (frames) || align = "center" colspan="2"| 1
|-
| Drop (G) || align = "center" colspan="2"| 1
|-
| DAS cut (frames) || align = "center" colspan="2" | 0
|-
| DAS (frames) || align = "center" | - || align = "center" | 8
|-
| Lock (frames) || align = "center" | - || align = "center" | 99999999999
|-
| Gravity (G) || align = "center" | - || align = center | 20
|-
| ARE (frames) || align = "center" | - || align = "center" | 2
|}
</td>
|}
 
== Rotation system ==
Tromi rotation uses standard Sega orientations and colors, with an additional kick system in the case of a failed basic rotation. Exactly one kick will be attempted, and this kick is selected in the following manner:
 
If basic rotation fails, determine which rows and columns are blocked when the piece is rotated. Relevant rows and columns are as follows, numbered top-to-bottom and left-to-right:
 
<div>
<div style="float:right; width:30%;">
{| class="wikitable"
|-
! A !! B !! C !! D !! E !! F !! G
|-
|
<playfield>
XXXX
....
....
....
</playfield>
||
<playfield>
....
....
....
XXXX
</playfield>
||
<playfield>
....
X...
....
....
</playfield>
||
<playfield>
....
....
X...
....
</playfield>
||
<playfield>
....
..XX
....
....
</playfield>
||
<playfield>
....
....
..XX
....
</playfield>
||
<playfield>
.X..
.X..
.X..
.X..
</playfield>
|}
</div>
<div style="margin-right: 50%;">
    A. Row 1 (any of top row)
    B. Row 4 (any of bottom row, only applicable to vertical I)
    C. Row 2 + Column 1 (upper left)
    D. Row 3 + Column 1 (lower left)
    E. Row 2 + Column 3 or 4 (upper right)
    F. Row 3 + Column 3 or 4 (lower right)
    G. Column 2 (any of center column)
</div>
</div>
 
The kick selected is determined in the following order of priority:
    1. If case A, C+E, C+F, or E+D, one space down
    2. If case D+F, one space up
    3. If case C and/or D, one space right
    4. If case E and/or F, one space left
    5. If case G and the rotated piece has a mino in the left column, one space right
    6. If case G and the rotated piece has a mino in the right column, one space left
    7. If case B, one space up (this is only possible with the vertical I)
 
Case A mitigates the playfield having no invisible rows above it, in that if a piece is rotated from spawn position at the very top of the playfield, it will always try to kick down instead of anything else.
 
Floorkicks will not allow for infinite lock delay resets as lock delay is only reset when a piece steps down lower than it has ever been. A side-effect is that after a floorkick the total lock delay will be shared for the cell the piece is on and the cell directly below it; one must drop the piece at least 2 cells down after a floorkick for the lock delay to reset.
 
== Notes ==
{{notelist}}


== External links ==
== External links ==
* [https://mycophobia.org/tromi.html Home page and download]
* [https://mycophobia.org/tromi Home page and download]
* [https://mycophobia.org/forums/viewtopic.php?t=29 Leaderboard]


[[Category:Fan games]]
[[Category:Fan games]]

Latest revision as of 11:46, 13 May 2024

Tromi
Developer(s)mycophobia
Platform(s)LÖVE
Release
  • First release (Version 1) : December 26, 2022
  • Official release (Version 2) : April, 08 2024
Latest releaseApril 25, 2024 (Version 2.2)
Gameplay info
Next pieces1
Playfield size20 × 10
Hold pieceNo
Hard dropNo
Rotation systemTromi Rotation System
Tromi ingame.jpg

Tromi is a fan game by Mycophobia. It's inspired by TGM and is a heavy modification of Cambridge. Designed to be an old-school flavour and relaxing game while modernising what is necessary to allow for modern gameplay.

Gameplay

Gravity

Gravity increases uniformly, unlike TGM series games; however, it still depends on the current level.

Level

Unlike in TGM, where level has a unique implementation, level in Tromi is simply based on your current score.

There are 10 levels in Tromi, numbered from 0 to 9, and there are 6 small steps [a] in every level (except level 9).

IRS

Main article: IRS

Normally a piece will appear in the rotation showed in the piece preview. With IRS, holding either the left or right rotation button will cause the piece to appear rotated 90 degrees. This allows the player a higher degree of freedom when placing pieces at higher game speeds.

Grading

Grade list
(can be seen at "Name entry" screen)
Beginner Intermediate Expert
19 kyu 9 kyu 1 Dan
18 kyu 8 kyu 2 Dan
17 kyu 7 kyu 3 Dan
16 kyu 6 kyu 4 Dan
15 kyu 5 kyu 5 Dan
14 kyu 4 kyu 6 Dan
13 kyu 3 kyu 7 Dan
12 kyu 2 kyu 8 Dan
11 kyu 1 kyu 9 Dan
10 kyu

Account system

Tromi has an account system like TGM3, but it doesn't come with any security system such as PIN or password. That's why you doesn't need to register any account for the first time, just fill in your (initial) name to play (like in guest mode).

Grading system

Tromi has its own grading system, nominally based on the kyu/dan system of Go and Shogi, organised to correspond to specific points in the speed curve.
Both Tromi and TGM3 have their own grading systems that are designed to track performance in multiple games, but the way they work is different.

Promotion Meter

Promotion Meter acts like a progress bar that shows how likely you are to be promoted or demoted. It ranges from -2 (high chance of demotion) to +2 (high chance of promotion). New players starting at 0.

After every game, your final score is compared to the table below based on your current grade. For every grade, there are 3 scores: Auto Promote, Promote, and Demote assigned to them.

  • If your score is higher than your grade's Promote point, Promotion Meter will be boosted by one.
  • On the other hand, if your score falls below your grade's Demote point, Promotion Meter will be dropped by one.

Once the Promotion Meter goes above +2, you will be promoted, but if the Promotion Meter falls below -2, you will be demoted. Both cases will lead to the Promotion Meter going back to 0.

There are two special cases:

  • If your score is between your grade's Promote point and Demote point, or your run is too short (dropped less than 50 blocks)[b]; nothing will happen.
  • If your score exceeds your grade's Auto Promote point, you will get the highest grade that your score qualifies for.
Grade condition (required score)
Grade Auto
Promote
Promote Demote Grade Auto
Promote
Promote Demote Grade Auto
Promote
Promote Demote
19 kyu 79,999 26,666 -1 9 kyu 346,666 293,333 180,000 1 Dan 586,666 533,333 420,000
18 kyu 106,666 53,333 13,332 8 kyu 373,333 319,999 180,000 2 Dan 613,333 559,999 420,000
17 kyu 133,333 79,999 25,000 7 kyu 399,999 346,666 240,000 3 Dan 639,999 586,666 480,000
16 kyu 159,999 106,666 40,000 6 kyu 426,666 373,333 240,000 4 Dan 666,666 613,333 480,000
15 kyu 186,666 133,333 50,000 5 kyu 453,333 399,999 300,000 5 Dan 693,333 639,999 480,000
14 kyu 213,333 159,999 60,000 4 kyu 479,999 426,666 300,000 6 Dan 719,999 666,666 480,000
13 kyu 239,999 186,666 60,000 3 kyu 506,666 453,333 360,000 7 Dan 746,666 693,333 540,000
12 kyu 266,666 213,333 120,000 2 kyu 533,333 479,999 360,000 8 Dan 773,333 719,999 540,000
11 kyu 293,333 239,999 120,000 1 kyu 559,999 506,666 360,000 9 Dan 1,000,000 719,999 540,000
10 kyu 319,999 266,666 120,000

Formulas

Level and step

Where:

  • and are rounded down.
  • Level is your current level (should only be in the range of 0 to 9).
  • Score is your current score.
  • Step is the remainder, which is your current step in your current level (should only be in the range of 1 to 6).

Scoring

Lines Bonus reward
Lines Reward (Points)
Double 1,667
Triple 3,750
Quad 6,668
Pentad 8,335

Where:

  • Moves is the number of cells the piece moved (including manual moves, manual soft drops, and gravity).
  • Active frames is the number of frames since the block spawned until the piece locked down.
  • Lines is the number of lines you just cleared.
  • Lines Bonus is the extra bonus for clearing two or more lines. Look at the table on the right to calculate

Speed timings

Dynamic value
Level Step Gravity
(G)
ARE
(frame)
Lock
(frame)
DAS
(frame)
Level Step Gravity
(G)
ARE
(frame)
Lock
(frame)
DAS
(frame)
0 1 0.013 20 30 12 5 1 0.842 20 30 12
2 0.015 20 30 12 2 1.029 20 30 12
3 0.016 20 30 12 3 1.323 20 30 12
4 0.018 20 30 12 4 1.852 20 30 11
5 0.021 20 30 12 5 3.086 20 30 10
6 0.025 20 30 12 6 9.259 20 30 9
1 1 0.027 20 30 12 6 1 20 20 30 8
2 0.030 20 30 12 2 20 20 30 8
3 0.033 20 30 12 3 20 19 28 8
4 0.038 20 30 12 4 20 18 27 8
5 0.043 20 30 12 5 20 17 26 8
6 0.051 20 30 12 6 20 17 25 8
2 1 0.056 20 30 12 7 1 20 16 24 8
2 0.062 20 30 12 2 20 16 23 8
3 0.070 20 30 12 3 20 15 23 8
4 0.079 20 30 12 4 20 15 22 8
5 0.092 20 30 12 5 20 14 21 8
6 0.109 20 30 12 6 20 14 21 8
3 1 0.120 20 30 12 8 1 20 14 20 8
2 0.134 20 30 12 2 20 13 20 8
3 0.152 20 30 12 3 20 13 20 8
4 0.175 20 30 12 4 20 13 19 8
5 0.206 20 30 12 5 20 13 19 8
6 0.250 20 30 12 6 20 13 19 8
4 1 0.281 20 30 12 9 20 12 18 8
2 0.319 20 30 12
3 0.370 20 30 12
4 0.441 20 30 12
5 0.545 20 30 12
6 0.712 20 30 12
Fixed value
Mode Normal 20G training
ARR (frames) 1
Drop (G) 1
DAS cut (frames) 0
DAS (frames) - 8
Lock (frames) - 99999999999
Gravity (G) - 20
ARE (frames) - 2

Rotation system

Tromi rotation uses standard Sega orientations and colors, with an additional kick system in the case of a failed basic rotation. Exactly one kick will be attempted, and this kick is selected in the following manner:

If basic rotation fails, determine which rows and columns are blocked when the piece is rotated. Relevant rows and columns are as follows, numbered top-to-bottom and left-to-right:

A B C D E F G
XXXX
....
....
....
....
....
....
XXXX
....
X...
....
....
....
....
X...
....
....
..XX
....
....
....
....
..XX
....
.X..
.X..
.X..
.X..
   A. Row 1 (any of top row)
   B. Row 4 (any of bottom row, only applicable to vertical I)
   C. Row 2 + Column 1 (upper left)
   D. Row 3 + Column 1 (lower left)
   E. Row 2 + Column 3 or 4 (upper right)
   F. Row 3 + Column 3 or 4 (lower right)
   G. Column 2 (any of center column)

The kick selected is determined in the following order of priority:

   1. If case A, C+E, C+F, or E+D, one space down
   2. If case D+F, one space up
   3. If case C and/or D, one space right
   4. If case E and/or F, one space left
   5. If case G and the rotated piece has a mino in the left column, one space right
   6. If case G and the rotated piece has a mino in the right column, one space left
   7. If case B, one space up (this is only possible with the vertical I)

Case A mitigates the playfield having no invisible rows above it, in that if a piece is rotated from spawn position at the very top of the playfield, it will always try to kick down instead of anything else.

Floorkicks will not allow for infinite lock delay resets as lock delay is only reset when a piece steps down lower than it has ever been. A side-effect is that after a floorkick the total lock delay will be shared for the cell the piece is on and the cell directly below it; one must drop the piece at least 2 cells down after a floorkick for the lock delay to reset.

Notes

  1. Tromi, in behind the scene, actually recognise all 10 levels as 60 (internal) levels, but the speed table only contains 55 (internal) levels
  2. Only available in version 2.2 and later, versions earlier than that still drop your Promotion Meter

External links