Skip to content

feat(map): add Ocarina of Time and 3DS runtime updates - #3

Draft
doodlewind wants to merge 3 commits into
mainfrom
feat/ocarina-atlas
Draft

feat(map): add Ocarina of Time and 3DS runtime updates#3
doodlewind wants to merge 3 commits into
mainfrom
feat/ocarina-atlas

Conversation

@doodlewind

@doodlewind doodlewind commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Pocket Map can now select Ocarina of Time alongside OSM and Breath of the Wild. The Mac prepares the atlas, searches regions and dungeon rooms, and keeps each map's bookmarks separate. Installed Zelda atlases load through the existing native 3DS SD worker and can switch without a paired Mac, restoring each camera and pin.

  • Pin Ecksters' Child Angled View, credit Nintendo and Peardian, verify all source tiles, and parse its scene table without executing downloaded JavaScript. Bake 21,845 RGB565 tiles and index 93 regions plus 363 rooms. Sources, SQLite databases and packs remain ignored.
  • Generalize atlas validation, provider registration, pack names, preparation and FTP installation for a bounded three-map catalog. Retain existing Hyrule filenames and bootstrap compatibility. The OoT pack is 140,997,952 bytes (134.47 MiB); publication follows complete readback verification.
  • Show Breath of the Wild and Ocarina of Time consistently in the map button and chooser. Both full titles fit the existing 242-pixel button at the current font size; cached atlas identities and files stay compatible.
  • Retain the map resource APIs, request budget and GPU residency. Pin PocketJS 071b2bd5 (feat(3ds): run guest updates alongside offload pocketjs#391) to enable native background guest updates alongside offload and SD packs. PSP uses the existing Mac USB image path.
  • Add preparation/installation instructions and a native Azahar screenshot of an OoT-only SD cold launch with no paired Mac.

Atlas validation before the runtime update: 30 tests / 1,075 assertions and TypeScript pass. Compiled guest + Wasm replays pass for actual OoT and Hyrule atlases and synthetic OSM, including search, source switching, continuous pan and bounded resource ownership. QuickJS passes with a 128 KiB stack; production 3DS and PSP builds pass. All 21,846 pack records were inflated and CRC-checked. The physical 3DS received the full OoT pack with matching SHA-256 readback; native Azahar confirms offline SD startup/rendering. Device interaction and a new performance benchmark are not claimed.

Scope: this is the Child Angled reference atlas, including dungeon layouts arranged around the overworld. Adult and top-down variants are not included. Search, bookmarks and dynamic labels still use the paired Mac.

Runtime update validation: the current 30 app tests / 1,075 assertions and TypeScript pass, and the production 3DS rebuild passes with the new runtime pin. bun run update 127.0.0.1 rebuilt and pushed a 443,752-byte guest into native Azahar, received acceptance for 543577abc6daaadf, and left the native .3dsx hash unchanged. The generic runtime E2E covers continued rendering during upload, package rejection, guest failure recovery and two-screen screenshots.

The console received /3DS/pocketmap-main.3dsx (1,833,728 bytes), with complete FTP readback SHA-256 cb8b8f9badc66cd2cc3ab4a9144e05b58607d9ede99f3b9a3ec33220ace2b901. Existing offload/development keys and both terrain packs were preserved. Physical in-process update validation still needs ftpd to exit and Pocket Map to launch.

The README documents one-time native installation/pairing, bun run update [3ds-ip], probing and the native menu. Guest-only builds copy only .pocket, preventing an old cached native artifact from replacing dist. JS and UI assets can update within the embedded native plan; changing native capabilities/configuration requires a new .3dsx. Guest replacement restarts in-memory UI state.

@doodlewind doodlewind changed the title feat(map): add Ocarina of Time atlas and SD map switching feat(map): add Ocarina of Time and 3DS runtime updates Sep 8, 2026
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