Read this first: build 178 is build 163 rebuilt
nx2-experimental did not move between build 163 and this release: both are tagged at ec667e2, and git diff build-163..build-178 is empty. No emulator code changed here — it is the same sources compiled again, so nothing behaves differently from build 163.
It is also older code than build 177. The two lines have diverged since build 130: this branch has not merged nx2 since then, while nx2 merged this branch back and kept going. This build is missing 152 commits that nx2 has, 43 of them merges.
In short
- Sources:
ec667e2— the same commit as build 163, and build 130 plus the two fixes below. - Two files differ from build 130:
src/core/hle/service/mii/mii.cppandsrc/hid_core/resources/six_axis/six_axis.h, +18/−6. - Included: PR #296 — Nintendo Switch Sports no longer aborts with 2162-0001 once a match starts; PR #297 — random Miis get the age, gender and race that were asked for instead of male / race 0.
- Not included, from the games side: the
ja_JPUI translation, Mario Kart World's tree frame rate and its 1.8.0 NSP launch, Hyrule Warriors: Age of Imprisonment drawing gameplay again, Splatoon Raiders' shadows and effects, Mario Tennis Fever's stadium, Donkey Kong Bananza's crash and cutscenes, Pokopia's first frame and render pass splits, Fire Emblem: Fortune's Weave's DLSS stand-in turned real FSR 3.1, the GPU movie-decode fix, LAN Play rooms, and rumble in Switch 2 titles. - Not included, from the tooling side: the Convert to NUP… dialog and progress window, the renamed downloads, the Coffee Lake clock fix, the Arch Linux
eglantine-gitPKGBUILD, and the per-draw GPU-thread work — everything that shipped as builds 135, 142, 158, 167, 168, 169, 170, 171, 174, 175 and 177. - Android is not here either: the APK publishing that entered the other line as build 171 and was reverted in build 175 never came to this branch.
Take this build only if you are on the experimental line and these two fixes are what you are after. For the newest emulator, take build 177.
What's new in this build
Nintendo Switch Sports: sensor fusion starts (PR #296)
GetSixAxisSensorIcInformation returned a zeroed structure, on the assumption that the information is never read from a controller. It is: once a match starts, nn::imu passes these ranges to nerd::gyro_pointing, and GyroPointingStateDetector requires the accelerometer and gyroscope ranges to be above 0 or it aborts. The result was error 2162-0001 right after "Play with a Single Controller", before gameplay.
The ranges of the Joy-Con and Pro Controller sensors are now reported — 2000 dps and 8 g — until real data comes from the controller.
Random Miis are no longer all male with race 0 (PR #297)
IDatabaseService::BuildRandom takes Age, Gender and Race as three 32-bit values. Since the move to the CMIF templates the handler took the u8 enums directly, so the three values were unpacked from bytes 0, 1 and 2: gender and race actually came from the upper bytes of age and were always 0. Every random Mii was built male with race 0 whatever was asked for.
Nintendo Switch Sports asks for 100 random Miis with age, gender and race All (3, 2, 3); they were logged as 3, 0, 0 and are now built as 3, 2, 3.
Coming from build 163?
Nothing. Same commit, same code — this release is a rebuild, and its downloads carry the same ec667e25f9 in their names as build 163's.
Coming from build 130 or earlier?
Build 163 is build 130 plus the two fixes above, and so is this. Build 130's notes describe that batch in full: task and mesh shaders, the AMD VRAM margins, Mario Kart World's command-list snapshot and trees, Fire Emblem: Fortune's Weave, .nup loading and packing, the RAM and ASTC changes.
How it works, for the technically curious
ec667e25isc0cb3325(build 130) plus7c36bf54(PR #296) and3d98eed7(PR #297).git log --oneline build-130..build-178lists exactly those four commits, two of them merges.git rev-list --count build-178..build-177is 152, with 43 merges — including #291 (the experimental →nx2merge), #318 (the NUP-Packer UI), #286 (theja_JPtranslation), #305 (cache version andFSEL), #322 (command-list copies) and #354 (the Mario Kart World prompt).- Concretely:
src/yuzu/nup_dialogs.cppdoes not exist in this build, anddist/languages/ja_JP.tsis 490,006 bytes here against 543,183 bytes in build 177. six_axis.hgains aDefaultIcInformation()returning 2000 dps / 8 g and uses it forSixaxisParameters::ic_informationinstead of a zeroed value;mii.cppreads Age, Gender and Race as three 32-bit words instead of unpacking them from bytes 0, 1 and 2.
Automatic build of nx2-experimental at ec667e2.
Windows: extract the zip and run eglantine.exe, or eden-cli.exe from a terminal.
Linux (AppImage): make it executable (chmod +x) and run it; it bundles its libraries and needs glibc 2.39 or newer (Ubuntu 24.04, Fedora 40, Debian 13, Arch).
Linux (tar.gz): extract it and run ./eglantine or ./eden-cli; it uses your system libraries, so Qt 6 and the usual libraries must be installed.
macOS: Apple Silicon and macOS 15 or newer. Unzip and move eglantine.app to Applications; eden-cli is inside it, in Contents/MacOS. The app is not notarized, so the first time right-click it and choose Open (or run xattr -dr com.apple.quarantine eglantine.app).
The -pgo builds are the same programs compiled with profile-guided optimization (clang plus Eden's profile); prefer them when your CPU supports it. The Windows PGO build is a MinGW build, so it carries its own DLLs and needs no Visual C++ redistributable.