From 4860349e1e29b3cf240d992d53c5e0cd24bb7df0 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Fri, 25 Sep 2026 16:59:33 -0700 Subject: [PATCH] oskiewar: the Xbox wears the photographic materials and names every control The console ships the retained atlases, but main only turned them on when a page asked, so the Xbox fell back to vectors. It now defaults to the photographic theme (a host can still request flat). The legend names each control before it is pressed, as the idle-legend work on neo does. Co-Authored-By: Claude Opus 5.5 --- xbox/live/oskiewar.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js index 25b5f0f249..3f8d2f0eb1 100644 --- a/xbox/live/oskiewar.js +++ b/xbox/live/oskiewar.js @@ -10701,7 +10701,13 @@ function generatedPartColor(appearance, segment) { let photoThemeActive = false; let photoEffectsActive = false, photoWeaponsActive = false; function roundGraphicsTheme() { - return globalThis.__oskiewarGraphicsTheme === "photorealistic" ? "photorealistic" : "flat"; + const requested = globalThis.__oskiewarGraphicsTheme; + if (requested === "flat" || requested === "photorealistic") return requested; + // The console ships the retained atlases in its package, so it wears the + // photographic materials unless a host asks for vectors. + const caps = typeof capabilities === "function" ? capabilities() : {}; + return caps.platform === "xbox-uwp" || caps.platform === "xbox" + ? "photorealistic" : "flat"; } function refreshPhotoTheme() { photoThemeActive = roundGraphicsTheme() === "photorealistic" && @@ -12531,15 +12537,14 @@ function drawControlLegend(ink) { const dash = legendFighter.lastButton === "DASH" && runtime().monotonicUs - legendFighter.lastButtonAt < 700000; const controls = [ - ["LEFT", "ArrowLeft", directionActive("ArrowLeft") ? "MOVE" : ""], - ["RIGHT", "ArrowRight", dash ? "DASH >>" : - directionActive("ArrowRight") ? "MOVE" : ""], - ["STICK_UP", "ArrowUp", directionActive("ArrowUp") ? "AIR" : ""], - ["DOWN", "ArrowDown", directionActive("ArrowDown") ? "CROUCH" : ""], - ["A", "A", both ? "GRAB" : held.includes("A") ? "KICK" : ""], - ["B", "B", !both && held.includes("B") ? "PUNCH" : ""], - ["X", "X", held.includes("X") ? "SHIELD" : ""], - ["Y", "Y", held.includes("Y") ? "USE ITEM" : ""], + ["LEFT", "ArrowLeft", "MOVE"], + ["RIGHT", "ArrowRight", dash ? "DASH >>" : "MOVE"], + ["STICK_UP", "ArrowUp", "AIR"], + ["DOWN", "ArrowDown", "CROUCH"], + ["A", "A", both ? "GRAB" : "KICK"], + ["B", "B", both ? "GRAB" : itemMelee[heldItem(legendFighter)] || "PUNCH"], + ["X", "X", "SHIELD"], + ["Y", "Y", "USE ITEM"], ]; if (survivalActive()) controls.length = 4; const keyboard = keycapFamily(); -- 2.51.2