[TMS:FE] Update to V7 graphic packs

Haven't implemented the inMEM = 1 feature to fix the menus yet, but this is a working version.
This commit is contained in:
Crementif 2021-02-03 20:11:41 +01:00
parent d3231ac80d
commit e329d63186
No known key found for this signature in database
GPG Key ID: 453870E0401C94C0
32 changed files with 753 additions and 927 deletions

View File

@ -1,102 +0,0 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#define gl_VertexID gl_VertexIndex
#define gl_InstanceID gl_InstanceIndex
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define SET_POSITION(_v) gl_Position = _v
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 04d0827b9471eb22
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem8;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem137;
layout(location = 0) 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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
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 = attrDataSem0;
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;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R3f.x = R2f.x;
R3f.y = R2f.y;
PV0f.z = intBitsToFloat(uf_remappedVS[0].z) + 0.0;
// 1
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].y), PV0f.z);
PV1f.z = R127f.z;
PV1f.w = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].x), PV0f.z);
// 2
PV0f.x = R2f.y + PV1f.z;
PV0f.y = R2f.x + PV1f.w;
R0f.x = R2f.x + -(PV1f.w);
PS0f = R0f.x;
// 3
R0f.y = R2f.y + -(R127f.z);
R0f.z = PV0f.y;
R0f.w = PV0f.x;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem137 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
// export
passParameterSem136 = vec4(R3f.x, R3f.y, R3f.z, R3f.z);
}

View File

@ -1,6 +0,0 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = AA Removal
path = "Tokyo Mirage Sessions FE/Enhancements/AA Removal"
description = Removes AA, no performance gain. Used for clean look or injecting external AA. Made by getdls.
version = 4

View File

@ -1,118 +0,0 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#define gl_VertexID gl_VertexIndex
#define gl_InstanceID gl_InstanceIndex
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define SET_POSITION(_v) gl_Position = _v
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader dda6656146476243
//Video aspect
const float UI = $UIAspectX;
const float UIY = $UIAspectY;
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
};
#else
uniform ivec4 uf_remappedVS[5];
#endif
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 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
SET_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

@ -1,16 +0,0 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Video pan n scan
path = "Tokyo Mirage Sessions FE/Graphics/Video pan n scan"
description = 21:9 Video, cuts of sides instead of pillar-boxing. Made by getdls.
version = 4
[Preset]
name = 21:9 Pan n scan (Cut top, bottom)
$UIAspectX = 1.0
$UIAspectY = (2560.0 / 1080.0) / (1280.0/720.0)
[Preset]
name = 16:10 Pan n scan (Cut sides)
$UIAspectX = (1280.0/720.0) / (3840.0 / 2400.0)
$UIAspectY = 1.0

View File

@ -1,50 +0,0 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Adjust Cutscene Blur
path = "Tokyo Mirage Sessions FE/Graphics/Adjust Cutscene Blur"
description = Changes the in-game cut-scenes blur. Made by getdls.
version = 4
[Preset]
name = 100% Blur (Original)
$Blur = 1.0
[Preset]
name = 90% Blur
$Blur = 0.9
[Preset]
name = 80% Blur
$Blur = 0.8
[Preset]
name = 70% Blur
$Blur = 0.7
[Preset]
name = 60% Blur
$Blur = 0.6
[Preset]
name = 50% Blur
$Blur = 0.5
[Preset]
name = 40% Blur
$Blur = 0.4
[Preset]
name = 30% Blur
$Blur = 0.3
[Preset]
name = 20% Blur
$Blur = 0.2
[Preset]
name = 10% Blur
$Blur = 0.1
[Preset]
name = Disabled
$Blur = 0.0

View File

@ -1,38 +0,0 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Negative texture LOD bias
path = "Tokyo Mirage Sessions FE/Enhancements/Negative Texture LOD"
description = Texture LOD override, possible shimmer but sharper textures. Made by getdls.
version = 4
[Preset]
name = LOD Default
$LOD = 0
[Preset]
name = LOD -1 (Sharper)
$LOD = -1
[Preset]
name = LOD -2
$LOD = -2
[Preset]
name = LOD -3
$LOD = -3
[Preset]
name = LOD -4
$LOD = -4
[Preset]
name = LOD -8
$LOD = -8
[Preset]
name = LOD -16 (Sharpest)
$LOD = -16
[TextureRedefine]
formats = 0x01a,0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435
overwriteRelativeLodBias = $LOD

View File

@ -1,14 +0,0 @@
[TMS_60FPS] # Tested on unpatched EU version
moduleMatches = 0x2249A57A
0x1002A6E4 = .float 0.016666667
_frameTime = 0x1002A6E4
0x021A7654 = lis r10, _frameTime@ha # cinematic timing
0x021A765C = lfs f1, _frameTime@l(r10) #
0x0244D434 = li r4, 1 #
0x0248BF04 = nop # kill vsync
0x0248B11C = nop #kill vsync
#0x10065E50 = .float 0.033333335 # cinematic animation speed, for future ref

View File

@ -1,27 +0,0 @@
------
### 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

@ -1,7 +0,0 @@
[TMS_219_EUv16]
moduleMatches = 0x2249A57A
0x10006C18 = .float $GameAspect
0x10014400 = .float $GameAspect
0x10067140 = .float $GameAspect

View File

@ -1,479 +0,0 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Resolution
path = "Tokyo Mirage Sessions FE/Graphics/Resolution"
description = Changes the resolution of the game. Made by getdls.
version = 4
[Preset]
name = 1280x720 (Default)
$width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
// Performance
[Preset]
name = 320x180
$width = 320
$height = 180
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 640x360
$width = 640
$height = 360
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 960x540
$width = 960
$height = 540
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
// Common HD Resolutions
[Preset]
name = 1600x900
$width = 1600
$height = 900
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 1920x1080
$width = 1920
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 2560x1440
$width = 2560
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 3200x1800
$width = 3200
$height = 1800
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 3840x2160
$width = 3840
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 5120x2880
$width = 5120
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
[Preset]
name = 7680x4320
$width = 7680
$height = 4320
$gameWidth = 1280
$gameHeight = 720
$UIAspectX = 1.0
$UIAspectY = 1.0
$GameAspect = (1280.0 / 720.0)
// Common Ultrawide Resolutions
[Preset]
name = 2560x1080 ("21:9")
$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") #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") #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
[Preset]
name = 1440x900 (16:10)
$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)
$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)
$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)
$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)
$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)
$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)
$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
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
[TextureRedefine]
width = 1280
height = 340
#formats =
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 340
[TextureRedefine]
width = 1014
height = 720
#formats =
overwriteWidth = ($width/$gameWidth) * 1014
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine]
width = 896
height = 480
formats = 0x001
overwriteWidth = ($width/$gameWidth) * 896
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Pad
width = 864
height = 480
#formats =
overwriteWidth = ($width/$gameWidth) * 864
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Pad
width = 854
height = 480
#formats =
overwriteWidth = ($width/$gameWidth) * 854
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Pad
width = 674
height = 574
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 674
overwriteHeight = ($height/$gameHeight) * 574
[TextureRedefine] # Pad
width = 657
height = 574
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 657
overwriteHeight = ($height/$gameHeight) * 574
[TextureRedefine]
width = 640
height = 720
#formats =
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine]
width = 640
height = 368
#formats = 0x816,0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 368
[TextureRedefine]
width = 640
height = 360
#formats = 0x816,0x001
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 360
[TextureRedefine]
width = 320
height = 192
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 192
[TextureRedefine]
width = 320
height = 180
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]
width = 160
height = 128
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 128
[TextureRedefine]
width = 160
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

View File

@ -20,6 +20,26 @@
// shader a7f4801a8d29e333 // shader a7f4801a8d29e333
const float hazeFactor = 0.1;
const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage
const float exposure = $exposure; // 1.0 is neutral
const float vibrance = $vibrance; // 0.0 is neutral
const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail
const float contrastCurve = $contrastCurve;
vec3 RGB_Lift = vec3($redShadows, $greenShadows, $blueShadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue.
vec3 RGB_Gamma = vec3($redMid, $greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue.
vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue.
//lumasharpen
const float sharp_mix = $sharp_mix;
const float sharp_strength = 2.0;
const float sharp_clamp = 0.75;
const float offset_bias = 1.0;
#ifdef VULKAN #ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock layout(set = 1, binding = 1) uniform ufBlock
{ {
@ -31,25 +51,7 @@ uniform ivec4 uf_remappedPS[3];
uniform vec2 uf_fragCoordScale; uniform vec2 uf_fragCoordScale;
#endif #endif
const float hazeFactor = 0.1;
const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage
const float exposure = $exposure; // 1.0 is neutral
const float vibrance = $vibrance; // 0.0 is neutral
const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail
const float contrastCurve = $contrastCurve;
vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue.
vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue
vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue
//lumasharpen
const float sharp_mix = $sharp_mix;
const float sharp_strength = 2.0;
const float sharp_clamp = 0.75;
const float offset_bias = 1.0;
float Sigmoid (float x) { float Sigmoid (float x) {
return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5))); return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5)));
} }

View File

@ -2,19 +2,42 @@
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00 titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Contrasty name = Contrasty
path = "Tokyo Mirage Sessions FE/Enhancements/Contrasty" path = "Tokyo Mirage Sessions FE/Enhancements/Contrasty"
description = This pack tweaks the colors and contrast to whatever preset you set it as. You can also make your own preset by editing the Default preset in the Contrasty folder from the game's graphic packs. Made by getdls. description = This pack tweaks the colors and contrast to whatever preset you set it as.|You can also make your own preset by editing the Normal preset in the Contrasty folder from the game's graphic packs.||Made by getdls.
version = 4 version = 7
[Preset] [Default]
name = Default
$redShadows = 1.0 $redShadows = 1.0
$greenShadows = 1.0 $greenShadows = 1.0
$blueSadows = 1.0 $blueShadows = 1.0
$redMid = 1.0 $redMid = 1.0
$greenMid = 1.0 $greenMid = 1.0
$blueMid = 1.0 $blueMid = 1.0
$redHilight = 1.0 $redHilight = 1.0
$greenHilight =1.0 $greenHilight = 1.0
$blueHilight = 1.0
$contrastCurve = 0.0
$hazeFactor = 1.0
$bloom = 1.0
$gamma = 1.0
$exposure = 1.0
$vibrance = 0.0
$crushContrast = 0.0
$bleach = 1.0
$sharp_mix = 0.0
[Preset]
category = Preset
name = Normal
$redShadows = 1.0
$greenShadows = 1.0
$blueShadows = 1.0
$redMid = 1.0
$greenMid = 1.0
$blueMid = 1.0
$redHilight = 1.0
$greenHilight = 1.0
$blueHilight = 1.0 $blueHilight = 1.0
$contrastCurve = 0.0 $contrastCurve = 0.0
@ -28,15 +51,16 @@ $bleach = 1.0
$sharp_mix = 0.0 $sharp_mix = 0.0
[Preset] [Preset]
category = Preset
name = High Contrasty name = High Contrasty
$redShadows = 1.0 $redShadows = 1.0
$greenShadows = 1.0 $greenShadows = 1.0
$blueSadows = 1.0 $blueShadows = 1.0
$redMid = 0.98 $redMid = 0.98
$greenMid = 0.98 $greenMid = 0.98
$blueMid = 0.9 $blueMid = 0.9
$redHilight = 1.0 $redHilight = 1.0
$greenHilight =1.0 $greenHilight = 1.0
$blueHilight = 1.0 $blueHilight = 1.0
$contrastCurve = 0.6 $contrastCurve = 0.6
@ -45,20 +69,21 @@ $bloom = 0.85
$gamma = 1.1 $gamma = 1.1
$exposure = 1.05 $exposure = 1.05
$vibrance = 0.25 $vibrance = 0.25
$crushContrast = 0.00 $crushContrast = 0.0
$bleach = 0.85 $bleach = 0.85
$sharp_mix = 0.1 $sharp_mix = 0.1
[Preset] [Preset]
name = Colourful category = Preset
name = Colorful
$redShadows = 0.999 $redShadows = 0.999
$greenShadows = 0.98 $greenShadows = 0.98
$blueSadows = 0.98 $blueShadows = 0.98
$redMid = 1.0 $redMid = 1.0
$greenMid = 0.99 $greenMid = 0.99
$blueMid = 0.99 $blueMid = 0.99
$redHilight = 1.0 $redHilight = 1.0
$greenHilight =0.99 $greenHilight = 0.99
$blueHilight = 0.99 $blueHilight = 0.99
$contrastCurve = 0.15 $contrastCurve = 0.15
@ -67,20 +92,21 @@ $bloom = 0.85
$gamma = 1.05 $gamma = 1.05
$exposure = 1.01 $exposure = 1.01
$vibrance = 0.4 $vibrance = 0.4
$crushContrast = 0.00 $crushContrast = 0.0
$bleach = 0.85 $bleach = 0.85
$sharp_mix = 0.1 $sharp_mix = 0.1
[Preset] [Preset]
category = Preset
name = Neutral Contrasty name = Neutral Contrasty
$redShadows = 1.01 $redShadows = 1.01
$greenShadows = 1.01 $greenShadows = 1.01
$blueSadows = 1.01 $blueShadows = 1.01
$redMid = 1.0 $redMid = 1.0
$greenMid = 1.0 $greenMid = 1.0
$blueMid = 1.0 $blueMid = 1.0
$redHilight = 0.99 $redHilight = 0.99
$greenHilight =0.99 $greenHilight = 0.99
$blueHilight = 0.99 $blueHilight = 0.99
$contrastCurve = 0.30 $contrastCurve = 0.30
@ -89,6 +115,6 @@ $bloom = 0.85
$gamma = 1.075 $gamma = 1.075
$exposure = 1.01 $exposure = 1.01
$vibrance = 0.15 $vibrance = 0.15
$crushContrast = 0.00 $crushContrast = 0.0
$bleach = 0.85 $bleach = 0.85
$sharp_mix = 0.1 $sharp_mix = 0.1

View File

@ -0,0 +1,102 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = LOD Bias
path = "Tokyo Mirage Sessions FE/Enhancements/LOD Bias"
description = Setting your Level Of Detail bias changes the detail level of the textures that are used.|Increasing the distant texture detail will make textures in the distance look sharper. Lowering the texture detail might improve performance however. Might introduce graphical bugs.
version = 7
[Default]
$advancedOptions = 0
$lodBias = 0
# Show Experimental Options
[Preset]
category = Show Experimental Options
name = Disabled
[Preset]
category = Show Experimental Options
name = Enabled (for screenshots/testing)
$advancedOptions = 1
# Texture Detail
[Preset]
category = Distant Texture Detail
name = Lowest (Not Recommended, +16)
condition = $advancedOptions == 1
$lodBias = +16
[Preset]
category = Distant Texture Detail
name = Extremely low (Not Recommended, +8)
condition = $advancedOptions == 1
$lodBias = +8
[Preset]
category = Distant Texture Detail
name = Very low (Not Recommended, +4)
condition = $advancedOptions == 1
$lodBias = +4
[Preset]
category = Distant Texture Detail
name = Much lower (+3)
$lodBias = +3
[Preset]
category = Distant Texture Detail
name = Lower (+2)
$lodBias = +2
[Preset]
category = Distant Texture Detail
name = Slightly lower (+1)
$lodBias = +1
[Preset]
category = Distant Texture Detail
name = Normal (+0)
default = 1
$lodBias = 0
[Preset]
category = Distant Texture Detail
name = Slightly Higher (-1)
$lodBias = -1
[Preset]
category = Distant Texture Detail
name = Higher (-2)
$lodBias = -2
[Preset]
category = Distant Texture Detail
name = Much higher (-3)
$lodBias = -3
[Preset]
category = Distant Texture Detail
name = Very high (Not Recommended, -4)
condition = $advancedOptions == 1
$lodBias = -4
[Preset]
category = Distant Texture Detail
name = Extremely high (Not Recommended, -8)
condition = $advancedOptions == 1
$lodBias = -8
[Preset]
category = Distant Texture Detail
name = Highest (Not Recommended, -16)
condition = $advancedOptions == 1
$lodBias = -16
[TextureRedefine]
formats = 0x01a,0x031,0x032,0x033,0x034,0x035,0x431,0x432,0x433,0x434,0x435
overwriteRelativeLodBias = $lodBias

View File

@ -21,6 +21,8 @@
// shader 04d0827b9471eb22 // shader 04d0827b9471eb22
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {
@ -80,11 +82,22 @@ R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)
// 0 // 0
R3f.x = R2f.x; R3f.x = R2f.x;
R3f.y = R2f.y; R3f.y = R2f.y;
#if ($disableAntiAliasing == 0)
PV0f.z = intBitsToFloat(uf_remappedVS[0].z) + 0.5; PV0f.z = intBitsToFloat(uf_remappedVS[0].z) + 0.5;
// 1 // 1
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].y) / resYScale, PV0f.z); R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].y) / resYScale, PV0f.z);
PV1f.z = R127f.z; PV1f.z = R127f.z;
PV1f.w = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].x) / resXScale, PV0f.z); PV1f.w = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].x) / resXScale, PV0f.z);
#else
PV0f.z = intBitsToFloat(uf_remappedVS[0].z) + 0.0;
// 1
R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].y), PV0f.z);
PV1f.z = R127f.z;
PV1f.w = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].x), PV0f.z);
#endif
// 2 // 2
PV0f.x = R2f.y + PV1f.z; PV0f.x = R2f.y + PV1f.z;
PV0f.y = R2f.x + PV1f.w; PV0f.y = R2f.x + PV1f.w;

View File

@ -21,6 +21,8 @@
// shader 201bd8dfd2a9e7d3 // shader 201bd8dfd2a9e7d3
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -21,6 +21,8 @@
// shader 23c5bbfda0fc3b0f // shader 23c5bbfda0fc3b0f
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -21,6 +21,8 @@
// shader 3259d3b3ca333bf3 // shader 3259d3b3ca333bf3
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -21,6 +21,8 @@
// shader 39863f29c6d85cb8 // shader 39863f29c6d85cb8
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -21,6 +21,8 @@
// shader 59fca914f0dcb060 // shader 59fca914f0dcb060
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -19,9 +19,11 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 61b51be479ffa5dc // shader 61b51be479ffa5dc
//text aspect // Used for: Text Rendering
const float UI = $UIAspectX; const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight));
const float UIY = $UIAspectY; const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height));
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {
@ -126,8 +128,17 @@ PS0i = R4i.y;
R5i.x = ((R127i.y == 0)?(R2i.x):(R2i.x)); R5i.x = ((R127i.y == 0)?(R2i.x):(R2i.x));
R5i.y = ((R127i.y == 0)?(R2i.y):(R2i.y)); R5i.y = ((R127i.y == 0)?(R2i.y):(R2i.y));
R4i.z = ((R127i.y == 0)?(R1i.z):(R1i.z)); R4i.z = ((R127i.y == 0)?(R1i.z):(R1i.z));
// export
SET_POSITION(vec4(intBitsToFloat(R0i.x)*UI, intBitsToFloat(R0i.y)*UIY, intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)));
#if ($ultrawideGUIScaling == 0)
SET_POSITION(vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)));
#elif ($ultrawideGUIScaling == 1)
if (calcXScale < 1.0) SET_POSITION(vec4(intBitsToFloat(R0i.x)*calcXScale, intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)));
if (calcYScale < 1.0) SET_POSITION(vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y)*calcYScale, intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)));
#endif
// export // export
passParameterSem131 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w)); passParameterSem131 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
// export // export

View File

@ -21,6 +21,8 @@
// shader 88ae6940d510eea5 // shader 88ae6940d510eea5
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -21,6 +21,8 @@
// shader 8cdd68cf2a074404 // shader 8cdd68cf2a074404
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -19,9 +19,10 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 94986f08df872394 // shader 94986f08df872394
//gui aspect // Used for: GUI Rendering
const float UI = $UIAspectX; const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight));
const float UIY = $UIAspectY; const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height));
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
@ -148,8 +149,16 @@ R1f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedVS[8].x));
R1f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[8].y)); R1f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[8].y));
R1f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedVS[8].z)); R1f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedVS[8].z));
R1f.w = mul_nonIEEE(backupReg3f, intBitsToFloat(uf_remappedVS[8].w)); R1f.w = mul_nonIEEE(backupReg3f, intBitsToFloat(uf_remappedVS[8].w));
// export
SET_POSITION(vec4(R2f.x*UI, R2f.y*UIY, R2f.z, R2f.w));
#if ($ultrawideGUIScaling == 0)
SET_POSITION(vec4(R2f.x, R2f.y, R2f.z, R2f.w));
#elif ($ultrawideGUIScaling == 1)
if (calcXScale < 1.0) SET_POSITION(vec4(R2f.x*calcXScale, R2f.y, R2f.z, R2f.w));
if (calcYScale < 1.0) SET_POSITION(vec4(R2f.x, R2f.y*calcYScale, R2f.z, R2f.w));
#endif
// export // export
passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
// export // export

View File

@ -19,9 +19,10 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader aae570d2455724bc // shader aae570d2455724bc
//BG fx // Used for: Background Effects
const float UI = $UIAspectX; const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight));
const float UIY = $UIAspectY; const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height));
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {
@ -156,8 +157,16 @@ R3f.z = R126f.z;
PS0f = R3f.z; PS0f = R3f.z;
// 9 // 9
R3f.w = R127f.x; R3f.w = R127f.x;
// export
SET_POSITION(vec4(R2f.x*UI, R2f.y*UIY, R2f.z, R2f.w));
#if ($ultrawideGUIScaling == 0)
SET_POSITION(vec4(R2f.x, R2f.y, R2f.z, R2f.w));
#elif ($ultrawideGUIScaling == 1)
if (calcXScale < 1.0) SET_POSITION(vec4(R2f.x*calcXScale, R2f.y, R2f.z, R2f.w));
if (calcYScale < 1.0) SET_POSITION(vec4(R2f.x, R2f.y*calcYScale, R2f.z, R2f.w));
#endif
// export // export
passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
// export // export

View File

@ -21,6 +21,8 @@
// shader b181218b85619285 // shader b181218b85619285
const float resXScale = float($width)/float($gameWidth); const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight); const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {

View File

@ -19,9 +19,11 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader dda6656146476243 // shader dda6656146476243
//Video aspect // Used for: Cutscene Videos
const float UI = $UIAspectX; const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight));
const float UIY = $UIAspectY; const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height));
#ifdef VULKAN #ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock layout(set = 0, binding = 0) uniform ufBlock
{ {
@ -109,8 +111,22 @@ R0f.w = tempf.x;
// 4 // 4
R1f.xyz = vec3(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z)); 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); R1f.w = intBitsToFloat(uf_remappedVS[4].w);
// export
SET_POSITION(vec4(R0f.x*UI, R0f.y*UIY, R0f.z, R0f.w));
#if ($ultrawideCutsceneMode == 0)
// Keeps the cutscenes stretched
SET_POSITION(vec4(R0f.x, R0f.y, R0f.z, R0f.w));
#elif ($ultrawideCutsceneMode == 1)
// Squeeze the cutscenes back
if (calcXScale < 1.0) SET_POSITION(vec4(R0f.x*calcXScale, R0f.y, R0f.z, R0f.w));
if (calcYScale < 1.0) SET_POSITION(vec4(R0f.x, R0f.y*calcYScale, R0f.z, R0f.w));
#elif ($ultrawideCutsceneMode == 2)
// Cut the black bars of the video by zooming in. Extends the side of the video that didn't get stretched.
if (calcXScale < 1.0) SET_POSITION(vec4(R0f.x, R0f.y*calcXScale, R0f.z, R0f.w));
if (calcYScale < 1.0) SET_POSITION(vec4(R0f.x*calcYScale, R0f.y, R0f.z, R0f.w));
#endif
// export // export
passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
// export // export

View File

@ -0,0 +1,6 @@
[TMS_AspectRatio_v16]
moduleMatches = 0x2249A57A
0x10006C18 = .float ($width/$height)
0x10014400 = .float ($width/$height)
0x10067140 = .float ($width/$height)

View File

@ -0,0 +1,394 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Game Resolution
path = "Tokyo Mirage Sessions FE/Graphics"
description = Changes the resolution of the game. Requires the latest update to use the ultrawide resolutions properly.||Made by getdls.
version = 7
[Default]
$width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$ultrawideCutsceneMode:int = 0
$ultrawideGUIScaling:int = 0
$disableAntiAliasing:int = 0
# TV Resolution
[Preset]
category = Resolution
name = 640x360
$width = 640
$height = 360
[Preset]
category = Resolution
name = 960x540
$width = 960
$height = 540
[Preset]
category = Resolution
name = 1280x720 (Default)
default = 1
[Preset]
category = Resolution
name = 1600x900
$width = 1600
$height = 900
[Preset]
category = Resolution
name = 1920x1080
$width = 1920
$height = 1080
[Preset]
category = Resolution
name = 2560x1440
$width = 2560
$height = 1440
[Preset]
category = Resolution
name = 3200x1800
$width = 3200
$height = 1800
[Preset]
category = Resolution
name = 3840x2160
$width = 3840
$height = 2160
[Preset]
category = Resolution
name = 5120x2880
$width = 5120
$height = 2880
[Preset]
category = Resolution
name = 7680x4320
$width = 7680
$height = 4320
[Preset]
category = Resolution
name = 1680x1050 (16:10)
$width = 1680
$height = 1050
[Preset]
category = Resolution
name = 1920x1200 (16:10)
$width = 1920
$height = 1200
[Preset]
category = Resolution
name = 2560x1080 (21:9)
$width = 2560
$height = 1080
[Preset]
category = Resolution
name = 3440x1440 (21:9)
$width = 3440
$height = 1440
[Preset]
category = Resolution
name = 5120x2160 (21:9)
$width = 5120
$height = 2160
[Preset]
category = Resolution
name = 3840x1080 (32:9)
$width = 3840
$height = 1080
[Preset]
category = Resolution
name = 5120x1440 (32:9)
$width = 5120
$height = 1440
# Ultrawide Cutscene Scaling
[Preset]
category = Ultrawide Cutscene Scaling
name = N/A
condition = 0
$ultrawideCutsceneMode:int = 0
[Preset]
category = Ultrawide Cutscene Scaling
name = Pillarbox Videos (Default)
condition = $width*9/16 != $height # Equals to "$width/$height != (16/9)" which is bugged in Cemu, since it'll be equal when the $width and $height is a 16:10 resolution
$ultrawideCutsceneMode:int = 1
[Preset]
category = Ultrawide Cutscene Scaling
name = Zoom Into Videos (loses video edges)
condition = $width*9/16 != $height
$ultrawideCutsceneMode:int = 2
[Preset]
category = Ultrawide Cutscene Scaling
name = None/Stretched Videos
condition = $width*9/16 != $height
$ultrawideCutsceneMode:int = 0
# Ultrawide GUI Scaling
[Preset]
category = Ultrawide GUI Scaling
name = N/A
condition = 0
default = 1
$ultrawideGUIScaling:int = 0
[Preset]
category = Ultrawide GUI Scaling
name = Scale (Default)
condition = $width*9/16 != $height
$ultrawideGUIScaling:int = 1
[Preset]
category = Ultrawide GUI Scaling
name = Stretch
condition = $width*9/16 != $height
$ultrawideGUIScaling:int = 0
# Anti Aliasing
[Preset]
category = Anti Aliasing
name = Enabled (Default, Recommended)
default = 1
$disableAntiAliasing:int = 0
[Preset]
category = Anti Aliasing
name = Disabled (jagged edges)
condition = $height <= 1080
$disableAntiAliasing:int = 1
[Preset]
category = Anti Aliasing
name = Disabled
condition = $height > 1080
$disableAntiAliasing:int = 1
# Improve texture banding by using texture formats with more depth
[TextureRedefine]
width = 1280
height = 720
formats = 0x816
overwriteFormat = 0x820
[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
overwriteFormat = 0x01f
[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
# Texture Redefines
[TextureRedefine]
width = 1280
height = 720
formats = 0x001,0x80e,0x816
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine]
width = 1280
height = 340
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 340
[TextureRedefine]
width = 1014
height = 720
overwriteWidth = ($width/$gameWidth) * 1014
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine]
width = 896
height = 480
formats = 0x001
overwriteWidth = ($width/$gameWidth) * 896
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Gamepad
width = 864
height = 480
overwriteWidth = ($width/$gameWidth) * 864
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Gamepad
width = 854
height = 480
overwriteWidth = ($width/$gameWidth) * 854
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Gamepad
width = 674
height = 574
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 674
overwriteHeight = ($height/$gameHeight) * 574
[TextureRedefine] # Gamepad
width = 657
height = 574
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 657
overwriteHeight = ($height/$gameHeight) * 574
[TextureRedefine]
width = 640
height = 720
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine]
width = 640
height = 368
#formats = 0x816,0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 368
[TextureRedefine]
width = 640
height = 360
#formats = 0x816,0x001
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 360
[TextureRedefine]
width = 320
height = 192
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 192
[TextureRedefine]
width = 320
height = 180
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]
width = 160
height = 128
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 128
[TextureRedefine]
width = 160
height = 120
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 120
#[TextureRedefine] # Shadows - Scaling broken
#width = 1024
#height = 2048
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 2048
#[TextureRedefine] # Shadows - 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

View File

@ -0,0 +1,14 @@
[TMS_60FPS]
moduleMatches = 0x2249A57A
0x1002A6E4 = .float 0.016666667
0x0202034C = _frameTime:
0x021A7654 = lis r10, _frameTime@ha ; Cutscene Speed
0x021A765C = lfs f1, _frameTime@l(r10) ; Gameplay Speed
0x0244D434 = li r4, 1 ; Change vsync mode
0x0248BF04 = nop ; Disable vsync
0x0248B11C = nop ; Disable vsync
; 0x10065E50 = .float 0.033333335 ; cinematic animation speed, for future reference

View File

@ -1,6 +1,6 @@
[Definition] [Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00 titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = 60FPS name = 60FPS
path = "Tokyo Mirage Sessions FE/Mods/Static 60FPS" path = "Tokyo Mirage Sessions FE/Mods/60FPS"
description = Important: This patches the gameplay to be in 60FPS. Getting under 60FPS will slow down the game's speed. Made by getdls. description = Important: This patches the gameplay to be in 60FPS. Getting under 60FPS will slow down the game's speed.||Made by getdls.
version = 4 version = 7

View File

@ -18,9 +18,10 @@
#endif #endif
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 4d96f8f88575bcab -- Used to blur out the main frame in various cutscenes // shader 4d96f8f88575bcab
// Used for: Blurs in various cutscenes
const float blurAmount = float($blurAmount);
float blur = $Blur;
#ifdef VULKAN #ifdef VULKAN
layout(set = 1, binding = 2) uniform ufBlock layout(set = 1, binding = 2) uniform ufBlock
@ -121,5 +122,5 @@ PV0i.w = floatBitsToInt(min(intBitsToFloat(PV1i.x), 1.0));
R0i.w = ((R127i.x == 0)?(PV0i.x):(PV0i.w)); R0i.w = ((R127i.x == 0)?(PV0i.x):(PV0i.w));
} }
// export // export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w) * blur ); passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)*blurAmount);
} }

View File

@ -0,0 +1,64 @@
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Cutscene Blur Amount
path = "Tokyo Mirage Sessions FE/Mods/Cutscene Blur"
description = Allows you to change the amount/strenght of the blur used in cutscenes.||Made by getdls.
version = 7
[Default]
$blurAmount = 1.0
[Preset]
category = Blur Amount
name = 100% (Default)
[Preset]
category = Blur Amount
name = 90%
$blurAmount = 0.9
[Preset]
category = Blur Amount
name = 80%
$blurAmount = 0.8
[Preset]
category = Blur Amount
name = 70%
$blurAmount = 0.7
[Preset]
category = Blur Amount
name = 60%
$blurAmount = 0.6
[Preset]
category = Blur Amount
name = 50%
$blurAmount = 0.5
[Preset]
category = Blur Amount
name = 40%
$blurAmount = 0.4
[Preset]
category = Blur Amount
name = 30%
$blurAmount = 0.3
[Preset]
category = Blur Amount
name = 20%
$blurAmount = 0.2
[Preset]
category = Blur Amount
name = 10%
$blurAmount = 0.1
[Preset]
category = Blur Amount
name = 0%
$blurAmount = 0.0