User:Nightmareci: Difference between revisions

From TetrisWiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(41 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Definitions ==
Hey. I edit stuff on this wiki and program things. I'm sysop, so if there's administrative tasks that need doing, like page deletion or moving, just ask me. I have [[User:NightmareciBot | a bot]], so if you find something that would be done best by a bot, I can probably hook something up to make it happen.
In this page, the very top row is row number 0, the row below the top row is row number 1, and so on, until 20 (TGM1 has 20 visible rows + 1 vanish zone row).
== Tetris The Grand Master ==
Some of the following information may not be consistent with other wiki pages; where this applies, simply ignore the information elsewhere in the wiki. Information here is still work in progress.
=== Speed Timings ===
==== Gravity ====
Directly from [[Tetris The Grand Master]], here is the gravity curve:
{| border="2" cellpadding="2" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:3px #999999 solid; border-collapse:collapse;"
|+'''Internal Gravity'''[http://www.tetrisconcept.com/forum/viewtopic.php?p=11130#11130]
!bgcolor="#80A3F8"|Level||bgcolor="#BBBBBB"|Interal Gravity<br>(1/256 G)||bgcolor="#80A3F8"|Level||bgcolor="#BBBBBB"|Internal Gravity<br>(1/256 G)
|-align = center
|bgcolor="#C4E8E8"|0||4||bgcolor="#C4E8E8"|220|||32
|-align = center
|bgcolor="#C4E8E8"|30||6||bgcolor="#C4E8E8"|230||64
|-align = center
|bgcolor="#C4E8E8"|35||8||bgcolor="#C4E8E8"|233||96
|-align = center
|bgcolor="#C4E8E8"|40||10||bgcolor="#C4E8E8"|236||128
|-align = center
|bgcolor="#C4E8E8"|50||12||bgcolor="#C4E8E8"|239||160
|-align = center
|bgcolor="#C4E8E8"|60||16||bgcolor="#C4E8E8"|243||192
|-align = center
|bgcolor="#C4E8E8"|70||32||bgcolor="#C4E8E8"|247||224
|-align = center
|bgcolor="#C4E8E8"|80||48||bgcolor="#C4E8E8"|251||256 (1G)
|-align = center
|bgcolor="#C4E8E8"|90||64||bgcolor="#C4E8E8"|300||512 (2G)
|-align = center
|bgcolor="#C4E8E8"|100||80||bgcolor="#C4E8E8"|330||768 (3G)
|-align = center
|bgcolor="#C4E8E8"|120||96||bgcolor="#C4E8E8"|360||1024 (4G)
|-align = center
|bgcolor="#C4E8E8"|140||112||bgcolor="#C4E8E8"|400||1280 (5G)
|-align = center
|bgcolor="#C4E8E8"|160||128||bgcolor="#C4E8E8"|420||1024 (4G)
|-align = center
|bgcolor="#C4E8E8"|170||144||bgcolor="#C4E8E8"|450||768 (3G)
|-align = center
|bgcolor="#C4E8E8"|200||4||bgcolor="#C4E8E8"|500||5120 (20G)
|}
In the following, Gcount is the current Gravity Count; Gspeed is the Gravity Speed, and is equal to one of the Internal Gravity entries in the above table. All values can be represented with unsigned integers, as no negative values ever appear. All division has the fractional part truncated, as in ISO C (60/256 = 0, 252/256 = 0, 260/256 = 1).


On the first frame of piece display, a soft drop input is simply ignored, so, for example, some variable representing whether soft drop "is pressed" or "not pressed" would be set to "not pressed" on the first frame. The second frame and later can have a soft drop input set, for example, as "is pressed"; this processing of input occurs outside this description.
== Various Contributions ==
# Preparation for the pieces' first displayed frame (such as during ARE):
* Using [[User:NightmareciBot | my bot]] and [http://botwiki.sno.cc/wiki/Main_Page pywikipedia], I converted pages using [[Template:Pfstart | playfield templates]] to the new [[Help:Playfield | playfield parser extension]]; this is easier on the server and wiki editors.
#* Gcount = 0
 
#* Gspeed is set to the appropriate value for the current level
== My Own Pages ==
#* Attempt to place the piece in row number 1 + Gspeed / 256, higher if necessary
[[User:Nightmareci/Detailed description of Tetris The Grand Master | Detailed description of Tetris The Grand Master]]
# Every frame this piece is displayed:
 
#* If soft drop is pressed:
[[User:Nightmareci/SRS | SRS]]
#** If Gspeed < 256:
 
#*** Attempt to drop one line
[[User:Nightmareci/Vaguely Tetris-like Games | Vaguely Tetris-like Games]]
#** If the piece has blocks beneath it now:
 
#*** Lock the piece
== Other Stuff ==
#** Go to 3.
 
#* If there are blocks below this piece:
Nothing right now.
#** Set Gcount to Gspeed
 
#* If Gcount is greater than or equal to 256:
<playfield>
#** Attempt to drop Gcount / 256 lines
ZZZ.
#** Set Gcount to the remainder of Gcount / 256 (in C, this would be "Gcount %= 256")
Z..Z
#* Increase Gcount by Gspeed
ZZZ.
#* Go to 3.
Z..Z
# Further processing after gravity (processing will come back to 2. if the piece hasn't locked)
</playfield>
In ANSI C, one can use bitwise operators instead of the division and modulo (%) operators, because 256 is a power of 2; a simple example follows:
<pre>
placeInRow = 1 + Gspeed >> 8; // equivalent to 'placeInRow = 1 + Gspeed / 256;'
linesToDrop = Gcount >> 8; // equivalent to 'linesToDrop = Gcount / 256;'
Gcount &= 255; // equivalent to 'Gcount %= 256;'
</pre>
On more limited systems where division and modulo would be noticeably slow, using bitwise operators this way can significantly improve performance. Because only positive integers appear in these expressions, ANSI C guarantees these expressions are equivalent, on implementations following ANSI C. On very limited systems (such as the NES), these would be easy to translate to assembly.

Latest revision as of 07:26, 15 October 2009

Hey. I edit stuff on this wiki and program things. I'm sysop, so if there's administrative tasks that need doing, like page deletion or moving, just ask me. I have a bot, so if you find something that would be done best by a bot, I can probably hook something up to make it happen.

Various Contributions

My Own Pages

Detailed description of Tetris The Grand Master

SRS

Vaguely Tetris-like Games

Other Stuff

Nothing right now.

ZZZ.
Z..Z
ZZZ.
Z..Z