If you're looking to retrieve $node objects and aren't afraid of formatting the info yourself, node_load_multiple() probably comes closest to solving your problem. The $conditions parameter is supposed to be deprecated, but you could use it to specify content type. If you want to use node_load_multiple() in the manner recommended by the API page, I believe you would just use a simple db_query() to retrieve the node ids (nids) of all content with a given type:
$nids = db_query('SELECT nid FROM {node} WHERE type = my_content_type');
Then you could iterate through the results to create an array of nids to pass to node_load_multiple().
$nid_array = array();
foreach($nids as $nid){
$nid_array[] = $nid;
}
node_load_multiple($nid_array);
From there you're going to have to iterate through the $node objects returned to create your archive page. Depending on whether you're using path aliases, you might have to retrieve the alias for each node.
drupal_lookup_path('alias',"node/".$node->nid);
All that said, I would do this in Views in a heartbeat.