From Hard Drop Tetris Wiki
Intra-frame processing order
In Puyo Puyo Tetris, inputs are handled in the order of:
- Movement (Tested for validity, but not set)
- Gravity (includes soft drop)
- Hard drop
- Movement/Auto-Shift (set)
Due to an oversight in the code, it isn't possible to move and Hard drop on the same frame, as when the game processes a movement input, it doesn't actually set the new X position of the piece right away, instead storing it elsewhere to be used later on in the frame. This order of actions is interrupted by the harddrop input being processed, which uses the old X position since it hasn't been updated to the piece data yet.
This quirk is the reason it is possible to merge pieces together. When you preform the piece merging glitch, the game:
- Checks if movement to the side is valid
- If yes, store new X position in memory, but not in piece data
- Check if 15 movements/rotations have been exhausted
- If yes, check if movement one tile down is valid using old X position data
- If movement down is valid using the old X position data, set Y position, in piece data
- Updates the piece data X position to what the game determined was valid earlier, but since the Y position was decremented, the piece merges
Essentially, the reason this happens is that movement on each axis alone is valid, but together being inside of another block, with the game not being built to account for moving on both the X and Y axis on the same frame being possible.
Using Cheat Engine, it is possible to modify what inputs the game processes on a given frame, and to see what happens if more than one action is taken in a single frame with no room for human error:
- Left + right simultaneously - no shift
- Left + harddrop - piece hard drops, no shift
- Rotate + harddrop - piece rotates then hard drops
- Left Rotate + Right Rotate - no rotate
- Rotate + move - piece rotates then moves
- Hold left while right DAS charged - piece shifts left, piece stops DASing right.
- Hold right while left DAS charged - piece shifts right, piece stops DASing left.
Entry Delay / ARE
- DAS can be charged during Entry Delay
- Hard drop inputs during Entry Delay are ignored
- Hold inputs during Entry Delay ignored
- Left/Right movement inputs during Entry Delay are mostly ignored (DAS can be charged)
- Rotation inputs during Entry Delay are mostly ignored
Puyo Puyo Tetris has some input leniency for move and rotate for the last 3 frames of its 7 frame entry delay. Pressing one of these keys during this window will cause the spawned piece to do that action on the first frame it is fully actionable (first frame harddrop or hold would go through). It should be noted that during the last frame of entry delay, the piece and ghost are visible.
This input leniency offers no speed advantage in any case, which makes it just shy of being IRS and initial movement.
DAS is charged on two separate counters. It is possible to charge both DAS counters at once.
- DAS first piece to right wall. Drop
- Hold left, do not release right.
- Das second piece to left wall. Drop. (Left and Right DAS are both charged)
- Release left key. Piece will go right with DAS Charged.
Puyo Puyo Tetris offers a variety of presets for control configuration. In most presets, some actions have some form of alternate button or input (e.g., the default preset allows pieces to be moved by either the d-pad or analog stick).
The game engine handles this many-to-one relationship between inputs and actions with what one could consider just one "virtual input" per action. If an input for an action is already held, pressing the alternate input will not trigger that action again. (e.g., simultaneously pressing two movement/rotation buttons will not trigger a double tap shift or 180 rotation). Moreover, if both inputs for an action are held, releasing one of them will not do anything special; the game considers the action to have been continuously held. (reference: Kitaru)
This means that from an input perspective, no new quirks are possible compared to having only physical key per logical input.