[BotW] Centered Ultrawide HUD option, Grass Culling Fix

Also massively shrinks down the size of the GUIScreens patch since I removed the unnecessary gunk.
This commit is contained in:
Crementif 2022-01-19 03:35:06 +01:00
parent f4442b352a
commit 4cdffcaef2
No known key found for this signature in database
GPG Key ID: 12BB8BD3EA30651E
5 changed files with 331 additions and 933 deletions

View File

@ -58,7 +58,7 @@ vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem0;
#if $ultrawideHUD == 1
#if $ultrawideHUDMode != 0
float uv_x = 0.5 + (R0f.x - 0.5) / aspectRatio;
R0f.xyzw = (texture(textureUnitPS0, vec2(uv_x, R0f.y)).xyzw);
#else
@ -95,7 +95,7 @@ PS1f = exp2(R127f.x);
R0f.z = PS1f;
// export
#if $ultrawideHUD == 1
#if $ultrawideHUDMode != 0
bool isBorder = uv_x < 0 || uv_x > 1.0;
passPixelColor0 = isBorder ? vec4(0.0) : R0f.xyzw;
#else

View File

@ -6,134 +6,31 @@ moduleMatches = 0xD91A406D,0x0F748D9C,0x9A61FF4C,0x8E3324A9,0xD71D859D,0x6FD41A6
aspectRatio:
.float $width/$height
grassCulling: ; The grass is calculated in a weird way, but this fix seems to work. So for safety, only enable it for ultrawide resolutions.
.float (($ultrawideHUDMode != 0)*(($gameWidth/$gameHeight) / ($width/$height))) + (($ultrawideHUDMode == 0)*1.0)
[BotW_AspectRatio_V33]
moduleMatches = 0xD91A406D
[BotW_AspectRatio_V208]
moduleMatches = 0x6267BFD0
; rodata constants
0x10197FC0 = .float $width/$height
0x102CCFC0 = .float $width/$height
0x10331374 = .float $width/$height
0x101BF8E8 = .float ($width/$height)
0x1030A57C = .float ($width/$height)
0x1036DD4C = .float ($width/$height)
; 3D Rendering In Inventory (calculated every load)
0x02CFC260 = lis r9, aspectRatio@ha
0x02CFC274 = lfs f4, aspectRatio@l(r9)
0x02E2C564 = lis r9, aspectRatio@ha
0x02E2C578 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AD410 = lis r28, aspectRatio@ha
0x036AD414 = lfs f12, aspectRatio@l(r28)
0x0386D01C = lis r28, aspectRatio@ha
0x0386D020 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V48]
moduleMatches = 0x0F748D9C
; Grass Culling (calculated every frame)
0x035b0a30 = lis r5, grassCulling@ha
0x035b0a38 = lfs f11, grassCulling@l(r5)
; rodata constants
0x10197FC0 = .float $width/$height
0x102CCFC8 = .float $width/$height
0x103313A4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFC2CC = lis r9, aspectRatio@ha
0x02CFC2E0 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AD81C = lis r28, aspectRatio@ha
0x036AD820 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V64]
moduleMatches = 0x9A61FF4C
; rodata constants
0x10198250 = .float $width/$height
0x102CD450 = .float $width/$height
0x1033182C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFD900 = lis r9, aspectRatio@ha
0x02CFD914 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AEF04 = lis r28, aspectRatio@ha
0x036AEF08 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V80]
moduleMatches = 0x8E3324A9
; rodata constants
0x1019A5A8 = .float $width/$height
0x102D4E30 = .float $width/$height
0x103391B4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D056C8 = lis r9, aspectRatio@ha
0x02D056DC = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036D0324 = lis r28, aspectRatio@ha
0x036D0328 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V97]
moduleMatches = 0xD71D859D
; rodata constants
0x1019F980 = .float $width/$height
0x102DF8A0 = .float $width/$height
0x1034122C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D2E65C = lis r9, aspectRatio@ha
0x02D2E670 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x03725CE8 = lis r28, aspectRatio@ha
0x03725CEC = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V112]
moduleMatches = 0x6FD41A61
; rodata constants
0x1019F9A8 = .float $width/$height
0x102DFB38 = .float $width/$height
0x103414D4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D2F404 = lis r9, aspectRatio@ha
0x02D2F418 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x03726E18 = lis r28, aspectRatio@ha
0x03726E1C = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V144]
moduleMatches = 0x9A2CA0C7
; rodata constants
0x101A8A70 = .float $width/$height
0x102ECFD0 = .float $width/$height
0x1034F6CC = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D53CF4 = lis r9, aspectRatio@ha
0x02D53D08 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0375B128 = lis r28, aspectRatio@ha
0x0375B12C = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V160]
moduleMatches = 0x9A2CA0C7
; rodata constants
0x101A8A70 = .float $width/$height
0x102ECF88 = .float $width/$height
0x1034F684 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D53CF4 = lis r9, aspectRatio@ha
0x02D53D08 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0375AFF4 = lis r28, aspectRatio@ha
0x0375AFF8 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
@ -151,18 +48,130 @@ moduleMatches = 0xFD091F9F,0xD472D8A5
0x0386C314 = lis r28, aspectRatio@ha
0x0386C318 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V208]
moduleMatches = 0x6267BFD0
[BotW_AspectRatio_V160]
moduleMatches = 0x9A2CA0C7
; rodata constants
0x101BF8E8 = .float $width/$height
0x1030A57C = .float $width/$height
0x1036DD4C = .float $width/$height
0x101A8A70 = .float $width/$height
0x102ECF88 = .float $width/$height
0x1034F684 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02E2C564 = lis r9, aspectRatio@ha
0x02E2C578 = lfs f4, aspectRatio@l(r9)
0x02D53CF4 = lis r9, aspectRatio@ha
0x02D53D08 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0386D01C = lis r28, aspectRatio@ha
0x0386D020 = lfs f12, aspectRatio@l(r28)
0x0375AFF4 = lis r28, aspectRatio@ha
0x0375AFF8 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V144]
moduleMatches = 0x9A2CA0C7
; rodata constants
0x101A8A70 = .float $width/$height
0x102ECFD0 = .float $width/$height
0x1034F6CC = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D53CF4 = lis r9, aspectRatio@ha
0x02D53D08 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0375B128 = lis r28, aspectRatio@ha
0x0375B12C = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V112]
moduleMatches = 0x6FD41A61
; rodata constants
0x1019F9A8 = .float $width/$height
0x102DFB38 = .float $width/$height
0x103414D4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D2F404 = lis r9, aspectRatio@ha
0x02D2F418 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x03726E18 = lis r28, aspectRatio@ha
0x03726E1C = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V97]
moduleMatches = 0xD71D859D
; rodata constants
0x1019F980 = .float $width/$height
0x102DF8A0 = .float $width/$height
0x1034122C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D2E65C = lis r9, aspectRatio@ha
0x02D2E670 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x03725CE8 = lis r28, aspectRatio@ha
0x03725CEC = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V80]
moduleMatches = 0x8E3324A9
; rodata constants
0x1019A5A8 = .float $width/$height
0x102D4E30 = .float $width/$height
0x103391B4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D056C8 = lis r9, aspectRatio@ha
0x02D056DC = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036D0324 = lis r28, aspectRatio@ha
0x036D0328 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V64]
moduleMatches = 0x9A61FF4C
; rodata constants
0x10198250 = .float $width/$height
0x102CD450 = .float $width/$height
0x1033182C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFD900 = lis r9, aspectRatio@ha
0x02CFD914 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AEF04 = lis r28, aspectRatio@ha
0x036AEF08 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V48]
moduleMatches = 0x0F748D9C
; rodata constants
0x10197FC0 = .float $width/$height
0x102CCFC8 = .float $width/$height
0x103313A4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFC2CC = lis r9, aspectRatio@ha
0x02CFC2E0 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AD81C = lis r28, aspectRatio@ha
0x036AD820 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V33]
moduleMatches = 0xD91A406D
; rodata constants
0x10197FC0 = .float $width/$height
0x102CCFC0 = .float $width/$height
0x10331374 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFC260 = lis r9, aspectRatio@ha
0x02CFC274 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AD410 = lis r28, aspectRatio@ha
0x036AD414 = lfs f12, aspectRatio@l(r28)

View File

@ -52,7 +52,7 @@ copySubPanelStringLen:
_scalePaneGUI:
mflr r0
li r10, $ultrawideHUD
li r10, $ultrawideHUDMode
cmpwi r10, 0
beq exitScale
@ -488,6 +488,11 @@ addi r10, r10, scr_ChallengeWin_00@l
bla _compareString
beq scaleInOutScreenToRightSide
lis r10, scr_EnergyMeterDLC_00@ha
addi r10, r10, scr_EnergyMeterDLC_00@l
bla _compareString
beq scaleEnergyMeterDLCPanes
; lis r10, scr_Message_00@ha
; addi r10, r10, scr_Message_00@l
; bla _compareString
@ -577,27 +582,27 @@ addi r5, r31, 0x80
lis r10, str_N_State_00@ha
addi r10, r10, str_N_State_00@l
bla _compareString
beq scalePaneToLeftSide
beq scalePaneToLeftSideIf
lis r10, str_Pa_SinJu_00@ha
addi r10, r10, str_Pa_SinJu_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_Pa_SinJu_01@ha
addi r10, r10, str_Pa_SinJu_01@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_Pa_SinJu_02@ha
addi r10, r10, str_Pa_SinJu_02@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_Pa_SinJu_03@ha
addi r10, r10, str_Pa_SinJu_03@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_Pa_SinJu_03@ha
addi r10, r10, str_Pa_SinJu_03@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
const_SensorsOffset:
@ -609,7 +614,7 @@ lfs f12, const_SensorsOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
scaleSoundMeterPanes:
addi r5, r31, 0x80
@ -618,7 +623,7 @@ lfs f12, const_SensorsOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
scaleTempMeterPanes:
addi r5, r31, 0x80
@ -627,7 +632,7 @@ lfs f12, const_SensorsOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
const_TimeOffset:
.float 342*0.85
@ -638,14 +643,14 @@ lfs f12, const_TimeOffset@l(r10)
lis r10, str_N_All_00@ha
addi r10, r10, str_N_All_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
scaleMainScreenWeatherPanes:
addi r5, r31, 0x80
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
scaleMainScreenInformationTextPanes:
addi r5, r31, 0x80
@ -682,7 +687,7 @@ addi r5, r31, 0x80
lis r10, str_Pa_LocationNameS_00@ha
addi r10, r10, str_Pa_LocationNameS_00@l
bla _compareString
beq scalePaneToLeftSide
beq scalePaneToLeftSideIf
b exitScale
scaleMainScreenBossGaugePanes:
addi r5, r31, 0x80
@ -733,7 +738,7 @@ addi r5, r31, 0x80
lis r10, str_Pa_LocationNameS_00@ha
addi r10, r10, str_Pa_LocationNameS_00@l
bla _compareString
beq scalePaneToLeftSide
beq scalePaneToLeftSideIf
lis r10, str_Pa_Message_00@ha
addi r10, r10, str_Pa_Message_00@l
bla _compareString
@ -749,7 +754,7 @@ addi r5, r31, 0x80
lis r10, str_N_In_00@ha
addi r10, r10, str_N_In_00@l
bla _compareString
beq scalePaneToLeftSide
beq scalePaneToLeftSideIf
b exitScale
scaleSpiritOrbPanes:
@ -757,11 +762,11 @@ addi r5, r31, 0x80
lis r10, str_W_Base_00@ha
addi r10, r10, str_W_Base_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_Time_00@ha
addi r10, r10, str_T_Time_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
scaleSimpleItemGetPanes:
@ -783,35 +788,35 @@ addi r5, r31, 0x80
lis r10, str_W_Base_00@ha
addi r10, r10, str_W_Base_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_Num_00@ha
addi r10, r10, str_T_Num_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_Time_00@ha
addi r10, r10, str_T_Time_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_Rupee_00@ha
addi r10, r10, str_T_Rupee_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_KeyNum_00@ha
addi r10, r10, str_T_KeyNum_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_P_Icon_00@ha
addi r10, r10, str_P_Icon_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_N_Icon_00@ha
addi r10, r10, str_N_Icon_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_P_KologNuts_00@ha
addi r10, r10, str_P_KologNuts_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
const_ItemGetPlusMinusOffset:
@ -823,7 +828,7 @@ lfs f12, const_ItemGetPlusMinusOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
scaleItemGetNoPanes:
@ -831,7 +836,7 @@ addi r5, r31, 0x80
lis r10, str_N_Capture_00@ha
addi r10, r10, str_N_Capture_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b continueSimpleItemGetPanes
scaleWolfLinkHeartPanes:
@ -854,11 +859,11 @@ addi r5, r31, 0x80
lis r10, str_P_Sh_00@ha
addi r10, r10, str_P_Sh_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_P_Illust_00@ha
addi r10, r10, str_P_Illust_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
const_WolfHeartOffset:
@ -868,13 +873,13 @@ addi r5, r31, 0x80
lis r10, str_T_Name_00@ha
addi r10, r10, str_T_Name_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, const_WolfHeartOffset@ha
lfs f12, const_WolfHeartOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
scaleMainScreenMasterSwordPanes:
@ -979,7 +984,7 @@ addi r5, r31, 0x80
lis r10, str_N_MainAll_00@ha ; scales the DPAD guide on the right
addi r10, r10, str_N_MainAll_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_N_Cut_00@ha ; scales the item/rune selection bar
addi r10, r10, str_N_Cut_00@l
bla _compareString
@ -1258,7 +1263,7 @@ lfs f12, const_590@l(r10)
lis r10, str_Pa_PickUpWin_00@ha
addi r10, r10, str_Pa_PickUpWin_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
scaleRuneGuidePanes:
@ -1409,19 +1414,19 @@ addi r5, r31, 0x80
lis r10, str_W_Base_00@ha
addi r10, r10, str_W_Base_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_Text_00@ha
addi r10, r10, str_T_Text_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_T_Text_00_JPja@ha
addi r10, r10, str_T_Text_00_JPja@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_N_GuideOn_00@ha
addi r10, r10, str_N_GuideOn_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
scaleCursorPanes:
@ -1553,7 +1558,7 @@ beq scaleOnlyPos
lis r10, str_Pa_RotateGuide_00@ha
addi r10, r10, str_Pa_RotateGuide_00@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_N_State_00@ha
addi r10, r10, str_N_State_00@l
bla _compareString
@ -1715,11 +1720,11 @@ lfs f12, const_SkipButtonOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
lis r10, str_N_Glow_00@ha
addi r10, r10, str_N_Glow_00@l
bla _compareString
beq scalePaneAndKeepCustomPos
beq scalePaneAndKeepCustomPosIf
b exitScale
scaleLoadSaveIconPanes:
@ -2115,11 +2120,11 @@ addi r5, r31, 0x80
lis r10, str_N_Region_01@ha
addi r10, r10, str_N_Region_01@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
lis r10, str_N_Region_01_JPja@ha
addi r10, r10, str_N_Region_01_JPja@l
bla _compareString
beq scalePaneAndKeepPos
beq scalePaneAndKeepPosIf
b exitScale
scaleMessageTipsPanes:
@ -2150,6 +2155,19 @@ bla _compareString
beq scalePaneNormal
b exitScale
const_EnergyMeterOffset:
.float 392
scaleEnergyMeterDLCPanes:
addi r5, r31, 0x80
lis r10, const_EnergyMeterOffset@ha
lfs f12, const_EnergyMeterOffset@l(r10)
lis r10, str_N_InOut_00@ha
addi r10, r10, str_N_InOut_00@l
bla _compareString
beq scalePaneNormal
b exitScale
; ------------------------------------------------------------------------------------------
; Generic methods used to scale a specific pane type
@ -2286,6 +2304,12 @@ fadds f0, f0, f9
stfs f0, 0x1C(r31)
b exitScale
scalePaneToLeftSideIf:
li r10, $ultrawideHUDMode
cmpwi r10, 1
beq scalePaneToLeftSide
bne scalePaneNormal
movePaneToLeftSide:
lis r10, const_PaddingLeftSide@ha
lfs f9, const_PaddingLeftSide@l(r10)
@ -2445,6 +2469,11 @@ fsubs f0, f11, f0
stfs f0, 0x1C(r31)
b exitScale
scalePaneAndKeepPosIf:
li r10, $ultrawideHUDMode
cmpwi r10, 1
beq scalePaneAndKeepPos
bne scalePaneAndPos
moveKeepPos:
lis r10, const_0@ha
@ -2473,6 +2502,12 @@ stfs f0, 0x1C(r31)
b exitScale
; Pass custom pos as f12
scalePaneAndKeepCustomPosIf:
li r10, $ultrawideHUDMode
cmpwi r10, 1
beq scalePaneAndKeepCustomPos
bne scalePaneAndCenterCustomPos
scalePaneAndKeepCustomPos:
lis r10, const_AspectRatio@ha
lfs f0, const_AspectRatio@l(r10)
@ -2509,6 +2544,45 @@ fsubs f0, f0, f12
stfs f0, 0x1C(r31)
b exitScale
; todo: currently broken for left-sided elements
scalePaneAndCenterCustomPos:
lis r10, const_AspectRatio@ha
lfs f0, const_AspectRatio@l(r10)
lfs f9, 0x34(r31)
fmuls f0, f0, f9
stfs f0, 0x34(r31)
; [XPositionOfPane] + ((1280/2 - [XPositionOfPane]) * (1-[AspectRatio])))
lis r10, const_0@ha
lfs f11, const_0@l(r10)
lfs f9, 0x1C(r31)
fcmpu f9, f11
lis r10, const_640@ha
lfs f0, const_640@l(r10)
lfs f9, 0x1C(r31)
bge .+0x08
fsubs f9, f11, f9
fsubs f0, f0, f9
lis r10, const_1@ha
lfs f13, const_1@l(r10)
lis r10, const_AspectRatio@ha
lfs f9, const_AspectRatio@l(r10)
fsubs f13, f13, f9
fmuls f0, f0, f13
lfs f9, 0x1C(r31)
bge .+0x08
fsubs f9, f11, f9
fadds f0, f9, f0
bge .+0x08
fsubs f0, f11, f0
stfs f0, 0x1C(r31)
lis r10, const_640@ha
lfs f11, const_640@l(r10)
fsubs f0, f0, f11
stfs f0, 0x1C(r31)
b exitScale
movePaneToCustomSize:
lis r10, const_AspectRatio@ha
lfs f0, const_AspectRatio@l(r10)
@ -2611,8 +2685,15 @@ lfs f0, const_AspectRatio@l(r10)
lfs f9, 0x34(r31)
fmuls f0, f0, f9
stfs f0, 0x34(r31)
; if the ultrawide mode is 1 (edge HUD), add padding so that the map gets initialized at the right edge
li r10, $ultrawideHUDMode
cmpwi r4, 1
lis r10, const_0@ha
lfs f9, const_0@l(r10)
bne noMapPadding
lis r10, const_PaddingRightSide@ha
lfs f9, const_PaddingRightSide@l(r10)
noMapPadding:
lfs f0, 0x1C(r31)
fadds f0, f0, f9
stfs f0, 0x1C(r31)
@ -2623,10 +2704,14 @@ stw r5, mapXPositionAddr@l(r10)
b exitScale
setMapPosition:
li r4, $ultrawideHUD
li r4, $ultrawideHUDMode
cmpwi r4, 0
beq setNothing
li r4, $ultrawideHUDMode ; if ultramode is centered, keep the map centered
cmpwi r4, 2
beq setToMap
cmpwi r31, 0
beq setToMinimap
@ -2680,7 +2765,8 @@ mr r6, r12
mr r8, r10
mflr r0
li r10, $ultrawideHUD
; if ultrawide mode is set to 0, return early
li r10, $ultrawideHUDMode
cmpwi r10, 0
beq exitPaneBasedProjection

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,8 @@ $gameWidth = 1280
$gameHeight = 720
$aspectRatioWidth = 16
$aspectRatioHeight = 9
$ultrawideHUD:int = 0
$showUltrawideOptions:int = 0
$ultrawideHUDMode:int = 0
$fxaa:int = 1
$shadowRes = 1
$subPix:int = 1.0
@ -30,52 +31,62 @@ $shadowFarEnd = 1.0
[Preset]
name = 16:9 (Default)
category = Aspect Ratio
$aspectRatioWidth = 16
$aspectRatioHeight = 9
$showUltrawideOptions:int = 0
$ultrawideHUDMode:int = 0
[Preset]
name = 16:10
category = Aspect Ratio
$aspectRatioWidth = 16
$aspectRatioHeight = 10
$showUltrawideOptions:int = 0
$ultrawideHUDMode:int = 0
[Preset]
name = 21:9
category = Aspect Ratio
$aspectRatioWidth = 21
$aspectRatioHeight = 9
$ultrawideHUD:int = 1
$showUltrawideOptions:int = 1
[Preset]
name = 32:9
category = Aspect Ratio
$aspectRatioWidth = 32
$aspectRatioHeight = 9
$ultrawideHUD:int = 1
$showUltrawideOptions:int = 1
[Preset]
name = 32:10
category = Aspect Ratio
$aspectRatioWidth = 32
$aspectRatioHeight = 10
$ultrawideHUD:int = 1
$showUltrawideOptions:int = 1
[Preset]
name = 48:9
category = Aspect Ratio
$aspectRatioWidth = 48
$aspectRatioHeight = 9
$ultrawideHUD:int = 1
$showUltrawideOptions:int = 1
[Preset]
name = 4:3
category = Aspect Ratio
$aspectRatioWidth = 4
$aspectRatioHeight = 3
$showUltrawideOptions:int = 0
$ultrawideHUDMode:int = 0
[Preset]
name = 5:4
category = Aspect Ratio
$aspectRatioWidth = 5
$aspectRatioHeight = 4
$showUltrawideOptions:int = 0
$ultrawideHUDMode:int = 0
# 16:9 Resolutions
@ -340,6 +351,20 @@ condition = ((($aspectRatioWidth - 48) == 0) + (($aspectRatioHeight - 9) == 0))
$width = 5760
$height = 1080
[Preset]
name = 7680x1440
category = Resolution
condition = ((($aspectRatioWidth - 48) == 0) + (($aspectRatioHeight - 9) == 0)) == 2
$width = 7680
$height = 1440
[Preset]
name = 11520x2160
category = Resolution
condition = ((($aspectRatioWidth - 48) == 0) + (($aspectRatioHeight - 9) == 0)) == 2
$width = 11520
$height = 2160
# 4:3 Resolutions
[Preset]
@ -407,6 +432,27 @@ condition = ((($aspectRatioWidth - 5) == 0) + (($aspectRatioHeight - 4) == 0)) =
$width = 14400
$height = 2700
# Ultrawide Mode Options
[Preset]
name = Edge HUD (Default)
category = Ultrawide HUD Mode
condition = $showUltrawideOptions == 1
$ultrawideHUDMode:int = 1
default = 1
[Preset]
name = Centered HUD
category = Ultrawide HUD Mode
condition = $showUltrawideOptions == 1
$ultrawideHUDMode:int = 2
[Preset]
name = No HUD Fixes (stretched HUD)
condition = $showUltrawideOptions == 1
category = Ultrawide HUD Mode
$ultrawideHUDMode:int = 0
# Anti-Aliasing
[Preset]
@ -451,6 +497,7 @@ name = Extreme (400%, Unstable)
category = Shadows
$shadowRes = 4
# Shadow Draw Distance
[Preset]
category = Shadow Draw Distance
@ -492,6 +539,9 @@ $shadowNearbyEnd = 1.4
$shadowFarStart = 1.4
$shadowFarEnd = 1.55
# Texture Changes
# All 720p textures:
# - 0x001=World Lighting Red8
# - 0x005=Link and Objects Depth