mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2025-04-29 14:59:29 -04:00
Merge f3cb1b9c9b
into 1e94568a57
This commit is contained in:
commit
761b09bce7
44 changed files with 523 additions and 508 deletions
|
@ -1,36 +0,0 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143600,0005000010143500
|
||||
name = Anisotropic Filtering
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Anisotropic Filtering"
|
||||
description = Allows you to set the anisotropic filtering level to improve clarity for surfaces that are looked at an angle.
|
||||
version = 7
|
||||
|
||||
[Default]
|
||||
$anisoLevel = 1
|
||||
|
||||
[Preset]
|
||||
name = x1 (Default)
|
||||
|
||||
[Preset]
|
||||
name = x2
|
||||
$anisoLevel = 2
|
||||
|
||||
[Preset]
|
||||
name = x4
|
||||
$anisoLevel = 4
|
||||
|
||||
[Preset]
|
||||
name = x8
|
||||
$anisoLevel = 8
|
||||
|
||||
[Preset]
|
||||
name = x16 (Recommended)
|
||||
$anisoLevel = 16
|
||||
|
||||
[Preset]
|
||||
name = x32 (Overkill)
|
||||
$anisoLevel = 32
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435
|
||||
overwriteAnisotropy = $anisoLevel
|
|
@ -1,33 +0,0 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143600,0005000010143500
|
||||
name = Shadow Resolution
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Graphics/Shadow Resolution"
|
||||
description = Note: Increasing shadow resolution is known to increase VRAM usage directly. Lowering this might give you a good boost in performance if you're limited on VRAM but makes shadows blockier. Medium is the original resolution.
|
||||
version = 4
|
||||
|
||||
[Preset]
|
||||
name = Medium (100%, Default)
|
||||
$shadowRes = 1
|
||||
|
||||
[Preset]
|
||||
name = Low (50%)
|
||||
$shadowRes = 0.5
|
||||
|
||||
[Preset]
|
||||
name = High (200%)
|
||||
$shadowRes = 2
|
||||
|
||||
[Preset]
|
||||
name = Ultra (300%)
|
||||
$shadowRes = 3
|
||||
|
||||
[Preset]
|
||||
name = Extreme (400%, Unstable)
|
||||
$shadowRes = 4
|
||||
|
||||
[TextureRedefine] # Shadows x3 Lods
|
||||
width = 1024
|
||||
height = 1024
|
||||
formats = 0x005
|
||||
overwriteWidth = $shadowRes * 1024
|
||||
overwriteHeight = $shadowRes * 1024
|
|
@ -1,115 +0,0 @@
|
|||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader d80a321ea97e9415: text shadow
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.z, 1.0/gl_FragCoord.w)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[2];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem2;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
int clampFI32(int v)
|
||||
{
|
||||
if( v == 0x7FFFFFFF )
|
||||
return floatBitsToInt(1.0);
|
||||
else if( v == 0xFFFFFFFF )
|
||||
return floatBitsToInt(0.0);
|
||||
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||
}
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
vec4 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;
|
||||
float PV0fx = 0.0, PV0fy = 0.0, PV0fz = 0.0, PV0fw = 0.0, PV1fx = 0.0, PV1fy = 0.0, PV1fz = 0.0, PV1fw = 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;
|
||||
R0f = passParameterSem0;
|
||||
R1f = passParameterSem2;
|
||||
R1f.xyzw = (texture(textureUnitPS0, vec2(R1f.x,R1f.y)).xyzw);
|
||||
// 0
|
||||
PV0fx = intBitsToFloat(uf_remappedPS[0].w) * 0.99609375;
|
||||
PV0fy = intBitsToFloat(uf_remappedPS[0].z) * 0.99609375;
|
||||
PV0fz = intBitsToFloat(uf_remappedPS[0].y) * 0.99609375;
|
||||
PV0fw = intBitsToFloat(uf_remappedPS[0].x) * 0.99609375;
|
||||
// 1
|
||||
PV1fx = fract(PV0fw);
|
||||
R127f.y = fract(PV0fx);
|
||||
R127f.z = fract(PV0fy);
|
||||
PV1fw = fract(PV0fz);
|
||||
R127f.w = intBitsToFloat(uf_remappedPS[1].x) * 0.99609375;
|
||||
// 2
|
||||
R127f.x = intBitsToFloat(uf_remappedPS[1].w) * 0.99609375;
|
||||
PV0fy = intBitsToFloat(uf_remappedPS[1].z) * 0.99609375;
|
||||
PV0fz = intBitsToFloat(uf_remappedPS[1].y) * 0.99609375;
|
||||
R126f.w = PV1fx * intBitsToFloat(0x3f808081);
|
||||
R126f.x = PV1fw * intBitsToFloat(0x3f808081);
|
||||
// 3
|
||||
R125f.x = R127f.y * intBitsToFloat(0x3f808081);
|
||||
PV1fy = fract(R127f.w);
|
||||
PV1fz = fract(PV0fz);
|
||||
R127f.w = R127f.z * intBitsToFloat(0x3f808081);
|
||||
PS1f = fract(PV0fy);
|
||||
// 4
|
||||
PV0fx = fract(R127f.x);
|
||||
R123f.y = PS1f * intBitsToFloat(0x3f808081) + -(R127f.w);
|
||||
R123f.z = PV1fz * intBitsToFloat(0x3f808081) + -(R126f.x);
|
||||
R123f.w = PV1fy * intBitsToFloat(0x3f808081) + -(R126f.w);
|
||||
// 5
|
||||
backupReg0f = R123f.y;
|
||||
backupReg1f = R123f.z;
|
||||
R123f.x = mul_nonIEEE(R123f.w,R1f.x) + R126f.w;
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
R123f.y = PV0fx * intBitsToFloat(0x3f808081) + -(R125f.x);
|
||||
R123f.z = mul_nonIEEE(backupReg0f,R1f.z) + R127f.w;
|
||||
R123f.z = clamp(R123f.z, 0.0, 1.0);
|
||||
R123f.w = mul_nonIEEE(backupReg1f,R1f.y) + R126f.x;
|
||||
R123f.w = clamp(R123f.w, 0.0, 1.0);
|
||||
// 6
|
||||
backupReg0f = R123f.x;
|
||||
R123f.x = mul_nonIEEE(R123f.y,R1f.w) + R125f.x;
|
||||
R123f.x = clamp(R123f.x, 0.0, 1.0);
|
||||
R1f.y = mul_nonIEEE(R0f.y, R123f.w);
|
||||
R1f.y = clamp(R1f.y, 0.0, 1.0);
|
||||
R1f.z = mul_nonIEEE(R0f.z, R123f.z);
|
||||
R1f.z = clamp(R1f.z, 0.0, 1.0);
|
||||
R1f.x = mul_nonIEEE(R0f.x, backupReg0f);
|
||||
R1f.x = clamp(R1f.x, 0.0, 1.0);
|
||||
// 7
|
||||
R1f.w = mul_nonIEEE(R0f.w, R123f.x);
|
||||
R1f.w = clamp(R1f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
[WWHDEU] ;OliveOperationMgrThread found by BenjaminLSR
|
||||
moduleMatches = 0xB7E748DE
|
||||
0x025AC21C = nop; SUSPEND OliveOperationMgrThread
|
||||
|
||||
[WWHDUS] ;Ported to US by M&M
|
||||
moduleMatches = 0x475BD29F
|
||||
0x025AC25C = nop; SUSPEND OliveOperationMgrThread
|
||||
|
||||
[WWHDJP] ;Ported to JP by Crementif
|
||||
moduleMatches = 0x74BD3F6A
|
||||
0x025AC24C = nop; SUSPEND OliveOperationMgrThread
|
|
@ -1 +0,0 @@
|
|||
For loadline versions, try looking up addresses from patches.txt in PPC debugger. Correct opcodes should be near these addresses. Changing it should be easy.
|
|
@ -1,67 +1,70 @@
|
|||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
|
||||
// shader 7d7d874efcc7ba4b: textbox continue icon
|
||||
|
||||
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.z, 1.0/gl_FragCoord.w)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 1) in vec4 passParameterSem1;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
int clampFI32(int v)
|
||||
{
|
||||
if( v == 0x7FFFFFFF )
|
||||
return floatBitsToInt(1.0);
|
||||
else if( v == 0xFFFFFFFF )
|
||||
return floatBitsToInt(0.0);
|
||||
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||
}
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
vec4 R1f = vec4(0.0);
|
||||
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
||||
float PV0fx = 0.0, PV0fy = 0.0, PV0fz = 0.0, PV0fw = 0.0, PV1fx = 0.0, PV1fy = 0.0, PV1fz = 0.0, PV1fw = 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;
|
||||
R0f = passParameterSem0;
|
||||
R1f = passParameterSem1;
|
||||
R1f.xyzw = (texture(textureUnitPS0, vec2(R1f.x,R1f.y)).xyzw);
|
||||
// 0
|
||||
R0f.x = mul_nonIEEE(R0f.x, R1f.x);
|
||||
R0f.x = clamp(R0f.x, 0.0, 1.0);
|
||||
R0f.y = mul_nonIEEE(R0f.y, R1f.y);
|
||||
R0f.y = clamp(R0f.y, 0.0, 1.0);
|
||||
R0f.z = mul_nonIEEE(R0f.z, R1f.z);
|
||||
R0f.z = clamp(R0f.z, 0.0, 1.0);
|
||||
R0f.w = mul_nonIEEE(R0f.w, R1f.w);
|
||||
R0f.w = clamp(R0f.w, 0.0, 1.0);
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, 0.0);
|
||||
}
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// shader 960d3ef6662043c7
|
||||
// Used for: Bloom
|
||||
|
||||
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
int clampFI32(int v)
|
||||
{
|
||||
if( v == 0x7FFFFFFF )
|
||||
return floatBitsToInt(1.0);
|
||||
else if( v == 0xFFFFFFFF )
|
||||
return floatBitsToInt(0.0);
|
||||
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||
}
|
||||
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
|
||||
void main()
|
||||
{
|
||||
vec4 R0f = vec4(0.0);
|
||||
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.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
|
||||
// 0
|
||||
backupReg0f = R0f.x * $targetBloom;
|
||||
backupReg1f = R0f.y * $targetBloom;
|
||||
backupReg2f = R0f.z * $targetBloom;
|
||||
R0f.xyz = vec3(backupReg0f,backupReg1f,backupReg2f);
|
||||
|
||||
// export
|
||||
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
|
||||
}
|
40
src/WindWakerHD/Enhancements/Bloom/rules.txt
Normal file
40
src/WindWakerHD/Enhancements/Bloom/rules.txt
Normal file
|
@ -0,0 +1,40 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Bloom
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Bloom"
|
||||
description = Modify the amount of bloom. Bloom is used to make bright things emit a glow effect to make them look bright.
|
||||
#Credits: Crementif
|
||||
version = 6
|
||||
|
||||
[Default]
|
||||
$targetBloom = 1.0
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Extra Bloom (150%)
|
||||
$targetBloom = 1.5
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Normal Bloom (100%, Default)
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Slightly Reduced Bloom (75%)
|
||||
$targetBloom = 0.75
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Reduced Bloom (50%)
|
||||
$targetBloom = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = Heavily Reduced Bloom (25%)
|
||||
$targetBloom = 0.25
|
||||
|
||||
[Preset]
|
||||
category = Bloom
|
||||
name = No Bloom
|
||||
$targetBloom = 0.0
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -30,7 +30,7 @@ uniform vec2 uf_fragCoordScale;
|
|||
#endif
|
||||
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -18,9 +18,9 @@
|
|||
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
|
||||
|
||||
// shader 53141a02b3f78921
|
||||
//make gradient more white blue
|
||||
//make gradient more white blue
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -20,7 +20,7 @@
|
|||
// shader 8a763b05908ba4e8
|
||||
//Third band horizon
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -18,9 +18,9 @@
|
|||
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
|
||||
|
||||
// shader 90ed656e9c17616b
|
||||
//make second gradient more white blue
|
||||
//make second gradient more white blue
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -19,7 +19,7 @@
|
|||
|
||||
// shader 960d3ef6662043c7//bloom blend
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -29,7 +29,7 @@ uniform ivec4 uf_remappedPS[9];
|
|||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
|
@ -19,7 +19,7 @@
|
|||
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
|
||||
|
||||
// shader c2cae30e906be2d5
|
||||
//Ao scale
|
||||
//Ao scale
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 3) uniform ufBlock
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -29,7 +29,7 @@ uniform ivec4 uf_remappedPS[5];
|
|||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
|
@ -20,7 +20,7 @@
|
|||
|
||||
// shader ef821134ed8dd294 // horizon 2 missing shader
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -19,7 +19,7 @@
|
|||
|
||||
// shader f1a49f43d95bec30 //skybox
|
||||
const float skyboxRed = float($skyboxRed);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxGreen = float($skyboxGreen);
|
||||
const float skyboxBlue = float($skyboxBlue);
|
||||
const float skyboxMix = float($skyboxMix);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
|
@ -35,8 +35,8 @@ const float hazeFactor = 0.1;
|
|||
|
||||
const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage
|
||||
const float exposure = $exposure; // 1.0 is neutral
|
||||
const float vibrance = $vibrance; // 0.0 is neutral
|
||||
const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail
|
||||
const float vibrance = $vibrance; // 0.0 is neutral
|
||||
const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail
|
||||
const float contrastCurve = $contrastCurve;
|
||||
|
||||
|
||||
|
@ -45,18 +45,18 @@ vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adju
|
|||
vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue
|
||||
//lumasharpen
|
||||
const float sharp_mix = $sharp_mix;
|
||||
const float sharp_strength = 2.0;
|
||||
const float sharp_strength = 2.0;
|
||||
const float sharp_clamp = 0.75;
|
||||
const float offset_bias = 1.0;
|
||||
float Sigmoid (float x) {
|
||||
|
||||
return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5)));
|
||||
return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5)));
|
||||
}
|
||||
|
||||
|
||||
#define px (1.0/1920.0*uf_fragCoordScale.x)
|
||||
#define py (1.0/1080.0*uf_fragCoordScale.y)
|
||||
#define CoefLuma vec3(0.2126, 0.7152, 0.0722)
|
||||
#define CoefLuma vec3(0.2126, 0.7152, 0.0722)
|
||||
|
||||
float lumasharping(sampler2D tex, vec2 pos) {
|
||||
vec4 colorInput = texture(tex, pos);
|
||||
|
@ -94,8 +94,8 @@ vec3 LiftGammaGainPass(vec3 colorInput)
|
|||
{ //reshade BSD https://reshade.me , Alexkiri port
|
||||
vec3 color = colorInput;
|
||||
color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
|
||||
color = clamp(color, 0.0, 1.0);
|
||||
color *= RGB_Gain;
|
||||
color = clamp(color, 0.0, 1.0);
|
||||
color *= RGB_Gain;
|
||||
color = pow(color, 1.0 / RGB_Gamma);
|
||||
return clamp(color, 0.0, 1.0);
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ vec3 LiftGammaGainPass(vec3 colorInput)
|
|||
vec3 contrasty(vec3 colour){
|
||||
vec3 fColour = (colour.xyz);
|
||||
//fColour = LiftGammaGainPass(fColour);
|
||||
|
||||
|
||||
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;
|
|
@ -1,12 +1,12 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143600,0005000010143500
|
||||
name = Contrasty
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Contrasty v1.1"
|
||||
description = This pack tweaks the colors and contrast to whatever preset you set it as. You can also make your own preset by editing the Default preset in the Contrasty folder from the game's graphic packs. Enabling will ignore your other AA settings. Made by getdls.
|
||||
version = 4
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Contrasty v1.1
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Contrasty"
|
||||
description = This pack tweaks the colors and contrast to whatever preset you set it as. You can also make your own preset by editing the Default preset in the Contrasty folder from the game's graphic packs.|Made by getdls.
|
||||
#Credits: getdls
|
||||
version = 6
|
||||
|
||||
[Preset]
|
||||
name = Default
|
||||
[Default]
|
||||
$redShadows = 1.0
|
||||
$greenShadows = 1.0
|
||||
$blueSadows = 1.0
|
||||
|
@ -34,6 +34,9 @@ $skyboxMix = 1.05
|
|||
$AO = 1.0
|
||||
$beach = 1.0
|
||||
|
||||
[Preset]
|
||||
name = Default
|
||||
|
||||
[Preset]
|
||||
name = Less sky bloom
|
||||
$redShadows = 1.0
|
|
@ -1,12 +1,12 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143600,0005000010143500
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Negative texture LOD bias
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Negative Texture LOD"
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Negative Texture LOD"
|
||||
description = Texture LOD override, possible shimmer but sharper textures.
|
||||
version = 4
|
||||
#Credits: getdls
|
||||
version = 6
|
||||
|
||||
[Preset]
|
||||
name = LOD Default
|
||||
[Default]
|
||||
$0x031 = 0
|
||||
$0x033 = 0
|
||||
$0x034 = 0
|
||||
|
@ -17,7 +17,7 @@ $0x433 = 0
|
|||
$0x434 = 0
|
||||
|
||||
[Preset] #16x Anisotropic filter makes (ocean) textures to sharp, they should fade to blur.
|
||||
name = +2 LOD 34 smooth ocean mipmap transition.
|
||||
name = +2 LOD 34 smooth ocean mipmap transition.
|
||||
$0x031 = 0
|
||||
$0x033 = 0
|
||||
$0x034 = +2
|
||||
|
@ -27,6 +27,10 @@ $0x432 = 0
|
|||
$0x433 = 0
|
||||
$0x434 = 0
|
||||
|
||||
[Preset]
|
||||
name = LOD Default
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
name = LOD -0.5 (Sharper)
|
||||
$0x031 = -.5
|
||||
|
@ -39,7 +43,7 @@ $0x433 = -.5
|
|||
$0x434 = -.5
|
||||
|
||||
[Preset]
|
||||
name = LOD -1 (Max for gameplay)
|
||||
name = LOD -1 (Super Sharp)
|
||||
$0x031 = -1
|
||||
$0x033 = -1
|
||||
$0x034 = -1
|
||||
|
@ -63,15 +67,15 @@ $0x434 = -4
|
|||
|
||||
[TextureRedefine]
|
||||
formats = 0x031 #
|
||||
overwriteRelativeLodBias = $0x031
|
||||
overwriteRelativeLodBias = $0x031
|
||||
|
||||
[TextureRedefine]#Per format, possible to have separate scaling if needed
|
||||
formats = 0x033
|
||||
overwriteRelativeLodBias = $0x033
|
||||
formats = 0x033
|
||||
overwriteRelativeLodBias = $0x033
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x034
|
||||
overwriteRelativeLodBias = $0x034
|
||||
overwriteRelativeLodBias = $0x034
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x035
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
|
@ -1,6 +1,7 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143600,0005000010143500
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = No SSAO
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/No SSAO"
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/No SSAO"
|
||||
description = Removes the SSAO of the game, which are these little blurred shadows around Link when you're standing under a tree, for example.
|
||||
version = 4
|
||||
#Credits: MelonSpeedruns
|
||||
version = 6
|
|
@ -0,0 +1,84 @@
|
|||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#ifdef VULKAN
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
||||
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
||||
#define gl_VertexID gl_VertexIndex
|
||||
#define gl_InstanceID gl_InstanceIndex
|
||||
#else
|
||||
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
||||
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
||||
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
||||
#define SET_POSITION(_v) gl_Position = _v
|
||||
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
||||
#endif
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 1, binding = 1) uniform ufBlock
|
||||
{
|
||||
uniform ivec4 uf_remappedPS[5];
|
||||
uniform vec4 uf_fragCoordScale;
|
||||
};
|
||||
#else
|
||||
uniform ivec4 uf_remappedPS[5];
|
||||
uniform vec2 uf_fragCoordScale;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//// shader ff71dcd2ad4defdc
|
||||
//uniform ivec4 uf_remappedPS[4];
|
||||
//layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf5807800 res 1920x1080x1 dim 1 tm: 4 format 0019 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 0xf4000800 res 1920x1080x1 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 passParameterSem2;
|
||||
//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 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 = passParameterSem2;
|
||||
////R1f.xyzw = (textureGather(textureUnitPS1, R0f.xy).wzxy);
|
||||
//R2f.xyzw= (texture(textureUnitPS0, R0f.xy).xyzw);
|
||||
//passPixelColor0 = R2f.xyzw;
|
||||
//}
|
7
src/WindWakerHD/Enhancements/RemoveAA/rules.txt
Normal file
7
src/WindWakerHD/Enhancements/RemoveAA/rules.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Remove Anti-Aliasing
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Enhancements/Remove AA"
|
||||
description = Dissable the game's native AA.
|
||||
#Credits: getdls
|
||||
version = 6
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
|
@ -20,8 +20,8 @@
|
|||
|
||||
// shader 1f83c0d47b1c4c34 //box downscale
|
||||
|
||||
const float resXScale = (float($height)/float($gameHeight));
|
||||
const float resYScale = (float($width)/float($gameWidth));
|
||||
const float resXScale = (float($height)/float($gameHeight));
|
||||
const float resYScale = (float($width)/float($gameWidth));
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
|
@ -20,8 +20,8 @@
|
|||
|
||||
// shader 4ffa96d07cd53c34
|
||||
|
||||
const float resXScale = (float($height)/float($gameHeight));
|
||||
const float resYScale = (float($height)/float($gameHeight));
|
||||
const float resXScale = (float($height)/float($gameHeight));
|
||||
const float resYScale = (float($height)/float($gameHeight));
|
||||
|
||||
|
||||
//box low res (bloom?)
|
||||
|
@ -99,7 +99,7 @@ backupReg0f = R2f.x;
|
|||
R2f.x = backupReg0f + intBitsToFloat(uf_remappedVS[0].z)/resXScale;//hz right
|
||||
R2f.y = PS0f;
|
||||
PV1f.z = backupReg1f + -(intBitsToFloat(uf_remappedVS[0].w)/resYScale); ///vert
|
||||
R0f.x = backupReg0f + -(intBitsToFloat(uf_remappedVS[0].z)/resXScale); //hz left
|
||||
R0f.x = backupReg0f + -(intBitsToFloat(uf_remappedVS[0].z)/resXScale); //hz left
|
||||
PS1f = R0f.x;
|
||||
// 2
|
||||
R0f.y = R127f.x;
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
|
@ -20,7 +20,7 @@
|
|||
|
||||
// shader 842a19b509f8b91a //vertical pass bloom
|
||||
|
||||
const float resYScale = (float($height)/float($gameHeight));
|
||||
const float resYScale = (float($height)/float($gameHeight));
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
|
@ -1,4 +1,4 @@
|
|||
#version 420
|
||||
#version 430
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#ifdef VULKAN
|
||||
|
@ -20,7 +20,7 @@
|
|||
|
||||
|
||||
// shader 8d68a0e3561ff525 //horiztontal bloom pass
|
||||
const float resXScale = (float($width)/float($gameWidth));
|
||||
const float resXScale = (float($width)/float($gameWidth));
|
||||
|
||||
#ifdef VULKAN
|
||||
layout(set = 0, binding = 0) uniform ufBlock
|
|
@ -1,17 +1,17 @@
|
|||
[WWHDAspectEUR]
|
||||
moduleMatches = 0xB7E748DE
|
||||
[WindWakerHD_Aspect_EU]
|
||||
moduleMatches = 0xB7E748DE ; (EU)
|
||||
0x1004AAF0 = .float ($aspectRatio)
|
||||
0x101417E0 = .float ($aspectRatio)
|
||||
0x101658A8 = .float ($aspectRatio)
|
||||
|
||||
[WWHDAspectJAP]
|
||||
moduleMatches = 0x74BD3F6A
|
||||
[WindWakerHD_Aspect_NA]
|
||||
moduleMatches = 0x475BD29F ; (NA)
|
||||
0x1004AAF0 = .float ($aspectRatio)
|
||||
0x101417D0 = .float ($aspectRatio)
|
||||
0x10165898 = .float ($aspectRatio)
|
||||
|
||||
[WindWakerHD_Aspect_JP]
|
||||
moduleMatches = 0x74BD3F6A ; (JP)
|
||||
0x1004AAF0 = .float ($aspectRatio)
|
||||
0x101417F8 = .float ($aspectRatio)
|
||||
0x101658C0 = .float ($aspectRatio)
|
||||
|
||||
[WWHDAspectUSA]
|
||||
moduleMatches = 0x475BD29F
|
||||
0x1004AAF0 = .float ($aspectRatio)
|
||||
0x101417D0 = .float ($aspectRatio)
|
||||
0x10165898 = .float ($aspectRatio)
|
|
@ -1,127 +1,124 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143600,0005000010143500
|
||||
name = Resolution
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Graphics/Resolution"
|
||||
description = Changes the resolution of the game. Made by getdls and Morph.
|
||||
version = 4
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Graphics Settings
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Graphics"
|
||||
description = Changes the resolution of the game and shadow quality.|Made by getdls and Morph.
|
||||
#Credits: getdls, Morph, NineKain
|
||||
version = 6
|
||||
|
||||
[Preset]
|
||||
name = 1920x1080 (Default)
|
||||
[Default]
|
||||
$width = 1920
|
||||
$height = 1080
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
$shadowRes = 1
|
||||
$anisoLevel = 1
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 320x180
|
||||
$width = 320
|
||||
$height = 180
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 640x360
|
||||
$width = 640
|
||||
$height = 360
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 960x540
|
||||
$width = 960
|
||||
$height = 540
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 1280x720
|
||||
$width = 1280
|
||||
$height = 720
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 1600x900
|
||||
$width = 1600
|
||||
$height = 900
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 1920x1080 (Default)
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 2560x1440
|
||||
$width = 2560
|
||||
$height = 1440
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 2732x1536
|
||||
$width = 2732
|
||||
$height = 1536
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 3200x1800
|
||||
$width = 3200
|
||||
$height = 1800
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 3840x2160
|
||||
$width = 3840
|
||||
$height = 2160
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 5120x2880
|
||||
$width = 5120
|
||||
$height = 2880
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 7680x4320
|
||||
$width = 7680
|
||||
$height = 4320
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
|
@ -132,145 +129,211 @@ $aspectRatio = (16.0/9.0)
|
|||
#1920×800, 3840×1600, 7680×3200 |12:5 (2.4)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = ---- Ultra wide 21:9 ----
|
||||
$width = 2560
|
||||
$height = 1080
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 2.0
|
||||
$lightSourceRecommened = 2.0
|
||||
$scaleShader = (1920.0/2560.0)
|
||||
$aspectRatio = (64.0/27.0) #LG
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 2560x1080 (21:9 HD)
|
||||
$width = 2560
|
||||
$height = 1080
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 2.0
|
||||
$lightSourceRecommened = 2.0
|
||||
$scaleShader = (1920.0/2560.0)
|
||||
$aspectRatio = (64.0/27.0) #LG
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 3440x1440 (21:9)
|
||||
$width = 3440
|
||||
$height = 1440
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.5
|
||||
$lightSourceRecommened = 1.5
|
||||
$scaleShader = (2560.0/3440.0)
|
||||
$aspectRatio = (43.0/18.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 3840x1600 (21:9)
|
||||
$width = 3840
|
||||
$height = 1600
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.35
|
||||
$lightSourceRecommened = 1.35
|
||||
$scaleShader = (2844.445/3840.0)
|
||||
$aspectRatio = (12.0/5.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 5160x2160 (4k 21:9)
|
||||
$width = 5160
|
||||
$height = 2160
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = (3840.0/5160.0)
|
||||
$aspectRatio = (64.0/27.0) #LG
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = ---- Superwide 32:9 ----
|
||||
$width = 5120
|
||||
$height = 1440
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.5
|
||||
$lightSourceRecommened = 1.5
|
||||
$scaleShader = (2560.0/5120.0)
|
||||
$aspectRatio = (96.0/27.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 5120x1440 (32:9)
|
||||
$width = 5120
|
||||
$height = 1440
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.5
|
||||
$lightSourceRecommened = 1.5
|
||||
$scaleShader = (2560.0/5120.0)
|
||||
$aspectRatio = (96.0/27.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = 7680x2160 (4k 32:9)
|
||||
$width = 7680
|
||||
$height = 2160
|
||||
$gameWidth= 1920
|
||||
$gameHeight= 1080
|
||||
$lightSource = 1.0
|
||||
$lightSourceRecommened = 1.0
|
||||
$scaleShader = (3840.0/7680.0)
|
||||
$aspectRatio = (96.0/27.0)
|
||||
|
||||
[Preset]
|
||||
category = Resolution
|
||||
name = ---- Custom resolutions ----
|
||||
$width = 1920
|
||||
$height = 1080
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 2.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
name = 1920x1080 AO fix - Light res x2
|
||||
$width = 1920
|
||||
$height = 1080
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 2.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
name = 2560x1440 AO fix
|
||||
$width = 2560
|
||||
$height = 1440
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 1.5
|
||||
$scaleShader = 1.0 #(1088.0/1440.0)
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
name = 3840x2160 AO fix - light res x2
|
||||
$width = 3840
|
||||
$height = 2160
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 2.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
name = 1920x2160 vert x2 SSAA - light res x2
|
||||
category = Resolution
|
||||
name = 1920x2160 vert x2 SSAA
|
||||
$width = 1920
|
||||
$height = 2160
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 2.0
|
||||
$lightSourceRecommened = 2.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
[Preset]
|
||||
name = 3840x4320 vert x2 SSAA - light res x2
|
||||
category = Resolution
|
||||
name = 3840x4320 vert x2 SSAA
|
||||
$width = 3840
|
||||
$height = 4320 # x2
|
||||
$gameWidth = 1920
|
||||
$gameHeight = 1080
|
||||
$lightSource = 2.0
|
||||
$lightSourceRecommened = 2.0
|
||||
$scaleShader = 1.0
|
||||
$aspectRatio = (16.0/9.0)
|
||||
|
||||
# Light Resolution
|
||||
|
||||
[Preset]
|
||||
name = 100% (Default)
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened != 1.0
|
||||
|
||||
[Preset]
|
||||
name = 100% (Default) (Recommended)
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened == 1.0
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
name = 135%
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened != 1.35
|
||||
$lightSource = 1.35
|
||||
|
||||
[Preset]
|
||||
name = 135% (Recommended)
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened == 1.35
|
||||
$lightSource = 1.35
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
name = 150%
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened != 1.50
|
||||
$lightSource = 1.50
|
||||
|
||||
[Preset]
|
||||
name = 150% (Recommended)
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened == 1.50
|
||||
$lightSource = 1.50
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
name = 200%
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened != 2.0
|
||||
$lightSource = 2.0
|
||||
|
||||
[Preset]
|
||||
name = 200% (Recommended)
|
||||
category = Light Resolution
|
||||
condition = $lightSourceRecommened == 2.0
|
||||
$lightSource = 2.0
|
||||
default = 1
|
||||
|
||||
# Shadows Resolution
|
||||
|
||||
[Preset]
|
||||
category = Shadow Quality
|
||||
name = Low (50%)
|
||||
$shadowRes = 0.5
|
||||
|
||||
[Preset]
|
||||
category = Shadow Quality
|
||||
name = Medium (100%, Default)
|
||||
default = 1
|
||||
|
||||
[Preset]
|
||||
category = Shadow Quality
|
||||
name = High (200%)
|
||||
$shadowRes = 2
|
||||
|
||||
[Preset]
|
||||
category = Shadow Quality
|
||||
name = Ultra (300%)
|
||||
$shadowRes = 3
|
||||
|
||||
[Preset]
|
||||
category = Shadow Quality
|
||||
name = Extreme (400%, Unstable)
|
||||
$shadowRes = 4
|
||||
|
||||
# Anisotropic Filtering
|
||||
|
||||
[Preset]
|
||||
category = Anisotropic Filtering
|
||||
name = 1x (Default)
|
||||
Default = 1
|
||||
|
||||
[Preset]
|
||||
category = Anisotropic Filtering
|
||||
name = 2x
|
||||
$anisoLevel = 2
|
||||
|
||||
[Preset]
|
||||
category = Anisotropic Filtering
|
||||
name = 4x
|
||||
$anisoLevel = 4
|
||||
|
||||
[Preset]
|
||||
category = Anisotropic Filtering
|
||||
name = 8x
|
||||
$anisoLevel = 8
|
||||
|
||||
[Preset]
|
||||
category = Anisotropic Filtering
|
||||
name = 16x (Recommended)
|
||||
$anisoLevel = 16
|
||||
|
||||
[Preset]
|
||||
category = Anisotropic Filtering
|
||||
name = 32x (Overkill)
|
||||
$anisoLevel = 32
|
||||
|
||||
|
||||
## Colour depth increase - Didn't see any visual improvement.
|
||||
#
|
||||
#[TextureRedefine]
|
||||
|
@ -293,6 +356,17 @@ $aspectRatio = (16.0/9.0)
|
|||
#formats = 0x816
|
||||
#overwriteFormat = 0x820
|
||||
|
||||
[TextureRedefine]
|
||||
formats = 0x31,0x32,0x33,0x34,0x35,0x431,0x432,0x433,0x434,0x435
|
||||
overwriteAnisotropy = $anisoLevel
|
||||
|
||||
[TextureRedefine] # Shadows x3 Lods
|
||||
width = 1024
|
||||
height = 1024
|
||||
formats = 0x005
|
||||
overwriteWidth = $shadowRes * 1024
|
||||
overwriteHeight = $shadowRes * 1024
|
||||
|
||||
[TextureRedefine]
|
||||
width = 1920
|
||||
height = 1088
|
|
@ -1,6 +1,7 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143500,0005000010143600,0005000010143400
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Remove HUD
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Mods/Remove HUD (breaks menus)"
|
||||
description = Removes the HUD elements for taking screenshots.|This will break other menus making it very hard to navigate those.
|
||||
version = 7
|
||||
#Credits: Crementif
|
||||
version = 6
|
|
@ -0,0 +1,11 @@
|
|||
[WindWakerHD_SlowDownFix_EU] ;OliveOperationMgrThread found by BenjaminLSR
|
||||
moduleMatches = 0xB7E748DE ; (EU)
|
||||
0x025AC21C = nop; SUSPEND OliveOperationMgrThread
|
||||
|
||||
[WindWakerHD_SlowDownFix_NA] ;Ported to US by M&&M
|
||||
moduleMatches = 0x475BD29F ; (NA)
|
||||
0x025AC25C = nop; SUSPEND OliveOperationMgrThread
|
||||
|
||||
[WindWakerHD_SlowDownFix_JP] ;Ported to JP by Crementif
|
||||
moduleMatches = 0x74BD3F6A ; (JP)
|
||||
0x025AC24C = nop; SUSPEND OliveOperationMgrThread
|
|
@ -1,6 +1,8 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = FPS Slowdown
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Workarounds/FPS Slowdown"
|
||||
description = Fixes slowdown that could occur on weaker hardware.
|
||||
version = 4
|
||||
#Credits: BenjaminLSR, M&&M, Crementif
|
||||
version = 6
|
||||
default = 1
|
|
@ -1,28 +1,20 @@
|
|||
[WWHDEU] ;made by BenjaminLSR
|
||||
moduleMatches = 0xB7E748DE
|
||||
|
||||
[WindWakerHD_IntelFix_EU] ;made by BenjaminLSR
|
||||
moduleMatches = 0xB7E748DE ; (EU)
|
||||
_emptyString = 0x10166948
|
||||
|
||||
;is_useSsaoDirectDraw
|
||||
0x0278EED8 = lis r0, _emptyString@ha
|
||||
0x0278EEE4 = addic r0, r0, _emptyString@l
|
||||
|
||||
|
||||
[WWHDUS] ;ported to US by M&M
|
||||
moduleMatches = 0x475BD29F
|
||||
|
||||
[WindWakerHD_IntelFix_NA] ;ported to US by M&M
|
||||
moduleMatches = 0x475BD29F ; (NA)
|
||||
_emptyString = 0x1016693C
|
||||
|
||||
;is_useSsaoDirectDraw
|
||||
0x0278E618 = lis r0, _emptyString@ha
|
||||
0x0278E624 = addic r0, r0, _emptyString@l
|
||||
|
||||
|
||||
[WWHDJP] ;ported to JP by Crementif
|
||||
moduleMatches = 0x74BD3F6A
|
||||
|
||||
[WindWakerHD_IntelFix_JP] ;ported to JP by Crementif
|
||||
moduleMatches = 0x74BD3F6A ; (JP)
|
||||
_emptyString = 0x1016695C
|
||||
|
||||
;is_useSsaoDirectDraw
|
||||
0x0278F0F8 = lis r0, _emptyString@ha
|
||||
0x0278F104 = addic r0, r0, _emptyString@l
|
||||
0x0278F104 = addic r0, r0, _emptyString@l
|
|
@ -1,6 +1,7 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name= Graphical fixes for Intel Integrated GPUs
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Workarounds/Intel Integrated GPU Fixes"
|
||||
description = Fixes graphical bugs while using an Intel iGPU. Don't use this if you're using a Nvidia or AMD GPU.
|
||||
version = 4
|
||||
#Credits: BenjaminLSR, M&&M, Crementif
|
||||
version = 6
|
|
@ -1,53 +1,40 @@
|
|||
[WW_USA]
|
||||
moduleMatches = 0x475BD29F
|
||||
|
||||
_sub_exit = 0x022D0138
|
||||
|
||||
#First picture
|
||||
0x022D00E8 = nop ; cmp r0, 1
|
||||
0x022D00EC = b _sub_exit ; beq 0x022D0138
|
||||
|
||||
#Second picture
|
||||
0x022D0114 = nop ; cmp r0, 2
|
||||
0x022D0118 = nop ; bne 0x022D00F0
|
||||
|
||||
#Third picture
|
||||
0x022D0130 = nop ; cmp r0, 3
|
||||
0x022D0134 = nop ; bne 0x022D00F0
|
||||
|
||||
|
||||
[WW_EUR]
|
||||
moduleMatches = 0xB7E748DE
|
||||
;For loadline versions, try looking up addresses in PPC debugger. Correct opcodes should be near these addresses. Changing it should be easy.
|
||||
|
||||
[WindWakerHD_PictoBox_EU]
|
||||
moduleMatches = 0xB7E748DE ; (EU)
|
||||
_sub_exit = 0x022D013C
|
||||
|
||||
#First picture
|
||||
;First picture
|
||||
0x022D00EC = nop ; cmp r0, 1
|
||||
0x022D00F0 = b _sub_exit ; beq 0x022D013C
|
||||
|
||||
#Second picture
|
||||
;Second picture
|
||||
0x022D0118 = nop ; cmp r0, 2
|
||||
0x022D011C = nop ; bne 0x022D00F4
|
||||
|
||||
#Third picture
|
||||
;Third picture
|
||||
0x022D0134 = nop ; cmp r0, 3
|
||||
0x022D0138 = nop ; bne 0x022D00F4
|
||||
|
||||
[WindWakerHD_PictoBox_NA]
|
||||
moduleMatches = 0x475BD29F ; (NA)
|
||||
_sub_exit = 0x022D0138
|
||||
;First picture
|
||||
0x022D00E8 = nop ; cmp r0, 1
|
||||
0x022D00EC = b _sub_exit ; beq 0x022D0138
|
||||
;Second picture
|
||||
0x022D0114 = nop ; cmp r0, 2
|
||||
0x022D0118 = nop ; bne 0x022D00F0
|
||||
;Third picture
|
||||
0x022D0130 = nop ; cmp r0, 3
|
||||
0x022D0134 = nop ; bne 0x022D00F0
|
||||
|
||||
[WW_JPN]
|
||||
moduleMatches = 0x74BD3F6A
|
||||
|
||||
[WindWakerHD_PictoBox_JP]
|
||||
moduleMatches = 0x74BD3F6A ; (JP)
|
||||
_sub_exit = 0x022D0140
|
||||
|
||||
#First picture
|
||||
;First picture
|
||||
0x022D00F0 = nop ; cmp r0, 1
|
||||
0x022D00F4 = b _sub_exit ; beq 0x022D0140
|
||||
|
||||
|
||||
#Second picture
|
||||
;Second picture
|
||||
0x022D011C = nop ; cmp r0, 2
|
||||
0x022D0120 = nop ; bne 0x022D00F8
|
||||
|
||||
#Third picture
|
||||
;Third picture
|
||||
0x022D0138 = nop ; cmp r0, 3
|
||||
0x022D013C = nop ; bne 0x022D00F8
|
||||
0x022D013C = nop ; bne 0x022D00F8
|
|
@ -1,6 +1,7 @@
|
|||
[Definition]
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600
|
||||
titleIds = 0005000010143400,0005000010143500,0005000010143600,000500010185400
|
||||
name = Picto-Box Fix
|
||||
path = "The Legend of Zelda: The Wind Waker HD/Workarounds/Picto-Box Fix"
|
||||
description = This is more of a cheat than workaround. Forces Lenzo to accept any pictures in the quest 'Lenzo's Research Assistant'. Made by Vladimir-1799.
|
||||
version = 4
|
||||
description = This is more of a cheat than workaround. Forces Lenzo to accept any pictures in the quest 'Lenzo's Research Assistant'.|Made by Vladimir-1799.
|
||||
#Credits: Vladimir-1799
|
||||
version = 6
|
Loading…
Add table
Reference in a new issue