found this link explaining how to make a normal map, but it is in Russian, though the code is in AGAL:
link
there I found this code:
// vertex
...
// transform lightVec
sub vt1, vc4, va0 // vt1 = lightPos - vertex (lightVec)
dp3 vt3.x, vt1, va4
dp3 vt3.y, vt1, va3
dp3 vt3.z, vt1, va2
mov v2, vt3.xyzx // v2 = lightVec
// transform viewVec
sub vt2, va0, vc5 // vt2 = vertex - viewPos (viewVec)
dp3 vt4.x, vt2, va4
dp3 vt4.y, vt2, va3
dp3 vt4.z, vt2, va2
mov v3, vt4.xyzx // v3 = viewVec
// fragment
tex ft1, v0, fs1 <2d,repeat,linear,miplinear> // ft1 = normalMap(v0)
// 0..1 to -1..1
add ft1, ft1, ft1 // ft1 *= 2
sub ft1, ft1, fc0.z // ft1 -= 1
nrm ft1.xyz, ft1 // normal ft1 = normalize(normal)
...
the rendering looks fine with normal map:
but he is not using any m33 operation, maybe it is the way he is taking in the texture??:
tex ft1, v0, fs1 <2d,repeat,linear,miplinear>