[XCX & DKC:TF] Many new mods and options (#647)

Thanks @intra0 for all of these changes!

Besides adding customizability (and support for more versions) to some existing XCX packs, this adds the following big features:
* Anisotropic filtering for WWHD and TPHD
* Donkey Kong now has coin, banana and live cheats
* Xenoblade Chronicles X now has options to change many attributes of your party like name, height, chest size, weapons, field skill, arts and levels

You might have to reconfigure some graphic pack settings after updating since the name of some options changed.
This commit is contained in:
intra0 2024-12-11 20:25:25 -06:00 committed by GitHub
parent 0f812ffb24
commit a7df307d81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 15520 additions and 779 deletions

View File

@ -0,0 +1,36 @@
[Definition]
titleIds = 000500001019C800,000500001019E600,000500001019E500
name = Anisotropic Filtering
path = "The Legend of Zelda: Twilight Princess 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

View File

@ -0,0 +1,36 @@
[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

View File

@ -0,0 +1,25 @@
[DKCTF_MultBanana]
moduleMatches = 0xA37C99E1, 0x4FF15DD2 ; (EU/NA/JP)v16, (EU/NA/JP)v2
.origin = codecave
_addBananaMultCheat:
cmpwi r29, 15
bne _addBananaMultCheatExit
;add extra banana amount
lwz r4, 0x4 (r27)
addi r4, r4, $addamountbna-1
stw r4, 0x4 (r27)
_addBananaMultCheatExit:
;restore line we overwrote
or r4, r29, r29
blr
[DKCTF_MultBanana_v16]
moduleMatches = 0xA37C99E1 ; (EU/NA/JP)v16
0x020A5974 = bla _addBananaMultCheat
[DKCTF_MultBanana_v2]
moduleMatches = 0x4FF15DD2 ; (EU/NA/JP)v2
0x020A5908 = bla _addBananaMultCheat

View File

@ -0,0 +1,30 @@
[Definition]
titleIds = 0005000010137F00,0005000010138300,0005000010144800
name = Banana Multiplier
path = "Donkey Kong Country: Tropical Freeze/Cheats/Banana Multiplier"
description = Multiplies the amount of bananas you collect.
#Credits: Intra
version = 7
[Default]
$addamountbna = 1
[Preset]
name = x2
$addamountbna = 2
[Preset]
name = x3
$addamountbna = 3
[Preset]
name = x4
$addamountbna = 4
[Preset]
name = x5
$addamountbna = 5
[Preset]
name = x100
$addamountbna = 100

View File

@ -0,0 +1,22 @@
[DKCTF_MultCoins]
moduleMatches = 0xA37C99E1, 0x4FF15DD2 ; (EU/NA/JP)v16, (EU/NA/JP)v2
.origin = codecave
_addCoinsMultCheat:
or r5, r30, r30
cmpwi r29, 1
bne _addCoinsMultCheatExit
;add extra coin amount
addi r5, r30, $addamountcn-1
_addCoinsMultCheatExit:
blr
[DKCTF_MultCoins_v16]
moduleMatches = 0xA37C99E1 ; (EU/NA/JP)v16
0x020A5970 = bla _addCoinsMultCheat
[DKCTF_MultCoins_v2]
moduleMatches = 0x4FF15DD2 ; (EU/NA/JP)v2
0x020A5904 = bla _addCoinsMultCheat

View File

@ -0,0 +1,34 @@
[Definition]
titleIds = 0005000010137F00,0005000010138300,0005000010144800
name = Banana Coin Multiplier
path = "Donkey Kong Country: Tropical Freeze/Cheats/Coin Multiplier"
description = Multiplies the amount of Banana Coins you collect.
#Credits: Intra
version = 7
[Default]
$addamountcn = 1
[Preset]
name = x2
$addamountcn = 2
[Preset]
name = x3
$addamountcn = 3
[Preset]
name = x4
$addamountcn = 4
[Preset]
name = x5
$addamountcn = 5
[Preset]
name = x10
$addamountcn = 10
[Preset]
name = x999
$addamountcn = 999

View File

@ -0,0 +1,23 @@
[DKCTF_MultLives]
moduleMatches = 0xA37C99E1, 0x4FF15DD2 ; (EU/NA/JP)v16, (EU/NA/JP)v2
.origin = codecave
_addLivesMultCheat:
cmpwi r29, 8
bne _addLivesMultCheatExit
;add extra lives amount
addi r5, r30, $addamountliv-1
_addLivesMultCheatExit:
;restore line we overwrote
or r3, r27, r27
blr
[DKCTF_MultLives_NAv16]
moduleMatches = 0xA37C99E1 ; (EU/NA/JP)v16
0x020A5978 = bla _addLivesMultCheat
[DKCTF_MultLives_NAv2]
moduleMatches = 0x4FF15DD2 ; (EU/NA/JP)v2
0x020A590C = bla _addLivesMultCheat

View File

@ -0,0 +1,30 @@
[Definition]
titleIds = 0005000010137F00,0005000010138300,0005000010144800
name = Lives Multiplier
path = "Donkey Kong Country: Tropical Freeze/Cheats/Lives Multiplier"
description = Multiplies the amount of red 1-UP balloons you collect.
#Credits: Intra
version = 7
[Default]
$addamountliv = 1
[Preset]
name = x2
$addamountliv = 2
[Preset]
name = x3
$addamountliv = 3
[Preset]
name = x4
$addamountliv = 4
[Preset]
name = x5
$addamountliv = 5
[Preset]
name = x99
$addamountliv = 99

View File

@ -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)
@ -26,267 +26,32 @@ uniform vec2 uf_fragCoordScale;
#endif
// This shaders was auto-converted (and manually adjusted) from OpenGL to Cemu so expect weird code and possible errors.
// shader 59df1c7e1806366c - Anti-aliasing Shader - Dumped 1.14
// shader 59df1c7e1806366c - Anti-aliasing Shader - Dumped 1.21
#define preset 1
#define moreaa 0.0
#define lessaa 0.0
#define preset $Preset
#if (preset == 0) // Native AA Disabled
//#if (preset == 0) // AA Disabled
//return floatBitsToInt(0.0);
//#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4e12000 res 1280x720x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf470a000 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1
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 min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
passPixelColor0 = texture(textureUnitPS1, passParameterSem1.xy); // textureunitps1 is the one with all the colors vs unitps0 which is red viewport
}
#endif
#if (preset == 1) // Native AA Enabled
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4e12000 res 1280x720x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf470a000 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
ivec2 resDim = textureSize(textureUnitPS0,0); // Retrieve texture dimensions
float resRatio = ( (float(resDim.x)/1280.0) + moreaa ) - lessaa; // retrieve resolution ratio, and calculate the total
float resX = (float(resDim.x)/1280.0);
float resY = (float(resDim.y)/720.0);
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 min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(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;
R0i = floatBitsToInt(passParameterSem0 / resRatio); // Important line
R1i = floatBitsToInt(passParameterSem1);
if( activeMaskStackC[1] == true ) {
R2i.xyzw = floatBitsToInt(textureGather(textureUnitPS0, intBitsToFloat(R0i.zw)).xyzw * resRatio); // Important line
R0i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.xy)).x / resRatio); // Important line
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
backupReg0i = R2i.x;
R2i.x = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(0x3b2aaaab));
PV0i.x = R2i.x;
R127i.y = floatBitsToInt(max(intBitsToFloat(R2i.y), intBitsToFloat(R2i.w)));
R127i.z = floatBitsToInt(min(intBitsToFloat(R2i.y), intBitsToFloat(R2i.w)));
// 1
PV1i.y = floatBitsToInt(min(intBitsToFloat(R2i.z), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(max(intBitsToFloat(R2i.z), intBitsToFloat(PV0i.x)));
// 2
R4i.y = floatBitsToInt(max(intBitsToFloat(R127i.y), intBitsToFloat(PV1i.w)));
PV0i.y = R4i.y;
R4i.z = floatBitsToInt(min(intBitsToFloat(R127i.z), intBitsToFloat(PV1i.y)));
PV0i.z = R4i.z;
// 3
backupReg0i = R0i.x;
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(uf_remappedPS[0].x) / resX); // Important line
PV1i.y = floatBitsToInt(max(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.z)));
// 4
R0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.y));
R0i.w = floatBitsToInt(max(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[0].y) / resY)); // Important line
// 5
backupReg0i = R0i.x;
predResult = (intBitsToFloat(R0i.w) > intBitsToFloat(backupReg0i));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
if( (0 == 0)) discard;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w)),vec4(-(1.0),1.0,1.0,-(1.0))));
PV0i.x = R127i.x;
PV0i.y = R127i.x;
PV0i.z = R127i.x;
PV0i.w = R127i.x;
R127i.z = 0;
PS0i = R127i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w)),vec4(-(1.0),1.0,-(1.0),1.0)));
PV1i.x = tempi.x; // Important
PV1i.y = tempi.x; // Important
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = tempi.x;
R4i.w = 0x3f800000;
PS1i = R4i.w;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x),intBitsToFloat(R127i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
// 3
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 4
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(PS1i));
PV0i.x = R127i.x;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.y) * intBitsToFloat(PS1i));
PV0i.w = R127i.w;
// 5
PV1i.x = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(intBitsToFloat(PV0i.x))));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(uf_remappedPS[1].y));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(uf_remappedPS[1].x));
PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
// 6
R0i.x = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(PV1i.z)));
R0i.y = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(PV1i.y)));
PV0i.z = floatBitsToInt(min(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.w)));
R2i.w = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV1i.z));
R2i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV1i.y));
PS0i = R2i.y;
// 7
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(uf_remappedPS[0].z));
// 8
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
// 9
PV1i.z = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(PS0i));
PV1i.w = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(PS0i));
// 10
PV0i.x = floatBitsToInt(max(intBitsToFloat(PV1i.z), intBitsToFloat(0xc0000000)));
PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.w), intBitsToFloat(0xc0000000)));
// 11
PV1i.z = floatBitsToInt(min(intBitsToFloat(PV0i.x), 2.0));
PV1i.w = floatBitsToInt(min(intBitsToFloat(PV0i.y), 2.0));
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(uf_remappedPS[1].w));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(uf_remappedPS[1].z));
// 13
backupReg0i = R1i.x;
backupReg1i = R1i.y;
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = floatBitsToInt(intBitsToFloat(backupReg0i) + -(intBitsToFloat(PV0i.w)));
R1i.y = floatBitsToInt(intBitsToFloat(backupReg1i) + -(intBitsToFloat(PV0i.x)));
R0i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.w));
R0i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PV0i.x));
}
if( activeMaskStackC[1] == true ) {
R1i.xyz = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R1i.xy)).xyz);
R3i.xyz = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.zw)).xyz);
R0i.xyz = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.xy)).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.wy)).xyz);
}
if( activeMaskStackC[1] == true ) {
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R1i.z) + intBitsToFloat(R3i.z));
PV0i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(R3i.y));
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(R3i.x));
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R2i.x));
R127i.y = floatBitsToInt(intBitsToFloat(R0i.z) + intBitsToFloat(R2i.z));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.y) * 0.25);
PV1i.w = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R2i.y));
PS1i = floatBitsToInt(intBitsToFloat(PV0i.z) * 0.25);
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((intBitsToFloat(PV1i.x) * 0.25 + intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(intBitsToFloat(backupReg0i) * 0.25);
R127i.z = PV1i.x;
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
R127i.w = floatBitsToInt((intBitsToFloat(PV1i.w) * 0.25 + intBitsToFloat(PV1i.z)));
PV0i.w = R127i.w;
R126i.y = PV1i.w;
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) / 2.0);
PS0i = R126i.y;
// 3
PV1i.x = ((intBitsToFloat(PV0i.w) > intBitsToFloat(R4i.y))?int(0xFFFFFFFF):int(0x0));
PV1i.y = ((intBitsToFloat(R4i.z) > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0));
R126i.z = floatBitsToInt((intBitsToFloat(R127i.y) * 0.25 + intBitsToFloat(PV0i.y)));
R126i.w = R127i.y;
R126i.w = floatBitsToInt(intBitsToFloat(R126i.w) / 2.0);
// 4
R123i.w = ((PV1i.y == 0)?(PV1i.x):(int(-1)));
PV0i.w = R123i.w;
// 5
R4i.x = ((PV0i.w == 0)?(R127i.x):(R127i.z));
R4i.y = ((PV0i.w == 0)?(R127i.w):(R126i.y));
R4i.z = ((PV0i.w == 0)?(R126i.z):(R126i.w));
}
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
}
#endif
#if (preset == 2) // Nvidia FXAA Enabled
/*-----------------------------settings-------------------------------------*/
#define Subpix 0.75 //[0.000 to 1.000] Choose the amount of sub-pixel aliasing removal.
#define EdgeThreshold 0.166 //[0.000 to 1.000] Edge detection threshold. The minimum amount of local contrast required to apply algorithm.
#define EdgeThresholdMin 0.0312 //[0.000 to 1.000] Darkness threshold. Trims the algorithm from processing darks.
#define Subpix $subPix //[0.000 to 1.000] Choose the amount of sub-pixel aliasing removal.
#define EdgeThreshold $edgeThreshold //[0.000 to 1.000] Edge detection threshold. The minimum amount of local contrast required to apply algorithm.
#define EdgeThresholdMin $edgeThresholdMin //[0.000 to 1.000] Darkness threshold. Trims the algorithm from processing darks.
/*--------------------------------------------------------------------------*/
#define FXAA_PC 1
#define FXAA_GLSL_130 1
#define FXAA_QUALITY_PRESET 14
#define FXAA_QUALITY_PRESET $FXAAQUALITYPRESET
#define FXAA_GREEN_AS_LUMA 1
#define FXAA_DISCARD 0
#define FXAA_GREEN_AS_LUMA $FXAAGREENASLUMA
#define FXAA_DISCARD $FXAADISCARD
#define FXAA_GATHER4_ALPHA 0 // Needs #extension GL_ARB_gpu_shader5 : enable
/*--------------------------------------------------------------------------*/

View File

@ -2,58 +2,246 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Anti-Aliasing Pack
path = "Xenoblade Chronicles X/Enhancements/Anti-Aliasing"
description = Enables or Disables Native Anti-Aliasing. Also includes an alternative FXAA implementation. Check the "Anti-Aliasing/rules.txt" file in your Botw AA graphicPack folder for info about the individual settings.
version = 4
description = Allows you to modify the game's existing anti-aliasing solution or replace it with the universally supported Nvidia FXAA solution. This changes how the games gets rid of jagged edges to make sharp edges look better.||Made by SkalFate, modified by Intra.
version = 6
[Default]
$Preset:int = 0
$subPix:float = 0.75
$edgeThreshold:float = 0.166
$edgeThresholdMin:float = 0.0833
$FXAAQUALITYPRESET:int = 12
$FXAAGREENASLUMA:int = 0
$FXAADISCARD:int = 0
[Preset]
name = Nvidias FXAA
name = Nvidia FXAA
$Preset:int = 2
#
$LessAA = 0.0 # Ignore
$MoreAA = 0.0 # Ignore
#
$subPix = 1.0
$edgeThreshold = 0.125
$edgeThresholdMin = 0.0156
[Preset]
name = Enable Native AA
$Preset:int = 1
#
$LessAA = 0.0
$MoreAA = 0.0
#
$subPix = 0.75 # Ignore
$edgeThreshold = 0.166 # Ignore
$edgeThresholdMin = 0.0312 # Ignore
[Preset]
name = Enable Native AA (MoreAA)
$Preset:int = 1
#
$LessAA = 0.0
$MoreAA = 1.0
#
$subPix = 0.75 # Ignore
$edgeThreshold = 0.166 # Ignore
$edgeThresholdMin = 0.0312 # Ignore
[Preset]
name = Disable Native AA
$Preset:int = 0
#
$LessAA = 0.0 # Ignore
$MoreAA = 0.0 # Ignore
#
$subPix = 0.75 # Ignore
$edgeThreshold = 0.166 # Ignore
$edgeThresholdMin = 0.0312 # Ignore
# Adjust native AA implmentation - Only applies to Enabled preset
# --- keep one of the varaibles at 0 while adjusting the other one
# LessAA : Values - [0.0 - 1.0] - Recommended to Raise in increments of 0.1
# MoreAA : Values - [1.0 - 0.0] - Recommended to Lower in decrements of 0.1
[Preset]
category = "FXAA sub-pixel aliasing removal:"
condition = $Preset == 2
name = "1.00 (upper limit, softer) (recommended)"
default = 1
$subPix:float = 1.00
[Preset]
category = "FXAA sub-pixel aliasing removal:"
condition = $Preset == 2
name = "0.75 (default)"
$subPix:float = 0.75
[Preset]
category = "FXAA sub-pixel aliasing removal:"
condition = $Preset == 2
name = "0.50 (lower limit, sharper, less sub-pixel aliasing removal)"
$subPix:float = 0.50
[Preset]
category = "FXAA sub-pixel aliasing removal:"
condition = $Preset == 2
name = "0.25 (almost off)"
$subPix:float = 0.25
[Preset]
category = "FXAA sub-pixel aliasing removal:"
condition = $Preset == 2
name = "0.00 (completely off)"
$subPix:float = 0.00
[Preset]
category = "FXAA Edge detection threshold:"
condition = $Preset == 2
name = "0.333 (too little, faster)"
$edgeThreshold:float = 0.333
[Preset]
category = "FXAA Edge detection threshold:"
condition = $Preset == 2
name = "0.250 (low quality)"
$edgeThreshold:float = 0.250
[Preset]
category = "FXAA Edge detection threshold:"
condition = $Preset == 2
name = "0.166 (default)"
$edgeThreshold:float = 0.166
[Preset]
category = "FXAA Edge detection threshold:"
condition = $Preset == 2
name = "0.125 (high quality) (recommended)"
default = 1
$edgeThreshold:float = 0.125
[Preset]
category = "FXAA Edge detection threshold:"
condition = $Preset == 2
name = "0.063 (overkill, slower)"
$edgeThreshold:float = 0.063
[Preset]
category = "FXAA Darkness threshold:"
condition = $Preset == 2
name = "0.0833 (upper limit, the start of visible unfiltered edges) (default)"
$edgeThresholdMin:float = 0.0833
[Preset]
category = "FXAA Darkness threshold:"
condition = $Preset == 2
name = "0.0625 (high quality, faster)"
$edgeThresholdMin:float = 0.0625
[Preset]
category = "FXAA Darkness threshold:"
condition = $Preset == 2
name = "0.0312 (visible limit, slower)"
$edgeThresholdMin:float = 0.0312
[Preset]
category = "FXAA Darkness threshold:"
condition = $Preset == 2
name = "0.0156 (overkill) (recommended)"
default = 1
$edgeThresholdMin:float = 0.0156
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "10 (default medium dither) (10=fastest)"
$FXAAQUALITYPRESET:int = 10
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "11 (default medium dither)"
$FXAAQUALITYPRESET:int = 11
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "12 (default medium dither) (default)"
$FXAAQUALITYPRESET:int = 12
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "13 (default medium dither)"
$FXAAQUALITYPRESET:int = 13
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "14 (default medium dither) (recommended)"
default = 1
$FXAAQUALITYPRESET:int = 14
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "15 (default medium dither) (15=highest quality)"
$FXAAQUALITYPRESET:int = 15
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "20 (less dither, more expensive) (20=fastest)"
$FXAAQUALITYPRESET:int = 20
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "21 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 21
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "22 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 22
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "23 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 23
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "24 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 24
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "25 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 25
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "26 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 26
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "27 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 27
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "28 (less dither, more expensive)"
$FXAAQUALITYPRESET:int = 28
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "29 (less dither, more expensive) (29=highest quality)"
$FXAAQUALITYPRESET:int = 29
[Preset]
category = "FXAA Quality Preset:"
condition = $Preset == 2
name = "39 (no dither, very expensive)"
$FXAAQUALITYPRESET:int = 39
[Preset]
category = "FXAA Green As Luma:"
condition = $Preset == 2
name = "On (will turn off AA on anything which lacks some amount of green)"
default = 1
$FXAAGREENASLUMA:int = 1
$FXAADISCARD:int = 0
[Preset]
category = "FXAA Green As Luma:"
condition = $Preset == 2
name = "Off"
$FXAAGREENASLUMA:int = 0
[Preset]
category = "FXAA discard on pixels which don't need AA:"
condition = ($Preset == 2)*($FXAAGREENASLUMA == 0) == 1
name = "On (not compatable with Green As Luma)"
$FXAADISCARD:int = 1
[Preset]
category = "FXAA discard on pixels which don't need AA:"
condition = ($Preset == 2)*($FXAAGREENASLUMA == 0) == 1
name = "Off"
default = 1
$FXAADISCARD:int = 0
# Subpix:
# Choose the amount of sub-pixel aliasing removal.
@ -69,7 +257,7 @@ $edgeThresholdMin = 0.0312 # Ignore
# 0.333 - too little (faster)
# 0.250 - low quality
# 0.166 - default
# 0.125 - high quality
# 0.125 - high quality
# 0.063 - overkill (slower)
# EdgeThresholdMin:
@ -78,4 +266,15 @@ $edgeThresholdMin = 0.0312 # Ignore
# 0.0625 - high quality (faster)
# 0.0312 - visible limit (slower)
# Credits: SkalFate
# FXAA Quality Preset
# 10 to 15 - default medium dither (10=fastest, 15=highest quality)
# 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
# 39 - no dither, very expensive
# Green As Luma
# This will turn off AA on anything which lacks some amount of green.
# Pure red and blue or combination of only R and B, will get no AA.
# 1 = On.
# 0 = Off.
# Credits: Made by SkalFate, updated by Intra

View File

@ -2,7 +2,7 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Contrasty
path = "Xenoblade Chronicles X/Enhancements/Contrasty"
description = This pack tweaks the colours 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.
description = This pack tweaks the colours 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.|Not compatible with the Anti-Aliasing mod.|Made by getdls.
version = 5
[Default]

View File

@ -0,0 +1,118 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Anisotropic Filtering
path = "Xenoblade Chronicles X/Enhancements/Anisotropic Filtering"
description = Enables anisotropic filtering for ground, wall and vegetation textures to make them appear clearer when viewed from an angle.|Has a minimal performance impact.
version = 7
[Default]
#Defined seprately so that they can be change individually if desired
$anisomount = 1
$anisorock = 1
$anisosand = 1
$anisotree = 1
$anisolargeplant = 1
$anisomidplant = 1
$anisosmallplant = 1
[Preset]
category = "Anisotrophic Filtering Strength"
name = x1 (Default)
[Preset]
category = "Anisotrophic Filtering Strength"
name = x2
$anisomount = 2
$anisorock = 2
$anisosand = 2
$anisotree = 2
$anisolargeplant = 2
$anisomidplant = 2
$anisosmallplant = 2
[Preset]
category = "Anisotrophic Filtering Strength"
name = x4
$anisomount = 4
$anisorock = 4
$anisosand = 4
$anisotree = 4
$anisolargeplant = 4
$anisomidplant = 4
$anisosmallplant = 4
[Preset]
category = "Anisotrophic Filtering Strength"
name = x8
$anisomount = 8
$anisorock = 8
$anisosand = 8
$anisotree = 8
$anisolargeplant = 8
$anisomidplant = 8
$anisosmallplant = 8
[Preset]
category = "Anisotrophic Filtering Strength"
name = x16 (Recommended)
$anisomount = 16
$anisorock = 16
$anisosand = 16
$anisotree = 16
$anisolargeplant = 16
$anisomidplant = 16
$anisosmallplant = 16
[Preset]
category = "Anisotrophic Filtering Strength"
name = x32 (Overkill)
$anisomount = 32
$anisorock = 32
$anisosand = 32
$anisotree = 32
$anisolargeplant = 32
$anisomidplant = 32
$anisosmallplant = 32
[TextureRedefine] # Mountain Textures
width = 2048
height = 1024
formats = 0x031
overwriteAnisotropy = $anisomount
[TextureRedefine] # Ground/Rock Textures
width = 1024
height = 1024
formats = 0x031
overwriteAnisotropy = $anisorock
[TextureRedefine] # Ground/Sand Textures
width = 512
height = 512
formats = 0x031
overwriteAnisotropy = $anisosand
[TextureRedefine] # Tree Textures
width = 128
height = 512
formats = 0x031
overwriteAnisotropy = $anisotree
[TextureRedefine] # Ground/Sand/Plant Textures
width = 256
height = 256
formats = 0x031
overwriteAnisotropy = $anisolargeplant
[TextureRedefine] # Grass/Plant Textures
width = 256
height = 128
formats = 0x031
overwriteAnisotropy = $anisomidplant
[TextureRedefine] # Grass/Plant Textures
width = 128
height = 128
formats = 0x033
overwriteAnisotropy = $anisosmallplant

View File

@ -0,0 +1,51 @@
[XCX_Aspect]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9, 0x8780C48F ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J, 1.0.1J
.origin = codecave
widthScaleRatio:
.float ($width/$gameWidth)
heightScaleRatio:
.float ($height/$gameHeight)
_aspectChangeCave:
; Scale the width of the viewport that it wants to calculate the ratio for
lis r7, widthScaleRatio@ha
lfs f8, widthScaleRatio@l(r7)
fmuls f13, f13, f8
; Scale the height of the viewport that it wants to calculate the ratio for
lis r7, heightScaleRatio@ha
lfs f8, heightScaleRatio@l(r7)
fmuls f9, f9, f8
fdivs f13, f13, f9 ; Original instruction that got replaced by the code cave jump, which divides the width and height to get the aspect ratio
blr ; Return to the original code
[XCX_Aspect_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x03160AE8 = bla _aspectChangeCave ; Modify this instruction to go to the code cave which scales the height and width to the upscale ratios
0x1003E754 = .float ($width/$height) ; Modify constant that has a ratio in the code
[XCX_Aspect_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x03160A68 = bla _aspectChangeCave
0x1003E754 = .float ($width/$height)
[XCX_Aspect_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x0315BE80 = bla _aspectChangeCave
0x1003E714 = .float ($width/$height)
[XCX_Aspect_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x031608E8 = bla _aspectChangeCave
0x1003E754 = .float ($width/$height)
[XCX_Aspect_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x03156880 = bla _aspectChangeCave
0x1003E6C4 = .float ($width/$height)
[XCX_Aspect_V101J]
moduleMatches = 0x8780C48F ; 1.0.1J
0x0315BBA8 = bla _aspectChangeCave
0x1003E714 = .float ($width/$height)

View File

@ -1,161 +0,0 @@
[XCXAspectV100E_V101E]
moduleMatches = 0x218F6E07, 0xF882D5CF
# Code cave
codeCaveSize = 0x0000028
_widthScaleRatio = 0x0000000
0x0000000 = .float ($width/$gameWidth)
_heightScaleRatio = 0x0000004
0x0000004 = .float ($height/$gameHeight)
_aspectChangeCave = 0x0000008
; Scale the width of the viewport that it wants to calculate the ratio for
0x0000008 = lis r7, _widthScaleRatio@ha
0x000000C = lfs f8, _widthScaleRatio@l(r7)
0x0000010 = fmuls f13, f13, f8
; Scale the height of the viewport that it wants to calculate the ratio for
0x0000014 = lis r7, _heightScaleRatio@ha
0x0000018 = lfs f8, _heightScaleRatio@l(r7)
0x000001C = fmuls f9, f9, f8
0x0000020 = fdivs f13, f13, f9 ; Original instruction that got replaced by the code cave jump, which divides the width and height to get the aspect ratio
0x0000024 = blr ; Return to the original code
# Code changes
0x03160AE8 = bla _aspectChangeCave ; Modify this instruction to go to the code cave which scales the height and width to the upscale ratios
0x1003E754 = .float ($width/$height) ; Modify constant that has a ratio in the code
[XCXAspectV102U]
moduleMatches = 0x30B6E091
# Code cave
codeCaveSize = 0x0000028
_widthScaleRatio = 0x0000000
0x0000000 = .float ($width/$gameWidth)
_heightScaleRatio = 0x0000004
0x0000004 = .float ($height/$gameHeight)
_aspectChangeCave = 0x0000008
0x0000008 = lis r7, _widthScaleRatio@ha
0x000000C = lfs f8, _widthScaleRatio@l(r7)
0x0000010 = fmuls f13, f13, f8
0x0000014 = lis r7, _heightScaleRatio@ha
0x0000018 = lfs f8, _heightScaleRatio@l(r7)
0x000001C = fmuls f9, f9, f8
0x0000020 = fdivs f13, f13, f9
0x0000024 = blr
# Code changes
0x03160A68 = bla _aspectChangeCave
0x1003E754 = .float ($width/$height)
[XCXAspectV100U_V101U]
moduleMatches = 2878856811, 0x676EB33E
# Code cave
codeCaveSize = 0x0000028
_widthScaleRatio = 0x0000000
0x0000000 = .float ($width/$gameWidth)
_heightScaleRatio = 0x0000004
0x0000004 = .float ($height/$gameHeight)
_aspectChangeCave = 0x0000008
0x0000008 = lis r7, _widthScaleRatio@ha
0x000000C = lfs f8, _widthScaleRatio@l(r7)
0x0000010 = fmuls f13, f13, f8
0x0000014 = lis r7, _heightScaleRatio@ha
0x0000018 = lfs f8, _heightScaleRatio@l(r7)
0x000001C = fmuls f9, f9, f8
0x0000020 = fdivs f13, f13, f9
0x0000024 = blr
# Code changes
0x031608E8 = bla _aspectChangeCave
0x1003E754 = .float ($width/$height)
[XCXAspectV100J]
moduleMatches = 0x785CA8A9
# Code cave
codeCaveSize = 0x0000028
_widthScaleRatio = 0x0000000
0x0000000 = .float ($width/$gameWidth)
_heightScaleRatio = 0x0000004
0x0000004 = .float ($height/$gameHeight)
_aspectChangeCave = 0x0000008
0x0000008 = lis r7, _widthScaleRatio@ha
0x000000C = lfs f8, _widthScaleRatio@l(r7)
0x0000010 = fmuls f13, f13, f8
0x0000014 = lis r7, _heightScaleRatio@ha
0x0000018 = lfs f8, _heightScaleRatio@l(r7)
0x000001C = fmuls f9, f9, f8
0x0000020 = fdivs f13, f13, f9
0x0000024 = blr
# Code changes
0x03156880 = bla _aspectChangeCave
0x1003E6C4 = .float ($width/$height)
[XCXAspectV101J]
moduleMatches = 0x8780C48F
# Code cave
codeCaveSize = 0x0000028
_widthScaleRatio = 0x0000000
0x0000000 = .float ($width/$gameWidth)
_heightScaleRatio = 0x0000004
0x0000004 = .float ($height/$gameHeight)
_aspectChangeCave = 0x0000008
0x0000008 = lis r7, _widthScaleRatio@ha
0x000000C = lfs f8, _widthScaleRatio@l(r7)
0x0000010 = fmuls f13, f13, f8
0x0000014 = lis r7, _heightScaleRatio@ha
0x0000018 = lfs f8, _heightScaleRatio@l(r7)
0x000001C = fmuls f9, f9, f8
0x0000020 = fdivs f13, f13, f9
0x0000024 = blr
# Code changes
0x0315BBA8 = bla _aspectChangeCave
0x1003E714 = .float ($width/$height)
[XCXAspectV102J]
moduleMatches = 0x7672271D
# Code cave
codeCaveSize = 0x0000028
_widthScaleRatio = 0x0000000
0x0000000 = .float ($width/$gameWidth)
_heightScaleRatio = 0x0000004
0x0000004 = .float ($height/$gameHeight)
_aspectChangeCave = 0x0000008
0x0000008 = lis r7, _widthScaleRatio@ha
0x000000C = lfs f8, _widthScaleRatio@l(r7)
0x0000010 = fmuls f13, f13, f8
0x0000014 = lis r7, _heightScaleRatio@ha
0x0000018 = lfs f8, _heightScaleRatio@l(r7)
0x000001C = fmuls f9, f9, f8
0x0000020 = fdivs f13, f13, f9
0x0000024 = blr
# Code changes
0x0315BE80 = bla _aspectChangeCave
0x1003E714 = .float $width/$height

View File

@ -2,8 +2,8 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Graphics
path = "Xenoblade Chronicles X/Graphics"
description = Changes the resolution of the game and the quality of the other elements.||Made by getdls and Lemon King.
version = 5
description = Changes the resolution of the game and the quality of the other elements.|Made by getdls and Lemon King.
version = 6
[Default]
$width = 1280
@ -527,4 +527,4 @@ overwriteHeight = ($height/$gameHeight) * (32*$internalScale)
####formats = 0x008,0x81e,0x01a
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($width/$gameWidth) * (1*$internalScale)
#overwriteHeight = ($height/$gameHeight) * (1*$internalScale)
#overwriteHeight = ($height/$gameHeight) * (1*$internalScale)

View File

@ -1,22 +1,38 @@
[XCX_DAMAGES_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x02E0C5B0 = li r3, -1-$mult
0x025D896C = mulli r4, r31, $mult
[XCX_DAMAGES]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
[XCX_DAMAGES_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02E0C550 = li r3, -1-$mult
0x025D896C = mulli r4, r31, $mult
_divide_dmg:
li r4, $mult
divw r4, r31, r4
blr
;[XCX_DAMAGES_V102J]
;DO NOT port to JP 1.0.2 untill official game servers go offline
_mult_or_divide:
cmpwi r0, $multOrDivision
bne- _divide_dmg
mulli r4, r31, $mult
blr
[XCX_DAMAGES_V101E_102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
0x025D896C = bla _mult_or_divide
[XCX_DAMAGES_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x025D7F48 = bla _mult_or_divide
[XCX_DAMAGES_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02E0C3D8 = li r3, -1-$mult
0x025D88FC = mulli r4, r31, $mult
0x025D88FC = bla _mult_or_divide
[XCX_DAMAGES_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02E03228 = li r3, -1-$mult
0x025CD268 = mulli r4, r31, $mult
0x025CD268 = bla _mult_or_divide
;kill online codes
;when this game still had online these used to be part of the mod
;0x02E0C5B0 = li r3, -1 ;1.0.1E, 1.0.0E
;0x02E0C550 = li r3, -1 ;1.0.2U
;0x02E07A78 = li r3, -1 ;1.0.2J
;0x02E0C3D8 = li r3, -1 ;1.0.1U, 1.0.0U
;0x02E03228 = li r3, -1 ;1.0.0J

View File

@ -2,19 +2,69 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Ground damage multiplicator"
path = "Xenoblade Chronicles X/Mods/Battle/Ground damage multiplicator"
description = Increase the damage done by your team. Doesn't affect the damage numbers that are shown.
version = 6
description = Increase the damage done by your team. Doesn't affect the damage numbers that are shown.|Can also make the game more challenging by dividing damage.
version = 7
[Default]
$mult = 1
$multOrDivision = 0 #0 = mult, 1 = divis
[Preset]
name = Damage / 100
$mult = 100
$multOrDivision = 1
[Preset]
name = Damage / 50
$mult = 50
$multOrDivision = 1
[Preset]
name = Damage / 25
$mult = 25
$multOrDivision = 1
[Preset]
name = Damage / 10
$mult = 10
$multOrDivision = 1
[Preset]
name = Damage / 5
$mult = 5
$multOrDivision = 1
[Preset]
name = Damage / 4
$mult = 4
$multOrDivision = 1
[Preset]
name = Damage / 3
$mult = 3
$multOrDivision = 1
[Preset]
name = Damage / 2
$mult = 2
$multOrDivision = 1
[Preset]
name = Damage x1
default = 1
[Preset]
name = Damage x2
$mult = 2
[Preset]
name = Damage x3
$mult = 3
[Preset]
name = Damage x4
$mult = 4
[Preset]
name = Damage x5
$mult = 5
@ -27,6 +77,10 @@ $mult = 10
name = Damage x25
$mult = 25
[Preset]
name = Damage x50
$mult = 50
[Preset]
name = Damage x100
$mult = 100

View File

@ -1,32 +0,0 @@
[XCX_DAMAGES]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
.int $divr
_divide_dmg:
li r4, $divr
divw r4, r31, r4
blr
[XCX_DAMAGES_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x02E0C5B0 = li r3, -1-$divr
0x025D896C = bla _divide_dmg
[XCX_DAMAGES_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02E0C550 = li r3, -1-$divr
0x025D896C = bla _divide_dmg
;[XCX_DAMAGES_V102J]
;DO NOT port to JP 1.0.2 untill official game servers go offline
[XCX_DAMAGES_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02E0C3D8 = li r3, -1-$divr
0x025D88FC = bla _divide_dmg
[XCX_DAMAGES_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02E03228 = li r3, -1-$divr
0x025CD268 = bla _divide_dmg

View File

@ -1,38 +0,0 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Ground Damage Divisor
path = "Xenoblade Chronicles X/Mods/Battle/Ground damage divisor"
description = Make the game more challenging by dividing the given damage you and your team do to enemies. Doesn't affect the damage numbers that are shown.||Made by Lashoun.
version = 6
[Default]
$divr = 2
[Preset]
category = Damage Divisor
name = Damage / 2
[Preset]
category = Damage Divisor
name = Damage / 3
$divr = 3
[Preset]
category = Damage Divisor
name = Damage / 5
$divr = 5
[Preset]
category = Damage Divisor
name = Damage / 10
$divr = 10
[Preset]
category = Damage Divisor
name = Damage / 50
$divr = 50
[Preset]
category = Damage Divisor
name = Damage / 100
$divr = 100

View File

@ -1,5 +1,3 @@
[XCX_ENEMIESTATS_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
; ------------------------------------------------------------------------
; WHO : calcEnParam__3cfsFPQ2_3cfs7SChrPrmUiT2
; WHAT : Apply modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion)
@ -8,23 +6,15 @@ moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
; 70% = 0.0007
; 50% = 0.0005
; 1% = 0.00001 ; GAME CRASH (enemis are too weak)
0x02E0C5B0 = li r3, -3
[XCX_ENEMIESTATS_V101E_V102U_V100U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U
0x1003206C = .float $mod
[XCX_ENEMIESTATS_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02E0C550 = li r3, -3
0x1003206C = .float $mod
;[XCX_ENEMIESTATS_V102J]
;DO NOT port to JP 1.0.2 untill official game servers go offline
[XCX_ENEMIESTATS_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02E0C3D8 = li r3, -3
0x1003206C = .float $mod
[XCX_ENEMIESTATS_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x1003202C = .float $mod
[XCX_ENEMIESTATS_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02E03228 = li r3, -3
0x10031FDC = .float $mod

View File

@ -0,0 +1,36 @@
[XCX_FieldSkill]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
_FieldSkillLevelMod:
;applies our cheat ;~1B7C4038
li r0, $meclevel
stb r0,-0x7548(r30)
li r0, $biolevel
stb r0,-0x7547(r30)
li r0, $arclevel
stb r0,-0x7546(r30)
;fixes line we overwrote
lbzu r0,-0x7548(r30)
blr
[XCX_FeildSkill_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x02C1AA2C = bla _FieldSkillLevelMod
[XCX_FeildSkill_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02C1AA38 = bla _FieldSkillLevelMod
[XCX_FeildSkill_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02C163D0 = bla _FieldSkillLevelMod
[XCX_FeildSkill_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02C1A8C0 = bla _FieldSkillLevelMod
[XCX_FeildSkill_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02C1344C = bla _FieldSkillLevelMod

View File

@ -0,0 +1,113 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Field Skill Level
path = "Xenoblade Chronicles X/Mods/BLADE/Field Skill Level"
description = "You can change your Mechanical, Archaeological and Biological field skill level."
version = 7
[Default]
$meclevel = 5
$arclevel = 5
$biolevel = 5
[Preset]
category = Mechanical Field Skill:
name = lv. 5
[Preset]
category = Mechanical Field Skill:
name = lv. 4
$meclevel = 4
[Preset]
category = Mechanical Field Skill:
name = lv. 3
$meclevel = 3
[Preset]
category = Mechanical Field Skill:
name = lv. 2
$meclevel = 2
[Preset]
category = Mechanical Field Skill:
name = lv. 1
$meclevel = 1
[Preset]
category = Mechanical Field Skill:
name = lv. 0
$meclevel = 0
###[Preset]
###category = Mechanical Field Skill:
###name = lv. 6 (Broken)
###$meclevel = 6
[Preset]
category = Biological Field Skill:
name = lv. 5
[Preset]
category = Biological Field Skill:
name = lv. 4
$biolevel = 4
[Preset]
category = Biological Field Skill:
name = lv. 3
$biolevel = 3
[Preset]
category = Biological Field Skill:
name = lv. 2
$biolevel = 2
[Preset]
category = Biological Field Skill:
name = lv. 1
$biolevel = 1
[Preset]
category = Biological Field Skill:
name = lv. 0
$biolevel = 0
###[Preset]
###category = Biological Field Skill:
###name = lv. 6 (Broken)
###$biolevel = 6
[Preset]
category = Archaeological Field Skill:
name = lv. 5
[Preset]
category = Archaeological Field Skill:
name = lv. 4
$arclevel = 4
[Preset]
category = Archaeological Field Skill:
name = lv. 3
$arclevel = 3
[Preset]
category = Archaeological Field Skill:
name = lv. 2
$arclevel = 2
[Preset]
category = Archaeological Field Skill:
name = lv. 1
$arclevel = 1
[Preset]
category = Archaeological Field Skill:
name = lv. 0
$arclevel = 0
###[Preset]
###category = Archaeological Field Skill:
###name = lv. 6 (Broken)
###$arclevel = 6

View File

@ -1,7 +1,6 @@
[XCX_SQUADMISSIONS]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
.int $missionId
;######### Change Squad Mission using main menu
VarSquadMission:
@ -9,34 +8,34 @@ VarSquadMission:
_iniPtr:
li r5, 0
lis r30, VarSquadMission@ha
stw r5, VarSquadMission@l(r30)
mr r30, r3
lis r30, VarSquadMission@ha
stw r5, VarSquadMission@l(r30)
mr r30, r3
blr
;######### Force Squad Mission number
_forceMission:
lmw r14, 0x1B8(r1)
li r4, $missionId
cmpwi r4, 0
lmw r14, 0x1B8(r1)
li r4, $missionId
cmpwi r4, 0
beqlr
mr r3, r4
mr r3, r4
blr
;######### Force Squad Mission number 1.0.0J --not working
;_forceMissionJP:
;lmw r15, 0x1AC(r1) ;
;li r4, $missionId
;cmpwi r4, 0
;lmw r15, 0x1AC(r1) ;
;li r4, $missionId
;cmpwi r4, 0
;beqlr
;mr r3, r4
;mr r3, r4
;blr
;######### Change Squad Mission using main menu
_savePtr:
li r3, 1
lis r30, VarSquadMission@ha
stw r3, VarSquadMission@l(r30)
li r3, 1
lis r30, VarSquadMission@ha
stw r3, VarSquadMission@l(r30)
blr
@ -91,7 +90,6 @@ moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;################## BLADE Home Terminal (for Squad Quest Selection)
0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E0C5B0 = li r3, -1
;################## Change Squad Mission using main menu
0x02B85134 = bla _savePtr
@ -113,7 +111,6 @@ moduleMatches = 0x30B6E091 ; 1.0.2U
;################## BLADE Home Terminal (for Squad Quest Selection)
0x02AC5C00 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E0C550 = li r3, -1
;################## Change Squad Mission using main menu
0x02B85124 = bla _savePtr
@ -154,7 +151,6 @@ moduleMatches = 0x7672271D ; 1.0.2J
0x0295B7F0 = li r0, 42
0x02BF81D0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right
0x02AC22D0 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E07A78 = li r3, -1
0x02B81070 = bla _savePtr
0x02B81088 = bla _savePtr
0x02B80FC0 = li r11, 1
@ -192,7 +188,6 @@ moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x0295E988 = li r0, 42
0x02BFC6C0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right
0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E0C3D8 = li r3, -1
0x02B850A8 = bla _savePtr
0x02B850C0 = bla _savePtr
0x02B84FF8 = li r11, 1
@ -230,7 +225,6 @@ moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
;0x0295A060 = li r0, 42
;0x02BF5364 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right
;0x02AC04E8 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
;0x02E03228 = li r3, -1
;0x02B7EAC0 = bla _savePtr
;0x02B7EAD8 = bla _savePtr
;0x02B7EA10 = li r11, 1

View File

@ -0,0 +1,54 @@
[XCX_level]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
; get lv 027e14f ; get exp 027e1504 ; set lv 027e1510 ; set exp 027e151c
_levelMemorJP100:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x489c (r3)
b _charLevelCheat
_levelMemorUS100:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x3e78 (r3)
b _charLevelCheat
_levelMemorJP102:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x42b0 (r3)
b _charLevelCheat
_levelMemorEU101US102:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x3d78 (r3)
_charLevelCheat:
; Character Level
li r4, $level
stb r4, $memoffset (r3)
;fixes the line we over wrote
addi r3,r1,0x8
blr
[XCX_Level_V101E_V102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
; Our code applies when the reqMenuCreateParty function is used
0x023429F0 = bla _levelMemorEU101US102
[XCX_Level_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02342224 = bla _levelMemorJP102
[XCX_Level_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02342980 = bla _levelMemorUS100
[XCX_Level_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x023420B0 = bla _levelMemorJP100

View File

@ -0,0 +1,228 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Character Level
path = "Xenoblade Chronicles X/Mods/Character/Character Level"
description = "You can change the level of any character.||***Activate by pressing START(+), then Party->Active Members->Confirm Changes."
version = 7
[Default]
$memoffset = 0x122
$level = 1
$characterID = 1
[Preset]
category = "Character:"
name = "Playable Avatar"
[Preset]
category = "Character:"
name = "Nagi"
$characterID = 2
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "L"
$characterID = 3
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Lao"
$characterID = 4
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "H.B."
$characterID = 5
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Gwin"
$characterID = 6
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Frye"
$characterID = 7
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Doug"
$characterID = 8
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Yelv"
$characterID = 9
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Boze"
$characterID = 10
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Phog"
$characterID = 11
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Elma"
$characterID = 12
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Lin"
$characterID = 13
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Celica"
$characterID = 14
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Irina"
$characterID = 15
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Murderess"
$characterID = 16
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Alexa"
$characterID = 17
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Hope"
$characterID = 18
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Character:"
name = "Mia"
$characterID = 19
$memoffset = (($characterID-1)*0x57C)+0x122
[Preset]
category = "Level:"
name = lv. 1
[Preset]
category = "Level:"
name = lv. 5
$level = 5
[Preset]
category = "Level:"
name = lv. 10
$level = 10
[Preset]
category = "Level:"
name = lv. 15
$level = 15
[Preset]
category = "Level:"
name = lv. 20
$level = 20
[Preset]
category = "Level:"
name = lv. 25
$level = 25
[Preset]
category = "Level:"
name = lv. 30
$level = 30
[Preset]
category = "Level:"
name = lv. 35
$level = 35
[Preset]
category = "Level:"
name = lv. 40
$level = 40
[Preset]
category = "Level:"
name = lv. 45
$level = 45
[Preset]
category = "Level:"
name = lv. 50
$level = 50
[Preset]
category = "Level:"
name = lv. 55
$level = 55
[Preset]
category = "Level:"
name = lv. 60
$level = 60
[Preset]
category = "Level:"
name = lv. 70
$level = 70
[Preset]
category = "Level:"
name = lv. 80
$level = 80
[Preset]
category = "Level:"
name = lv. 90
$level = 90
[Preset]
category = "Level:"
name = lv. 100
$level = 100
[Preset]
category = "Level:"
name = lv. 150
$level = 150
[Preset]
category = "Level:"
name = lv. 200
$level = 200
[Preset]
category = "Level:"
name = lv. 255
$level = 255
[Preset]
category = "Level:"
name = lv. 0
$level = 0

View File

@ -0,0 +1,78 @@
[XCX_Name]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
_playerName:
;char 1-4
lis r8, $char0102
ori r8, r8, $char0304
stw r8, $memoffset+0x0 (r12)
;char 5-8
lis r8, $char0506
ori r8, r8, $char0708
stw r8, $memoffset+0x4 (r12)
;char 9-12
lis r8, $char0910
ori r8, r8, $char1112
stw r8, $memoffset+0x8 (r12)
;char 13-16
lis r8, $char1314
ori r8, r8, $char1516
stw r8, $memoffset+0xC (r12)
;char 17-20
lis r8, $char1718
ori r8, r8, $char1920
stw r8, $memoffset+0x10 (r12)
;char 21-24
lis r8, $char2122
ori r8, r8, $char2324
stw r8, $memoffset+0x14 (r12)
;char 25-28
lis r8, $char2526
ori r8, r8, $char2728
stw r8, $memoffset+0x18 (r12)
;char 29-32
lis r8, $char2930
ori r8, r8, $char3132
stw r8, $memoffset+0x1C (r12)
;char 33-36
lis r8, $char3334
ori r8, r8, $char3536
stw r8, $memoffset+0x20 (r12)
;char 37-40
lis r8, $char3738
ori r8, r8, $char3940
stw r8, $memoffset+0x24 (r12)
;char 41-44
lis r8, $char4142
ori r8, r8, $char4344
stw r8, $memoffset+0x28 (r12)
;char 45-48
lis r8, $char4546
ori r8, r8, $char4748
stw r8, $memoffset+0x2C (r12)
;char 49-52
lis r8, $char4950
ori r8, r8, $char5152
stw r8, $memoffset+0x30 (r12)
;fixes the line we over wrote
addi r8,r12,0xa7
blr
[XCX_Name_V101E_V102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
;GetMyAvatar__Q2_2fw4UtilFRQ2_2fw7SPcData
0x027F6EEC = bla _playerName
[XCX_Name_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x027F4A70 = bla _playerName
[XCX_Name_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x027F6E50 = bla _playerName
[XCX_Name_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x027F3A44 = bla _playerName

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,104 @@
[XCX_CharacterSize]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
charHeight:
.float $height ;(Character Depth, Height, and Width)
bustX:
.float $bustX ;(Chest Depth)
bustY:
.float $bustY ;(Chest Height)
bustZ:
.float $bustZ ;(Chest Width)
_sizeMemorJP100:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x489c (r3)
b _charSize
_sizeMemorUS100:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x3e78 (r3)
b _charSize
_sizeMemorJP102:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x42b0 (r3)
b _charSize
_sizeMemorEU101US102:
;reads from the static address that stores the address for the start of character info memory section
lis r3, 0x103a
lwz r3, -0x3d78 (r3)
_charSize:
; Character Height (total character size)
lis r25, charHeight@ha
lfs f31, charHeight@l(r25)
stfs f31, $memoffset (r3)
li r25, 0xFFFF
cmpwi r25, $notexist
bne _charBustNormal
stw r25, $memoffset (r3)
_charBustNormal:
cmpwi r25, $invis
beq _invisBust
li r25, 0xD
cmpwi r25, $characterID
beq _resetMaleChar
lis r25, bustX@ha
lfs f31, bustX@l(r25)
stfs f31, $memoffset+0x4 (r3)
lis r25, bustY@ha
lfs f31, bustY@l(r25)
stfs f31, $memoffset+0x8 (r3)
lis r25, bustZ@ha
lfs f31, bustZ@l(r25)
stfs f31, $memoffset+0xC (r3)
b _leaveCharSize
_resetMaleChar:
lis r25, 0x3F42
ori r25, r25, 0x8F5C
stw r25, $memoffset+0x4 (r3)
lis r25, 0x3F47
ori r25, r25, 0xAE14
stw r25, $memoffset+0x8 (r3)
lis r25, 0x3F33
ori r25, r25, 0x3333
stw r25, $memoffset+0xC (r3)
b _leaveCharSize
_invisBust:
;bustXYZ = 0xFFFFFFFF
stw r25, $memoffset+0x4 (r3)
stw r25, $memoffset+0x8 (r3)
stw r25, $memoffset+0xC (r3)
_leaveCharSize:
;Restores the line we overwrote
lis r25, 0x103a
blr
[XCX_ChararacterSize_V101E_V102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
; Our code applies when the reqMenuCreateParty function is used
0x023428CC = bla _sizeMemorEU101US102
[XCX_ChararacterSize_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02342100 = bla _sizeMemorJP102
[XCX_ChararacterSize_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x0234285C = bla _sizeMemorUS100
[XCX_ChararacterSize_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02341F8C = bla _sizeMemorJP100

View File

@ -0,0 +1,445 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Character Size and Invisible Chest
path = "Xenoblade Chronicles X/Mods/Character/Character Size"
description = "You can change the height of any character and also make the chest of some characters not render.||Recommended to be combined with the 'No Fading When Close-up' mod (in Graphics).||***Activate by pressing START(+), then Party->Active Members->Confirm Changes."
version = 7
[Default]
$memoffset = 0x110
$height = 1.0
$bustX = 1.0
$bustY = 1.0
$bustZ = 1.0
$notexist = 0
$invis = 0
$glitchheight = 0
$characterID = 1
[Preset]
category = "Character:"
name = "Playable Avatar"
[Preset]
category = "Character:"
name = "Nagi"
$characterID = 2
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "L"
$characterID = 3
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Lao"
$characterID = 4
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "H.B."
$characterID = 5
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Gwin"
$characterID = 6
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Frye"
$characterID = 7
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Doug"
$characterID = 8
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Yelv"
$characterID = 9
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Boze"
$characterID = 10
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Phog"
$characterID = 11
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Elma"
$characterID = 12
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Lin"
$characterID = 13
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Celica"
$characterID = 14
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Irina"
$characterID = 15
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Murderess"
$characterID = 16
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Alexa"
$characterID = 17
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Hope"
$characterID = 18
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Character:"
name = "Mia"
$characterID = 19
$memoffset = (($characterID-1)*0x57C)+0x110
[Preset]
category = "Show Glitched Heights?"
name = No
[Preset]
category = "Show Glitched Heights?"
name = Yes
$glitchheight = 1
###################################################################
[Preset]
category = "Height:"
name = Sky Destroying [character needs to be in water] (1000000)
condition = $glitchheight == 1
$height = 1000000
[Preset]
category = "Height:"
name = Only Shadows [Need to fly in skell to see] (2000)
condition = $glitchheight == 1
$height = 2000
[Preset]
category = "Height:"
name = Building Sized (100)
condition = $glitchheight == 1
$height = 100
[Preset]
category = "Height:"
name = Giant (50)
condition = $glitchheight == 1
$height = 50
[Preset]
category = "Height:"
name = Huge (15)
$height = 15
[Preset]
category = "Height:"
name = Large (3.5)
$height = 3.5
[Preset]
category = "Height:"
name = Big (2.0)
$height = 2.0
[Preset]
category = "Height:"
name = Size 100 in character creator
condition = $characterID == 1
$height = 1.06 #0x3F87AE14 #Young Boy A B, Boy A B, Man A B, Old Man, Woman A B
###$height = 1.0 #0x3F800000 #Young Girl A B, Girl A B
###$height = 0.95 #0x3F733333 #Young Girl C
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 1
Default = 1
[Preset]
category = "Height:"
name = Size 1 in character creator
condition = $characterID == 1
$height = 0.9214 #0x3F6BE0DF #Young Boy A B, Boy A B, Man A B, Old Man, Woman A B
###$height = 0.8911 #0x3F641F21 #Young Girl A B, Girl A B
###$height = 0.8906 #0x3F63FE5C #Young Girl C
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 2
Default = 1
$height = 0.97 #0x3F7851EC
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 3
Default = 1
$height = 1.17 #0x3F95C28F
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 4
Default = 1
$height = 0.98 #0x3F7AE148
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 5
Default = 1
$height = 0.99 #0x3F7D70A4
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 6
Default = 1
$height = 0.97 #0x3F7851EC
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 7
Default = 1
$height = 1.03 #0x3F83D70A
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 8
Default = 1
$height = 1.06 #0x3F87AE14
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 9
Default = 1
$height = 1.01 0x3F8147AE
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 10
Default = 1
$height = 1.0 #0x3F800000
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 11
Default = 1
$height = 1.02 #0x3F828F5C
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 12
Default = 1
$height = 0.95 #0x3F733333
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 13
Default = 1
$height = 0.85 #0x3F59999A
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 14
Default = 1
$height = 0.87 #0x3F5EB852
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 15
Default = 1
$height = 0.93 #0x3F6E147B
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 16
Default = 1
$height = 0.95 #0x3F733333
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 17
Default = 1
$height = 0.92 #0x3F6B851F
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 18
Default = 1
$height = 0.97 #0x3F7851EC
[Preset]
category = "Height:"
name = Normal
condition = $characterID == 19
Default = 1
$height = 0.88 #0x3F6147AE
[Preset]
category = "Height:"
name = Short (0.7)
$height = 0.7
[Preset]
category = "Height:"
name = Small (0.55)
$height = 0.55
[Preset]
category = "Height:"
name = Tiny (0.35)
$height = 0.35
[Preset]
category = "Height:"
name = Rat (0.15)
$height = 0.15
[Preset]
category = "Height:"
name = Ant (0.05)
$height = 0.05
[Preset]
category = "Height:"
name = Character Disapears (0)
condition = $glitchheight == 1
$height = 0
[Preset]
category = "Height:"
name = Corrupt Hair [UNSTABLE] (-1)
condition = $glitchheight == 1
$height = -1
[Preset]
category = "Height:"
name = Character walks underground [UNSTABLE] (-1.2)
condition = $glitchheight == 1
$height = -1.2
[Preset]
category = "Height:"
name = Giant character walks underground [UNSTABLE] (-10000)
condition = $glitchheight == 1
$height = -10000
[Preset]
category = "Height:"
name = Massive character walks underground [UNSTABLE] (-80000)
condition = $glitchheight == 1
$height = -80000
[Preset]
category = "Height:"
name = Character Cant interact with terminals (NaN)
condition = $glitchheight == 1
$notexist = 0xFFFF #height = 0xFFFFFFFF
###################################################################
#[Preset]
#category = "Chest:"
#name = Size 100 in JP character creator
#condition = $characterID == 1
#$bustX = 1.4 #0x3FB33333
#$bustY = 1.4 #0x3FB33333
#$bustZ = 1.4 #0x3FB33333
[Preset]
category = "Chest:"
name = Normal #size 43 in JP character creator
condition = $characterID == 1
#Default = 1
$bustX = 1.001 #0x3F8020C4
$bustY = 1.001 #0x3F8020C4
$bustZ = 1.001 #0x3F8020C4
#[Preset]
#category = "Chest:"
#name = Size 1 in JP character creator
#condition = $characterID == 1
#$bustX = 0.707 #0x3F34FDF4
#$bustY = 0.707 #0x3F34FDF4
#$bustZ = 0.707 #0x3F34FDF4
[Preset]
category = "Chest:"
name = Normal
condition = (($characterID == 12) + ($characterID >= 16)) == 1
[Preset]
category = "Chest:"
name = Normal
condition = $characterID == 14
$bustX = 0.85 #0x3F59999A
$bustY = 0.85 #0x3F59999A
$bustZ = 0.85 #0x3F59999A
[Preset]
category = "Chest:"
name = Normal
condition = $characterID == 15
$bustX = 0.93 #0x3F6E147B
$bustY = 0.93 #0x3F6E147B
$bustZ = 0.93 #0x3F6E147B
[Preset]
category = "Chest:"
name = Invisible
condition = (($characterID == 1) + ($characterID == 12) + ($characterID >= 14)) == 1
$invis = 0xFFFF #bustXYZ = 0xFFFFFFFF

View File

@ -0,0 +1,307 @@
[XCX_ArtsUnlock]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J
.origin = codecave
_ArtsMemorJP100:
;reads from the static address that stores the address for the start of character info memory section
lis r31, 0x103a
lwz r31, -0x489c (r31)
b _ArtsUnlockMod
_ArtsMemorUS100:
;reads from the static address that stores the address for the start of character info memory section
lis r31, 0x103a
lwz r31, -0x3e78 (r31)
b _ArtsUnlockMod
_ArtsMemorJP102:
;reads from the static address that stores the address for the start of character info memory section
lis r31, 0x103a
lwz r31, -0x42b0 (r31)
b _ArtsUnlockMod
_ArtsMemorEU101US102:
;reads from the static address that stores the address for the start of character info memory section
lis r31, 0x103a
lwz r31, -0x3d78 (r31)
_ArtsUnlockMod: ;r30 r16 r17 r31 r0 r12
cmpw r4, r29
beq _forceArtsinCreateParty
addi r17, r31, $memoffset-1
li r16, $arts
li r0, $check
cmpwi r0, 1 ; <- conditional for what cheat to do
beq _ArtsUnlockALL
cmpwi r0, 5
beq _forceArtsEquiped123
li r12, 0
cmpwi r0, 2
beq _unlockunusedarts
cmpwi r0, 3
beq _whileLoopUseSpecificCharactersArts
cmpwi r0, 4
beq _unlockIndividualArts
_forceArtsEquiped123:
subi r17, r17, 0x24C
li r16, $artadr4+2
stbu r16, 1(r17)
li r16, $art4
stbu r16, 1(r17)
li r16, $artadr3+2
stbu r16, 1(r17)
li r16, $art3
stbu r16, 1(r17)
li r16, $artadr2+2
stbu r16, 1(r17)
li r16, $art2
stbu r16, 1(r17)
li r16, $artadr1+2
stbu r16, 1(r17)
li r16, $arts
stbu r16, 1(r17)
li r16, $artadr8+2
stbu r16, 1(r17)
li r16, $art8
stbu r16, 1(r17)
li r16, $artadr7+2
stbu r16, 1(r17)
li r16, $art7
stbu r16, 1(r17)
li r16, $artadr6+2
stbu r16, 1(r17)
li r16, $art6
stbu r16, 1(r17)
li r16, $artadr5+2
stbu r16, 1(r17)
li r16, $art5
stbu r16, 1(r17)
li r16, $arts
addi r17, r31, $memoffset-1
b _unlockIndividualArts
_whileLoopUseSpecificCharactersArts:
addi r31, r31, $memoffset+0x9B
stbu r12, 1(r17)
cmpw r17, r31
blt+ _whileLoopUseSpecificCharactersArts
subi r17, r31, 0x9B+1
li r16, $art9
stb r16, $art2adr1+1(r17)
stb r16, $art2adr2+1(r17)
stb r16, $art2adr3+1(r17)
stb r16, $art2adr4+1(r17)
stb r16, $art2adr5+1(r17)
stb r16, $art2adr6+1(r17)
stb r16, $art2adr7+1(r17)
stb r16, $art2adr8+1(r17)
stb r16, $art2adr9+1(r17)
stb r16, $art2adr10+1(r17)
stb r16, $art2adr11+1(r17)
stb r16, $art2adr12+1(r17)
stb r16, $art2adr13+1(r17)
stb r16, $art2adr14+1(r17)
stb r16, $art2adr15+1(r17)
stb r16, $art2adr16+1(r17)
li r16, $arts
_unlockIndividualArts:
;li r16, $arts
stb r16, $artadr1+1(r17)
li r16, $art2
stb r16, $artadr2+1(r17)
li r16, $art3
stb r16, $artadr3+1(r17)
li r16, $art4
stb r16, $artadr4+1(r17)
li r16, $art5
stb r16, $artadr5+1(r17)
li r16, $art6
stb r16, $artadr6+1(r17)
li r16, $art7
stb r16, $artadr7+1(r17)
li r16, $art8
stb r16, $artadr8+1(r17)
li r16, $arts
stb r16, $artadr9+1(r17)
stb r16, $artadr10+1(r17)
stb r16, $artadr11+1(r17)
stb r16, $artadr12+1(r17)
stb r16, $artadr13+1(r17)
stb r16, $artadr14+1(r17)
stb r16, $artadr15+1(r17)
stb r16, $artadr16+1(r17)
b _exitArtsUnlockedMod
_unlockunusedarts:
;li r16, $arts
stb r16, 0xD+1(r17) ;Full Burst
li r16, $art2
stb r16, 0x67+1(r17) ;Air Slash
b _exitArtsUnlockedMod
_ArtsUnlockALL:
;Unlocks ALL possible arts
lbz r12, 0x67+1(r17) ;saves the level of air slash
stb r12, $memoffset-0x337(r31) ;stores the level of air slash in memory
;airslash is stored where character name length is, the game auto fixes this value if its wrong
lbz r12, 0x0D+1(r17)
_RangedArtsClass123:
;li r16, $arts
li r0, $rclass
cmpwi r0, 1
bne _RangedArtsMission123
addi r30, r31, $memoffset+0x33
_whileLoopRangedArtsClass:
stbu r16, 1(r17)
cmpw r17, r30
blt+ _whileLoopRangedArtsClass
stb r16, $memoffset+0x74(r31) ;Boost Barrel
stb r16, $memoffset+0x75(r31) ;Sniper Barrel
stb r16, $memoffset+0x76(r31) ;Missile Barrel
stb r16, $memoffset+0x77(r31) ;Cannon Barrel
_RangedArtsMission123:
;li r16, $arts
li r0, $rmission
cmpwi r0, 1
bne _MeleeArtsClass123
addi r17, r31, $memoffset+0x78-1
addi r30, r31, $memoffset+0x88
_whileLoopRangedArtsMission:
stbu r16, 1(r17)
cmpw r17, r30
blt+ _whileLoopRangedArtsMission
_MeleeArtsClass123:
;li r16, $arts
li r0, $mclass
cmpwi r0, 1
bne _MeleeArtsMission123
addi r17, r31, $memoffset+0x35-1
addi r30, r31, $memoffset+0x72
_whileLoopMeleeArtsClass:
stbu r16, 1(r17)
cmpw r17, r30
blt+ _whileLoopMeleeArtsClass
_MeleeArtsMission123:
;li r16, $arts
li r0, $mmission
cmpwi r0, 1
bne _ExitArtsUnlockALL
addi r17, r31, $memoffset+0x89-1
addi r30, r31, $memoffset+0x9B
_whileLoopMeleeArtsMission:
stbu r16, 1(r17)
cmpw r17, r30
blt+ _whileLoopMeleeArtsMission
_ExitArtsUnlockALL:
addi r31, r31, $memoffset
stb r12, 0x0D(r31) ; restores the level of full burst
lbz r12, -0x337(r31) ; grabs air slash's level
stb r12, 0x67(r31) ; restores the level of air slash
;fixes bytes that are supposed to be 00
li r16, 0x00
stb r16, -1(r31)
stb r16, 0x0E(r31)
stb r16, 0x16(r31)
stb r16, 0x1E(r31)
stb r16, 0x25(r31)
stb r16, 0x2D(r31)
stb r16, 0x34(r31)
stb r16, 0x3D(r31)
stb r16, 0x45(r31)
stb r16, 0x50(r31)
stb r16, 0x5A(r31)
stb r16, 0x68(r31)
stb r16, 0x73(r31)
_exitArtsUnlockedMod:
;fixes line we overwrote
or r30, r3, r3
blr
_forceArtsinCreateParty:
li r4, $check
cmpwi r4, 5
bne _exitForceArtsinCreateParty
addi r31, r31, $memoffset-0x24D
li r4, $artadr4+2
stbu r4, 1(r31)
li r4, $art4
stbu r4, 1(r31)
li r4, $artadr3+2
stbu r4, 1(r31)
li r4, $art3
stbu r4, 1(r31)
li r4, $artadr2+2
stbu r4, 1(r31)
li r4, $art2
stbu r4, 1(r31)
li r4, $artadr1+2
stbu r4, 1(r31)
li r4, $arts
stbu r4, 1(r31)
li r4, $artadr8+2
stbu r4, 1(r31)
li r4, $art8
stbu r4, 1(r31)
li r4, $artadr7+2
stbu r4, 1(r31)
li r4, $art7
stbu r4, 1(r31)
li r4, $artadr6+2
stbu r4, 1(r31)
li r4, $art6
stbu r4, 1(r31)
li r4, $artadr5+2
stbu r4, 1(r31)
li r4, $art5
stbu r4, 1(r31)
_exitForceArtsinCreateParty:
addi r3, r1, 0x8
addi r4, r29, 0x14
blr
[XCX_ArtsUnlock_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x02A923F4 = bla _ArtsMemorEU101US102
0x023428E8 = or r4, r29, r29
0x023428EC = bla _ArtsMemorEU101US102
[XCX_ArtsUnlock_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02A923E4 = bla _ArtsMemorEU101US102
0x023428E8 = or r4, r29, r29
0x023428EC = bla _ArtsMemorEU101US102
[XCX_ArtsUnlock_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02A8E95C = bla _ArtsMemorJP102
0x0234211C = or r4, r29, r29
0x02342120 = bla _ArtsMemorJP102
[XCX_ArtsUnlock_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02A92368 = bla _ArtsMemorUS100
0x02342878 = or r4, r29, r29
0x0234287C = bla _ArtsMemorUS100
[XCX_ArtsUnlock_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02A8CCA4 = bla _ArtsMemorJP100
0x02341FA8 = or r4, r29, r29
0x02341FAC = bla _ArtsMemorJP100

File diff suppressed because it is too large Load Diff

View File

@ -1,44 +1,22 @@
[XCX_FREECAM_V101E_V102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
;this mod accesses the developer freecam used by the monolith soft devs
;'nop' makes it so that the specified line never executes
;we simply just prevent 2 functions from ever being called
; in func exe_normal__Q2_3Cam8CCamCtrlFv
0x022261BC = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
; in func isControl__Q2_3cfs9CfObjUtilSFPQ2_3cfs5CfObj
0x0244F930 = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
; in func isControl__Q2_3cfs18CfCompoActionActorCFPQ2_3cfs5CfObj
0x02467090 = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
; in func updateBefore__Q2_3cfs16CfCompoCtrlActorFf
0x025532E8 = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
; in func update__Q2_3cfs14CfSceneFreeCamFv
0x02601CFC = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
; in func dispFieldCamera__Q2_2ev16CUIManagerAlwaysFb
0x025f4e00 = blr ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
0x0276A774 = nop ;MenuTask::openHudEventCamera
[XCX_FREECAM_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02225C88 = nop
0x0244EF70 = nop
0x024666D0 = nop
0x025528C4 = nop
0x026012D8 = nop
0x025F43DC = blr
0x02768EEC = nop
[XCX_FREECAM_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x022261BC = nop
0x0244F8C0 = nop
0x02467020 = nop
0x02553278 = nop
0x02601C8C = nop
0x025f4d90 = blr
0x0276A714 = nop
[XCX_FREECAM_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02225A04 = nop
0x0244E494 = nop
0x02465BF4 = nop
0x02551DE8 = nop
0x026007FC = nop
0x025f3900 = blr
0x02767F7C = nop

View File

@ -1,6 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Hide Offline Label
path = "Xenoblade Chronicles X/Mods/Hide Offline Label"
path = "Xenoblade Chronicles X/Mods/Hide Offline Label"
description = Removes offline blinking tag. Does not change the actual online state.
version = 6
default = 1

View File

@ -3,60 +3,45 @@ moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
; ----------------------------------------------------------------------------
; WHO : menu::MenuMainMenu::funcManual((int))
; WHAT : Replace eManual function with timeManipulate function
_openTimeManipulate = 0x02C7A2F0 ; MenuTask::openTimeManipulate(void)
_isFinishTM = 0x02C7A4CC ; MenuTask::isFinishTimeManipulate((void))
0x02B83CB4 = bl _openTimeManipulate
0x02B83CCC = bl _openTimeManipulate
0x02B83C7C = bl _isFinishTM
0x02B83C98 = bl _isFinishTM
;#################################################################################
[XCX_EMANUAL_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
_openTimeManipulate = 0x02C7A290 ; MenuTask::openTimeManipulate(void)
_isFinishTM = 0x02C7A46C ; MenuTask::isFinishTimeManipulate((void))
0x02B83CA4 = bl _openTimeManipulate
0x02B83CBC = bl _openTimeManipulate
0x02B83C6C = bl _isFinishTM
0x02B83C88 = bl _isFinishTM
;#################################################################################
[XCX_EMANUAL_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
_openTimeManipulate = 0x02C757E4 ; MenuTask::openTimeManipulate(void)
_isFinishTM = 0x02C759C0 ; MenuTask::isFinishTimeManipulate((void))
0x02B7FBF0 = bl _openTimeManipulate
0x02B7FC08 = bl _openTimeManipulate
0x02B7FBB8 = bl _isFinishTM
0x02B7FBD4 = bl _isFinishTM
;#################################################################################
[XCX_EMANUAL_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
_openTimeManipulate = 0x02C7A118 ; MenuTask::openTimeManipulate(void)
_isFinishTM = 0x02C7A2F4 ; MenuTask::isFinishTimeManipulate((void))
0x02B83C28 = bl _openTimeManipulate
0x02B83C40 = bl _openTimeManipulate
0x02B83BF0 = bl _isFinishTM
0x02B83C0C = bl _isFinishTM
;#################################################################################
[XCX_EMANUAL_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
_openTimeManipulate = 0x02C71CD0 ; MenuTask::openTimeManipulate(void)
_isFinishTM = 0x02C71EAC ; MenuTask::isFinishTimeManipulate((void))
0x02B7D640 = bl _openTimeManipulate
0x02B7D658 = bl _openTimeManipulate
0x02B7D608 = bl _isFinishTM
0x02B7D624 = bl _isFinishTM

View File

@ -4,3 +4,4 @@ name = "Change time from eManual"
path = "Xenoblade Chronicles X/Mods/HUD/Change time from eManual"
description = Allow to change time from the eManual entry of the main menu.|Fixes the soft lock that happens when selecting eManual on Cemu.
version = 6
default = 1

View File

@ -117,7 +117,7 @@ category = Weather
condition = $region == 3
[Preset]
name = "Rain [2]"
name = "Rain [2] "
category = Weather
condition = $region == 3
$wtr = 2
@ -244,11 +244,10 @@ category = Weather
condition = $region == 5
$wtr = 6
###### uncommemt below to use different weather in the Barracks
###[Preset] ###########################################
###name = "Blade Barracks (unused)"
###category = Region
###$region = 6
[Preset] ###########################################
name = "Blade Barracks (unused)"
category = Region
$region = 6
[Preset]
name = "Clear [1]"

View File

@ -10,8 +10,8 @@
- **Soul Challenges - Skell restored**: When your Skell is destroyed during battle, it is restored automatically (you may need to fast travel).
### BLADE mods
- **BLADE Medal count mod** sets the number of BLADE Medals you currently have.
- **DLC quests unlocked**: DLC Support quests are unlocked and accessible as soon as you become a BLADE member.
- **BLADE Medal Count Mod**: sets the number of BLADE Medals you currently have.
- **DLC Quests Unlocked**: DLC Support quests are unlocked and accessible as soon as you become a BLADE member.
- **Gain Reward Tickets from DLC or Time Attack missions**: Add Exchange Tickets in reward for completing Blade missions.
> There are 2 presets:
> 1. Adds (exp) tickets to Time Attack missions
@ -22,7 +22,14 @@
- **Offline Squad tasks and missions**: Squad tasks and missions become available for offline play! When the game starts, a Squad quest is randomly selected (with "Random" preset) and the timer is stopped.
> Other presets allow to choose a specific tasks list. (c ) stands for collectible and (t) for Tyrant.
> When "Random" preset is selected, you can randomly change the active mission by opening the main menu and select "Social entry" > "Select Squad" command.
- **Field Skill Level Mod**: Can change your Mechanical, Biological, Archeaological field level.
### Character mods
- **Character Level**: Can change any characters current level.
- **Character Size**: Can change any characters size, and even has some glitch size values.
- **Change Character Name**: Can change any characters name and can rename your avatar.
- **Unlock Character Arts**: Can unlock any or all arts and can force arts to be equiped, even multiple of the same art.
### Collectibles mods
- **Catch range mod**: Increase the distance from which you catch a collectible.
> By default, you'll get them just when you're close enough to see the blue gem (distance increased by 40.0). There are 3 kind of distances in the game, each with a value of "Range" and "Height": "Inner" (which means when you are at foot), "Doll" (when you have a Skell at land) and "Flight" (which I believe is when you flight, generally in a Skell). All values are editable in the file patches.txt. Also note that the rarity of items is untouched.

View File

@ -1,50 +1,19 @@
#version 420
#version 450
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 3cc7e98f78c258b4 //Brightness fix
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#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 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
// This shaders was auto-converted from OpenGL to Cemu.
// shader 3cc7e98f78c258b4 // brightness workaround.
// To-do, .5 is daylight and 1.0 night is wiiu "correct" for nvidia
// changes here in turn "breaks" bloom as they over or under expose depending on day/night
//old contrasty, or just copy paste clarity
const float gamma = $gamma; // 1.0 is neutral
const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon.
const float vibrance = $vibrance; // 0.0 is neutral
const float lift = $lift; // 0.0 is neutral. loss of shadow detail
const float postExposure = $postExposure; // 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(lift));
return fColour;
}
#ifdef VULKAN
layout(set = 1, binding = 2) uniform ufBlock
{
@ -55,21 +24,15 @@ uniform vec4 uf_fragCoordScale;
uniform ivec4 uf_remappedPS[1];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler3D textureUnitPS1;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
float lineRand(vec2 co)
{
float a = 12.9898;
float b = 78.233;
float c = 43758.5453;
float dt = dot(co.xy, vec2(a, b));
float sn = mod(dt, 3.14);
return fract(sin(sn) * c);
}
// end of shader inputs/outputs
const float exposure = $exposure;
const float vibrance = $vibrance;
const float postExposure = $postExposure;
const float contrastCurve = $contrastCurve;
int clampFI32(int v)
{
@ -84,58 +47,65 @@ void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R5f = 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;
float tempResultf2;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem0;
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.xy)*0.015));
//R0f.xyz = R0f.xyz - (lineRand(gl_FragCoord.xy)*0.1);
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R5f.xyzw = texture(textureUnitPS0, passParameterSem0.xy);
// 0
R0f.xyz = contrasty(R0f.xyz);
R127f.x = R0f.z * intBitsToFloat(uf_remappedPS[0].x);
tempResultf = clamp(intBitsToFloat(uf_remappedPS[0].x), 0.0, exposure);
tempResultf2 = clamp(intBitsToFloat(uf_remappedPS[0].z), 0.0, 1.0);
R127f.x = R0f.z * tempResultf;//intBitsToFloat(uf_remappedPS[0].x);
R127f.x = clamp(R127f.x, 0.0, 1.0);
R127f.y = R0f.y * intBitsToFloat(uf_remappedPS[0].x);
R127f.y = R0f.y * tempResultf;
R127f.y = clamp(R127f.y, 0.0, 1.0);
PV0f.z = R0f.x * intBitsToFloat(uf_remappedPS[0].x);
PV0f.z = R0f.x * tempResultf;
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
R1f.w = 1.0;
// 1
tempResultf = log2(PV0f.z);
tempResultf = max(0.0, PV0f.z);
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 2
R127f.z = PS1f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.y);
tempResultf = max(0.0, R127f.y);
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0f = tempResultf;
// 3
R127f.w = PS0f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.x);
tempResultf = max(0.0, R127f.x);
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 4
R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e);
PS0f = exp2(R127f.z);
// 5
R0f.x = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
R0f.x = (PS0f * tempResultf2 + intBitsToFloat(uf_remappedPS[0].w));
PS1f = exp2(R127f.w);
// 6
R0f.y = (PS1f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
PS0f = exp2(R127f.x);
// 7
R0f.z = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
R0f.xyz = clamp(R0f.xyz, 0.0, 1.0);
R1f.xyz = (texture(textureUnitPS1, vec3(R0f.x,R0f.y,R0f.z)).xyz);
// export
//R1f = vec4(pow(R1f.xyz, vec3(1. / gammaPostExposure)), 1.0);
R5f = mix (R1f,R5f,vibrance)*postExposure;
R5f.xyz = mix(R5f.xyz, smoothstep(0.0, 1.0, R5f.xyz), contrastCurve);
passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w);
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w)*postExposure;
}

View File

@ -1,50 +1,19 @@
#version 420
#version 450
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader d936195db0dd8e7d //crossfade
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#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 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
// This shaders was auto-converted from OpenGL to Cemu.
// shader d936195db0dd8e7d
// cross fade brightness
// To-do, .5 is daylight and 1.0 night is wiiu "correct" for nvidia
// changes here in turn "breaks" bloom as they over or under expose depending on day/night
//old contrasty, or just copy paste clarity
const float gamma = $gamma; // 1.0 is neutral
const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon.
const float vibrance = $vibrance; // 0.0 is neutral
const float lift = $lift; // 0.0 is neutral. loss of shadow detail
const float postExposure = $postExposure; // 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(lift));
return fColour;
}
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
@ -60,18 +29,11 @@ TEXTURE_LAYOUT(1, 1, 1) uniform sampler3D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler3D textureUnitPS2;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
float lineRand(vec2 co)
{
float a = 12.9898;
float b = 78.233;
float c = 43758.5453;
float dt = dot(co.xy, vec2(a, b));
float sn = mod(dt, 3.14);
return fract(sin(sn) * c);
}
// end of shader inputs/outputs
const float exposure = $exposure;
const float vibrance = $vibrance;
const float postExposure = $postExposure;
const float contrastCurve = $contrastCurve;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
@ -86,43 +48,49 @@ void main()
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R5f = 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;
float tempResultf2;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem0;
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.yx)*0.015));
//R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) *preExposure;
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R5f.xyzw = texture(textureUnitPS0, passParameterSem0.xy);
// 0
R0f.xyz = contrasty(R0f.xyz);
backupReg0f = R0f.x;
PV0f.x = backupReg0f * intBitsToFloat(uf_remappedPS[0].x);
tempResultf = clamp(intBitsToFloat(uf_remappedPS[0].x), 0.0, exposure);
tempResultf2 = clamp(intBitsToFloat(uf_remappedPS[0].z), 0.0, 1.0);
PV0f.x = backupReg0f * tempResultf; //intBitsToFloat(uf_remappedPS[0].x);
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
R127f.z = R0f.z * intBitsToFloat(uf_remappedPS[0].x);
R127f.z = R0f.z * tempResultf;
R127f.z = clamp(R127f.z, 0.0, 1.0);
R127f.w = R0f.y * intBitsToFloat(uf_remappedPS[0].x);
R127f.w = R0f.y * tempResultf;
R127f.w = clamp(R127f.w, 0.0, 1.0);
R2f.w = 1.0;
PS0f = R2f.w;
// 1
tempResultf = log2(PV0f.x);
tempResultf = max(0.0, PV0f.x);
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 2
R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.w);
tempResultf = max(0.0, R127f.w);
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0f = tempResultf;
// 3
R127f.y = PS0f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.z);
tempResultf = max(0.0, R127f.z);
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 4
@ -148,8 +116,9 @@ PV0f.z = R1f.x + -(backupReg1f);
R2f.x = (PV0f.z * intBitsToFloat(uf_remappedPS[0].y) + R0f.x);
R2f.y = (PV0f.y * intBitsToFloat(uf_remappedPS[0].y) + R0f.y);
R2f.z = (PV0f.x * intBitsToFloat(uf_remappedPS[0].y) + R0f.z);
// export
//R2f = vec4(pow(R2f.xyz, vec3(1. / gammaPostExposure)), 1.0);
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w)*postExposure;
R2f = mix (R2f,R5f,vibrance)*postExposure;
R2f.xyz = mix(R2f.xyz, smoothstep(0.0, 1.0, R2f.xyz), contrastCurve);
// export
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -1,26 +1,339 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Brightness Workaround
name = Brightness fix with colour and contrast
path = "Xenoblade Chronicles X/Workarounds/Brightness"
description = Edit presets for preference. Made by getdls.
version = 4
description = Fixes overbright day and too dark night. Optionally tweaks colour and contrast.
#Credits: getdls
version = 7
default = 1
[Default]
$contrastCurve:float = 0.0 # 0.0 no extra contrast to mix in
$exposure:float = 1.0 # 1.0 Full range without clipping pre mix - brightness fixed
$postExposure:float = 1.0 # 1.0 Full range without clipping - 1.1 -> slight clipping but nice
$vibrance:float = 0.0 # 0.0 no extra vibrance
$mixBalance:float = 1.0 # FXAA, bicubic sharpen or smooth pass -> Reserved for FX / Contrasty rework
$glare:float = 0.95 # Reflection shader raise/lower to balance clipping -> Reserved for FX / Contrasty rework
$lift:float = 0.002 # Raise shadows -> Reserved for FX / Contrasty rework
$isCustom:int = 0
##Pre packed settings
[Preset]
name = WiiU default - Brightness fix only
category = Standard presets
$contrastCurve:float = 0.0
$exposure:float = 1.0
$postExposure:float = 1.0
$vibrance:float = 0.0
[Preset]
name = NVIDIA
$crushContrast = 0.000
$exposure = 0.52
$gamma = 0.93
$glare = 0.95
$lift = 0.002
$postExposure = 1.05
$vibrance = 0.318
name = Increased brightness levels 1.15
category = Standard presets
$contrastCurve:float = 0
$exposure:float = 1.15
$postExposure:float = 1.0
$vibrance:float = 0.0
[Preset]
name = AMD
$crushContrast = 0
$exposure = 0.32
$gamma = 0.93
$glare = 0.95
$lift = 0.002
$postExposure = 1.05
$vibrance = 0.318
name = Increased contrast no colour change
category = Standard presets
$contrastCurve:float = 0.2
$exposure:float = 1.1
$postExposure:float = 1.05
$vibrance:float = 0.0
[Preset]
name = Saturation and contrast 1.25 - Darker nights
category = Standard presets
$contrastCurve:float = 0
$exposure:float = 1.3
$postExposure:float = 1.1
$vibrance:float = 0.3
[Preset]
name = Saturation and contrast 1.5 - Darker Nights
category = Standard presets
$contrastCurve:float = 0.0
$exposure:float = 1.55
$postExposure:float = 1.15
$vibrance:float = 0.45
[Preset]
name = Custom
category = Standard presets
$isCustom:int = 1
##exposure
[Preset]
name = 70% less exposure
category = Exposure and brightness fix
condition = $custom == 1
$exposure:float = 0.32
[Preset]
name = 50% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.52
[Preset]
name = 20% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.8
[Preset]
name = 15% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.85
[Preset]
name = 10% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.9
[Preset]
name = No extra exposure - Only brightness fix
category = Exposure and brightness fix
condition = $isCustom == 1
default = 1
$exposure:float = 1.0
[Preset]
name = 5% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.05
[Preset]
name = 10% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.1
[Preset]
name = 15% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.15
[Preset]
name = 20% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.2
[Preset]
name = 30% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.3
[Preset]
name = 40% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.4
[Preset]
name = 50% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.5
[Preset]
name = 75% more exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.5
##Saturation
[Preset]
name = No extra saturation (Default)
category = Saturation - Darkens image
condition = $isCustom == 1
default = 1
$vibrance:float = 0.0
[Preset]
name = 5% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.05
[Preset]
name = 10% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.1
[Preset]
name = 15% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.15
[Preset]
name = 20% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.2
[Preset]
name = 30% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.3
[Preset]
name = 40% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.4
[Preset]
name = 50% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.5
[Preset]
name = 75% more saturation
category = Saturation - Darkens image
condition = $isCustom == 1
$vibrance:float = 0.75
##Contrast curve
[Preset]
name = 20 % less contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = -0.2
[Preset]
name = No extra contrast (Default)
category = Contrast
condition = $isCustom == 1
default = 1
$contrastCurve:float = 0.0
[Preset]
name = 5% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.05
[Preset]
name = 10% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.1
[Preset]
name = 15% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.15
[Preset]
name = 20% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.2
[Preset]
name = 30% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.3
[Preset]
name = 40% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.4
[Preset]
name = 50% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.5
[Preset]
name = 75% more contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.75
##postExposure curve
[Preset]
name = 20% less post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 0.8
[Preset]
name = 15% less post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 0.85
[Preset]
name = 10% less post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 0.9
[Preset]
name = Default post exposure
category = Exposure after colour grading
condition = $isCustom == 1
default = 1
$postExposure:float = 1.0
[Preset]
name = 5% more post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.05
[Preset]
name = 10% more post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.1
[Preset]
name = 15% more post Exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.15
[Preset]
name = 20% more post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.2
[Preset]
name = 30% more post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.3
[Preset]
name = 40% more post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.4
[Preset]
name = 50% more post exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.5

View File

@ -0,0 +1,141 @@
#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
// This shaders was auto-converted from OpenGL to Cemu.
// shader 3cc7e98f78c258b4 // brightness workaround.
// To-do, .5 is daylight and 1.0 night is wiiu "correct" for nvidia
// changes here in turn "breaks" bloom as they over or under expose depending on day/night
//old contrasty, or just copy paste clarity
const float gamma = $gamma; // 1.0 is neutral
const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon.
const float vibrance = $vibrance; // 0.0 is neutral
const float lift = $lift; // 0.0 is neutral. loss of shadow detail
const float postExposure = $postExposure; // 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(lift));
return fColour;
}
#ifdef VULKAN
layout(set = 1, binding = 2) uniform ufBlock
{
uniform ivec4 uf_remappedPS[1];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[1];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler3D textureUnitPS1;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
float lineRand(vec2 co)
{
float a = 12.9898;
float b = 78.233;
float c = 43758.5453;
float dt = dot(co.xy, vec2(a, b));
float sn = mod(dt, 3.14);
return fract(sin(sn) * c);
}
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 min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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;
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.xy)*0.015));
//R0f.xyz = R0f.xyz - (lineRand(gl_FragCoord.xy)*0.1);
// 0
R0f.xyz = contrasty(R0f.xyz);
R127f.x = R0f.z * intBitsToFloat(uf_remappedPS[0].x);
R127f.x = clamp(R127f.x, 0.0, 1.0);
R127f.y = R0f.y * intBitsToFloat(uf_remappedPS[0].x);
R127f.y = clamp(R127f.y, 0.0, 1.0);
PV0f.z = R0f.x * intBitsToFloat(uf_remappedPS[0].x);
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
R1f.w = 1.0;
// 1
tempResultf = log2(PV0f.z);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 2
R127f.z = PS1f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.y);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0f = tempResultf;
// 3
R127f.w = PS0f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.x);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 4
R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e);
PS0f = exp2(R127f.z);
// 5
R0f.x = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
PS1f = exp2(R127f.w);
// 6
R0f.y = (PS1f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
PS0f = exp2(R127f.x);
// 7
R0f.z = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
R1f.xyz = (texture(textureUnitPS1, vec3(R0f.x,R0f.y,R0f.z)).xyz);
// export
//R1f = vec4(pow(R1f.xyz, vec3(1. / gammaPostExposure)), 1.0);
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w)*postExposure;
}

View File

@ -1,4 +1,4 @@
#version 420
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
@ -11,7 +11,7 @@
#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 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)
@ -20,11 +20,11 @@
// shader 7b9f05b2bd8f3b71
//skell cockpit brigthtness fix + minor colour tweak to balance broken bloom
const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon.
const float postExposure = $postExposure; // 1.0 is neutral, then slightly raise exposure back up.
const float gamma = $gamma; // 1.0 is neutral
const float vibrance = $vibrance; // 0.0 is neutral
const float crushContrast = $crushContrast; // 0.0 is neutral. loss of shadow detail
const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon.
const float postExposure = $postExposure; // 1.0 is neutral, then slightly raise exposure back up.
const float gamma = $gamma; // 1.0 is neutral
const float vibrance = $vibrance; // 0.0 is neutral
const float crushContrast = $crushContrast; // 0.0 is neutral. loss of shadow detail
#ifdef VULKAN

View File

@ -1,4 +1,4 @@
#version 420
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
@ -11,7 +11,7 @@
#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 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)
@ -19,7 +19,7 @@
// This shaders was auto-converted from OpenGL to Cemu.
// shader bd74794730fc559a
//tweak glare, less J.J. Abrams
//tweak glare, less J.J. Abrams
const float glare = $glare; //reflection on skell, characters, metal objects etc
#ifdef VULKAN
layout(set = 1, binding = 8) uniform ufBlock

View File

@ -0,0 +1,155 @@
#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
// This shaders was auto-converted from OpenGL to Cemu.
// shader d936195db0dd8e7d
// cross fade brightness
// To-do, .5 is daylight and 1.0 night is wiiu "correct" for nvidia
// changes here in turn "breaks" bloom as they over or under expose depending on day/night
//old contrasty, or just copy paste clarity
const float gamma = $gamma; // 1.0 is neutral
const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon.
const float vibrance = $vibrance; // 0.0 is neutral
const float lift = $lift; // 0.0 is neutral. loss of shadow detail
const float postExposure = $postExposure; // 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(lift));
return fColour;
}
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
uniform ivec4 uf_remappedPS[1];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[1];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler3D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler3D textureUnitPS2;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
float lineRand(vec2 co)
{
float a = 12.9898;
float b = 78.233;
float c = 43758.5453;
float dt = dot(co.xy, vec2(a, b));
float sn = mod(dt, 3.14);
return fract(sin(sn) * c);
}
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 min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = 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;
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.yx)*0.015));
//R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) *preExposure;
// 0
R0f.xyz = contrasty(R0f.xyz);
backupReg0f = R0f.x;
PV0f.x = backupReg0f * intBitsToFloat(uf_remappedPS[0].x);
PV0f.x = clamp(PV0f.x, 0.0, 1.0);
R127f.z = R0f.z * intBitsToFloat(uf_remappedPS[0].x);
R127f.z = clamp(R127f.z, 0.0, 1.0);
R127f.w = R0f.y * intBitsToFloat(uf_remappedPS[0].x);
R127f.w = clamp(R127f.w, 0.0, 1.0);
R2f.w = 1.0;
PS0f = R2f.w;
// 1
tempResultf = log2(PV0f.x);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 2
R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.w);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0f = tempResultf;
// 3
R127f.y = PS0f * intBitsToFloat(0x3ee8ba2e);
tempResultf = log2(R127f.z);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 4
R127f.w = PS1f * intBitsToFloat(0x3ee8ba2e);
PS0f = exp2(R127f.x);
// 5
R0f.x = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
PS1f = exp2(R127f.y);
// 6
R0f.y = (PS1f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
PS0f = exp2(R127f.w);
// 7
R0f.z = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w));
R1f.xyz = (texture(textureUnitPS1, vec3(R0f.x,R0f.y,R0f.z)).xyz);
R0f.xyz = (texture(textureUnitPS2, vec3(R0f.x,R0f.y,R0f.z)).xyz);
// 0
backupReg0f = R0f.y;
backupReg1f = R0f.x;
PV0f.x = R1f.z + -(R0f.z);
PV0f.y = R1f.y + -(backupReg0f);
PV0f.z = R1f.x + -(backupReg1f);
// 1
R2f.x = (PV0f.z * intBitsToFloat(uf_remappedPS[0].y) + R0f.x);
R2f.y = (PV0f.y * intBitsToFloat(uf_remappedPS[0].y) + R0f.y);
R2f.z = (PV0f.x * intBitsToFloat(uf_remappedPS[0].y) + R0f.z);
// export
//R2f = vec4(pow(R2f.xyz, vec3(1. / gammaPostExposure)), 1.0);
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w)*postExposure;
}

View File

@ -0,0 +1,471 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = OLD Brightness Workaround
path = "Xenoblade Chronicles X/Workarounds/Brightness OLD"
description = Old version of the brightness work arround.|The new version is *significantly* more accurate to Wii U but currently does not support gamma, glare, or lift modification.
#Credits: getdls
version = 6
[Default]
$crushContrast = 0.0
$exposure = 1.0
$gamma = 1.0
$glare = 0.95
$lift = 0.002
$postExposure = 1.0
$vibrance = 0.0
$isCustom = 0
[Preset]
name = Brighter (was NVIDIA)
category = Option
$crushContrast = 0.0
$exposure = 0.52
$gamma = 0.93
$glare = 0.95
$lift = 0.002
$postExposure = 1.05
$vibrance = 0.318
[Preset]
name = Darker (was AMD)
category = Option
$crushContrast = 0.0
$exposure = 0.32
$gamma = 0.93
$glare = 0.95
$lift = 0.002
$postExposure = 1.05
$vibrance = 0.318
[Preset]
name = Custom
category = Option
$isCustom = 1
##Contrast curve
[Preset]
name = 20 % less contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = -0.2
[Preset]
name = No extra contrast
category = Contrast
condition = $isCustom == 1
default = 1
$crushContrast = 0.0
[Preset]
name = 5% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.05
[Preset]
name = 10% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.1
[Preset]
name = 15% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.15
[Preset]
name = 20% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.2
[Preset]
name = 30% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.3
[Preset]
name = 40% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.4
[Preset]
name = 50% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.5
[Preset]
name = 75% more contrast
category = Contrast
condition = $isCustom == 1
$crushContrast = 0.75
##exposure
[Preset]
name = 70% less exposure (AMD)
category = Exposure
condition = $custom == 1
$exposure = 0.32
[Preset]
name = 50% less exposure (NVIDIA)
category = Exposure
condition = $isCustom == 1
$exposure = 0.52
[Preset]
name = 20% less exposure
category = Exposure
condition = $isCustom == 1
$exposure = 0.8
[Preset]
name = 15% less exposure
category = Exposure
condition = $isCustom == 1
$exposure = 0.85
[Preset]
name = 10% less exposure
category = Exposure
condition = $isCustom == 1
$exposure = 0.9
[Preset]
name = No extra exposure
category = Exposure
condition = $isCustom == 1
default = 1
$exposure = 1.0
[Preset]
name = 5% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.05
[Preset]
name = 10% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.1
[Preset]
name = 15% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.15
[Preset]
name = 20% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.2
[Preset]
name = 30% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.3
[Preset]
name = 40% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.4
[Preset]
name = 50% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.5
[Preset]
name = 75% more exposure
category = Exposure
condition = $isCustom == 1
$exposure = 1.5
[Preset]
name = 0.4
category = Gamma
condition = $isCustom == 1
$gamma = 0.4
[Preset]
name = 0.6
category = Gamma
condition = $isCustom == 1
$gamma = 0.6
[Preset]
name = 0.8
category = Gamma
condition = $isCustom == 1
$gamma = 0.8
[Preset]
name = 0.93 (Recommended)
category = Gamma
condition = $isCustom == 1
$gamma = 0.93
[Preset]
name = 1.0 (Default)
category = Gamma
condition = $isCustom == 1
default = 1
$gamma = 1.0
[Preset]
name = 1.3
category = Gamma
condition = $isCustom == 1
$gamma = 1.3
[Preset]
name = 1.6
category = Gamma
condition = $isCustom == 1
$gamma = 1.6
[Preset]
name = 2.0
category = Gamma
condition = $isCustom == 1
$gamma = 2.0
[Preset]
name = 0.50
category = Glare
condition = $isCustom == 1
$gamma = 0.50
[Preset]
name = 0.70
category = Glare
condition = $isCustom == 1
$gamma = 0.70
[Preset]
name = 0.80
category = Glare
condition = $isCustom == 1
$gamma = 0.80
[Preset]
name = 0.90
category = Glare
condition = $isCustom == 1
$gamma = 0.90
[Preset]
name = 0.95 (Recommended)
category = Glare
condition = $isCustom == 1
$gamma = 0.95
[Preset]
name = 1.0 (Default)
category = Glare
condition = $isCustom == 1
default = 1
$gamma = 1.0
[Preset]
name = 1.05
category = Glare
condition = $isCustom == 1
$gamma = 1.05
[Preset]
name = 1.10
category = Glare
condition = $isCustom == 1
$gamma = 1.10
[Preset]
name = 1.20
category = Glare
condition = $isCustom == 1
$gamma = 1.20
[Preset]
name = 1.30
category = Glare
condition = $isCustom == 1
$gamma = 1.30
[Preset]
name = 1.50
category = Glare
condition = $isCustom == 1
$gamma = 1.50
[Preset]
name = 2.0
category = Glare
condition = $isCustom == 1
$gamma = 2.0
[Preset]
name = 0.000 (Default)
category = Lift
condition = $isCustom == 1
$lift = 0.000
[Preset]
name = 0.001
category = Lift
condition = $isCustom == 1
$lift = 0.001
[Preset]
name = 0.002 (Recommended)
category = Lift
condition = $isCustom == 1
default = 1
$lift = 0.002
[Preset]
name = 0.003
category = Lift
condition = $isCustom == 1
$lift = 0.003
[Preset]
name = 0.005
category = Lift
condition = $isCustom == 1
$lift = 0.005
##postExposure curve
[Preset]
name = 20% less post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 0.8
[Preset]
name = 15% less post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 0.85
[Preset]
name = 10% less post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 0.9
[Preset]
name = Default post exposure
category = Post Exposure
condition = $isCustom == 1
default = 1
$postExposure = 1.0
[Preset]
name = 5% more post Exposure (Recommended)
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.05
[Preset]
name = 10% more post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.1
[Preset]
name = 15% more post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.15
[Preset]
name = 20% more post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.2
[Preset]
name = 30% more post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.3
[Preset]
name = 40% more post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.4
[Preset]
name = 50% more post Exposure
category = Post Exposure
condition = $isCustom == 1
$postExposure = 1.5
##Saturation
[Preset]
name = No extra saturation (Default)
category = Vibrance
condition = $isCustom == 1
default = 1
$vibrance = 0.0
[Preset]
name = 5% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.05
[Preset]
name = 10% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.1
[Preset]
name = 15% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.15
[Preset]
name = 20% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.2
[Preset]
name = 30% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance: = 0.3
[Preset]
name = 40% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.4
[Preset]
name = 50% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.5
[Preset]
name = 75% more saturation
category = Vibrance
condition = $isCustom == 1
$vibrance = 0.75