From e329d63186ae58a8a54165d70d7aec974d6192ed Mon Sep 17 00:00:00 2001 From: Crementif <26669564+Crementif@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:11:41 +0100 Subject: [PATCH] [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. --- .../04d0827b9471eb22_0000000000000000_vs.txt | 102 ---- Enhancements/TokyoMirage_!AARemoval/rules.txt | 6 - .../dda6656146476243_0000000000000000_vs.txt | 118 ----- .../TokyoMirage_!VideoPanNScan/rules.txt | 16 - Enhancements/TokyoMirage_AdjustBlur/rules.txt | 50 -- Enhancements/TokyoMirage_NegLod/rules.txt | 38 -- Mods/TokyoMirage_60FPS/patches.txt | 14 - .../TokyoMirage_Resolution/TMS_Readme.md | 27 - .../TokyoMirage_Resolution/patches.txt | 7 - Resolutions/TokyoMirage_Resolution/rules.txt | 479 ------------------ .../a7f4801a8d29e333_0000000000000079_ps.txt | 38 +- .../Enhancements/Contrasty}/rules.txt | 74 ++- .../Enhancements/LODBias/rules.txt | 102 ++++ .../04d0827b9471eb22_0000000000000000_vs.txt | 13 + .../201bd8dfd2a9e7d3_0000000000000000_vs.txt | 2 + .../23c5bbfda0fc3b0f_0000000000000000_vs.txt | 2 + .../3259d3b3ca333bf3_0000000000000000_vs.txt | 2 + .../39863f29c6d85cb8_0000000000000000_vs.txt | 2 + .../59fca914f0dcb060_0000000000000000_vs.txt | 2 + .../61b51be479ffa5dc_0000000000000000_vs.txt | 21 +- .../88ae6940d510eea5_0000000000000000_vs.txt | 2 + .../8cdd68cf2a074404_0000000000000000_vs.txt | 2 + .../94986f08df872394_0000000000000000_vs.txt | 19 +- .../aae570d2455724bc_0000000000000000_vs.txt | 19 +- .../b181218b85619285_0000000000000000_vs.txt | 6 +- .../dda6656146476243_0000000000000000_vs.txt | 26 +- .../Graphics/patch_AspectRatio.asm | 6 + src/TokyoMirage/Graphics/rules.txt | 394 ++++++++++++++ src/TokyoMirage/Mods/60FPS/patch_60FPS.asm | 14 + .../TokyoMirage/Mods/60FPS}/rules.txt | 6 +- .../4d96f8f88575bcab_00000000000003c9_ps.txt | 7 +- src/TokyoMirage/Mods/Cutscene Blur/rules.txt | 64 +++ 32 files changed, 753 insertions(+), 927 deletions(-) delete mode 100644 Enhancements/TokyoMirage_!AARemoval/04d0827b9471eb22_0000000000000000_vs.txt delete mode 100644 Enhancements/TokyoMirage_!AARemoval/rules.txt delete mode 100644 Enhancements/TokyoMirage_!VideoPanNScan/dda6656146476243_0000000000000000_vs.txt delete mode 100644 Enhancements/TokyoMirage_!VideoPanNScan/rules.txt delete mode 100644 Enhancements/TokyoMirage_AdjustBlur/rules.txt delete mode 100644 Enhancements/TokyoMirage_NegLod/rules.txt delete mode 100644 Mods/TokyoMirage_60FPS/patches.txt delete mode 100644 Resolutions/TokyoMirage_Resolution/TMS_Readme.md delete mode 100644 Resolutions/TokyoMirage_Resolution/patches.txt delete mode 100644 Resolutions/TokyoMirage_Resolution/rules.txt rename {Enhancements/TokyoMirage_Contrasty => src/TokyoMirage/Enhancements/Contrasty}/a7f4801a8d29e333_0000000000000079_ps.txt (98%) rename {Enhancements/TokyoMirage_Contrasty => src/TokyoMirage/Enhancements/Contrasty}/rules.txt (56%) create mode 100644 src/TokyoMirage/Enhancements/LODBias/rules.txt rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/04d0827b9471eb22_0000000000000000_vs.txt (93%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/201bd8dfd2a9e7d3_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/23c5bbfda0fc3b0f_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/3259d3b3ca333bf3_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/39863f29c6d85cb8_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/59fca914f0dcb060_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/61b51be479ffa5dc_0000000000000000_vs.txt (88%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/88ae6940d510eea5_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/8cdd68cf2a074404_0000000000000000_vs.txt (99%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/94986f08df872394_0000000000000000_vs.txt (92%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/aae570d2455724bc_0000000000000000_vs.txt (92%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/b181218b85619285_0000000000000000_vs.txt (97%) rename {Resolutions/TokyoMirage_Resolution => src/TokyoMirage/Graphics}/dda6656146476243_0000000000000000_vs.txt (83%) create mode 100644 src/TokyoMirage/Graphics/patch_AspectRatio.asm create mode 100644 src/TokyoMirage/Graphics/rules.txt create mode 100644 src/TokyoMirage/Mods/60FPS/patch_60FPS.asm rename {Mods/TokyoMirage_60FPS => src/TokyoMirage/Mods/60FPS}/rules.txt (52%) rename {Enhancements/TokyoMirage_AdjustBlur => src/TokyoMirage/Mods/Cutscene Blur}/4d96f8f88575bcab_00000000000003c9_ps.txt (96%) create mode 100644 src/TokyoMirage/Mods/Cutscene Blur/rules.txt diff --git a/Enhancements/TokyoMirage_!AARemoval/04d0827b9471eb22_0000000000000000_vs.txt b/Enhancements/TokyoMirage_!AARemoval/04d0827b9471eb22_0000000000000000_vs.txt deleted file mode 100644 index fdc37aaa..00000000 --- a/Enhancements/TokyoMirage_!AARemoval/04d0827b9471eb22_0000000000000000_vs.txt +++ /dev/null @@ -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); -} diff --git a/Enhancements/TokyoMirage_!AARemoval/rules.txt b/Enhancements/TokyoMirage_!AARemoval/rules.txt deleted file mode 100644 index 9b42908f..00000000 --- a/Enhancements/TokyoMirage_!AARemoval/rules.txt +++ /dev/null @@ -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 diff --git a/Enhancements/TokyoMirage_!VideoPanNScan/dda6656146476243_0000000000000000_vs.txt b/Enhancements/TokyoMirage_!VideoPanNScan/dda6656146476243_0000000000000000_vs.txt deleted file mode 100644 index 7b325db3..00000000 --- a/Enhancements/TokyoMirage_!VideoPanNScan/dda6656146476243_0000000000000000_vs.txt +++ /dev/null @@ -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); -} diff --git a/Enhancements/TokyoMirage_!VideoPanNScan/rules.txt b/Enhancements/TokyoMirage_!VideoPanNScan/rules.txt deleted file mode 100644 index 69b47a0e..00000000 --- a/Enhancements/TokyoMirage_!VideoPanNScan/rules.txt +++ /dev/null @@ -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 diff --git a/Enhancements/TokyoMirage_AdjustBlur/rules.txt b/Enhancements/TokyoMirage_AdjustBlur/rules.txt deleted file mode 100644 index e3124021..00000000 --- a/Enhancements/TokyoMirage_AdjustBlur/rules.txt +++ /dev/null @@ -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 diff --git a/Enhancements/TokyoMirage_NegLod/rules.txt b/Enhancements/TokyoMirage_NegLod/rules.txt deleted file mode 100644 index e4d3316f..00000000 --- a/Enhancements/TokyoMirage_NegLod/rules.txt +++ /dev/null @@ -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 diff --git a/Mods/TokyoMirage_60FPS/patches.txt b/Mods/TokyoMirage_60FPS/patches.txt deleted file mode 100644 index f3e08765..00000000 --- a/Mods/TokyoMirage_60FPS/patches.txt +++ /dev/null @@ -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 diff --git a/Resolutions/TokyoMirage_Resolution/TMS_Readme.md b/Resolutions/TokyoMirage_Resolution/TMS_Readme.md deleted file mode 100644 index 32a020cc..00000000 --- a/Resolutions/TokyoMirage_Resolution/TMS_Readme.md +++ /dev/null @@ -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 diff --git a/Resolutions/TokyoMirage_Resolution/patches.txt b/Resolutions/TokyoMirage_Resolution/patches.txt deleted file mode 100644 index 4ca8e508..00000000 --- a/Resolutions/TokyoMirage_Resolution/patches.txt +++ /dev/null @@ -1,7 +0,0 @@ - -[TMS_219_EUv16] -moduleMatches = 0x2249A57A - -0x10006C18 = .float $GameAspect -0x10014400 = .float $GameAspect -0x10067140 = .float $GameAspect diff --git a/Resolutions/TokyoMirage_Resolution/rules.txt b/Resolutions/TokyoMirage_Resolution/rules.txt deleted file mode 100644 index c79832bd..00000000 --- a/Resolutions/TokyoMirage_Resolution/rules.txt +++ /dev/null @@ -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 diff --git a/Enhancements/TokyoMirage_Contrasty/a7f4801a8d29e333_0000000000000079_ps.txt b/src/TokyoMirage/Enhancements/Contrasty/a7f4801a8d29e333_0000000000000079_ps.txt similarity index 98% rename from Enhancements/TokyoMirage_Contrasty/a7f4801a8d29e333_0000000000000079_ps.txt rename to src/TokyoMirage/Enhancements/Contrasty/a7f4801a8d29e333_0000000000000079_ps.txt index 842b6644..3fa611bf 100644 --- a/Enhancements/TokyoMirage_Contrasty/a7f4801a8d29e333_0000000000000079_ps.txt +++ b/src/TokyoMirage/Enhancements/Contrasty/a7f4801a8d29e333_0000000000000079_ps.txt @@ -20,6 +20,26 @@ // 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 layout(set = 1, binding = 1) uniform ufBlock { @@ -31,25 +51,7 @@ uniform ivec4 uf_remappedPS[3]; uniform vec2 uf_fragCoordScale; #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) { - return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5))); } diff --git a/Enhancements/TokyoMirage_Contrasty/rules.txt b/src/TokyoMirage/Enhancements/Contrasty/rules.txt similarity index 56% rename from Enhancements/TokyoMirage_Contrasty/rules.txt rename to src/TokyoMirage/Enhancements/Contrasty/rules.txt index 091aed2a..3afc608a 100644 --- a/Enhancements/TokyoMirage_Contrasty/rules.txt +++ b/src/TokyoMirage/Enhancements/Contrasty/rules.txt @@ -2,93 +2,119 @@ titleIds = 00050000101ED700,00050000101ED800,0005000010131D00 name = 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. -version = 4 +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 = 7 -[Preset] -name = Default +[Default] $redShadows = 1.0 $greenShadows = 1.0 -$blueSadows = 1.0 +$blueShadows = 1.0 $redMid = 1.0 $greenMid = 1.0 $blueMid = 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 +$gamma = 1.0 $exposure = 1.0 -$vibrance = 0.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 + +$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 = High Contrasty $redShadows = 1.0 $greenShadows = 1.0 -$blueSadows = 1.0 +$blueShadows = 1.0 $redMid = 0.98 $greenMid = 0.98 $blueMid = 0.9 $redHilight = 1.0 -$greenHilight =1.0 +$greenHilight = 1.0 $blueHilight = 1.0 $contrastCurve = 0.6 $hazeFactor = 0.25 $bloom = 0.85 -$gamma = 1.1 +$gamma = 1.1 $exposure = 1.05 -$vibrance = 0.25 -$crushContrast = 0.00 +$vibrance = 0.25 +$crushContrast = 0.0 $bleach = 0.85 $sharp_mix = 0.1 [Preset] -name = Colourful +category = Preset +name = Colorful $redShadows = 0.999 $greenShadows = 0.98 -$blueSadows = 0.98 +$blueShadows = 0.98 $redMid = 1.0 $greenMid = 0.99 $blueMid = 0.99 $redHilight = 1.0 -$greenHilight =0.99 +$greenHilight = 0.99 $blueHilight = 0.99 $contrastCurve = 0.15 $hazeFactor = 1.0 $bloom = 0.85 -$gamma = 1.05 +$gamma = 1.05 $exposure = 1.01 -$vibrance = 0.4 -$crushContrast = 0.00 +$vibrance = 0.4 +$crushContrast = 0.0 $bleach = 0.85 $sharp_mix = 0.1 [Preset] +category = Preset name = Neutral Contrasty $redShadows = 1.01 $greenShadows = 1.01 -$blueSadows = 1.01 +$blueShadows = 1.01 $redMid = 1.0 $greenMid = 1.0 $blueMid = 1.0 $redHilight = 0.99 -$greenHilight =0.99 +$greenHilight = 0.99 $blueHilight = 0.99 $contrastCurve = 0.30 $hazeFactor = 1.0 $bloom = 0.85 -$gamma = 1.075 +$gamma = 1.075 $exposure = 1.01 -$vibrance = 0.15 -$crushContrast = 0.00 +$vibrance = 0.15 +$crushContrast = 0.0 $bleach = 0.85 $sharp_mix = 0.1 diff --git a/src/TokyoMirage/Enhancements/LODBias/rules.txt b/src/TokyoMirage/Enhancements/LODBias/rules.txt new file mode 100644 index 00000000..1d89a388 --- /dev/null +++ b/src/TokyoMirage/Enhancements/LODBias/rules.txt @@ -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 diff --git a/Resolutions/TokyoMirage_Resolution/04d0827b9471eb22_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/04d0827b9471eb22_0000000000000000_vs.txt similarity index 93% rename from Resolutions/TokyoMirage_Resolution/04d0827b9471eb22_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/04d0827b9471eb22_0000000000000000_vs.txt index 6e23d7a5..2e12bd8b 100644 --- a/Resolutions/TokyoMirage_Resolution/04d0827b9471eb22_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/04d0827b9471eb22_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 04d0827b9471eb22 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { @@ -80,11 +82,22 @@ R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y) // 0 R3f.x = R2f.x; R3f.y = R2f.y; + +#if ($disableAntiAliasing == 0) PV0f.z = intBitsToFloat(uf_remappedVS[0].z) + 0.5; // 1 R127f.z = mul_nonIEEE(intBitsToFloat(uf_remappedVS[0].y) / resYScale, PV0f.z); PV1f.z = R127f.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 PV0f.x = R2f.y + PV1f.z; PV0f.y = R2f.x + PV1f.w; diff --git a/Resolutions/TokyoMirage_Resolution/201bd8dfd2a9e7d3_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/201bd8dfd2a9e7d3_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/201bd8dfd2a9e7d3_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/201bd8dfd2a9e7d3_0000000000000000_vs.txt index 9df34c6f..71bc9117 100644 --- a/Resolutions/TokyoMirage_Resolution/201bd8dfd2a9e7d3_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/201bd8dfd2a9e7d3_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 201bd8dfd2a9e7d3 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/23c5bbfda0fc3b0f_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/23c5bbfda0fc3b0f_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/23c5bbfda0fc3b0f_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/23c5bbfda0fc3b0f_0000000000000000_vs.txt index d3ea2d38..e5542933 100644 --- a/Resolutions/TokyoMirage_Resolution/23c5bbfda0fc3b0f_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/23c5bbfda0fc3b0f_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 23c5bbfda0fc3b0f const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/3259d3b3ca333bf3_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/3259d3b3ca333bf3_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/3259d3b3ca333bf3_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/3259d3b3ca333bf3_0000000000000000_vs.txt index 6ab83646..7d41c450 100644 --- a/Resolutions/TokyoMirage_Resolution/3259d3b3ca333bf3_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/3259d3b3ca333bf3_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 3259d3b3ca333bf3 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/39863f29c6d85cb8_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/39863f29c6d85cb8_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/39863f29c6d85cb8_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/39863f29c6d85cb8_0000000000000000_vs.txt index dec9d469..3785e329 100644 --- a/Resolutions/TokyoMirage_Resolution/39863f29c6d85cb8_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/39863f29c6d85cb8_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 39863f29c6d85cb8 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/59fca914f0dcb060_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/59fca914f0dcb060_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/59fca914f0dcb060_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/59fca914f0dcb060_0000000000000000_vs.txt index 79b983fe..6c4c0a66 100644 --- a/Resolutions/TokyoMirage_Resolution/59fca914f0dcb060_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/59fca914f0dcb060_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 59fca914f0dcb060 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/61b51be479ffa5dc_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/61b51be479ffa5dc_0000000000000000_vs.txt similarity index 88% rename from Resolutions/TokyoMirage_Resolution/61b51be479ffa5dc_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/61b51be479ffa5dc_0000000000000000_vs.txt index fa6d14fb..c7dd009d 100644 --- a/Resolutions/TokyoMirage_Resolution/61b51be479ffa5dc_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/61b51be479ffa5dc_0000000000000000_vs.txt @@ -19,9 +19,11 @@ // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // shader 61b51be479ffa5dc -//text aspect -const float UI = $UIAspectX; -const float UIY = $UIAspectY; +// Used for: Text Rendering +const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight)); +const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height)); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { @@ -126,8 +128,17 @@ PS0i = R4i.y; 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 -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 passParameterSem131 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w)); // export diff --git a/Resolutions/TokyoMirage_Resolution/88ae6940d510eea5_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/88ae6940d510eea5_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/88ae6940d510eea5_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/88ae6940d510eea5_0000000000000000_vs.txt index f48f46cb..b5315eb9 100644 --- a/Resolutions/TokyoMirage_Resolution/88ae6940d510eea5_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/88ae6940d510eea5_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 88ae6940d510eea5 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/8cdd68cf2a074404_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/8cdd68cf2a074404_0000000000000000_vs.txt similarity index 99% rename from Resolutions/TokyoMirage_Resolution/8cdd68cf2a074404_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/8cdd68cf2a074404_0000000000000000_vs.txt index 8b88abcf..055cc9c1 100644 --- a/Resolutions/TokyoMirage_Resolution/8cdd68cf2a074404_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/8cdd68cf2a074404_0000000000000000_vs.txt @@ -21,6 +21,8 @@ // shader 8cdd68cf2a074404 const float resXScale = float($width)/float($gameWidth); const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/94986f08df872394_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/94986f08df872394_0000000000000000_vs.txt similarity index 92% rename from Resolutions/TokyoMirage_Resolution/94986f08df872394_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/94986f08df872394_0000000000000000_vs.txt index e7c1f3cf..701173db 100644 --- a/Resolutions/TokyoMirage_Resolution/94986f08df872394_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/94986f08df872394_0000000000000000_vs.txt @@ -19,9 +19,10 @@ // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // shader 94986f08df872394 -//gui aspect -const float UI = $UIAspectX; -const float UIY = $UIAspectY; +// Used for: GUI Rendering +const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight)); +const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height)); + #ifdef VULKAN 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.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedVS[8].z)); 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 passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); // export diff --git a/Resolutions/TokyoMirage_Resolution/aae570d2455724bc_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/aae570d2455724bc_0000000000000000_vs.txt similarity index 92% rename from Resolutions/TokyoMirage_Resolution/aae570d2455724bc_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/aae570d2455724bc_0000000000000000_vs.txt index dc00c20b..92b2b7c8 100644 --- a/Resolutions/TokyoMirage_Resolution/aae570d2455724bc_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/aae570d2455724bc_0000000000000000_vs.txt @@ -19,9 +19,10 @@ // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // shader aae570d2455724bc -//BG fx -const float UI = $UIAspectX; -const float UIY = $UIAspectY; +// Used for: Background Effects +const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight)); +const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height)); + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { @@ -156,8 +157,16 @@ R3f.z = R126f.z; PS0f = R3f.z; // 9 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 passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); // export diff --git a/Resolutions/TokyoMirage_Resolution/b181218b85619285_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/b181218b85619285_0000000000000000_vs.txt similarity index 97% rename from Resolutions/TokyoMirage_Resolution/b181218b85619285_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/b181218b85619285_0000000000000000_vs.txt index 3c196b54..64271466 100644 --- a/Resolutions/TokyoMirage_Resolution/b181218b85619285_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/b181218b85619285_0000000000000000_vs.txt @@ -19,8 +19,10 @@ // This shader was automatically converted to be cross-compatible with Vulkan and OpenGL. // shader b181218b85619285 -const float resXScale = float($width)/float($gameWidth); -const float resYScale = float($height)/float($gameHeight); +const float resXScale = float($width)/float($gameWidth); +const float resYScale = float($height)/float($gameHeight); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { diff --git a/Resolutions/TokyoMirage_Resolution/dda6656146476243_0000000000000000_vs.txt b/src/TokyoMirage/Graphics/dda6656146476243_0000000000000000_vs.txt similarity index 83% rename from Resolutions/TokyoMirage_Resolution/dda6656146476243_0000000000000000_vs.txt rename to src/TokyoMirage/Graphics/dda6656146476243_0000000000000000_vs.txt index 7b325db3..7b23fdcc 100644 --- a/Resolutions/TokyoMirage_Resolution/dda6656146476243_0000000000000000_vs.txt +++ b/src/TokyoMirage/Graphics/dda6656146476243_0000000000000000_vs.txt @@ -19,9 +19,11 @@ // 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; +// Used for: Cutscene Videos +const float calcYScale = (float($width)/float($height))/(float($gameWidth)/float($gameHeight)); +const float calcXScale = (float($gameWidth)/float($gameHeight))/(float($width)/float($height)); + + #ifdef VULKAN layout(set = 0, binding = 0) uniform ufBlock { @@ -109,8 +111,22 @@ 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)); + + +#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 passParameterSem131 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); // export diff --git a/src/TokyoMirage/Graphics/patch_AspectRatio.asm b/src/TokyoMirage/Graphics/patch_AspectRatio.asm new file mode 100644 index 00000000..ac8cdeab --- /dev/null +++ b/src/TokyoMirage/Graphics/patch_AspectRatio.asm @@ -0,0 +1,6 @@ +[TMS_AspectRatio_v16] +moduleMatches = 0x2249A57A + +0x10006C18 = .float ($width/$height) +0x10014400 = .float ($width/$height) +0x10067140 = .float ($width/$height) diff --git a/src/TokyoMirage/Graphics/rules.txt b/src/TokyoMirage/Graphics/rules.txt new file mode 100644 index 00000000..5fd695bc --- /dev/null +++ b/src/TokyoMirage/Graphics/rules.txt @@ -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 diff --git a/src/TokyoMirage/Mods/60FPS/patch_60FPS.asm b/src/TokyoMirage/Mods/60FPS/patch_60FPS.asm new file mode 100644 index 00000000..28ae6dfc --- /dev/null +++ b/src/TokyoMirage/Mods/60FPS/patch_60FPS.asm @@ -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 diff --git a/Mods/TokyoMirage_60FPS/rules.txt b/src/TokyoMirage/Mods/60FPS/rules.txt similarity index 52% rename from Mods/TokyoMirage_60FPS/rules.txt rename to src/TokyoMirage/Mods/60FPS/rules.txt index 1945dcc8..aaf0263b 100644 --- a/Mods/TokyoMirage_60FPS/rules.txt +++ b/src/TokyoMirage/Mods/60FPS/rules.txt @@ -1,6 +1,6 @@ [Definition] titleIds = 00050000101ED700,00050000101ED800,0005000010131D00 name = 60FPS -path = "Tokyo Mirage Sessions FE/Mods/Static 60FPS" -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 +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. +version = 7 diff --git a/Enhancements/TokyoMirage_AdjustBlur/4d96f8f88575bcab_00000000000003c9_ps.txt b/src/TokyoMirage/Mods/Cutscene Blur/4d96f8f88575bcab_00000000000003c9_ps.txt similarity index 96% rename from Enhancements/TokyoMirage_AdjustBlur/4d96f8f88575bcab_00000000000003c9_ps.txt rename to src/TokyoMirage/Mods/Cutscene Blur/4d96f8f88575bcab_00000000000003c9_ps.txt index 90017306..165e1428 100644 --- a/Enhancements/TokyoMirage_AdjustBlur/4d96f8f88575bcab_00000000000003c9_ps.txt +++ b/src/TokyoMirage/Mods/Cutscene Blur/4d96f8f88575bcab_00000000000003c9_ps.txt @@ -18,9 +18,10 @@ #endif // 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 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)); } // 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); } diff --git a/src/TokyoMirage/Mods/Cutscene Blur/rules.txt b/src/TokyoMirage/Mods/Cutscene Blur/rules.txt new file mode 100644 index 00000000..db1a2234 --- /dev/null +++ b/src/TokyoMirage/Mods/Cutscene Blur/rules.txt @@ -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