Skip to content

feat(site): add Nintendo 3DS and PS Vita hero demos - #403

Merged
doodlewind merged 8 commits into
mainfrom
aromatic-spear
Sep 11, 2026
Merged

feat(site): add Nintendo 3DS and PS Vita hero demos#403
doodlewind merged 8 commits into
mainfrom
aromatic-spear

Conversation

@doodlewind

@doodlewind doodlewind commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

The homepage hero includes a white New Nintendo 3DS KTR-001 (standard size, not LL/XL) and black PS Vita PCH-2000, with PSPMAN first in the existing four-case strip. The Motion chapter retains its PSP. Both exterior models are authored in Blender from manufacturer dimensions and credited physical-device photographs. Editable .blend scenes retain individual components, materials, cameras and studio lights; the web GLBs batch static parts by material.

The 3DS includes both screen sizes, removable plates, colored buttons, circle pad and C-stick, speakers, cameras, sliders, ports and shoulder controls. Its upper assembly follows Lid_Hinge, with a saved Lid_OpenClose action; the homepage presents it at 155° open. The Vita includes its curved shell, glass lens, controls, cameras, speakers, micro-USB and card covers, rear touch pad and printed pattern. Its four front corners have concave reliefs: L/R fill the upper chassis pockets below the front lip, while the lower corners retain curved strap bridges around open passages. The corner geometry follows 4Gamer's PCH-2000 teardown close-ups. Small-feature placements and material values are estimated from photographs; these are exterior reconstructions, not scans or internal hardware models.

The 3DS runs the existing Contacts demo with independent 400×240 and 320×240 outputs: selecting a contact on the lower screen updates the upper card, and dragging scrolls the list. Vita runs the motion studies at 960×544. The browser host uses the auxiliary root, framebuffer and hit tests now provided by main; its initialization option and imperative surface-creation method share the same state and reset lifetime; each new device owns an AppInstance, and previews pause outside the viewport. The shared PSP Stage remains in use in the Motion chapter, with its markup unchanged. The hero captions read Nintendo 3DS and PS Vita. Dragging the shell rotates either device. The captions contain only the names. Lid icons, view menus, angle sliders and demo subtitles are removed; loading and accessibility labels use the same short device names.

The hero keeps its heading, copy, CTA row, background video and case strip. Three review compositions use the same live models: /?hero=cascade (angled, upper-left/lower-right), /?hero=duet (front views side by side), and /?hero=stack (vertical arrangement). cascade is the default preview. The unlisted /hero-layouts/ gallery switches between desktop and mobile screenshots and links to each live page.

A · Cascade B · Duet C · Stack
Cascade Duet Stack

The homepage frame-clock histogram and event/callback boundary markers use green independent of the yellow theme accent. Browser favicons use the yellow console outline as their silhouette, with transparent pixels outside; SVG, PNG and ICO assets are regenerated and versioned to refresh cached icons.

Sources, rebuild commands and preview gallery · Photographic references

3DS opening and closing

Vita shoulder pocket and lower strap bridge

Validation:

  • Latest merged-main checks: 28 homepage/model/auxiliary/System tests and 39 resource/input regressions passed; the full site build and three WASM Rust tests passed. Both configured and imperative auxiliary-surface creation are covered.
  • bun run site:build and asset rebuild with bun site/build.ts passed; emitted GLBs match their source assets.
  • bun test tests/site-showcase.test.ts tests/handheld-models.test.ts tests/site-stage.test.ts: 23 passed, including exported-geometry raycasts through both strap passages and into the recessed shoulders.
  • Host and auxiliary-input regressions: 14 passed. cargo test --manifest-path engine/wasm/Cargo.toml: 3 passed. git diff --check passed. After integrating main 11cb83fb, bunx tsc --noEmit reports two test-only errors in tests/indexed-image.test.ts:7 and tests/media.test.ts:84; both reproduce unchanged in an isolated checkout of that main commit.
  • Headless Chrome: the default cascade layout at desktop and 390×844 mobile checked dual-display boot, complete framing, contact selection, list dragging, and Vita d-pad/L/R raycast and release at the initial hero camera angle. Input probes also check that another canvas does not cover the target. No page/console errors or unexpected network failures. The verifier accepts a canceled PSP fetch only when ResourceTiming proves the complete model was received.
  • bun site/verify-hero-layouts.ts: six review captures check short device names, absence of caption icons and control menus, and the PSPMAN dialog in each variant.
  • Browser computed colors and screenshots confirm the green histogram and both visible animated boundary markers. Raster pixel inspection confirms transparent favicon margins and opaque interiors, including all three ICO sizes.
  • Motion chapter browser smoke confirms the original PSP loads and its screen keeps updating after the hero devices boot.
  • Existing PSP Playground smoke passed all 8 checks, including live texture animation and input release across recompilation.
  • Ten Blender inspection views plus a 26-frame, 4.34-second hinge preview rendered from the saved .blend source.

Validation covers Blender assets and browser demos; no physical-console deployment is claimed.

@doodlewind doodlewind changed the title feat(site): add Blender-authored New 3DS and Vita 2000 models feat(site): add Blender handhelds and hero layout previews Sep 11, 2026
@doodlewind doodlewind changed the title feat(site): add Blender handhelds and hero layout previews feat(site): add Nintendo 3DS and PS Vita hero demos Sep 11, 2026
@doodlewind
doodlewind marked this pull request as ready for review September 11, 2026 07:56
@doodlewind
doodlewind merged commit 99ea9e0 into main Sep 11, 2026
5 checks passed
@doodlewind
doodlewind deleted the aromatic-spear branch September 11, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant