mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-12-12 19:22:35 +01:00
[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:
parent
0f812ffb24
commit
a7df307d81
36
Enhancements/TwilightPrincessHD_Anisotropic/rules.txt
Normal file
36
Enhancements/TwilightPrincessHD_Anisotropic/rules.txt
Normal 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
|
36
Enhancements/WindWakerHD_Anisotropic/rules.txt
Normal file
36
Enhancements/WindWakerHD_Anisotropic/rules.txt
Normal 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
|
@ -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
|
30
src/DKCTropicalFreeze/Cheats/DKC_BananaMult/rules.txt
Normal file
30
src/DKCTropicalFreeze/Cheats/DKC_BananaMult/rules.txt
Normal 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
|
22
src/DKCTropicalFreeze/Cheats/DKC_CoinMult/patch_infcoins.asm
Normal file
22
src/DKCTropicalFreeze/Cheats/DKC_CoinMult/patch_infcoins.asm
Normal 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
|
34
src/DKCTropicalFreeze/Cheats/DKC_CoinMult/rules.txt
Normal file
34
src/DKCTropicalFreeze/Cheats/DKC_CoinMult/rules.txt
Normal 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
|
@ -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
|
30
src/DKCTropicalFreeze/Cheats/DKC_LivesMult/rules.txt
Normal file
30
src/DKCTropicalFreeze/Cheats/DKC_LivesMult/rules.txt
Normal 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
|
@ -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
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
@ -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
|
||||
|
@ -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]
|
||||
|
118
src/XenobladeChroniclesX/Enhancements/ansio/rules.txt
Normal file
118
src/XenobladeChroniclesX/Enhancements/ansio/rules.txt
Normal 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
|
51
src/XenobladeChroniclesX/Graphics/patch_resolution.asm
Normal file
51
src/XenobladeChroniclesX/Graphics/patch_resolution.asm
Normal 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)
|
@ -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
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
113
src/XenobladeChroniclesX/Mods/BladeFieldSkill/rules.txt
Normal file
113
src/XenobladeChroniclesX/Mods/BladeFieldSkill/rules.txt
Normal 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
|
@ -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
|
||||
|
54
src/XenobladeChroniclesX/Mods/CharacterLevel/patch_level.asm
Normal file
54
src/XenobladeChroniclesX/Mods/CharacterLevel/patch_level.asm
Normal 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
|
228
src/XenobladeChroniclesX/Mods/CharacterLevel/rules.txt
Normal file
228
src/XenobladeChroniclesX/Mods/CharacterLevel/rules.txt
Normal 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
|
78
src/XenobladeChroniclesX/Mods/CharacterName/patch_name.asm
Normal file
78
src/XenobladeChroniclesX/Mods/CharacterName/patch_name.asm
Normal 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
|
1076
src/XenobladeChroniclesX/Mods/CharacterName/rules.txt
Normal file
1076
src/XenobladeChroniclesX/Mods/CharacterName/rules.txt
Normal file
File diff suppressed because it is too large
Load Diff
104
src/XenobladeChroniclesX/Mods/CharacterSize/patch_Size.asm
Normal file
104
src/XenobladeChroniclesX/Mods/CharacterSize/patch_Size.asm
Normal 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
|
445
src/XenobladeChroniclesX/Mods/CharacterSize/rules.txt
Normal file
445
src/XenobladeChroniclesX/Mods/CharacterSize/rules.txt
Normal 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
|
307
src/XenobladeChroniclesX/Mods/CharacterUnlockArts/patch_arts.asm
Normal file
307
src/XenobladeChroniclesX/Mods/CharacterUnlockArts/patch_arts.asm
Normal 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
|
11118
src/XenobladeChroniclesX/Mods/CharacterUnlockArts/rules.txt
Normal file
11118
src/XenobladeChroniclesX/Mods/CharacterUnlockArts/rules.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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]"
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
@ -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
|
@ -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
|
@ -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;
|
||||
}
|
471
src/XenobladeChroniclesX/Workarounds/BrightnessOLD/rules.txt
Normal file
471
src/XenobladeChroniclesX/Workarounds/BrightnessOLD/rules.txt
Normal 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
|
Loading…
Reference in New Issue
Block a user