[TMS] UI aspect matching 21:9, 16:10, 16:9

Scales UI and video to match current 3d aspect.
This commit is contained in:
getdls 2019-08-11 20:10:34 +02:00
parent 91f6779539
commit ef3690860c
7 changed files with 794 additions and 106 deletions

View File

@ -0,0 +1,112 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader 61b51be479ffa5dc
//text aspect
const float UI = $UIAspectX;
const float UIY = $UIAspectY;
uniform ivec4 uf_remappedVS[4];
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem3;
layout(location = 2) in uvec4 attrDataSem8;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem131;
layout(location = 1) out vec4 passParameterSem136;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R5i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R3i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xyz = attrDataSem8.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem3.xyzw)/255.0);
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R1i.w)));
R127i.y = ((0.0 > intBitsToFloat(R2i.z))?int(0xFFFFFFFF):int(0x0));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.z)) + -(1.0));
R127i.w = 0x3f800000;
PV0i.w = R127i.w;
// 1
R0i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(PV0i.w)),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w))));
PV1i.x = R0i.x;
PV1i.y = R0i.x;
PV1i.z = R0i.x;
PV1i.w = R0i.x;
R4i.w = ((PV0i.y == 0)?(R1i.w):(PV0i.x));
PS1i = R4i.w;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(R127i.w)),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R0i.y = tempi.x;
R5i.z = ((R127i.y == 0)?(R2i.z):(R127i.z));
PS0i = R5i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(R127i.w)),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R0i.z = tempi.x;
R4i.x = ((R127i.y == 0)?(R1i.x):(R1i.x));
PS1i = R4i.x;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(R127i.w)),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R0i.w = tempi.x;
R4i.y = ((R127i.y == 0)?(R1i.y):(R1i.y));
PS0i = R4i.y;
// 5
R5i.x = ((R127i.y == 0)?(R2i.x):(R2i.x));
R5i.y = ((R127i.y == 0)?(R2i.y):(R2i.y));
R4i.z = ((R127i.y == 0)?(R1i.z):(R1i.z));
// export
gl_Position = vec4(intBitsToFloat(R0i.x)*UI, intBitsToFloat(R0i.y)*UIY, intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
// export
passParameterSem131 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
// export
passParameterSem136 = vec4(intBitsToFloat(R5i.x), intBitsToFloat(R5i.y), intBitsToFloat(R5i.z), intBitsToFloat(R5i.w));
}

View File

@ -0,0 +1,134 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader 94986f08df872394
//gui aspect
const float UI = $UIAspectX;
const float UIY = $UIAspectY;
uniform ivec4 uf_remappedVS[9];
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem3;
layout(location = 2) in uvec4 attrDataSem8;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem131;
layout(location = 1) out vec4 passParameterSem136;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder = attrDataSem3;
attrDecoder = (attrDecoder>>24)|((attrDecoder>>8)&0xFF00)|((attrDecoder<<8)&0xFF0000)|((attrDecoder<<24));
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
attrDecoder.xy = attrDataSem8.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
PV0f.x = R127f.x;
PV0f.y = R127f.x;
PV0f.z = R127f.x;
PV0f.w = R127f.x;
R0f.x = R3f.x;
PS0f = R0f.x;
// 1
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R127f.y = tempf.x;
R0f.y = R3f.y;
PS1f = R0f.y;
// 2
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R127f.z = tempf.x;
// 3
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R127f.w = tempf.x;
// 4
R2f.x = dot(vec4(R127f.x,R127f.y,R127f.z,PV1f.x),vec4(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z),intBitsToFloat(uf_remappedVS[4].w)));
PV0f.x = R2f.x;
PV0f.y = R2f.x;
PV0f.z = R2f.x;
PV0f.w = R2f.x;
// 5
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R2f.y = tempf.x;
// 6
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R2f.z = tempf.x;
// 7
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z),intBitsToFloat(uf_remappedVS[7].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R2f.w = tempf.x;
// 8
backupReg0f = R1f.x;
backupReg1f = R1f.y;
backupReg2f = R1f.z;
backupReg3f = R1f.w;
R1f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedVS[8].x));
R1f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[8].y));
R1f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedVS[8].z));
R1f.w = mul_nonIEEE(backupReg3f, intBitsToFloat(uf_remappedVS[8].w));
// export
gl_Position = vec4(R2f.x*UI, R2f.y*UIY, R2f.z, R2f.w);
// export
passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
// export
passParameterSem136 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
}

View File

@ -0,0 +1,27 @@
------
### Tokyo mirage sessions FE #
------
### Graphic options
3840x4320 vert x2 SSAA - Runs the game at double vertical res balancing look and performance when super sampling. Aspect is still 16:9 so run full screen scaling in stretched and bilinear when activating this option.
By default game scales GUI and pillar boxes video.
Example:
```
[Preset]
name = 2560x2160 ("21:9")
$width = 2560
$height = 2160 <- double vertical res
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = (1280.0/720.0) / (2560.0 / 1080.0) <- UI aspect 21:9 scale
$UIAspectY = 1.0
$GameAspect = (2560.0 / 1080.0) <- 3d aspect 21:9 scale
```
Known issues Cemu 15:11.x
Shadows are broken
Touchpad seonsor aspect doesnt scale ie 21:9 graphics still has 16:9 sensor size
Portraits are missing due to gfx pack scaling similar values in-game

View File

@ -0,0 +1,142 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader aae570d2455724bc
//BG fx
const float UI = $UIAspectX;
const float UIY = $UIAspectY;
uniform ivec4 uf_remappedVS[9];
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem3;
layout(location = 2) in uvec4 attrDataSem8;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem131;
layout(location = 1) out vec4 passParameterSem136;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder = attrDataSem3;
attrDecoder = (attrDecoder>>24)|((attrDecoder>>8)&0xFF00)|((attrDecoder<<8)&0xFF0000)|((attrDecoder<<24));
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(int(attrDecoder.w)));
attrDecoder.xy = attrDataSem8.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R3f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R127f.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
PV0f.x = R127f.x;
PV0f.y = R127f.x;
PV0f.z = R127f.x;
PV0f.w = R127f.x;
// 1
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R127f.y = tempf.x;
// 2
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R127f.z = tempf.x;
// 3
tempf.x = dot(vec4(R2f.x,R2f.y,R2f.z,R2f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R127f.w = tempf.x;
// 4
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,PV1f.x),vec4(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z),intBitsToFloat(uf_remappedVS[4].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R2f.y = tempf.x;
// 5
R2f.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[5].x),intBitsToFloat(uf_remappedVS[5].y),intBitsToFloat(uf_remappedVS[5].z),intBitsToFloat(uf_remappedVS[5].w)));
PV1f.x = R2f.x;
PV1f.y = R2f.x;
PV1f.z = R2f.x;
PV1f.w = R2f.x;
R126f.y = PV0f.x + 1.0;
R126f.y /= 2.0;
PS1f = R126f.y;
// 6
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[6].x),intBitsToFloat(uf_remappedVS[6].y),intBitsToFloat(uf_remappedVS[6].z),intBitsToFloat(uf_remappedVS[6].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R2f.z = tempf.x;
R126f.z = PV1f.x + 1.0;
R126f.z /= 2.0;
PS0f = R126f.z;
// 7
tempf.x = dot(vec4(R127f.x,R127f.y,R127f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[7].x),intBitsToFloat(uf_remappedVS[7].y),intBitsToFloat(uf_remappedVS[7].z),intBitsToFloat(uf_remappedVS[7].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R2f.w = tempf.x;
R127f.x = -(R126f.y) + 1.0;
PS1f = R127f.x;
// 8
backupReg0f = R1f.x;
backupReg1f = R1f.y;
backupReg2f = R1f.z;
backupReg3f = R1f.w;
R1f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedVS[8].x));
R1f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[8].y));
R1f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedVS[8].z));
R1f.w = mul_nonIEEE(backupReg3f, intBitsToFloat(uf_remappedVS[8].w));
R3f.z = R126f.z;
PS0f = R3f.z;
// 9
R3f.w = R127f.x;
// export
gl_Position = vec4(R2f.x*UI, R2f.y*UIY, R2f.z, R2f.w);
// export
passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
// export
passParameterSem136 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
}

View File

@ -0,0 +1,95 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader dda6656146476243
//Video aspect
const float UI = $UIAspectX;
const float UIY = $UIAspectY;
uniform ivec4 uf_remappedVS[5];
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem8;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem131;
layout(location = 1) out vec4 passParameterSem136;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem8.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
PV0f.x = R0f.x;
PV0f.y = R0f.x;
PV0f.z = R0f.x;
PV0f.w = R0f.x;
R3f.x = R2f.x;
PS0f = R3f.x;
// 1
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R0f.y = tempf.x;
R3f.y = R2f.y;
PS1f = R3f.y;
// 2
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.z = tempf.x;
// 3
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R1f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R0f.w = tempf.x;
// 4
R1f.xyz = vec3(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z));
R1f.w = intBitsToFloat(uf_remappedVS[4].w);
// export
gl_Position = vec4(R0f.x*UI, R0f.y*UIY, R0f.z, R0f.w);
// export
passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
// export
passParameterSem136 = vec4(R3f.x, R3f.y, R3f.z, R3f.z);
}

View File

@ -2,6 +2,6 @@
[TMS_219_EUv16]
moduleMatches = 0x2249A57A
0x10006C18 = .float $width/$height
0x10014400 = .float $width/$height
0x10067140 = .float $width/$height
0x10006C18 = .float $GameAspect
0x10014400 = .float $GameAspect
0x10067140 = .float $GameAspect

View File

@ -11,6 +11,9 @@ $width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
// Performance
@ -20,6 +23,9 @@ $width = 320
$height = 180
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 640x360
@ -27,6 +33,9 @@ $width = 640
$height = 360
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 960x540
@ -34,6 +43,9 @@ $width = 960
$height = 540
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
// Common HD Resolutions
@ -43,6 +55,9 @@ $width = 1600
$height = 900
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 1920x1080
@ -50,6 +65,9 @@ $width = 1920
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 2560x1440
@ -57,6 +75,9 @@ $width = 2560
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 3200x1800
@ -64,6 +85,9 @@ $width = 3200
$height = 1800
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 3840x2160
@ -71,6 +95,9 @@ $width = 3840
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 5120x2880
@ -78,6 +105,9 @@ $width = 5120
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
// Common Ultrawide Resolutions
@ -87,20 +117,29 @@ $width = 2560
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = (1280.0/720.0) / (2560.0 / 1080.0)
$UIAspectY = 1.0
$GameAspect = (2560.0 / 1080.0)
[Preset]
name = 3440x1440 ("21:9")
name = 3440x1440 ("21:9") #2.388
$width = 3440
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = (1280.0/720.0) / (3440.0 / 1440.0)
$UIAspectY = 1.0
$GameAspect = (3440.0 / 1440.0)
[Preset]
name = 3840x1600 ("21:9")
name = 3840x1600 ("21:9") #2.4
$width = 3840
$height = 1600
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = (1280.0/720.0)/ (3840.0 / 1600.0)
$UIAspectY = 1.0
$GameAspect = (3840.0 / 1600.0)
// Common 16:10 Resolutions
@ -110,6 +149,9 @@ $width = 1440
$height = 900
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (1440.0 / 900.0) / (1280.0/720.0)
$GameAspect = (1440.0 / 900.0)
[Preset]
name = 1680x1050 (16:10)
@ -117,6 +159,9 @@ $width = 1680
$height = 1050
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (1680.0 / 1050.0) / (1280.0/720.0)
$GameAspect = (1680.0 / 1050.0)
[Preset]
name = 1920x1200 (16:10)
@ -124,6 +169,9 @@ $width = 1920
$height = 1200
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (1920.0 / 1200.0) / (1280.0/720.0)
$GameAspect = (1920.0 / 1200.0)
[Preset]
name = 2560x1600 (16:10)
@ -131,6 +179,9 @@ $width = 2560
$height = 1600
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (2560.0 / 1600.0) / (1280.0/720.0)
$GameAspect = (2560.0 / 1600.0)
[Preset]
name = 2880x1800 (16:10)
@ -138,6 +189,9 @@ $width = 2880
$height = 1800
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (2880.0 / 1800.0) / (1280.0/720.0)
$GameAspect = (2880.0 / 1800.0)
[Preset]
name = 3840x2400 (16:10)
@ -145,6 +199,9 @@ $width = 3840
$height = 2400
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (3840.0 / 2400.0) / (1280.0/720.0)
$GameAspect = (3840.0 / 2400.0)
[Preset]
name = 5120x3200 (16:10)
@ -152,11 +209,134 @@ $width = 5120
$height = 3200
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = (5120.0 / 3200.0) / (1280.0/720.0)
$GameAspect = (5120.0 / 3200.0)
[Preset]
name = -- Double vertical res for SSAA, disable keep aspect ratio --
$width = 2560
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (2560.0 / 1440.0)
[Preset]
name = 1920x2160
$width = 1920
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1920.0 / 1080.0)
[Preset]
name = 2560x2160 ("21:9")
$width = 2560
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = (1280.0/720.0) / (2560.0 / 1080.0)
$UIAspectY = 1.0
$GameAspect = (2560.0 / 1080.0)
[Preset]
name = 2560x2880
$width = 2560
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (2560.0 / 1440.0)
[Preset]
name = 3840x3200 ("21:9") #2.4
$width = 3840
$height = 3200
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = (1280.0/720.0)/ (2840.0 / 1600)
$UIAspectY = 1.0
$GameAspect = (3840.0 / 1600.0)
[Preset]
name = 3840x4320
$width = 3840
$height = 4320
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (3840.0 / 2160.0)
[TextureRedefine]
width = 1280
height = 720
#formats = 0x816,0x80e,0x01a,0x001
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
overwriteFormat = 0x01f
$UIAspectX = 1.0
[TextureRedefine]
width = 1280
height = 720
formats = 0x810
overwriteFormat = 0x81e
[TextureRedefine]
width = 640
height = 368
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 640
height = 360
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine] #
width = 640
height = 368
formats = 0x01a
overwriteFormat = 0x820
[TextureRedefine]
width = 320
height = 192
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 320
height = 180
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 160
height = 128
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 160
height = 120
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 1280
height = 720
formats = 0x01a,0x816,0x80e,0x001
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720
@ -168,36 +348,6 @@ height = 340
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 340
#[TextureRedefine] # Shadows cemu scaling broken?
#width = 1024
#height = 2048
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 2048
#[TextureRedefine] #Shadows, cemu scaling broken?
#width = 1024
#height = 1024
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 1024
#[TextureRedefine] #
#width = 512
#height = 512
#formats = 0x01a #GUI bar + alpha nope
#overwriteWidth = 1024
#overwriteHeight = 1024
#[TextureRedefine] #
#width = 128
#height = 1024
#formats = 0x034 #text + alpha
#overwriteWidth = 256
#overwriteHeight = 2048
[TextureRedefine]
width = 1014
height = 720
@ -289,3 +439,31 @@ height = 120
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 120
#[TextureRedefine] # Shadows cemu scaling broken?
#width = 1024
#height = 2048
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 2048
#[TextureRedefine] #Shadows, cemu scaling broken?
#width = 1024
#height = 1024
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 1024
#[TextureRedefine] # Don't scale
#width = 512
#height = 512
#formats = 0x01a #GUI bar + alpha nope
#overwriteWidth = 1024
#overwriteHeight = 1024
#[TextureRedefine] # Don't scale
#width = 128
#height = 1024
#formats = 0x034 #text + alpha
#overwriteWidth = 256
#overwriteHeight = 2048