Files
seedds c2750b89b8 Animal Crossing: New Horizons plays on the Mac: profile 01006F8002326000 (update 3.0.3, SDK 20.5.4)
- Nintendo EPD's engine (code name Park; sead / agl / gsys, NintendoWare, Havok, Pia and NEX) on NVN; 9,766 BNSH shaders in zstd and Yaz0 SARC files and main, the in-flight movie VP9 + Vorbis through movie::Extractor, the Happy Home Paradise add-on mounted. A new game runs through Tom Nook's counter, the movie and the island's creation to the player on the dock at 30 fps; not yet seen: a save, which the game first makes at the end of day 1
- Yield back-off, for every game: a yield whose caller's x19–x28 moved since the last one is progress (the SDK's YieldThread reaches the SVC through tail branches, so they are the loop's own): it returns at once with no host call and the run starts again; polls keep those registers and back off as before. The game's SaveProc builds a new island in grid walks that yield once per cell: 77 s of black screen after the movie, now about 10 s. Breath of the Wild's PlacementMgr and RadarMgr yield per batch item too: outdoors on the Mac CPU energy 0.35–0.74 → 0.21–0.34 W, CPU 76–83% → 96–106% of a core, frame interval p99 19 → 20–21 ms
- Rewriter, for every game: halfword jump tables get landing pads up to their largest entry (half_count), not all 65,536: this main's patch area went from 42 MB, out of a branch's reach, to 7.9 MB; the other games' modules change only in such tables
- Host: main's own HIPC client for olsc:u (cloud backup settings) is answered by host sessions (hle_sf.c); device save data is the host save directory, and a second mount name over one save shares its transaction; Commit with a CommitOption, GetSaveDataRestoreFlag; the adjustable user clock, GetStandardSteadyClockCurrentTimePoint, oe::GetRegionCode, SDK 20's album share calls; video movie decoders keep 16 output slots (the game's player holds every one it is offered)
- Profile: render_cond on (the game skips clears with conditional rendering; without it every frame was black), pad_layout full, mem_used 122 MB, the prewarm list recorded from boot to the dock, the chain header and tables for the current chain version
2026-10-22 22:41:39 +08:00

3.2 KiB

1# Game profile of Animal Crossing: New Horizons (Switch, base game v0 + update 3.0.3 = v2228224, with the Happy Home Paradise add-on). In bring-up
2# Format: see dm/games/README.md
3# Nintendo EPD's engine (code name Park; sead / agl / gsys, NintendoWare G3d / Ui2d / Vfx2 / Atk / Font, Havok, Pia and NEX for local and online play) on SDK 20.5.4, NVN;
4# modules main + subsdk0 (NintendoSDK_movie) + sdk. RomFS: 97,997 zstd files (.zs, most of them models), BWAV sound, a few Yaz0 SARC archives (.szs), and the in-flight movie
5# Movie/OpeningMovie.webm (VP9 + Vorbis through movie::Extractor and movie::Decoder, hle_movie.c).
6# Shaders: bfsha and agl sharcb in Shader/*.szs (Park_UBER_All: 3,385), System/Agl/agl_resource (sharcb), particle effects in Effect/*.szs, models' own bfsha in Model/*.zs,
7# layouts (bgsh) in Layout/*.zs, the game's software keyboard in Swkbd/, and 40 in main. Its keyboard's ocean background has 8 geometry shaders, which do not translate
8# ---- Identity ----
9title_id01006F8002326000
10program_id01006F8002326000
11# ---- App ----
12# Game name: only a label for profile listings and the Mac window title; the iOS app name is the game name in the base NSP, and the bundle ID comes from the base game title ID (build_ipa.sh / NSP script)
13nameAnimal Crossing: New Horizons
14ipaAnimalCrossingNewHorizons.ipa
15app_categorypublic.app-category.simulation-games
16# the virtual gamepad starts in the 3D layout: the D-pad holds the tool ring and the right stick turns the camera
17pad_layoutfull
18# ---- Versions ----
19# only the merged 3.0.3 copy is extracted; the base game's own build IDs are added when needed
20buildv22282243.0.3main=ff1d1c05670db6021c85b624a710b963subsdk0=6c6ceace7be94107a8bd440bc2d60704sdk=a226048605d3597f90cb1067d141cd36
21packagev2228224
22shader_versionsv2228224
23# ---- Files ----
24# load order as on Horizon: main, subsdk*, sdk (subsdk0 = NintendoSDK_movie)
25modulesmain subsdk0 sdk
26romfs_markerMovie/OpeningMovie.webm
27zip_store.barslistpack:.bwav:.pack:.srsizetable:.szs:.webm:.xtx:.zs:.metallib
28# ---- Memory ----
29# The NPDM declares no system resource (META +0x14 = 0): nninitStartup sets a heap. The 4 GB block of the other games without virtual address memory
30# (256 MB in front + 256 MB alias region + 256 MB stack region + 3.25 GB heap region)
31mem_reserve0x100000000
32mem_alias0x10000000
33mem_stack0x10000000
34app_pool0xCD500000
35sys_resource0x0
36# The rewritten modules are larger than the default 64 MB of used memory (main alone is 63 MB of text and 15 MB of bss): 122 MB, as the NSP script's guess after the rewrite,
37# which leaves a 3.09 GB heap
38mem_used0x7a00000
39# ---- Shader split (shader_split.py; BNSH in bfsha / sharcb / ptcl / bgsh, in zstd and Yaz0 SARC files, and main) ----
40shader_groups/Shader/=shader /System/=system /Effect/=effect /Model/=model /Layout/=layout /Swkbd/=swkbd
41shader_noteAnimal Crossing: New Horizons shaders
42# ---- Graphics ----
43# The game wraps its clears in render conditions that skip a target nothing drew into since its last clear: without the key, four clear-only passes wiped the composite before
44# the window copy at frame 900, and every frame came out black (the island probe and the loading icon were drawn into render targets)
45render_condon