feat(map): browse the prepared Hyrule atlas from 3DS SD storage - #2
Merged
Conversation
doodlewind
force-pushed
the
feat/hyrule-sd-pack
branch
from
September 8, 2026 16:49
9b171fb to
1f94b3d
Compare
doodlewind
marked this pull request as ready for review
September 8, 2026 16:50
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hyrule previously needed the paired Mac for every new terrain tile, even though its full atlas was already downloaded. Install a prepared SD pack so the 3DS can open Hyrule, pan and zoom through the terrain atlas without waiting for a desktop connection.
createPackedImageCollectionfor SD reads with desktop fallback, shared demand, cancellation, prefetch and the existing 40-entry cache. Keep a separate three-read Mac queue budget so cancelled wire requests cannot expand the network backlog or block local work.--restartrecovery. A separate Storage Test entry compares four paired cold views and two eight-second diagonal pans; production has no automatic navigation.README screenshots
Add three San Francisco views from the native 3DS executable running in Azahar: Union Square, the Embarcadero near the Ferry Building, and Golden Gate Park. The README embeds the actual 400×240 / 320×240 readbacks with Markdown image links. The production guest uses real OSM vector data; provenance records the camera coordinates, app/runtime commits, native binary hash and frame hashes. These are emulator captures, not physical-console photographs. Also correct the README's SD inflation and packed-image API descriptions.
Physical 3DS comparison
The complete atlas and both binaries are installed with readback verification. One fixed-route run completed all ten legs, with the requested storage source and target detail level in every leg and zero native pack failures.
Mean loading time fell by 75.1% (4.02× faster); individual view ratios ranged from 2.70× to 5.97×. Both paths used the same 40-entry cache and prediction policy, with annotations disabled and the Mac cache enabled. Each pan covered about 2,560 pixels at 320 px/s. The SD pan completed 63 worker reads and 61 uploads without errors.
These timings stop at resource readiness. The target-not-ready metric does not measure blank pixel area or coarser fallback coverage. Callback frequency is not GPU presentation timing, and this run does not demonstrate sustained 60 FPS. This is one run, with SD preceding Mac at each cold view; a few cancelled SD reads completed after the switches but produced no Mac-leg uploads. The connected comparison does not establish offline cold-start hardware acceptance.
The native path stores a resident 256×256 terrain tile as 128 KiB GPU RGB565 instead of 128 KiB core pixels plus 256 KiB GPU RGBA8. SD IO and inflation run on a bounded worker; guest JS makes no filesystem calls.
Procedure, results and limits · Build identities and ten measurement receipts
Validation
All 28 app tests and TypeScript; compiled Hyrule and synthetic-provider interaction replays (switching, search, saved places, delayed responses and queue/residency limits); native 3DS production and diagnostic builds; PSP guest build. Benchmark regressions cover target detail-level settlement and preservation of the warmed pan cache. Isolated installer checks covered resume, complete staging, corrupt-content rejection, restart, and a second disconnect during restart.
Every generated atlas record was decoded and CRC-checked locally. Prepared color-grid bytes matched devkitPro tex3ds 2.3.0 after applying PocketJS's vertical origin. The curated benchmark record was checked against its binary hash, commits and all ten receipts.
Builds on merged #1. Pins the validated PocketJS resource-pack commit from pocket-stack/pocketjs#381; its framework dependency stack (#377 / #381) is separate from these application merges.