review pass: shoulder edge-state in menus; release-notes asset names

Two defects found in the local review of the unpushed v0.2.0-pre work:

1. input.c: padShoulderPrev was only updated outside menu mode, so a
   shoulder held across the menu->game transition fired a spurious
   weapon cycle on the first gameplay poll. Edge state is now tracked
   every poll; emission stays suppressed in menus where A means select.

2. ci.yml release job: the notes template substitutes <version> with the
   raw tag (v0.2.0-pre), but bundle-{linux,win}.sh strip the leading v
   when building asset names -- the published notes would have linked
   goldeneye-pc-port-v0.2.0-pre-* assets that don't exist. Substitute
   the stripped form (NOTES_VERSION) instead.
This commit is contained in:
James Dansereau committed 2026-09-13 17:16:07 -04:00
1 parent 3da19f7539
commit c5e5abea52
2 files changed
+13 -4

No files matched your search

+6 -1
View File
@@ -365,7 +365,12 @@ jobs:
gh release upload "$TAG" "${ASSETS[@]}" --clobber
else
NOTES="$(mktemp)"
sed "s/<version>/${TAG}/g" .github/release-notes.md > "$NOTES"
# Asset names are built from the tag with the leading v stripped
# (bundle-{linux,win}.sh), so substitute the same form -- a raw
# TAG would make the notes reference goldeneye-pc-port-v*.* assets
# that don't exist.
NOTES_VERSION="${TAG#v}"
sed "s/<version>/${NOTES_VERSION}/g" .github/release-notes.md > "$NOTES"
gh release create "$TAG" "${ASSETS[@]}" \
--draft --prerelease \
--title "GoldenEye 007 PC Port $TAG" \
+7 -3
View File
@@ -1136,12 +1136,16 @@ unsigned inputComputePad(int idx, signed char *stick_x, signed char *stick_y)
button |= GE_CONT_B;
int padMenuMode = (current_menu != GE_MENU_RUN_STAGE &&
current_menu != GE_MENU_INVALID);
if (!padMenuMode) {
{
int lbNow = SDL_GameControllerGetButton(pad, SDL_CONTROLLER_BUTTON_LEFTSHOULDER);
int rbNow = SDL_GameControllerGetButton(pad, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER);
int *prev = &padShoulderPrev[idx];
if (rbNow && !(*prev & 1)) button |= GE_CONT_A; /* next weapon */
if (lbNow && !(*prev & 2)) button |= GE_CONT_A | GE_CONT_G; /* prev weapon */
/* Track edge state in menus too: a shoulder held across the
* menu->game transition must not fire a cycle on entry. */
if (!padMenuMode) {
if (rbNow && !(*prev & 1)) button |= GE_CONT_A; /* next weapon */
if (lbNow && !(*prev & 2)) button |= GE_CONT_A | GE_CONT_G; /* prev weapon */
}
*prev = (rbNow ? 1 : 0) | (lbNow ? 2 : 0);
}
if (SDL_GameControllerGetButton(pad, SDL_CONTROLLER_BUTTON_START))