This commit is contained in:
Jamie 2018-02-10 18:56:52 -08:00
commit c5009328fc
50 changed files with 3192 additions and 592 deletions

View File

@ -60,3 +60,10 @@ moduleMatches = 0xFD091F9F,0xD472D8A5
;0x031FA004 = nop ;disables gx2 fence ;0x031FA004 = nop ;disables gx2 fence
0x031FA1D4 = nop ;disables wait for vsync 0x031FA1D4 = nop ;disables wait for vsync
0x031FA1F8 = nop ;disables wait for vsync loop 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

View File

@ -1,6 +1,5 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - Higher Quality Shadows" name = "Hyrule Warriors - Higher Quality Shadows"
version = 2 version = 2

View File

@ -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);
}

View File

@ -1,5 +0,0 @@
[Definition]
titleIds = 000500001018DB00,000500001018DC00,000500001018DD00
name = "Super Mario Maker - CRT filter"
version = 2

View File

@ -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)

View File

@ -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.

View File

@ -0,0 +1,4 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "The Legend of Zelda: Breath of the Wild - Cheats (view readme)"
version = 2

View File

@ -1,3 +1,177 @@
[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
#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] [Botw60fpsv144]
moduleMatches = 0x9A2CA0C7 moduleMatches = 0x9A2CA0C7
@ -222,84 +396,3 @@ _fullspeed = 0x00000080
;0x02F7DE00 = li r3, 0 ;0x02F7DE00 = li r3, 0
;0x02F862C4 = li r7, 1 ;0x02F862C4 = li r7, 1
;0x02F86514 = 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

View File

@ -1,4 +1,4 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - 60FPS Fixes (requires stable 60FPS!)" name = "Hyrule Warriors - 60FPS Fixes (requires stable 60FPS!)"
version = 2 version = 2

View File

@ -64,12 +64,12 @@ moduleMatches = 0xF7A78809
#Fld_Warehouse00_Dul #Walleye Warehouse [Dojo] #Fld_Warehouse00_Dul #Walleye Warehouse [Dojo]
#Fld_SeaPlant00_Dul #Saltspray Rig [Dojo] #Fld_SeaPlant00_Dul #Saltspray Rig [Dojo]
#Fld_UpDown00_Dul #Arowana Mall [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_Crank00_Vss #Urchin Underpass
#Fld_Warehouse00_Vss #Walleye Warehouse #Fld_Warehouse00_Vss #Walleye Warehouse
#Fld_SeaPlant00_Vss #Saltspray Rig #Fld_SeaPlant00_Vss #Saltspray Rig
#Fld_UpDown00_Vss #Arowana Mall #Fld_UpDown00_Vss #Arowana Mall
#Fld_SkatePark00_Vss #Blackberry Skatepark #Fld_SkatePark00_Vss #Blackbelly Skatepark
#Fld_Athletic00_Vss #Camp Triggerfish #Fld_Athletic00_Vss #Camp Triggerfish
#Fld_Amida00_Vss #Port Mackerel #Fld_Amida00_Vss #Port Mackerel
#Fld_Maze00_Vss #Kelp Dome #Fld_Maze00_Vss #Kelp Dome

View File

@ -0,0 +1,83 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight);
?>
[Definition]
titleIds = 00050000101C6400,00050000101C6500,0005000010190100
name = "Animal Crossing: amiibo Festival - <?=$title?>"
version = 2
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 2048
#height = 2048
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*2048)?>
#overwriteHeight = <?=round($scaleFactorY*2048)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 2046
#height = 2046
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*2046)?>
#overwriteHeight = <?=round($scaleFactorY*2046)?>
[TextureRedefine]
width = 1280
height = 720
tileModesExcluded = 0x001
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 854
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 800
height = 250
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*800)?>
overwriteHeight = <?=round($scaleFactorY*250)?>
[TextureRedefine]
width = 640
height = 360
tileModesExcluded = 0x001
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine]
width = 80
height = 45
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
[TextureRedefine]
width = 40
height = 22
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*40)?>
overwriteHeight = <?=round($scaleFactorY*22)?>

View File

@ -152,3 +152,19 @@ _aspectAddr = 0x101BF878
# 3d aspect (calculated every frame) # 3d aspect (calculated every frame)
0x0386C314 = lis r28, ha16(_aspectAddr) 0x0386C314 = lis r28, ha16(_aspectAddr)
0x0386C318 = lfs f12, _aspectAddr(r28) 0x0386C318 = lfs f12, _aspectAddr(r28)
[BotwAspectsV208]
moduleMatches = 0x6267BFD0
# rodata constants
0x101BF8E8 = .float <?=$aspect?>
0x1030A57C = .float <?=$aspect?>
0x1036DD4C = .float <?=$aspect?>
_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)

View File

@ -0,0 +1,114 @@
<?php
$targetfps = $argv[1];
$divisor = 30/$targetfps
?>
[BotwFPSV208] #i.e. v1.5.0
moduleMatches = 0x6267BFD0
#Cave
codeCaveSize = 0x1C
_divisor = 0x0 # edit the next line to change the divisor
0x00000000 = .float <?=$divisor?> # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667
_targetfps = 0x18 # edit the next line to change the target fps
0x18 = .float <?=$targetfps?>
#"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, _divisor@ha
0x03793380 = lfs f0, _divisor@L(r29)
0x0379338C = nop
0x03415C1C = lis r12, _divisor@ha
0x03415C24 = lfs f0, _divisor@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
_divisor = 0x0 # edit the next line to change the divisor
0x00000000 = .float <?=$divisor?> # = 30FPS / TARGET FPS, e.g. 30FPS / 18FPS = 1.66667
_targetfps = 0x18 # edit the next line to change the target fps
0x18 = .float <?=$targetfps?>
#"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, _divisor@ha
0x03792678 = lfs f0, _divisor@L(r29)
0x03792684 = nop
0x03414EF8 = lis r12, _divisor@ha
0x03414F00 = lfs f0, _divisor@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

View File

@ -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 <?=$argv[1] ?>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

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "The Legend of Zelda: Breath of the Wild - static <?=$argv[1] ?>FPS mod"
version = 2
[Control]
vsyncFrequency = <?=$argv[1] ?>

View File

@ -20,8 +20,65 @@ tileModesExcluded = 0x001
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1024
#height = 1024
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1024)?>
#overwriteHeight = <?=round($scaleFactorY*1024)?>
[TextureRedefine] [TextureRedefine]
width = 854 width = 854
height = 480 height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 640
height = 360
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 512
#height = 512
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*512)?>
#overwriteHeight = <?=round($scaleFactorY*512)?>
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 256
#height = 256
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*256)?>
#overwriteHeight = <?=round($scaleFactorY*256)?>
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 64
#height = 64
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*64)?>
#overwriteHeight = <?=round($scaleFactorY*64)?>
[TextureRedefine]
width = 32
height = 18
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*32)?>
overwriteHeight = <?=round($scaleFactorY*18)?>

View File

@ -6,19 +6,134 @@ $scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0; $scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight); $title = get_title($fullWidth, $fullHeight);
?> ?>
[Definition] [Definition]
titleIds = 00050000101FFC00 titleIds = 00050000101FFC00
name = "Ghost Blade HD - <?=$title?>" name = "Ghost Blade HD - <?=$title?> "
version = 2 version = 2
[TextureRedefine] [TextureRedefine]
width = 1280 width = 1280
height = 720 height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine] # gamepad [TextureRedefine]
width = 1280
height = 220
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*220)?>
[TextureRedefine]
width = 1280
height = 183
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*183)?>
[TextureRedefine]
width = 1280
height = 147
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*147)?>
[TextureRedefine]
width = 1280
height = 109
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*109)?>
[TextureRedefine]
width = 1280
height = 73
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*73)?>
[TextureRedefine]
width = 1280
height = 36
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*36)?>
[TextureRedefine]
width = 854 width = 854
height = 480 height = 480
#overwriteWidth = <?=round($scaleFactorX*1280)?> #formatsExcluded =
#overwriteHeight = <?=round($scaleFactorY*720)?> overwriteWidth = <?=round($scaleFactorX*854)?>
overwriteHeight = <?=round($scaleFactorY*480)?>
[TextureRedefine]
width = 576
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*576)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 435
height = 293
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*293)?>
[TextureRedefine]
width = 435
height = 256
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*256)?>
[TextureRedefine]
width = 435
height = 220
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*220)?>
[TextureRedefine]
width = 435
height = 183
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*183)?>
[TextureRedefine]
width = 435
height = 147
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*147)?>
[TextureRedefine]
width = 435
height = 109
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*109)?>
[TextureRedefine]
width = 435
height = 73
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*73)?>
[TextureRedefine]
width = 435
height = 36
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*435)?>
overwriteHeight = <?=round($scaleFactorY*36)?>
[TextureRedefine]
width = 352
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*352)?>
overwriteHeight = <?=round($scaleFactorY*720)?>

View File

@ -0,0 +1,109 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;
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) / resYScale;
PS0f = R127f.y;
// 1
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;
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
}

View File

@ -0,0 +1,156 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
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
}

View File

@ -0,0 +1,87 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;
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
}

View File

@ -0,0 +1,111 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;
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
}

View File

@ -0,0 +1,129 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
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
}

View File

@ -0,0 +1,130 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
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
}

View File

@ -0,0 +1,99 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;
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
}

View File

@ -12,7 +12,18 @@ titleIds = 000500001010EC00,000500001010ED00,000500001010EB00
name = "Mario Kart 8 - <?=$title?>" name = "Mario Kart 8 - <?=$title?>"
version = 2 version = 2
# Main Screen Resolution
#[TextureRedefine] #
#width = 2048
#height = 2048
#overwriteWidth = <?=round($scaleFactorX*2048)?>
#overwriteHeight = <?=round($scaleFactorY*2048)?>
#[TextureRedefine] #selection screen shadows
#width = 1536
#height = 1536
[TextureRedefine] [TextureRedefine]
width = 1280 width = 1280
height = 720 height = 720
@ -20,46 +31,259 @@ formatsExcluded = 0x41A,0x431 # exclude the intro background texture, race end b
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
# Half Res Alpha (and DOF) [TextureRedefine] #MShadows
[TextureRedefine] width = 1024
width = 640 height = 1024
height = 360 formats = 0x005 #shadows 2 lod slices
formatsExcluded = 0x41A # exclude obvious textures overwriteWidth = <?=round($scaleFactorX*1024)?>
overwriteWidth = <?=round($scaleFactorX*640)?> overwriteHeight = <?=round($scaleFactorY*1024)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
# Quarter Res Alpha (motion blur effect around edges of screen) #[TextureRedefine] ##gloss, reflections, don't scale
[TextureRedefine] #width = 768
width = 320 #width = 768
height = 180
formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
# Multiplayer-Mode Resolution (2p) [TextureRedefine] # Multiplayer-Mode Resolution (2p)
[TextureRedefine]
width = 640 width = 640
height = 720 height = 720
formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = <?=round($scaleFactorX*640)?> overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
# Multiplayer-Mode Half Res Alpha (2p)
[TextureRedefine] [TextureRedefine]
width = 640
height = 360
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 640
height = 320
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*320)?>
#[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 = <?=round($scaleFactorX*512)?>
#overwriteHeight = <?=round($scaleFactorY*512)?>
[TextureRedefine]
width = 427
height = 240
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*427)?>
overwriteHeight = <?=round($scaleFactorY*240)?>
[TextureRedefine] #4P?
width = 320 width = 320
height = 360 height = 360
formatsExcluded = 0x41A # exclude obvious textures formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*320)?> overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*640)?> overwriteHeight = <?=round($scaleFactorY*360)?>
[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 = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine] #
width = 256
height = 256
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235 #
overwriteWidth = <?=round($scaleFactorX*256)?>
overwriteHeight = <?=round($scaleFactorY*256)?>
[TextureRedefine]
width = 199
height = 116
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*199)?>
overwriteHeight = <?=round($scaleFactorY*116)?>
# Multiplayer-Mode Quarter Res Alpha (2p)
[TextureRedefine] [TextureRedefine]
width = 160 width = 160
height = 180 height = 180
formatsExcluded = 0x41A # exclude obvious textures formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*160)?> overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*180)?> overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine] #bloom 2nd mip
width = 160
height = 90
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine]
width = 160
height = 80
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*80)?>
[TextureRedefine] #
width = 148
height = 148
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*148)?>
overwriteHeight = <?=round($scaleFactorY*148)?>
[TextureRedefine]
width = 133
height = 77
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*133)?>
overwriteHeight = <?=round($scaleFactorY*77)?>
[TextureRedefine]
width = 128
height = 256
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a,0x234,0x235
overwriteWidth = <?=round($scaleFactorX*128)?>
overwriteHeight = <?=round($scaleFactorY*256)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 128
#height = 128
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*128)?>
#overwriteHeight = <?=round($scaleFactorY*128)?>
[TextureRedefine]
width = 80
height = 90
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine] # bloom 3rd mip
width = 80
height = 45
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
[TextureRedefine]
width = 80
height = 40
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*40)?>
[TextureRedefine]
width = 64
height = 128
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*64)?>
overwriteHeight = <?=round($scaleFactorY*128)?>
#[TextureRedefine] # glossmap breaks 64 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 = <?=round($scaleFactorX*49)?>
overwriteHeight = <?=round($scaleFactorY*29)?>
[TextureRedefine]
width = 40
height = 45
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*40)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
[TextureRedefine] #bloom
width = 40
height = 22
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*40)?>
overwriteHeight = <?=round($scaleFactorY*22)?>
[TextureRedefine]
width = 40
height = 20
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*40)?>
overwriteHeight = <?=round($scaleFactorY*20)?>
[TextureRedefine]
width = 33
height = 19
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*33)?>
overwriteHeight = <?=round($scaleFactorY*19)?>
[TextureRedefine]
width = 32
height = 64
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*32)?>
overwriteHeight = <?=round($scaleFactorY*64)?>
#[TextureRedefine] #
#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 = <?=round($scaleFactorX*20)?>
overwriteHeight = <?=round($scaleFactorY*22)?>
[TextureRedefine]
width = 20
height = 10
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
verwriteWidth = <?=round($scaleFactorX*20)?>
overwriteHeight = <?=round($scaleFactorY*11)?>
[TextureRedefine]
width = 16
height = 32
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*16)?>
overwriteHeight = <?=round($scaleFactorY*32)?>
#[TextureRedefine] #M
#width = 16
#height = 16
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*16)?>
#overwriteHeight = <?=round($scaleFactorY*16)?>
[TextureRedefine]
width = 8
height = 16
formatsExcluded = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435,0x01a
overwriteWidth = <?=round($scaleFactorX*8)?>
overwriteHeight = <?=round($scaleFactorY*16)?>
###MKTV###
# MKTV screen # MKTV screen
[TextureRedefine] [TextureRedefine]
width = 960 width = 960
@ -91,11 +315,3 @@ height = 134
formatsExcluded = 0x41A # exclude obvious textures formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = <?=round($scaleFactorX*240)?> overwriteWidth = <?=round($scaleFactorX*240)?>
overwriteHeight = <?=round($scaleFactorY*134)?> overwriteHeight = <?=round($scaleFactorY*134)?>
# Multiplayer kart preview
[TextureRedefine]
width = 640
height = 320
formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*320)?>

View File

@ -0,0 +1,188 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight);
?>
[Definition]
titleIds = 0005000010162D00,0005000010162E00,0005000E10161F00
name = "Mario Party 10 - <?=$title?>"
version = 2
[TextureRedefine]
width = 1280
height = 720
formatsExcluded = 0x41a,0x431
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 1024
height = 1024
formatsExcluded = 0x34,0x35,0x431,0x433
overwriteWidth = <?=round($scaleFactorX*1024)?>
overwriteHeight = <?=round($scaleFactorY*1024)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 1022
height = 1022
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1022)?>
overwriteHeight = <?=round($scaleFactorY*1022)?>
[TextureRedefine]
width = 854
height = 960
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*854)?>
overwriteHeight = <?=round($scaleFactorY*960)?>
[TextureRedefine]
width = 854
height = 480
formatsExcluded = 0x41a
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 838
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*838)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 716
height = 538
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*716)?>
overwriteHeight = <?=round($scaleFactorY*538)?>
[TextureRedefine]
width = 640
height = 360
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 559
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*559)?>
overwriteHeight = <?=round($scaleFactorY*480)?>
[TextureRedefine]
width = 552
height = 414
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*552)?>
overwriteHeight = <?=round($scaleFactorY*414)?>
[TextureRedefine]
width = 536
height = 126
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*536)?>
overwriteHeight = <?=round($scaleFactorY*126)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 512
height = 512
formatsExcluded = 0x34,0x35,0x235,0x41a,0x431
overwriteWidth = <?=round($scaleFactorX*512)?>
overwriteHeight = <?=round($scaleFactorY*512)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 510
height = 510
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*510)?>
overwriteHeight = <?=round($scaleFactorY*510)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 460
height = 460
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*460)?>
overwriteHeight = <?=round($scaleFactorY*460)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 370
height = 370
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*370)?>
overwriteHeight = <?=round($scaleFactorY*370)?>
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 256
height = 256
formatsExcluded = 0x1,0x35,0x431,0x433
overwriteWidth = <?=round($scaleFactorX*256)?>
overwriteHeight = <?=round($scaleFactorY*256)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 196
height = 196
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*196)?>
overwriteHeight = <?=round($scaleFactorY*196)?>
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 128
height = 128
formatsExcluded = 0x35,0x41a,0x431,0x433
overwriteWidth = <?=round($scaleFactorX*128)?>
overwriteHeight = <?=round($scaleFactorY*128)?>
[TextureRedefine]
width = 80
height = 45
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 64
height = 64
formatsExcluded = 0x34,0x431,0x433
overwriteWidth = <?=round($scaleFactorX*64)?>
overwriteHeight = <?=round($scaleFactorY*64)?>
[TextureRedefine]
width = 40
height = 22
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*40)?>
overwriteHeight = <?=round($scaleFactorY*22)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 32
height = 32
formatsExcluded = 0x1,0x35,0x431
overwriteWidth = <?=round($scaleFactorX*32)?>
overwriteHeight = <?=round($scaleFactorY*32)?>
[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
width = 16
height = 16
formatsExcluded = 0x1,0x35,0x433
overwriteWidth = <?=round($scaleFactorX*16)?>
overwriteHeight = <?=round($scaleFactorY*16)?>

View File

@ -8,37 +8,287 @@ $scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight); $title = get_title($fullWidth, $fullHeight);
?> ?>
[Definition] [Definition]
titleIds = 00050000101E5300 titleIds = 0005000010190300,00050000101E5300,00050000101E5400,0005000210190301,00050002101E5301,00050002101E5401
name = "Mario & Sonic at the Rio 2016 Olympic Games - <?=$title?>" name = "Mario & Sonic at the Rio 2016 Olympic Games - <?=$title?>"
version = 2 version = 2
[TextureRedefine] [TextureRedefine]
width = 1280 width = 1280
height = 720 height = 720
tileModesExcluded = 0x1
formatsExcluded = 0x31
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 1200
height = 100
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1200)?>
overwriteHeight = <?=round($scaleFactorY*100)?>
[TextureRedefine]
width = 1040
height = 60
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1040)?>
overwriteHeight = <?=round($scaleFactorY*60)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1024
#height = 1024
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1024)?>
#overwriteHeight = <?=round($scaleFactorY*1024)?>
[TextureRedefine]
width = 880
height = 226
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*880)?>
overwriteHeight = <?=round($scaleFactorY*226)?>
[TextureRedefine]
width = 854
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 832
height = 40
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*832)?>
overwriteHeight = <?=round($scaleFactorY*40)?>
[TextureRedefine]
width = 784
height = 130
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*784)?>
overwriteHeight = <?=round($scaleFactorY*130)?>
[TextureRedefine]
width = 672
height = 64
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*672)?>
overwriteHeight = <?=round($scaleFactorY*64)?>
[TextureRedefine]
width = 656
height = 46
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*656)?>
overwriteHeight = <?=round($scaleFactorY*46)?>
[TextureRedefine] [TextureRedefine]
width = 640 width = 640
height = 360 height = 80
tileModesExcluded = 0x001 #formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?> overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?> overwriteHeight = <?=round($scaleFactorY*80)?>
[TextureRedefine]
width = 624
height = 40
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*624)?>
overwriteHeight = <?=round($scaleFactorY*40)?>
[TextureRedefine]
width = 608
height = 624
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*608)?>
overwriteHeight = <?=round($scaleFactorY*624)?>
[TextureRedefine]
width = 570
height = 420
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*570)?>
overwriteHeight = <?=round($scaleFactorY*420)?>
[TextureRedefine]
width = 544
height = 160
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*544)?>
overwriteHeight = <?=round($scaleFactorY*160)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 512
#height = 512
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*512)?>
#overwriteHeight = <?=round($scaleFactorY*512)?>
[TextureRedefine]
width = 512
height = 34
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*512)?>
overwriteHeight = <?=round($scaleFactorY*34)?>
[TextureRedefine]
width = 400
height = 40
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*400)?>
overwriteHeight = <?=round($scaleFactorY*40)?>
[TextureRedefine]
width = 336
height = 60
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*336)?>
overwriteHeight = <?=round($scaleFactorY*60)?>
[TextureRedefine] [TextureRedefine]
width = 320 width = 320
height = 180 height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?> overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?> overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine]
width = 320
height = 40
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*40)?>
[TextureRedefine]
width = 320
height = 24
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*24)?>
[TextureRedefine]
width = 280
height = 76
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*280)?>
overwriteHeight = <?=round($scaleFactorY*76)?>
[TextureRedefine]
width = 272
height = 50
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*272)?>
overwriteHeight = <?=round($scaleFactorY*50)?>
[TextureRedefine]
width = 256
height = 52
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*256)?>
overwriteHeight = <?=round($scaleFactorY*52)?>
[TextureRedefine]
width = 224
height = 52
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*224)?>
overwriteHeight = <?=round($scaleFactorY*52)?>
[TextureRedefine] [TextureRedefine]
width = 160 width = 160
height = 90 height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?> overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?> overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine] # gamepad [TextureRedefine]
width = 854 width = 160
height = 480 height = 46
#overwriteWidth = <?=round($scaleFactorX*1280)?> #formatsExcluded =
#overwriteHeight = <?=round($scaleFactorY*720)?> overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*46)?>
[TextureRedefine]
width = 160
height = 38
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*38)?>
[TextureRedefine]
width = 128
height = 58
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*128)?>
overwriteHeight = <?=round($scaleFactorY*58)?>
[TextureRedefine]
width = 80
height = 45
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 64
#height = 64
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*64)?>
#overwriteHeight = <?=round($scaleFactorY*64)?>
[TextureRedefine]
width = 40
height = 22
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*40)?>
overwriteHeight = <?=round($scaleFactorY*22)?>
[TextureRedefine]
width = 20
height = 11
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*20)?>
overwriteHeight = <?=round($scaleFactorY*11)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 16
#height = 16
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*16)?>
#overwriteHeight = <?=round($scaleFactorY*16)?>
[TextureRedefine]
width = 10
height = 5
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*10)?>
overwriteHeight = <?=round($scaleFactorY*5)?>
[TextureRedefine]
width = 5
height = 2
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*5)?>
overwriteHeight = <?=round($scaleFactorY*2)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 4
#height = 4
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*4)?>
#overwriteHeight = <?=round($scaleFactorY*4)?>
[TextureRedefine]
width = 2
height = 1
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*2)?>
overwriteHeight = <?=round($scaleFactorY*1)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1
#height = 1
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1)?>
#overwriteHeight = <?=round($scaleFactorY*1)?>

View File

@ -0,0 +1,62 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight);
?>
[Definition]
titleIds = 00050000101E0100,000500001020A200,000500001020A300
name = "Minecraft: Story Mode - <?=$title?>"
version = 2
[TextureRedefine]
width = 1280
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1024
#height = 1024
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1024)?>
#overwriteHeight = <?=round($scaleFactorY*1024)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1022
#height = 1022
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1022)?>
#overwriteHeight = <?=round($scaleFactorY*1022)?>
[TextureRedefine]
width = 640
height = 360
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine]
width = 80
height = 45
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>

View File

@ -0,0 +1,199 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 50e29e8929cea348
//AA fix PS
const float resScale = <?=$scaleFactorX?>;
//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);
}

View File

@ -0,0 +1,83 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
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
}

View File

@ -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);
}

View File

@ -0,0 +1,86 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#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 = <?=$scaleFactorX?>;
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
}

View File

@ -6,39 +6,68 @@ $scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0; $scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight); $title = get_title($fullWidth, $fullHeight);
?> ?>
[Definition] [Definition]
titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200 titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200
name = "New Super Mario Bros. U - <?=$title?>" name = "New Super Mario Bros. U - <?=$title?>"
version = 2 version = 2
[TextureRedefine] # tv [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
[TextureRedefine]
width = 1280 width = 1280
height = 720 height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine] # AA pass, shadows viewport
[TextureRedefine] #map shadows
width = 1024
height = 1024
formats = 0x005
overwriteWidth = <?=round($scaleFactorX*1024)?>
overwriteHeight = <?=round($scaleFactorY*1024)?>
[TextureRedefine]
width = 854
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*854)?>
overwriteHeight = <?=round($scaleFactorY*480)?>
[TextureRedefine]
width = 640 width = 640
height = 360 height = 360
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?> overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?> overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine] # [TextureRedefine]
width = 320 width = 320
height = 180 height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?> overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?> overwriteHeight = <?=round($scaleFactorY*180)?>
##Textures [TextureRedefine]
[TextureRedefine] # Dynamic shadows texture 3d overworld width = 160
width = 1024 height = 90
height = 1024 #formatsExcluded =
formats = 0x005 #0x034 static shadow texture, don't scale overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteWidth = <?=round($scaleFactorY*1024)?> overwriteHeight = <?=round($scaleFactorY*90)?>
overwriteHeight = <?=round($scaleFactorY*1024)?>
## Gradient don't scale
#width = 48
#height = 48
[TextureRedefine] # gamepad
width = 854
height = 480
#overwriteWidth = <?=round($scaleFactorX*1280)?>
#overwriteHeight = <?=round($scaleFactorY*720)?>

View File

@ -0,0 +1,91 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight);
?>
[Definition]
titleIds = 0005000010175B00,0005000010177800,0005000010191F00
name = "Sonic Boom: Rise of Lyric - <?=$title?>"
version = 2
[TextureRedefine]
width = 1280
height = 720
tileModesExcluded = 0x1
formatsExcluded = 0x31
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 854
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 640
height = 360
tileModesExcluded = 0x1
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 256
#height = 256
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*256)?>
#overwriteHeight = <?=round($scaleFactorY*256)?>
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine]
width = 80
height = 45
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 64
#height = 64
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*64)?>
#overwriteHeight = <?=round($scaleFactorY*64)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 16
#height = 16
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*16)?>
#overwriteHeight = <?=round($scaleFactorY*16)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 4
#height = 4
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*4)?>
#overwriteHeight = <?=round($scaleFactorY*4)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1
#height = 1
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1)?>
#overwriteHeight = <?=round($scaleFactorY*1)?>

View File

@ -21,7 +21,7 @@ overwriteHeight = <?=round($scaleFactorY*1080)?>
width = 1600 width = 1600
height = 960 height = 960
overwriteWidth = <?=round($scaleFactorX*1600)?> overwriteWidth = <?=round($scaleFactorX*1600)?>
overwriteHeight = <?=round($scaleFactorY*1960)?> overwriteHeight = <?=round($scaleFactorY*960)?>
[TextureRedefine] # gamepad [TextureRedefine] # gamepad
width = 854 width = 854

View File

@ -24,12 +24,24 @@ height = 540
overwriteWidth = <?=round($scaleFactorX*960)?> overwriteWidth = <?=round($scaleFactorX*960)?>
overwriteHeight = <?=round($scaleFactorY*540)?> overwriteHeight = <?=round($scaleFactorY*540)?>
[TextureRedefine]
width = 960
height = 360
overwriteWidth = <?=round($scaleFactorX*960)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine] # q-res [TextureRedefine] # q-res
width = 480 width = 480
height = 270 height = 270
overwriteWidth = <?=round($scaleFactorX*480)?> overwriteWidth = <?=round($scaleFactorX*480)?>
overwriteHeight = <?=round($scaleFactorY*270)?> overwriteHeight = <?=round($scaleFactorY*270)?>
[TextureRedefine]
width = 480
height = 180
overwriteWidth = <?=round($scaleFactorX*480)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine] # o-res [TextureRedefine] # o-res
width = 240 width = 240
height = 135 height = 135
@ -78,6 +90,24 @@ height = 210
overwriteWidth = <?=round($scaleFactorX*420)?> overwriteWidth = <?=round($scaleFactorX*420)?>
overwriteHeight = <?=round($scaleFactorY*210)?> overwriteHeight = <?=round($scaleFactorY*210)?>
[TextureRedefine]
width = 249
height = 250
overwriteWidth = <?=round($scaleFactorX*249)?>
overwriteHeight = <?=round($scaleFactorY*250)?>
[TextureRedefine]
width = 160
height = 160
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*160)?>
[TextureRedefine]
width = 135
height = 135
overwriteWidth = <?=round($scaleFactorX*135)?>
overwriteHeight = <?=round($scaleFactorY*135)?>
[TextureRedefine] # gamepad [TextureRedefine] # gamepad
width = 854 width = 854
height = 480 height = 480

View File

@ -0,0 +1,132 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = $fullWidth / 1280.0;
$scaleFactorY = $fullHeight / 720.0;
$title = get_title($fullWidth, $fullHeight);
?>
[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = "Tokyo Mirage Sessions FE - <?=$title?>"
version = 2
[TextureRedefine]
width = 1280
height = 720
tileModesExcluded = 0x001
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 1280
height = 340
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*340)?>
[TextureRedefine]
width = 1147
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1147)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 1024
height = 2048
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1024)?>
overwriteHeight = <?=round($scaleFactorY*2048)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 1024
#height = 1024
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*1024)?>
#overwriteHeight = <?=round($scaleFactorY*1024)?>
[TextureRedefine]
width = 1014
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1014)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 881
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*881)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 854
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 854
height = 342
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*854)?>
overwriteHeight = <?=round($scaleFactorY*342)?>
[TextureRedefine]
width = 853
height = 232
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*853)?>
overwriteHeight = <?=round($scaleFactorY*232)?>
[TextureRedefine]
width = 640
height = 720
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 640
height = 360
tileModesExcluded = 0x001
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?>
[TextureRedefine]
width = 300
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*300)?>
overwriteHeight = <?=round($scaleFactorY*480)?>
[TextureRedefine]
width = 266
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*266)?>
overwriteHeight = <?=round($scaleFactorY*480)?>
[TextureRedefine]
width = 254
height = 480
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*254)?>
overwriteHeight = <?=round($scaleFactorY*480)?>
[TextureRedefine]
width = 160
height = 120
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*120)?>

View File

@ -24,18 +24,95 @@ formatsExcluded = 0x31,0x1a
overwriteWidth = <?=round($scaleFactorX*1280)?> overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*720)?> overwriteHeight = <?=round($scaleFactorY*720)?>
[TextureRedefine]
width = 1280
height = 504
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*1280)?>
overwriteHeight = <?=round($scaleFactorY*504)?>
[TextureRedefine] # tv half [TextureRedefine] # tv half
width = 640 width = 640
height = 360 height = 360
overwriteWidth = <?=round($scaleFactorX*640)?> overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*360)?> overwriteHeight = <?=round($scaleFactorY*360)?>
[TextureRedefine]
width = 640
height = 252
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*640)?>
overwriteHeight = <?=round($scaleFactorY*252)?>
[TextureRedefine] # tv quarter [TextureRedefine] # tv quarter
width = 320 width = 320
height = 180 height = 180
overwriteWidth = <?=round($scaleFactorX*320)?> overwriteWidth = <?=round($scaleFactorX*320)?>
overwriteHeight = <?=round($scaleFactorY*180)?> overwriteHeight = <?=round($scaleFactorY*180)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 256
#height = 256
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*256)?>
#overwriteHeight = <?=round($scaleFactorY*256)?>
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*160)?>
overwriteHeight = <?=round($scaleFactorY*90)?>
[TextureRedefine]
width = 106
height = 60
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*106)?>
overwriteHeight = <?=round($scaleFactorY*60)?>
[TextureRedefine]
width = 80
height = 45
#formatsExcluded =
overwriteWidth = <?=round($scaleFactorX*80)?>
overwriteHeight = <?=round($scaleFactorY*45)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 48
#height = 48
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*48)?>
#overwriteHeight = <?=round($scaleFactorY*48)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 32
#height = 32
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*32)?>
#overwriteHeight = <?=round($scaleFactorY*32)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 24
#height = 24
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*24)?>
#overwriteHeight = <?=round($scaleFactorY*24)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 16
#height = 16
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*16)?>
#overwriteHeight = <?=round($scaleFactorY*16)?>
#[TextureRedefine] #May unintentionally scale textures, check formatsExcluded
#width = 8
#height = 8
#formatsExcluded =
#overwriteWidth = <?=round($scaleFactorX*8)?>
#overwriteHeight = <?=round($scaleFactorY*8)?>
[TextureRedefine] # gamepad full [TextureRedefine] # gamepad full
width = 854 width = 854
height = 480 height = 480
@ -54,126 +131,3 @@ width = 2176
height = 1248 height = 1248
#overwriteWidth = <?=round($scaleFactorX*2176)?> #overwriteWidth = <?=round($scaleFactorX*2176)?>
#overwriteHeight = <?=round($scaleFactorY*1248)?> #overwriteHeight = <?=round($scaleFactorY*1248)?>
#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

View File

@ -12,25 +12,41 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Xenoblade Chronicles X - <?=$title?>" name = "Xenoblade Chronicles X - <?=$title?>"
version = 2 version = 2
[TextureRedefine] # increase colour depth [TextureRedefine] # increase colour depth, slower but less banding
formats = 0x01a,0x008 formats = 0x816
replaceFormat 0x01f overwriteFormat = 0x820
[TextureRedefine] # increase colour depth [TextureRedefine] #
formats = 0x816,0x820
replaceFormat 0x823
[TextureRedefine] # increase colour depth
formats = 0x810 formats = 0x810
replaceFormat 0x81e overwriteFormat = 0x81e
[TextureRedefine] # increase colour depth [TextureRedefine] #
formats = 0x806 formats = 0x806
replaceFormat 0x80e overwriteFormat = 0x80e
[TextureRedefine] # increase colour depth [TextureRedefine] #
formats = 0x007 formats = 0x007
replaceFormat 0x00f overwriteFormat = 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 [TextureRedefine] # tv
width = 1280 width = 1280

View File

@ -294,3 +294,36 @@ _lwzCheck = 0x00000020 ; null checked version of 'lwz r8, 0(r31)'
0x038E3C50 = bla _lwzxCheck 0x038E3C50 = bla _lwzxCheck
0x038E3C5C = bla _lwzCheck 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

View File

@ -1,5 +1,5 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - 30FPS Lock" name = "Hyrule Warriors - 30FPS Lock"
version = 2 version = 2

View File

@ -1,4 +1,4 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - DLC Fix" name = "Hyrule Warriors - DLC Fix"
version = 2 version = 2

View File

@ -15,4 +15,4 @@ _nullViewport = 0x00000000
0x0000001C = blr 0x0000001C = blr
# patch DoF call to ktgl::CCafeGraphicsDevice::GetViewport to use our nulling out function instead # patch DoF call to ktgl::CCafeGraphicsDevice::GetViewport to use our nulling out function instead
0x02878FAC = bl _nullViewport 0x02878FAC = bla _nullViewport

View File

@ -1,4 +1,4 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - DoF Blur Removal" name = "Hyrule Warriors - DoF Blur Removal"
version = 2 version = 2

View File

@ -1,4 +1,4 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - NVIDIA Enemy Death Fix" name = "Hyrule Warriors - NVIDIA Enemy Death Fix"
version = 2 version = 2

View File

@ -1,4 +1,4 @@
[Definition] [Definition]
titleIds = 000500001017D800,000500001017D900 titleIds = 000500001017D800,000500001017D900,000500001017CD00
name = "Hyrule Warriors - Shadow Removal" name = "Hyrule Warriors - Shadow Removal"
version = 2 version = 2

View File

@ -0,0 +1,7 @@
[WWHDEU] ;OliveOperationMgrThread found by BenjaminLSR
moduleMatches = 0xB7E748DE
0x025AC21C = nop; SUSPEND OliveOperationMgrThread
[WWHDUS] ;Ported to US by Slash
moduleMatches = 0x475BD29F
0x025AC25C = nop; SUSPEND OliveOperationMgrThread

View File

@ -0,0 +1,4 @@
[Definition]
titleIds = 0005000010143500,0005000010143600
name = "The Legend of Zelda: The Wind Waker HD - FPS Slowdown Fix"
version = 2

View File

@ -3,8 +3,6 @@ moduleMatches = 0xB7E748DE
_emptyString = 0x10166948 _emptyString = 0x10166948
0x025AC21C = nop; SUSPEND OliveOperationMgrThread
;is_useSsaoDirectDraw ;is_useSsaoDirectDraw
0x0278EED8 = lis r0, _emptyString@ha 0x0278EED8 = lis r0, _emptyString@ha
0x0278EEE4 = addic r0, r0, _emptyString@l 0x0278EEE4 = addic r0, r0, _emptyString@l
@ -14,8 +12,6 @@ moduleMatches = 0x475BD29F
_emptyString = 0x1016693C _emptyString = 0x1016693C
0x025AC25C = nop; SUSPEND OliveOperationMgrThread
;is_useSsaoDirectDraw ;is_useSsaoDirectDraw
0x0278E618 = lis r0, _emptyString@ha 0x0278E618 = lis r0, _emptyString@ha
0x0278E624 = addic r0, r0, _emptyString@l 0x0278E624 = addic r0, r0, _emptyString@l

View File

@ -108,6 +108,23 @@ std_respack () {
done 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" ) res16by9=( "360p" "480p" "540p" "720p" "900p" "1080p" "1440p" "1800p" "2160p" "2880p" "4320p" "5760p" )
res21by9=( "540p219" "720p219" "900p219" "1080p219" "1440p219" "1800p219" "2160p219" "2880p219" "4320p219" "5760p219" ) res21by9=( "540p219" "720p219" "900p219" "1080p219" "1440p219" "1800p219" "2160p219" "2880p219" "4320p219" "5760p219" )
res48by9=( "360p489" "480p489" "540p489" "720p489" "900p489" "1080p489" "1440p489" "1800p489" "2160p489" "2880p489" "4320p489" "5760p489" ) res48by9=( "360p489" "480p489" "540p489" "720p489" "900p489" "1080p489" "1440p489" "1800p489" "2160p489" "2880p489" "4320p489" "5760p489" )
@ -116,6 +133,7 @@ just1080p=( "1080p" )
std_respack "AdventureTimeEtDBIDK" "${res16by9[@]/$just1080p}" std_respack "AdventureTimeEtDBIDK" "${res16by9[@]/$just1080p}"
std_respack "AdventureTimeFJI" "${res16by9[@]/$just720p}" std_respack "AdventureTimeFJI" "${res16by9[@]/$just720p}"
std_respack "AmiiboFestival" "${res16by9[@]/$just720p}"
std_respack "AquaTV" "${res16by9[@]/$just720p}" std_respack "AquaTV" "${res16by9[@]/$just720p}"
std_respack "BatmanArkham" "${res16by9[@]/$just720p}" std_respack "BatmanArkham" "${res16by9[@]/$just720p}"
std_respack "Bayonetta" "${res16by9[@]/$just720p}" std_respack "Bayonetta" "${res16by9[@]/$just720p}"
@ -147,8 +165,11 @@ std_respack "KirbyRainbowCurse" "${res16by9[@]/$just720p}"
std_respack "KungFuPanda" "${res16by9[@]/$just720p}" std_respack "KungFuPanda" "${res16by9[@]/$just720p}"
std_respack "LEGOCityUndercover" "${res16by9[@]/$just720p}" std_respack "LEGOCityUndercover" "${res16by9[@]/$just720p}"
std_respack "MarioKart8" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "MarioKart8" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}"
std_respack "MarioSonicRio" "${res16by9[@]/$just720p}"
std_respack "MarioSonicSochi" "${res16by9[@]/$just720p}" std_respack "MarioSonicSochi" "${res16by9[@]/$just720p}"
std_respack "MarioTennis" "${res16by9[@]/$just720p}" std_respack "MarioTennis" "${res16by9[@]/$just720p}"
std_respack "MarioParty10" "${res16by9[@]/$just720p}"
std_respack "MinecraftStory" "${res16by9[@]/$just720p}"
std_respack "MonsterHunter3Ultimate" "${res16by9[@]/$just1080p}" std_respack "MonsterHunter3Ultimate" "${res16by9[@]/$just1080p}"
std_respack "NBA2K13" "${res16by9[@]/$just720p}" std_respack "NBA2K13" "${res16by9[@]/$just720p}"
std_respack "NewSuperMarioBrosU" "${res16by9[@]/$just720p}" std_respack "NewSuperMarioBrosU" "${res16by9[@]/$just720p}"
@ -161,6 +182,7 @@ std_respack "Pikmin3" "${res16by9[@]/$just720p}"
std_respack "PokkenTournament" "${res16by9[@]/$just720p}" std_respack "PokkenTournament" "${res16by9[@]/$just720p}"
std_respack "ProjectZero" "${res16by9[@]/$just720p}" std_respack "ProjectZero" "${res16by9[@]/$just720p}"
std_respack "PuyoPuyoTetris" "${res16by9[@]/$just1080p}" std_respack "PuyoPuyoTetris" "${res16by9[@]/$just1080p}"
std_respack "RiseOfLyric" "${res16by9[@]/$just720p}"
std_respack "SanatoryHallways" "${res16by9[@]/$just720p}" std_respack "SanatoryHallways" "${res16by9[@]/$just720p}"
std_respack "ScribblenautsUnlimited" "${res16by9[@]/$just720p}" std_respack "ScribblenautsUnlimited" "${res16by9[@]/$just720p}"
std_respack "ScribblenautsUnmasked" "${res16by9[@]/$just720p}" std_respack "ScribblenautsUnmasked" "${res16by9[@]/$just720p}"
@ -179,6 +201,7 @@ std_respack "TNTRacers" "${res16by9[@]/$just1080p}"
std_respack "TaikoNoTatsujin" "${res16by9[@]/$just720p}" std_respack "TaikoNoTatsujin" "${res16by9[@]/$just720p}"
std_respack "Tekken" "${res16by9[@]/$just720p}" std_respack "Tekken" "${res16by9[@]/$just720p}"
std_respack "Tengami" "${res16by9[@]/$just720p}" std_respack "Tengami" "${res16by9[@]/$just720p}"
std_respack "TokyoMirage" "${res16by9[@]/$just720p}"
std_respack "TropicalFreeze" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "TropicalFreeze" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}"
std_respack "TurboSuperStuntSquad" "${res16by9[@]/$just720p}" std_respack "TurboSuperStuntSquad" "${res16by9[@]/$just720p}"
std_respack "TwilightPrincessHD" "${res16by9[@]/$just1080p}" std_respack "TwilightPrincessHD" "${res16by9[@]/$just1080p}"
@ -190,4 +213,7 @@ std_respack "WipeoutCreate" "${res16by9[@]/$just720p}"
std_respack "Wonderful101" "${res16by9[@]/$just720p}" std_respack "Wonderful101" "${res16by9[@]/$just720p}"
std_respack "WoollyWorld" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "WoollyWorld" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}"
std_respack "XenobladeX" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}" std_respack "XenobladeX" "${res16by9[@]/$just720p}" "${res21by9[@]}" "${res48by9[@]}"
mod_onearg "BreathOfTheWild_StaticFPS" 30 45 60
echo -e "${NC}" echo -e "${NC}"