private static void readTileMap(DataBuffer buffer, int x, int y)
	{
		/*for (int pL = 0; pL < 4; pL++)
		{
			for (int pX = 0; pX < 64; pX++)
			{
				for (int pY = 0; pY < 64; pY++)
				{
					collisionMaps[pL].adjacency[pX][pY] &= ~0x1000000;
				}
			}
		}*/
		
		for (int pL = 0; pL < 4; pL++)
		{
			for (int pX = 0; pX < REGION_SIZE; pX++)
			{
				for (int pY = 0; pY < REGION_SIZE; pY++)
				{
					readTile(buffer, pX + x, pY + y, pL, 0);
				}
			}
		}
		
		for (int pL = 0; pL < 4; pL++)
		{
			for (int pX = 0; pX < REGION_SIZE; pX++)
			{
				for (int pY = 0; pY < REGION_SIZE; pY++)
				{
					GameTile tile = tile(new Position(pX + x, pY + y, pL));
					GameTile above = tile(new Position(pX + x, pY + y, 1));
					
					if (tile.flags().has(TileFlags.UNWALKABLE))
					{
						int renderPlane = tile.z();
						
						if (above.flags().has(TileFlags.BRIDGE))
						{
							renderPlane--;
							//System.out.println("has bridge: " + tile.x() + ", " + tile.y());
						}
						
						if (renderPlane >= 0)
						{
							//System.out.println("unwalkable: " + tile.x() + ", " + tile.y());
							tile(new Position(tile.x(), tile.y(), renderPlane)).clip().add(Collision.BLOCKED);
						}
					}
				}
			}
		}
	}