It’s unfortunate that there is no unsigned dot product, so you would indeed need three stages:
First you would need a lerp to remap t1 to [0.5, 1], perform a dot3 with <1, 0.5, 0.5>, then modulate with t0.
However you might run into precision issues with this since you lose a bit in the remap step, and 0.5 might not have an accurate representation in the numerical format used in the fragment pipeline. And the biggest issue of course, you can’t expect ES 1.x implementations to have three texenv stages.
I am of course assuming that t1 is a rendertarget texture, otherwise the problem should be easily solvable at the texture upload stage.