Hm I haven't worked with opaque particles in quite some time so I don't know if they are still supported. I think the way to go was to use 24bit textures (meaning no alpha channel), then set the OVERLAY flag and black parts became invisible.
Particle sorting always is a little problematic, esp. when it comes to let's say stuff like black smoke and flames mixed together.
What I do to make framerate indepent particles is something like the following:
my.skill20 += time_step;
while(my.skill20 > 0.5) // 32 particles per second
{
effect(...,1,...);
my.skill20 -= 0.5;
}
On fast moving objects and low framerates I interpolate between the new and old position, should there be a case where more than 1 particle needs to be created in that while loop.