Skip to content

Engine: bump the pin to 88c7e03f (Ocarina of Time on Switch 2 and more) - #813

Merged
v0lumehi merged 2 commits into
mainfrom
v0lumehi/engine-bump-ocarina
Nov 6, 2026
Merged

v0lumehi merged 2 commits into
mainfrom
v0lumehi/engine-bump-ocarina

Conversation

@v0lumehi

@v0lumehi v0lumehi commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Fix or feature

  • Fix
  • Feature

Engine pin bump. It is not a launcher change.

What and why

I moved the engine pin from 7249ee9f95ed to 88c7e03f51e3, the head of seedds/nxnative main today. That is 28 upstream commits. @LNPANDY, this is the pin bump for the v1.2.2 release candidate. I did not merge it and I did not tag anything.

What the pin brings, with the upstream commits:

  • The Legend of Zelda: Ocarina of Time on Switch 2 plays on the Mac at about 59 fps through Kokiri Forest (b1d7c707). It holds 60 fps there and uses about 4 GB less memory on an external drive (6121fd75).
  • Kirby Air Riders on Switch 2 plays on the Mac at 60 fps through whole races, at about 10 GB (8feddfee). Its gallery cell is in GAMES.md now.
  • The Mac's alias region is the Switch's 64 GB, so a game can lay out its regions past the iPhone-sized profile value (e9d71e27). A provisional profile's heap check keeps the alias region out of the heap (eab0aaac).
  • A game whose memory pool does not fit the iPhone's memory limit keeps its guest memory in files (865cc35f). New switches: DM_GUEST_FILE, DM_GUEST_FILE_CHUNK, DM_GUEST_FILE_DIR, DM_GUEST_FILE_MIN_FREE.
  • Each audio renderer plays from its own PCM blocks (a334797d). The SDK 22 audio update lock is found again (52190603).
  • iOS 26.0 no longer crashes before the first frame with Metal 4 pipelines on (88c7e03f).
  • A reboot no longer packs every RomFS image again, because the image identity leaves out st_dev (a2d39a26, by @lunks).
  • The NSP script checks for the zbic package before it extracts anything (99e32cea). A game with ZBIC modules used to stop only at the rewrite, after the whole RomFS was unpacked.
  • An Oodle shader table is proven by a decode, and a package that does not read costs only itself (16e3e24f). OCTOPATH TRAVELER II no longer stops its split at 11,832 of 13,980 shaders.
  • Smaller fixes: Mario Strikers: Battle League shaders from revision-4 archives (6c55c3de) and its movie decoder thread (75c1a8cf), both by @sen-6ei. Axiom Verge's sky on iOS (a9d06b6f). Fire Emblem Fortune's Weave near=0 depth (d928699b). Breath of the Wild tile functions (0cefa868). Galaxy 2 cutscene crop (2202d610). Splatoon Raiders cube arrays (c83c48f2). Assassin's Creed Revelations event pool query (69cb9b6e, by @Fbenhaddou). Super Smash Bros. Ultimate update pages (a5c7234e). Unreal dynamic buffers keep 4 copies (6d269f93). A Pokemon Legends: Arceus capture demo workaround (dd6ce5ba).

The shader chain moves from 223f10d34f97 to adec7d81d970. Every game that was built with the old chain is rebuilt once (#449). Upstream's shader chain files are untouched by our patches.

The pin changes the engine_id. The new one is 88c7e03f51e3934dc227089ea81ec64fcd525b03-5d39f3354ad8. A release candidate with this pin has to be tested as a whole, as RELEASING.md says. The engine that engine-experimental serves does not count for that test.

Patches

No patch landed upstream and none is dropped. All 51 patches are kept. 29 patch files are rewritten because their context or index lines changed. Eight conflicted and I resolved them by hand without changing what they do:

  • 0001-runtime-profile: the layout is upstream's new one (256 MB in front, heap, stacks, alias region last). The alias and stack sizes still come from dm_profile().
  • 0003-ios-game-data-folder: DM_GUEST_FILE_DIR is set in the per-game data setup, as upstream does for the shared layout.
  • 0008-bc-cpu-decode: the CPU decode branch sits before upstream's new linear-texture upload.
  • 0009-mac-keymap and 0053-runtime-profile-every-site: the run list of dm/host/tests/Makefile takes upstream's t_net_eventfd and our tests.
  • 0046-route-c-game-framework: the framework block follows the new DM_GUEST_FILE_DIR line in main.m.
  • 0053 reads the two new upstream sites through the runtime profile: app_pool in the guest-file check and a draw_barriers key. t_profile_runtime and test_game_profile_runtime check the key.
  • 0073 and 0081: a comment line and the DM_STEAM_* rows moved to their new place.

None of them touches the shader chain, and python3 tools/engine.py check says so.

Checked

  • python3 tools/engine.py check: ok, 51 patches apply cleanly to 88c7e03f51e3.
  • tools/tests (patches, engine, release manifest, release notes, app version, l10n shell catalogs, launcher texts, bump candidates, nxbuild pin): 173 tests, all ok.
  • Engine host tests (make -C dm/host/tests run), ThreadSanitizer targets, thermal tests, texture tests, the CPU-only gfx tests and t_perf_order: all passed with the Wonder profile.
  • Mac host for the three profiles CI builds (Wonder, Hades, Digimon Story Cyber Sleuth): built.
  • iOS host sources compile check, with and without DM_FRAMEWORK_BUILD: 265 files, 0 failed.
  • Engine tool tests (dm/tools, dm/ios, dm/gfx test files) with lz4, capstone, fonttools and zbic: all ok except two. test_dmsh_pool_arrays fails the same way on plain upstream 88c7e03f without our patches. test_nsp_scan needs dotnet, which is not on this Mac.
  • The pre-push hook ran the launcher's swift test and it passed.
  • Not run here: the gl-imports gfx target (_mh_execute_header is undeclared with this local toolchain, in a file no patch touches), swift test of the iOS shell package and the app build. CI runs them.
  • Not checked: no real game was run. Nobody played Ocarina of Time or Kirby Air Riders on this build, and no iPhone or iPad build was made.

Screenshots

None, no visible change.

Scope

  • No engine file (dm/, scripts/, docs/, ref/) is added to the repository
  • The patches are the same ones as before, refreshed. Their Upstream-Status lines are unchanged
  • No keys, game files or data extracted from a game
  • I did not touch CHANGELOG.md, CHANGELOG.zh-CN.md or release-notes/v1.2.2.md. docs: update v1.2.2 changelog and release notes for rc4 #811 edits them.
  • I left the profile counts and the Switch 2 table in the README and GAMES pages as they are. They already lag behind the profiles (Star Fox is not in them either). That can be one docs change of its own.

Moves .upstream-ref from 7249ee9f95ed to 88c7e03f51e3 and refreshes the
patch queue. No patch landed upstream and none is dropped. 29 patch
files are rewritten (new context and index lines). Eight conflicted and
were resolved by hand:

- 0001-runtime-profile: upstream makes the Mac's alias region the
  Switch's 64 GB (e9d71e27) and puts it last in the guest block. The
  alias and stack sizes still come from dm_profile(), the layout is
  upstream's.
- 0003-ios-game-data-folder: DM_GUEST_FILE_DIR (865cc35f) is set in the
  per-game data setup.
- 0008-bc-cpu-decode: the CPU decode branch sits before upstream's new
  linear-texture upload.
- 0009-mac-keymap and 0053-runtime-profile-every-site: the run target of
  dm/host/tests/Makefile takes upstream's t_net_eventfd and our tests.
- 0046-route-c-game-framework: the framework block sits after
  DM_GUEST_FILE_DIR in main.m.
- 0053 also reads the new upstream sites through dm_profile(): app_pool
  in the guest-file check (865cc35f) and a draw_barriers key, with a
  check in t_profile_runtime and test_game_profile_runtime.
- 0073 and 0081: a comment line and the DM_STEAM rows move to their new
  place.

The pin changes the shader chain (DMSH_CHAIN 223f10d34f97 to
adec7d81d970), so every game is rebuilt once, and the engine_id changes.
GAMES.md gets the Kirby Air Riders gallery cell from the pin's table.
@v0lumehi v0lumehi added this to the v1.2.2 milestone Nov 6, 2026
@v0lumehi v0lumehi added enhancement New feature or request ios iPhone or iPad mac Mac patch-queue Changes the patch queue or the upstream pin labels Nov 6, 2026
@github-actions github-actions Bot added documentation Improvements or additions to documentation launcher The NX2Apple launcher app labels Nov 6, 2026
@v0lumehi
v0lumehi merged commit 7a7679b into main Nov 6, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request ios iPhone or iPad launcher The NX2Apple launcher app mac Mac patch-queue Changes the patch queue or the upstream pin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant