Quote: "For example I want to be able to blend the particle colour over time, using defined settings, but with only 1 texture file and a colour value."
That ought to be simple but I can't think of a way using DBPro commands off-hand.

Any particular reason for doing it that way? You could just modify my earlier demo of course.
I usually do all this sort of thing with a shader as
basjak suggests. Much simpler than trying to grapple with the blend modes.
Edit
Quote: "That ought to be simple but I can't think of a way using DBPro commands off-hand."
I think there is a way. Watch this space (although I don't think "simple" is the right word).
That's blown another quiet Sunday's game playing.
Edit2
Here's my best offering for now. It uses two images, one for the actual image (a red circle on a green backgrond in the demo), another for the chosen colour value (blue in the demo). The amount of blending is controlled by the lighting and blending commands.
sync on : sync rate 60 : sync
D3DTOP_SELECTARG1 = 2
D3DTOP_SELECTARG2 = 3
D3DTOP_LERP = 26
D3DTA_CURRENT = 1
D3DTA_TEXTURE = 2
D3DTA_TEMP = 5
make object plain 1, 100, 100
create bitmap 1, 32, 32
cls rgb(0, 255, 0)
ink rgb(255, 0, 0), rgb(0, 255, 0)
circle 15, 15, 7
get image 1, 0, 0, 32, 32
cls rgb(0, 0, 255)
get image 2, 0, 0, 32, 32
set current bitmap 0
`set object filter 1, 0, 0 ` I can't get this working with the blend mapping commands :(
set object diffuse 1, rgb(0, 0, 0) ` turn off the diffuse lighting for this object
set object ambience 1, rgb(0, 0, 0) ` turn off the ambient lighting for this object
set object specular 1, rgb(0, 0, 0) ` turn off the specular lighting for this object
repeat
inc angle#
level = sin(angle#)*127+128
set object emissive 1, rgb(level, level, level) ` this will be the final "diffuse" colour of the object
set blend mapping on 1, 0, im, 3, D3DTOP_SELECTARG2, -1, -1, -1, D3DTA_TEMP ` copy final diffuse lighting colour into TEMP
set blend mapping on 1, 1, 1, 3, D3DTOP_SELECTARG1 ` copies image 1 into CURRENT
set blend mapping on 1, 2, 2, 3, D3DTOP_LERP, D3DTA_TEXTURE, D3DTA_CURRENT, D3DTA_TEMP, D3DTA_CURRENT ` lerp between image 1 and 2 using TEMP and put the result into CURRENT
sync
until spacekey()
end
By some strange coincidence it's a variation of my earlier demo...