[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Resolution
path = "Xenoblade Chronicles X/Graphics/Resolution"
description = Changes the resolution of the game. 1080 FX scaling runs DoF, fog etc at lower precision for better performance
version = 3

[Preset]
name = 1280x720 (Default)
$width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.01
$scaleShader = 1.0
$scaleBlur = 0.05

[Preset]
name = 3840x720 (48:9)
$width = 3840
$height = 720
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.01
$scaleShader = 1.0
$scaleBlur = 0.05

// Quality

[Preset]
name = 1600x900
$width = 1600
$height = 900
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.1
$scaleShader = (720.0/900.0) # factor for any shader that can't handle fractional scaling
$scaleBlur = 0.5

[Preset]
name = 1920x1080 (HD)
$width = 1920
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.15
$scaleShader = (1440.0/1080.0)
$scaleBlur = 0.5

[Preset]
name = 2560x1080 (21:9 HD)
$width = 2560
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.15
$scaleShader = (1440.0/1080.0)
$scaleBlur = 0.5

[Preset]
name = 5760x1080 (48:9 HD)
$width = 2560
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.15
$scaleShader = (1440.0/1080.0)
$scaleBlur = 0.5

[Preset]
name = 1920x1200 (10:9 HD)
$width = 1920
$height = 1200
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.15
$scaleShader = (1440.0/1200.0)
$scaleBlur = 0.5

[Preset]
name = 2560x1440 (Native x2)
$width = 2560
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.1
$scaleShader = 1.0
$scaleBlur = 0.5

[Preset]
name = 3440x1440 (21:9)
$width = 3440
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.1
$scaleShader = 1.0
$scaleBlur = 0.5

[Preset]
name = 7680x1440 (48:9)
$width = 7680
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.1
$scaleShader = 1.0
$scaleBlur = 0.5

[Preset]
name = 2560x1440 (Native x2) 1080 FX scaling
$width = 2560
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$internalRes = 0.75
$dither = 0.15
$scaleShader = (1440.0/1080.0)
$scaleBlur = 0.5

[Preset]
name = 3200x1800
$width = 3200
$height = 1800
$gameWidth = 1280
$gameHeight = 720
$internalRes = 2.0
$dither = 0.2
$scaleShader = (1440.0/1800.0)
$scaleBlur = 0.5

[Preset]
name = 3840x2160 (4k - Native x3)
$width = 3840
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.2
$scaleShader = 1.0
$scaleBlur = 1.0

[Preset]
name = 5120x2160 (4k 21:9)
$width = 5120
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.2
$scaleShader = 1.0
$scaleBlur = 1.0

[Preset]
name = 5120x2160 (4k 48:9)
$width = 11520
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.2
$scaleShader = 1.0
$scaleBlur = 1.0

[Preset]
name = 3840x2160 (4k - 1080 FX scaling)
$width = 3840
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$internalRes = 0.5
$dither = 0.25
$scaleShader = (1440.0/1080.0) #round 1.5 shadow to 2.0
$scaleBlur = 1.0

[Preset]
name = 5120x2880 (Native 4x)
$width = 5120
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.0
$dither = 0.25
$scaleShader = 1.0
$scaleBlur = 1.0

[Preset]
name = 5120x2880 (1080 FX scaling)
$width = 5120
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$internalRes = 0.375
$dither = 0.25
$scaleShader = (1440.0/1080.0)
$scaleBlur = 1.0
// Enthusiast


// Enthusiast

[Preset]
name = 7680x4320
$width = 7680
$height = 4320
$gameWidth = 1280
$gameHeight = 720
$internalRes = 0.5
$dither = 0.25
$scaleShader = 1.0
$scaleBlur = 1.0

[Preset]
name = 10240x5760
$width = 10240
$height = 5760
$gameWidth = 1280
$gameHeight = 720
$internalRes = 0.5
$dither = 0.25
$scaleShader = 1.0
$scaleBlur = 1.0

#[TextureRedefine]
#formats = 0x1a
#overwriteFormat = 0x1f

#[TextureRedefine]
#formats = 0x816
#overwriteFormat = 0x823

[TextureRedefine]
width = 1280
height = 720
formatsExcluded = 0x031,0x431,0x035,0x034,0x033 #dialog prompt fixes, XCX Logo NLA
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720

[TextureRedefine] # shadows
width = 1024
height = 1024
formats = 0x005 
overwriteWidth = ($height/$gameHeight) * (1024*$scaleShader*$internalRes)
overwriteHeight = ($height/$gameHeight) * (1024*$scaleShader*$internalRes)

[TextureRedefine] #ingame menu
width = 1024
height = 720
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 1024 
overwriteHeight = ($height/$gameHeight) * 720 

[TextureRedefine]
width = 864
height = 480
#formats = 
formatsExcluded = 0x431,0x035,0x034,0x033,0x031
overwriteWidth = ($width/$gameWidth) * 864
overwriteHeight = ($height/$gameHeight) * 480

[TextureRedefine]
width = 854
height = 480
#formats = 
formatsExcluded = 0x431,0x035,0x034,0x033,0x031
overwriteWidth = ($width/$gameWidth) * 854
overwriteHeight = ($height/$gameHeight) * 480

[TextureRedefine]
width = 640
height = 368
overwriteWidth = ($width/$gameWidth) * (640*$internalRes)
overwriteHeight = ($height/$gameHeight) * (368*$internalRes)

[TextureRedefine]
width = 640
height = 360
formatsExcluded = 0x41A,0x033,0x031 #dialog prompt fixes, XCX Logo NLA 
tileModesExcluded = 0x001 # fmv sub colour
overwriteWidth = ($width/$gameWidth) * (640*$internalRes)
overwriteHeight = ($height/$gameHeight) * (360*$internalRes)

[TextureRedefine] # shadows 1024 for smoother transition
width = 512
height = 512
formats = 0x005
overwriteWidth = ($height/$gameHeight) * (1024*$scaleShader*$internalRes)
overwriteHeight = ($height/$gameHeight) * (1024*$scaleShader*$internalRes)


[TextureRedefine]
width = 512
height = 288
overwriteWidth = ($width/$gameWidth) * (512*$internalRes)
overwriteHeight = ($height/$gameHeight) * (288*$internalRes)

[TextureRedefine] # fog 1.5 match stencil
width = 448
height = 240
overwriteWidth = ($width/$gameWidth) * (448*$internalRes)
overwriteHeight = ($height/$gameHeight) * (240*$internalRes)

[TextureRedefine] # fog
width = 426
height = 240
overwriteWidth = ($width/$gameWidth) * (426*$internalRes)
overwriteHeight = ($height/$gameHeight) * (240*$internalRes)

[TextureRedefine] # #Bloom, DOF
width = 320
height = 192
overwriteWidth = ($width/$gameWidth) * (320*$internalRes)
overwriteHeight = ($height/$gameHeight) * (192*$internalRes)

[TextureRedefine] # Bloom, DOF 
width = 384
height = 192
#formats = 0x001
overwriteWidth = ($width/$gameWidth) * (384*$internalRes)
overwriteHeight = ($height/$gameHeight) * (192*$internalRes)

[TextureRedefine] # Bloom, DOF 
width = 320
height = 180
overwriteWidth = ($width/$gameWidth) * (320*$internalRes)
overwriteHeight = ($height/$gameHeight) * (180*$internalRes)

[TextureRedefine]
width = 256
height = 144
formatsExcluded = 0x431,0x035,0x034,0x033,0x031
overwriteWidth = ($width/$gameWidth) * (256*$internalRes)
overwriteHeight = ($height/$gameHeight) * (144*$internalRes)

#[TextureRedefine] # PR screen
#width = 256
#height = 256
#formats = 0x810 #,0x011 #0x816
#overwriteWidth = ($height/$gameHeight) * (256*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (256*$internalRes)
#
#[TextureRedefine]# sky
#width = 255
#height = 255
#formats = 0x810
##formatsExcluded = 0x01a,0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($height/$gameHeight) * 255
#overwriteHeight = ($height/$gameHeight) * 255

[TextureRedefine] # skell depth
width = 192
height = 96
overwriteWidth = ($width/$gameWidth) * (192*$internalRes)
overwriteHeight = ($height/$gameHeight) * (96*$internalRes)

[TextureRedefine] # Bloom 2nd 
width = 160
height = 96
formatsExcluded = 0x431,0x035,0x034,0x033,0x031
overwriteWidth = ($width/$gameWidth) * (160*$internalRes)
overwriteHeight = ($height/$gameHeight) * (96*$internalRes)

[TextureRedefine] #bloom 2nd
width = 160
height = 90
###formats = 0x816
formatsExcluded = 0x431,0x035,0x034,0x033,0x031
overwriteWidth = ($width/$gameWidth) * (160*$internalRes)
overwriteHeight = ($height/$gameHeight) * (90*$internalRes)

#[TextureRedefine] # 
#width = 128
#height = 128
##formats = 0x806 #,0x035,0x034,0x033,0x031
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($width/$gameWidth) * 128
#overwriteHeight = ($height/$gameHeight) * 128

#[TextureRedefine] 
#width = 127
#height = 127
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
####formats = 0x80e # 0x820,0x816 #,0x035,0x034,0x033,0x032,0x031
#overwriteWidth = ($width/$gameWidth) * 127
#overwriteHeight = ($height/$gameHeight) * 127

[TextureRedefine] #bloom 3rd level
width = 96
height = 48
overwriteWidth = ($width/$gameWidth) * (96*$internalRes)
overwriteHeight = ($height/$gameHeight) * (48*$internalRes)

[TextureRedefine] #bloom 3rd level
width = 80
height = 46
overwriteWidth = ($width/$gameWidth) * (80*$internalRes)
overwriteHeight = ($height/$gameHeight) * (46*$internalRes)

#[TextureRedefine] 
#width = 64
#height = 64
####formats = 0x820,0x816 #,0x035,0x034,0x033,0x032,0x031
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($width/$gameWidth) * (64*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (64*$internalRes)

[TextureRedefine] #skell cockpit bloom 3rd level
width = 64
height = 32
formats = 0x816 #0x820,0x816 #,0x035,0x034,0x033,0x032,0x031
overwriteWidth = ($width/$gameWidth) * (64*$internalRes)
overwriteHeight = ($height/$gameHeight) * (32*$internalRes)

#[TextureRedefine] #
#width = 32
#height = 32
#formatsExcluded = 0x806,0x01a #breaks flashlight scene
#overwriteWidth = ($width/$gameWidth) * (32*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (32*$internalRes)
#
#[TextureRedefine] 
#width = 32
#height = 16
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($width/$gameWidth) * (32*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (16*$internalRes)
#
#[TextureRedefine] #
#width = 16
#height = 8
####formats = 0x008,0x80e # ,0x431,0x031
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806
#overwriteWidth = ($width/$gameWidth) * (16*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (8*$internalRes)

#[TextureRedefine] # breaks depth when scaling 1080
#width = 8
#height = 8
###formats = ,0x81e,0x80e # ,0x431,0x031
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806
#overwriteWidth = ($width/$gameWidth) * (8*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (8*$internalRes)
#
#[TextureRedefine] 
#width = 4
#height = 4
####formats = 0x81e,0x80e
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($width/$gameWidth) * (4*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (4*$internalRes)
#
#[TextureRedefine] 
#width = 1
#height = 1
####formats = 0x008,0x81e,0x01a
#formatsExcluded = 0x431,0x035,0x034,0x033,0x031
#overwriteWidth = ($width/$gameWidth) * (1*$internalRes)
#overwriteHeight = ($height/$gameHeight) * (1*$internalRes)