code: def call_rpc(self, address, rpc_id, payload=b""):
          
  
          if rpc_id < 0 or rpc_id > 0xFFFF:
              raise RPCInvalidIDError("Invalid RPC ID: {}".format(rpc_id))
  
          if address not in self._rpc_overlays and address not in self._tiles:
              raise TileNotFoundError("Unknown tile address, no registered handler", address=address)
  
          overlay = self._rpc_overlays.get(address, None)
          tile = self._tiles.get(address, None)
          if overlay is not None and overlay.has_rpc(rpc_id):
              return overlay.call_rpc(rpc_id, payload)
          elif tile is not None and tile.has_rpc(rpc_id):
              return tile.call_rpc(rpc_id, payload)
  
          raise RPCNotFoundError("Could not find RPC 0x%X at address %d" % (rpc_id, address))
docs: Call an RPC by its address and ID.
  
          Args:
              address (int): The address of the mock tile this RPC is for
              rpc_id (int): The number of the RPC
              payload (bytes): A byte string of payload parameters up to 20 bytes
  
          Returns:
              bytes: The response payload from the RPC