Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
090d86a
launcher: expose HD Rendering as an opt-in mod
mstan Aug 16, 2026
ebf4623
Merge branch 'mph-hd-mods'
mstan Aug 16, 2026
3b26101
release: v0.4.0-alpha
mstan Aug 16, 2026
5abcfee
Persist MPH Wi-Fi profiles across launches
mstan Aug 17, 2026
1932f62
Drive MPH friend matches across local peer routing
mstan Aug 17, 2026
3d55c53
Merge branch 'codex/mph-online-first-run'
mstan Aug 17, 2026
413c616
launcher: remember the chosen ROM across relaunches
mstan Aug 17, 2026
9d51f0e
tools: report which ARM9 overlays a play route actually exercised
mstan Aug 17, 2026
ab64ad8
tools: offline-multiplayer route + end-to-end overlay coverage loop
mstan Aug 17, 2026
04498fd
tools: seed an overlay's recompiler config with proven-generation ent…
mstan Aug 17, 2026
4c651ab
config: seed overlays 0 and 1; measure where the win actually is
mstan Aug 17, 2026
638f6b3
config: compile nine overlays; record the real bot-match start procedure
mstan Aug 17, 2026
905ffab
tools: resume run_to_event when the round budget is exhausted
mstan Aug 17, 2026
b926c5f
Make game.toml runtime-generic
Zection6V Aug 17, 2026
a174aae
Share generic game config across content profiles
Zection6V Aug 17, 2026
9b22099
Validate shared generic frontend config
Zection6V Aug 17, 2026
9aea3fb
Remove obsolete EU1.1-specific game config
Zection6V Aug 17, 2026
5d3f526
Merge upstream main through 905ffab with multi-ROM adaptations
Zection6V Aug 17, 2026
bd2fed3
Update multi-ROM bring-up notes for latest upstream sync
Zection6V Aug 17, 2026
d691472
Fix generic config adaptive capability gate
Zection6V Aug 17, 2026
f4bf870
Grant adaptive capability after MPH runtime detection
Zection6V Aug 17, 2026
5e2b053
Apply runtime adaptive capability patch
Zection6V Aug 17, 2026
b425f98
Smoke-test generic frontend config on Linux
Zection6V Aug 17, 2026
9b1159e
Smoke-test generic frontend config on Windows
Zection6V Aug 17, 2026
4baff5b
Validate runtime-granted adaptive capability
Zection6V Aug 17, 2026
cad6718
Check adaptive capability patch syntax in CI
Zection6V Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,28 @@ jobs:
exit 1
fi

- name: Smoke-test generic frontend config
run: |
set -euo pipefail
mkdir -p /tmp/mph-generic-config-smoke
set +e
output="$(../ndsrecomp/runner/build-mph-nightly/nds_runner \
/tmp/mph-generic-config-smoke \
--rom /tmp/mph-generic-config-smoke/missing.nds \
--config "$PWD/game.toml" \
--freebios --generated-firmware --boot direct 2>&1)"
status=$?
set -e
printf '%s\n' "$output"
test "$status" -ne 0
if grep -q 'invalid frontend config' <<<"$output"; then
echo 'Generic game.toml was rejected by the runner frontend parser' >&2
exit 1
fi
grep -q 'cartridge image is missing or truncated' <<<"$output"
grep -q 'MPH_MULTIROM_RUNTIME_ADAPTIVE_CAPABILITY' \
../ndsrecomp/runner/src/main.cpp

- name: Install pinned AppImage packaging tools
run: |
set -euo pipefail
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,29 @@ jobs:
exit 1
fi

- name: Smoke-test generic frontend config
shell: msys2 {0}
run: |
set -euo pipefail
mkdir -p .ci-generic-config-smoke
set +e
output="$(../ndsrecomp/runner/build-mph-nightly/nds_runner.exe \
"$PWD/.ci-generic-config-smoke" \
--rom "$PWD/.ci-generic-config-smoke/missing.nds" \
--config "$PWD/game.toml" \
--freebios --generated-firmware --boot direct 2>&1)"
status=$?
set -e
printf '%s\n' "$output"
test "$status" -ne 0
if grep -q 'invalid frontend config' <<<"$output"; then
echo 'Generic game.toml was rejected by the runner frontend parser' >&2
exit 1
fi
grep -q 'cartridge image is missing or truncated' <<<"$output"
grep -q 'MPH_MULTIROM_RUNTIME_ADAPTIVE_CAPABILITY' \
../ndsrecomp/runner/src/main.cpp

- name: Build and test launcher
shell: msys2 {0}
run: |
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ jobs:
run: |
set -euo pipefail
python -m py_compile \
tools/patch_ndsrecomp_mph_runtime.py \
tools/patch_ndsrecomp_mph_adaptive_capability.py \
tools/patch_ndsrecomp_rom_free_release.py \
tools/patch_recomp_ui_mph_multirom.py \
tools/ci/check_rom_free_release_sources.py \
Expand Down
27 changes: 24 additions & 3 deletions .github/workflows/mph-multirom-static.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ jobs:
tools/promote_mph_static_coverage.py \
tools/promote_mph_runtime_coverage.py \
tools/probe_mph_wfc.py \
tools/probe_mph_online_first_run.py
tools/probe_mph_online_first_run.py \
tools/run_mph_friend_match.py \
tools/mph_overlay_route.py \
tools/overlay_coverage_report.py \
tools/seed_overlay_from_coverage.py
bash -n tools/build-linux.sh
pwsh -NoProfile -Command '
$failed = $false
Expand All @@ -55,20 +59,33 @@ jobs:
shell: bash
run: |
set -euo pipefail
base=https://raw.githubusercontent.com/mstan/MetroidPrimeHuntersRecomp/5abcfee6187d572e752985ede2364f165d62dd6a
base=https://raw.githubusercontent.com/mstan/MetroidPrimeHuntersRecomp/905ffab20ecd0d9c3c1017fb757aec73c435a1ad
curl -fsSL --retry 3 "$base/launcher/recomp-ui/launcher_main.cpp" -o /tmp/upstream-launcher.cpp
curl -fsSL --retry 3 "$base/launcher/recomp-ui/tests/launcher_mod_provider_test.cpp" -o /tmp/upstream-launcher-test.cpp
curl -fsSL --retry 3 "$base/tools/mph_screens.py" -o /tmp/upstream-mph-screens.py
curl -fsSL --retry 3 "$base/tools/probe_mph_wfc.py" -o /tmp/upstream-probe-wfc.py
curl -fsSL --retry 3 "$base/tools/probe_mph_online_first_run.py" -o /tmp/upstream-probe-first-run.py
curl -fsSL --retry 3 "$base/tools/run_mph_friend_match.py" -o /tmp/upstream-friend-match.py
curl -fsSL --retry 3 "$base/tools/mph_overlay_route.py" -o /tmp/upstream-overlay-route.py
curl -fsSL --retry 3 "$base/tools/overlay_coverage_report.py" -o /tmp/upstream-overlay-report.py
curl -fsSL --retry 3 "$base/tools/seed_overlay_from_coverage.py" -o /tmp/upstream-overlay-seed.py
cmp launcher/recomp-ui/launcher_main.cpp /tmp/upstream-launcher.cpp
cmp launcher/recomp-ui/tests/launcher_mod_provider_test.cpp /tmp/upstream-launcher-test.cpp
cmp tools/mph_screens.py /tmp/upstream-mph-screens.py
cmp tools/probe_mph_wfc.py /tmp/upstream-probe-wfc.py
cmp tools/probe_mph_online_first_run.py /tmp/upstream-probe-first-run.py
cmp tools/run_mph_friend_match.py /tmp/upstream-friend-match.py
cmp tools/mph_overlay_route.py /tmp/upstream-overlay-route.py
cmp tools/overlay_coverage_report.py /tmp/upstream-overlay-report.py
cmp tools/seed_overlay_from_coverage.py /tmp/upstream-overlay-seed.py
grep -q 'copy_text(output->id, "hd-rendering")' launcher/recomp-ui/launcher_main.cpp
grep -q -- '--firmware-state-path' launcher/recomp-ui/launcher_main.cpp
grep -q 'std::string rom_path;' launcher/recomp-ui/launcher_main.cpp
grep -q 'feature_count == 3' launcher/recomp-ui/tests/launcher_mod_provider_test.cpp
grep -q 'rom path round trip' launcher/recomp-ui/tests/launcher_mod_provider_test.cpp
for ov in 000 001 002 003 004 008 009 010 015; do
test -f "config/mph_arm9_ov${ov}.toml"
done

- name: Cross-check melonPrimeDS detector and widescreen table
shell: bash
Expand Down Expand Up @@ -148,7 +165,8 @@ jobs:
run: |
set -euo pipefail
pin="$(tr -d '\r\n' < ndsrecomp.pin)"
test "$pin" = 6c6a03bdcf99093f64555c4d05d16e522dc58634
test "$pin" = 302404ada0929528b680fa6808aad253b425c7a2
grep -q "pin = \"$pin\"" game.toml
git init /tmp/ndsrecomp
git -C /tmp/ndsrecomp remote add origin https://github.com/mstan/ndsrecomp.git
git -C /tmp/ndsrecomp fetch --depth 1 origin "$pin"
Expand Down Expand Up @@ -185,6 +203,8 @@ jobs:
grep -q 'copy_text(output->id, "hd-rendering")' "$file"
grep -q -- '--firmware-state-path' "$file"
grep -q 'bool adaptive_widescreen = true;' "$file"
grep -q 'std::filesystem::is_regular_file(default_rom, initial_rom_error)' "$file"
grep -q 'exe.string().c_str(), initial_rom.c_str(),' "$file"
done
grep -q 'game.region = "Europe";' /tmp/mph-launcher-eu11/launcher_main_profile.cpp
grep -q 'exe / "Metroid Prime Hunters (Europe Rev 1).nds";' /tmp/mph-launcher-eu11/launcher_main_profile.cpp
Expand Down Expand Up @@ -214,6 +234,7 @@ jobs:
diff -u /tmp/first.sha256 /tmp/second.sha256
grep -q 'nds_title_patches_select_mph_runtime_profile' /tmp/ndsrecomp/runner/src/main.cpp
grep -q 'nds_title_patches_set_mph_adaptive' /tmp/ndsrecomp/runner/src/main.cpp
grep -q 'slirp_virtual_network_instance' /tmp/ndsrecomp/runner/src/main.cpp
grep -q '0x02111B5Cu, 0x0211D208u, 0x02111380u' /tmp/ndsrecomp/runner/src/mph_widescreen_profiles.generated.h
! grep -q 'kMphUs10MorphState' /tmp/ndsrecomp/runner/src/frontend.cpp
! grep -q 'kMphUs10AimX' /tmp/ndsrecomp/runner/src/title_patches.cpp
Expand Down
34 changes: 0 additions & 34 deletions config/game-eu11.toml

This file was deleted.

Loading
Loading