I'm working on my new Tetris project, which will ultimately implement the piece control mechanics, compatible with the NES version. Most things are fine to implement, but some are difficult to translate and implement in a modern language. Mainly because I'm not an expert in neither Assembly nor game development for this console. I don't understand two things related to the main mechanics — one is for the fall of the pieces and the other is for the generator. For now, let's focus on the first. Thank you for any help. While writing my code, I mainly use the article Applying Artificial Intelligence to Nintendo Tetris. In the Dropping Tetriminos section, the code responsible for the falling of pieces is described. The first thing is one of the conditions that test the pressed buttons. I marked this fragment below in the picture: What exactly does this condition mean? Which buttons exactly must be pressed and which must be released for this condition to be met? Should there be a distinction between pressed and just pressed? The second problem is that FallTimer is zeroed in this example, but not incremented anywhere. The only reference to incrementing is in the short paragraph below this snippet: Unfortunately, I am not able to determine myself where to do it. In many places I can insert an incrementation and the gravity will work properly, but the soft-drop will be permanent — if I press the down arrow and keep it pressed, the soft-drop will not expire until the arrow is released (it will not expire after locking the piece, so the next spawned piece will be soft-dropped immediately). Does anyone know where this counter is to be incremented and what conditions must be met to perform the incrementation?