     do
     {
         gameState.battleField.ballScaled += gameState.battleField.ballSpeed;
+        gameState.battleField.ball = gameState.battleField.ballScaled >> PIX_BITS;
         moveBall = false;
-        gameState.battleField.ball = gameState.battleField.ballScaled >> PIX_BITS;
         if (checkGameAreaHit())
         {
             moveBall = true;

bool checkGameAreaHit(void)
{
    bool hit = false;
    if (!gameArea.collisionX(gameState.battleField.ball.x))
    {
        hit = true;
        gameState.battleField.ballSpeed.x = -gameState.battleField.ballSpeed.x;
    }
    if (!gameArea.collisionY(gameState.battleField.ball.y))
    {
        hit = true;
        gameState.battleField.ballSpeed.y = -gameState.battleField.ballSpeed.y;
        if (gameState.battleField.ball.y > gameArea.p2.y)
        {
             startBattleField( false );
        }

        engine.canvas.setMode(CANVAS_MODE_BASIC);
        engine.canvas.setColor(RGB_COLOR8(0,0,64));
        NanoRect tileBlocks = engine.canvas.rect() >> 3;
        tileBlocks.crop(gameArea >> 3);
        for (uint8_t row = tileBlocks.p1.y; row <= tileBlocks.p2.y; row++)
            for (uint8_t col = tileBlocks.p1.x; col <= tileBlocks.p2.x; col++)
                engine.canvas.drawBitmap1(col << 3, row << 3, 8, 8, bgTile);
        engine.canvas.setColor(RGB_COLOR8(255,255,255));
        engine.canvas.drawHLine(gameArea.p1.x,gameArea.p1.y,gameArea.p2.x);
