[Definition]
titleIds = 00050000101ED700,00050000101ED800,0005000010131D00
name = Game Resolution
path = "Tokyo Mirage Sessions FE/Graphics"
description = Changes the resolution of the game. Requires the latest update to use the ultrawide resolutions properly.||Made by getdls.
version = 7

[Default]
$width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$ultrawideCutsceneMode:int = 0
$ultrawideGUIScaling:int = 0
$disableAntiAliasing:int = 0


# TV Resolution

[Preset]
category = Resolution
name = 640x360
$width = 640
$height = 360

[Preset]
category = Resolution
name = 960x540
$width = 960
$height = 540

[Preset]
category = Resolution
name = 1280x720 (Default)
default = 1

[Preset]
category = Resolution
name = 1600x900
$width = 1600
$height = 900

[Preset]
category = Resolution
name = 1920x1080
$width = 1920
$height = 1080

[Preset]
category = Resolution
name = 2560x1440
$width = 2560
$height = 1440

[Preset]
category = Resolution
name = 3200x1800
$width = 3200
$height = 1800

[Preset]
category = Resolution
name = 3840x2160
$width = 3840
$height = 2160

[Preset]
category = Resolution
name = 5120x2880
$width = 5120
$height = 2880

[Preset]
category = Resolution
name = 7680x4320
$width = 7680
$height = 4320

[Preset]
category = Resolution
name = 1680x1050 (16:10)
$width = 1680
$height = 1050

[Preset]
category = Resolution
name = 1920x1200 (16:10)
$width = 1920
$height = 1200

[Preset]
category = Resolution
name = 2560x1080 (21:9)
$width = 2560
$height = 1080

[Preset]
category = Resolution
name = 3440x1440 (21:9)
$width = 3440
$height = 1440

[Preset]
category = Resolution
name = 5120x2160 (21:9)
$width = 5120
$height = 2160

[Preset]
category = Resolution
name = 3840x1080 (32:9)
$width = 3840
$height = 1080

[Preset]
category = Resolution
name = 5120x1440 (32:9)
$width = 5120
$height = 1440


# Ultrawide Cutscene Scaling

[Preset]
category = Ultrawide Cutscene Scaling
name = N/A
condition = 0
$ultrawideCutsceneMode:int = 0

[Preset]
category = Ultrawide Cutscene Scaling
name = Pillarbox Videos (Default)
condition = $width*9/16 != $height # Equals to "$width/$height != (16/9)" which is bugged in Cemu, since it'll be equal when the $width and $height is a 16:10 resolution
$ultrawideCutsceneMode:int = 1

[Preset]
category = Ultrawide Cutscene Scaling
name = Zoom Into Videos (loses video edges)
condition = $width*9/16 != $height
$ultrawideCutsceneMode:int = 2

[Preset]
category = Ultrawide Cutscene Scaling
name = None/Stretched Videos
condition = $width*9/16 != $height
$ultrawideCutsceneMode:int = 0


# Ultrawide GUI Scaling

[Preset]
category = Ultrawide GUI Scaling
name = N/A
condition = 0
default = 1
$ultrawideGUIScaling:int = 0

[Preset]
category = Ultrawide GUI Scaling
name = Scale (Default)
condition = $width*9/16 != $height
$ultrawideGUIScaling:int = 1

[Preset]
category = Ultrawide GUI Scaling
name = Stretch
condition = $width*9/16 != $height
$ultrawideGUIScaling:int = 0

# Anti Aliasing

[Preset]
category = Anti Aliasing
name = Enabled (Default, Recommended)
default = 1
$disableAntiAliasing:int = 0

[Preset]
category = Anti Aliasing
name = Disabled (jagged edges)
condition = $height <= 1080
$disableAntiAliasing:int = 1


[Preset]
category = Anti Aliasing
name = Disabled
condition = $height > 1080
$disableAntiAliasing:int = 1


# Improve texture banding by using texture formats with more depth

[TextureRedefine]
width = 1280
height = 720
formats = 0x816
overwriteFormat = 0x820

[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
overwriteFormat = 0x01f

[TextureRedefine]
width = 1280
height = 720
formats = 0x810
overwriteFormat = 0x81e

[TextureRedefine]
width = 640
height = 368
formats = 0x816
overwriteFormat = 0x820

[TextureRedefine]
width = 640
height = 360
formats = 0x816
overwriteFormat = 0x820

[TextureRedefine]
width = 640
height = 368
formats = 0x01a
overwriteFormat = 0x820

[TextureRedefine]
width = 320
height = 192
formats = 0x816
overwriteFormat = 0x820

[TextureRedefine]
width = 320
height = 180
formats = 0x816
overwriteFormat = 0x820

[TextureRedefine]
width = 160
height = 128
formats = 0x816
overwriteFormat = 0x820

[TextureRedefine]
width = 160
height = 120
formats = 0x816
overwriteFormat = 0x820


# Texture Redefines

[TextureRedefine]
width = 1280
height = 720
formats = 0x001,0x80e,0x816
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720

[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720

[TextureRedefine]
width = 1280
height = 340
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 340

[TextureRedefine]
width = 1014
height = 720
overwriteWidth = ($width/$gameWidth) * 1014
overwriteHeight = ($height/$gameHeight) * 720

[TextureRedefine]
width = 896
height = 480
formats = 0x001
overwriteWidth = ($width/$gameWidth) * 896
overwriteHeight = ($height/$gameHeight) * 480

[TextureRedefine] # Gamepad
width = 864
height = 480
overwriteWidth = ($width/$gameWidth) * 864
overwriteHeight = ($height/$gameHeight) * 480

[TextureRedefine] # Gamepad
width = 854
height = 480
overwriteWidth = ($width/$gameWidth) * 854
overwriteHeight = ($height/$gameHeight) * 480

[TextureRedefine] # Gamepad
width = 674
height = 574
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 674
overwriteHeight = ($height/$gameHeight) * 574

[TextureRedefine] # Gamepad
width = 657
height = 574
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 657
overwriteHeight = ($height/$gameHeight) * 574

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

[TextureRedefine]
width = 640
height = 368
#formats = 0x816,0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 368

[TextureRedefine]
width = 640
height = 360
#formats = 0x816,0x001
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 360

[TextureRedefine]
width = 320
height = 192
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 192

[TextureRedefine]
width = 320
height = 180
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180

[TextureRedefine]
width = 160
height = 128
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 128

[TextureRedefine]
width = 160
height = 120
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 120


#[TextureRedefine] # Shadows - Scaling broken
#width = 1024
#height = 2048
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 2048

#[TextureRedefine] # Shadows - Scaling broken
#width = 1024
#height = 1024
#formats = 0x011,0x811
#overwriteWidth = ($height/$gameHeight) * 1024
#overwriteHeight = ($height/$gameHeight) * 1024

#[TextureRedefine] # Don't scale
#width = 512
#height = 512
#formats = 0x01a # GUI bar + alpha nope
#overwriteWidth = 1024
#overwriteHeight = 1024

#[TextureRedefine] # Don't scale
#width = 128
#height = 1024
#formats = 0x034 # text + alpha
#overwriteWidth = 256
#overwriteHeight = 2048
