I haven't worked with sc2 normal maps at all, but from what I can see, they have the green and alpha channels with stuff in them.. Assuming they corrospond to the x and y of the normal map, and that the normals should be unit vectors, you could copy the alpha back into the red layer, invert the green (if it was inverted when creating the sc2 normal map), and then calculate the blue based on the red and green.
Having the rgb colors in the range [0, 1]
r = a
r = r * 2 - 1
g = g * 2 - 1
b = sqrt(1 - r*r+g*g)
r = r/2 + 0.5
g = g/2 + 0.5
b = b/2 + 0.5
If r*r+g*g ever becomes > 1, then there is really no way it could be a unit vector.. you could assume that the b should be 0, and then normalize the vector, or you could assume that the b should be 1 always (although that would make it impossible to make normals lie down, so I don't think that is the case).
I don't think it can be done in photoshop, but it is possible to make a program to convert it back.. if those assumptions hold.
Edit:
Just to prove it, I made this quick program.
It can't read the dds format from sc2 though, so use photoshop to convert the pixel format to 8.8.8.8 ARGB
I assume you found out how to get it to work then :)
It uses .Net 4.0 client profile, and XNA 3.1.0 - make sure you got that installed.
It only works for dds files with the pixel format 8.8.8.8 ARGB 32 bit unsigned. I use Photoshop to convert it.
Might add an installer later.. I just made it quick and dirty before going to bed..
Off to bed now as well - not sure I'll get to work on it tomorrow.
In case you know a bit of programming yourself, and you can't get it to work, the important code is this.
I haven't worked with sc2 normal maps at all, but from what I can see, they have the green and alpha channels with stuff in them.. Assuming they corrospond to the x and y of the normal map, and that the normals should be unit vectors, you could copy the alpha back into the red layer, invert the green (if it was inverted when creating the sc2 normal map), and then calculate the blue based on the red and green.
Having the rgb colors in the range [0, 1]
r = a
r = r * 2 - 1
g = g * 2 - 1
b = sqrt(1 - r*r+g*g)
r = r/2 + 0.5
g = g/2 + 0.5
b = b/2 + 0.5
If r*r+g*g ever becomes > 1, then there is really no way it could be a unit vector.. you could assume that the b should be 0, and then normalize the vector, or you could assume that the b should be 1 always (although that would make it impossible to make normals lie down, so I don't think that is the case).
I don't think it can be done in photoshop, but it is possible to make a program to convert it back.. if those assumptions hold.
Edit:
Just to prove it, I made this quick program.
It can't read the dds format from sc2 though, so use photoshop to convert the pixel format to 8.8.8.8 ARGB