From 12e3344b074d171b9b71ae7b743afcc84c7f0d03 Mon Sep 17 00:00:00 2001 From: prompt.ac/@jeffrey Date: Fri, 07 Aug 2026 20:56:25 +0000 Subject: [PATCH] Archive native Xbox v11 builds --- xbox/builds/1.0.0.22/Microsoft.VCLibs.x64.14.00.appx | 0 xbox/builds/1.0.0.22/NativeBios_1.0.0.22_x64.msix | 0 xbox/builds/1.0.0.23/Microsoft.VCLibs.x64.14.00.appx | 0 xbox/builds/1.0.0.23/NativeBios_1.0.0.23_x64.msix | 0 xbox/builds/1.0.0.24/Microsoft.VCLibs.x64.14.00.appx | 0 xbox/builds/1.0.0.24/NativeBios_1.0.0.24_x64.msix | 0 xbox/builds/1.0.0.25/Microsoft.VCLibs.x64.14.00.appx | 0 xbox/builds/1.0.0.25/NativeBios_1.0.0.25_x64.msix | 0 xbox/builds/1.0.0.25/photo-disc-screen.png | 0 xbox/builds/1.0.0.26/Microsoft.VCLibs.x64.14.00.appx | 0 xbox/builds/1.0.0.26/NativeBios_1.0.0.26_x64.msix | 0 xbox/builds/1.0.0.27/Microsoft.VCLibs.x64.14.00.appx | 0 xbox/builds/1.0.0.27/NativeBios_1.0.0.27_x64.msix | 0 xbox/builds/1.0.0.27/photo-disc-2-scan.png | 0 xbox/builds/1.0.0.27/photo-disc-live.png | 0 xbox/builds/1.0.0.27/photo-disc-restored.png | 0 xbox/builds/1.0.0.27/photo-disc-second-probe.png | 0 xbox/live/hello.js | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 18 file(s) changed, 170 insertion(s)(+), 5 deletion(s)(-) diff --git a/xbox/builds/1.0.0.22/Microsoft.VCLibs.x64.14.00.appx b/xbox/builds/1.0.0.22/Microsoft.VCLibs.x64.14.00.appx new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.22/Microsoft.VCLibs.x64.14.00.appx diff --git a/xbox/builds/1.0.0.22/NativeBios_1.0.0.22_x64.msix b/xbox/builds/1.0.0.22/NativeBios_1.0.0.22_x64.msix new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.22/NativeBios_1.0.0.22_x64.msix diff --git a/xbox/builds/1.0.0.23/Microsoft.VCLibs.x64.14.00.appx b/xbox/builds/1.0.0.23/Microsoft.VCLibs.x64.14.00.appx new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.23/Microsoft.VCLibs.x64.14.00.appx diff --git a/xbox/builds/1.0.0.23/NativeBios_1.0.0.23_x64.msix b/xbox/builds/1.0.0.23/NativeBios_1.0.0.23_x64.msix new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.23/NativeBios_1.0.0.23_x64.msix diff --git a/xbox/builds/1.0.0.24/Microsoft.VCLibs.x64.14.00.appx b/xbox/builds/1.0.0.24/Microsoft.VCLibs.x64.14.00.appx new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.24/Microsoft.VCLibs.x64.14.00.appx diff --git a/xbox/builds/1.0.0.24/NativeBios_1.0.0.24_x64.msix b/xbox/builds/1.0.0.24/NativeBios_1.0.0.24_x64.msix new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.24/NativeBios_1.0.0.24_x64.msix diff --git a/xbox/builds/1.0.0.25/Microsoft.VCLibs.x64.14.00.appx b/xbox/builds/1.0.0.25/Microsoft.VCLibs.x64.14.00.appx new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.25/Microsoft.VCLibs.x64.14.00.appx diff --git a/xbox/builds/1.0.0.25/NativeBios_1.0.0.25_x64.msix b/xbox/builds/1.0.0.25/NativeBios_1.0.0.25_x64.msix new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.25/NativeBios_1.0.0.25_x64.msix diff --git a/xbox/builds/1.0.0.25/photo-disc-screen.png b/xbox/builds/1.0.0.25/photo-disc-screen.png new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.25/photo-disc-screen.png diff --git a/xbox/builds/1.0.0.26/Microsoft.VCLibs.x64.14.00.appx b/xbox/builds/1.0.0.26/Microsoft.VCLibs.x64.14.00.appx new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.26/Microsoft.VCLibs.x64.14.00.appx diff --git a/xbox/builds/1.0.0.26/NativeBios_1.0.0.26_x64.msix b/xbox/builds/1.0.0.26/NativeBios_1.0.0.26_x64.msix new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.26/NativeBios_1.0.0.26_x64.msix diff --git a/xbox/builds/1.0.0.27/Microsoft.VCLibs.x64.14.00.appx b/xbox/builds/1.0.0.27/Microsoft.VCLibs.x64.14.00.appx new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.27/Microsoft.VCLibs.x64.14.00.appx diff --git a/xbox/builds/1.0.0.27/NativeBios_1.0.0.27_x64.msix b/xbox/builds/1.0.0.27/NativeBios_1.0.0.27_x64.msix new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.27/NativeBios_1.0.0.27_x64.msix diff --git a/xbox/builds/1.0.0.27/photo-disc-2-scan.png b/xbox/builds/1.0.0.27/photo-disc-2-scan.png new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.27/photo-disc-2-scan.png diff --git a/xbox/builds/1.0.0.27/photo-disc-live.png b/xbox/builds/1.0.0.27/photo-disc-live.png new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.27/photo-disc-live.png diff --git a/xbox/builds/1.0.0.27/photo-disc-restored.png b/xbox/builds/1.0.0.27/photo-disc-restored.png new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.27/photo-disc-restored.png diff --git a/xbox/builds/1.0.0.27/photo-disc-second-probe.png b/xbox/builds/1.0.0.27/photo-disc-second-probe.png new file mode 100644 --- /dev/null +++ b/xbox/builds/1.0.0.27/photo-disc-second-probe.png diff --git a/xbox/live/hello.js b/xbox/live/hello.js --- a/xbox/live/hello.js +++ b/xbox/live/hello.js @@ -1,10 +1,175 @@ -function boot() {} -function sim() {} +let startedAt = 0; +let lastButton = "NONE"; +let lastButtonAt = -10000000; +let previousDown = []; +const history = []; +const floorY = 770; +const player = { x: 960, y: floorY, vx: 0, vy: 0, grounded: true }; +let lastSimAt = 0; + +const label = (button) => ({ + ArrowUp: "DPAD UP", + ArrowDown: "DPAD DOWN", + ArrowLeft: "DPAD LEFT", + ArrowRight: "DPAD RIGHT", + LeftShoulder: "LB", + RightShoulder: "RB", + LeftThumb: "LEFT STICK", + RightThumb: "RIGHT STICK", + View: "VIEW", + Menu: "MENU", +}[button] || String(button).toUpperCase()); + +function remember(button) { + const now = runtime().monotonicUs; + const next = label(button); + if (next === lastButton && now - lastButtonAt < 100000) return; + lastButton = next; + lastButtonAt = now; + history.unshift(next); + while (history.length > 6) history.pop(); + telemetry("OSKIE_BUTTON", next); +} + +function boot() { + startedAt = runtime().monotonicUs; + lastSimAt = startedAt; +} + +function sim() { + const now = runtime().monotonicUs; + const dt = Math.min(0.04, Math.max(0.001, (now - lastSimAt) / 1000000)); + lastSimAt = now; + const down = gamepad().down; + for (const button of down) { + if (!previousDown.includes(button)) remember(button); + } + + const direction = (down.includes("ArrowRight") ? 1 : 0) - + (down.includes("ArrowLeft") ? 1 : 0); + player.vx += direction * 1900 * dt; + if (!direction) player.vx *= Math.exp(-7.5 * dt); + player.vx = Math.max(-560, Math.min(560, player.vx)); + + const jumpPressed = down.includes("ArrowUp") && !previousDown.includes("ArrowUp"); + if (jumpPressed && player.grounded) { + player.vy = -850; + player.grounded = false; + synth(660, 0.045); + } + + player.vy += 1900 * dt; + player.x += player.vx * dt; + player.y += player.vy * dt; + + if (player.x < 135) { + player.x = 135; + player.vx = Math.abs(player.vx) * 0.28; + } else if (player.x > 1785) { + player.x = 1785; + player.vx = -Math.abs(player.vx) * 0.28; + } + if (player.y >= floorY) { + player.y = floorY; + player.vy = 0; + player.grounded = true; + } + + previousDown = down.slice(); +} + +function circle(x, y, radius, r, g, b) { + let lastX = x + radius; + let lastY = y; + for (let i = 1; i <= 12; i++) { + const angle = i * Math.PI * 2 / 12; + const nextX = x + Math.cos(angle) * radius; + const nextY = y + Math.sin(angle) * radius; + line(lastX, lastY, nextX, nextY, 7, r, g, b); + lastX = nextX; + lastY = nextY; + } +} + +function drawRunner(t) { + const speed = Math.min(1, Math.abs(player.vx) / 360); + const facing = player.vx < -5 ? -1 : 1; + const stride = Math.sin(t * (7 + speed * 9)) * 25 * speed; + const lean = facing * speed * 11; + const x = player.x; + const feet = player.y; + const hipX = x; + const hipY = feet - 43; + const neckX = x + lean; + const neckY = feet - 92; + const headX = neckX + lean * 0.25; + const headY = feet - 116; + const color = [255, 232, 92]; + + circle(headX, headY, 17, color[0], color[1], color[2]); + line(neckX, neckY, hipX, hipY, 8, color[0], color[1], color[2]); + + if (player.grounded) { + const leftFootX = x + stride; + const rightFootX = x - stride; + line(hipX, hipY, x - 10 + stride * 0.45, feet - 20, 8, ...color); + line(x - 10 + stride * 0.45, feet - 20, leftFootX, feet, 8, ...color); + line(hipX, hipY, x + 10 - stride * 0.45, feet - 20, 8, ...color); + line(x + 10 - stride * 0.45, feet - 20, rightFootX, feet, 8, ...color); + } else { + line(hipX, hipY, x - 25, feet - 24, 8, ...color); + line(x - 25, feet - 24, x - 5, feet - 8, 8, ...color); + line(hipX, hipY, x + 24, feet - 32, 8, ...color); + line(x + 24, feet - 32, x + 38, feet - 14, 8, ...color); + } + + const armSwing = player.grounded ? -stride * 0.72 : 22; + line(neckX, neckY + 8, x - 19 + armSwing, feet - 67, 7, ...color); + line(x - 19 + armSwing, feet - 67, x - 7 + armSwing, feet - 47, 7, ...color); + line(neckX, neckY + 8, x + 19 - armSwing, feet - 67, 7, ...color); + line(x + 19 - armSwing, feet - 67, x + 7 - armSwing, feet - 47, 7, ...color); +} + function paint() { - wipe(30, 35, 90); - write("HELLO XBOX", 120, 120, 96); + const run = runtime(); + const pad = gamepad(); + const t = (run.monotonicUs - startedAt) / 1000000; + const helloX = 480 + Math.sin(t * 1.15) * 180; + const helloY = 74 + Math.sin(t * 2.1) * 18; + const glow = Math.round(35 + (Math.sin(t * 2.7) + 1) * 28); + const age = (run.monotonicUs - lastButtonAt) / 1000000; + const pulse = Math.max(0, 1 - age * 2.2); + + wipe(8, 10, 36); + for (let i = 0; i < 8; i++) { + const x = ((i * 310 + t * (38 + i * 3)) % 2300) - 190; + box(x, 0, 5, 1080, 20 + i * 3, 32 + i * 4, 72 + i * 6); + } + + box(helloX - 34, helloY - 28, 910, 166, 18, 24, 66 + glow); + write("HELLO OSKIE", helloX, helloY, 112, 245, 248, 255); + + box(95, 260, 1730, 530, 11, 14, 31); + box(115, floorY, 1690, 20, 72, 90, 125); + box(115, 310, 20, floorY - 310, 72, 90, 125); + box(1785, 310, 20, floorY - 310, 72, 90, 125); + drawRunner(t); + + box(210, 830, 1500, 180, 14 + Math.round(pulse * 22), + 20 + Math.round(pulse * 24), 54 + Math.round(pulse * 45)); + write("BUTTON", 260, 858, 28, 125, 205, 255); + write(lastButton, 260, 910, 62 + Math.round(pulse * 12), 255, 235, 115); + + const held = pad.down.length ? pad.down.map(label).join(" ") : "NONE"; + write("HELD " + held, 940, 866, 28, 205, 218, 235); + write(history.length ? history.join(" / ") : "WAITING", 940, 930, 22, + 145, 172, 210); } + function act(button) { - synth(button === "Y" ? 880 : 550, 0.05); + remember(button); + const notes = { A: 440, B: 523.25, X: 659.25, Y: 783.99 }; + synth(notes[button] || 330, 0.06); } + function leave() {} -- tangled.sh