diff --git a/include/PICA/shader.hpp b/include/PICA/shader.hpp index 9e133a3b..9fcf0a4b 100644 --- a/include/PICA/shader.hpp +++ b/include/PICA/shader.hpp @@ -129,10 +129,10 @@ public: floatUniformWordCount = 0; if (f32UniformTransfer) { - uniform.x() = f24::fromFloat32(*(float*)floatUniformBuffer[3]); - uniform.y() = f24::fromFloat32(*(float*)floatUniformBuffer[2]); - uniform.z() = f24::fromFloat32(*(float*)floatUniformBuffer[1]); - uniform.w() = f24::fromFloat32(*(float*)floatUniformBuffer[0]); + uniform.x() = f24::fromFloat32(*(float*)&floatUniformBuffer[3]); + uniform.y() = f24::fromFloat32(*(float*)&floatUniformBuffer[2]); + uniform.z() = f24::fromFloat32(*(float*)&floatUniformBuffer[1]); + uniform.w() = f24::fromFloat32(*(float*)&floatUniformBuffer[0]); } else { uniform.x() = f24::fromRaw(floatUniformBuffer[2] & 0xffffff); uniform.y() = f24::fromRaw(((floatUniformBuffer[1] & 0xffff) << 8) | (floatUniformBuffer[2] >> 24)); diff --git a/src/core/PICA/regs.cpp b/src/core/PICA/regs.cpp index 96c78bbc..7efa2e88 100644 --- a/src/core/PICA/regs.cpp +++ b/src/core/PICA/regs.cpp @@ -85,8 +85,6 @@ void GPU::writeInternalReg(u32 index, u32 value, u32 mask) { attr.z() = f24::fromRaw(((fixedAttrBuff[0] & 0xff) << 16) | (fixedAttrBuff[1] >> 16)); attr.w() = f24::fromRaw(fixedAttrBuff[0] >> 8); - printf("r: %f g: %f b: %f a: %f\n", (double)attr.r().toFloat32(), (double)attr.g().toFloat32(), (double)attr.b().toFloat32(), (double)attr.a().toFloat32()); - fixedAttribIndex++; } diff --git a/src/core/PICA/shader_interpreter.cpp b/src/core/PICA/shader_interpreter.cpp index fdd5d214..f53eb6d2 100644 --- a/src/core/PICA/shader_interpreter.cpp +++ b/src/core/PICA/shader_interpreter.cpp @@ -17,6 +17,9 @@ void PICAShader::run() { PICAShader::vec4f PICAShader::getSource(u32 source) { if (source < 16) return attributes[source]; + else if (source >= 0x20 && source <= 0x7f) + return floatUniforms[source - 0x20]; + Helpers::panic("[PICA] Unimplemented source value: %X", source); }