| Chain | | | uses | |
| Clearing | | | | |
| Delayed auto shift | | | - Holding Left or Right moves the piece at once, again 16 frames later, and then every 6 frames; the press zeroes
autorepeatX, each held frame adds 1, and at DAS_RESET (16) the piece moves and the count drops to DAS_DELAY (10). Verified - A blocked shift sets
autorepeatX to 16, so a piece held against a wall or the stack keeps DAS charged and moves on the first frame the way is clear. Verified - Spawning a piece leaves
autorepeatX alone, so a charge carries over; with the direction held through the entry delay, the new piece moves on its first frame and every 6 frames after. Verified - While Down is held the piece can't shift;
shift_tetrimino returns before reading Left or Right. Verified - Every new press of Left or Right zeroes the DAS count and moves the piece at once, so pressing on every other frame moves it every 2 frames. Verified
- At level 29 on an empty board, a piece is under control for 19 frames; held from spawn it shifts 2 columns, with DAS charged 4, and tapped it shifts once every 2 frames. Verified
- The PAL build's DAS waits 12 frames and then repeats every 4. Code
- Engadget describes the level 29 kill screen as a wall for players who hold the D-pad, because DAS can't carry pieces to either edge in time. Magazine
- In competitive classic Tetris, holding the D-pad to move pieces is called DAS, for delayed auto shift. Magazine
- Birken names Thor Aackerlund as a player who beat DAS at level 29 by vibrating the D-pad. Web
- Hypertapping is moving pieces with many quick presses of the D-pad instead of holding it; it spread in competition after a hypertapping player won the 2018 Classic Tetris World Championship. Magazine
- Rolling, which the player Cheez worked out in late 2020, keeps light pressure on the D-pad while the fingers roll across the back of the controller, and moves pieces faster than hypertapping. Magazine
| |
| Demo playback | | | - Tetris (NES, US build) starts its demo when the title screen has waited for Start until the frame counter's high byte, cleared as the title appears, reaches 5: between 1,025 and 1,280 frames (computed), about 17 to 21 seconds. The demo stores 0 as the game type, which the disassembly's comment names A-type, and 0 as the start level. Code
- The US build's demo plays a table of 256 pairs, a controller byte and a count; the demo code holds each byte for its count plus one frame, about 4,780 frames in all (computed), some 80 seconds. It writes the held buttons and the newly pressed ones into the same two bytes the controller routine fills, so the pieces move by the ordinary play code. The
@recording branch of the same routine writes such pairs from the live controller when $D0 holds $FF, but the code's only store to $D0 writes 0. Code - The demo's pieces come from a fixed list, not the randomizer: in demo mode
chooseNextTetrimino reads the next byte of the 256-byte demoTetriminoTypeTable, from 0 at each game start, and takes bits 4-6 as an index into the 7-entry spawn table. An index of 7 reads the byte after the table, $02, the T piece's spawn orientation, so 2 of the 8 index values give a T; 45 of the table's 256 bytes carry a 7 (computed). Code - The demo stores 1 as the game mode, which the disassembly's comment names the title screen, when the button table runs out, its read address reaching the piece table's page, or when Start is pressed. The game-over routine has no demo case: a one-player game over, in the demo as in play, stores
$03, which the comment names the level menu. Code
| |
| Drop speed | | | - Gravity comes from
framesPerDropTable; a piece falls one row every 48 frames at level 0, never more slowly at a higher level, holding steady across levels 10–12, 13–15, and 16–18, down to 2 frames at levels 19–28, and 1 frame from level 29 on. Verified - From level 29 (
$1D) on, the game skips the table and drops the piece a row every frame. Verified fallTimer counts frames, and when it reaches the level's value the piece moves down a row; if that row is blocked, the piece locks where it is, so a resting piece locks after one gravity interval. Code- The PAL build's gravity table starts at 36 frames per row at level 0 and reaches 1 frame at level 19. Code
| |
| Entry delay | | | | |
| Lock delay | | | uses | |
| Piece randomizer | | - To pick a piece, the game reads the hardware divider
DIV, reduces it modulo 7, and checks the result against the piece now spawning and the one after it; it reads again when the three type ids OR together to the spawning piece's, and takes the third read regardless. Code - If its three reads were independent and uniform, the routine would deal L 10.86% of the time and O 16.22%, with the others between, and 10.71% of pieces would repeat the one before. Verified
- In 9,000 pieces dealt over 474 games on the original Game Boy, L came 10.84% of the time and O 16.74%, and 11.55% of pieces repeated the one before. Verified
| - The random number generator is a 16-bit linear feedback shift register at
$0017; each step shifts it right and feeds bit 1 XOR bit 9 into the top bit, and from its seed, $8988, it repeats after 32,767 steps. Verified - The NMI handler steps the generator every frame, so the time a player takes to place a piece changes which piece comes next. Code
pickRandomTetrimino adds a pick counter to the generator's high byte and keeps the low 3 bits; a result of 7, or the same piece as last time, makes it step the generator and take the high byte's low 3 bits plus the previous piece's orientation id, modulo 7, with no further check. Code- The reroll adds the previous piece's orientation id, not its index, so one of its eight results is doubled; after an O (
$0A) or an S ($0B) the doubled result is the same piece again. Code - Run over every state of the generator and every pick count, the routine repeats a T, J, Z, L, or I with probability 1/32 and an O or S with 1/16, so 4.0% of the pieces in a long game repeat the one before. Verified
- In a long game the routine deals T and S most often (14.67% and 14.68%) and L and I least (13.89% each); J, Z, and O come 14.29–14.30% of the time. Verified
- Over a long game, 4.03% of pieces repeat the one before, against 14.3% (1 in 7) for a uniform, memoryless pick. Verified
- In 4,800 pieces dealt by the running game, 4.46% repeated the piece before, against 4.03% simulated and 14.3% for a uniform pick; 6.29% of O and S pieces repeated (simulated 6.25%) and 3.76% of the others (3.13%). Verified
| |