Feature: translate C-Buttons as Smash/Aerial Attacks (rebased from #66)#92
Merged
Feature: translate C-Buttons as Smash/Aerial Attacks (rebased from #66)#92
Conversation
Conflicts were in three files, all in the enhancement plumbing (cvar declarations + PortMenu widget block) where main and PR #66 each added new entries. Resolution kept main's flat-namespace-body indentation style for the new declarations and combined PR #66's twin anonymous namespaces in `enhancements.cpp` into a single one to match the rest of the file. `port/gui/PortMenu.cpp` had a tiny `// hitbox` placeholder where main inserted the StageClearFrozenWallpaper widget; took main's widget. `libultraship` pinned at 833528a6 (post-#87, includes StopAllRumble). Polish on top of PR #66's content (also credited to author): - Dedent the new per-port enhancement widget block from 8 → 4 spaces to match the surrounding function body in `PortMenu.cpp`. - Add tooltips to P2/P3/P4 widgets ("Same as P1, applied to player N.") matching the original code's commented-out style for parity. - Rename the helper parameter `raw_tap` → `tap_pre_remap` and document why it's needed (snapshot of `*button_tap` taken BEFORE the helper rewrites it, used to detect rising-edge taps after C-bits get cleared from the working tap mask). - In `controller.c`, hoist the `i < GMCOMMON_PLAYERS_MAX` bound into the gameplay-only guard before indexing `BattleState->players[]` — the loop limit is `(ARRAY_COUNT(descs)+ARRAY_COUNT(devs))/2` which equals GMCOMMON_PLAYERS_MAX today but the math is fragile, and a per-player-array overrun has the same fingerprint as past LP64 per-gkind-table bugs. Tested: clean Release build (191/191), binary links. Co-Authored-By: the-outcaster <101075966+the-outcaster@users.noreply.github.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
16 tasks
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.
Replaces #66 (which had merge conflicts against current main).
All commits from the original PR are preserved with their original authorship; this branch adds the merge of latest main + a small polish pass with conflict resolutions and minor code-quality cleanups, all credited to @the-outcaster as Co-Authored-By.
Summary (from #66)
What changed during merge resolution
port/enhancements/enhancements.h/enhancements.cpp— both branches added new declarations and constants. Kept main's flat (no-indent) namespace style throughout. PR Feature: translate C-Buttons as Smash/Aerial Attacks #66 had two anonymous namespaces; folded into one alongside the existing block.port/gui/PortMenu.cpp— placeholder// hitboxcomment in PR Feature: translate C-Buttons as Smash/Aerial Attacks #66 sat where main inserted theStageClearFrozenWallpaperwidget; took main's widget verbatim.libultrashippinned at833528a6(post-Fix #82: stop rumble on shutdown so it doesn't outlive the process on Linux #87, includesStopAllRumble).Polish on top
raw_tap→tap_pre_remapand documented why it's needed (snapshot of*button_taptaken BEFORE the helper rewrites it, used to detect rising-edge taps after C-bits get cleared).i < GMCOMMON_PLAYERS_MAXbound incontroller.cbefore indexingBattleState->players[]— the loop math equalsPLAYERS_MAXtoday but the indirection is fragile and a per-player-array overrun has the same fingerprint as past LP64 per-gkind-table bugs.Test plan
🤖 Generated with Claude Code