         {
             moveBall = true;
             gameState.battleField.ballSpeed.y = -gameState.battleField.ballSpeed.y;
+            gameState.battleField.xratio = 2;
+            if (gameState.battleField.ball.x < gameState.battleField.platform.p1.x + 3)
+            {
+                gameState.battleField.ballSpeed.x = -1;
+            }
+            else if (gameState.battleField.ball.x > gameState.battleField.platform.p2.x - 3)
+            {
+                gameState.battleField.ballSpeed.x = +1;
+            }
+            else
+            {
+                gameState.battleField.xratio = 1;
+            }
         }
         if (checkBlockHit())
         {

        NanoRect  platform;
        NanoPoint ball;
        NanoPoint ballSpeed;
        uint8_t   blocks[BLOCK_NUM_ROWS][MAX_BLOCKS_PER_ROW];
        uint8_t   blocksLeft;
        uint8_t   frames;

        engine.refreshRect( gameArea.p2.x + 1, 0, 95, 63 );
    }
    engine.refreshPoint( gameState.battleField.ball );
    gameState.battleField.ratioCounter -= gameState.battleField.xratio;
    bool moveBall;
    do
    {
        NanoPoint speed = gameState.battleField.ballSpeed;
        if (gameState.battleField.ratioCounter > 0) speed.x = 0;
        moveBall = false;
        gameState.battleField.ball.add( speed );
        if (!gameArea.hasX(gameState.battleField.ball.x))
