In the mirror effect how did you want to control the blocks? For example, when the block is moving down you want the block moving up. However, when the player moves the block left do you want the mirrored block to move right? Sort of whatever the player does to the falling block you want the block moving up to do the reverse? Or when the player is moving the block horizontally do you want the block traveling up the screen to travel in the same direction?
Either way I don't think it would be all that hard. For example when a block it falling down the screen you set its initial position to say 0 and increment Y as it falls down the screen. For a block falling up the screen you would set its initial position to the screen height minus the height of the block and decrement Y to make it move up the screen. This is assuming that the when the block appears on the screen it is completely visible and doesn't start off the screen. If the block starts off the screen the initial position of a block falling down the screen would be 0 minus the height of the block and a block falling up the screen would start at the screen height plus the height of the block. To control how far down a block falls you would change the way you detect when a block hits the bottom of the screen. Instead of checking for the bottom of the screen you would be checking for half the height of the screen.
Horizontal movement wouldn't be that hard. If you want the block to move in the same direction as the block falling down the screen you would increment and decrement X in the same way. If you want the first scenario that I suggested all you would have to do is reverse it. When you increment X for the block falling down the screen you would decrement X for the block moving up the screen and do the reverse for decrementing X.
Hope that helps.