Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions .changelog/3447.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
### Changed
- **DuckStation submodule** — Switched submodule URL from upstream `stenzek/duckstation` to the Provenance-Emu fork and updated to commit `125c3ec70fd1b4fdcf61d52500e5afad72be17e5` on `master` (as of 2026-03-20).
3 changes: 2 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
url = https://JoeMatt@github.com/Provenance-Emu/dolphin-ios-jitless.git
[submodule "Cores/DuckStation/duckstation"]
path = Cores/DuckStation/duckstation
url = https://github.com/stenzek/duckstation.git
url = https://github.com/Provenance-Emu/duckstation.git
branch = master

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding branch = master only affects git submodule update --remote (and some tooling may ignore it); the repo will still be pinned to the gitlink commit for normal checkouts. If the intent is to make ‘sync to fork master’ a standard workflow, consider documenting the expected update command (and whether it should --merge/--rebase) in contributor docs to avoid inconsistent local/CI submodule states.

Suggested change
branch = master

Copilot uses AI. Check for mistakes.
[submodule "Cores/Desmume2015/desmume2015"]
path = Cores/Desmume2015/desmume2015
url = https://github.com/Provenance-Emu/desmume2015-1.git
Expand Down
2 changes: 1 addition & 1 deletion Cores/DuckStation/duckstation
Submodule duckstation updated 3122 files
29 changes: 29 additions & 0 deletions DEVELOPER.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,35 @@ auto-enable them once JIT is successfully acquired:
The app layer (#2794) will query `EmulatorCoreInfoPlist.jitDisabledWithoutJIT` to find
these cores and toggle them on when a JIT entitlement is obtained.

## Submodule Management

Provenance uses git submodules for emulator cores. Each core submodule is pinned to a specific commit (the gitlink in the tree). Some submodules also specify a `branch` in `.gitmodules`; this affects `git submodule update --remote` but **not** normal checkouts, which always use the pinned commit.

### Updating a Core Submodule to Fork HEAD

When a Provenance-Emu fork submodule has a `branch = <branch-name>` entry and you want to advance it:

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

git submodule update --remote --merge can fail or behave unexpectedly when the submodule is in the common detached-HEAD state (which is typical after a normal git submodule update). The docs should recommend a command sequence that works from a detached HEAD (e.g., using --remote without --merge, or explicitly checking out the target branch inside the submodule before updating), and clarify the precondition if --merge is kept.

Copilot uses AI. Check for mistakes.
```bash

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The update instructions are missing the common prerequisite steps needed in two concrete scenarios: (1) after changing a submodule URL in .gitmodules, developers typically need git submodule sync -- <path> so the local config picks up the new URL; and (2) if the submodule hasn’t been initialized yet, git submodule update --init is required before --remote will work. Consider adding brief lines above the git submodule update --remote ... command covering git submodule sync -- <path> (when URLs/branch config changed) and --init (first-time checkout) to prevent confusion and avoid update failures.

Suggested change
```bash
```bash
# If this is a first-time checkout, ensure the submodule is initialized:
git submodule update --init Cores/<CoreName>/<submodule-dir>
# If you changed the submodule's URL or branch in .gitmodules, sync the local config:
git submodule sync -- Cores/<CoreName>/<submodule-dir>

Copilot uses AI. Check for mistakes.
# If this is a first-time checkout, ensure the submodule is initialized:
git submodule update --init Cores/<CoreName>/<submodule-dir>

# If you changed the submodule's URL or branch in .gitmodules, sync the local config:
git submodule sync -- Cores/<CoreName>/<submodule-dir>

# Sync just that submodule to the remote branch HEAD.
# Do NOT use --merge here: submodules are usually in detached-HEAD state after
# a normal checkout and --merge will fail or produce unexpected results.
git submodule update --remote Cores/<CoreName>/<submodule-dir>

# Review the new commit, then stage and commit
git add Cores/<CoreName>/<submodule-dir>
git commit -m "chore(<CoreName>): update submodule to <short-sha>"
```

Record the resulting commit hash in the changelog entry for traceability.

> **Note:** `git submodule update` (without `--remote`) always checks out the pinned gitlink commit, ignoring `branch`. Only `--remote` advances to the branch tip. Submodules are in a detached-HEAD state after a normal checkout; avoid `--merge`/`--rebase` unless you have already checked out a local branch inside the submodule.

## Building

### Setup Code Signing
Expand Down
Loading