diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 6a43a2be51..f0a4cd6ef1 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -200,12 +200,15 @@ namespace rsx { force_inline static void impl(thread* rsxthr, u32 arg) { - u32& load = method_registers[NV4097_SET_TRANSFORM_CONSTANT_LOAD]; + u32 load = method_registers[NV4097_SET_TRANSFORM_CONSTANT_LOAD]; static const size_t count = 4; static const size_t size = count * sizeof(f32); - memcpy(rsxthr->transform_constants[load++].rgba, method_registers + NV4097_SET_TRANSFORM_CONSTANT + index * count, size); + size_t reg = index / 4; + size_t subreg = index % 4; + + memcpy(rsxthr->transform_constants[load + reg].rgba + subreg, method_registers + NV4097_SET_TRANSFORM_CONSTANT + reg * count + subreg, sizeof(f32)); } }; @@ -729,7 +732,7 @@ namespace rsx bind_range(); bind_range(); bind_range(); - bind_range(); + bind_range(); bind_range(); bind_cpu_only(); bind_cpu_only();