anchor.diff:    // this is a rect to rect copy
     final windowWidth = rect.right - rect.left;
     final windowHeight = rect.bottom - rect.top;
  +
     StretchDIBits(
  -      hdc,
  -      //X, Y, Width, Height, X, Y, Width, Height,
  -      0,
  -      0,
  -      bitmapWidth,
  -      bitmapHeight,
  -      0,
  -      windowHeight + 1,
  -      windowWidth,
  -      -windowHeight,
  -      bitmapMemory,
  -      bitmapInfo.addressOf,
  -      DIB_RGB_COLORS,
  -      SRCCOPY);
  -}
  -
  -void update() {
  -  // Update game simulation
  -  // set everything in our 10x10 grid and have that write to memory
  -
  -  //move snake
  +      hdc, // destination device context
  +      0, // x-coordinate of dest rectangle origin
  +      0, // y-coordinate of dest rectangle origin
  +      bitmapWidth, // destination width in logical units
  +      bitmapHeight, // destination height in logical units
  +      0, // x-coordinate of source rectangle origin
  +      windowHeight + 1, // y-coordinate of source rectangle origin
  +      windowWidth, // source width in pixels
  +      -windowHeight, // source height in pixels
  +      bitmapMemory, // pointer to the image bits
  +      bitmapInfo.addressOf, // pointer to DIB
  +      DIB_RGB_COLORS, // color table is literal RGB values
  +      SRCCOPY // copy directly to dest rectangle
  +      );
  +}
  +
  +/// Updates game simulation (one tick of the game loop)
  +void gameTick() {
  +  // set everything in our 10x10 grid
  +
  +  // move snake
     moveSnake();
   
     // is the snake head colliding with apple?
  
positive.code:     }
    }
  
    setVectorToMemory();
  }
  
  
negative.code:   resetGame();
  }
  
  void gameOverUpdate() {
    if (wipeDown) {
      for (var x = 0; x <= data[gameOverRow].length; x++) {
        data[gameOverRow][x] = 4;
      }
      setVectorToMemory();
      gameOverRow++;
      if (gameOverRow >= blocksPerHeight - 1) {
        gameOverRow = blocksPerHeight - 1;
        wipeDown = false;
      }
    } else {
      for (var x = data[gameOverRow].length; x > -1; x--) {
        data[gameOverRow][x] = 0;
      }
      setVectorToMemory();
      gameOverRow--;
      if (gameOverRow < 0) {
        gameover_update_complete();
        wipeDown = true;
      }
    }
  }
  