Repository navigation
Sync with upstream seedds/nxnative (4 commits) - #3
Merged
Merged
Conversation
Super Mario Party Jamboree (0100965017338000), update 2.3.0, SDK 17.5.9, on NintendoWare Bezel Engine 2.9 and NVN; the boards, minigames and modes are 139 NROs loaded with ro::LoadModule. No game-specific rewriter cuts or host rules. General changes it needed: - shader_split.py: Bezel Engine 2.9 archives keep their ASST entries inline at +0x28 (0x48 bytes each) where 1.56 has an array of entry offsets. bea_members reads both forms: 25,693 shaders instead of 246. - hle_movie.c: in native-texture mode the SDK's GetOutputBuffer returns the output index (CopyOutputBufferToClientTextureAndRelease), and this game never calls ReleaseOutputBufferIndex, so its opening movie froze on its 16th picture. The host now tracks the slots the client holds, returns the slot after writing the texture, and ignores a release of a slot the client does not hold, as the SDK's texture mode does (Metroid Dread releases after GetOutputBuffer). - Profile: Bezel's nninitStartup gives malloc a 2 GB and Bezel a 56 GB address region with virtual address memory; in the 4.375 GB alias region Bezel got 2.06 GB and returned null loading the Party Plaza. The profile reports no system resource, so the game takes its own heap path (3.14 GB heap, 4 GB layout), as Big Brain Academy does. On the Mac, headless: the opening movie, the title, setup, the Party Plaza, Mario Party on Mega Wiggler's Tree Party through turn 2 and the minigame Snag the Flags, at 60 fps with no crash. Open: a flat grey backdrop on the board. iPhone not built or tested. Checks: dm/tools tests touched (docs, bea_members, split, patches, settings), lint ratchet with no new findings, and regress.py check --quick on Super Mario Odyssey, Kirby, Pikmin 4, FINAL FANTASY X/X-2 and Xenoblade Chronicles 2 (games whose routes play movies): four PASS, FFX CHANGED (its 60 s screenshot caught a later moment of the same opening scene).
Plays on the Mac at 30 fps from the first boot to free movement on the Obsidian Fieldlands beach; an unsigned IPA (4.2 GB) is built, iOS untested. The profile has no patches.py and no host code keyed to the game. General fixes it needed: - sdk b39add63 (SDK 11.4.0, Kirby's build): register the node area cut and 32 MB alignment of regions of 1 GB and more, and add the SDK 11.4.0 implementation of the SDK-wide alignment rule (matches only this build and the SDK 11.4.3 one among the 41 sdk builds on the game drive). - Dual-source blending for NVN shaders: dmsh_build.py fs_dual gives the pixel shaders in a profile's dual_want.tsv a main0_d entry point (output 1 as [[color(0), index(1)]]); pso_desc takes it for a pipeline whose output-0 target blends with a SRC1 factor, and without it counts the second source as zero with a red line instead of letting Metal 4's blend compiler crash. DM_NVN_DUAL_WANT lists such shaders. Chain version 3d5af9d36e1e. - The NSP script's rewrite key always covers sdk_patches.py, whose MATCH_CUTS apply to builds it does not name. regress.py check --quick (baseline 6c4a81d) on Kirby and the Forgotten Land, Super Mario Odyssey and Pikmin 4: CHANGED, exit 0. No newly failing shaders, no new red lines, routes reached, frame times equal or better; MSL and reflection identical, the changed variant hashes are the same keys an unrelated chain check reported. Three games: the sdk cuts reach only Kirby, the dual-source entry point only listed shaders (Arceus's), and the host change only pipelines that blend with a written output 1.
…s-arceus-test-aa020b # Conflicts: # README.md
The iOS gamepad sent every physical controller to player 1, through one shared state, so the last controller to change overwrote the others (moving one released buttons held on another). It now does what the Mac front end does: each controller with an extended gamepad profile holds a slot from pad_slots.h (player 1 first, a reconnected controller gets its player back, up to 8), goes to dm_pad_set_player and is reported with dm_pad_players, so hle_hid.c gives player n its own npad; a one-player game still sees every controller as player 1. Each player has its controller's rumble and gyro; the touch gamepad and the phone's gyro stay with player 1, and the touch gamepad still hides while any controller is connected. The log names each controller's player and npad. DM_PAD_MERGE=1 (Documents/env.txt) keeps the old single-player behaviour. Player 1's stick is now chosen by the host (whichever of touch and controller is deflected more) instead of a 4000 threshold on the front end. Checked: compile_check.py (Smash's profile) builds all 179 iOS files, the gamepad has no new warnings with -Wall -Wextra, t_hid passes (119 checks), the docs and env-switch tests pass. regress.py was not run: its Mac runs do not use DmGamepad.m. Not yet tested on a phone with several controllers. Requested in seedds#504 by oliverames.
README.md keeps the fork's; dmsh_chain.h is regenerated by dmsh_chain.py --header.
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.
Merges seedds/nxnative main (4 commits: controller players on iOS seedds#504, Pokémon Legends: Arceus 1.1.1, Super Mario Party Jamboree 2.3.0).
README.mdkeeps the fork's.dmsh_chain.his regenerated withdmsh_chain.py --header(764aff238713).Checked on Windows 11 x64:
dmsh_chain.py --check-toolspasses (Metal tools and spirv-cross included),win/tests/test_win.py11 tests OK. No IPA build run.🤖 Generated with Claude Code