code: def _draw_tiles(self, x_offset, y_offset, bg):
          
          count = 0
          for layer_name, c_filters, t_filters in self._get_features():
              colour = (self._256_PALETTE[layer_name]
                        if self._screen.colours >= 256 else self._16_PALETTE[layer_name])
              for x, y, z, tile, satellite in sorted(self._tiles.values(), key=lambda k: k[0]):
                  # Don't draw the wrong type or zoom of tile.
                  if satellite != self._satellite or z != self._zoom:
                      continue
  
                  # Convert tile location into pixels and draw the tile.
                  x *= self._size
                  y *= self._size
                  if satellite:
                      count += self._draw_satellite_tile(
                          tile,
                          int((x-x_offset + self._screen.width // 4) * 2),
                          int(y-y_offset + self._screen.height // 2))
                  else:
                      count += self._draw_tile_layer(tile, layer_name, c_filters, colour, t_filters,
                                                     x - x_offset, y - y_offset, bg)
          return count
docs: Render all visible tiles a layer at a time.