diff --git a/GPU/GLES/DisplayListInterpreter.cpp b/GPU/GLES/DisplayListInterpreter.cpp index dc81d6b488..e56f3a4025 100644 --- a/GPU/GLES/DisplayListInterpreter.cpp +++ b/GPU/GLES/DisplayListInterpreter.cpp @@ -739,9 +739,9 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) case GE_CMD_LDC0:case GE_CMD_LDC1:case GE_CMD_LDC2:case GE_CMD_LDC3: case GE_CMD_LSC0:case GE_CMD_LSC1:case GE_CMD_LSC2:case GE_CMD_LSC3: { - float r = (float)(data>>16)/255.0f; + float r = (float)(data & 0xff)/255.0f; float g = (float)((data>>8) & 0xff)/255.0f; - float b = (float)(data & 0xff)/255.0f; + float b = (float)(data>>16)/255.0f; int l = (cmd - GE_CMD_LAC0) / 3; int t = (cmd - GE_CMD_LAC0) % 3; diff --git a/GPU/GLES/TransformPipeline.cpp b/GPU/GLES/TransformPipeline.cpp index b856fea184..a812b97e83 100644 --- a/GPU/GLES/TransformPipeline.cpp +++ b/GPU/GLES/TransformPipeline.cpp @@ -295,11 +295,14 @@ void TransformAndDrawPrim(void *verts, void *inds, int prim, int vertexCount, Li psum += tpos*decoded[index].weights[i]; nsum += tnorm*decoded[index].weights[i]; } + nsum.Normalize(); - psum.Write(out); - nsum.Write(norm); + + Vec3ByMatrix43(out, psum.v, gstate.worldMatrix); + Norm3ByMatrix43(norm, nsum.v, gstate.worldMatrix); } + // Perform lighting here if enabled. don't need to check through, it's checked above. float dots[4] = {0,0,0,0}; if (program->a_color0 != -1)