maybe you want to take a look at getLoadedProductCollection() from app/code/core/Mage/Catalog/Block/Product/List.php. This gives you always all products by current scope. Maybe it also gives you an idea on how to write your own if you can’t use it right away