update some XCX mods and add some new mods

adding some new mods. sorry the character arts mod rules.txt is 11000 lines.
it needs to be that way to work properly and it does currently work properly
if I had better formatting I may be able to get it down to 9000 lines but not worth it
also the conditional statements are so gnarly because I added support to change the mod behavior is another mod comes allong to either get a different weapon on the character or find a way arround the game preventing characters unlocking arts they shouldn't have.
all it takes to activate that support is uncomment 4 pressets

I was working on a similar mod for skills last year. knew what I was doing that time so formatted it cleanly and skills are less complicated than arts so it was 5000 lines
but my harddrive died and I lost my motivation to return to it or graphics packs in general

also hid the native aa option in the antialiasing pack
that pack was all kinds of broken, aa removal didn't work, fixed that
fxaa wasn't working fixed that
tried to get native aa mod to not produce massive ammounts of artifacts but couldn't
This commit is contained in:
intra0 2024-11-08 03:59:01 -06:00 committed by GitHub
parent 46db482e22
commit d789437df2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 15147 additions and 167 deletions

View File

@ -26,47 +26,21 @@ uniform vec2 uf_fragCoordScale;
#endif #endif
// This shaders was auto-converted (and manually adjusted) from OpenGL to Cemu so expect weird code and possible errors. // 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 preset $Preset
#define moreaa 0.0
#define lessaa 0.0
#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 #if (preset == 1) // Native AA
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 TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
layout(location = 0) in vec4 passParameterSem0; layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1; layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0; layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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) int clampFI32(int v)
{ {
if( v == 0x7FFFFFFF ) if( v == 0x7FFFFFFF )
@ -104,11 +78,11 @@ activeMaskStackC[0] = true;
activeMaskStackC[1] = true; activeMaskStackC[1] = true;
vec3 cubeMapSTM; vec3 cubeMapSTM;
int cubeMapFaceId; int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0 / resRatio); // Important line R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1); R1i = floatBitsToInt(passParameterSem1);
if( activeMaskStackC[1] == true ) { if( activeMaskStackC[1] == true ) {
R2i.xyzw = floatBitsToInt(textureGather(textureUnitPS0, intBitsToFloat(R0i.zw)).xyzw * resRatio); // Important line R2i.xyzw = floatBitsToInt(textureGather(textureUnitPS0, vec2(0.0001) + intBitsToFloat(R0i.zw)).xyzw);
R0i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.xy)).x / resRatio); // Important line R0i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.xy)).x);
} }
if( activeMaskStackC[1] == true ) { if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0]; activeMaskStack[1] = activeMaskStack[0];
@ -130,12 +104,12 @@ PV0i.z = R4i.z;
// 3 // 3
backupReg0i = R0i.x; backupReg0i = R0i.x;
backupReg0i = R0i.x; backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(uf_remappedPS[0].x) / resX); // Important line PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(uf_remappedPS[0].x));
PV1i.y = floatBitsToInt(max(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.y))); PV1i.y = floatBitsToInt(max(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.z))); PV1i.z = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.z)));
// 4 // 4
R0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.y)); R0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.y));
R0i.w = floatBitsToInt(max(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[0].y) / resY)); // Important line R0i.w = floatBitsToInt(max(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[0].y)));
// 5 // 5
backupReg0i = R0i.x; backupReg0i = R0i.x;
predResult = (intBitsToFloat(R0i.w) > intBitsToFloat(backupReg0i)); predResult = (intBitsToFloat(R0i.w) > intBitsToFloat(backupReg0i));
@ -162,8 +136,8 @@ R127i.z = 0;
PS0i = R127i.z; PS0i = R127i.z;
// 1 // 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))); 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.x = tempi.x;
PV1i.y = tempi.x; // Important PV1i.y = tempi.x;
PV1i.z = tempi.x; PV1i.z = tempi.x;
PV1i.w = tempi.x; PV1i.w = tempi.x;
R127i.y = tempi.x; R127i.y = tempi.x;
@ -268,25 +242,27 @@ R4i.z = ((PV0i.w == 0)?(R126i.z):(R126i.w));
// export // export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w)); passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
} }
#endif #endif
#if (preset == 2) // Nvidia FXAA Enabled #if (preset == 2) // Nvidia FXAA Enabled
/*-----------------------------settings-------------------------------------*/ /*-----------------------------settings-------------------------------------*/
#define Subpix 0.75 //[0.000 to 1.000] Choose the amount of sub-pixel aliasing removal. #define Subpix $subPix //[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 EdgeThreshold $edgeThreshold //[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 EdgeThresholdMin $edgeThresholdMin //[0.000 to 1.000] Darkness threshold. Trims the algorithm from processing darks.
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
#define FXAA_PC 1 #define FXAA_PC 1
#define FXAA_GLSL_130 1 #define FXAA_GLSL_130 1
#define FXAA_QUALITY_PRESET 14 #define FXAA_QUALITY_PRESET $FXAAQUALITYPRESET
#define FXAA_GREEN_AS_LUMA 1 #define FXAA_GREEN_AS_LUMA $FXAAGREENASLUMA
#define FXAA_DISCARD 0 #define FXAA_DISCARD $FXAADISCARD
#define FXAA_GATHER4_ALPHA 0 // Needs #extension GL_ARB_gpu_shader5 : enable #define FXAA_GATHER4_ALPHA 0 // Needs #extension GL_ARB_gpu_shader5 : enable
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/

View File

@ -0,0 +1,316 @@
[XCX_AntiAliasing]
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
str_AntiAliasing: ;= ;0x3D
.string "AntiAliasing=" ;0x416E7469416C696173696E673D ;41 6E 74 69 41 6C 69 61 73 69 6E 67 3D
str_AA_Sharpness:
.string "AA_Sharpness=" ;0x41415F53686172706E6573733D ;41 41 5F 53 68 61 72 70 6E 65 73 73 3D
str_AA_Range:
.string "AA_Range=" ;0x41415F52616E67653D ;41 41 5F 52 61 6E 67 65 3D
str_AA_Threshold:
.string "AA_Threshold=" ;0x41415F5468726573686F6C643D ;41 41 5F 54 68 72 65 73 68 6F 6C 64 3D
str_AA_ThresholdMin:
.string "AA_ThresholdMin=";0x41415F5468726573686F6C644D696E3D ;41 41 5F 54 68 72 65 73 68 6F 6C 64 4D 69 6E 3D
str_AA_floating_precision:
.string "%.*f"
AAEnable:
.uint $AAEnable
AASharpness:
.float $AASharpness
AARange:
.float $AARange
AAThreshold:
.float $AAThreshold
AAThresholdMin:
.float $AAThresholdMin
; r22 == 0x23f0a100
;Free registers that do not need to be restored:
; r26 r25 r24 r28 r10
;creates a copy of the ini file so we can fix it after we edit it
_makeCopyofINIAA:
addi r10, r22, 0x1200-4
li r24, 0x1F2
_forLoopMakeCopyofINIAA:
lwz r28, -0x1200+4(r10)
stwu r28, 4(r10)
addic. r24, r24, -1
bne+ _forLoopMakeCopyofINIAA
blr
;reads the file to check for setting string
;gets the ram address of where the setting starts (r10)
_CheckForINIAASetting:
or r26, r25, r25
addi r10, r22, -1
_whileLoopSearchSettingAA:
lbzu r28, 1(r10)
lbz r24, 0(r25)
cmpwi r28, 0 ;if this activates the setting was not found
beq- _ExitEditINIforAAmod
cmpw r28, r24
beq- _Equal_SettingSearchAA
or r25, r26, r26
b _whileLoopSearchSettingAA
_Equal_SettingSearchAA:
lbzu r24, 1(r25)
cmpwi r24, 0 ;every string ends with a null byte
bne+ _whileLoopSearchSettingAA
stw r10, 0x1200+0x800+40(r22)
;gets the ram address of where the setting ends (r24)
_CheckForEndofSettingAA:
addi r24, r10, 0x1200
_whileLoop_FindEndOfSettingAA_0D:
lbzu r28, 1(r24)
cmpwi r28, 0x0D
bne+ _whileLoop_FindEndOfSettingAA_0D
_whileLoop_FindEndOfSettingAA_0A:
lbzu r28, 1(r24)
cmpwi r28, 0x0A
bne- _whileLoop_FindEndOfSettingAA_0D
blr
;copies the trailing part of the ini file copy back to the real ini file
_ChangeAntiAliasingSettingINIMod:
lwz r10, 0x1200+0x800+40(r22)
_whileLoopCheckAASettingLength:
lbzu r26, 1(r10)
cmpwi r26, 0
bne+ _whileLoopCheckAASettingLength
subi r24, r24, 4+1
subi r10, r10, 4
_whileLoopCopyINIAAModBackIn:
lwzu r26, 4(r24)
stwu r26, 4(r10)
andi. r25, r26, 0xFF
bne+ _whileLoopCopyINIAAModBackIn
blr
;deletes the copy of the ini file we made as to not mess with the games ram
_DeleteINIAACopy:
addi r10, r22, 0x1200-4
li r28, 0
_whileLoopDeleteINIAACopy:
stwu r28, 4(r10)
lwz r24, 4(r10)
cmpwi r24, 0
bne+ _whileLoopDeleteINIAACopy
blr
_EditINIforAAmod:
;back up link register
mflr r26
stw r26, 0x1200+0x800+128(r22)
;AntiAliasing enable Setting ---------------------------------------------------------
_ChangeAAEnabledSettingINIMod:
bl _makeCopyofINIAA
;check for AntiAliasing=
;Load address of the "AntiAliasing=" string
lis r25, str_AntiAliasing@ha
ori r25, r25, str_AntiAliasing@l
;gets the ram address of where the setting starts and ends (starts r10, ends r24)
bl _CheckForINIAASetting
;loads the user preset AA enable setting and puts it into memory
lis r28, AAEnable@ha
lwz r28, AAEnable@l(r28)
stw r28, 1(r10)
;makes sure there is a null byte
li r26, 0
stb r26, 5(r10)
;fixes ini file after we mess it up
bl _whileLoopCheckAASettingLength
;checks if AA setting is set to native and if not exits the mod
_CheckifNativeAA:
li r25, $Preset
cmpwi r25, 1
bne _ExitEditINIforAAmod
;AA_Sharpness Setting ---------------------------------------------------------
_ChangeAASharpnessSettingINIMod:
;deletes our copy of the file and then recopies the file
;this is done because I don't feel like finding a better way of updating the file
bl _DeleteINIAACopy
bl _makeCopyofINIAA
;check for AA_Sharpness=
lis r25, str_AA_Sharpness@ha
ori r25, r25, str_AA_Sharpness@l
;gets the ram address of where the setting starts and ends (starts r10, ends r24)
bl _CheckForINIAASetting
;loads arguments for sprintf into r3, r4, and f1
lis r3, AASharpness@ha
lfs f1, AASharpness@l(r3)
addi r3, r10, 1
lis r4, str_AA_floating_precision@ha
ori r4, r4, str_AA_floating_precision@l
;updated the format string with the user specified decimal precision
li r25, 0x30+$AASharpnessDecimalPlaces
stb r25, 2(r4)
;sets condition register and branches to sprintf to convert the float in f1 to a string
;at the memory address in r3, using the string format pointed to by r4
CREQV 4*cr1+eq, 4*cr1+eq, 4*cr1+eq
mtctr r29 ;bl sprintf
bctrl
bl _ChangeAntiAliasingSettingINIMod
;AA_Range Setting ---------------------------------------------------------
_ChangeAARangeSettingINIMod:
bl _DeleteINIAACopy
bl _makeCopyofINIAA
lis r25, str_AA_Range@ha
ori r25, r25, str_AA_Range@l
bl _CheckForINIAASetting
lis r3, AARange@ha
lfs f1, AARange@l(r3)
addi r3, r10, 1
lis r4, str_AA_floating_precision@ha
ori r4, r4, str_AA_floating_precision@l
li r25, 0x30+$AARangeDecimalPlaces
stb r25, 2(r4)
CREQV 4*cr1+eq, 4*cr1+eq, 4*cr1+eq
mtctr r29 ;bl sprintf
bctrl
bl _ChangeAntiAliasingSettingINIMod
;AA_Threshold Setting ---------------------------------------------------------
_ChangeAAThresholdSettingINIMod:
bl _DeleteINIAACopy
bl _makeCopyofINIAA
lis r25, str_AA_Threshold@ha
ori r25, r25, str_AA_Threshold@l
bl _CheckForINIAASetting
lis r3, AAThreshold@ha
lfs f1, AAThreshold@l(r3)
addi r3, r10, 1
lis r4, str_AA_floating_precision@ha
ori r4, r4, str_AA_floating_precision@l
li r25, 0x30+$AAThresholdDecimalPlaces
stb r25, 2(r4)
CREQV 4*cr1+eq, 4*cr1+eq, 4*cr1+eq
mtctr r29 ;bl sprintf
bctrl
bl _ChangeAntiAliasingSettingINIMod
;AA_ThresholdMin Setting ---------------------------------------------------------
_ChangeAAThresholdMINSettingINIMod:
bl _DeleteINIAACopy
bl _makeCopyofINIAA
lis r25, str_AA_ThresholdMin@ha
ori r25, r25, str_AA_ThresholdMin@l
bl _CheckForINIAASetting
lis r3, AAThresholdMin@ha
lfs f1, AAThresholdMin@l(r3)
addi r3, r10, 1
lis r4, str_AA_floating_precision@ha
ori r4, r4, str_AA_floating_precision@l
li r25, 0x30+$AAThresholdMinDecimalPlaces
stb r25, 2(r4)
CREQV 4*cr1+eq, 4*cr1+eq, 4*cr1+eq
mtctr r29 ;bl sprintf
bctrl
bl _ChangeAntiAliasingSettingINIMod
;restores the game to how it was before the mod and exits the mod
_ExitEditINIforAAmod:
;delets the back up of the lib.ini file that we made to edit the original
bl _DeleteINIAACopy
;restore registers
lwz r25, 0x1200+0x800+128(r22)
mtlr r25
lmw r0, 0x1200+0x800(r22)
;delete register backup
li r28, 0
addi r26, r22, 0x1200+0x800-4
li r25, (128+4)/4
mtctr r25
_forloopClearRegistersAA:
stwu r28, 4(r26)
bdnz _forloopClearRegistersAA
;restores line we over wrote and returns to the game
;lwz r22, 0xa0(r31)
lis r26, 0x101c
blr
[XCX_AntiAliasing_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
.origin = codecave
_SprintfFunctionAddress_V101E_AA:
stmw r0, 0x1200+0x800(r22) ;backs up current registers
lis r29, 0x03B1
ori r29, r29, 0x8118 ;sprintf
b _EditINIforAAmod
0x02FF94C4 = bla _SprintfFunctionAddress_V101E_AA
[XCX_AntiAliasing_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
.origin = codecave
_SprintfFunctionAddress_V102U_AA:
stmw r0, 0x1200+0x800(r22) ;backs up current registers
lis r29, 0x03B1
ori r29, r29, 0x8098 ;sprintf
b _EditINIforAAmod
0x02FF9464 = bla _SprintfFunctionAddress_V102U_AA
[XCX_AntiAliasing_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
.origin = codecave
_SprintfFunctionAddress_V102J_AA:
stmw r0, 0x1200+0x800(r22)
lis r29, 0x03B1
ori r29, r29, 0x34B0 ;sprintf
b _EditINIforAAmod
0x02FF498C = bla _SprintfFunctionAddress_V102J_AA
[XCX_AntiAliasing_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
.origin = codecave
_SprintfFunctionAddress_V100U_AA:
stmw r0, 0x1200+0x800(r22)
lis r29, 0x03B1
ori r29, r29, 0x7F18 ;sprintf
b _EditINIforAAmod
0x02FF92EC = bla _SprintfFunctionAddress_V100U_AA
[XCX_AntiAliasing_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
.origin = codecave
_SprintfFunctionAddress_V100J_AA:
stmw r0, 0x1200+0x800(r22)
lis r29, 0x03B0
ori r29, r29, 0xDEB0 ;sprintf
b _EditINIforAAmod
0x02FEF584 = bla _SprintfFunctionAddress_V100J_AA

View File

@ -2,58 +2,518 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Anti-Aliasing Pack name = Anti-Aliasing Pack
path = "Xenoblade Chronicles X/Enhancements/Anti-Aliasing" 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. description = Dissable the game's native AA or replace it with nvidia's FXAA implementation. (FXAA works even without a nvidia card)||Made by SkalFate
version = 4 version = 7
[Default]
$Preset:int = 0
$AAEnable = 0x6F6E0000 #on
$AASharpness = 8.0
$AARange = 0.5
$AAThreshold = 0.17
$AAThresholdMin = 0.05
$AASharpnessDecimalPlaces = 1 #0.0
$AARangeDecimalPlaces = 1 #0.0
$AAThresholdDecimalPlaces = 2 #0.00
$AAThresholdMinDecimalPlaces = 2 #0.00
$subPix:float = 0.75
$edgeThreshold:float = 0.166
$edgeThresholdMin:float = 0.0833
$FXAAQUALITYPRESET:int = 12
$FXAAGREENASLUMA:int = 0
$FXAADISCARD:int = 0
[Preset] [Preset]
name = Nvidias FXAA name = NVIDIA's FXAA
$Preset:int = 2 $Preset:int = 2
# $AAEnable = 0x6F6E0000 #on
$LessAA = 0.0 # Ignore
$MoreAA = 0.0 # Ignore
#
$subPix = 1.0
$edgeThreshold = 0.125
$edgeThresholdMin = 0.0156
[Preset] #the native AA option creates artifacts and the options dont actually cause any noticable change in cemu
name = Enable Native AA #[Preset]
$Preset:int = 1 #name = Native AA
# #$Preset:int = 1
$LessAA = 0.0 #$AAEnable = 0x6F6E0000 #on
$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] [Preset]
name = Disable Native AA name = Disable Native AA
$Preset:int = 0 $Preset:int = 0
# $AAEnable = 0x6F666600 #off
$LessAA = 0.0 # Ignore
$MoreAA = 0.0 # Ignore [Preset]
# category = "AA Sharpness:"
$subPix = 0.75 # Ignore condition = $Preset == 1
$edgeThreshold = 0.166 # Ignore name = "20.0"
$edgeThresholdMin = 0.0312 # Ignore $AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 20.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "16.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 16.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "12.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 12.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "10.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 10.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "8.0 (default)"
default = 1
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 8.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "6.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 6.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "4.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 4.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "2.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 2.0
[Preset]
category = "AA Sharpness:"
condition = $Preset == 1
name = "0.0"
$AASharpnessDecimalPlaces = 1 #0.0
$AASharpness = 0.0
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "1.1"
$AARangeDecimalPlaces = 1 #0.0
$AARange = 1.1
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "0.9"
$AARangeDecimalPlaces = 1 #0.0
$AARange = 0.9
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "0.7"
$AARangeDecimalPlaces = 1 #0.0
$AARange = 0.7
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "0.5 (default)"
default = 1
$AARangeDecimalPlaces = 1 #0.0
$AARange = 0.5
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "0.3"
$AARangeDecimalPlaces = 1 #0.0
$AARange = 0.3
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "0.1"
$AARangeDecimalPlaces = 1 #0.0
$AARange = 0.1
[Preset]
category = "AA Range:"
condition = $Preset == 1
name = "0.0"
$AARangeDecimalPlaces = 1 #0.0
$AARange = 0.0
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "1.0"
$AAThresholdDecimalPlaces = 1 #0.0
$AAThreshold = 1.0
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.50"
$AAThresholdDecimalPlaces = 1 #0.0
$AAThreshold = 0.5
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.35"
$AAThresholdDecimalPlaces = 2 #0.00
$AAThreshold = 0.35
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.25"
$AAThresholdDecimalPlaces = 2 #0.00
$AAThreshold = 0.25
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.20"
$AAThresholdDecimalPlaces = 1 #0.0
$AAThreshold = 0.2
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.17 (default)"
default = 1
$AAThresholdDecimalPlaces = 2 #0.00
$AAThreshold = 0.17
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.11"
$AAThresholdDecimalPlaces = 2 #0.00
$AAThreshold = 0.11
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.05"
$AAThresholdDecimalPlaces = 2 #0.00
$AAThreshold = 0.05
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.02"
$AAThresholdDecimalPlaces = 2 #0.00
$AAThreshold = 0.02
[Preset]
category = "AA Threshold:"
condition = $Preset == 1
name = "0.0"
$AAThresholdDecimalPlaces = 1 #0.0
$AAThreshold = 0.0
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.50"
$AAThresholdMinDecimalPlaces = 1 #0.00
$AAThresholdMin = 0.5
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.25"
$AAThresholdMinDecimalPlaces = 2 #0.00
$AAThresholdMin = 0.25
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.15"
$AAThresholdMinDecimalPlaces = 2 #0.00
$AAThresholdMin = 0.15
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.10"
$AAThresholdMinDecimalPlaces = 1 #0.0
$AAThresholdMin = 0.1
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.07"
$AAThresholdMinDecimalPlaces = 2 #0.00
$AAThresholdMin = 0.07
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.05 (default)"
default = 1
$AAThresholdMinDecimalPlaces = 2 #0.00
$AAThresholdMin = 0.05
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.03"
$AAThresholdMinDecimalPlaces = 2 #0.00
$AAThresholdMin = 0.03
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.01"
$AAThresholdMinDecimalPlaces = 2 #0.00
$AAThresholdMin = 0.01
[Preset]
category = "AA Threshold Minimum:"
condition = $Preset == 1
name = "0.00"
$AAThresholdMinDecimalPlaces = 1 #0.0
$AAThresholdMin = 0.0
# 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)"
default = 1
$subPix:float = 1.00
[Preset]
category = "FXAA sub-pixel aliasing removal:"
condition = $Preset == 2
name = "0.75 (default amount of filtering)"
$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)"
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, default, the start of visible unfiltered edges)"
$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)"
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)"
$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)"
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: # Subpix:
# Choose the amount of sub-pixel aliasing removal. # Choose the amount of sub-pixel aliasing removal.
@ -78,4 +538,15 @@ $edgeThresholdMin = 0.0312 # Ignore
# 0.0625 - high quality (faster) # 0.0625 - high quality (faster)
# 0.0312 - visible limit (slower) # 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: Shader made by SkalFate, asm patch that doesn't do its job made by intra

View File

@ -0,0 +1,108 @@
[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.|Has a minimal performance impact. Made by Cremitif.
version = 7
[Default]
#Defined seprately so that they can be change individually if desired
$anisomount = 16
$anisorock = 16
$anisosand = 16
$anisotree = 16
$anisolargeplant = 16
$anisomidplant = 16
$anisosmallplant = 16
[Preset]
category = "Aniso: "
name = x2
$anisomount = 2
$anisorock = 2
$anisosand = 2
$anisotree = 2
$anisolargeplant = 2
$anisomidplant = 2
$anisosmallplant = 2
[Preset]
category = "Aniso: "
name = x4
$anisomount = 4
$anisorock = 4
$anisosand = 4
$anisotree = 4
$anisolargeplant = 4
$anisomidplant = 4
$anisosmallplant = 4
[Preset]
category = "Aniso: "
name = x8
$anisomount = 8
$anisorock = 8
$anisosand = 8
$anisotree = 8
$anisolargeplant = 8
$anisomidplant = 8
$anisosmallplant = 8
[Preset]
category = "Aniso: "
name = x16 (recommended)
default = 1
[Preset]
category = "Aniso: "
name = x32
$anisomount = 32
$anisorock = 32
$anisosand = 32
$anisotree = 32
$anisolargeplant = 32
$anisomidplant = 32
$anisosmallplant = 32
[TextureRedefine] # Mountain Textures
width = 2048
height = 1024
formats = 0x031
overwriteAnisotropy = $anisomount
[TextureRedefine] # Ground/Rock Textures
width = 1024
height = 1024
formats = 0x031
overwriteAnisotropy = $anisorock
[TextureRedefine] # Ground/Sand Textures
width = 512
height = 512
formats = 0x031
overwriteAnisotropy = $anisosand
[TextureRedefine] # Tree Textures
width = 128
height = 512
formats = 0x031
overwriteAnisotropy = $anisotree
[TextureRedefine] # Ground/Sand/Plant Textures
width = 256
height = 256
formats = 0x031
overwriteAnisotropy = $anisolargeplant
[TextureRedefine] # Grass/Plant Textures
width = 256
height = 128
formats = 0x031
overwriteAnisotropy = $anisomidplant
[TextureRedefine] # Grass/Plant Textures
width = 128
height = 128
formats = 0x033
overwriteAnisotropy = $anisosmallplant

View File

@ -3,7 +3,7 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Graphics name = Graphics
path = "Xenoblade Chronicles X/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. description = Changes the resolution of the game and the quality of the other elements.||Made by getdls and Lemon King.
version = 5 version = 7
[Default] [Default]
$width = 1280 $width = 1280

View File

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

View File

@ -2,14 +2,45 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Ground damage multiplicator" name = "Ground damage multiplicator"
path = "Xenoblade Chronicles X/Mods/Battle/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. 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 = 6 version = 7
[Default] [Default]
$mult = 1
$multOrDivision = 0
[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 / 3
$mult = 3
$multOrDivision = 1
[Preset]
name = Damage / 2
$mult = 2 $mult = 2
$multOrDivision = 1
[Preset]
name = Damage x1
default = 1
[Preset] [Preset]
name = Damage x2 name = Damage x2
$mult = 2
[Preset] [Preset]
name = Damage x3 name = Damage x3

View File

@ -1,5 +1,3 @@
[XCX_ENEMIESTATS_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
; ------------------------------------------------------------------------ ; ------------------------------------------------------------------------
; WHO : calcEnParam__3cfsFPQ2_3cfs7SChrPrmUiT2 ; WHO : calcEnParam__3cfsFPQ2_3cfs7SChrPrmUiT2
; WHAT : Apply modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion) ; 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 ; 70% = 0.0007
; 50% = 0.0005 ; 50% = 0.0005
; 1% = 0.00001 ; GAME CRASH (enemis are too weak) ; 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 0x1003206C = .float $mod
[XCX_ENEMIESTATS_V102U] [XCX_ENEMIESTATS_V102J]
moduleMatches = 0x30B6E091 ; 1.0.2U moduleMatches = 0x7672271D ; 1.0.2J
0x02E0C550 = li r3, -3 0x1003202C = .float $mod
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_V100J] [XCX_ENEMIESTATS_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02E03228 = li r3, -3
0x10031FDC = .float $mod 0x10031FDC = .float $mod

View File

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

View File

@ -0,0 +1,113 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Field Skill Level
path = "Xenoblade Chronicles X/Mods/BLADE/Field Level"
description = "You can change your Mechanical, Archeaological, 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 = Archeaological Field Skill:
name = lv. 5
[Preset]
category = Archeaological Field Skill:
name = lv. 4
$arclevel = 4
[Preset]
category = Archeaological Field Skill:
name = lv. 3
$arclevel = 3
[Preset]
category = Archeaological Field Skill:
name = lv. 2
$arclevel = 2
[Preset]
category = Archeaological Field Skill:
name = lv. 1
$arclevel = 1
[Preset]
category = Archeaological Field Skill:
name = lv. 0
$arclevel = 0
###[Preset]
###category = Archeaological Field Skill:
###name = lv. 6 (Broken)
###$arclevel = 6

View File

@ -91,7 +91,6 @@ moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;################## BLADE Home Terminal (for Squad Quest Selection) ;################## BLADE Home Terminal (for Squad Quest Selection)
0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline 0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E0C5B0 = li r3, -1
;################## Change Squad Mission using main menu ;################## Change Squad Mission using main menu
0x02B85134 = bla _savePtr 0x02B85134 = bla _savePtr
@ -113,7 +112,6 @@ moduleMatches = 0x30B6E091 ; 1.0.2U
;################## BLADE Home Terminal (for Squad Quest Selection) ;################## BLADE Home Terminal (for Squad Quest Selection)
0x02AC5C00 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline 0x02AC5C00 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E0C550 = li r3, -1
;################## Change Squad Mission using main menu ;################## Change Squad Mission using main menu
0x02B85124 = bla _savePtr 0x02B85124 = bla _savePtr
@ -154,7 +152,6 @@ moduleMatches = 0x7672271D ; 1.0.2J
0x0295B7F0 = li r0, 42 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 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 0x02AC22D0 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E07A78 = li r3, -1
0x02B81070 = bla _savePtr 0x02B81070 = bla _savePtr
0x02B81088 = bla _savePtr 0x02B81088 = bla _savePtr
0x02B80FC0 = li r11, 1 0x02B80FC0 = li r11, 1
@ -192,7 +189,6 @@ moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x0295E988 = li r0, 42 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 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 0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
0x02E0C3D8 = li r3, -1
0x02B850A8 = bla _savePtr 0x02B850A8 = bla _savePtr
0x02B850C0 = bla _savePtr 0x02B850C0 = bla _savePtr
0x02B84FF8 = li r11, 1 0x02B84FF8 = li r11, 1
@ -230,7 +226,6 @@ moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
;0x0295A060 = li r0, 42 ;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 ;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 ;0x02AC04E8 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
;0x02E03228 = li r3, -1
;0x02B7EAC0 = bla _savePtr ;0x02B7EAC0 = bla _savePtr
;0x02B7EAD8 = bla _savePtr ;0x02B7EAD8 = bla _savePtr
;0x02B7EA10 = li r11, 1 ;0x02B7EA10 = li r11, 1

View File

@ -0,0 +1,58 @@
[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, 0x218F6E07 ; 1.0.1E, 1.0.0E
; Our code applies when the reqMenuCreateParty function is used
0x023429F0 = bla _levelMemorEU101US102
[XCX_Level_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x023429F0 = bla _levelMemorEU101US102
[XCX_Level_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02342224 = bla _levelMemorJP102
[XCX_Level_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02342980 = bla _levelMemorUS100
[XCX_Level_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x023420B0 = bla _levelMemorJP100

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1,444 @@
[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.||Recomended 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 [Need to fly in skell to see] (100)
condition = $glitchheight == 1
$height = 100
[Preset]
category = "Height:"
name = Giant [Need to fly in skell to see] (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
[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 [CRASHES the game after a bit] (-1)
condition = $glitchheight == 1
$height = -1
[Preset]
category = "Height:"
name = Character Walks under ground [CRASHES the game after a bit] (-1.2)
condition = $glitchheight == 1
$height = -1.2
[Preset]
category = "Height:"
name = Character Walks under ground and is Giant [CRASHES the game after a bit] (-10000)
condition = $glitchheight == 1
$height = -10000
[Preset]
category = "Height:"
name = Character Walks under ground and is Massive [CRASHES the game after a bit] (-80000)
condition = $glitchheight == 1
$height = -80000
[Preset]
category = "Height:"
name = Character Cant interact with terminals (NaN)
condition = $glitchheight == 1
$notexist = 0xFFFF
###################################################################
#[Preset]
#category = "Chest:"
#name = Size 100 in JP character creator
#condition = $characterID == 1
#$bustX = 1.4 #0x3FB33333
#$bustY = 1.4 #0x3FB33333
#$bustZ = 1.4 #0x3FB33333
[Preset]
category = "Chest:"
name = Normal #size 43 in JP character creator
condition = $characterID == 1
#Default = 1
$bustX = 1.001 #0x3F8020C4
$bustY = 1.001 #0x3F8020C4
$bustZ = 1.001 #0x3F8020C4
#[Preset]
#category = "Chest:"
#name = Size 1 in JP character creator
#condition = $characterID == 1
#$bustX = 0.707 #0x3F34FDF4
#$bustY = 0.707 #0x3F34FDF4
#$bustZ = 0.707 #0x3F34FDF4
[Preset]
category = "Chest:"
name = Normal
condition = (($characterID == 12) + ($characterID >= 16)) == 1
[Preset]
category = "Chest:"
name = Normal
condition = $characterID == 14
$bustX = 0.85 #0x3F59999A
$bustY = 0.85 #0x3F59999A
$bustZ = 0.85 #0x3F59999A
[Preset]
category = "Chest:"
name = Normal
condition = $characterID == 15
$bustX = 0.93 #0x3F6E147B
$bustY = 0.93 #0x3F6E147B
$bustZ = 0.93 #0x3F6E147B
[Preset]
category = "Chest:"
name = Invisible
condition = (($characterID == 1) + ($characterID == 12) + ($characterID >= 14)) == 1
$invis = 0xFFFF #bustXYZ = 0xFFFFFFFF

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,44 +1,22 @@
[XCX_FREECAM_V101E_V102U] [XCX_FREECAM_V101E_V102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 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 ;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 0x025f4e00 = blr ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv
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
0x0276A774 = nop ;MenuTask::openHudEventCamera 0x0276A774 = nop ;MenuTask::openHudEventCamera
[XCX_FREECAM_V102J] [XCX_FREECAM_V102J]
moduleMatches = 0x7672271D ; 1.0.2J moduleMatches = 0x7672271D ; 1.0.2J
0x02225C88 = nop 0x025F43DC = blr
0x0244EF70 = nop
0x024666D0 = nop
0x025528C4 = nop
0x026012D8 = nop
0x02768EEC = nop 0x02768EEC = nop
[XCX_FREECAM_V100U] [XCX_FREECAM_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x022261BC = nop 0x025f4d90 = blr
0x0244F8C0 = nop
0x02467020 = nop
0x02553278 = nop
0x02601C8C = nop
0x0276A714 = nop 0x0276A714 = nop
[XCX_FREECAM_V100J] [XCX_FREECAM_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02225A04 = nop 0x025f3900 = blr
0x0244E494 = nop
0x02465BF4 = nop
0x02551DE8 = nop
0x026007FC = nop
0x02767F7C = nop 0x02767F7C = nop

View File

@ -3,7 +3,7 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Force Weather" name = "Force Weather"
path = "Xenoblade Chronicles X/Mods/Weather/Force Weather" path = "Xenoblade Chronicles X/Mods/Weather/Force Weather"
description = Force selected weather. Just select a preset and unload/reload the pack.|Weather Lock works even when traveling into different regions. description = Force selected weather. Just select a preset and unload/reload the pack.|Weather Lock works even when traveling into different regions.
version = 6 version = 7
[Default] [Default]
$wtr = 1 $wtr = 1
@ -244,11 +244,10 @@ category = Weather
condition = $region == 5 condition = $region == 5
$wtr = 6 $wtr = 6
###### uncommemt below to use different weather in the Barracks [Preset] ###########################################
###[Preset] ########################################### name = "Blade Barracks (unused)"
###name = "Blade Barracks (unused)" category = Region
###category = Region $region = 6
###$region = 6
[Preset] [Preset]
name = "Clear [1]" name = "Clear [1]"

View File

@ -10,8 +10,8 @@
- **Soul Challenges - Skell restored**: When your Skell is destroyed during battle, it is restored automatically (you may need to fast travel). - **Soul Challenges - Skell restored**: When your Skell is destroyed during battle, it is restored automatically (you may need to fast travel).
### BLADE mods ### BLADE mods
- **BLADE Medal count mod** sets the number of BLADE Medals you currently have. - **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. - **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. - **Gain Reward Tickets from DLC or Time Attack missions**: Add Exchange Tickets in reward for completing Blade missions.
> There are 2 presets: > There are 2 presets:
> 1. Adds (exp) tickets to Time Attack missions > 1. Adds (exp) tickets to Time Attack missions
@ -22,6 +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. - **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. > 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. > 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 ### Collectibles mods
- **Catch range mod**: Increase the distance from which you catch a collectible. - **Catch range mod**: Increase the distance from which you catch a collectible.

View File

@ -0,0 +1,111 @@
#version 420
#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 GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 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;
// 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 )
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 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);
R5f.xyzw = texture(textureUnitPS0, passParameterSem0.xy);
// 0
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 * tempResultf;
R127f.y = clamp(R127f.y, 0.0, 1.0);
PV0f.z = R0f.x * tempResultf;
PV0f.z = clamp(PV0f.z, 0.0, 1.0);
R1f.w = 1.0;
// 1
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 = 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 = 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 * 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
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);
}

View File

@ -0,0 +1,124 @@
#version 420
#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 GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 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;
// 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 )
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 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);
R5f.xyzw = texture(textureUnitPS0, passParameterSem0.xy);
// 0
backupReg0f = R0f.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 * tempResultf;
R127f.z = clamp(R127f.z, 0.0, 1.0);
R127f.w = R0f.y * tempResultf;
R127f.w = clamp(R127f.w, 0.0, 1.0);
R2f.w = 1.0;
PS0f = R2f.w;
// 1
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 = 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 = max(0.0, R127f.z);
tempResultf = log2(tempResultf);
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);
R2f = mix (R2f,R5f,vibrance)*postExposure;
R2f.xyz = mix(R2f.xyz, smoothstep(0.0, 1.0, R2f.xyz), contrastCurve);
// export
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -0,0 +1,323 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Brightness fix with colour and contrast
path = "Xenoblade Chronicles X/Workarounds/Brightness OLD"
description = Old version of the XCX brightness Workaround. Some people like this version better than the more recent current version.|Made by getdls.
version = 7
[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 = 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 = 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 = No extra exposure - Only brightness fix
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 1.0
[Preset]
name = 10% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.9
[Preset]
name = 15% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.85
[Preset]
name = 20% less exposure
category = Exposure and brightness fix
condition = $isCustom == 1
$exposure:float = 0.8
[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
category = Saturation - Darkens image
condition = $isCustom == 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 = No extra contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = 0.0
[Preset]
name = 20 % less contrast
category = Contrast
condition = $isCustom == 1
$contrastCurve:float = -0.2
[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 = No post postExposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 1.0
[Preset]
name = 10% less post Exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 0.9
[Preset]
name = 15% less post Exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 0.85
[Preset]
name = 20% less post Exposure
category = Exposure after colour grading
condition = $isCustom == 1
$postExposure:float = 0.8
[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