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