     {
         NanoRect  platform;  // platform position on the screen
         NanoPoint ball;      // ball position on the screen
-        int16_t   ballX;     // ball position in ^PIX_BITS coordinates
-        int16_t   ballY;     // ball position in ^PIX_BITS coordinates
+        NanoPoint ballScaled;// ball position in ^PIX_BITS coordinates
         NanoPoint ballSpeed; // ball speed in *2 coordinates
         uint8_t   blocks[BLOCK_NUM_ROWS][MAX_BLOCKS_PER_ROW];
         uint8_t   blocksLeft;

    gameState.battleField.blocks[row][column] = 0;
    gameState.battleField.blocksLeft--;
    g_score++;
    engine.refresh( gameArea.p2.x + 1, 0, 95, 63 );
    if (((p.y & 3) == 2) || (p.y & 3) == 1)
    {
        gameState.battleField.ballSpeed.x = -gameState.battleField.ballSpeed.x;


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