diff --git a/Source/HyruleWarriors_Resolution/492839ddc5f8f43e_0000000000000000_vs.txt b/Source/HyruleWarriors_Resolution/492839ddc5f8f43e_0000000000000000_vs.txt
index 8a8ea35c..8a64ef98 100644
--- a/Source/HyruleWarriors_Resolution/492839ddc5f8f43e_0000000000000000_vs.txt
+++ b/Source/HyruleWarriors_Resolution/492839ddc5f8f43e_0000000000000000_vs.txt
@@ -3,7 +3,8 @@
 #extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
 // shader 492839ddc5f8f43e //3rd level dof
-const float resScale =  ($height/$gameHeight)*$internalRes;
+const float resXScale =  intBitsToFloat($width)/intBitsToFloat($gameWidth);
+const float resYScale = intBitsToFloat($height)/intBitsToFloat($gameHeight); 
 uniform ivec4 uf_uniformRegisterVS[256];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
@@ -222,18 +223,18 @@ tempResultf = clamp(tempResultf, -256.0, 255.0);
 ARi.x = int(tempResultf);
 PV1i.x = floatBitsToInt(tempResultf);
 // 2
-PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale);
-PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale);
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale);
+PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resXScale);
+PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resXScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resXScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resXScale);
 // 3
 PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 // 4
-Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale));
-Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale);
+Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale));
+Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale);
 // 5
 tempResulti = Ri[1].x;
 tempResulti = clamp(tempResulti, -256, 255);
diff --git a/Source/HyruleWarriors_Resolution/945d9672d0114248_0000000000000000_vs.txt b/Source/HyruleWarriors_Resolution/945d9672d0114248_0000000000000000_vs.txt
index 5195f65a..40fe9994 100644
--- a/Source/HyruleWarriors_Resolution/945d9672d0114248_0000000000000000_vs.txt
+++ b/Source/HyruleWarriors_Resolution/945d9672d0114248_0000000000000000_vs.txt
@@ -3,7 +3,8 @@
 #extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
 // shader 945d9672d0114248
-const float resScale =  ($height/$gameHeight);
+const float resXScale =  intBitsToFloat($width)/intBitsToFloat($gameWidth);
+const float resYScale = intBitsToFloat($height)/intBitsToFloat($gameHeight); 
 uniform ivec4 uf_uniformRegisterVS[256];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
@@ -186,9 +187,9 @@ Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), float
 if( activeMaskStackC[1] == true ) {
 // 0
 Ri[3].y = 0;
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resXScale);
 PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resXScale);
 PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
 // 1
 PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0));
@@ -224,18 +225,18 @@ tempResultf = clamp(tempResultf, -256.0, 255.0);
 ARi.x = int(tempResultf);
 PV1i.x = floatBitsToInt(tempResultf);
 // 2
-PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale);
-PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale);
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale);
+PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resXScale);
+PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resXScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resXScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resXScale);
 // 3
 PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 // 4
-Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale));
-Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale);
+Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale));
+Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale);
 // 5
 tempResulti = Ri[1].x;
 tempResulti = clamp(tempResulti, -256, 255);
diff --git a/Source/HyruleWarriors_Resolution/b3609db7d1363f6a_0000000000000000_vs.txt b/Source/HyruleWarriors_Resolution/b3609db7d1363f6a_0000000000000000_vs.txt
index bb45889e..b976c3a1 100644
--- a/Source/HyruleWarriors_Resolution/b3609db7d1363f6a_0000000000000000_vs.txt
+++ b/Source/HyruleWarriors_Resolution/b3609db7d1363f6a_0000000000000000_vs.txt
@@ -4,7 +4,8 @@
 #extension GL_ARB_shading_language_packing : enable
 // shader b3609db7d1363f6a
 //cutscene dof
-const float resScale =  ($height/$gameHeight)*$internalRes;
+const float resXScale =  intBitsToFloat($width)/intBitsToFloat($gameWidth);
+const float resYScale = intBitsToFloat($height)/intBitsToFloat($gameHeight); 
 uniform ivec4 uf_uniformRegisterVS[256];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
@@ -191,9 +192,9 @@ Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), float
 if( activeMaskStackC[1] == true ) {
 // 0
 Ri[3].y = 0;
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resXScale);
 PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resXScale);
 PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
 // 1
 PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0));
@@ -229,18 +230,18 @@ tempResultf = clamp(tempResultf, -256.0, 255.0);
 ARi.x = int(tempResultf);
 PV1i.x = floatBitsToInt(tempResultf);
 // 2
-PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale);
-PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale);
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale);
+PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resXScale);
+PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resXScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resXScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resXScale);
 // 3
 PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 // 4
-Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale));
-Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale);
+Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale));
+Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale);
 // 5
 tempResulti = Ri[1].x;
 tempResulti = clamp(tempResulti, -256, 255);
diff --git a/Source/HyruleWarriors_Resolution/f9feadb214b483b7_0000000000000000_vs.txt b/Source/HyruleWarriors_Resolution/f9feadb214b483b7_0000000000000000_vs.txt
index 97141c7f..929a2914 100644
--- a/Source/HyruleWarriors_Resolution/f9feadb214b483b7_0000000000000000_vs.txt
+++ b/Source/HyruleWarriors_Resolution/f9feadb214b483b7_0000000000000000_vs.txt
@@ -3,7 +3,8 @@
 #extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
 // shader f9feadb214b483b7
-const float resScale =  ($height/$gameHeight)*$internalRes;
+const float resXScale =  intBitsToFloat($width)/intBitsToFloat($gameWidth);
+const float resYScale = intBitsToFloat($height)/intBitsToFloat($gameHeight); 
 uniform ivec4 uf_uniformRegisterVS[256];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
@@ -189,9 +190,9 @@ Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), float
 if( activeMaskStackC[1] == true ) {
 // 0
 Ri[3].y = 0;
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resXScale);
 PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resXScale);
 PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
 // 1
 PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0));
@@ -227,18 +228,18 @@ tempResultf = clamp(tempResultf, -256.0, 255.0);
 ARi.x = int(tempResultf);
 PV1i.x = floatBitsToInt(tempResultf);
 // 2
-PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale);
-PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale);
-PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale);
-PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale);
+PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resXScale);
+PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resXScale);
+PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resXScale);
+PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resXScale);
 // 3
 PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x)));
 PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y)));
 // 4
-Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale));
-Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale);
+Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resXScale));
+Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resXScale);
 // 5
 tempResulti = Ri[1].x;
 tempResulti = clamp(tempResulti, -256, 255);
diff --git a/Source/HyruleWarriors_Resolution/rules.txt b/Source/HyruleWarriors_Resolution/rules.txt
index ff295074..917add84 100644
--- a/Source/HyruleWarriors_Resolution/rules.txt
+++ b/Source/HyruleWarriors_Resolution/rules.txt
@@ -76,7 +76,7 @@ $scaleBlur = 0.5
 
 [Preset]
 name = 5760x1080 (48:9 HD)
-$width = 2560
+$width = 5760
 $height = 1080
 $gameWidth = 1280
 $gameHeight = 720
@@ -174,7 +174,7 @@ $scaleShader = 1.0
 $scaleBlur = 1.0
 
 [Preset]
-name = 5120x2160 (4k 48:9)
+name = 115200x2160 (4k 48:9)
 $width = 11520
 $height = 2160
 $gameWidth = 1280