From 4b51b5d34674dcbefa2e73f037902884f60714ea Mon Sep 17 00:00:00 2001 From: Alex Kiri Date: Sun, 28 Jan 2018 19:41:34 +0200 Subject: [PATCH 01/41] [MK8] Fixed bloom and simple DoF effect --- .../c673c0d44f779fc9_0000000000000000_vs.txt | 87 +++++++++++++++++++ Source/MarioKart8/rules.txt | 17 ++++ 2 files changed, 104 insertions(+) create mode 100644 Source/MarioKart8/c673c0d44f779fc9_0000000000000000_vs.txt diff --git a/Source/MarioKart8/c673c0d44f779fc9_0000000000000000_vs.txt b/Source/MarioKart8/c673c0d44f779fc9_0000000000000000_vs.txt new file mode 100644 index 00000000..39d3cc13 --- /dev/null +++ b/Source/MarioKart8/c673c0d44f779fc9_0000000000000000_vs.txt @@ -0,0 +1,87 @@ + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader c673c0d44f779fc9 +// one pass blur for simple dof effect +const float resXScale = ; +const float resYScale = ; + +uniform ivec4 uf_remappedVS[1]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 0) out vec4 passParameterSem3; +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); +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 = attrDataSem1.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 +backupReg0f = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = intBitsToFloat(0xbf800000); +R1f.w = 1.0; +PS0f = R2f.x + -(intBitsToFloat(uf_remappedVS[0].x) / resXScale); +// 1 +backupReg0f = R2f.y; +backupReg1f = R2f.x; +PV1f.x = R2f.y + -(intBitsToFloat(uf_remappedVS[0].y) / resYScale); +R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y) / resYScale; +R2f.z = PS0f; +R2f.x = backupReg1f + intBitsToFloat(uf_remappedVS[0].x) / resXScale; +PS1f = R2f.x; +// 2 +R2f.w = PV1f.x; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// 0 +} diff --git a/Source/MarioKart8/rules.txt b/Source/MarioKart8/rules.txt index 05f8af0b..6df73978 100644 --- a/Source/MarioKart8/rules.txt +++ b/Source/MarioKart8/rules.txt @@ -29,6 +29,7 @@ overwriteWidth = overwriteHeight = # Quarter Res Alpha (motion blur effect around edges of screen) +# also, bloom first mip [TextureRedefine] width = 320 height = 180 @@ -36,6 +37,22 @@ formatsExcluded = 0x41A # exclude obvious textures overwriteWidth = overwriteHeight = +# bloom 2nd mip +[TextureRedefine] +width = 160 +height = 90 +formatsExcluded = 0x41A # exclude obvious textures +overwriteWidth = +overwriteHeight = + +# bloom 3rd mip +[TextureRedefine] +width = 80 +height = 45 +formatsExcluded = 0x41A # exclude obvious textures +overwriteWidth = +overwriteHeight = + # Multiplayer-Mode Resolution (2p) [TextureRedefine] width = 640 From d4c4569d2372e77e994b3509740540774c089991 Mon Sep 17 00:00:00 2001 From: Alex Kiri Date: Sun, 28 Jan 2018 20:11:02 +0200 Subject: [PATCH 02/41] [MK8] Fixed bloom grid artifact (constant blur radius) --- .../2e78a0d0a0aa66bb_0000000000000000_vs.txt | 109 +++++++++++++++++ .../dd7a19be01b7b1aa_0000000000000000_vs.txt | 111 ++++++++++++++++++ .../f5274bda2b5e1e9f_0000000000000000_vs.txt | 99 ++++++++++++++++ 3 files changed, 319 insertions(+) create mode 100644 Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt create mode 100644 Source/MarioKart8/dd7a19be01b7b1aa_0000000000000000_vs.txt create mode 100644 Source/MarioKart8/f5274bda2b5e1e9f_0000000000000000_vs.txt diff --git a/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt b/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt new file mode 100644 index 00000000..56e06396 --- /dev/null +++ b/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt @@ -0,0 +1,109 @@ + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader 2e78a0d0a0aa66bb +// horizontal bloom blur texture coordinates +const float resXScale = ; +const float resYScale = ; + +uniform ivec4 uf_remappedVS[1]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 2) out vec4 passParameterSem2; +layout(location = 0) out vec4 passParameterSem0; +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +uvec4 attrDecoder; +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +attrDecoder.xyz = attrDataSem0.xyz; +attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24)); +attrDecoder.w = 0; +R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0))); +attrDecoder.xy = attrDataSem1.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 +backupReg0f = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = 0.0; +R1f.w = 1.0; +R127f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x3fb13a93) / scaleFactorX; +PS0f = R127f.y; +// 1 +PV1f.x = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x404ec4f0) / scaleFactorX; +R126f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x40a275f7) / scaleFactorX; +R3f.z = R2f.x + PS0f; +R3f.w = R2f.x; +R3f.x = R2f.y; +PS1f = R3f.x; +// 2 +R0f.x = PS1f; +R3f.y = R2f.x + -(R127f.y); +R0f.z = R2f.x + PV1f.x; +R0f.w = R2f.x; +R0f.y = R2f.x + -(PV1f.x); +PS0f = R0f.y; +// 3 +backupReg0f = R2f.x; +backupReg0f = R2f.x; +backupReg0f = R2f.x; +R2f.x = R3f.x; +R2f.y = backupReg0f + -(R126f.y); +R2f.z = backupReg0f + R126f.y; +R2f.w = backupReg0f; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem1 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +// export +passParameterSem2 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// export +passParameterSem0 = vec4(R3f.x, R3f.y, R3f.z, R3f.w); +// 0 +} diff --git a/Source/MarioKart8/dd7a19be01b7b1aa_0000000000000000_vs.txt b/Source/MarioKart8/dd7a19be01b7b1aa_0000000000000000_vs.txt new file mode 100644 index 00000000..06cba9da --- /dev/null +++ b/Source/MarioKart8/dd7a19be01b7b1aa_0000000000000000_vs.txt @@ -0,0 +1,111 @@ + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader dd7a19be01b7b1aa +// vertical bloom blur texture coordinates +const float resXScale = ; +const float resYScale = ; + +uniform ivec4 uf_remappedVS[1]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 0) out vec4 passParameterSem0; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 2) out vec4 passParameterSem2; +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R127f = vec4(0.0); +uvec4 attrDecoder; +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +attrDecoder.xyz = attrDataSem0.xyz; +attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24)); +attrDecoder.w = 0; +R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0))); +attrDecoder.xy = attrDataSem1.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 +backupReg0f = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = 0.0; +R1f.w = 1.0; +PS0f = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x3fb13a93) / resYScale; +// 1 +PV1f.x = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x404ec4f0) / resYScale; +R127f.y = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x40a275f7) / resYScale; +R2f.z = R2f.y + PS0f; +PV1f.z = R2f.z; +R2f.w = R2f.y; +PV1f.w = R2f.w; +R0f.y = R2f.y + -(PS0f); +PS1f = R0f.y; +// 2 +R0f.x = R2f.x; +R3f.y = R2f.y + -(PV1f.x); +R0f.z = PV1f.z; +R0f.w = PV1f.w; +R2f.z = R2f.y + PV1f.x; +PS0f = R2f.z; +// 3 +R3f.x = R2f.x; +R4f.y = R2f.y + -(R127f.y); +R3f.z = PS0f; +R3f.w = R2f.y; +R2f.z = R2f.y + R127f.y; +PS1f = R2f.z; +// 4 +R4f.xzw = vec3(R2f.x,PS1f,R2f.y); +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +// export +passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w); +// export +passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w); +// 0 +} diff --git a/Source/MarioKart8/f5274bda2b5e1e9f_0000000000000000_vs.txt b/Source/MarioKart8/f5274bda2b5e1e9f_0000000000000000_vs.txt new file mode 100644 index 00000000..d4d38372 --- /dev/null +++ b/Source/MarioKart8/f5274bda2b5e1e9f_0000000000000000_vs.txt @@ -0,0 +1,99 @@ + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader f5274bda2b5e1e9f +// bloom blur texture coordinates +const float resXScale = ; +const float resYScale = ; + +uniform ivec4 uf_remappedVS[1]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 2) out vec4 passParameterSem2; +layout(location = 0) out vec4 passParameterSem0; +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R127f = vec4(0.0); +uvec4 attrDecoder; +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +attrDecoder.xyz = attrDataSem0.xyz; +attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24)); +attrDecoder.w = 0; +R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0))); +attrDecoder.xy = attrDataSem1.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 +backupReg0f = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = 0.0; +R1f.w = 1.0; +R127f.x = R2f.y + intBitsToFloat(uf_remappedVS[0].w) / resYScale; +PS0f = R127f.x; +// 1 +R0f.x = R2f.x + intBitsToFloat(uf_remappedVS[0].z) / resXScale; +R0f.y = PS0f; +PV1f.z = R2f.y + -(intBitsToFloat(uf_remappedVS[0].w) / resYScale); +R4f.w = R2f.x; +R3f.x = R2f.x + -(intBitsToFloat(uf_remappedVS[0].z) / resXScale); +PS1f = R3f.x; +// 2 +R4f.x = R2f.y; +R3f.y = R127f.x; +R3f.z = PV1f.z; +R0f.w = PV1f.z; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem1 = vec4(R0f.x, R0f.y, R0f.x, R0f.w); +// export +passParameterSem2 = vec4(R3f.x, R3f.y, R3f.x, R3f.z); +// export +passParameterSem0 = vec4(R4f.w, R4f.x, R4f.z, R4f.z); +// 0 +} From d47f5a61723af54657debec5dc1004e2dab9c620 Mon Sep 17 00:00:00 2001 From: getdls Date: Sun, 28 Jan 2018 19:42:56 +0100 Subject: [PATCH 03/41] [MK8] Bloom fix --- .../a9bf96a840b38cc8_0000000000000000_vs.txt | 156 +++++++++ .../e02d25abb7529b7f_0000000000000000_vs.txt | 129 ++++++++ .../e8266ec81590ed24_0000000000000000_vs.txt | 130 ++++++++ Source/MarioKart8/rules.txt | 298 +++++++++++++++--- 4 files changed, 663 insertions(+), 50 deletions(-) create mode 100644 Source/MarioKart8/a9bf96a840b38cc8_0000000000000000_vs.txt create mode 100644 Source/MarioKart8/e02d25abb7529b7f_0000000000000000_vs.txt create mode 100644 Source/MarioKart8/e8266ec81590ed24_0000000000000000_vs.txt diff --git a/Source/MarioKart8/a9bf96a840b38cc8_0000000000000000_vs.txt b/Source/MarioKart8/a9bf96a840b38cc8_0000000000000000_vs.txt new file mode 100644 index 00000000..c0065aed --- /dev/null +++ b/Source/MarioKart8/a9bf96a840b38cc8_0000000000000000_vs.txt @@ -0,0 +1,156 @@ + + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader a9bf96a840b38cc8 +//Motion blur turbo +const float resScale = ; +uniform ivec4 uf_remappedVS[2]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 0) out vec4 passParameterSem0; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 2) out vec4 passParameterSem2; +layout(location = 3) out vec4 passParameterSem3; +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ + +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R123f = vec4(0.0); +vec4 R125f = vec4(0.0); +vec4 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +uvec4 attrDecoder; +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +attrDecoder.xyz = attrDataSem0.xyz; +attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24)); +attrDecoder.w = 0; +R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0))); +// 0 +R125f.x = mul_nonIEEE(R1f.x, intBitsToFloat(uf_remappedVS[0].x)); +PV0f.x = R125f.x; +R127f.y = intBitsToFloat(uf_remappedVS[1].w) * intBitsToFloat(0x3e124925)/resScale; +PV0f.y = R127f.y; +R1f.z = intBitsToFloat(uf_remappedVS[1].z); +R127f.w = mul_nonIEEE(R1f.y, intBitsToFloat(uf_remappedVS[0].y)); +PV0f.w = R127f.w; +R1f.w = 1.0; +PS0f = R1f.w; +// 1 +R126f.x = (intBitsToFloat(uf_remappedVS[1].y) * 0.5 + 0.5); +PV1f.x = R126f.x; +PV1f.y = PV0f.w; +PV1f.y *= 2.0; +PV1f.z = PV0f.x; +PV1f.z *= 2.0; +R123f.w = (mul_nonIEEE(PV0f.w,-(PV0f.y)) + PV0f.w); +PV1f.w = R123f.w; +R126f.y = (-(PV0f.y) * 2.0 + 1.0); +PS1f = R126f.y; +// 2 +R1f.x = PV1f.z + intBitsToFloat(uf_remappedVS[1].x); +R1f.y = PV1f.y + intBitsToFloat(uf_remappedVS[1].y); +R126f.z = (-(R127f.y) * intBitsToFloat(0x40400000) + 1.0); +PV0f.z = R126f.z; +PV0f.w = PV1f.x + PV1f.w; +R127f.x = (mul_nonIEEE(R127f.w,PS1f) + PV1f.x); +PS0f = R127f.x; +// 3 +R123f.x = (mul_nonIEEE(R127f.w,PV0f.z) + R126f.x); +PV1f.x = R123f.x; +R125f.y = (intBitsToFloat(uf_remappedVS[1].x) * 0.5 + 0.5); +PV1f.y = R125f.y; +R123f.z = (mul_nonIEEE(R125f.x,-(R127f.y)) + R125f.x); +PV1f.z = R123f.z; +R126f.w = (-(R127f.y) * 4.0 + 1.0); +PV1f.w = R126f.w; +R127f.z = PV0f.w; +PS1f = R127f.z; +// 4 +backupReg0f = R127f.w; +PV0f.x = PV1f.x; +R127f.y = (mul_nonIEEE(R127f.w,PV1f.w) + R126f.x); +PV0f.z = R127f.x; +R127f.w = backupReg0f + R126f.x; +R2f.x = PV1f.y + PV1f.z; +PS0f = R2f.x; +// 5 +backupReg0f = R126f.z; +R3f.x = (mul_nonIEEE(R125f.x,R126f.y) + R125f.y); +R126f.y = -(PV0f.z) + 1.0; +R126f.z = -(PV0f.x) + 1.0; +R125f.w = -(R127f.z) + 1.0; +PV1f.w = R125f.w; +R4f.x = (mul_nonIEEE(R125f.x,backupReg0f) + R125f.y); +PS1f = R4f.x; +// 6 +backupReg0f = R125f.x; +backupReg0f = R125f.x; +R125f.x = R127f.y; +R0f.y = -(R127f.w) + 1.0; +R127f.z = (mul_nonIEEE(backupReg0f,R126f.w) + R125f.y); +R0f.w = PV1f.w; +R0f.x = backupReg0f + R125f.y; +PS0f = R0f.x; +// 7 +R2f.y = R125f.w; +R0f.z = R2f.x; +R2f.w = R126f.y; +R2f.z = R3f.x; +PS1f = R2f.z; +// 8 +R3f.yzw = vec3(R126f.y,R4f.x,R126f.z); +R4f.z = R127f.z; +PS0f = R4f.z; +// 9 +R4f.y = R126f.z; +R4f.w = -(R125f.x) + 1.0; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +// export +passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// export +passParameterSem2 = vec4(R3f.x, R3f.y, R3f.z, R3f.w); +// export +passParameterSem3 = vec4(R4f.x, R4f.y, R4f.z, R4f.w); +// 0 +} diff --git a/Source/MarioKart8/e02d25abb7529b7f_0000000000000000_vs.txt b/Source/MarioKart8/e02d25abb7529b7f_0000000000000000_vs.txt new file mode 100644 index 00000000..c704f799 --- /dev/null +++ b/Source/MarioKart8/e02d25abb7529b7f_0000000000000000_vs.txt @@ -0,0 +1,129 @@ + + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader e02d25abb7529b7f +//BFA +const float resScale = ; +uniform ivec4 uf_remappedVS[5]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 0) out vec4 passParameterSem0; +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 R125f = vec4(0.0); +vec4 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +uvec4 attrDecoder; +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +attrDecoder.xyz = attrDataSem0.xyz; +attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24)); +attrDecoder.w = 0; +R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0))); +// 0 +R126f.x = (R1f.x > 0.0)?1.0:0.0; +R126f.x /= 2.0; +R127f.y = -(R1f.y); +PV0f.y = R127f.y; +R127f.z = (0.0 > R1f.x)?1.0:0.0; +R127f.z /= 2.0; +R127f.w = 1.0; +PV0f.w = R127f.w; +R125f.x = intBitsToFloat(uf_remappedVS[0].w) * intBitsToFloat(0x3fb13a93)/resScale; +PS0f = R125f.x; +// 1 +R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w))); +PV1f.x = R0f.x; +PV1f.y = R0f.x; +PV1f.z = R0f.x; +PV1f.w = R0f.x; +R127f.x = (PV0f.y > 0.0)?1.0:0.0; +R127f.x /= 2.0; +PS1f = R127f.x; +// 2 +tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.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.y = tempf.x; +PS0f = (0.0 > R127f.y)?1.0:0.0; +PS0f /= 2.0; +// 3 +tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.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.z = tempf.x; +R126f.z = R127f.x + -(PS0f); +PS1f = R126f.z; +// 4 +tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z),intBitsToFloat(uf_remappedVS[4].w))); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +R0f.w = tempf.x; +PS0f = R126f.x + -(R127f.z); +// 5 +R126f.x = intBitsToFloat(uf_remappedVS[0].w) * intBitsToFloat(0x404ec4f0)/resScale; +PV1f.x = R126f.x; +R127f.y = R126f.z + 0.5; +PV1f.y = R127f.y; +R2f.x = PS0f + 0.5; +PS1f = R2f.x; +// 6 +R1f.x = PS1f; +R2f.y = PV1f.y + -(R125f.x); +R2f.z = PV1f.y + R125f.x; +R2f.w = PV1f.y; +R1f.y = PV1f.y + -(PV1f.x); +PS0f = R1f.y; +// 7 +R1f.z = R127f.y + R126f.x; +R1f.w = R127f.y; +// export +gl_Position = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +// export +passParameterSem1 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// 0 +} diff --git a/Source/MarioKart8/e8266ec81590ed24_0000000000000000_vs.txt b/Source/MarioKart8/e8266ec81590ed24_0000000000000000_vs.txt new file mode 100644 index 00000000..fe0564e9 --- /dev/null +++ b/Source/MarioKart8/e8266ec81590ed24_0000000000000000_vs.txt @@ -0,0 +1,130 @@ + + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader e8266ec81590ed24 +//BFb2 +const float resScale = ; +uniform ivec4 uf_remappedVS[5]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 0) out vec4 passParameterSem0; +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 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +uvec4 attrDecoder; +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +attrDecoder.xyz = attrDataSem0.xyz; +attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24)); +attrDecoder.w = 0; +R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0))); +// 0 +R127f.x = (0.0 > R1f.x)?1.0:0.0; +R127f.x /= 2.0; +R127f.y = (R1f.x > 0.0)?1.0:0.0; +R127f.y /= 2.0; +R127f.z = -(R1f.y); +PV0f.z = R127f.z; +R127f.w = 1.0; +PV0f.w = R127f.w; +R126f.y = intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3fb13a93)/resScale; +PS0f = R126f.y; +// 1 +R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w))); +PV1f.x = R0f.x; +PV1f.y = R0f.x; +PV1f.z = R0f.x; +PV1f.w = R0f.x; +R126f.w = (PV0f.z > 0.0)?1.0:0.0; +R126f.w /= 2.0; +PS1f = R126f.w; +// 2 +backupReg0f = R127f.z; +tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.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.y = tempf.x; +R127f.z = (0.0 > backupReg0f)?1.0:0.0; +R127f.z /= 2.0; +PS0f = R127f.z; +// 3 +backupReg0f = R127f.y; +tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.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.z = tempf.x; +R127f.y = backupReg0f + -(R127f.x); +PS1f = R127f.y; +// 4 +tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z),intBitsToFloat(uf_remappedVS[4].w))); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +R0f.w = tempf.x; +PS0f = R126f.w + -(R127f.z); +// 5 +R127f.x = intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x404ec4f0)/resScale; +PV1f.z = PS0f + 0.5; +R127f.w = R127f.y + 0.5; +PV1f.w = R127f.w; +// 6 +R2f.x = PV1f.z; +PV0f.x = R2f.x; +R2f.y = PV1f.w + -(R126f.y); +R2f.z = PV1f.w + R126f.y; +R2f.w = PV1f.w; +// 7 +R1f.x = PV0f.x; +R1f.y = R127f.w + -(R127f.x); +R1f.z = R127f.w + R127f.x; +R1f.w = R127f.w; +// export +gl_Position = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +// export +passParameterSem1 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// 0 +} diff --git a/Source/MarioKart8/rules.txt b/Source/MarioKart8/rules.txt index 6df73978..4fd752da 100644 --- a/Source/MarioKart8/rules.txt +++ b/Source/MarioKart8/rules.txt @@ -12,71 +12,277 @@ titleIds = 000500001010EC00,000500001010ED00,000500001010EB00 name = "Mario Kart 8 - " version = 2 -# Main Screen Resolution +##don't scale any compressed format +#[TextureRedefine] #Mshadow check +#width = 2048 +#height = 2048 +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #depth?? +#width = 1536 +#height = 1536 +#formatsExcluded = 0x01a +#overwriteWidth = +#overwriteHeight = + [TextureRedefine] width = 1280 height = 720 -formatsExcluded = 0x41A,0x431 # exclude the intro background texture, race end background +formatsExcluded = 0x41A,0x431 # exclude the intro background texture, race end background overwriteWidth = overwriteHeight = -# Half Res Alpha (and DOF) -[TextureRedefine] -width = 640 -height = 360 -formatsExcluded = 0x41A # exclude obvious textures -overwriteWidth = -overwriteHeight = +[TextureRedefine] #MShadows +width = 1024 +height = 1024 +formats = 0x005 #shadows 2 lod slices +overwriteWidth = +overwriteHeight = -# Quarter Res Alpha (motion blur effect around edges of screen) -# also, bloom first mip -[TextureRedefine] -width = 320 -height = 180 -formatsExcluded = 0x41A # exclude obvious textures -overwriteWidth = -overwriteHeight = +#[TextureRedefine] ##gloss, reflections, don't scale +#width = 768 +#width = 768 -# bloom 2nd mip -[TextureRedefine] -width = 160 -height = 90 -formatsExcluded = 0x41A # exclude obvious textures -overwriteWidth = -overwriteHeight = - -# bloom 3rd mip -[TextureRedefine] -width = 80 -height = 45 -formatsExcluded = 0x41A # exclude obvious textures -overwriteWidth = -overwriteHeight = - -# Multiplayer-Mode Resolution (2p) -[TextureRedefine] +[TextureRedefine] # Multiplayer-Mode Resolution (2p) width = 640 height = 720 -formatsExcluded = 0x41A # exclude obvious textures overwriteWidth = overwriteHeight = -# Multiplayer-Mode Half Res Alpha (2p) [TextureRedefine] +width = 640 +height = 360 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 640 +height = 320 +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #selection fmv don't scale +#width = 512 +#height = 608 +#formatsExcluded = 0x001 #selection fmt + +#[TextureRedefine] #shadows multiplayer? +#width = 512 +#height = 512 +#formats = 0x005 # verify later +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 427 +height = 240 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #4P? width = 320 height = 360 -formatsExcluded = 0x41A # exclude obvious textures overwriteWidth = -overwriteHeight = +overwriteHeight = + +[TextureRedefine] #Dof,Bloom 0x816 +width = 320 +height = 180 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] # +width = 256 +height = 256 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 # +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 199 +height = 116 +#formatsExcluded = +overwriteWidth = +overwriteHeight = -# Multiplayer-Mode Quarter Res Alpha (2p) [TextureRedefine] width = 160 height = 180 -formatsExcluded = 0x41A # exclude obvious textures +#formatsExcluded = overwriteWidth = overwriteHeight = +[TextureRedefine] #Dof,Bloom 1p 0x816 +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 80 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] # +width = 148 +height = 148 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 133 +height = 77 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 128 +height = 256 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 128 +#height = 128 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 80 +height = 90 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] # bloom +width = 80 +height = 45 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 40 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 64 +height = 128 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] # glossmap breaks x64 cube? +#width = 64 +#height = 64 + + +#[TextureRedefine] #check later +#width = 52 +#height = 52 +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +#overwriteWidth = 156 +#overwriteHeight = 156 + +[TextureRedefine] +width = 49 +height = 29 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 40 +height = 45 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #bloom +width = 40 +height = 22 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 40 +height = 20 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 33 +height = 19 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 32 +height = 64 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 32 +#height = 32 +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x816,0x01a #0x816 exclude cube +#overwriteWidth = 96 +#overwriteHeight = 96 + +[TextureRedefine] +width = 20 +height = 22 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + + +[TextureRedefine] +width = 20 +height = 10 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +verwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 16 +height = 32 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 16 +#height = 16 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 8 +height = 16 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a +overwriteWidth = +overwriteHeight = + +###MKTV### # MKTV screen [TextureRedefine] width = 960 @@ -107,12 +313,4 @@ width = 240 height = 134 formatsExcluded = 0x41A # exclude obvious textures overwriteWidth = -overwriteHeight = - -# Multiplayer kart preview -[TextureRedefine] -width = 640 -height = 320 -formatsExcluded = 0x41A # exclude obvious textures -overwriteWidth = -overwriteHeight = +overwriteHeight = \ No newline at end of file From 06f132a66e8dc181ad4d79000ad855cff2fda5fc Mon Sep 17 00:00:00 2001 From: getdls Date: Sun, 28 Jan 2018 20:38:50 +0100 Subject: [PATCH 04/41] [MK8] Buildfix ongoing... --- Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt b/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt index 56e06396..8cd97aa5 100644 --- a/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt +++ b/Source/MarioKart8/2e78a0d0a0aa66bb_0000000000000000_vs.txt @@ -73,11 +73,11 @@ R1f.y = backupReg1f; R1f.y *= 2.0; R1f.z = 0.0; R1f.w = 1.0; -R127f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x3fb13a93) / scaleFactorX; +R127f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x3fb13a93) / resYScale; PS0f = R127f.y; // 1 -PV1f.x = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x404ec4f0) / scaleFactorX; -R126f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x40a275f7) / scaleFactorX; +PV1f.x = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x404ec4f0) / resXScale; +R126f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x40a275f7) / resYScale; R3f.z = R2f.x + PS0f; R3f.w = R2f.x; R3f.x = R2f.y; From f7bf9e451b74ab63108d51467d9fbe2e590e7702 Mon Sep 17 00:00:00 2001 From: getdls Date: Sun, 28 Jan 2018 21:29:12 +0100 Subject: [PATCH 05/41] [MK8] Build fix OK - Kiri comments added --- Source/MarioKart8/rules.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Source/MarioKart8/rules.txt b/Source/MarioKart8/rules.txt index 4fd752da..82a7d3dd 100644 --- a/Source/MarioKart8/rules.txt +++ b/Source/MarioKart8/rules.txt @@ -12,8 +12,8 @@ titleIds = 000500001010EC00,000500001010ED00,000500001010EB00 name = "Mario Kart 8 - " version = 2 -##don't scale any compressed format -#[TextureRedefine] #Mshadow check + +#[TextureRedefine] # #width = 2048 #height = 2048 #overwriteWidth = @@ -86,7 +86,7 @@ height = 360 overwriteWidth = overwriteHeight = -[TextureRedefine] #Dof,Bloom 0x816 +[TextureRedefine] # Bloom first mip, motion blur effect width = 320 height = 180 overwriteWidth = @@ -113,7 +113,7 @@ height = 180 overwriteWidth = overwriteHeight = -[TextureRedefine] #Dof,Bloom 1p 0x816 +[TextureRedefine] #bloom 2nd mip width = 160 height = 90 #formatsExcluded = @@ -163,7 +163,7 @@ formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a overwriteWidth = overwriteHeight = -[TextureRedefine] # bloom +[TextureRedefine] # bloom 3rd mip width = 80 height = 45 formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a @@ -184,7 +184,7 @@ formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a overwriteWidth = overwriteHeight = -#[TextureRedefine] # glossmap breaks x64 cube? +#[TextureRedefine] # glossmap breaks 64 cube? #width = 64 #height = 64 @@ -238,7 +238,7 @@ formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a overwriteWidth = overwriteHeight = -#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#[TextureRedefine] # #width = 32 #height = 32 #formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x816,0x01a #0x816 exclude cube @@ -268,7 +268,7 @@ overwriteWidth = overwriteHeight = -#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#[TextureRedefine] #M #width = 16 #height = 16 #formatsExcluded = From 27509643796ae3916733a59e55ed8dc150af108f Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 28 Jan 2018 18:58:29 -0800 Subject: [PATCH 06/41] ll --- Modifications/Splatoon_MapSwap/patches.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modifications/Splatoon_MapSwap/patches.txt b/Modifications/Splatoon_MapSwap/patches.txt index c9151651..a25bf581 100644 --- a/Modifications/Splatoon_MapSwap/patches.txt +++ b/Modifications/Splatoon_MapSwap/patches.txt @@ -64,12 +64,12 @@ moduleMatches = 0xF7A78809 #Fld_Warehouse00_Dul #Walleye Warehouse [Dojo] #Fld_SeaPlant00_Dul #Saltspray Rig [Dojo] #Fld_UpDown00_Dul #Arowana Mall [Dojo] -#Fld_SkatePark00_Dul #Blackberry Skatepark [Dojo] +#Fld_SkatePark00_Dul #Blackbelly Skatepark [Dojo] #Fld_Crank00_Vss #Urchin Underpass #Fld_Warehouse00_Vss #Walleye Warehouse #Fld_SeaPlant00_Vss #Saltspray Rig #Fld_UpDown00_Vss #Arowana Mall -#Fld_SkatePark00_Vss #Blackberry Skatepark +#Fld_SkatePark00_Vss #Blackbelly Skatepark #Fld_Athletic00_Vss #Camp Triggerfish #Fld_Amida00_Vss #Port Mackerel #Fld_Maze00_Vss #Kelp Dome @@ -80,4 +80,4 @@ moduleMatches = 0xF7A78809 #Fld_Jyoheki00_Vss #Flounder Heights #Fld_Pivot00_Vss #Museum d'Alfonsino #Fld_Hiagari00_Vss #Mahi-Mahi Resort -#Fld_Kaisou00_Vss #Hammerhead Bridge \ No newline at end of file +#Fld_Kaisou00_Vss #Hammerhead Bridge From e193c4838d6352f9ff5598768c1f266e83b0b41d Mon Sep 17 00:00:00 2001 From: getdls Date: Mon, 29 Jan 2018 08:25:40 +0100 Subject: [PATCH 07/41] [SMM] - Removing CRT, not good enough. Let's not encourage lazy commits.. If I ever get around to fixing issues, I'll re-add CRT MK8 -> clarification --- .../d2a97b2fb99411a5_0000000000000079_ps.txt | 282 ------------------ Enhancement/SuperMarioMaker_CRT/rules.txt | 5 - Source/MarioKart8/rules.txt | 6 +- 3 files changed, 2 insertions(+), 291 deletions(-) delete mode 100644 Enhancement/SuperMarioMaker_CRT/d2a97b2fb99411a5_0000000000000079_ps.txt delete mode 100644 Enhancement/SuperMarioMaker_CRT/rules.txt diff --git a/Enhancement/SuperMarioMaker_CRT/d2a97b2fb99411a5_0000000000000079_ps.txt b/Enhancement/SuperMarioMaker_CRT/d2a97b2fb99411a5_0000000000000079_ps.txt deleted file mode 100644 index 2bf8b0d4..00000000 --- a/Enhancement/SuperMarioMaker_CRT/d2a97b2fb99411a5_0000000000000079_ps.txt +++ /dev/null @@ -1,282 +0,0 @@ -#version 420 -#extension GL_ARB_texture_gather : enable -#extension GL_ARB_separate_shader_objects : enable -// shader d2a97b2fb99411a5 -// CRT filter - Just for fun, probably won't be fixing any issues.. - - -layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4481800 res 768x384x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1 -layout(location = 0) in vec4 passParameterSem0; -layout(location = 0) out vec4 passPixelColor0; -uniform vec2 uf_fragCoordScale; -// -// PUBLIC DOMAIN CRT STYLED SCAN-LINE SHADER -// -// by Timothy Lottes -// -// This is more along the style of a really good CGA arcade monitor. -// With RGB inputs instead of NTSC. -// The shadow mask example has the mask rotated 90 degrees for less chromatic aberration. -// -// Left it unoptimized to show the theory behind the algorithm. -// -// It is an example what I personally would want as a display option for pixel art games. -// Please take and use, change, or whatever. -// -//old contrasty, or just copy paste clarity -const float gamma = 0.95; // 1.0 is neutral -const float exposure = 1.2; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. -const float vibrance = 0.175; // 0.0 is neutral -const float crushContrast = 0.01; // 0.0 is neutral. loss of shadow detail -//const float postExposure = 1.16; // 1.0 is neutral, then slightly raise exposure back up. - -vec3 contrasty(vec3 colour) { - vec3 fColour = (colour.xyz); - - fColour = clamp(exposure * fColour, 0.0, 1.0); - fColour = pow(fColour, vec3(1.0 / gamma)); - float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; - float mn = min(min(fColour.r, fColour.g), fColour.b); - float mx = max(max(fColour.r, fColour.g), fColour.b); - float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; - vec3 lightness = vec3((mn + mx) / 2.0); - // vibrance - fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); - fColour = max(vec3(0.0), fColour - vec3(crushContrast)); - return fColour; -} -#define RGBA(r, g, b, a) vec4(float(r)/255.0, float(g)/255.0, float(b)/255.0, float(a)/255.0) - -const vec3 kBackgroundColor = RGBA(0x00, 0x60, 0xb8, 0xff).rgb; // medium-blue sky -//const vec3 kBackgroundColor = RGBA(0xff, 0x00, 0xff, 0xff).rgb; // test magenta -//const vec3 kBackgroundColor = RGBA(0x50, 0x50, 0x50, 0xff).rgb; - // Emulated input resolution. -#if 1 - // Fix resolution to set amount. - //768x384x1 // Note: 256x224 is the most common resolution of the SNES, and that of Super Mario World. -vec2 res = vec2( - textureSize(textureUnitPS0, 0).x / 1.0, - textureSize(textureUnitPS0, 0).y / 2.0 -); -#else - // Optimize for resize. -vec2 res = textureSize(textureUnitPS0, 0) / 6.0; -#endif - -// Hardness of scanline. -// -8.0 = soft -// -16.0 = medium -float sHardScan = -8.0; - -// Hardness of pixels in scanline. -// -2.0 = soft -// -4.0 = hard -const float kHardPix = -2.0; - -// Display warp. -// 0.0 = none -// 1.0 / 8.0 = extreme -const vec2 kWarp = vec2(1.0 / 64.0, 1.0 / 48.0); -//const vec2 kWarp = vec2(0); - -// Amount of shadow mask. -float kMaskDark = 2.0; -float kMaskLight = 0.5; - -//------------------------------------------------------------------------ -/* -// sRGB to Linear. -// Assuing using sRGB typed textures this should not be needed. -float toLinear1(float c) { - return (c <= 0.04045) ? - (c / 12.92) : - pow((c + 0.055) / 1.055, 2.4); -} -vec3 toLinear(vec3 c) { - return vec3(toLinear1(c.r), toLinear1(c.g), toLinear1(c.b)); -} - -// Linear to sRGB. -// Assuing using sRGB typed textures this should not be needed. -float toSrgb1(float c) { - return(c < 0.0031308 ? - (c * 12.92) : - (1.055 * pow(c, 0.41666) - 0.055)); -} -vec3 toSrgb(vec3 c) { - return vec3(toSrgb1(c.r), toSrgb1(c.g), toSrgb1(c.b)); -} -*/ -// Nearest emulated sample given floating point position and texel offset. -// Also zero's off screen. -vec4 fetch(vec2 pos, vec2 off) -{ - pos = floor(pos * res + off) / res; - if (max(abs(pos.x - 0.5), abs(pos.y - 0.5)) > 0.5) - return vec4(vec3(0.0), 0.0); - - //vec4 sampledColor = texture(textureUnitPS0, pos.xy, -16.0); - vec4 sampledColor = texture(textureUnitPS0, pos.xy,0); - sampledColor = vec4( - (sampledColor.rgb * sampledColor.a) + - (kBackgroundColor * (1.0 - sampledColor.a)), - 1.0 - ); - - return vec4( - //toLinear(sampledColor.rgb), - //sampledColor.a - sampledColor.rgba - ); -} - -// Distance in emulated pixels to nearest texel. -vec2 dist(vec2 pos) { - pos = pos * res; - return -((pos - floor(pos)) - vec2(0.5)); -} - -// 1D Gaussian. -float gaus(float pos, float scale) { - return exp2(scale * pos * pos); -} - -// 3-tap Gaussian filter along horz line. -vec3 horz3(vec2 pos, float off) -{ - vec3 b = fetch(pos, vec2(-1.0, off)).rgb; - vec3 c = fetch(pos, vec2(0.0, off)).rgb; - vec3 d = fetch(pos, vec2(+1.0, off)).rgb; - float dst = dist(pos).x; - // Convert distance to weight. - float scale = kHardPix; - float wb = gaus(dst - 1.0, scale); - float wc = gaus(dst + 0.0, scale); - float wd = gaus(dst + 1.0, scale); - // Return filtered sample. - return (b * wb + c * wc + d * wd) / (wb + wc + wd); -} - -// 5-tap Gaussian filter along horz line. -vec3 horz5(vec2 pos, float off) -{ - vec3 a = fetch(pos, vec2(-2.0, off)).rgb; - vec3 b = fetch(pos, vec2(-1.0, off)).rgb; - vec3 c = fetch(pos, vec2(0.0, off)).rgb; - vec3 d = fetch(pos, vec2(+1.0, off)).rgb; - vec3 e = fetch(pos, vec2(+2.0, off)).rgb; - float dst = dist(pos).x; - // Convert distance to weight. - float scale = kHardPix; - float wa = gaus(dst - 2.0, scale); - float wb = gaus(dst - 1.0, scale); - float wc = gaus(dst + 0.0, scale); - float wd = gaus(dst + 1.0, scale); - float we = gaus(dst + 2.0, scale); - // Return filtered sample. - return (a * wa + b * wb + c * wc + d * wd + e * we) / (wa + wb + wc + wd + we); -} - -// Return scanline weight. -float scan(vec2 pos, float off) { - float dst = dist(pos).y; - return gaus(dst + off, sHardScan); -} - -// Allow nearest three lines to effect pixel. -vec3 tri(vec2 pos) -{ - vec3 a = horz3(pos, -1.0); - vec3 b = horz5(pos, 0.0); - vec3 c = horz3(pos, +1.0); - float wa = scan(pos, -1.0); - float wb = scan(pos, 0.0); - float wc = scan(pos, +1.0); - return a * wa + b * wb + c * wc; -} - -// Distortion of scanlines, and end of screen alpha. -vec2 warp(vec2 pos) -{ - pos = pos * 2.0 - 1.0; - pos *= vec2( - 1.0 + (pos.y * pos.y) * kWarp.x, - 1.0 + (pos.x * pos.x) * kWarp.y - ); - return pos * 0.5 + 0.5; -} - -// Shadow mask. -vec3 mask(vec2 pos) -{ - pos.x += pos.y * 3.0; - vec3 mask = vec3(kMaskDark, kMaskDark, kMaskDark); - pos.x = fract(pos.x / 6.0); - if (pos.x < 0.333) - mask.r = kMaskLight; - else if (pos.x < 0.666) - mask.g = kMaskLight; - else - mask.b = kMaskLight; - return mask; -} - -// Draw dividing bars. -float bar(float pos, float bar) { - pos -= bar; - return (pos * pos < 4.0) ? 0.0 : 1.0; -} - -float rand(vec2 co) { - return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453); -} -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); -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 = passParameterSem0; -//R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw); -// export -//passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); - -vec2 pos = warp(gl_FragCoord.xy / textureSize(textureUnitPS0, 0));//iResolution.xy); -vec4 unmodifiedColor = fetch(pos, vec2(0)); - -// Unmodified. -if (passPixelColor0.x > textureSize(textureUnitPS0, 0).x * 0.333) -{ - passPixelColor0.rgb = contrasty(unmodifiedColor.rgb); -} -else -{ - if (passPixelColor0.x > textureSize(textureUnitPS0, 0).x * 0.666) { - sHardScan = -12.0; - kMaskDark = kMaskLight = 1.0; - } - passPixelColor0.rgb = tri(pos) * mask(gl_FragCoord.xy); -} -//passPixelColor0.rgb *= bar(gl_FragCoord.x, textureSize(textureUnitPS0, 0).x * 0.333) * bar(gl_FragCoord.x, textureSize(textureUnitPS0, 0).x * 0.666); -//passPixelColor0 = vec4( - //toSrgb(passPixelColor0.rgb), - //1.0 -//); -passPixelColor0 = vec4(passPixelColor0.rgb, 1.0); -} diff --git a/Enhancement/SuperMarioMaker_CRT/rules.txt b/Enhancement/SuperMarioMaker_CRT/rules.txt deleted file mode 100644 index 6d742423..00000000 --- a/Enhancement/SuperMarioMaker_CRT/rules.txt +++ /dev/null @@ -1,5 +0,0 @@ - -[Definition] -titleIds = 000500001018DB00,000500001018DC00,000500001018DD00 -name = "Super Mario Maker - CRT filter" -version = 2 \ No newline at end of file diff --git a/Source/MarioKart8/rules.txt b/Source/MarioKart8/rules.txt index 82a7d3dd..44f9375b 100644 --- a/Source/MarioKart8/rules.txt +++ b/Source/MarioKart8/rules.txt @@ -19,12 +19,10 @@ version = 2 #overwriteWidth = #overwriteHeight = -#[TextureRedefine] #depth?? +#[TextureRedefine] #selection screen shadows #width = 1536 #height = 1536 -#formatsExcluded = 0x01a -#overwriteWidth = -#overwriteHeight = + [TextureRedefine] width = 1280 From 219799c586397757db9ad1a358230c75a27108d2 Mon Sep 17 00:00:00 2001 From: getdls Date: Mon, 29 Jan 2018 23:01:53 +0100 Subject: [PATCH 08/41] [MK8] Fix texture corruption MKTV, Turbo pads etc 0x431 excluded --- Source/MarioKart8/rules.txt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Source/MarioKart8/rules.txt b/Source/MarioKart8/rules.txt index 44f9375b..4bf292cf 100644 --- a/Source/MarioKart8/rules.txt +++ b/Source/MarioKart8/rules.txt @@ -75,18 +75,21 @@ overwriteHeight = [TextureRedefine] width = 427 height = 240 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = [TextureRedefine] #4P? width = 320 height = 360 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = [TextureRedefine] # Bloom first mip, motion blur effect width = 320 height = 180 +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = @@ -100,28 +103,28 @@ overwriteHeight = [TextureRedefine] width = 199 height = 116 -#formatsExcluded = +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = [TextureRedefine] width = 160 height = 180 -#formatsExcluded = +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = [TextureRedefine] #bloom 2nd mip width = 160 height = 90 -#formatsExcluded = +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = [TextureRedefine] width = 160 height = 80 -#formatsExcluded = +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = @@ -135,14 +138,14 @@ overwriteHeight = [TextureRedefine] width = 133 height = 77 -#formatsExcluded = +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = [TextureRedefine] width = 128 height = 256 -#formatsExcluded = +formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 overwriteWidth = overwriteHeight = From 3afcfaf6877218355bf60a7fbdc2363077ed9cea Mon Sep 17 00:00:00 2001 From: Xalphenos Date: Tue, 30 Jan 2018 04:09:30 -0600 Subject: [PATCH 09/41] Update patches.txt Updated v1.4.x code to not use a hard coded memory address. This will make it easier to port by anyone and will hopefully preemptively fix any problems caused by 1.11.4's updated rpl loading. I really should back port the 1.4.x code to the older versions but I'm tired and most people are on 1.4.x anyway. But hopefully not too many people will complain about 1.11.4 breaking fps++ when it releases later today. --- .../BreathOfTheWild_FPS++/patches.txt | 168 +++++++++--------- 1 file changed, 87 insertions(+), 81 deletions(-) diff --git a/Modifications/BreathOfTheWild_FPS++/patches.txt b/Modifications/BreathOfTheWild_FPS++/patches.txt index 0bafb0dc..12e3a967 100644 --- a/Modifications/BreathOfTheWild_FPS++/patches.txt +++ b/Modifications/BreathOfTheWild_FPS++/patches.txt @@ -1,3 +1,90 @@ +[BotwFPSv176V192] +moduleMatches = 0xFD091F9F,0xD472D8A5 + +#rodata constants +_float1 = 0x10000670 +_float30 = 0x101E78F4 +_convSub = 0x10000BB0 + +#TestCave +codeCaveSize = 0x9C + +_fpsCalc = 0x00000010 +0x00000000 = .float 3 ; Don't edit me! +_lowlimit = 0x00000000 +0x00000004 = .float 62156250 +_busSpeed = 0x00000004 +_currentFPS = 0x00000008 +_speedDiv = 0x0000000C + +0x00000010 = stw r0, 0x78(r30) +0x00000014 = xoris r12, r12, 0x8000 +0x00000018 = stw r12, 0x12C(r30) +0x0000001C = lis r12, 0x4330 +0x00000020 = stw r12, 0x128(r30) +0x00000024 = lfd f10, 0x128(r30) +0x00000028 = lis r12, _convSub@ha +0x0000002C = lfd f12, _convSub@l(r12) +0x00000030 = fsub f10, f10, f12 +0x00000034 = frsp f10, f10 +0x00000038 = lis r12, _float1@ha +0x0000003C = lfs f12, _float1@l(r12) +0x00000040 = fdivs f10, f12, f10 +0x00000044 = lis r12, _busSpeed@ha +0x00000048 = lfs f12, _busSpeed@l(r12) +0x0000004C = fmuls f10, f12, f10 +0x00000050 = lis r12, _currentFPS@ha +0x00000054 = stfs f10, _currentFPS@l(r12) + +0x00000058 = lis r12, _float30@ha +0x0000005C = lfs f12, _float30@l(r12) +0x00000060 = fdivs f7, f12, f10 +0x00000064 = lis r12, _lowlimit@ha +0x00000068 = lfs f12, _lowlimit@l(r12) +0x0000006C = lis r12, _speedDiv@ha +0x00000070 = fcmpu cr0, f7, f12 +0x00000074 = bge .+0x0C + +0x00000078 = stfs f7, _speedDiv@l(r12) +0x0000007C = blr +0x00000080 = stfs f12, _speedDiv@l(r12) +0x00000084 = blr + +_fenceNeg1 = 0x00000084 +0x00000088 = add r6, r12, r0 #orig instruction we are replacing +0x0000008C = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x00000090 = blt .+0x08 #skip subtract if less than +0x00000094 = subi r6, r6, 1 #do the subtract +0x00000098 = blr #return + +#codeChanges +0x031F9E80 = bla _fpsCalc +0x03792620 = nop +0x0379262C = nop +0x03792670 = lis r29, _speedDiv@ha +0x03792678 = lfs f0, _speedDiv@L(r29) +0x03792684 = nop +0x03414EF8 = lis r12, _speedDiv@ha +0x03414F00 = lfs f0, _speedDiv@l(r12) +0x03414F08 = nop +0x02D90790 = lis r10, _currentFPS@ha +0x02D90794 = lfs f11, _currentFPS@l(r10) +0x02D907EC = lis r10, _currentFPS@ha +0x02D907F0 = lfs f11, _currentFPS@l(r10) + + +#break all forms of frame limiting +0x031FA000 = bla _fenceNeg1 ;Best fence (make sure GPU is never more than 1 frame ahead) +;0x031F9FEC = li r0, 1 ;Better fence (make sure GPU is never more than 1 second? ahead) +;0x031FA004 = nop ; skip fence (no waiting on GPU) +0x031FA1D4 = nop ; disable vsync +0x031FA1F8 = nop ; disable vsync loop + +#Cheats +;0x02D90724 = fmr f29, f1 ;inf stamina +;0x02D44D44 = nop ;inf hearts +;0x02EB61BC = nop ;inf arrows + [Botw60fpsv144] moduleMatches = 0x9A2CA0C7 @@ -222,84 +309,3 @@ _fullspeed = 0x00000080 ;0x02F7DE00 = li r3, 0 ;0x02F862C4 = li r7, 1 ;0x02F86514 = li r7, 1 - -[BotwFPSv176V192] -moduleMatches = 0xFD091F9F,0xD472D8A5 - -#rodata constants -_float1 = 0x10000670 -_float30 = 0x101E78F4 - -#TestCave -codeCaveSize = 0x98 - -_fpsCalc = 0x00000008 -0x00000000 = .float 3 ; Don't edit me! -_lowlimit = 0x00000000 -0x00000004 = .float 62156250 -_busSpeed = 0x00000004 -0x00000008 = stw r0, 0x78(r30) -0x0000000C = xoris r12, r12, 0x8000 -0x00000010 = stw r12, 0x12C(r30) -0x00000014 = lis r12, 0x4330 -0x00000018 = stw r12, 0x128(r30) -0x0000001C = lfd f10, 0x128(r30) -0x00000020 = stw r12, 0x138(r30) -0x00000024 = lis r12, 0x8000 -0x00000028 = stw r12, 0x13C(r30) -0x0000002C = lfd f12, 0x138(r30) -0x00000030 = fsub f10, f10, f12 -0x00000034 = frsp f10, f10 -0x00000038 = lis r12, _float1@ha -0x0000003C = lfs f12, _float1@l(r12) -0x00000040 = fdivs f10, f12, f10 -0x00000048 = lis r12, _busSpeed@ha -0x0000004C = lfs f12, _busSpeed@l(r12) -0x00000050 = fmuls f10, f12, f10 -0x00000054 = stfs f10, 0x134(r30) -0x00000058 = lis r12, _float30@ha -0x0000005C = lfs f12, _float30@l(r12) -0x00000060 = fdivs f7, f12, f10 -0x00000064 = lis r12, _lowlimit@ha -0x00000068 = lfs f12, _lowlimit@l(r12) -0x0000006C = fcmpu cr0, f7, f12 -0x00000070 = bge .+0x0C -0x00000074 = stfs f7, 0x130(r30) -0x00000078 = blr -0x0000007c = stfs f12, 0x130(r30) -0x00000080 = blr - -_fenceNeg1 = 0x00000084 -0x00000084 = add r6, r12, r0 #orig instruction we are replacing -0x00000088 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) -0x0000008C = blt .+0x08 #skip subtract if less than -0x00000090 = subi r6, r6, 1 #do the subtract -0x00000094 = blr #return - -#codeChanges -0x031F9E80 = bla _fpsCalc -0x03792620 = nop -0x0379262C = nop -0x03792670 = lis r29, 0x1134 -0x03792678 = lfs f0, 0xFE58@l(r29) -0x03792684 = nop -0x03414EF8 = lis r12, 0x1134 -0x03414F00 = lfs f0, 0xFE58@l(r12) -0x03414F08 = nop -0x02D90790 = lis r10, 0x1134 -0x02D90794 = lfs f11, 0xFE5C@l(r10) -0x02D907EC = lis r10, 0x1134 -0x02D907F0 = lfs f11, 0xFE5C@l(r10) - - -#break all forms of frame limiting -0x031FA000 = bla _fenceNeg1 ;Best fence (make sure GPU is never more than 1 frame ahead) -;0x031F9FEC = li r0, 1 ;Better fence (make sure GPU is never more than 1 second? ahead) -;0x031FA004 = nop ; skip fence (no waiting on GPU) -0x031FA1D4 = nop ; disable vsync -0x031FA1F8 = nop ; disable vsync loop - -#Cheats -;0x02D90724 = fmr f29, f1 ;inf stamina -;0x02D44D44 = nop ;inf hearts -;0x02EB61BC = nop ;inf arrows From 3e2b7db4babdde29da1a6bd7bf39e57ff004ba26 Mon Sep 17 00:00:00 2001 From: Crementif Date: Tue, 30 Jan 2018 22:17:20 +0100 Subject: [PATCH 10/41] Add Mario Party 10 Resolution Packs Just to test the game before people will find the exact resolutions. --- Source/MarioParty10/rules.txt | 25 +++++++++++++++++++++++++ build.sh | 1 + 2 files changed, 26 insertions(+) create mode 100644 Source/MarioParty10/rules.txt diff --git a/Source/MarioParty10/rules.txt b/Source/MarioParty10/rules.txt new file mode 100644 index 00000000..2145b24f --- /dev/null +++ b/Source/MarioParty10/rules.txt @@ -0,0 +1,25 @@ + +[Definition] +titleIds = 0005000010162D00,0005000010162E00,0005000E10161F00 +name = "Mario Party 10 - " +version = 2 + +[TextureRedefine] # tv +width = 1280 +height = 720 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] # gamepad +width = 854 +height = 480 +overwriteWidth = +overwriteHeight = \ No newline at end of file diff --git a/build.sh b/build.sh index bd22a562..ec54db6e 100644 --- a/build.sh +++ b/build.sh @@ -149,6 +149,7 @@ std_respack "LEGOCityUndercover" "${res16by9[@]/$just720p}" std_respack "MarioKart8" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "MarioSonicSochi" "${res16by9[@]/$just720p}" std_respack "MarioTennis" "${res16by9[@]/$just720p}" +std_respack "MarioParty10" "${res16by9[@]/$just720p}" std_respack "MonsterHunter3Ultimate" "${res16by9[@]/$just1080p}" std_respack "NBA2K13" "${res16by9[@]/$just720p}" std_respack "NewSuperMarioBrosU" "${res16by9[@]/$just720p}" From 1ddc3d13de189bb89f325a0af48efd7126fdb16d Mon Sep 17 00:00:00 2001 From: MelonSpeedruns <6260159+MelonSpeedruns@users.noreply.github.com> Date: Wed, 31 Jan 2018 15:39:22 -0500 Subject: [PATCH 11/41] Update patches.txt --- Workaround/WindWakerHD_IntelFixes/patches.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Workaround/WindWakerHD_IntelFixes/patches.txt b/Workaround/WindWakerHD_IntelFixes/patches.txt index 4b089d35..ca541808 100644 --- a/Workaround/WindWakerHD_IntelFixes/patches.txt +++ b/Workaround/WindWakerHD_IntelFixes/patches.txt @@ -3,8 +3,6 @@ moduleMatches = 0xB7E748DE _emptyString = 0x10166948 -0x025AC21C = nop; SUSPEND OliveOperationMgrThread - ;is_useSsaoDirectDraw 0x0278EED8 = lis r0, _emptyString@ha 0x0278EEE4 = addic r0, r0, _emptyString@l @@ -14,8 +12,6 @@ moduleMatches = 0x475BD29F _emptyString = 0x1016693C -0x025AC25C = nop; SUSPEND OliveOperationMgrThread - ;is_useSsaoDirectDraw 0x0278E618 = lis r0, _emptyString@ha 0x0278E624 = addic r0, r0, _emptyString@l From 14a673d193865ee945c79055962bd91527097e31 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns <6260159+MelonSpeedruns@users.noreply.github.com> Date: Wed, 31 Jan 2018 19:53:20 -0500 Subject: [PATCH 12/41] Created Wind Waker HD FPS Slowdown Fix Pack! (#175) * Create rules.txt * Create patches.txt --- Workaround/WindWakerHD_FPSSlowdownFix/patches.txt | 7 +++++++ Workaround/WindWakerHD_FPSSlowdownFix/rules.txt | 4 ++++ 2 files changed, 11 insertions(+) create mode 100644 Workaround/WindWakerHD_FPSSlowdownFix/patches.txt create mode 100644 Workaround/WindWakerHD_FPSSlowdownFix/rules.txt diff --git a/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt b/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt new file mode 100644 index 00000000..ec6a615c --- /dev/null +++ b/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt @@ -0,0 +1,7 @@ +[WWHDEU] ;OliveOperationMgrThread found by BenjaminLSR +moduleMatches = 0xB7E748DE +0x025AC21C = nop; SUSPEND OliveOperationMgrThread + +[WWHDUS] +moduleMatches = 0x475BD29F +0x025AC25C = nop; SUSPEND OliveOperationMgrThread diff --git a/Workaround/WindWakerHD_FPSSlowdownFix/rules.txt b/Workaround/WindWakerHD_FPSSlowdownFix/rules.txt new file mode 100644 index 00000000..6d10a944 --- /dev/null +++ b/Workaround/WindWakerHD_FPSSlowdownFix/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010143500,0005000010143600 +name = "The Legend of Zelda: The Wind Waker HD - FPS Slowdown Fix" +version = 2 From 34ab7cad691014d417d17ff14881f6359dab41fe Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 31 Jan 2018 16:54:13 -0800 Subject: [PATCH 13/41] Update patches.txt --- Workaround/WindWakerHD_FPSSlowdownFix/patches.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt b/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt index ec6a615c..137603b0 100644 --- a/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt +++ b/Workaround/WindWakerHD_FPSSlowdownFix/patches.txt @@ -2,6 +2,6 @@ moduleMatches = 0xB7E748DE 0x025AC21C = nop; SUSPEND OliveOperationMgrThread -[WWHDUS] +[WWHDUS] ;Ported to US by Slash moduleMatches = 0x475BD29F 0x025AC25C = nop; SUSPEND OliveOperationMgrThread From 2b45c4095d22bb6abb0b5df5a7cb849f6844d43e Mon Sep 17 00:00:00 2001 From: Rajko Stojadinovic Date: Thu, 1 Feb 2018 11:40:29 +0100 Subject: [PATCH 14/41] Update Botw patches.txt (except FPS++) for 1.5.0 --- Enhancement/BreathOfTheWild_30FPS/patches.txt | 7 ++++ Source/BreathOfTheWild/patches.txt | 16 +++++++++ .../BreathOfTheWild_LwzxNullCheck/patches.txt | 35 ++++++++++++++++++- 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/Enhancement/BreathOfTheWild_30FPS/patches.txt b/Enhancement/BreathOfTheWild_30FPS/patches.txt index 1c8ef045..b9194f6c 100644 --- a/Enhancement/BreathOfTheWild_30FPS/patches.txt +++ b/Enhancement/BreathOfTheWild_30FPS/patches.txt @@ -60,3 +60,10 @@ moduleMatches = 0xFD091F9F,0xD472D8A5 ;0x031FA004 = nop ;disables gx2 fence 0x031FA1D4 = nop ;disables wait for vsync 0x031FA1F8 = nop ;disables wait for vsync loop + +[BotwNoVsyncV208] +moduleMatches = 0x6267BFD0 + +;0x031FAB00 = nop ;disables gx2 fence +0x031FACD0 = nop ;disables wait for vsync +0x031FACF4 = nop ;disables wait for vsync loop \ No newline at end of file diff --git a/Source/BreathOfTheWild/patches.txt b/Source/BreathOfTheWild/patches.txt index a101a2d7..357c7eee 100644 --- a/Source/BreathOfTheWild/patches.txt +++ b/Source/BreathOfTheWild/patches.txt @@ -152,3 +152,19 @@ _aspectAddr = 0x101BF878 # 3d aspect (calculated every frame) 0x0386C314 = lis r28, ha16(_aspectAddr) 0x0386C318 = lfs f12, _aspectAddr(r28) + +[BotwAspectsV208] +moduleMatches = 0x6267BFD0 +# rodata constants +0x101BF8E8 = .float +0x1030A57C = .float +0x1036DD4C = .float +_aspectAddr = 0x101BF8E8 + +# menu link aspect (calculated every load) +0x02E2C564 = lis r9, _aspectAddr@ha +0x02E2C578 = lfs f4, _aspectAddr@l(r9) + +# 3d aspect (calculated every frame) +0x0386D01C = lis r28, ha16(_aspectAddr) +0x0386D020 = lfs f12, _aspectAddr(r28) diff --git a/Workaround/BreathOfTheWild_LwzxNullCheck/patches.txt b/Workaround/BreathOfTheWild_LwzxNullCheck/patches.txt index 499d8277..9b9c56e3 100644 --- a/Workaround/BreathOfTheWild_LwzxNullCheck/patches.txt +++ b/Workaround/BreathOfTheWild_LwzxNullCheck/patches.txt @@ -293,4 +293,37 @@ _lwzCheck = 0x00000020 ; null checked version of 'lwz r8, 0(r31)' 0x038E3BE4 = bla _lwzCheck 0x038E3C50 = bla _lwzxCheck -0x038E3C5C = bla _lwzCheck \ No newline at end of file +0x038E3C5C = bla _lwzCheck + +[BotwPlsNoCrashV208] +moduleMatches = 0x6267BFD0 +#restore the 2 instructions possibly overwritten by cemu itself +0x038E46CC = stwu r1, -0x28(r1) +0x038E46D0 = mflr r0 + +#null check functions +codeCaveSize = 0x40 + +_lwzxCheck = 0x00000000 ; null checked version of 'lwzx r31, r9, r0' +0x00000000 = add r30, r9, r0 +0x00000004 = xor r31, r31, r31 +0x00000008 = cmpwi r30, 0 +0x0000000C = beq .+0x8 +0x00000010 = lwzx r31, r9, r0 +0x00000014 = blr + +_lwzCheck = 0x00000020 ; null checked version of 'lwz r8, 0(r31)' +0x00000020 = xor r8, r8, r8 +0x00000024 = oris r8, r8, 0xD15A +0x00000028 = ori r8, r8, 0xB1ED +0x0000002C = cmpwi r31, 0 +0x00000030 = beq .+0x8 +0x00000034 = lwz r8, 0(r31) +0x00000038 = blr + +#replace simple loads with calls to these funcs +0x038E4874 = bla _lwzxCheck +0x038E4880 = bla _lwzCheck + +0x038E48EC = bla _lwzxCheck +0x038E48F8 = bla _lwzCheck \ No newline at end of file From ba7b265d8afbd186d5e708092aa50c367f4fb0d6 Mon Sep 17 00:00:00 2001 From: Rajko Stojadinovic Date: Thu, 1 Feb 2018 12:14:15 +0100 Subject: [PATCH 15/41] Port all FPS++ offsets for Botw 1.5.0 --- .../BreathOfTheWild_FPS++/patches.txt | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/Modifications/BreathOfTheWild_FPS++/patches.txt b/Modifications/BreathOfTheWild_FPS++/patches.txt index 12e3a967..5c56e076 100644 --- a/Modifications/BreathOfTheWild_FPS++/patches.txt +++ b/Modifications/BreathOfTheWild_FPS++/patches.txt @@ -1,3 +1,90 @@ +[BotwFPSV208] +moduleMatches = 0x6267BFD0 + +#rodata constants +_float1 = 0x10000670 +_float30 = 0x101E7964 +_convSub = 0x10000BB0 + +#TestCave +codeCaveSize = 0x9C + +_fpsCalc = 0x00000010 +0x00000000 = .float 3 ; Don't edit me! +_lowlimit = 0x00000000 +0x00000004 = .float 62156250 +_busSpeed = 0x00000004 +_currentFPS = 0x00000008 +_speedDiv = 0x0000000C + +0x00000010 = stw r0, 0x78(r30) +0x00000014 = xoris r12, r12, 0x8000 +0x00000018 = stw r12, 0x12C(r30) +0x0000001C = lis r12, 0x4330 +0x00000020 = stw r12, 0x128(r30) +0x00000024 = lfd f10, 0x128(r30) +0x00000028 = lis r12, _convSub@ha +0x0000002C = lfd f12, _convSub@l(r12) +0x00000030 = fsub f10, f10, f12 +0x00000034 = frsp f10, f10 +0x00000038 = lis r12, _float1@ha +0x0000003C = lfs f12, _float1@l(r12) +0x00000040 = fdivs f10, f12, f10 +0x00000044 = lis r12, _busSpeed@ha +0x00000048 = lfs f12, _busSpeed@l(r12) +0x0000004C = fmuls f10, f12, f10 +0x00000050 = lis r12, _currentFPS@ha +0x00000054 = stfs f10, _currentFPS@l(r12) + +0x00000058 = lis r12, _float30@ha +0x0000005C = lfs f12, _float30@l(r12) +0x00000060 = fdivs f7, f12, f10 +0x00000064 = lis r12, _lowlimit@ha +0x00000068 = lfs f12, _lowlimit@l(r12) +0x0000006C = lis r12, _speedDiv@ha +0x00000070 = fcmpu cr0, f7, f12 +0x00000074 = bge .+0x0C + +0x00000078 = stfs f7, _speedDiv@l(r12) +0x0000007C = blr +0x00000080 = stfs f12, _speedDiv@l(r12) +0x00000084 = blr + +_fenceNeg1 = 0x00000084 +0x00000088 = add r6, r12, r0 #orig instruction we are replacing +0x0000008C = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x00000090 = blt .+0x08 #skip subtract if less than +0x00000094 = subi r6, r6, 1 #do the subtract +0x00000098 = blr #return + +#codeChanges +0x031FA97C = bla _fpsCalc +0x03793328 = nop +0x03793334 = nop +0x03793378 = lis r29, _speedDiv@ha +0x03793380 = lfs f0, _speedDiv@L(r29) +0x0379338C = nop +0x03415C1C = lis r12, _speedDiv@ha +0x03415C24 = lfs f0, _speedDiv@l(r12) +0x03415C2C = nop +0x02D90D2C = lis r10, _currentFPS@ha +0x02D90D30 = lfs f11, _currentFPS@l(r10) +0x02D90D88 = lis r10, _currentFPS@ha +0x02D90D8C = lfs f11, _currentFPS@l(r10) + + +#break all forms of frame limiting +0x031FAAFC = bla _fenceNeg1 ;Best fence (make sure GPU is never more than 1 frame ahead) +;0x031FAAE8 = li r0, 1 ;Better fence (make sure GPU is never more than 1 second? ahead) +;0x031FAB00 = nop ; skip fence (no waiting on GPU) +0x031FACD0 = nop ; disable vsync +0x031FACF4 = nop ; disable vsync loop + +#Cheats +;0x02D90CC0 = fmr f29, f1 ;inf stamina +;0x02D452A4 = nop ;inf hearts +;0x02EB6758 = nop ;inf arrows + [BotwFPSv176V192] moduleMatches = 0xFD091F9F,0xD472D8A5 From c5b95ece3af1dbdd4db1262fc8d693f76a83cc36 Mon Sep 17 00:00:00 2001 From: Rajko Stojadinovic Date: Fri, 2 Feb 2018 16:16:31 +0100 Subject: [PATCH 16/41] Fix HW DoF removal patches.txt, calls to cave locations should always be absolute --- Workaround/HyruleWarriors_DoFBlurRemoval/patches.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workaround/HyruleWarriors_DoFBlurRemoval/patches.txt b/Workaround/HyruleWarriors_DoFBlurRemoval/patches.txt index f16581b6..e29435eb 100644 --- a/Workaround/HyruleWarriors_DoFBlurRemoval/patches.txt +++ b/Workaround/HyruleWarriors_DoFBlurRemoval/patches.txt @@ -15,4 +15,4 @@ _nullViewport = 0x00000000 0x0000001C = blr # patch DoF call to ktgl::CCafeGraphicsDevice::GetViewport to use our nulling out function instead -0x02878FAC = bl _nullViewport +0x02878FAC = bla _nullViewport From 037c455e3be66bb3286d0218e11025bb415c1f4f Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 2 Feb 2018 12:42:55 -0800 Subject: [PATCH 17/41] Oops! hi from school --- Source/ShovelKnight/rules.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/ShovelKnight/rules.txt b/Source/ShovelKnight/rules.txt index a4f4afdd..a65fec62 100644 --- a/Source/ShovelKnight/rules.txt +++ b/Source/ShovelKnight/rules.txt @@ -21,7 +21,7 @@ overwriteHeight = width = 1600 height = 960 overwriteWidth = -overwriteHeight = +overwriteHeight = [TextureRedefine] # gamepad width = 854 From 60614f47d0193f4271f63170ff93cf9eca1d9344 Mon Sep 17 00:00:00 2001 From: getdls Date: Fri, 2 Feb 2018 23:52:49 +0100 Subject: [PATCH 18/41] [NSMBU] Scale all, fix AA, fix bloom, fix DOF Kiri's not around, guess it's safe to commit... --- .../50e29e8929cea348_00000000000003c9_ps.txt | 199 ++++++++++++++++++ .../70b82af4d17024d2_0000000000000000_vs.txt | 83 ++++++++ .../ec4a85d51e778437_0000000000000000_vs.txt | 86 ++++++++ Source/NewSuperMarioBrosU/rules.txt | 74 ++++--- 4 files changed, 408 insertions(+), 34 deletions(-) create mode 100644 Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt create mode 100644 Source/NewSuperMarioBrosU/70b82af4d17024d2_0000000000000000_vs.txt create mode 100644 Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt diff --git a/Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt b/Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt new file mode 100644 index 00000000..ef773a48 --- /dev/null +++ b/Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt @@ -0,0 +1,199 @@ + + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 50e29e8929cea348 +//AA fix PS +const float resScale = ; +//old contrasty, or just copy paste clarity +const float gamma = 0.95; // 1.0 is neutral +const float exposure = 1.05; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. +const float vibrance = 0.2175; // 0.0 is neutral +const float crushContrast = 0.000; // 0.0 is neutral. loss of shadow detail +const float postExposure = 1.16; // 1.0 is neutral, then slightly raise exposure back up. + +vec3 contrasty(vec3 colour) { + vec3 fColour = (colour.xyz); + + fColour = clamp(exposure * fColour, 0.0, 1.0); + fColour = pow(fColour, vec3(1.0 / gamma)); + float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; + float mn = min(min(fColour.r, fColour.g), fColour.b); + float mx = max(max(fColour.r, fColour.g), fColour.b); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; + vec3 lightness = vec3((mn + mx) / 2.0); + // vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour - vec3(crushContrast)); + return fColour; +} + +uniform ivec4 uf_remappedPS[3]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1 +layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c5000 res 1280x720x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1 +layout(location = 0) in vec4 passParameterSem1; +layout(location = 0) out vec4 passPixelColor0; +uniform vec2 uf_fragCoordScale; +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R123f = vec4(0.0); +vec4 R125f = vec4(0.0); +vec4 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +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; +bool activeMaskStack[2]; +bool activeMaskStackC[3]; +activeMaskStack[0] = false; +activeMaskStackC[0] = false; +activeMaskStackC[1] = false; +activeMaskStack[0] = true; +activeMaskStackC[0] = true; +activeMaskStackC[1] = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = passParameterSem1; +if( activeMaskStackC[1] == true ) { +R1f.xyzw = (textureGather(textureUnitPS1, R0f.xy).xyzw); +R2f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw); +} +if( activeMaskStackC[1] == true ) { +activeMaskStack[1] = activeMaskStack[0]; +activeMaskStackC[2] = activeMaskStackC[1]; +// 0 +PV0f.x = R1f.z + R1f.w; +PV0f.y = R1f.y + -(R1f.w); +PV0f.z = R1f.x + -(R1f.z); +R127f.w = mul_nonIEEE(R2f.x, intBitsToFloat(uf_remappedPS[0].x)); +R126f.w = min(R1f.z, R1f.w); +PS0f = R126f.w; +// 1 +R126f.x = PV0f.z + PV0f.y; +PV1f.x = R126f.x; +PV1f.y = R1f.x + PV0f.x; +R127f.z = min(R1f.x, R1f.y); +R125f.w = PV0f.z + -(PV0f.y); +PV1f.w = R125f.w; +R127f.y = max(R1f.z, R1f.w); +PS1f = R127f.y; +// 2 +PV0f.x = R1f.y + PV1f.y; +PV0f.y = max(PV1f.w, -(PV1f.w)); +PV0f.z = max(PV1f.x, -(PV1f.x)); +PV0f.w = max(R1f.x, R1f.y); +R127f.x = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedPS[0].y)) + R127f.w); +PS0f = R127f.x; +// 3 +PV1f.x = min(PV0f.z, PV0f.y); +PV1f.y = min(R126f.w, R127f.z); +PV1f.z = max(R127f.y, PV0f.w); +R123f.w = (PV0f.x * intBitsToFloat(0x3d000000) + intBitsToFloat(0x3b800000)); +PV1f.w = R123f.w; +// 4 +PV0f.x = min(R127f.x, PV1f.y); +PV0f.y = max(R127f.x, PV1f.z); +PV0f.w = max(PV1f.w, PV1f.x); +// 5 +R0f.z = -(PV0f.x) + PV0f.y; +PS1f = 1.0 / PV0f.w; +// 6 +PV0f.x = R125f.w * PS1f; +PV0f.y = R126f.x * PS1f; +// 7 +PV1f.z = max(PV0f.x, intBitsToFloat(0xc0400000)); +PV1f.w = max(PV0f.y, intBitsToFloat(0xc0400000)); +// 8 +R1f.x = min(PV1f.w, intBitsToFloat(0x40400000)); +R1f.y = min(PV1f.z, intBitsToFloat(0x40400000)); +// 9 +predResult = (R0f.z > intBitsToFloat(uf_remappedPS[1].y)); +activeMaskStack[1] = predResult; +activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true; +} +else { +activeMaskStack[1] = false; +activeMaskStackC[2] = false; +} +if( activeMaskStackC[2] == true ) { +// 0 +R3f.x = (mul_nonIEEE(R1f.x,-(intBitsToFloat(uf_remappedPS[2].z)/ resScale)) + R0f.x); +R3f.y = (mul_nonIEEE(R1f.y,-(intBitsToFloat(uf_remappedPS[2].w)/ resScale)) + R0f.y); +R0f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedPS[2].x)/ resScale) + R0f.x); +R0f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedPS[2].y)/ resScale) + R0f.y); +R3f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedPS[2].z)/ resScale) + R0f.x); +PS0f = R3f.z; +// 1 +R4f.x = (mul_nonIEEE(R1f.x,-(intBitsToFloat(uf_remappedPS[2].x)/ resScale)) + R0f.x); +R4f.y = (mul_nonIEEE(R1f.y,-(intBitsToFloat(uf_remappedPS[2].y)/ resScale)) + R0f.y); +R3f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedPS[2].w)/ resScale) + R0f.y); +} +if( activeMaskStackC[2] == true ) { +R1f.xyzw = (texture(textureUnitPS0, R0f.zw).xyzw); +R0f.xyzw = (texture(textureUnitPS0, R3f.zw).xyzw); +R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw); +R2f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw); +} +if( activeMaskStackC[2] == true ) { +// 0 +R127f.x = R0f.w + R1f.w; +R127f.x /= 2.0; +R127f.y = R0f.z + R1f.z; +R127f.y /= 2.0; +R127f.z = R0f.y + R1f.y; +R127f.z /= 2.0; +R127f.w = R0f.x + R1f.x; +R127f.w /= 2.0; +// 1 +PV1f.x = R2f.w + R3f.w; +PV1f.x /= 2.0; +PV1f.y = R2f.z + R3f.z; +PV1f.y /= 2.0; +PV1f.z = R2f.y + R3f.y; +PV1f.z /= 2.0; +PV1f.w = R2f.x + R3f.x; +PV1f.w /= 2.0; +// 2 +R2f.x = R127f.w + PV1f.w; +R2f.x /= 2.0; +R2f.y = R127f.z + PV1f.z; +R2f.y /= 2.0; +R2f.z = R127f.y + PV1f.y; +R2f.z /= 2.0; +R2f.w = R127f.x + PV1f.x; +R2f.w /= 2.0; +} +activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true; +// export + + +passPixelColor0 = vec4(contrasty(R2f.xyz), R2f.w); +//passPixelColor0 = vec4(R2f.xyz, R2f.w); + +} diff --git a/Source/NewSuperMarioBrosU/70b82af4d17024d2_0000000000000000_vs.txt b/Source/NewSuperMarioBrosU/70b82af4d17024d2_0000000000000000_vs.txt new file mode 100644 index 00000000..23f6a1c7 --- /dev/null +++ b/Source/NewSuperMarioBrosU/70b82af4d17024d2_0000000000000000_vs.txt @@ -0,0 +1,83 @@ + + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader 70b82af4d17024d2 +//AA fix +const float resScale = ; +uniform ivec4 uf_remappedVS[1]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 0) out vec4 passParameterSem1; +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 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R122f = vec4(0.0); +vec4 R123f = 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; +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 = attrDataSem1.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 +backupReg0f = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = 0.0; +R1f.w = 1.0; +R122f.x = (-(intBitsToFloat(uf_remappedVS[0].x)/ resScale) * intBitsToFloat(0x3f266666) + R2f.x); +PS0f = R122f.x; +// 1 +R123f.x = (-(intBitsToFloat(uf_remappedVS[0].y)/ resScale) * intBitsToFloat(0x3f266666) + R2f.y); +PV1f.x = R123f.x; +R2f.z = PS0f; +// 2 +R2f.w = PV1f.x; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// 0 +} diff --git a/Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt b/Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt new file mode 100644 index 00000000..1f13ff6b --- /dev/null +++ b/Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt @@ -0,0 +1,86 @@ + + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader ec4a85d51e778437 +//box blur fix +const float resScale = ; +uniform ivec4 uf_remappedVS[1]; +uniform vec2 uf_windowSpaceToClipSpaceTransform; +layout(location = 0) in uvec4 attrDataSem0; +layout(location = 1) in uvec4 attrDataSem1; +out gl_PerVertex +{ + vec4 gl_Position; + float gl_PointSize; +}; +layout(location = 0) out vec4 passParameterSem3; +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); +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 = attrDataSem1.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 +backupReg0f = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = intBitsToFloat(0xbf800000); +R1f.w = 1.0; +PS0f = R2f.x + -(intBitsToFloat(uf_remappedVS[0].x) / resScale); +// 1 +backupReg0f = R2f.y; +backupReg1f = R2f.x; +PV1f.x = R2f.y + -(intBitsToFloat(uf_remappedVS[0].y) / resScale); +R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y)/resScale; +R2f.z = PS0f; +R2f.x = backupReg1f + intBitsToFloat(uf_remappedVS[0].x)/ resScale; +PS1f = R2f.x; +// 2 +R2f.w = PV1f.x; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +// 0 +} diff --git a/Source/NewSuperMarioBrosU/rules.txt b/Source/NewSuperMarioBrosU/rules.txt index 802c114f..f65379bd 100644 --- a/Source/NewSuperMarioBrosU/rules.txt +++ b/Source/NewSuperMarioBrosU/rules.txt @@ -1,44 +1,50 @@ - [Definition] titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200 -name = "New Super Mario Bros. U - " +name = "New Super Mario Bros. U - 3840x2160" version = 2 -[TextureRedefine] # tv +#[TextureRedefine] #tilemap don't scale +#width = 2048 +#height = 512 + +[TextureRedefine] width = 1280 height = 720 -overwriteWidth = -overwriteHeight = +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 +overwriteWidth = 3840 +overwriteHeight = 2160 -[TextureRedefine] # AA pass, shadows viewport -width = 640 -height = 360 -overwriteWidth = -overwriteHeight = - -[TextureRedefine] # -width = 320 -height = 180 -overwriteWidth = -overwriteHeight = - -##Textures -[TextureRedefine] # Dynamic shadows texture 3d overworld -width = 1024 -height = 1024 -formats = 0x005 #0x034 static shadow texture, don't scale -overwriteWidth = -overwriteHeight = +[TextureRedefine] #map shadows +width = 1024 +height = 1024 +formats = 0x005 +overwriteWidth = 3072 +overwriteHeight = 3072 -[TextureRedefine] # gamepad +[TextureRedefine] width = 854 height = 480 -#overwriteWidth = -#overwriteHeight = +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 +overwriteWidth = 2562 +overwriteHeight = 1440 + +[TextureRedefine] +width = 640 +height = 360 +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 +overwriteWidth = 1920 +overwriteHeight = 1080 + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 +overwriteWidth = 960 +overwriteHeight = 540 + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 +overwriteWidth = 480 +overwriteHeight = 270 \ No newline at end of file From c700b79c3f22220251d54ed22da9fa41c71a42b5 Mon Sep 17 00:00:00 2001 From: getdls Date: Sat, 3 Feb 2018 00:09:02 +0100 Subject: [PATCH 19/41] [NSMBU] build fix - Wrong rules file commited --- Source/NewSuperMarioBrosU/rules.txt | 53 ++++++++++++++++++----------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/Source/NewSuperMarioBrosU/rules.txt b/Source/NewSuperMarioBrosU/rules.txt index f65379bd..90dd030e 100644 --- a/Source/NewSuperMarioBrosU/rules.txt +++ b/Source/NewSuperMarioBrosU/rules.txt @@ -1,50 +1,65 @@ + + [Definition] titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200 -name = "New Super Mario Bros. U - 3840x2160" +name = "New Super Mario Bros. U - " version = 2 -#[TextureRedefine] #tilemap don't scale +##tilemap don't scale #width = 2048 #height = 512 [TextureRedefine] width = 1280 height = 720 -#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 -overwriteWidth = 3840 -overwriteHeight = 2160 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + [TextureRedefine] #map shadows width = 1024 height = 1024 formats = 0x005 -overwriteWidth = 3072 -overwriteHeight = 3072 +overwriteWidth = +overwriteHeight = [TextureRedefine] width = 854 height = 480 -#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 -overwriteWidth = 2562 -overwriteHeight = 1440 +#formatsExcluded = +overwriteWidth = +overwriteHeight = [TextureRedefine] width = 640 height = 360 -#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 -overwriteWidth = 1920 -overwriteHeight = 1080 +#formatsExcluded = +overwriteWidth = +overwriteHeight = [TextureRedefine] width = 320 height = 180 -#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 -overwriteWidth = 960 -overwriteHeight = 540 +#formatsExcluded = +overwriteWidth = +overwriteHeight = [TextureRedefine] width = 160 height = 90 -#formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 -overwriteWidth = 480 -overwriteHeight = 270 \ No newline at end of file +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +## Gradient don't scale +#width = 48 +#height = 48 + From ec2d1be94b96c5e107414a1160a5a04d8a257ed0 Mon Sep 17 00:00:00 2001 From: getdls Date: Sat, 3 Feb 2018 00:41:55 +0100 Subject: [PATCH 20/41] [NSMBU] Colour depth n banding fix --- .../8d638f35cebd14dc_00000000000007f9_ps.txt | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 Source/NewSuperMarioBrosU/8d638f35cebd14dc_00000000000007f9_ps.txt diff --git a/Source/NewSuperMarioBrosU/8d638f35cebd14dc_00000000000007f9_ps.txt b/Source/NewSuperMarioBrosU/8d638f35cebd14dc_00000000000007f9_ps.txt new file mode 100644 index 00000000..98e7efae --- /dev/null +++ b/Source/NewSuperMarioBrosU/8d638f35cebd14dc_00000000000007f9_ps.txt @@ -0,0 +1,109 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 8d638f35cebd14dc +//banding fix +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x48ab0000 res 8x256x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 0 border: 0 +layout(location = 0) in vec4 passParameterSem0; +layout(location = 1) in vec4 passParameterSem1; +layout(location = 2) in vec4 passParameterSem2; +layout(location = 3) in vec4 passParameterSem3; +layout(location = 0) out vec4 passPixelColor0; +layout(location = 1) out vec4 passPixelColor1; +highp float lineRand(vec2 co) +{ + highp float a = 12.9898; + highp float b = 78.233; + highp float c = 43758.5453; + highp float dt = dot(co.xy, vec2(a, b)); + highp float sn = mod(dt, 3.14); + return fract(sin(sn) * c); +} +uniform vec2 uf_fragCoordScale; +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R123f = vec4(0.0); +vec4 R127f = vec4(0.0); +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 = passParameterSem0; +R1f = passParameterSem1; +R2f = passParameterSem2; +R3f = passParameterSem3; +R3f.xy = R3f.xy - (lineRand(gl_FragCoord.xy)*0.0075); +R3f.xyz = (texture(textureUnitPS0, R3f.xy).xyz); +// 0 +R123f.x = (mul_nonIEEE(R0f.z,R3f.z) + 0.0); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(R0f.y,R3f.y) + 0.0); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(R0f.x,R3f.x) + 0.0); +PV0f.z = R123f.z; +R3f.w = R0f.w + 0.0; +R3f.w = clamp(R3f.w, 0.0, 1.0); +R0f.w = 1.0; +PS0f = R0f.w; +// 1 +PV1f.x = R2f.z * R2f.z; +R127f.y = PV0f.x + 0.0; +R127f.y = clamp(R127f.y, 0.0, 1.0); +R127f.z = PV0f.y + 0.0; +R127f.z = clamp(R127f.z, 0.0, 1.0); +R127f.w = PV0f.z + 0.0; +R127f.w = clamp(R127f.w, 0.0, 1.0); +PV1f.w = R127f.w; +// 2 +tempf.x = dot(vec4(R2f.x,R2f.y,PV1f.x,-0.0),vec4(R2f.x,R2f.y,1.0,0.0)); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +PS0f = R1f.x + -(PV1f.w); +// 3 +R3f.x = (mul_nonIEEE(PS0f,R1f.w) + R127f.w); +PV1f.z = R1f.z + -(R127f.y); +PV1f.w = R1f.y + -(R127f.z); +tempResultf = 1.0 / sqrt(PV0f.x); +R127f.x = tempResultf; +R127f.x /= 2.0; +PS1f = R127f.x; +// 4 +R0f.x = (mul_nonIEEE(R2f.x,PS1f) + 0.5); +R3f.y = (mul_nonIEEE(PV1f.w,R1f.w) + R127f.z); +R3f.z = (mul_nonIEEE(PV1f.z,R1f.w) + R127f.y); +R0f.y = (mul_nonIEEE(R2f.y,PS1f) + 0.5); +PS0f = R0f.y; +// 5 +R0f.z = (mul_nonIEEE(R2f.z,R127f.x) + 0.5); +PV1f.z = R0f.z; +// 6 +R1f.xyz = vec3(R0f.x,R0f.y,PV1f.z); +R1f.w = R0f.w; +// 7 +R0f.xyz = vec3(R3f.x,R3f.y,R3f.z); +R0f.w = R3f.w; +// export +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +passPixelColor1 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +} From ca7c6521a43312b71a31dcc6877b690f84a232e9 Mon Sep 17 00:00:00 2001 From: getdls Date: Sat, 3 Feb 2018 12:44:48 +0100 Subject: [PATCH 21/41] [XCX] reduce fog shimmer --- Source/NewSuperMarioBrosU/rules.txt | 8 +++++ Source/XenobladeX/rules.txt | 46 +++++++++++++++++++---------- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/Source/NewSuperMarioBrosU/rules.txt b/Source/NewSuperMarioBrosU/rules.txt index 90dd030e..eb11363a 100644 --- a/Source/NewSuperMarioBrosU/rules.txt +++ b/Source/NewSuperMarioBrosU/rules.txt @@ -12,6 +12,14 @@ titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0 name = "New Super Mario Bros. U - " version = 2 +[TextureRedefine] # increase colour depth, slower but less banding +formats = 0x820 +overwriteFormat = 0x823 + +[TextureRedefine] # +formats = 0x816 +overwriteFormat = 0x820 + ##tilemap don't scale #width = 2048 #height = 512 diff --git a/Source/XenobladeX/rules.txt b/Source/XenobladeX/rules.txt index bfc5a379..e70bc703 100644 --- a/Source/XenobladeX/rules.txt +++ b/Source/XenobladeX/rules.txt @@ -12,25 +12,41 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Xenoblade Chronicles X - " version = 2 -[TextureRedefine] # increase colour depth -formats = 0x01a,0x008 -replaceFormat 0x01f +[TextureRedefine] # increase colour depth, slower but less banding +formats = 0x816 +overwriteFormat = 0x820 -[TextureRedefine] # increase colour depth -formats = 0x816,0x820 -replaceFormat 0x823 +[TextureRedefine] # +formats = 0x810 +overwriteFormat = 0x81e -[TextureRedefine] # increase colour depth -formats = 0x810 -replaceFormat 0x81e +[TextureRedefine] # +formats = 0x806 +overwriteFormat = 0x80e -[TextureRedefine] # increase colour depth -formats = 0x806 -replaceFormat 0x80e +[TextureRedefine] # +formats = 0x007 +overwriteFormat = 0x00f -[TextureRedefine] # increase colour depth -formats = 0x007 -replaceFormat 0x00f +formats = 0x19,0x1a +overwriteFormat = 0x1f +tileModesExcluded = 0x001 + +[TextureRedefine] # +width = 320 +height = 180 +formats = 0x19 +overwriteFormat = 0x823 + +[TextureRedefine] # +width = 320 +height = 180 +formats = 0x1a +overwriteFormat = 0x823 + +#[TextureRedefine] #lod override, shimmer and possible sharper textures +#formats = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435 +#overwriteRelativeLodBias = -1 # don't reccomend more than -1 [TextureRedefine] # tv width = 1280 From d049b1218df4ec3003be4f96097d97c74201e5b3 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 15:30:39 -0800 Subject: [PATCH 22/41] [MP10] Add resolutions from rulesGen with format exclusions in place, some things may break! --- Source/MarioParty10/rules.txt | 169 +++++++++++++++++++++++++++++++++- 1 file changed, 166 insertions(+), 3 deletions(-) diff --git a/Source/MarioParty10/rules.txt b/Source/MarioParty10/rules.txt index 2145b24f..4702ede4 100644 --- a/Source/MarioParty10/rules.txt +++ b/Source/MarioParty10/rules.txt @@ -12,14 +12,177 @@ titleIds = 0005000010162D00,0005000010162E00,0005000E10161F00 name = "Mario Party 10 - " version = 2 -[TextureRedefine] # tv +[TextureRedefine] width = 1280 height = 720 +formatsExcluded = 0x41a,0x431 overwriteWidth = overwriteHeight = -[TextureRedefine] # gamepad +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 1024 +height = 1024 +formatsExcluded = 0x34,0x35,0x431,0x433 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 1022 +height = 1022 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 854 +height = 960 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] width = 854 height = 480 +formatsExcluded = 0x41a overwriteWidth = -overwriteHeight = \ No newline at end of file +overwriteHeight = + +[TextureRedefine] +width = 838 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 716 +height = 538 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 640 +height = 360 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 559 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 552 +height = 414 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 536 +height = 126 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 512 +height = 512 +formatsExcluded = 0x34,0x35,0x235,0x41a,0x431 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 510 +height = 510 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 460 +height = 460 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 370 +height = 370 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 256 +height = 256 +formatsExcluded = 0x1,0x35,0x431,0x433 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 196 +height = 196 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 128 +height = 128 +formatsExcluded = 0x35,0x41a,0x431,0x433 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 45 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 64 +height = 64 +formatsExcluded = 0x34,0x431,0x433 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 40 +height = 22 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 32 +height = 32 +formatsExcluded = 0x1,0x35,0x431 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +width = 16 +height = 16 +formatsExcluded = 0x1,0x35,0x433 +overwriteWidth = +overwriteHeight = From 63a447c923f8eda88ae2235ca0d79905f838af24 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 17:34:16 -0800 Subject: [PATCH 23/41] [ACaF] Add limited support Game softlocks after you get on the train --- Source/AnimalCrossingAmiiboFestival/rules.txt | 83 +++++++++++++++++++ build.sh | 1 + 2 files changed, 84 insertions(+) create mode 100644 Source/AnimalCrossingAmiiboFestival/rules.txt diff --git a/Source/AnimalCrossingAmiiboFestival/rules.txt b/Source/AnimalCrossingAmiiboFestival/rules.txt new file mode 100644 index 00000000..a9065402 --- /dev/null +++ b/Source/AnimalCrossingAmiiboFestival/rules.txt @@ -0,0 +1,83 @@ + +[Definition] +titleIds = 00050000101C6400,00050000101C6500,0005000010190100 +name = "Animal Crossing: amiibo Festival - " +version = 2 + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 2048 +#height = 2048 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 2046 +#height = 2046 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 854 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 800 +height = 250 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 640 +height = 360 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 45 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 40 +height = 22 +#formatsExcluded = +overwriteWidth = +overwriteHeight = diff --git a/build.sh b/build.sh index ec54db6e..9312c37b 100644 --- a/build.sh +++ b/build.sh @@ -116,6 +116,7 @@ just1080p=( "1080p" ) std_respack "AdventureTimeEtDBIDK" "${res16by9[@]/$just1080p}" std_respack "AdventureTimeFJI" "${res16by9[@]/$just720p}" +std_respack "AnimalCrossingAmiiboFestival" "${res16by9[@]/$just720p}" std_respack "AquaTV" "${res16by9[@]/$just720p}" std_respack "BatmanArkham" "${res16by9[@]/$just720p}" std_respack "Bayonetta" "${res16by9[@]/$just720p}" From 8dfa5e5d58ce9efc5059a0f855c13c603ae1d375 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 18:01:49 -0800 Subject: [PATCH 24/41] [CS, ACaF] Rename ACaF folder name, add more resolutions to CS thanks to rulesGen --- .../rules.txt | 2 +- Source/ColorSplash/rules.txt | 57 +++++++++++++++++++ build.sh | 2 +- 3 files changed, 59 insertions(+), 2 deletions(-) rename Source/{AnimalCrossingAmiiboFestival => AmiiboFestival}/rules.txt (98%) diff --git a/Source/AnimalCrossingAmiiboFestival/rules.txt b/Source/AmiiboFestival/rules.txt similarity index 98% rename from Source/AnimalCrossingAmiiboFestival/rules.txt rename to Source/AmiiboFestival/rules.txt index a9065402..c61cd824 100644 --- a/Source/AnimalCrossingAmiiboFestival/rules.txt +++ b/Source/AmiiboFestival/rules.txt @@ -29,7 +29,7 @@ version = 2 [TextureRedefine] width = 1280 height = 720 -#formatsExcluded = +tileModesExcluded = 0x001 overwriteWidth = overwriteHeight = diff --git a/Source/ColorSplash/rules.txt b/Source/ColorSplash/rules.txt index 654518af..9be22c35 100644 --- a/Source/ColorSplash/rules.txt +++ b/Source/ColorSplash/rules.txt @@ -20,8 +20,65 @@ tileModesExcluded = 0x001 overwriteWidth = overwriteHeight = +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1024 +#height = 1024 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + [TextureRedefine] width = 854 height = 480 +#formatsExcluded = overwriteWidth = overwriteHeight = + +[TextureRedefine] +width = 640 +height = 360 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 512 +#height = 512 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 256 +#height = 256 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 64 +#height = 64 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 32 +height = 18 +#formatsExcluded = +overwriteWidth = +overwriteHeight = diff --git a/build.sh b/build.sh index 9312c37b..eb4eb446 100644 --- a/build.sh +++ b/build.sh @@ -116,7 +116,7 @@ just1080p=( "1080p" ) std_respack "AdventureTimeEtDBIDK" "${res16by9[@]/$just1080p}" std_respack "AdventureTimeFJI" "${res16by9[@]/$just720p}" -std_respack "AnimalCrossingAmiiboFestival" "${res16by9[@]/$just720p}" +std_respack "AmiiboFestival" "${res16by9[@]/$just720p}" std_respack "AquaTV" "${res16by9[@]/$just720p}" std_respack "BatmanArkham" "${res16by9[@]/$just720p}" std_respack "Bayonetta" "${res16by9[@]/$just720p}" From da458f0af0e2859c85e9e844617cc93fd2d1c0a7 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 18:13:01 -0800 Subject: [PATCH 25/41] [WiiU] Add resolutions from menu --- Source/WiiUBIOS/rules.txt | 200 +++++++++++++++----------------------- 1 file changed, 77 insertions(+), 123 deletions(-) diff --git a/Source/WiiUBIOS/rules.txt b/Source/WiiUBIOS/rules.txt index aa24e3da..5bbebd30 100644 --- a/Source/WiiUBIOS/rules.txt +++ b/Source/WiiUBIOS/rules.txt @@ -24,18 +24,95 @@ formatsExcluded = 0x31,0x1a overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 1280 +height = 504 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + [TextureRedefine] # tv half width = 640 height = 360 overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 640 +height = 252 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + [TextureRedefine] # tv quarter width = 320 height = 180 overwriteWidth = overwriteHeight = +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 256 +#height = 256 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 106 +height = 60 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 45 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 48 +#height = 48 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 32 +#height = 32 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 24 +#height = 24 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 16 +#height = 16 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 8 +#height = 8 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + [TextureRedefine] # gamepad full width = 854 height = 480 @@ -54,126 +131,3 @@ width = 2176 height = 1248 #overwriteWidth = #overwriteHeight = - -#The following texture resolutions need to be checked in Nsight or PerfStudio - -#Daily Log -#0, 0, 32, 32 -#0, 0, 16, 16 -#0, 0, 8, 8 -#0, 0, 48, 48 -#0, 0, 24, 24 - -#Internet Browser -#0, 0, 128, 128 -#0, 0, 64, 128 -#0, 0, 256, 256 -#0, 0, 128, 256 -#0, 0, 2176, 1248 -#121, 107, 1038, 544 -#81, 72, 692, 362 -#114, 104, 1052, 551 -#77, 69, 700, 368 -#105, 99, 1070, 562 -#70, 66, 714, 374 -#94, 94, 1092, 573 -#63, 63, 728, 381 -#83, 88, 1114, 585 -#55, 59, 744, 390 -#70, 82, 1140, 598 -#47, 55, 760, 399 -#57, 76, 1166, 612 -#38, 51, 778, 407 -#45, 70, 1190, 625 -#30, 47, 794, 416 -#33, 64, 1214, 637 -#22, 43, 810, 425 -#22, 59, 1236, 648 -#15, 39, 824, 433 -#13, 54, 1254, 659 -#9, 36, 836, 439 -#6, 51, 1268, 666 -#4, 34, 846, 444 -#1, 49, 1278, 670 -#1, 33, 852, 446 -#0, 48, 1280, 672 -#0, 32, 854, 448 -#0, 47, 1280, 673 -#0, 31, 854, 449 -#0, 45, 1280, 675 -#0, 30, 854, 450 -#0, 42, 1280, 678 -#0, 28, 854, 452 -#0, 37, 1280, 683 -#0, 25, 854, 455 -#0, 32, 1280, 688 -#0, 21, 854, 459 -#0, 26, 1280, 694 -#0, 17, 854, 463 -#0, 20, 1280, 700 -#0, 13, 854, 467 -#0, 14, 1280, 706 -#0, 9, 854, 471 -#0, 8, 1280, 712 -#0, 5, 854, 475 -#0, 2, 1280, 718 -#0, 1, 854, 479 -#0, 0, 170, 256 -#0, 0, 256, 120 -#0, 0, 170, 120 -#0, 0, 424, 376 - -#Mii Maker -#0, 0, 650, 366 -#0, 0, 256, 256 -#0, 0, 64, 64 -#0, 0, 128, 256 -#0, 0, 32, 64 -#0, 0, 128, 128 -#0, 0, 460, 460 -#0, 0, 230, 460 - -#Nintendo eShop -#265, 170, 750, 381 -#177, 113, 500, 254 -#235, 134, 750, 381 -#157, 89, 500, 254 -#234, 133, 751, 382 -#234, 133, 752, 382 -#156, 89, 502, 254 -#233, 133, 753, 382 -#156, 88, 502, 255 -#233, 132, 754, 383 -#155, 88, 503, 256 -#232, 132, 756, 384 -#155, 88, 504, 256 - -#Parental Controls -#0, 0, 32, 32 -#0, 0, 16, 16 -#0, 0, 8, 8 -#0, 0, 48, 48 -#0, 0, 24, 24 -#0, 0, 213, 120 - -#System Settings -#0, 0, 32, 32 -#0, 0, 16, 16 -#0, 0, 8, 8 -#0, 0, 48, 48 -#0, 0, 24, 24 -#0, 0, 213, 120 - -#System Transfer (Crashes) -#0, 0, 256, 256 -#0, 0, 128, 256 -#0, 0, 128, 128 -#0, 0, 48, 48 - -#User Settings -#0, 0, 48, 48 -#0, 0, 24, 24 -#0, 0, 32, 32 -#0, 0, 16, 16 -#0, 0, 8, 8 -#0, 0, 213, 120 \ No newline at end of file From c57f15ca3a5cb188b3b407c279777ba1061ef53a Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 18:37:29 -0800 Subject: [PATCH 26/41] [MCSM] Add support --- Source/MinecraftStory/rules.txt | 62 +++++++++++++++++++++++++++++++++ build.sh | 1 + 2 files changed, 63 insertions(+) create mode 100644 Source/MinecraftStory/rules.txt diff --git a/Source/MinecraftStory/rules.txt b/Source/MinecraftStory/rules.txt new file mode 100644 index 00000000..527680da --- /dev/null +++ b/Source/MinecraftStory/rules.txt @@ -0,0 +1,62 @@ + + +[Definition] +titleIds = 00050000101E0100,000500001020A200,000500001020A300 +name = "Minecraft: Story Mode - " +version = 2 + +[TextureRedefine] +width = 1280 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1024 +#height = 1024 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1022 +#height = 1022 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 640 +height = 360 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 45 +#formatsExcluded = +overwriteWidth = +overwriteHeight = diff --git a/build.sh b/build.sh index eb4eb446..7aad6b1b 100644 --- a/build.sh +++ b/build.sh @@ -151,6 +151,7 @@ std_respack "MarioKart8" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9 std_respack "MarioSonicSochi" "${res16by9[@]/$just720p}" std_respack "MarioTennis" "${res16by9[@]/$just720p}" std_respack "MarioParty10" "${res16by9[@]/$just720p}" +std_respack "MinecraftStory" "${res16by9[@]/$just720p}" std_respack "MonsterHunter3Ultimate" "${res16by9[@]/$just1080p}" std_respack "NBA2K13" "${res16by9[@]/$just720p}" std_respack "NewSuperMarioBrosU" "${res16by9[@]/$just720p}" From 7702becf967e8bab7a90cf2aeb14cc307f628435 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 21:30:49 -0800 Subject: [PATCH 27/41] [ACaF] Fix Intro Video too lazy to open up sourcetree for a single change --- Source/AmiiboFestival/rules.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/AmiiboFestival/rules.txt b/Source/AmiiboFestival/rules.txt index c61cd824..4d6e06be 100644 --- a/Source/AmiiboFestival/rules.txt +++ b/Source/AmiiboFestival/rules.txt @@ -50,7 +50,7 @@ overwriteHeight = [TextureRedefine] width = 640 height = 360 -#formatsExcluded = +tileModesExcluded = 0x001 overwriteWidth = overwriteHeight = From 803e3ed3fcad06bad9938b23bbdeb8695266e072 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 23:02:41 -0800 Subject: [PATCH 28/41] [TokyoM] Add support Doesn't boot for me on 1.11.4 but boots for others, so I'm adding it. Got the resolutions via Cemu 1.6.4 --- Source/TokyoMirage/rules.txt | 132 +++++++++++++++++++++++++++++++++++ build.sh | 1 + 2 files changed, 133 insertions(+) create mode 100644 Source/TokyoMirage/rules.txt diff --git a/Source/TokyoMirage/rules.txt b/Source/TokyoMirage/rules.txt new file mode 100644 index 00000000..f4b06bac --- /dev/null +++ b/Source/TokyoMirage/rules.txt @@ -0,0 +1,132 @@ + + +[Definition] +titleIds = 00050000101ED700,00050000101ED800,0005000010131D00 +name = "Tokyo Mirage Sessions FE - " +version = 2 + +[TextureRedefine] +width = 1280 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 340 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1147 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1024 +height = 2048 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1024 +#height = 1024 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 1014 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 881 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 854 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 854 +height = 342 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 853 +height = 232 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 640 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 640 +height = 360 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 300 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 266 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 254 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 120 +#formatsExcluded = +overwriteWidth = +overwriteHeight = diff --git a/build.sh b/build.sh index 7aad6b1b..cdabb45b 100644 --- a/build.sh +++ b/build.sh @@ -182,6 +182,7 @@ std_respack "TNTRacers" "${res16by9[@]/$just1080p}" std_respack "TaikoNoTatsujin" "${res16by9[@]/$just720p}" std_respack "Tekken" "${res16by9[@]/$just720p}" std_respack "Tengami" "${res16by9[@]/$just720p}" +std_respack "TokyoMirage" "${res16by9[@]/$just720p}" std_respack "TropicalFreeze" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "TurboSuperStuntSquad" "${res16by9[@]/$just720p}" std_respack "TwilightPrincessHD" "${res16by9[@]/$just1080p}" From 46e193f8cb49cf635c634361d680a2bc5eacdc05 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 23:29:32 -0800 Subject: [PATCH 29/41] [RoL/Rio] Add support Games don't currently boot in 1.11.4 but I'm adding back support for later versions also sonic team why the fuck are you using -1 in rio --- Source/MarioSonicRio/rules.txt | 267 +++++++++++++++++++++++++++++++-- Source/RiseOfLyric/rules.txt | 90 +++++++++++ Source/TokyoMirage/rules.txt | 4 +- build.sh | 2 + 4 files changed, 352 insertions(+), 11 deletions(-) create mode 100644 Source/RiseOfLyric/rules.txt diff --git a/Source/MarioSonicRio/rules.txt b/Source/MarioSonicRio/rules.txt index cdaae961..652351b0 100644 --- a/Source/MarioSonicRio/rules.txt +++ b/Source/MarioSonicRio/rules.txt @@ -8,37 +8,286 @@ $scaleFactorY = $fullHeight / 720.0; $title = get_title($fullWidth, $fullHeight); ?> [Definition] -titleIds = 00050000101E5300 +titleIds = 0005000010190300,00050000101e5300,00050000101e5400,0005000210190301,00050002101e5401 name = "Mario & Sonic at the Rio 2016 Olympic Games - " version = 2 [TextureRedefine] width = 1280 height = 720 +tileModesExcluded = 0x001 overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 1200 +height = 100 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1040 +height = 60 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1024 +#height = 1024 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 880 +height = 226 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 854 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 832 +height = 40 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 784 +height = 130 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 672 +height = 64 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 656 +height = 46 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + [TextureRedefine] width = 640 -height = 360 -tileModesExcluded = 0x001 +height = 80 +#formatsExcluded = overwriteWidth = -overwriteHeight = +overwriteHeight = + +[TextureRedefine] +width = 624 +height = 40 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 608 +height = 624 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 570 +height = 420 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 544 +height = 160 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 512 +#height = 512 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 512 +height = 34 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 400 +height = 40 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 336 +height = 60 +#formatsExcluded = +overwriteWidth = +overwriteHeight = [TextureRedefine] width = 320 height = 180 +#formatsExcluded = overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 320 +height = 40 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 320 +height = 24 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 280 +height = 76 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 272 +height = 50 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 256 +height = 52 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 224 +height = 52 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + [TextureRedefine] width = 160 height = 90 +#formatsExcluded = overwriteWidth = overwriteHeight = -[TextureRedefine] # gamepad -width = 854 -height = 480 -#overwriteWidth = -#overwriteHeight = +[TextureRedefine] +width = 160 +height = 46 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 38 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 128 +height = 58 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 45 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 64 +#height = 64 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 40 +height = 22 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 20 +height = 11 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 16 +#height = 16 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 10 +height = 5 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 5 +height = 2 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 4 +#height = 4 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 2 +height = 1 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1 +#height = 1 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = diff --git a/Source/RiseOfLyric/rules.txt b/Source/RiseOfLyric/rules.txt new file mode 100644 index 00000000..dbea4311 --- /dev/null +++ b/Source/RiseOfLyric/rules.txt @@ -0,0 +1,90 @@ + + +[Definition] +titleIds = 0005000010175B00,0005000010177800,0005000010191F00 +name = "Sonic Boom: Rise of Lyric - " +version = 2 + +[TextureRedefine] +width = 1280 +height = 720 +tileModesExcluded = 0x001 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 854 +height = 480 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 640 +height = 360 +tileModesExcluded = 0x001 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 256 +#height = 256 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 80 +height = 45 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 64 +#height = 64 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 16 +#height = 16 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 4 +#height = 4 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = + +#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded +#width = 1 +#height = 1 +#formatsExcluded = +#overwriteWidth = +#overwriteHeight = diff --git a/Source/TokyoMirage/rules.txt b/Source/TokyoMirage/rules.txt index f4b06bac..2c34eabb 100644 --- a/Source/TokyoMirage/rules.txt +++ b/Source/TokyoMirage/rules.txt @@ -15,7 +15,7 @@ version = 2 [TextureRedefine] width = 1280 height = 720 -#formatsExcluded = +tileModesExcluded = 0x001 overwriteWidth = overwriteHeight = @@ -92,7 +92,7 @@ overwriteHeight = [TextureRedefine] width = 640 height = 360 -#formatsExcluded = +tileModesExcluded = 0x001 overwriteWidth = overwriteHeight = diff --git a/build.sh b/build.sh index cdabb45b..d2ecb062 100644 --- a/build.sh +++ b/build.sh @@ -148,6 +148,7 @@ std_respack "KirbyRainbowCurse" "${res16by9[@]/$just720p}" std_respack "KungFuPanda" "${res16by9[@]/$just720p}" std_respack "LEGOCityUndercover" "${res16by9[@]/$just720p}" std_respack "MarioKart8" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" +std_respack "MarioSonicRio" "${res16by9[@]/$just720p}" std_respack "MarioSonicSochi" "${res16by9[@]/$just720p}" std_respack "MarioTennis" "${res16by9[@]/$just720p}" std_respack "MarioParty10" "${res16by9[@]/$just720p}" @@ -164,6 +165,7 @@ std_respack "Pikmin3" "${res16by9[@]/$just720p}" std_respack "PokkenTournament" "${res16by9[@]/$just720p}" std_respack "ProjectZero" "${res16by9[@]/$just720p}" std_respack "PuyoPuyoTetris" "${res16by9[@]/$just1080p}" +std_respack "RiseOfLyric" "${res16by9[@]/$just720p}" std_respack "SanatoryHallways" "${res16by9[@]/$just720p}" std_respack "ScribblenautsUnlimited" "${res16by9[@]/$just720p}" std_respack "ScribblenautsUnmasked" "${res16by9[@]/$just720p}" From 5c7859eedac483a2f059c4a1741998ec74446d88 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Feb 2018 23:32:52 -0800 Subject: [PATCH 30/41] [Rio] Scale gamepad --- Source/MarioSonicRio/rules.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/MarioSonicRio/rules.txt b/Source/MarioSonicRio/rules.txt index 652351b0..e392e12c 100644 --- a/Source/MarioSonicRio/rules.txt +++ b/Source/MarioSonicRio/rules.txt @@ -8,7 +8,7 @@ $scaleFactorY = $fullHeight / 720.0; $title = get_title($fullWidth, $fullHeight); ?> [Definition] -titleIds = 0005000010190300,00050000101e5300,00050000101e5400,0005000210190301,00050002101e5401 +titleIds = 0005000010190300,00050000101E5300,00050000101E5400,0005000210190301,00050002101E5301,00050002101E5401 name = "Mario & Sonic at the Rio 2016 Olympic Games - " version = 2 @@ -51,8 +51,8 @@ overwriteHeight = width = 854 height = 480 #formatsExcluded = -overwriteWidth = -overwriteHeight = +overwriteWidth = +overwriteHeight = [TextureRedefine] width = 832 From 0288012386d55f1be05e26465d0db0b6c49bab4b Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 4 Feb 2018 11:15:44 -0800 Subject: [PATCH 31/41] [RoL] fix loading screen --- Source/RiseOfLyric/rules.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/RiseOfLyric/rules.txt b/Source/RiseOfLyric/rules.txt index dbea4311..0556c6ac 100644 --- a/Source/RiseOfLyric/rules.txt +++ b/Source/RiseOfLyric/rules.txt @@ -15,7 +15,8 @@ version = 2 [TextureRedefine] width = 1280 height = 720 -tileModesExcluded = 0x001 +tileModesExcluded = 0x1 +formatsExcluded = 0x31 overwriteWidth = overwriteHeight = @@ -29,7 +30,7 @@ overwriteHeight = [TextureRedefine] width = 640 height = 360 -tileModesExcluded = 0x001 +tileModesExcluded = 0x1 overwriteWidth = overwriteHeight = From 3954c9e24365c4b09ee0508bfe06297313867089 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 4 Feb 2018 11:30:12 -0800 Subject: [PATCH 32/41] [Rio] fix message background --- Source/MarioSonicRio/rules.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/MarioSonicRio/rules.txt b/Source/MarioSonicRio/rules.txt index e392e12c..5164a742 100644 --- a/Source/MarioSonicRio/rules.txt +++ b/Source/MarioSonicRio/rules.txt @@ -15,7 +15,8 @@ version = 2 [TextureRedefine] width = 1280 height = 720 -tileModesExcluded = 0x001 +tileModesExcluded = 0x1 +formatsExcluded = 0x31 overwriteWidth = overwriteHeight = From 38408992525cf5b39046eb7e16341aff5598f866 Mon Sep 17 00:00:00 2001 From: getdls Date: Sun, 4 Feb 2018 23:13:06 +0100 Subject: [PATCH 33/41] [GBHD] - Updated rules --- Source/GhostBladeHD/rules.txt | 123 ++++++++++++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 4 deletions(-) diff --git a/Source/GhostBladeHD/rules.txt b/Source/GhostBladeHD/rules.txt index 84b83722..d7566eb4 100644 --- a/Source/GhostBladeHD/rules.txt +++ b/Source/GhostBladeHD/rules.txt @@ -6,19 +6,134 @@ $scaleFactorX = $fullWidth / 1280.0; $scaleFactorY = $fullHeight / 720.0; $title = get_title($fullWidth, $fullHeight); ?> + [Definition] titleIds = 00050000101FFC00 -name = "Ghost Blade HD - " +name = "Ghost Blade HD - " version = 2 [TextureRedefine] width = 1280 height = 720 +#formatsExcluded = overwriteWidth = overwriteHeight = -[TextureRedefine] # gamepad +[TextureRedefine] +width = 1280 +height = 220 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 183 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 147 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 109 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 73 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 1280 +height = 36 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] width = 854 height = 480 -#overwriteWidth = -#overwriteHeight = +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 576 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 293 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 256 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 220 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 183 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 147 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 109 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 73 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 435 +height = 36 +#formatsExcluded = +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 352 +height = 720 +#formatsExcluded = +overwriteWidth = +overwriteHeight = From f1b19a36d4328047285b0da79783f2893e02eaf6 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Feb 2018 17:58:06 -0800 Subject: [PATCH 34/41] [Smash 4] add 8-player results framebuffers from GX2 log i didn't bother finding formats for 160 and 135, let me know on discord if anything breaks --- Source/SuperSmashBros/rules.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Source/SuperSmashBros/rules.txt b/Source/SuperSmashBros/rules.txt index 6a4c55e2..07b2ca32 100644 --- a/Source/SuperSmashBros/rules.txt +++ b/Source/SuperSmashBros/rules.txt @@ -24,12 +24,24 @@ height = 540 overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 960 +height = 360 +overwriteWidth = +overwriteHeight = + [TextureRedefine] # q-res width = 480 height = 270 overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 480 +height = 180 +overwriteWidth = +overwriteHeight = + [TextureRedefine] # o-res width = 240 height = 135 @@ -78,6 +90,24 @@ height = 210 overwriteWidth = overwriteHeight = +[TextureRedefine] +width = 249 +height = 250 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 160 +height = 160 +overwriteWidth = +overwriteHeight = + +[TextureRedefine] +width = 135 +height = 135 +overwriteWidth = +overwriteHeight = + [TextureRedefine] # gamepad width = 854 height = 480 From cab63346dcad67920c899b265cf9b59056fa1184 Mon Sep 17 00:00:00 2001 From: Xalphenos Date: Tue, 6 Feb 2018 21:07:29 -0600 Subject: [PATCH 35/41] Create readme.txt --- Modifications/BreathOfTheWild_Cheats/readme.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Modifications/BreathOfTheWild_Cheats/readme.txt diff --git a/Modifications/BreathOfTheWild_Cheats/readme.txt b/Modifications/BreathOfTheWild_Cheats/readme.txt new file mode 100644 index 00000000..5e5fc5aa --- /dev/null +++ b/Modifications/BreathOfTheWild_Cheats/readme.txt @@ -0,0 +1,7 @@ +BotW Cheats by C313571N and Xalphenos. + +All cheats are enabled by default. To disable a cheat add a semicolon ";" to the front of the line. +Example: +;0x02D90CC0 = fmr f29, f1; Inf Stamina +Burning of wooden items does not decrease durability, but measures for how long the item is burning and when it is long enough, item is instantly destroyed regardless of current durability. +Throwing a weapon instantly destroys it. From 6659cd2d7286f04766d130a93df1d8a54db1f907 Mon Sep 17 00:00:00 2001 From: Xalphenos Date: Tue, 6 Feb 2018 21:08:34 -0600 Subject: [PATCH 36/41] Add files via upload --- Modifications/BreathOfTheWild_Cheats/rules.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Modifications/BreathOfTheWild_Cheats/rules.txt diff --git a/Modifications/BreathOfTheWild_Cheats/rules.txt b/Modifications/BreathOfTheWild_Cheats/rules.txt new file mode 100644 index 00000000..5ae8eaf5 --- /dev/null +++ b/Modifications/BreathOfTheWild_Cheats/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 +name = "The Legend of Zelda: Breath of the Wild - Cheats (view readme)" +version = 2 From 45b104b23a95b13cd3f7b4ed6c683781b21d60da Mon Sep 17 00:00:00 2001 From: Xalphenos Date: Tue, 6 Feb 2018 21:09:16 -0600 Subject: [PATCH 37/41] Add files via upload --- .../BreathOfTheWild_Cheats/patches.txt.txt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Modifications/BreathOfTheWild_Cheats/patches.txt.txt diff --git a/Modifications/BreathOfTheWild_Cheats/patches.txt.txt b/Modifications/BreathOfTheWild_Cheats/patches.txt.txt new file mode 100644 index 00000000..c31a669a --- /dev/null +++ b/Modifications/BreathOfTheWild_Cheats/patches.txt.txt @@ -0,0 +1,35 @@ +[BotwV208] +moduleMatches = 0x6267BFD0 + +#Cheats + +0x02D90CC0 = fmr f29, f1; Inf Stamina +0x02D452A4 = nop; Inf Hearts +0x02EB6758 = nop; Inf Arrows +0x100C4F94 = .float 3; faster arrow draw (1 is default speed) +0x02D91DBC = fmuls f0, f13, f12; Inf Mipha's Grace +0x02CE0328 = nop; Inf Revali's Gale +0x02D74498 = nop; Inf Daruk's Protection +0x02D741C8 = nop; Inf Urbosa's Fury +0x029E949C = mr r29, r11; Inf Amiibo +0x020957DC = fmr f12, f0; Inf Motorcycle Energy +0x024ACBF4 = fsub f31, f31, f31; Inf Weapons, Bows and Shields (except burn damage and throwing weapon) + + + +[BotwV176V192] +moduleMatches = 0xFD091F9F,0xD472D8A5 + +#Cheats + +0x02D90724 = fmr f29, f1 ;inf stamina +0x02D44D44 = nop ;inf hearts +0x02EB61BC = nop ;inf arrows +0x100C4F34 = .float 3; faster arrow draw (1 is default speed) +0x02D91820 = fmuls f0, f13, f12; Inf Mipha's Grace +0x02CDFE0C = nop; Inf Revali's Gale +0x02D73EFC = nop; Inf Daruk's Protection +0x02D73C2C = nop; Inf Urbosa's Fury +0x029E90F0 = mr r29, r11; Inf Amiibo +0x0209583C = fmr f12, f0; Inf Motorcycle Energy +0x024AC850 = fsub f31, f31, f31; Inf Weapons, Bows and Shields (except burn damage and throwing weapon) \ No newline at end of file From ef0785eccb6f14c6f88c9ebfafaa982f3ed23301 Mon Sep 17 00:00:00 2001 From: Xalphenos Date: Tue, 6 Feb 2018 21:12:27 -0600 Subject: [PATCH 38/41] Rename patches.txt.txt to patches.txt --- .../BreathOfTheWild_Cheats/{patches.txt.txt => patches.txt} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Modifications/BreathOfTheWild_Cheats/{patches.txt.txt => patches.txt} (93%) diff --git a/Modifications/BreathOfTheWild_Cheats/patches.txt.txt b/Modifications/BreathOfTheWild_Cheats/patches.txt similarity index 93% rename from Modifications/BreathOfTheWild_Cheats/patches.txt.txt rename to Modifications/BreathOfTheWild_Cheats/patches.txt index c31a669a..436772f3 100644 --- a/Modifications/BreathOfTheWild_Cheats/patches.txt.txt +++ b/Modifications/BreathOfTheWild_Cheats/patches.txt @@ -32,4 +32,4 @@ moduleMatches = 0xFD091F9F,0xD472D8A5 0x02D73C2C = nop; Inf Urbosa's Fury 0x029E90F0 = mr r29, r11; Inf Amiibo 0x0209583C = fmr f12, f0; Inf Motorcycle Energy -0x024AC850 = fsub f31, f31, f31; Inf Weapons, Bows and Shields (except burn damage and throwing weapon) \ No newline at end of file +0x024AC850 = fsub f31, f31, f31; Inf Weapons, Bows and Shields (except burn damage and throwing weapon) From 1a0d1b2d0617c3493307945346ac87a76be95f50 Mon Sep 17 00:00:00 2001 From: emoose Date: Wed, 7 Feb 2018 18:49:00 +0000 Subject: [PATCH 39/41] [HW] Add support for JP release --- Enhancement/HyruleWarriors_HighResShadows/rules.txt | 3 +-- Modifications/HyruleWarriors_60FPS/rules.txt | 2 +- Workaround/HyruleWarriors_30FPS/rules.txt | 2 +- Workaround/HyruleWarriors_DLCFix/rules.txt | 2 +- Workaround/HyruleWarriors_DoFBlurRemoval/rules.txt | 2 +- Workaround/HyruleWarriors_EnemyDeathFix/rules.txt | 2 +- Workaround/HyruleWarriors_ShadowRemoval/rules.txt | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Enhancement/HyruleWarriors_HighResShadows/rules.txt b/Enhancement/HyruleWarriors_HighResShadows/rules.txt index 324e49bd..bee43b29 100644 --- a/Enhancement/HyruleWarriors_HighResShadows/rules.txt +++ b/Enhancement/HyruleWarriors_HighResShadows/rules.txt @@ -1,6 +1,5 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 - +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - Higher Quality Shadows" version = 2 diff --git a/Modifications/HyruleWarriors_60FPS/rules.txt b/Modifications/HyruleWarriors_60FPS/rules.txt index d7799a52..d1d3fd35 100644 --- a/Modifications/HyruleWarriors_60FPS/rules.txt +++ b/Modifications/HyruleWarriors_60FPS/rules.txt @@ -1,4 +1,4 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - 60FPS Fixes (requires stable 60FPS!)" version = 2 diff --git a/Workaround/HyruleWarriors_30FPS/rules.txt b/Workaround/HyruleWarriors_30FPS/rules.txt index 941e350e..6917142a 100644 --- a/Workaround/HyruleWarriors_30FPS/rules.txt +++ b/Workaround/HyruleWarriors_30FPS/rules.txt @@ -1,5 +1,5 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - 30FPS Lock" version = 2 diff --git a/Workaround/HyruleWarriors_DLCFix/rules.txt b/Workaround/HyruleWarriors_DLCFix/rules.txt index 1f596514..6d2ecdc9 100644 --- a/Workaround/HyruleWarriors_DLCFix/rules.txt +++ b/Workaround/HyruleWarriors_DLCFix/rules.txt @@ -1,4 +1,4 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - DLC Fix" version = 2 diff --git a/Workaround/HyruleWarriors_DoFBlurRemoval/rules.txt b/Workaround/HyruleWarriors_DoFBlurRemoval/rules.txt index 2a170a23..3ecd1b5b 100644 --- a/Workaround/HyruleWarriors_DoFBlurRemoval/rules.txt +++ b/Workaround/HyruleWarriors_DoFBlurRemoval/rules.txt @@ -1,4 +1,4 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - DoF Blur Removal" version = 2 diff --git a/Workaround/HyruleWarriors_EnemyDeathFix/rules.txt b/Workaround/HyruleWarriors_EnemyDeathFix/rules.txt index 890ba9b7..9d84f3bb 100644 --- a/Workaround/HyruleWarriors_EnemyDeathFix/rules.txt +++ b/Workaround/HyruleWarriors_EnemyDeathFix/rules.txt @@ -1,4 +1,4 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - NVIDIA Enemy Death Fix" version = 2 diff --git a/Workaround/HyruleWarriors_ShadowRemoval/rules.txt b/Workaround/HyruleWarriors_ShadowRemoval/rules.txt index 4c3f5620..b5ab51dc 100644 --- a/Workaround/HyruleWarriors_ShadowRemoval/rules.txt +++ b/Workaround/HyruleWarriors_ShadowRemoval/rules.txt @@ -1,4 +1,4 @@ [Definition] -titleIds = 000500001017D800,000500001017D900 +titleIds = 000500001017D800,000500001017D900,000500001017CD00 name = "Hyrule Warriors - Shadow Removal" version = 2 From 17e430f91225406c7a73f132b5d525d8fa2aca83 Mon Sep 17 00:00:00 2001 From: epigramx Date: Wed, 7 Feb 2018 12:15:45 +0200 Subject: [PATCH 40/41] Static FPS mods from https://forum.cemu.info/showthread.php/421 --- .../patches.txt | 108 ++++++++++++++++++ .../readme.txt | 15 +++ .../BreathOfTheWid_static_30FPS_mod/rules.txt | 7 ++ .../patches.txt | 108 ++++++++++++++++++ .../readme.txt | 15 +++ .../BreathOfTheWid_static_45FPS_mod/rules.txt | 7 ++ .../patches.txt | 108 ++++++++++++++++++ .../readme.txt | 15 +++ .../BreathOfTheWid_static_60FPS_mod/rules.txt | 7 ++ 9 files changed, 390 insertions(+) create mode 100644 Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt create mode 100644 Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt create mode 100644 Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt create mode 100644 Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt create mode 100644 Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt create mode 100644 Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt create mode 100644 Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt create mode 100644 Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt create mode 100644 Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt diff --git a/Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt b/Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt new file mode 100644 index 00000000..33a97627 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt @@ -0,0 +1,108 @@ +[BotwFPSV208] #i.e. v1.5.0 +moduleMatches = 0x6267BFD0 + +#Cave +codeCaveSize = 0x1C +_multiplier = 0x0 # edit the next line to change the multiplier +0x00000000 = .float 1.00 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 +_targetfps = 0x18 # edit the next line to change the target fps +0x18 = .float 30 + +#"Best fence" by Rajkosto +_fenceNeg1 = 0x00000004 +0x00000004 = add r6, r12, r0 #orig instruction we are replacing +0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x0000000C = blt .+0x08 #skip subtract if less than +0x00000010 = subi r6, r6, 1 #do the subtract +0x00000014 = blr #return + +#Extreme simplification of FPS++ by Xalphenos +#codeChanges +0x031FA97C = nop +0x03793328 = nop +0x03793334 = nop +0x03793378 = lis r29, _multiplier@ha +0x03793380 = lfs f0, _multiplier@L(r29) +0x0379338C = nop +0x03415C1C = lis r12, _multiplier@ha +0x03415C24 = lfs f0, _multiplier@l(r12) +0x03415C2C = nop +0x02D90D2C = lis r10, _targetfps@ha +0x02D90D30 = lfs f11, _targetfps@l(r10) +0x02D90D88 = lis r10, _targetfps@ha +0x02D90D8C = lfs f11, _targetfps@l(r10) + +#Break all forms of frame limiting +0x031FAAFC = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) +#0x031FAAE8 = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) +#0x031FAB00 = nop #skip fence (no waiting on GPU) +0x031FACD0 = nop #disable vsync +0x031FACF4 = nop #disable vsync loop + +#Additional vsync dropping +0x0309D030 = nop #disable vsync +0x0309D054 = nop #disable vsync loop + +#For testing, the original static mod lines (commented out by default): +#0x031FB0C0 = li r0, 1 +#0x031FB104 = li r0, 1 + +#Cheats +#0x02D90CC0 = fmr f29, f1 #inf stamina +#0x02D452A4 = nop #inf hearts +#0x02EB6758 = nop #inf arrows + +[BotwFPSv176V192] #i.e. v1.4.0 and v1.4.1 +moduleMatches = 0xFD091F9F,0xD472D8A5 + +#Cave +codeCaveSize = 0x1C +_multiplier = 0x0 # edit the next line to change the multiplier +0x00000000 = .float 1.00 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 +_targetfps = 0x18 # edit the next line to change the target fps +0x18 = .float 30 + +#"Best fence" by Rajkosto +_fenceNeg1 = 0x00000004 +0x00000004 = add r6, r12, r0 #orig instruction we are replacing +0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x0000000C = blt .+0x08 #skip subtract if less than +0x00000010 = subi r6, r6, 1 #do the subtract +0x00000014 = blr #return + +#Extreme simplification of FPS++ by Xalphenos +#codeChanges +0x031F9E80 = nop +0x03792620 = nop +0x0379262C = nop +0x03792670 = lis r29, _multiplier@ha +0x03792678 = lfs f0, _multiplier@L(r29) +0x03792684 = nop +0x03414EF8 = lis r12, _multiplier@ha +0x03414F00 = lfs f0, _multiplier@l(r12) +0x03414F08 = nop +0x02D90790 = lis r10, _targetfps@ha +0x02D90794 = lfs f11, _targetfps@l(r10) +0x02D907EC = lis r10, _targetfps@ha +0x02D907F0 = lfs f11, _targetfps@l(r10) + +#Break all forms of frame limiting +0x031FA000 = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) +#0x031F9FEC = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) +#0x031FA004 = nop #skip fence (no waiting on GPU) +0x031FA1D4 = nop #disable vsync +0x031FA1F8 = nop #disable vsync loop + +#Additional vsync dropping +0x0309C9A4 = nop #disable vsync +0x0309C9C8 = nop #disable vsync loop + +#For testing, the original static mod lines (commented out by default): +#0x031FA5C4 = li r0, 1 +#0x031FA608 = li r0, 1 + +#Cheats +#0x02D90724 = fmr f29, f1 #inf stamina +#0x02D44D44 = nop #inf hearts +#0x02EB61BC = nop #inf arrows + diff --git a/Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt b/Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt new file mode 100644 index 00000000..c6c9d413 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt @@ -0,0 +1,15 @@ +This is based on an extreme simplification of the fps++ mod by Xalphenos; it +drops dynamic FPS to get back stability. The Rajkosto "best fence" method is +also included for performance and stability. It improves over the previous +static fps mod because it allows ANY value as a static fps target and it +also includes the stamina fix. + +To use it simply grab one of the uploaded versions or edit one with these +changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use +the result of that calculation and the target fps in patches.txt. + +Disclaimer: this is different from the static FPS mod ported recently. The main +advantage of this one is that it allows ANY static FPS instead of only 60, 30, +20.. and it also includes the stamina fix. + + epigramx diff --git a/Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt b/Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt new file mode 100644 index 00000000..04e6b4f8 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt @@ -0,0 +1,7 @@ +[Definition] +titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 +name = "The Legend of Zelda: Breath of the Wild - static 30FPS mod" +version = 2 + +[Control] +vsyncFrequency = 30 diff --git a/Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt b/Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt new file mode 100644 index 00000000..03d71f16 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt @@ -0,0 +1,108 @@ +[BotwFPSV208] #i.e. v1.5.0 +moduleMatches = 0x6267BFD0 + +#Cave +codeCaveSize = 0x1C +_multiplier = 0x0 # edit the next line to change the multiplier +0x00000000 = .float 0.66667 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 +_targetfps = 0x18 # edit the next line to change the target fps +0x18 = .float 45 + +#"Best fence" by Rajkosto +_fenceNeg1 = 0x00000004 +0x00000004 = add r6, r12, r0 #orig instruction we are replacing +0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x0000000C = blt .+0x08 #skip subtract if less than +0x00000010 = subi r6, r6, 1 #do the subtract +0x00000014 = blr #return + +#Extreme simplification of FPS++ by Xalphenos +#codeChanges +0x031FA97C = nop +0x03793328 = nop +0x03793334 = nop +0x03793378 = lis r29, _multiplier@ha +0x03793380 = lfs f0, _multiplier@L(r29) +0x0379338C = nop +0x03415C1C = lis r12, _multiplier@ha +0x03415C24 = lfs f0, _multiplier@l(r12) +0x03415C2C = nop +0x02D90D2C = lis r10, _targetfps@ha +0x02D90D30 = lfs f11, _targetfps@l(r10) +0x02D90D88 = lis r10, _targetfps@ha +0x02D90D8C = lfs f11, _targetfps@l(r10) + +#Break all forms of frame limiting +0x031FAAFC = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) +#0x031FAAE8 = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) +#0x031FAB00 = nop #skip fence (no waiting on GPU) +0x031FACD0 = nop #disable vsync +0x031FACF4 = nop #disable vsync loop + +#Additional vsync dropping +0x0309D030 = nop #disable vsync +0x0309D054 = nop #disable vsync loop + +#For testing, the original static mod lines (commented out by default): +#0x031FB0C0 = li r0, 1 +#0x031FB104 = li r0, 1 + +#Cheats +#0x02D90CC0 = fmr f29, f1 #inf stamina +#0x02D452A4 = nop #inf hearts +#0x02EB6758 = nop #inf arrows + +[BotwFPSv176V192] #i.e. v1.4.0 and v1.4.1 +moduleMatches = 0xFD091F9F,0xD472D8A5 + +#Cave +codeCaveSize = 0x1C +_multiplier = 0x0 # edit the next line to change the multiplier +0x00000000 = .float 0.66667 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 +_targetfps = 0x18 # edit the next line to change the target fps +0x18 = .float 45 + +#"Best fence" by Rajkosto +_fenceNeg1 = 0x00000004 +0x00000004 = add r6, r12, r0 #orig instruction we are replacing +0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x0000000C = blt .+0x08 #skip subtract if less than +0x00000010 = subi r6, r6, 1 #do the subtract +0x00000014 = blr #return + +#Extreme simplification of FPS++ by Xalphenos +#codeChanges +0x031F9E80 = nop +0x03792620 = nop +0x0379262C = nop +0x03792670 = lis r29, _multiplier@ha +0x03792678 = lfs f0, _multiplier@L(r29) +0x03792684 = nop +0x03414EF8 = lis r12, _multiplier@ha +0x03414F00 = lfs f0, _multiplier@l(r12) +0x03414F08 = nop +0x02D90790 = lis r10, _targetfps@ha +0x02D90794 = lfs f11, _targetfps@l(r10) +0x02D907EC = lis r10, _targetfps@ha +0x02D907F0 = lfs f11, _targetfps@l(r10) + +#Break all forms of frame limiting +0x031FA000 = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) +#0x031F9FEC = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) +#0x031FA004 = nop #skip fence (no waiting on GPU) +0x031FA1D4 = nop #disable vsync +0x031FA1F8 = nop #disable vsync loop + +#Additional vsync dropping +0x0309C9A4 = nop #disable vsync +0x0309C9C8 = nop #disable vsync loop + +#For testing, the original static mod lines (commented out by default): +#0x031FA5C4 = li r0, 1 +#0x031FA608 = li r0, 1 + +#Cheats +#0x02D90724 = fmr f29, f1 #inf stamina +#0x02D44D44 = nop #inf hearts +#0x02EB61BC = nop #inf arrows + diff --git a/Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt b/Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt new file mode 100644 index 00000000..c6c9d413 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt @@ -0,0 +1,15 @@ +This is based on an extreme simplification of the fps++ mod by Xalphenos; it +drops dynamic FPS to get back stability. The Rajkosto "best fence" method is +also included for performance and stability. It improves over the previous +static fps mod because it allows ANY value as a static fps target and it +also includes the stamina fix. + +To use it simply grab one of the uploaded versions or edit one with these +changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use +the result of that calculation and the target fps in patches.txt. + +Disclaimer: this is different from the static FPS mod ported recently. The main +advantage of this one is that it allows ANY static FPS instead of only 60, 30, +20.. and it also includes the stamina fix. + + epigramx diff --git a/Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt b/Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt new file mode 100644 index 00000000..2ff1fcfa --- /dev/null +++ b/Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt @@ -0,0 +1,7 @@ +[Definition] +titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 +name = "The Legend of Zelda: Breath of the Wild - static 45FPS mod" +version = 2 + +[Control] +vsyncFrequency = 45 diff --git a/Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt b/Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt new file mode 100644 index 00000000..fffed5d6 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt @@ -0,0 +1,108 @@ +[BotwFPSV208] #i.e. v1.5.0 +moduleMatches = 0x6267BFD0 + +#Cave +codeCaveSize = 0x1C +_multiplier = 0x0 # edit the next line to change the multiplier +0x00000000 = .float 0.5 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 +_targetfps = 0x18 # edit the next line to change the target fps +0x18 = .float 60 + +#"Best fence" by Rajkosto +_fenceNeg1 = 0x00000004 +0x00000004 = add r6, r12, r0 #orig instruction we are replacing +0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x0000000C = blt .+0x08 #skip subtract if less than +0x00000010 = subi r6, r6, 1 #do the subtract +0x00000014 = blr #return + +#Extreme simplification of FPS++ by Xalphenos +#codeChanges +0x031FA97C = nop +0x03793328 = nop +0x03793334 = nop +0x03793378 = lis r29, _multiplier@ha +0x03793380 = lfs f0, _multiplier@L(r29) +0x0379338C = nop +0x03415C1C = lis r12, _multiplier@ha +0x03415C24 = lfs f0, _multiplier@l(r12) +0x03415C2C = nop +0x02D90D2C = lis r10, _targetfps@ha +0x02D90D30 = lfs f11, _targetfps@l(r10) +0x02D90D88 = lis r10, _targetfps@ha +0x02D90D8C = lfs f11, _targetfps@l(r10) + +#Break all forms of frame limiting +0x031FAAFC = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) +#0x031FAAE8 = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) +#0x031FAB00 = nop #skip fence (no waiting on GPU) +0x031FACD0 = nop #disable vsync +0x031FACF4 = nop #disable vsync loop + +#Additional vsync dropping +0x0309D030 = nop #disable vsync +0x0309D054 = nop #disable vsync loop + +#For testing, the original static mod lines (commented out by default): +#0x031FB0C0 = li r0, 1 +#0x031FB104 = li r0, 1 + +#Cheats +#0x02D90CC0 = fmr f29, f1 #inf stamina +#0x02D452A4 = nop #inf hearts +#0x02EB6758 = nop #inf arrows + +[BotwFPSv176V192] #i.e. v1.4.0 and v1.4.1 +moduleMatches = 0xFD091F9F,0xD472D8A5 + +#Cave +codeCaveSize = 0x1C +_multiplier = 0x0 # edit the next line to change the multiplier +0x00000000 = .float 0.5 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 +_targetfps = 0x18 # edit the next line to change the target fps +0x18 = .float 60 + +#"Best fence" by Rajkosto +_fenceNeg1 = 0x00000004 +0x00000004 = add r6, r12, r0 #orig instruction we are replacing +0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x0000000C = blt .+0x08 #skip subtract if less than +0x00000010 = subi r6, r6, 1 #do the subtract +0x00000014 = blr #return + +#Extreme simplification of FPS++ by Xalphenos +#codeChanges +0x031F9E80 = nop +0x03792620 = nop +0x0379262C = nop +0x03792670 = lis r29, _multiplier@ha +0x03792678 = lfs f0, _multiplier@L(r29) +0x03792684 = nop +0x03414EF8 = lis r12, _multiplier@ha +0x03414F00 = lfs f0, _multiplier@l(r12) +0x03414F08 = nop +0x02D90790 = lis r10, _targetfps@ha +0x02D90794 = lfs f11, _targetfps@l(r10) +0x02D907EC = lis r10, _targetfps@ha +0x02D907F0 = lfs f11, _targetfps@l(r10) + +#Break all forms of frame limiting +0x031FA000 = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) +#0x031F9FEC = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) +#0x031FA004 = nop #skip fence (no waiting on GPU) +0x031FA1D4 = nop #disable vsync +0x031FA1F8 = nop #disable vsync loop + +#Additional vsync dropping +0x0309C9A4 = nop #disable vsync +0x0309C9C8 = nop #disable vsync loop + +#For testing, the original static mod lines (commented out by default): +#0x031FA5C4 = li r0, 1 +#0x031FA608 = li r0, 1 + +#Cheats +#0x02D90724 = fmr f29, f1 #inf stamina +#0x02D44D44 = nop #inf hearts +#0x02EB61BC = nop #inf arrows + diff --git a/Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt b/Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt new file mode 100644 index 00000000..c6c9d413 --- /dev/null +++ b/Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt @@ -0,0 +1,15 @@ +This is based on an extreme simplification of the fps++ mod by Xalphenos; it +drops dynamic FPS to get back stability. The Rajkosto "best fence" method is +also included for performance and stability. It improves over the previous +static fps mod because it allows ANY value as a static fps target and it +also includes the stamina fix. + +To use it simply grab one of the uploaded versions or edit one with these +changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use +the result of that calculation and the target fps in patches.txt. + +Disclaimer: this is different from the static FPS mod ported recently. The main +advantage of this one is that it allows ANY static FPS instead of only 60, 30, +20.. and it also includes the stamina fix. + + epigramx diff --git a/Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt b/Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt new file mode 100644 index 00000000..1b35986c --- /dev/null +++ b/Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt @@ -0,0 +1,7 @@ +[Definition] +titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 +name = "The Legend of Zelda: Breath of the Wild - static 60FPS mod" +version = 2 + +[Control] +vsyncFrequency = 60 From fff4410dd2b898de4004f75bac113d350ef33d14 Mon Sep 17 00:00:00 2001 From: epigramx Date: Thu, 8 Feb 2018 10:49:59 +0200 Subject: [PATCH 41/41] Autogeneration of static FPS mods + Rajkosto's mod_onearg() in build.sh --- .../readme.txt | 15 --- .../BreathOfTheWid_static_30FPS_mod/rules.txt | 7 -- .../patches.txt | 108 ------------------ .../readme.txt | 15 --- .../BreathOfTheWid_static_45FPS_mod/rules.txt | 7 -- .../patches.txt | 108 ------------------ .../readme.txt | 15 --- .../BreathOfTheWid_static_60FPS_mod/rules.txt | 7 -- .../BreathOfTheWild_StaticFPS}/patches.txt | 34 +++--- Source/BreathOfTheWild_StaticFPS/readme.txt | 18 +++ Source/BreathOfTheWild_StaticFPS/rules.txt | 7 ++ build.sh | 20 ++++ 12 files changed, 65 insertions(+), 296 deletions(-) delete mode 100644 Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt delete mode 100644 Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt delete mode 100644 Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt delete mode 100644 Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt delete mode 100644 Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt delete mode 100644 Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt delete mode 100644 Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt delete mode 100644 Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt rename {Modifications/BreathOfTheWid_static_30FPS_mod => Source/BreathOfTheWild_StaticFPS}/patches.txt (80%) create mode 100644 Source/BreathOfTheWild_StaticFPS/readme.txt create mode 100644 Source/BreathOfTheWild_StaticFPS/rules.txt diff --git a/Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt b/Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt deleted file mode 100644 index c6c9d413..00000000 --- a/Modifications/BreathOfTheWid_static_30FPS_mod/readme.txt +++ /dev/null @@ -1,15 +0,0 @@ -This is based on an extreme simplification of the fps++ mod by Xalphenos; it -drops dynamic FPS to get back stability. The Rajkosto "best fence" method is -also included for performance and stability. It improves over the previous -static fps mod because it allows ANY value as a static fps target and it -also includes the stamina fix. - -To use it simply grab one of the uploaded versions or edit one with these -changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use -the result of that calculation and the target fps in patches.txt. - -Disclaimer: this is different from the static FPS mod ported recently. The main -advantage of this one is that it allows ANY static FPS instead of only 60, 30, -20.. and it also includes the stamina fix. - - epigramx diff --git a/Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt b/Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt deleted file mode 100644 index 04e6b4f8..00000000 --- a/Modifications/BreathOfTheWid_static_30FPS_mod/rules.txt +++ /dev/null @@ -1,7 +0,0 @@ -[Definition] -titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 -name = "The Legend of Zelda: Breath of the Wild - static 30FPS mod" -version = 2 - -[Control] -vsyncFrequency = 30 diff --git a/Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt b/Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt deleted file mode 100644 index 03d71f16..00000000 --- a/Modifications/BreathOfTheWid_static_45FPS_mod/patches.txt +++ /dev/null @@ -1,108 +0,0 @@ -[BotwFPSV208] #i.e. v1.5.0 -moduleMatches = 0x6267BFD0 - -#Cave -codeCaveSize = 0x1C -_multiplier = 0x0 # edit the next line to change the multiplier -0x00000000 = .float 0.66667 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 -_targetfps = 0x18 # edit the next line to change the target fps -0x18 = .float 45 - -#"Best fence" by Rajkosto -_fenceNeg1 = 0x00000004 -0x00000004 = add r6, r12, r0 #orig instruction we are replacing -0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) -0x0000000C = blt .+0x08 #skip subtract if less than -0x00000010 = subi r6, r6, 1 #do the subtract -0x00000014 = blr #return - -#Extreme simplification of FPS++ by Xalphenos -#codeChanges -0x031FA97C = nop -0x03793328 = nop -0x03793334 = nop -0x03793378 = lis r29, _multiplier@ha -0x03793380 = lfs f0, _multiplier@L(r29) -0x0379338C = nop -0x03415C1C = lis r12, _multiplier@ha -0x03415C24 = lfs f0, _multiplier@l(r12) -0x03415C2C = nop -0x02D90D2C = lis r10, _targetfps@ha -0x02D90D30 = lfs f11, _targetfps@l(r10) -0x02D90D88 = lis r10, _targetfps@ha -0x02D90D8C = lfs f11, _targetfps@l(r10) - -#Break all forms of frame limiting -0x031FAAFC = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) -#0x031FAAE8 = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) -#0x031FAB00 = nop #skip fence (no waiting on GPU) -0x031FACD0 = nop #disable vsync -0x031FACF4 = nop #disable vsync loop - -#Additional vsync dropping -0x0309D030 = nop #disable vsync -0x0309D054 = nop #disable vsync loop - -#For testing, the original static mod lines (commented out by default): -#0x031FB0C0 = li r0, 1 -#0x031FB104 = li r0, 1 - -#Cheats -#0x02D90CC0 = fmr f29, f1 #inf stamina -#0x02D452A4 = nop #inf hearts -#0x02EB6758 = nop #inf arrows - -[BotwFPSv176V192] #i.e. v1.4.0 and v1.4.1 -moduleMatches = 0xFD091F9F,0xD472D8A5 - -#Cave -codeCaveSize = 0x1C -_multiplier = 0x0 # edit the next line to change the multiplier -0x00000000 = .float 0.66667 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 -_targetfps = 0x18 # edit the next line to change the target fps -0x18 = .float 45 - -#"Best fence" by Rajkosto -_fenceNeg1 = 0x00000004 -0x00000004 = add r6, r12, r0 #orig instruction we are replacing -0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) -0x0000000C = blt .+0x08 #skip subtract if less than -0x00000010 = subi r6, r6, 1 #do the subtract -0x00000014 = blr #return - -#Extreme simplification of FPS++ by Xalphenos -#codeChanges -0x031F9E80 = nop -0x03792620 = nop -0x0379262C = nop -0x03792670 = lis r29, _multiplier@ha -0x03792678 = lfs f0, _multiplier@L(r29) -0x03792684 = nop -0x03414EF8 = lis r12, _multiplier@ha -0x03414F00 = lfs f0, _multiplier@l(r12) -0x03414F08 = nop -0x02D90790 = lis r10, _targetfps@ha -0x02D90794 = lfs f11, _targetfps@l(r10) -0x02D907EC = lis r10, _targetfps@ha -0x02D907F0 = lfs f11, _targetfps@l(r10) - -#Break all forms of frame limiting -0x031FA000 = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) -#0x031F9FEC = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) -#0x031FA004 = nop #skip fence (no waiting on GPU) -0x031FA1D4 = nop #disable vsync -0x031FA1F8 = nop #disable vsync loop - -#Additional vsync dropping -0x0309C9A4 = nop #disable vsync -0x0309C9C8 = nop #disable vsync loop - -#For testing, the original static mod lines (commented out by default): -#0x031FA5C4 = li r0, 1 -#0x031FA608 = li r0, 1 - -#Cheats -#0x02D90724 = fmr f29, f1 #inf stamina -#0x02D44D44 = nop #inf hearts -#0x02EB61BC = nop #inf arrows - diff --git a/Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt b/Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt deleted file mode 100644 index c6c9d413..00000000 --- a/Modifications/BreathOfTheWid_static_45FPS_mod/readme.txt +++ /dev/null @@ -1,15 +0,0 @@ -This is based on an extreme simplification of the fps++ mod by Xalphenos; it -drops dynamic FPS to get back stability. The Rajkosto "best fence" method is -also included for performance and stability. It improves over the previous -static fps mod because it allows ANY value as a static fps target and it -also includes the stamina fix. - -To use it simply grab one of the uploaded versions or edit one with these -changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use -the result of that calculation and the target fps in patches.txt. - -Disclaimer: this is different from the static FPS mod ported recently. The main -advantage of this one is that it allows ANY static FPS instead of only 60, 30, -20.. and it also includes the stamina fix. - - epigramx diff --git a/Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt b/Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt deleted file mode 100644 index 2ff1fcfa..00000000 --- a/Modifications/BreathOfTheWid_static_45FPS_mod/rules.txt +++ /dev/null @@ -1,7 +0,0 @@ -[Definition] -titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 -name = "The Legend of Zelda: Breath of the Wild - static 45FPS mod" -version = 2 - -[Control] -vsyncFrequency = 45 diff --git a/Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt b/Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt deleted file mode 100644 index fffed5d6..00000000 --- a/Modifications/BreathOfTheWid_static_60FPS_mod/patches.txt +++ /dev/null @@ -1,108 +0,0 @@ -[BotwFPSV208] #i.e. v1.5.0 -moduleMatches = 0x6267BFD0 - -#Cave -codeCaveSize = 0x1C -_multiplier = 0x0 # edit the next line to change the multiplier -0x00000000 = .float 0.5 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 -_targetfps = 0x18 # edit the next line to change the target fps -0x18 = .float 60 - -#"Best fence" by Rajkosto -_fenceNeg1 = 0x00000004 -0x00000004 = add r6, r12, r0 #orig instruction we are replacing -0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) -0x0000000C = blt .+0x08 #skip subtract if less than -0x00000010 = subi r6, r6, 1 #do the subtract -0x00000014 = blr #return - -#Extreme simplification of FPS++ by Xalphenos -#codeChanges -0x031FA97C = nop -0x03793328 = nop -0x03793334 = nop -0x03793378 = lis r29, _multiplier@ha -0x03793380 = lfs f0, _multiplier@L(r29) -0x0379338C = nop -0x03415C1C = lis r12, _multiplier@ha -0x03415C24 = lfs f0, _multiplier@l(r12) -0x03415C2C = nop -0x02D90D2C = lis r10, _targetfps@ha -0x02D90D30 = lfs f11, _targetfps@l(r10) -0x02D90D88 = lis r10, _targetfps@ha -0x02D90D8C = lfs f11, _targetfps@l(r10) - -#Break all forms of frame limiting -0x031FAAFC = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) -#0x031FAAE8 = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) -#0x031FAB00 = nop #skip fence (no waiting on GPU) -0x031FACD0 = nop #disable vsync -0x031FACF4 = nop #disable vsync loop - -#Additional vsync dropping -0x0309D030 = nop #disable vsync -0x0309D054 = nop #disable vsync loop - -#For testing, the original static mod lines (commented out by default): -#0x031FB0C0 = li r0, 1 -#0x031FB104 = li r0, 1 - -#Cheats -#0x02D90CC0 = fmr f29, f1 #inf stamina -#0x02D452A4 = nop #inf hearts -#0x02EB6758 = nop #inf arrows - -[BotwFPSv176V192] #i.e. v1.4.0 and v1.4.1 -moduleMatches = 0xFD091F9F,0xD472D8A5 - -#Cave -codeCaveSize = 0x1C -_multiplier = 0x0 # edit the next line to change the multiplier -0x00000000 = .float 0.5 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 -_targetfps = 0x18 # edit the next line to change the target fps -0x18 = .float 60 - -#"Best fence" by Rajkosto -_fenceNeg1 = 0x00000004 -0x00000004 = add r6, r12, r0 #orig instruction we are replacing -0x00000008 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) -0x0000000C = blt .+0x08 #skip subtract if less than -0x00000010 = subi r6, r6, 1 #do the subtract -0x00000014 = blr #return - -#Extreme simplification of FPS++ by Xalphenos -#codeChanges -0x031F9E80 = nop -0x03792620 = nop -0x0379262C = nop -0x03792670 = lis r29, _multiplier@ha -0x03792678 = lfs f0, _multiplier@L(r29) -0x03792684 = nop -0x03414EF8 = lis r12, _multiplier@ha -0x03414F00 = lfs f0, _multiplier@l(r12) -0x03414F08 = nop -0x02D90790 = lis r10, _targetfps@ha -0x02D90794 = lfs f11, _targetfps@l(r10) -0x02D907EC = lis r10, _targetfps@ha -0x02D907F0 = lfs f11, _targetfps@l(r10) - -#Break all forms of frame limiting -0x031FA000 = bla _fenceNeg1 #Best fence (make sure GPU is never more than 1 frame ahead) -#0x031F9FEC = li r0, 1 #Better fence (make sure GPU is never more than 1 second? ahead) -#0x031FA004 = nop #skip fence (no waiting on GPU) -0x031FA1D4 = nop #disable vsync -0x031FA1F8 = nop #disable vsync loop - -#Additional vsync dropping -0x0309C9A4 = nop #disable vsync -0x0309C9C8 = nop #disable vsync loop - -#For testing, the original static mod lines (commented out by default): -#0x031FA5C4 = li r0, 1 -#0x031FA608 = li r0, 1 - -#Cheats -#0x02D90724 = fmr f29, f1 #inf stamina -#0x02D44D44 = nop #inf hearts -#0x02EB61BC = nop #inf arrows - diff --git a/Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt b/Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt deleted file mode 100644 index c6c9d413..00000000 --- a/Modifications/BreathOfTheWid_static_60FPS_mod/readme.txt +++ /dev/null @@ -1,15 +0,0 @@ -This is based on an extreme simplification of the fps++ mod by Xalphenos; it -drops dynamic FPS to get back stability. The Rajkosto "best fence" method is -also included for performance and stability. It improves over the previous -static fps mod because it allows ANY value as a static fps target and it -also includes the stamina fix. - -To use it simply grab one of the uploaded versions or edit one with these -changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use -the result of that calculation and the target fps in patches.txt. - -Disclaimer: this is different from the static FPS mod ported recently. The main -advantage of this one is that it allows ANY static FPS instead of only 60, 30, -20.. and it also includes the stamina fix. - - epigramx diff --git a/Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt b/Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt deleted file mode 100644 index 1b35986c..00000000 --- a/Modifications/BreathOfTheWid_static_60FPS_mod/rules.txt +++ /dev/null @@ -1,7 +0,0 @@ -[Definition] -titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 -name = "The Legend of Zelda: Breath of the Wild - static 60FPS mod" -version = 2 - -[Control] -vsyncFrequency = 60 diff --git a/Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt b/Source/BreathOfTheWild_StaticFPS/patches.txt similarity index 80% rename from Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt rename to Source/BreathOfTheWild_StaticFPS/patches.txt index 33a97627..8812ba2a 100644 --- a/Modifications/BreathOfTheWid_static_30FPS_mod/patches.txt +++ b/Source/BreathOfTheWild_StaticFPS/patches.txt @@ -1,12 +1,17 @@ + [BotwFPSV208] #i.e. v1.5.0 moduleMatches = 0x6267BFD0 #Cave codeCaveSize = 0x1C -_multiplier = 0x0 # edit the next line to change the multiplier -0x00000000 = .float 1.00 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 + +_divisor = 0x0 # edit the next line to change the divisor +0x00000000 = .float # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 _targetfps = 0x18 # edit the next line to change the target fps -0x18 = .float 30 +0x18 = .float #"Best fence" by Rajkosto _fenceNeg1 = 0x00000004 @@ -21,11 +26,11 @@ _fenceNeg1 = 0x00000004 0x031FA97C = nop 0x03793328 = nop 0x03793334 = nop -0x03793378 = lis r29, _multiplier@ha -0x03793380 = lfs f0, _multiplier@L(r29) +0x03793378 = lis r29, _divisor@ha +0x03793380 = lfs f0, _divisor@L(r29) 0x0379338C = nop -0x03415C1C = lis r12, _multiplier@ha -0x03415C24 = lfs f0, _multiplier@l(r12) +0x03415C1C = lis r12, _divisor@ha +0x03415C24 = lfs f0, _divisor@l(r12) 0x03415C2C = nop 0x02D90D2C = lis r10, _targetfps@ha 0x02D90D30 = lfs f11, _targetfps@l(r10) @@ -57,10 +62,11 @@ moduleMatches = 0xFD091F9F,0xD472D8A5 #Cave codeCaveSize = 0x1C -_multiplier = 0x0 # edit the next line to change the multiplier -0x00000000 = .float 1.00 # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 + +_divisor = 0x0 # edit the next line to change the divisor +0x00000000 = .float # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667 _targetfps = 0x18 # edit the next line to change the target fps -0x18 = .float 30 +0x18 = .float #"Best fence" by Rajkosto _fenceNeg1 = 0x00000004 @@ -75,11 +81,11 @@ _fenceNeg1 = 0x00000004 0x031F9E80 = nop 0x03792620 = nop 0x0379262C = nop -0x03792670 = lis r29, _multiplier@ha -0x03792678 = lfs f0, _multiplier@L(r29) +0x03792670 = lis r29, _divisor@ha +0x03792678 = lfs f0, _divisor@L(r29) 0x03792684 = nop -0x03414EF8 = lis r12, _multiplier@ha -0x03414F00 = lfs f0, _multiplier@l(r12) +0x03414EF8 = lis r12, _divisor@ha +0x03414F00 = lfs f0, _divisor@l(r12) 0x03414F08 = nop 0x02D90790 = lis r10, _targetfps@ha 0x02D90794 = lfs f11, _targetfps@l(r10) diff --git a/Source/BreathOfTheWild_StaticFPS/readme.txt b/Source/BreathOfTheWild_StaticFPS/readme.txt new file mode 100644 index 00000000..89877ab5 --- /dev/null +++ b/Source/BreathOfTheWild_StaticFPS/readme.txt @@ -0,0 +1,18 @@ +This is based on an extreme simplification of the fps++ mod by Xalphenos; it +drops dynamic FPS to prevent graphics judder. The Rajkosto "best fence" method +is also included for performance and stability. Judder was easily noticeable +when Link paraglides; the caveat is that the user must pick a target FPS that +they can maintain. + +It improves over previous static mods in that it allows ANY value as a +static fps target and it includes the stamina fix. + +To use it simply grab one of the provided versions or edit one with these +changes: a) rules.txt frequency and name b) divide 30 by the target FPS c) use +the result of that calculation and the target fps in patches.txt. + +This readme was derived from a static FPS mod. Additional FPS targets +and discussion are at https://forum.cemu.info/showthread.php/421. If you do +know how to use build.sh at Slashie's repo, it supports arbitrary targets. + + epigramx diff --git a/Source/BreathOfTheWild_StaticFPS/rules.txt b/Source/BreathOfTheWild_StaticFPS/rules.txt new file mode 100644 index 00000000..e36a17a8 --- /dev/null +++ b/Source/BreathOfTheWild_StaticFPS/rules.txt @@ -0,0 +1,7 @@ +[Definition] +titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 +name = "The Legend of Zelda: Breath of the Wild - static FPS mod" +version = 2 + +[Control] +vsyncFrequency = diff --git a/build.sh b/build.sh index d2ecb062..7c70f9cc 100644 --- a/build.sh +++ b/build.sh @@ -108,6 +108,23 @@ std_respack () { done } +mod_onearg () { + params=( "$@" ) + subparams=( "${params[@]:1}" ) + mod_folder="${params[0]}" + + echo -e "${GREEN}[Building] ${BCYAN}$mod_folder ${NC}with arguments: ${subparams[@]}" + for arrg in "${subparams[@]}" + do + inFolder="Source/$mod_folder" + + outFolder="Modifications/${mod_folder}_${arrg}" + + #echo "${arrg} inFolder: $inFolder outFolder: $outFolder" + build_dir "$inFolder" "$outFolder" "$arrg" + done +} + res16by9=( "360p" "480p" "540p" "720p" "900p" "1080p" "1440p" "1800p" "2160p" "2880p" "4320p" "5760p" ) res21by9=( "540p219" "720p219" "900p219" "1080p219" "1440p219" "1800p219" "2160p219" "2880p219" "4320p219" "5760p219" ) res48by9=( "360p489" "480p489" "540p489" "720p489" "900p489" "1080p489" "1440p489" "1800p489" "2160p489" "2880p489" "4320p489" "5760p489" ) @@ -196,4 +213,7 @@ std_respack "WipeoutCreate" "${res16by9[@]/$just720p}" std_respack "Wonderful101" "${res16by9[@]/$just720p}" std_respack "WoollyWorld" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "XenobladeX" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" + +mod_onearg "BreathOfTheWild_StaticFPS" 30 45 60 + echo -e "${NC}"