diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.audio_settings.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.audio_settings.xml
index 23bc0fb6..55a92dd3 100644
--- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.audio_settings.xml
+++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.audio_settings.xml
@@ -16,7 +16,8 @@
-
+
+
@@ -51,11 +52,20 @@
+
+
+
+
+
+
+
+
+
-
+
@@ -74,6 +84,7 @@
+
@@ -81,6 +92,7 @@
+
diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.video_settings.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.video_settings.xml
index d8aa1c70..fb8f6484 100644
--- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.video_settings.xml
+++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.video_settings.xml
@@ -9,20 +9,24 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -120,6 +124,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -141,6 +181,10 @@
+
+
+
+
@@ -154,5 +198,9 @@
+
+
+
+
diff --git a/tools/port_settings.py b/tools/port_settings.py
index c52e7089..885be9ca 100644
--- a/tools/port_settings.py
+++ b/tools/port_settings.py
@@ -23,16 +23,21 @@ VOLUMES = [(str(step), f"{step / 10:g}") for step in range(11)]
# each screen: its folder below PE, its screen's widget (the name the profile
# menu opens), its header (widget, bitmap), the row spacing, and its rows:
-# (label, setting, [(shown, value)], help, platform)
+# (label, setting, [(shown, value)], help, platform[, key]): key names the
+# row's widgets where two rows set one setting (one for each platform), else
+# the setting's name does
SCREENS = {
"video_settings": {
"screen": "video_settings_screen",
"header": ("header_profile_video_settings", f"{PE}/video_settings/header_profile_video_settings"),
- "spacing": 26,
+ # (closer than the other screens' rows, and the help lower, for all
+ # twelve places to fit above it)
+ "spacing": 24,
+ "help_top": 364,
# (rows in the place of the row before them: Window Size in
# Resolution's, port/linux/game/menu_functions.c showing the one the
- # display mode chosen uses)
- "same_place": ["display.window_size"],
+ # display mode chosen uses; Android's anti-aliasing in the desktop's)
+ "same_place": ["display.window_size", "anti_aliasing_android"],
"rows": [
("DISPLAY MODE:", "display.mode",
[("FULLSCREEN", "fullscreen"), ("BORDERLESS", "borderless"), ("WINDOWED", "windowed")],
@@ -62,6 +67,21 @@ SCREENS = {
"Draw the HUD from the high-res redraws; off\ndraws the game's own pictures.", None),
("HIGH-RES TEXT:", "display.high_res_text", ON_OFF,
"Draw text and titles with high-res fonts; off\ndraws the game's own.", None),
+ ("ANTI-ALIASING:", "display.anti_aliasing",
+ [("OFF", "off"), ("FXAA", "fxaa"), ("SMAA", "smaa"), ("SSAA 2X", "ssaa2x"), ("MSAA 2X", "msaa2x"),
+ ("MSAA 4X", "msaa4x"), ("MSAA 8X", "msaa8x")],
+ "Smooth jagged edges, which the Xbox did not. FXAA\nand SMAA are cheap; SSAA and MSAA are sharper.",
+ "desktop"),
+ ("ANTI-ALIASING:", "display.anti_aliasing",
+ [("OFF", "off"), ("FXAA", "fxaa"), ("MSAA 2X", "msaa2x"), ("MSAA 4X", "msaa4x")],
+ "Smooth jagged edges, which the Xbox did not. FXAA\nis cheap; MSAA is sharper.",
+ "android", "anti_aliasing_android"),
+ ("SHADOW RESOLUTION:", "display.shadow_resolution",
+ [("128", "128"), ("256", "256"), ("512", "512"), ("1024", "1024")],
+ "The size objects' shadows are drawn at: 128 as on\nthe Xbox; larger for smoother, as soft, edges.",
+ None),
+ ("PER-PIXEL LIGHTING:", "display.per_pixel_lighting", ON_OFF,
+ "Light models for each pixel, without the facets\nof the Xbox's lighting for each vertex.", None),
],
},
"mouse_settings": {
@@ -88,6 +108,8 @@ SCREENS = {
("MUSIC VOLUME:", "audio.music_volume", VOLUMES, "The music's volume.", None),
("EFFECTS VOLUME:", "audio.effects_volume", VOLUMES,
"The volume of every other sound: effects and\nspeech.", None),
+ ("REVERB:", "audio.reverb", ON_OFF,
+ "Echo sounds as the place you are in does, and\nmuffle those behind walls, as the Xbox did.", None),
("SOUND:", "audio.enabled", ON_OFF,
"Play sound at all; from the next time the game\nstarts.", None),
],
@@ -225,10 +247,10 @@ def _setting_screen(folder: str, spec: dict) -> list:
base = f"{PE}/{folder}"
rows, extra = [], []
place = -1
- for index, (label, setting, choices, _, platform) in enumerate(spec["rows"]):
- key = setting.split(".", 1)[1]
+ for index, (label, setting, choices, _, platform, *named) in enumerate(spec["rows"]):
+ key = named[0] if named else setting.split(".", 1)[1]
row = f"{base}/op_{key}"
- if setting not in spec.get("same_place", ()):
+ if setting not in spec.get("same_place", ()) and key not in spec.get("same_place", ()):
place += 1
rows.append((row, platform, place))
extra += _widget(row, [("width", 512), ("height", 28), ("flags", "pass_unhandled_to_focused_child"),
@@ -255,7 +277,7 @@ def _setting_screen(folder: str, spec: dict) -> list:
extra += _strings(f"{base}/labels", [label for label, *_ in spec["rows"]])
# (the help of the row whose label is string n is n + 1: the buttons' is 0)
extra += _strings(f"{base}/help_strings",
- [""] + [help_text.replace("\n", "\\n") for _, _, _, help_text, _ in spec["rows"]])
+ [""] + [help_text.replace("\n", "\\n") for _, _, _, help_text, *_ in spec["rows"]])
return _screen(folder, spec, rows, ["port settings help"], [], extra)