From 8957a6387a19f17a53a8a6d161ab9b3aa071d81a Mon Sep 17 00:00:00 2001 From: getdls Date: Wed, 31 Oct 2018 18:48:11 +0100 Subject: [PATCH] New super mario bros 1..4.x - Rules n shaders --- .../03285368cf940e37_0000000000000079_ps.txt | 107 ++++++++ .../50e29e8929cea348_00000000000003c9_ps.txt | 192 +++++++++++++++ .../70b82af4d17024d2_0000000000000000_vs.txt | 76 ++++++ .../8d638f35cebd14dc_00000000000007f9_ps.txt | 109 +++++++++ .../ec4a85d51e778437_0000000000000000_vs.txt | 81 +++++++ Source/NewSuperMarioBrosU/rules.txt | 228 ++++++++++++++++++ 6 files changed, 793 insertions(+) create mode 100644 Source/NewSuperMarioBrosU/03285368cf940e37_0000000000000079_ps.txt create mode 100644 Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt create mode 100644 Source/NewSuperMarioBrosU/70b82af4d17024d2_0000000000000000_vs.txt create mode 100644 Source/NewSuperMarioBrosU/8d638f35cebd14dc_00000000000007f9_ps.txt create mode 100644 Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt create mode 100644 Source/NewSuperMarioBrosU/rules.txt diff --git a/Source/NewSuperMarioBrosU/03285368cf940e37_0000000000000079_ps.txt b/Source/NewSuperMarioBrosU/03285368cf940e37_0000000000000079_ps.txt new file mode 100644 index 00000000..4faa14bb --- /dev/null +++ b/Source/NewSuperMarioBrosU/03285368cf940e37_0000000000000079_ps.txt @@ -0,0 +1,107 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 03285368cf940e37 //box bg + +const float dither = $dither ; +const float scaleShader = $scaleShader; +const float scaleBlur = ($scaleBlur); //0.25 4k +const int sampleScale = 2; +const float lightBloom = 0.95; + + +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(location = 0) in vec4 passParameterSem3; +layout(location = 0) out vec4 passPixelColor0; +uniform vec2 uf_fragCoordScale; + +// FabriceNeyret2 CC, single shader gaussian by intermediate MIPmap level. www.shadertoy.com/view/ltScRG +const int samples = 8 * sampleScale, //8 or 4 balances xy position +LOD = 2, // gaussian done on MIPmap at scale LOD +sLOD = 1 << LOD; // tile size = 2^LOD +const float sigma = float(samples) * .25; + +float gaussian(vec2 i) { + return exp(-.5* dot(i /= sigma, i)) / (6.28 * sigma*sigma); +} + +vec4 blur(sampler2D sp, vec2 U, vec2 scale) { + vec4 O = vec4(0.0); + int s = samples / sLOD; + + for (int i = 0; i < s*s; i++) { + vec2 d = vec2(i%s, i / s)*float(sLOD) - float(samples) / 2.; + O += gaussian(d) * textureLod(sp, U + scale * d, float(LOD)); + } + + //O / O.a; + return vec4(O.x, O.y, O.z, 0.0)*17; //16 exact, 17 ~ a touch more haze to compensate res increase +} + +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R123f = 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 = passParameterSem3; + +vec2 coord = passParameterSem3.xy*textureSize(textureUnitPS0, 0); // +vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0); +vec2 uv = coord * ps; + +R1f.xyz = blur(textureUnitPS0, R0f.xy, ps*scaleBlur).xyz; +R2f.xyz = R1f.xyz; +R3f.xyz = R1f.xyz; +R0f.xyz = R1f.xyz; +/* +R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz); +R2f.xyz = (texture(textureUnitPS0, R0f.zy).xyz); +R3f.xyz = (texture(textureUnitPS0, R0f.xw).xyz); +R0f.xyz = (texture(textureUnitPS0, R0f.zw).xyz); +*/ + +// 0 +PV0f.x = R1f.z + R2f.z; +PV0f.x /= 2.0; +PV0f.z = R1f.y + R2f.y; +PV0f.z /= 2.0; +PV0f.w = R1f.x + R2f.x; +PV0f.w /= 2.0; +// 1 +R123f.x = (R3f.y * 0.5 + PV0f.z); +PV1f.x = R123f.x; +R123f.y = (R3f.x * 0.5 + PV0f.w); +PV1f.y = R123f.y; +R123f.w = (R3f.z * 0.5 + PV0f.x); +PV1f.w = R123f.w; +// 2 +backupReg0f = R0f.x; +backupReg1f = R0f.y; +backupReg2f = R0f.z; +R0f.x = (backupReg0f * 0.5 + PV1f.y)/2.0; +R0f.y = (backupReg1f * 0.5 + PV1f.x)/2.0; +R0f.z = (backupReg2f * 0.5 + PV1f.w)/2.0; +// export +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +} diff --git a/Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt b/Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt new file mode 100644 index 00000000..99aaea7d --- /dev/null +++ b/Source/NewSuperMarioBrosU/50e29e8929cea348_00000000000003c9_ps.txt @@ -0,0 +1,192 @@ + +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 50e29e8929cea348 +//AA fix PS +const float resScale = ($width/$gameWidth); +//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..598c6cb1 --- /dev/null +++ b/Source/NewSuperMarioBrosU/70b82af4d17024d2_0000000000000000_vs.txt @@ -0,0 +1,76 @@ + +#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 = ($width/$gameWidth); +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/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); +} diff --git a/Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt b/Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt new file mode 100644 index 00000000..d14aa595 --- /dev/null +++ b/Source/NewSuperMarioBrosU/ec4a85d51e778437_0000000000000000_vs.txt @@ -0,0 +1,81 @@ + +#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 = ($width/$gameWidth); + +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 new file mode 100644 index 00000000..d303ab63 --- /dev/null +++ b/Source/NewSuperMarioBrosU/rules.txt @@ -0,0 +1,228 @@ +[Definition] +titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200 +name = Resolution +path = "New Super Mario Bros. U/Graphics/Resolution" #and luigi +description = Changes the resolution of the game. +version = 3 + +//compatible resolutions +[Preset] +name = 1280x720 (Default) +$width = 1280 +$height = 720 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 + +[Preset] +name = 640x360 +$width = 640 +$height = 360 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 + +// Quality + +[Preset] +name = 1920x1080 (HD) +$width = 1920 +$height = 1080 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.15 +$scaleShader = 1.0 +$scaleBlur = 0.25 + +[Preset] +name = 1600x900 +$width = 1600 +$height = 900 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.1 +$scaleShader = 1.0 +$scaleBlur = 0.25 + +[Preset] +name = 2560x1440 (Native x2) +$width = 2560 +$height = 1440 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1.5 +$dither = 0.1 +$scaleShader = 1.0 +$scaleBlur = 0.5 + +[Preset] +name = 3200x1800 +$width = 3200 +$height = 1800 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 0.5 + +[Preset] +name = 3840x2160 (4k - Native x3) +$width = 3840 +$height = 2160 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 1.0 + +[Preset] +name = 5120x2880 +$width = 5120 +$height = 2880 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 1.0 +// Enthusiast + +[Preset] +name = 7680x4320 +$width = 7680 +$height = 4320 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 1.0 + +[Preset] +name = 10240x5760 +$width = 10240 +$height = 5760 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 1.0 + +#[TextureRedefine] # Tile map, dont scale +#width = 2048 +#height = 512 + +[TextureRedefine] +width = 1280 +height = 720 +#formats = 0x80e,0x01a,0x001 +overwriteWidth = ($width/$gameWidth) * 1280 +overwriteHeight = ($height/$gameHeight) * 720 + +[TextureRedefine] #map shadows +width = 1024 +height = 1024 +formats = 0x005 +overwriteWidth = ($height/$gameHeight) * 1024 +overwriteHeight = ($height/$gameHeight) * 1024 + +[TextureRedefine] #Pad +width = 864 +height = 480 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * 864 +overwriteHeight = ($height/$gameHeight) * 480 + +[TextureRedefine] #Pad +width = 854 +height = 480 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * 854 +overwriteHeight = ($height/$gameHeight) * 480 + +[TextureRedefine] #Horizon blur +width = 640 +height = 368 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * 640 +overwriteHeight = ($height/$gameHeight) * 368 + +[TextureRedefine] #Horizon blur +width = 640 +height = 360 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * 640 +overwriteHeight = ($height/$gameHeight) * 360 + +[TextureRedefine] +width = 512 +height = 256 +formats = 0x01a +overwriteWidth = ($width/$gameWidth) * 512 +overwriteHeight = ($height/$gameHeight) * 256 + +[TextureRedefine] +width = 256 +height = 128 +formats = 0x01a +overwriteWidth = ($width/$gameWidth) * 256 +overwriteHeight = ($height/$gameHeight) * 128 + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = ($width/$gameWidth) * 320 +overwriteHeight = ($height/$gameHeight) * 180 + + +[TextureRedefine] +width = 320 +height = 180 +#formatsExcluded = +overwriteWidth = ($width/$gameWidth) * 320 +overwriteHeight = ($height/$gameHeight) * 180 + +[TextureRedefine] +width = 160 +height = 208 +#formats = 0x80e,0x01a +overwriteWidth = ($width/$gameWidth) * 160 +overwriteHeight = ($height/$gameHeight) * 208 + +[TextureRedefine] #portraits +width = 160 +height = 196 +#formats = 0x80e,0x01a +formatsExcluded = 0x033 +overwriteWidth = ($width/$gameWidth) * 160 +overwriteHeight = ($height/$gameHeight) * 196 + +[TextureRedefine] +width = 160 +height = 90 +#formatsExcluded = +overwriteWidth = ($width/$gameWidth) * 160 +overwriteHeight = ($height/$gameHeight) * 90 + +## Gradient don't scale +#width = 48 +#height = 48 + +#[TextureRedefine] +#width = 1 +#height = 1 +#formatsExcluded = +#overwriteWidth = ($width/$gameWidth) * 1 +#overwriteHeight = ($height/$gameHeight) * 1