From 263294d2635c8b940da548af97cd871ade9fd0f6 Mon Sep 17 00:00:00 2001
From: vlj <vljn.ovi@gmail.com>
Date: Sun, 17 May 2015 23:40:19 +0200
Subject: [PATCH] d3d12: Some fixes to VP/FP decompiler

---
 rpcs3/Emu/RSX/D3D12/FragmentProgramDecompiler.cpp | 8 ++++----
 rpcs3/Emu/RSX/D3D12/VertexProgramDecompiler.cpp   | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/rpcs3/Emu/RSX/D3D12/FragmentProgramDecompiler.cpp b/rpcs3/Emu/RSX/D3D12/FragmentProgramDecompiler.cpp
index 0eb811a512..074505494e 100644
--- a/rpcs3/Emu/RSX/D3D12/FragmentProgramDecompiler.cpp
+++ b/rpcs3/Emu/RSX/D3D12/FragmentProgramDecompiler.cpp
@@ -568,9 +568,9 @@ std::string FragmentDecompiler::Decompile()
 			{
 			case RSX_FP_OPCODE_ADD: SetDst("($0 + $1)"); break;
 			case RSX_FP_OPCODE_COS: SetDst("cos($0)"); break;
-			case RSX_FP_OPCODE_DP2: SetDst("vec4(dot($0.xy, $1.xy))"); break;
-			case RSX_FP_OPCODE_DP3: SetDst("vec4(dot($0.xyz, $1.xyz))"); break;
-			case RSX_FP_OPCODE_DP4: SetDst("vec4(dot($0, $1))"); break;
+			case RSX_FP_OPCODE_DP2: SetDst("dot($0.xy, $1.xy).xxxx"); break;
+			case RSX_FP_OPCODE_DP3: SetDst("dot($0.xyz, $1.xyz).xxxx"); break;
+			case RSX_FP_OPCODE_DP4: SetDst("dot($0, $1).xxxx"); break;
 			case RSX_FP_OPCODE_DP2A: SetDst("vec4($0.x * $1.x + $0.y * $1.y + $2.x)"); break;
 			case RSX_FP_OPCODE_DST: SetDst("vec4(distance($0, $1))"); break;
 			case RSX_FP_OPCODE_REFL: LOG_ERROR(RSX, "Unimplemented SCB instruction: REFL"); break; // TODO: Is this in the right category?
@@ -616,7 +616,7 @@ std::string FragmentDecompiler::Decompile()
 			case RSX_FP_OPCODE_DDY: SetDst("dFdy($0)"); break;
 			case RSX_FP_OPCODE_NRM: SetDst("normalize($0)"); break;
 			case RSX_FP_OPCODE_BEM: LOG_ERROR(RSX, "Unimplemented TEX_SRB instruction: BEM"); break;
-			case RSX_FP_OPCODE_TEX: SetDst("texture($t, $0.xy)");  break;
+			case RSX_FP_OPCODE_TEX: SetDst("float4(0., 0., 0., 0.);//texture($t, $0.xy)");  break;
 			case RSX_FP_OPCODE_TEXBEM: SetDst("texture($t, $0.xy, $1.x)"); break;
 			case RSX_FP_OPCODE_TXP: SetDst("textureProj($t, $0.xyz, $1.x)"); break; //TODO: More testing (Sonic The Hedgehog (NPUB-30442/NPEB-00478) and The Simpsons Arcade Game (NPUB30563))
 			case RSX_FP_OPCODE_TXPBEM: SetDst("textureProj($t, $0.xyz, $1.x)"); break;
diff --git a/rpcs3/Emu/RSX/D3D12/VertexProgramDecompiler.cpp b/rpcs3/Emu/RSX/D3D12/VertexProgramDecompiler.cpp
index d3711aba39..e7ea5ca365 100644
--- a/rpcs3/Emu/RSX/D3D12/VertexProgramDecompiler.cpp
+++ b/rpcs3/Emu/RSX/D3D12/VertexProgramDecompiler.cpp
@@ -542,7 +542,7 @@ void VertexDecompiler::insertMainStart(std::stringstream & OS)
 	for (const ParamType PT : m_parr.params[PF_PARAM_NONE])
 	{
 		for (const ParamItem &PI : PT.items)
-			OS << "	" << PT.type << " " << PI.name << ";" << std::endl;
+			OS << "	" << PT.type << " " << PI.name << " = float4(0., 0., 0., 0.);" << std::endl;
 	}
 
 	for (const ParamType PT : m_parr.params[PF_PARAM_IN])
@@ -802,7 +802,7 @@ std::string VertexDecompiler::Decompile()
 		case RSX_VEC_OPCODE_SLT: SetDSTVec("vec4(lessThan($0, $1))"); break;
 		case RSX_VEC_OPCODE_SGE: SetDSTVec("vec4(greaterThanEqual($0, $1))"); break;
 		case RSX_VEC_OPCODE_ARL: AddCode("$ifcond $a = ivec4($0)$am;");  break;
-		case RSX_VEC_OPCODE_FRC: SetDSTVec("fract($0)"); break;
+		case RSX_VEC_OPCODE_FRC: SetDSTVec("frac($0)"); break;
 		case RSX_VEC_OPCODE_FLR: SetDSTVec("floor($0)"); break;
 		case RSX_VEC_OPCODE_SEQ: SetDSTVec("vec4(equal($0, $1))"); break;
 		case RSX_VEC_OPCODE_SFL: SetDSTVec("vec4(equal($0, vec4(0.0)))"); break;