diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index ecba810e64..867efe7794 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,6 +1,6 @@
-- [ ] I have read and followed the [Contribution Guidelines](https://github.com/Djihads80/Eglantine/blob/nx2/CONTRIBUTING.md#code-contributions).
-- [ ] I have read and followed the [AI Policy](https://github.com/Djihads80/Eglantine/blob/nx2/docs/policies/AI.md).
-- [ ] I have read and followed the [Coding Guidelines](https://github.com/Djihads80/Eglantine/blob/nx2/docs/policies/Coding.md) to the best of my ability.
+- [ ] I have read and followed the [Contribution Guidelines](https://github.com/Framerr/Frameropia/blob/nx2/CONTRIBUTING.md#code-contributions).
+- [ ] I have read and followed the [AI Policy](https://github.com/Framerr/Frameropia/blob/nx2/docs/policies/AI.md).
+- [ ] I have read and followed the [Coding Guidelines](https://github.com/Framerr/Frameropia/blob/nx2/docs/policies/Coding.md) to the best of my ability.
- [ ] **I have put [HUMANMADE] in the title if the pr was human-mande**
---
diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml
index a112591bbc..206674f25d 100644
--- a/.github/workflows/build-linux.yml
+++ b/.github/workflows/build-linux.yml
@@ -200,12 +200,12 @@ jobs:
shell: bash
run: |
set -euo pipefail
- test -x build/release/bin/eglantine
- test -x build/release/bin/eden-cli
- strip build/release/bin/eglantine build/release/bin/eden-cli
- tar -czf "eglantine-${SHA}-${PLATFORM}.tar.gz" \
- -C build/release/bin eglantine eden-cli
- ls -la "eglantine-${SHA}-${PLATFORM}.tar.gz"
+ test -x build/release/bin/frameropia
+ test -x build/release/bin/frameropia-cli
+ strip build/release/bin/frameropia build/release/bin/frameropia-cli
+ tar -czf "frameropia-${SHA}-${PLATFORM}.tar.gz" \
+ -C build/release/bin frameropia frameropia-cli
+ ls -la "frameropia-${SHA}-${PLATFORM}.tar.gz"
# A self-contained AppImage: linuxdeploy bundles every library the two programs need except
# the base system ones (glibc, X11/Wayland client libraries, the GPU driver and Vulkan loader),
@@ -216,8 +216,8 @@ jobs:
VERSION_LABEL: ${{ inputs.version }}
run: |
set -euo pipefail
- test -x build/release/bin/eglantine
- test -x build/release/bin/eden-cli
+ test -x build/release/bin/frameropia
+ test -x build/release/bin/frameropia-cli
tools="$RUNNER_TEMP/linuxdeploy"
mkdir -p "$tools"
arch=$(uname -m) # aarch64 or x86_64
@@ -226,8 +226,8 @@ jobs:
curl -fsSL -o "$tools/linuxdeploy-plugin-qt-$arch.AppImage" \
"https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-$arch.AppImage"
chmod +x "$tools"/*.AppImage
- # The desktop file names its icon dev.eglantine.eglantine.
- icon="$RUNNER_TEMP/dev.eglantine.eglantine.png"
+ # The desktop file uses the Frameropia application ID.
+ icon="$RUNNER_TEMP/io.github.framerr.frameropia.png"
cp dist/Eglantine.png "$icon"
export APPIMAGE_EXTRACT_AND_RUN=1
export QMAKE="$QT_ROOT_DIR/bin/qmake"
@@ -236,13 +236,13 @@ jobs:
export EXTRA_PLATFORM_PLUGINS='libqwayland-egl.so;libqwayland-generic.so'
# Embedded in the AppImage metadata: the version label of this build.
export LDAI_VERSION="$VERSION_LABEL"
- export LDAI_OUTPUT="eglantine-${SHA}-${PLATFORM}.AppImage"
+ export LDAI_OUTPUT="frameropia-${SHA}-${PLATFORM}.AppImage"
export OUTPUT="$LDAI_OUTPUT"
export ARCH="$arch"
"$tools/linuxdeploy-$arch.AppImage" --appdir AppDir \
- --executable build/release/bin/eglantine \
- --executable build/release/bin/eden-cli \
- --desktop-file dist/dev.eden_emu.eden.desktop \
+ --executable build/release/bin/frameropia \
+ --executable build/release/bin/frameropia-cli \
+ --desktop-file dist/io.github.framerr.frameropia.desktop \
--icon-file "$icon" \
--plugin qt \
--output appimage
@@ -253,10 +253,10 @@ jobs:
- name: Upload Linux binary
uses: actions/upload-artifact@v7
with:
- name: eglantine-${{ env.PLATFORM }}-${{ inputs.sha }}
+ name: frameropia-${{ env.PLATFORM }}-${{ inputs.sha }}
path: |
- eglantine-${{ inputs.sha }}-${{ env.PLATFORM }}.tar.gz
- eglantine-${{ inputs.sha }}-${{ env.PLATFORM }}.AppImage
+ frameropia-${{ inputs.sha }}-${{ env.PLATFORM }}.tar.gz
+ frameropia-${{ inputs.sha }}-${{ env.PLATFORM }}.AppImage
if-no-files-found: error
compression-level: 0
retention-days: 7
diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml
index 6e5e928b15..7d369b3635 100644
--- a/.github/workflows/build-macos.yml
+++ b/.github/workflows/build-macos.yml
@@ -114,15 +114,15 @@ jobs:
shell: bash
run: |
set -euo pipefail
- app=build/release/bin/eglantine.app
- test -x "$app/Contents/MacOS/eglantine"
- test -x build/release/bin/eden-cli
- for binary in "$app/Contents/MacOS/eglantine" build/release/bin/eden-cli; do
+ app=build/release/bin/frameropia.app
+ test -x "$app/Contents/MacOS/frameropia"
+ test -x build/release/bin/frameropia-cli
+ for binary in "$app/Contents/MacOS/frameropia" build/release/bin/frameropia-cli; do
test "$(lipo -archs "$binary")" = arm64
done
- cp build/release/bin/eden-cli "$app/Contents/MacOS/eden-cli"
+ cp build/release/bin/frameropia-cli "$app/Contents/MacOS/frameropia-cli"
"$(brew --prefix qt@6)/bin/macdeployqt" "$app" \
- -executable="$app/Contents/MacOS/eden-cli" -libpath="$(brew --prefix)/lib" \
+ -executable="$app/Contents/MacOS/frameropia-cli" -libpath="$(brew --prefix)/lib" \
-always-overwrite -verbose=1
# Qt's virtual keyboard input plugin pulls in the QML stack, which the emulator doesn't use.
rm -f "$app/Contents/PlugIns/platforminputcontexts/libqtvirtualkeyboardplugin.dylib"
@@ -135,7 +135,7 @@ jobs:
done
done
# Libraries that load their dependencies through @rpath find them in the bundle.
- for program in eglantine eden-cli; do
+ for program in frameropia frameropia-cli; do
install_name_tool -add_rpath @executable_path/../Frameworks \
"$app/Contents/MacOS/$program" 2> /dev/null
done
@@ -154,28 +154,28 @@ jobs:
codesign --force --deep --sign - "$app"
if [ -f dist/eglantine.entitlements ]; then
codesign --force --sign - --entitlements dist/eglantine.entitlements \
- "$app/Contents/MacOS/eden-cli"
+ "$app/Contents/MacOS/frameropia-cli"
codesign --force --sign - --entitlements dist/eglantine.entitlements "$app"
fi
codesign --verify --deep --strict "$app"
- ditto -c -k --keepParent "$app" "eglantine-${SHA}-${PLATFORM}.zip"
- ls -la "eglantine-${SHA}-${PLATFORM}.zip"
- # Also ship a .dmg (drag eglantine.app onto Applications).
+ ditto -c -k --keepParent "$app" "frameropia-${SHA}-${PLATFORM}.zip"
+ ls -la "frameropia-${SHA}-${PLATFORM}.zip"
+ # Also ship a .dmg (drag frameropia.app onto Applications).
dmgdir=$(mktemp -d)
- ditto "$app" "$dmgdir/eglantine.app"
+ ditto "$app" "$dmgdir/frameropia.app"
ln -s /Applications "$dmgdir/Applications"
- hdiutil create -volname "Eglantine" -srcfolder "$dmgdir" -ov -format UDZO \
- "eglantine-${SHA}-${PLATFORM}.dmg"
- ls -la "eglantine-${SHA}-${PLATFORM}.dmg"
+ hdiutil create -volname "Frameropia" -srcfolder "$dmgdir" -ov -format UDZO \
+ "frameropia-${SHA}-${PLATFORM}.dmg"
+ ls -la "frameropia-${SHA}-${PLATFORM}.dmg"
# Zipped with ditto beforehand: the bundle's framework symlinks don't survive artifact zipping.
- name: Upload macOS app
uses: actions/upload-artifact@v7
with:
- name: eglantine-${{ env.PLATFORM }}-${{ inputs.sha }}
+ name: frameropia-${{ env.PLATFORM }}-${{ inputs.sha }}
path: |
- eglantine-${{ inputs.sha }}-${{ env.PLATFORM }}.zip
- eglantine-${{ inputs.sha }}-${{ env.PLATFORM }}.dmg
+ frameropia-${{ inputs.sha }}-${{ env.PLATFORM }}.zip
+ frameropia-${{ inputs.sha }}-${{ env.PLATFORM }}.dmg
if-no-files-found: error
compression-level: 0
retention-days: 7
diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml
index 584014f3de..440837f3de 100644
--- a/.github/workflows/build-windows.yml
+++ b/.github/workflows/build-windows.yml
@@ -130,19 +130,19 @@ jobs:
- name: Package Windows binary
shell: pwsh
run: |
- foreach ($exe in 'eglantine.exe', 'eden-cli.exe') {
+ foreach ($exe in 'frameropia.exe', 'frameropia-cli.exe') {
if (-not (Test-Path "build/release/bin/$exe")) {
throw "build/release/bin/$exe was not produced"
}
}
- windeployqt --release --no-translations build/release/bin/eglantine.exe
+ windeployqt --release --no-translations build/release/bin/frameropia.exe
# The artifact is the bin folder itself: GitHub zips artifacts on download, and uploading a
# zip gave a zip inside a zip. The release job zips it once for the release.
- name: Upload Windows binary
uses: actions/upload-artifact@v7
with:
- name: eglantine-windows-x86_64-${{ inputs.sha }}
+ name: frameropia-windows-x86_64-${{ inputs.sha }}
path: build/release/bin/
if-no-files-found: error
retention-days: 7
@@ -252,10 +252,10 @@ jobs:
set -euo pipefail
export PATH="/ucrt64/bin:$PATH"
cd build/release/bin
- test -f eglantine.exe
- test -f eden-cli.exe
+ test -f frameropia.exe
+ test -f frameropia-cli.exe
windeployqt6 --no-translations --no-compiler-runtime --no-opengl-sw \
- --no-system-dxc-compiler --no-system-d3d-compiler eglantine.exe
+ --no-system-dxc-compiler --no-system-d3d-compiler frameropia.exe
deps() {
objdump -p "$1" | awk '/DLL Name:/ {print $3}' | while read -r dll; do
[ -z "$dll" ] && continue
@@ -271,7 +271,7 @@ jobs:
fi
done
}
- for exe in eglantine.exe eden-cli.exe; do
+ for exe in frameropia.exe frameropia-cli.exe; do
deps "$exe"
done
find . -name '*.dll' | while read -r dll; do
@@ -281,7 +281,7 @@ jobs:
- name: Upload MinGW binary
uses: actions/upload-artifact@v7
with:
- name: eglantine-windows-x86_64-pgo-${{ inputs.sha }}
+ name: frameropia-windows-x86_64-pgo-${{ inputs.sha }}
path: build/release/bin/
if-no-files-found: error
retention-days: 7
diff --git a/.github/workflows/fork-preflight.yml b/.github/workflows/fork-preflight.yml
index 3fff0f9f74..0224ca5838 100644
--- a/.github/workflows/fork-preflight.yml
+++ b/.github/workflows/fork-preflight.yml
@@ -47,3 +47,9 @@ jobs:
set -euo pipefail
test -s docs/POKOPIA_TESTING.md
test -s .github/ISSUE_TEMPLATE/pokopia_bug.yml
+
+ - name: Validate Frameropia branding and package identifiers
+ shell: bash
+ run: |
+ set -euo pipefail
+ bash tools/ci/check-frameropia-branding.sh
diff --git a/.github/workflows/fork-windows-check.yml b/.github/workflows/fork-windows-check.yml
new file mode 100644
index 0000000000..d89cf882d1
--- /dev/null
+++ b/.github/workflows/fork-windows-check.yml
@@ -0,0 +1,33 @@
+name: fork-windows-check
+
+# Read-only Windows compilation check for source/build-system pull requests.
+on:
+ pull_request:
+ branches: [nx2]
+ paths:
+ - .github/workflows/fork-windows-check.yml
+ - .github/workflows/build-windows.yml
+ - src/yuzu/**
+ - src/yuzu_cmd/**
+ - src/qt_common/**
+ - src/core/launch_params.cpp
+ - CMakeModules/**
+ - CMakeLists.txt
+ - dist/**
+ - tools/ci/**
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+jobs:
+ windows:
+ uses: ./.github/workflows/build-windows.yml
+ with:
+ sha: ${{ github.event.pull_request.head.sha || github.sha }}
+ version: ci
+ refspec: frameropia-ci
+ tag: ci
+ release: false
+ nightly: true
+ pgo: none
diff --git a/.github/workflows/fork-windows-release.yml b/.github/workflows/fork-windows-release.yml
index 7b3e93a826..3183ae0093 100644
--- a/.github/workflows/fork-windows-release.yml
+++ b/.github/workflows/fork-windows-release.yml
@@ -84,7 +84,7 @@ jobs:
with:
kind: stable
tag: ${{ needs.prepare.outputs.tag }}
- title: Eglantine-Framer ${{ needs.prepare.outputs.tag }} (test build)
+ title: Frameropia ${{ needs.prepare.outputs.tag }} (test build)
prerelease: true
sha: ${{ needs.prepare.outputs.sha }}
branch: nx2
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 26492dd1ee..28de72131d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -75,7 +75,7 @@ jobs:
- name: Download binaries
uses: actions/download-artifact@v8
with:
- pattern: eglantine-*-${{ inputs.sha }}
+ pattern: frameropia-*-${{ inputs.sha }}
path: artifacts
# Asset names drop the commit sha: the tag already identifies the build, and stable names let
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bbe479141d..903a675839 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,14 @@ New entries go under `## [Unreleased]`; `tools/ci/bump-version.sh` turns them in
## [Unreleased]
+### Frameropia rebrand (after v0.0.1)
+
+- Rebrand the GUI, dialogs, startup messages, and packaged executable names to **Frameropia**.
+- Remove Discord links and presence options from the application's interface.
+- Point the fork's documentation, help screens, issue reporting, and release links to the Frameropia GitHub repository.
+- Update CI release assets and packaging metadata for Windows, Linux, and macOS.
+- Preserve legacy Eden/Eglantine data paths to avoid disrupting existing settings and saves.
+
- Added OOT Compatibility
- Improved MKW Performances
- Added StarFox Compatibility
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 04d0f17d74..80acd628cf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -284,7 +284,7 @@ option(NIGHTLY_BUILD "Use Nightly qualifiers in the update checker and build met
cmake_dependent_option(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF)
cmake_dependent_option(YUZU_ROOM_STANDALONE "Enable standalone room executable" ON "YUZU_ROOM" OFF)
-cmake_dependent_option(YUZU_CMD "Compile the eden-cli executable" ON "NOT ANDROID" OFF)
+cmake_dependent_option(YUZU_CMD "Compile the frameropia-cli executable" ON "NOT ANDROID" OFF)
cmake_dependent_option(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
@@ -752,15 +752,16 @@ endif()
# TODO: Icon/install handling n such should be put into dist/CMakeLists.txt
if(ENABLE_QT AND UNIX AND NOT APPLE)
- install(FILES "dist/dev.eden_emu.eden.desktop"
+ install(FILES "dist/io.github.framerr.frameropia.desktop"
DESTINATION "share/applications")
install(FILES "dist/dev.eden_emu.eden.svg"
- DESTINATION "share/icons/hicolor/scalable/apps")
+ DESTINATION "share/icons/hicolor/scalable/apps"
+ RENAME "io.github.framerr.frameropia.svg")
# TODO: these files need to be updated.
- install(FILES "dist/dev.eden_emu.eden.xml"
+ install(FILES "dist/io.github.framerr.frameropia.xml"
DESTINATION "share/mime/packages")
- install(FILES "dist/dev.eden_emu.eden.metainfo.xml"
+ install(FILES "dist/io.github.framerr.frameropia.metainfo.xml"
DESTINATION "share/metainfo")
endif()
diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake
index f50f0fa307..d11a7d1ebb 100644
--- a/CMakeModules/GenerateSCMRev.cmake
+++ b/CMakeModules/GenerateSCMRev.cmake
@@ -35,21 +35,21 @@ set(GIT_DESC ${BUILD_VERSION})
# Generate cpp with Git revision from template
# TODO(crueter): Stable releases feed.
-set(BUILD_AUTO_UPDATE_STABLE_REPO "eden-emu/eden")
+set(BUILD_AUTO_UPDATE_STABLE_REPO "Framerr/Frameropia")
set(BUILD_AUTO_UPDATE_STABLE_API "git.eden-emu.dev")
set(BUILD_AUTO_UPDATE_STABLE_API_PATH "/api/v1/repos/")
set(BUILD_AUTO_UPDATE_API_PATH "/latest/release.json")
if (NIGHTLY_BUILD)
- set(BUILD_AUTO_UPDATE_WEBSITE "https://git.eden-emu.dev")
+ set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com/Framerr/Frameropia")
set(BUILD_AUTO_UPDATE_API "nightly.eden-emu.dev")
- set(BUILD_AUTO_UPDATE_REPO "eden-ci/nightly")
- set(REPO_NAME "Eglantine Nightly")
+ set(BUILD_AUTO_UPDATE_REPO "Framerr/Frameropia")
+ set(REPO_NAME "Frameropia Nightly")
else()
- set(BUILD_AUTO_UPDATE_WEBSITE "https://git.eden-emu.dev")
+ set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com/Framerr/Frameropia")
set(BUILD_AUTO_UPDATE_API "stable.eden-emu.dev")
- set(BUILD_AUTO_UPDATE_REPO "eden-emu/eden")
- set(REPO_NAME "Eglantine")
+ set(BUILD_AUTO_UPDATE_REPO "Framerr/Frameropia")
+ set(REPO_NAME "Frameropia")
endif()
set(BUILD_ID ${GIT_REFSPEC})
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 39a94d8f91..963077ec41 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,15 +1,15 @@
-# Contributing
+# Contributing to Frameropia
-Eglantine has lots of different ways that you can contribute to its efforts, even without knowing how to write code:
+Frameropia is an experimental emulator fork focused on Pokémon Pokopia compatibility. You can help without writing code:
-- Join our [Discord](https://discord.gg/jCCZ58VExk) community
-- Submit [bug reports or feature requests](https://github.com/Djihads80/Eglantine/issues)
+- Help investigate and reproduce Pokémon Pokopia compatibility issues
+- Submit [bug reports](https://github.com/Framerr/Frameropia/issues)
- Improve documentation or share reproducible testing results
- Contribute to our [translation efforts](./dist/languages/README.md)
## Code Contributions
-Eglantine is free, open-source, copyleft software, licensed under the terms of the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html). You would do well to familiarize yourself with the GPL, [its FAQ](https://www.gnu.org/licenses/gpl-faq.html), and [free software as a concept](https://www.gnu.org/philosophy/free-sw.html) before contributing. If these terms are not acceptable to you, then you shouldn't contribute.
+Frameropia is free, open-source, copyleft software, licensed under the terms of the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html). You would do well to familiarize yourself with the GPL, [its FAQ](https://www.gnu.org/licenses/gpl-faq.html), and [free software as a concept](https://www.gnu.org/philosophy/free-sw.html) before contributing. If these terms are not acceptable to you, then you shouldn't contribute.
### Policies
@@ -29,25 +29,25 @@ Eglantine is free, open-source, copyleft software, licensed under the terms of t
### Where do I start?
-Anywhere you like! If you are facing an issue and want to fix it, go ahead. For new features, you are heavily encouraged to open a [feature request](https://github.com/Djihads80/Eglantine/issues) first, discussing the motivations, potential implementation, and user flow of your desired feature.
+Anywhere you like! If you are facing an issue and want to fix it, go ahead. For new features, you are encouraged to open a [discussion issue](https://github.com/Framerr/Frameropia/issues) first, discussing the motivations, potential implementation, and user flow of your desired feature.
-Search the [open issues](https://github.com/Djihads80/Eglantine/issues) and [pull requests](https://github.com/Djihads80/Eglantine/pulls) before starting to avoid duplicating work. For larger features/refactors, you should first express your interest in the issue to ensure another developer isn't already working on it.
+Search the [open issues](https://github.com/Framerr/Frameropia/issues) and [pull requests](https://github.com/Framerr/Frameropia/pulls) before starting to avoid duplicating work. For larger features/refactors, you should first express your interest in the issue to ensure another developer isn't already working on it.
### Great! Can I contribute already?
-Submit a pull request to [Djihads80/Eglantine](https://github.com/Djihads80/Eglantine). You need a GitHub account; the Eden Forgejo account registration process does not apply here.
+Submit a pull request to [Framerr/Frameropia](https://github.com/Framerr/Frameropia). You need a GitHub account; the Eden Forgejo account registration process does not apply here.
-1. Fork the Eglantine repository to your GitHub account.
-2. Clone your fork and create a branch for your change based on Eglantine's `nx2` branch.
+1. Fork the Frameropia repository to your GitHub account.
+2. Clone your fork and create a branch for your change based on Frameropia's `nx2` branch.
3. Make a focused change, following the policies above and the [coding guidelines](docs/policies/Coding.md).
4. Review and test your changes. For code changes, follow the [build documentation](docs/Build.md) for your platform and verify the affected behavior. For documentation changes, preview the Markdown and check the instructions and links.
5. Commit your changes and push your branch to your fork.
-6. Open a pull request from your branch to `Djihads80/Eglantine`, selecting `nx2` as the base branch. Explain the problem, the change, and how you verified it, and link any related issue.
+6. Open a pull request from your branch to `Framerr/Frameropia`, selecting `nx2` as the base branch. Explain the problem, the change, and how you verified it, and link any related issue.
-Before opening a pull request, make sure your branch is up-to-date with Eglantine's `nx2` branch. Follow the [AI policy](docs/policies/AI.md), including its requirements for human-written commit messages and pull request descriptions, disclosure, review, testing, and sign-off.
+Before opening a pull request, make sure your branch is up-to-date with Frameropia's `nx2` branch. Follow the [AI policy](docs/policies/AI.md), including its requirements for human-written commit messages and pull request descriptions, disclosure, review, testing, and sign-off.
## Non-code Contributions
Alongside the other contribution methods listed up top, you can also choose to contribute through documentation, organization, or community guides. These can be done either through the code contribution methods described above, or created externally and shared via our Discord community.
-If you have an external tool/page that you believe would be handy to integrate/link into Eglantine, please discuss it with the developers on [Discord](https://discord.gg/jCCZ58VExk). **Do not submit vibe-coded or AI generated tools or applications**.
+For external tools or integration proposals, open an issue on this fork and describe the motivation and verification method. Review the repository's AI disclosure policy before submitting code or documentation.
diff --git a/README.md b/README.md
index 63f6a297ae..ed66b6c321 100644
--- a/README.md
+++ b/README.md
@@ -1,87 +1,31 @@
-
-
+**Frameropia** is an experimental, open-source Nintendo Switch 2 emulator fork focused on compatibility with **Pokémon Pokopia**.
-
-
-
-
- Eglantine
-
-
+It is based on [Eglantine](https://github.com/Djihads80/Eglantine), which in turn builds on Eden, yuzu and other open-source work. Frameropia is independent and is not affiliated with Nintendo.
-
Eglantine is a free and opensource (FOSS) Switch 2 emulator, derived from Eden, Yuzu and Sudachi - started by developer Camille LaVey.
-It's written in C++ with portability in mind, with builds for Windows, Linux and macOS
-
+> **Experimental software:** game compatibility, performance and graphical accuracy are not guaranteed. The v0.0.1 test release predates the Frameropia branding changes.
-
+## Downloads and testing
-## Framerr test fork
+- [Releases](https://github.com/Framerr/Frameropia/releases)
+- [Pokopia compatibility checklist](docs/POKOPIA_TESTING.md)
+- [Report a Pokopia issue](https://github.com/Framerr/Frameropia/issues/new/choose)
+- [Patch notes](docs/releases/v0.0.1.md)
+- [Repository rename and data compatibility](docs/FRAMEROPIA_RENAME.md)
-This fork is an experimental workspace focused on improving **Pokémon Pokopia**
-compatibility. The current test version is **v0.0.1**; gameplay and graphical
-correctness are **not yet verified**.
-
-- [Pokopia test checklist and bug reporting](docs/POKOPIA_TESTING.md)
-- [CI builds and release guide](docs/CI.md)
-- [Download test releases](https://github.com/Framerr/Eglantine-Framer/releases)
-- [v0.0.1 patch notes](docs/releases/v0.0.1.md)
-
-Please use **English** for issue reports, pull requests, documentation, and release notes.
-
-The emulator is based on [Eglantine](https://github.com/Djihads80/Eglantine).
-This fork's tests and changes should not be interpreted as upstream fixes.
-
-## Compatibility
-
-The emulator is capable of running Mario Kart World at decent/full speed depending on specs and configurations, and Splatoon Raiders at variable performances
-
-A list of supported games will be available in future. Please be patient.
+Only use game files and console data that you have legally obtained. Do not upload games, firmware or console keys to issues.
## Development
-If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Stoat to learn more about the current state of the emulator.
-
-## Documentation
-
-We have a user manual! See our [User Handbook](./docs/user/README.md).
-
-## Building
-
-See the [General Build Guide](docs/Build.md)
-
-For information on provided development tooling, see the [Tools directory](./tools)
-
-## Download
-
-You can download the latest releases from [here](https://github.com/Framerr/Eglantine-Framer/releases).
-
-## Support
+See the [build guide](docs/Build.md), [CI/release guide](docs/CI.md) and [contribution guide](CONTRIBUTING.md). Please use English for issues, pull requests, code comments and documentation.
-We currently do not take in any donations for the time being
+## Existing settings and saves
-## Star History
+The fork currently retains Eden/Eglantine's internal data directories. This is intentional: renaming the GUI and binaries must not make existing configuration, installed content, or saves disappear.
-
-
-
-
-
-
-
+## Credits and license
-## License
+Frameropia is derived from [Eglantine](https://github.com/Djihads80/Eglantine), with contributions originating in Eden, yuzu, Sudachi and other projects.
-Eglantine is licensed under the GPLv3 (or any later version). Refer to the [LICENSE.txt](https://github.com/Djihads80/Eglantine/blob/nx2/LICENSE.txt) file.
+Licensed under [GPL-3.0-or-later](LICENSE.txt), subject to the repository's existing license notices.
diff --git a/dist/dev.eden_emu.eden.metainfo.xml b/dist/dev.eden_emu.eden.metainfo.xml
deleted file mode 100644
index ce5cc9a905..0000000000
--- a/dist/dev.eden_emu.eden.metainfo.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
- dev.eden_emu.eden
- CC0-1.0
- eden
- Nintendo Switch emulator
-
-
Eden is a free and open-source (FOSS) Switch 1 emulator started by developer Camille LaVey. Written in C++, with builds for Windows, Linux, macOS, Android, FreeBSD and more.
Frameropia is an experimental open-source Nintendo Switch 2 emulator fork focused on Pokémon Pokopia compatibility. Based on Eglantine and Eden.
+
+
+ Game
+ Emulator
+
+
+ switch
+ emulator
+
+ https://github.com/Framerr/Frameropia
+ https://github.com/Framerr/Frameropia/issues
+ https://github.com/Framerr/Frameropia#downloads-and-testing
+ https://github.com/Framerr/Frameropia/blob/nx2/docs/user/README.md
+ https://github.com/Framerr/Frameropia
+ https://github.com/Framerr/Frameropia
+ io.github.framerr.frameropia.desktop
+
+ frameropia
+ frameropia-cli
+
+
+ pointing
+ keyboard
+ gamepad
+ offline-only
+
+
+ 8192
+
+
+ 16384
+
+ GPL-3.0-or-later
+ Frameropia contributors
+
+
diff --git a/dist/dev.eden_emu.eden.xml b/dist/io.github.framerr.frameropia.xml
similarity index 85%
rename from dist/dev.eden_emu.eden.xml
rename to dist/io.github.framerr.frameropia.xml
index 22acd30595..9f952b4a58 100644
--- a/dist/dev.eden_emu.eden.xml
+++ b/dist/io.github.framerr.frameropia.xml
@@ -14,7 +14,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
Nintendo Switch homebrew executable
NRO
-
+
@@ -22,7 +22,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
Nintendo Switch homebrew executable
NSO
-
+
@@ -30,7 +30,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
Nintendo Switch Package
NSP
-
+
@@ -38,7 +38,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
Nintendo Switch Card Image
XCI
-
+
diff --git a/dist/packaging/arch/eglantine-git/PKGBUILD b/dist/packaging/arch/frameropia-git/PKGBUILD
similarity index 64%
rename from dist/packaging/arch/eglantine-git/PKGBUILD
rename to dist/packaging/arch/frameropia-git/PKGBUILD
index 2c536e7b98..0397b3ac13 100644
--- a/dist/packaging/arch/eglantine-git/PKGBUILD
+++ b/dist/packaging/arch/frameropia-git/PKGBUILD
@@ -1,11 +1,11 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-pkgname=eglantine-git
+pkgname=frameropia-git
pkgver=0.r0.g0000000
pkgrel=1
-pkgdesc='Nintendo Switch emulator (development branch)'
+pkgdesc='Experimental Switch 2 emulator (Pokopia compatibility fork)'
arch=('x86_64')
-url='https://github.com/Djihads80/Eglantine'
+url='https://github.com/Framerr/Frameropia'
license=('GPL-3.0-or-later')
depends=(
'enet'
@@ -41,18 +41,18 @@ makedepends=(
optdepends=(
'qt6-wayland: native Wayland support'
)
-provides=('eglantine')
-conflicts=('eglantine')
-source=("eglantine::git+https://github.com/Djihads80/Eglantine.git#branch=nx2")
+provides=('frameropia')
+conflicts=('frameropia')
+source=("frameropia::git+https://github.com/Framerr/Frameropia.git#branch=nx2")
sha256sums=('SKIP')
pkgver() {
- cd "$srcdir/eglantine"
+ cd "$srcdir/frameropia"
printf '0.r%s.g%s' "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
}
build() {
- cmake -S "$srcdir/eglantine" -B "$srcdir/build" -G Ninja \
+ cmake -S "$srcdir/frameropia" -B "$srcdir/build" -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -71,8 +71,8 @@ build() {
package() {
DESTDIR="$pkgdir" cmake --install "$srcdir/build"
- # The desktop entry uses the Eglantine icon name; the upstream install uses
- # the older Eden filename, so install an alias that matches the desktop file.
- install -Dm644 "$srcdir/eglantine/dist/dev.eden_emu.eden.svg" \
- "$pkgdir/usr/share/icons/hicolor/scalable/apps/dev.eglantine.eglantine.svg"
+ # The desktop entry uses the Frameropia application ID; install an icon alias
+ # while retaining the inherited artwork.
+ install -Dm644 "$srcdir/frameropia/dist/dev.eden_emu.eden.svg" \
+ "$pkgdir/usr/share/icons/hicolor/scalable/apps/io.github.framerr.frameropia.svg"
}
diff --git a/dist/packaging/arch/eglantine-git/README.md b/dist/packaging/arch/frameropia-git/README.md
similarity index 84%
rename from dist/packaging/arch/eglantine-git/README.md
rename to dist/packaging/arch/frameropia-git/README.md
index ef201872c4..992cb158de 100644
--- a/dist/packaging/arch/eglantine-git/README.md
+++ b/dist/packaging/arch/frameropia-git/README.md
@@ -1,7 +1,6 @@
# Arch Linux development package
-This directory contains a draft `eglantine-git` PKGBUILD for the open Linux
-packaging request in [issue #167](https://github.com/Djihads80/Eglantine/issues/167).
+This directory contains a draft `frameropia-git` PKGBUILD adapted from Eglantine's [upstream Arch packaging request](https://github.com/Djihads80/Eglantine/issues/167).
It builds the `nx2` branch from source against Arch's system Qt, SDL3 and FFmpeg.
That avoids shipping Ubuntu-linked binaries to a rolling-release distribution
and gives the Qt frontend access to the host's platform plugins, including
diff --git a/docs/CI.md b/docs/CI.md
index a6ae68643f..02e313a9f8 100644
--- a/docs/CI.md
+++ b/docs/CI.md
@@ -1,4 +1,4 @@
-# Eglantine CI and release guide
+# Frameropia CI and release guide
This document describes the split GitHub Actions pipeline used by the fork. The workflow files live on `nx2` (the default branch). GitHub Actions must be enabled for the fork; commits made by automated integrations might not trigger a new run, so manual dispatch is available.
@@ -29,7 +29,7 @@ X.Y.Z
X.Y.Z-rcN
```
-Examples: `0.1.0-rc1`, `0.1.0`, `0.1.1-rc1`. Numeric components cannot have leading zeroes. The bundle starts with `0.1.0-rc1` as a **suggested starting point**, not as an existing Eglantine version convention. The current public releases use `build-`; confirm the first semantic version with maintainers before merging this value. The included `[0.1.0]` changelog section is intentionally empty and must receive the real initial release notes before the first versioned release can publish.
+Examples: `0.1.0-rc1`, `0.1.0`, `0.1.1-rc1`. Numeric components cannot have leading zeroes. Frameropia starts its own version sequence at `0.0.1`. Historical entries inherited from Eglantine remain in the changelog for attribution. New version numbers must be monotonic; CI will reject an existing release tag.
Add changes to the top `## [Unreleased]` section in `CHANGELOG.md`. When a new candidate is prepared, the bump script moves those entries beneath `## [X.Y.Z]` and leaves an empty `## [Unreleased]` section ready for the next cycle. The RC and stable release notes come from that version section; an absent or empty section fails before the build is published.
@@ -50,6 +50,10 @@ The bump workflow does not merge the PR for you. The merge is the approval gate.
The CI duplicate check refuses to publish a tag that already exists. It does **not** compare the new semantic version numerically with the latest release, so maintainers must keep version numbers moving forward. If a failed run did not create the release/tag, re-run the workflow after fixing the failure.
+## Windows build verification for pull requests
+
+The `fork-windows-check.yml` workflow validates Windows/MSVC compilations for source and build-system changes in pull requests to `nx2`. It uploads short-lived workflow artifacts and does **not** publish a release.
+
## Running a build manually
Open Actions → `ci` → Run workflow. Select the branch to build and choose:
@@ -86,7 +90,7 @@ Both the scheme-preparation job and the publishing job check out CI helper scrip
| Windows x86_64 | MSVC `.zip` | MinGW/clang `.zip` |
| macOS Apple Silicon | App bundle `.zip` and `.dmg` | Not built |
-The existing build steps use the repository's current CMake targets (`yuzu` and `yuzu-cmd`) and package the produced `eglantine` and `eden-cli` binaries. Linux AppImages require glibc 2.39 or newer. Linux tarballs use system Qt and other shared libraries. Windows archives contain the deployed runtime dependencies. macOS artifacts are ad-hoc signed, not notarized; Gatekeeper may require the user to approve the app on first launch.
+The existing build steps use the internal CMake targets (`yuzu` and `yuzu-cmd`) but package the public `frameropia` and `frameropia-cli` binaries. Linux AppImages require glibc 2.39 or newer. Linux tarballs use system Qt and other shared libraries. Windows archives contain the deployed runtime dependencies. macOS artifacts are ad-hoc signed, not notarized; Gatekeeper may require the user to approve the app on first launch.
Build artifacts are retained for seven days. Published GitHub Release assets remain available until a release is deleted. Daily releases are pruned to approximately the seven most recent; branch releases are rolling and are cleaned up when no longer needed.
@@ -94,10 +98,10 @@ Build artifacts are retained for seven days. Published GitHub Release assets rem
| Kind | Tag | Release title | GitHub Release flag |
| ----------------- | ---------------------- | ---------------------------------------- | ---------------------------------- |
-| Stable | `vX.Y.Z` | `Eglantine vX.Y.Z` | Not a pre-release; marked latest |
-| Release candidate | `vX.Y.Z-rcN` | `Eglantine vX.Y.Z-rcN` | Pre-release |
-| Daily | `daily-YYYYMMDD` | `Eglantine Build DD/MM/YYYY` | Pre-release; replaces same-day tag |
-| Branch / PR | `branch--` | `Eglantine Branch: ` | Pre-release; rolling |
+| Stable | `vX.Y.Z` | `Frameropia vX.Y.Z` | Not a pre-release; marked latest |
+| Release candidate | `vX.Y.Z-rcN` | `Frameropia vX.Y.Z-rcN` | Pre-release |
+| Daily | `daily-YYYYMMDD` | `Frameropia Build DD/MM/YYYY` | Pre-release; replaces same-day tag |
+| Branch / PR | `branch--` | `Frameropia Branch: ` | Pre-release; rolling |
Only stable and RC publications send the optional Discord notification. Daily and branch releases do not.
@@ -105,7 +109,7 @@ Only stable and RC publications send the optional Discord notification. Daily an
The local `setup-build` action writes the four root-level files consumed by the repository's `GetSCMRev` CMake module: `GIT-COMMIT`, `GIT-REFSPEC`, `GIT-TAG`, and (for stable/RC only) `GIT-RELEASE`. This avoids depending on tags being present in shallow checkouts or on a named branch being available in detached PR checkouts.
-Stable and RC builds get `GIT-RELEASE`, so CMake marks them as release builds. Daily and branch builds omit that file and are configured with `NIGHTLY_BUILD=ON`; stable and RC builds are configured with it off. The project currently disables the update checker in the CI build flags. The SCM/update-server template still contains upstream Eden URLs; do not enable the updater until those URLs are intentionally migrated to Eglantine's own service.
+Stable and RC builds get `GIT-RELEASE`, so CMake marks them as release builds. Daily and branch builds omit that file and are configured with `NIGHTLY_BUILD=ON`; stable and RC builds are configured with it off. The project currently disables the update checker in the CI build flags. The updater is not configured for Frameropia's GitHub releases. Keep it disabled until a compatible updater has been implemented and tested; do not fetch updates from an upstream emulator automatically.
## Troubleshooting
diff --git a/docs/FRAMEROPIA_RENAME.md b/docs/FRAMEROPIA_RENAME.md
new file mode 100644
index 0000000000..456e82800c
--- /dev/null
+++ b/docs/FRAMEROPIA_RENAME.md
@@ -0,0 +1,31 @@
+# Frameropia repository rename
+
+The public project name is **Frameropia**. The rebrand updates the emulator UI, its
+executables, packages, documentation, and project links. The *repository's name*
+is a GitHub account setting and cannot be changed by the source-code commits alone.
+
+After merging the rebrand, the repository owner should open
+`Settings → General → Repository name` and change
+`Eglantine-Framer` to `Frameropia`.
+
+Target repository: `https://github.com/Framerr/Frameropia`
+
+GitHub redirects links to renamed repositories, but update local remotes as well:
+
+```sh
+git remote set-url origin https://github.com/Framerr/Frameropia.git
+```
+
+## Compatibility notes
+
+- Existing Eden/Eglantine configuration, cache, and save directories are
+ intentionally retained for now. Do not delete them just because the app has
+ a new display name.
+- Original project attribution and dependency links remain intact.
+- Existing v0.0.1 binaries were produced before the rebrand and retain their
+ old executable names. New release builds use `frameropia` and
+ `frameropia-cli`.
+- The original icon artwork remains in place. Replacing artwork is a separate
+ change from renaming public-facing labels and package metadata.
+- The automatic updater is not configured for Frameropia. GitHub release
+ downloads should be used instead.
diff --git a/docs/POKOPIA_TESTING.md b/docs/POKOPIA_TESTING.md
index ed366329dc..f10aa04749 100644
--- a/docs/POKOPIA_TESTING.md
+++ b/docs/POKOPIA_TESTING.md
@@ -5,7 +5,7 @@ Report only what a specific build actually does, and keep each issue focused on
## First test: v0.0.1
-- Base: Eglantine `nx2`, with the fork's Vulkan null texel-buffer changes ([PR #1](https://github.com/Framerr/Eglantine-Framer/pull/1)).
+- Base: Eglantine `nx2`, with the fork's Vulkan null texel-buffer changes ([PR #1](https://github.com/Framerr/Frameropia/pull/1)).
- Purpose: establish a reproducible baseline, especially for graphics, crashes, and game startup.
- Verified in code: null texel-buffer views use `VK_WHOLE_SIZE`, and the fallback null buffer supports uniform/storage texel-buffer usage.
- **Not yet verified:** full build, in-game behavior, the photo system, geometry stability, or whether those Vulkan changes improve Pokopia.
@@ -13,9 +13,9 @@ Report only what a specific build actually does, and keep each issue focused on
## Get a test build
-1. Open [Actions → ci](https://github.com/Framerr/Eglantine-Framer/actions/workflows/ci.yml).
+1. Open [Actions → ci](https://github.com/Framerr/Frameropia/actions/workflows/ci.yml).
2. Choose **Run workflow**, branch **nx2**, `kind: stable`, `platforms: windows`, `pgo: none`, and `publish: true`.
-3. Once a build succeeds and publishes, download the Windows ZIP from [Releases](https://github.com/Framerr/Eglantine-Framer/releases). Extract the whole archive and run `eglantine.exe` — do not run it from inside the ZIP.
+3. Once a build succeeds and publishes, download the Windows ZIP from [Releases](https://github.com/Framerr/Frameropia/releases). Extract the whole archive and run `eglantine.exe` — do not run it from inside the ZIP.
4. If the workflow or Windows build fails, report the workflow run URL instead of assuming the emulator binary exists.
## Smoke-test checklist
@@ -48,7 +48,7 @@ These references provide hypotheses and prior work; they do **not** establish th
## Report a problem
-Use the [Pokopia issue form](https://github.com/Framerr/Eglantine-Framer/issues/new/choose). Include:
+Use the [Pokopia issue form](https://github.com/Framerr/Frameropia/issues/new/choose). Include:
- Exact release, commit, emulator graphics backend/settings, GPU and driver, OS, and game update.
- Reproduction steps, expected result, and actual result. Say whether it also happens on an earlier build.
diff --git a/docs/releases/v0.0.1.md b/docs/releases/v0.0.1.md
index 3fb325aa07..2969c006eb 100644
--- a/docs/releases/v0.0.1.md
+++ b/docs/releases/v0.0.1.md
@@ -1,4 +1,6 @@
-# Eglantine-Framer v0.0.1 — Patch Notes
+# Frameropia v0.0.1 — Patch Notes
+
+*This historical v0.0.1 build predates the full Frameropia application rebrand; its executable may still be labelled Eglantine.*
**First experimental release of this fork, focused on testing Pokémon Pokopia.**
This version is based on Eglantine's `nx2` branch. Features and fixes inherited from upstream are not presented as new work in this fork.
@@ -8,26 +10,26 @@ This version is based on Eglantine's `nx2` branch. Features and fixes inherited
### Graphics and emulation
- **Vulkan — null texel-buffer views:** use `VK_WHOLE_SIZE` instead of a zero-length range when creating a view of the fallback buffer.
-- **Vulkan — fallback buffer capabilities:** add `VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT` and `VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT` so the fallback buffer can be used with texel-buffer descriptors. ([PR #1](https://github.com/Framerr/Eglantine-Framer/pull/1))
+- **Vulkan — fallback buffer capabilities:** add `VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT` and `VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT` so the fallback buffer can be used with texel-buffer descriptors. ([PR #1](https://github.com/Framerr/Frameropia/pull/1))
### Releases, builds, and maintenance
-- Establish the fork's own **0.0.1** version and changelog. ([PR #2](https://github.com/Framerr/Eglantine-Framer/pull/2))
-- Allow stable releases to be started manually using the `ci` workflow. ([PR #3](https://github.com/Framerr/Eglantine-Framer/pull/3))
-- Add `fork-preflight` checks for version metadata, release notes, and CI shell scripts on pull requests and pushes to `nx2`. ([PR #5](https://github.com/Framerr/Eglantine-Framer/pull/5))
-- Add `fork-windows-release` to build and publish Windows test versions using Eglantine's existing workflows. ([PR #6](https://github.com/Framerr/Eglantine-Framer/pull/6))
+- Establish the fork's own **0.0.1** version and changelog. ([PR #2](https://github.com/Framerr/Frameropia/pull/2))
+- Allow stable releases to be started manually using the `ci` workflow. ([PR #3](https://github.com/Framerr/Frameropia/pull/3))
+- Add `fork-preflight` checks for version metadata, release notes, and CI shell scripts on pull requests and pushes to `nx2`. ([PR #5](https://github.com/Framerr/Frameropia/pull/5))
+- Add `fork-windows-release` to build and publish Windows test versions using Eglantine's existing workflows. ([PR #6](https://github.com/Framerr/Frameropia/pull/6))
- Remove the inherited `Retarget PRs` workflow, which failed because it expected an `nx2-experimental` branch that does not exist in this fork.
-- Add fork-specific patch notes with a plain-English summary. ([PR #7](https://github.com/Framerr/Eglantine-Framer/pull/7))
+- Add fork-specific patch notes with a plain-English summary. ([PR #7](https://github.com/Framerr/Frameropia/pull/7))
### Testing and issue reporting
-- Add a [Pokémon Pokopia testing guide](https://github.com/Framerr/Eglantine-Framer/blob/nx2/docs/POKOPIA_TESTING.md) covering startup, save loading, world geometry, lighting, photos, audio, saving, and performance.
-- Add a dedicated [Pokopia bug-report form](https://github.com/Framerr/Eglantine-Framer/issues/new/choose), update the README, and document the build and release process. ([PR #4](https://github.com/Framerr/Eglantine-Framer/pull/4))
-- Remove six unused inherited issue templates, leaving only the Pokopia form and its configuration. ([PR #8](https://github.com/Framerr/Eglantine-Framer/pull/8))
+- Add a [Pokémon Pokopia testing guide](https://github.com/Framerr/Frameropia/blob/nx2/docs/POKOPIA_TESTING.md) covering startup, save loading, world geometry, lighting, photos, audio, saving, and performance.
+- Add a dedicated [Pokopia bug-report form](https://github.com/Framerr/Frameropia/issues/new/choose), update the README, and document the build and release process. ([PR #4](https://github.com/Framerr/Frameropia/pull/4))
+- Remove six unused inherited issue templates, leaving only the Pokopia form and its configuration. ([PR #8](https://github.com/Framerr/Frameropia/pull/8))
## Plain-English summary
-**This is the first test version of Eglantine-Framer.** We have corrected how the emulator handles certain empty graphics resources. That change makes the graphics code more robust, but it has not yet been shown to fix a specific issue in Pokémon Pokopia.
+**This is the first test version of Frameropia.** We have corrected how the emulator handles certain empty graphics resources. That change makes the graphics code more robust, but it has not yet been shown to fix a specific issue in Pokémon Pokopia.
We have also organised the project so that Windows test builds can be produced, basic checks run automatically before changes are merged, and bugs can be reported using a dedicated form.
diff --git a/src/core/launch_params.cpp b/src/core/launch_params.cpp
index 8111bfe7a0..6570a26271 100644
--- a/src/core/launch_params.cpp
+++ b/src/core/launch_params.cpp
@@ -225,7 +225,7 @@ void ApplyLaunchParams(LaunchParams const& lp) noexcept {
}
if (lp.print_version) {
- LOG_INFO(Frontend, "Eden {} {}", Common::g_scm_branch, Common::g_scm_desc);
+ LOG_INFO(Frontend, "Frameropia {} {}", Common::g_scm_branch, Common::g_scm_desc);
}
if (lp.print_help) {
LOG_INFO(Frontend,
diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp
index c59abede5f..fc84d02a64 100644
--- a/src/qt_common/config/shared_translation.cpp
+++ b/src/qt_common/config/shared_translation.cpp
@@ -152,7 +152,7 @@ std::unique_ptr InitializeTranslations(QObject* parent) {
INSERT(Settings, nvidia_dlss, tr("Use NVIDIA DLSS in place of a game's DLSS"),
tr("Uses NVIDIA DLSS on GeForce RTX cards in place of a Switch 2 game's own DLSS, "
"instead of AMD FSR 3.1.\nNeeds NVIDIA's Streamline loader, and NVIDIA DLSS unless "
- "the NVIDIA app has downloaded it; Eglantine does not ship NVIDIA's files. Use the "
+ "the NVIDIA app has downloaded it; Frameropia does not ship NVIDIA's files. Use the "
"download button below.\nTakes effect when a game starts."));
INSERT(Settings, anti_aliasing, tr("Anti-Aliasing Method:"),
tr("The anti-aliasing method to use.\nSMAA offers the best quality.\nFXAA "
diff --git a/src/qt_common/config/uisettings.cpp b/src/qt_common/config/uisettings.cpp
index 8d593b8d9e..79e6995b04 100644
--- a/src/qt_common/config/uisettings.cpp
+++ b/src/qt_common/config/uisettings.cpp
@@ -42,7 +42,7 @@ const std::array default_hotkeys{{
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Configure Current Game")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+."), std::string(""), Qt::WidgetWithChildrenShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Continue/Pause Emulation")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F4"), std::string("Home+Plus"), Qt::WindowShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Exit Fullscreen")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Esc"), std::string(""), Qt::WindowShortcut, false}},
- {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Exit Eglantine")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+Q"), std::string("Home+Minus"), Qt::WindowShortcut, false}},
+ {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Exit Frameropia")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+Q"), std::string("Home+Minus"), Qt::WindowShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Fullscreen")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F11"), std::string("Home+B"), Qt::WindowShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Load File")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+O"), std::string(""), Qt::WidgetWithChildrenShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Browse Public Game Lobby")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+B"), std::string(""), Qt::ApplicationShortcut, false}},
diff --git a/src/qt_common/discord/discord_impl.cpp b/src/qt_common/discord/discord_impl.cpp
index 7cf1216d88..ee31683dfc 100644
--- a/src/qt_common/discord/discord_impl.cpp
+++ b/src/qt_common/discord/discord_impl.cpp
@@ -69,10 +69,9 @@ std::string DiscordImpl::GetGameString(const std::string& title) {
return icon_name;
}
-static constexpr char DEFAULT_DISCORD_TEXT[] = "Eglantine is an emulator for the Nintendo Switch";
+static constexpr char DEFAULT_DISCORD_TEXT[] = "Frameropia is an emulator for the Nintendo Switch";
static constexpr char DEFAULT_DISCORD_IMAGE[] =
- "https://git.eden-emu.dev/eden-emu/eden/raw/branch/master/dist/qt_themes/default/icons/256x256/"
- "eden.png";
+ "https://raw.githubusercontent.com/Framerr/Frameropia/nx2/dist/Eglantine.png";
void DiscordImpl::UpdateGameStatus(std::string_view game_url, bool has_boxart) {
const std::string url = std::string{has_boxart ? game_url : DEFAULT_DISCORD_IMAGE};
diff --git a/src/qt_common/qt_common.cpp b/src/qt_common/qt_common.cpp
index 7ad7a477d2..fe6df772bb 100644
--- a/src/qt_common/qt_common.cpp
+++ b/src/qt_common/qt_common.cpp
@@ -235,14 +235,14 @@ void Init(QWidget* root) {
const auto build_id = std::string(Common::g_build_id);
const auto yuzu_build =
- fmt::format("Eglantine Development Build | {}-{}", branch_name, description);
+ fmt::format("Frameropia Development Build | {}-{}", branch_name, description);
const auto override_build =
fmt::format(fmt::runtime(std::string(Common::g_title_bar_format_idle)), build_id);
const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build;
const auto processor_count = std::thread::hardware_concurrency();
// info logging
- LOG_INFO(Frontend, "Eglantine Version: {}", yuzu_build_version);
+ LOG_INFO(Frontend, "Frameropia Version: {}", yuzu_build_version);
LogRuntimes();
#ifdef ARCHITECTURE_x86_64
const auto& caps = Common::g_cpu_caps;
diff --git a/src/qt_common/util/content.cpp b/src/qt_common/util/content.cpp
index 2838cd854e..f3a45da546 100644
--- a/src/qt_common/util/content.cpp
+++ b/src/qt_common/util/content.cpp
@@ -335,7 +335,7 @@ void FixProfiles() {
"delete all orphaned profiles, and move your copied contents to the good "
"profile.
"
"Still confused? See the help page. ")
.arg(qorphaned, qgood));
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index 2fd0bd1d3c..dabd4f9f2b 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -244,7 +244,7 @@ add_executable(yuzu
game/carousel.h game/carousel.cpp
)
-set_target_properties(yuzu PROPERTIES OUTPUT_NAME "eglantine")
+set_target_properties(yuzu PROPERTIES OUTPUT_NAME "frameropia")
# Shipped next to the executable: the NX2 switches a GUI launch cannot set another way. Read at
# startup (LoadNx2Switches in main.cpp); a user copy in %APPDATA%\eden overrides it.
@@ -377,7 +377,7 @@ if (APPLE)
if (CMAKE_GENERATOR MATCHES "Xcode")
set(_icons "${_dist}/eglantine.icon")
- set_target_properties(eden PROPERTIES
+ set_target_properties(yuzu PROPERTIES
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME eglantine
MACOSX_BUNDLE_ICON_FILE eglantine
# Also force xcode to manage signing for us.
diff --git a/src/yuzu/Info.plist b/src/yuzu/Info.plist
index 9b6d49b87a..7f2f482a8f 100644
--- a/src/yuzu/Info.plist
+++ b/src/yuzu/Info.plist
@@ -21,13 +21,13 @@ SPDX-License-Identifier: GPL-2.0-or-later
CFBundleIconNameeglantineCFBundleIdentifier
- com.yuzu-emu.yuzu
+ io.github.framerr.frameropiaCFBundleInfoDictionaryVersion6.0CFBundleLongVersionStringCFBundleName
- eglantine
+ FrameropiaCFBundlePackageTypeAPPLCFBundleShortVersionString
diff --git a/src/yuzu/aboutdialog.ui b/src/yuzu/aboutdialog.ui
index ff5d0c9738..39e183fe6f 100644
--- a/src/yuzu/aboutdialog.ui
+++ b/src/yuzu/aboutdialog.ui
@@ -11,7 +11,7 @@
- About Eglantine
+ About Frameropia
@@ -69,7 +69,7 @@
- <html><head/><body><p><span style=" font-size:28pt;">Eglantine</span></p></body></html>
+ <html><head/><body><p><span style=" font-size:28pt;">Frameropia</span></p></body></html>
@@ -102,7 +102,7 @@ hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: "\2610"; }
li.checked::marker { content: "\2612"; }
</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eglantine is an experimental open-source emulator for the Nintendo Switch 2, based on the Eden emulator. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Frameropia is an experimental open-source emulator for the Nintendo Switch 2, based on Eglantine and Eden. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html>
Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter
@@ -128,7 +128,7 @@ li.checked::marker { content: "\2612"; }
- <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html>
+ <html><head/><body><p><a href="https://github.com/Framerr/Frameropia">Source Code</a> | <a href="https://github.com/Framerr/Frameropia/issues">Issues</a> | <a href="https://github.com/Framerr/Frameropia/graphs/contributors">Contributors</a> | <a href="https://github.com/Framerr/Frameropia/blob/nx2/LICENSE.txt">License</a></p></body></html>true
@@ -144,7 +144,7 @@ li.checked::marker { content: "\2612"; }
- <html><head/><body><p><span style=" font-size:7pt;">"Nintendo Switch" is a trademark of Nintendo. Eglantine is not affiliated with Nintendo in any way.</span></p></body></html>
+ <html><head/><body><p><span style=" font-size:7pt;">"Nintendo Switch" is a trademark of Nintendo. Frameropia is not affiliated with Nintendo in any way.</span></p></body></html>
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp
index 7b68e0761b..71fb05f49b 100644
--- a/src/yuzu/bootmanager.cpp
+++ b/src/yuzu/bootmanager.cpp
@@ -118,7 +118,7 @@ struct NullRenderWidget : public RenderWidget {
GRenderWindow::GRenderWindow(MainWindow* parent,
std::shared_ptr input_subsystem_)
: QWidget(parent), input_subsystem{std::move(input_subsystem_)} {
- setWindowTitle(QStringLiteral("Eglantine %1 | %2-%3")
+ setWindowTitle(QStringLiteral("Frameropia %1 | %2-%3")
.arg(QString::fromUtf8(Common::g_build_name),
QString::fromUtf8(Common::g_scm_branch),
QString::fromUtf8(Common::g_scm_desc)));
@@ -863,7 +863,7 @@ bool GRenderWindow::InitializeOpenGL() {
return true;
#else
QMessageBox::warning(this, tr("OpenGL not available!"),
- tr("Eglantine has not been compiled with OpenGL support."));
+ tr("Frameropia has not been compiled with OpenGL support."));
return false;
#endif
}
diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui
index f0f93afdc5..d64d4cb1ea 100644
--- a/src/yuzu/configuration/configure.ui
+++ b/src/yuzu/configuration/configure.ui
@@ -17,7 +17,7 @@
- Eglantine Configuration
+ Frameropia Configuration
diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui
index 12cbd29e1c..cce075bf26 100644
--- a/src/yuzu/configuration/configure_debug.ui
+++ b/src/yuzu/configuration/configure_debug.ui
@@ -784,7 +784,7 @@
- **This will be reset automatically when Eglantine closes.
+ **This will be reset automatically when Frameropia closes.20
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp
index 14776392c4..6a26b2c635 100644
--- a/src/yuzu/configuration/configure_general.cpp
+++ b/src/yuzu/configuration/configure_general.cpp
@@ -98,7 +98,7 @@ void ConfigureGeneral::SetResetCallback(std::function callback) {
void ConfigureGeneral::ResetDefaults() {
QMessageBox::StandardButton answer = QMessageBox::question(
- this, tr("Eglantine"),
+ this, tr("Frameropia"),
tr("This reset all settings and remove all per-game configurations. This will not delete "
"game directories, profiles, or input profiles. Proceed?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
diff --git a/src/yuzu/configuration/configure_input_advanced.ui b/src/yuzu/configuration/configure_input_advanced.ui
index 06b6883839..f3cefbcff5 100644
--- a/src/yuzu/configuration/configure_input_advanced.ui
+++ b/src/yuzu/configuration/configure_input_advanced.ui
@@ -2656,7 +2656,7 @@
- Requires restarting Eglantine
+ Requires restarting Frameropia
@@ -2698,7 +2698,7 @@
- Requires restarting Eglantine
+ Requires restarting Frameropia
@@ -2714,7 +2714,7 @@
- Requires restarting Eglantine
+ Requires restarting Frameropia
diff --git a/src/yuzu/configuration/configure_motion_touch.cpp b/src/yuzu/configuration/configure_motion_touch.cpp
index 571d9a6ec5..ce3cc2bb3e 100644
--- a/src/yuzu/configuration/configure_motion_touch.cpp
+++ b/src/yuzu/configuration/configure_motion_touch.cpp
@@ -163,27 +163,27 @@ void ConfigureMotionTouch::OnUDPAddServer() {
const int row = udp_server_list_model->rowCount();
if (!ok) {
- QMessageBox::warning(this, tr("Eglantine"), tr("Port number has invalid characters"));
+ QMessageBox::warning(this, tr("Frameropia"), tr("Port number has invalid characters"));
return;
}
if (port_number < 0 || port_number > 65353) {
- QMessageBox::warning(this, tr("Eglantine"), tr("Port has to be in range 0 and 65353"));
+ QMessageBox::warning(this, tr("Frameropia"), tr("Port has to be in range 0 and 65353"));
return;
}
if (!re.match(server_text).hasMatch()) {
- QMessageBox::warning(this, tr("Eglantine"), tr("IP address is not valid"));
+ QMessageBox::warning(this, tr("Frameropia"), tr("IP address is not valid"));
return;
}
// Search for duplicates
for (const auto& item : udp_server_list_model->stringList()) {
if (item == server_string) {
- QMessageBox::warning(this, tr("Eglantine"), tr("This UDP server already exists"));
+ QMessageBox::warning(this, tr("Frameropia"), tr("This UDP server already exists"));
return;
}
}
// Limit server count to 8
if (row == 8) {
- QMessageBox::warning(this, tr("Eglantine"), tr("Unable to add more than 8 servers"));
+ QMessageBox::warning(this, tr("Frameropia"), tr("Unable to add more than 8 servers"));
return;
}
@@ -277,7 +277,7 @@ void ConfigureMotionTouch::OnConfigureTouchFromButton() {
bool ConfigureMotionTouch::CanCloseDialog() {
if (udp_test_in_progress) {
- QMessageBox::warning(this, tr("Eglantine"),
+ QMessageBox::warning(this, tr("Frameropia"),
tr("UDP Test or calibration configuration is in progress. Please "
"wait for them to finish."));
return false;
diff --git a/src/yuzu/configuration/configure_touchscreen_advanced.ui b/src/yuzu/configuration/configure_touchscreen_advanced.ui
index 9490e871ce..08be510402 100644
--- a/src/yuzu/configuration/configure_touchscreen_advanced.ui
+++ b/src/yuzu/configuration/configure_touchscreen_advanced.ui
@@ -23,7 +23,7 @@
- Warning: The settings in this page affect the inner workings of Eglantine's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing.
+ Warning: The settings in this page affect the inner workings of Frameropia's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing.true
diff --git a/src/yuzu/configuration/configure_web.cpp b/src/yuzu/configuration/configure_web.cpp
index 987de5989a..78b361c7a9 100644
--- a/src/yuzu/configuration/configure_web.cpp
+++ b/src/yuzu/configuration/configure_web.cpp
@@ -45,10 +45,6 @@ ConfigureWeb::ConfigureWeb(QWidget* parent)
connect(ui->button_generate, &QPushButton::clicked, this, &ConfigureWeb::GenerateToken);
-#ifndef USE_DISCORD_PRESENCE
- ui->discord_group->setVisible(false);
-#endif
-
SetConfiguration();
RetranslateUI();
}
@@ -76,7 +72,6 @@ void ConfigureWeb::SetConfiguration() {
VerifyLogin();
- ui->toggle_discordrpc->setChecked(UISettings::values.enable_discord_presence.GetValue());
}
void ConfigureWeb::GenerateToken() {
@@ -93,7 +88,6 @@ void ConfigureWeb::GenerateToken() {
}
void ConfigureWeb::ApplyConfiguration() {
- UISettings::values.enable_discord_presence = ui->toggle_discordrpc->isChecked();
Settings::values.eden_username = ui->edit_username->text().toStdString();
Settings::values.eden_token = ui->edit_token->text().toStdString();
}
diff --git a/src/yuzu/configuration/configure_web.ui b/src/yuzu/configuration/configure_web.ui
index 91b3383185..a65366712d 100644
--- a/src/yuzu/configuration/configure_web.ui
+++ b/src/yuzu/configuration/configure_web.ui
@@ -22,7 +22,7 @@
- Eglantine Web Service
+ Frameropia Web Service
@@ -136,22 +136,6 @@
-
-
-
- Discord Presence
-
-
-
-
-
- Show Current Game in your Discord Status
-
-
-
-
-
-
diff --git a/src/yuzu/configuration/nvidia_dlss_panel.cpp b/src/yuzu/configuration/nvidia_dlss_panel.cpp
index 040ea90557..6bad69d0c5 100644
--- a/src/yuzu/configuration/nvidia_dlss_panel.cpp
+++ b/src/yuzu/configuration/nvidia_dlss_panel.cpp
@@ -454,7 +454,7 @@ void NvidiaDlssPanel::Download() {
dialog.setWindowTitle(Tr("Download NVIDIA DLSS"));
QVBoxLayout* layout = new QVBoxLayout(&dialog);
QLabel* intro = new QLabel(
- Tr("Eglantine will download %1 from NVIDIA's Streamline %2 release on GitHub into %3. "
+ Tr("Frameropia will download %1 from NVIDIA's Streamline %2 release on GitHub into %3. "
"These files are NVIDIA's, under NVIDIA's licence terms below.")
.arg(names.join(QStringLiteral(" and ")), QString::fromLatin1(RELEASE_VERSION),
PathText(folder)),
diff --git a/src/yuzu/configuration/system/new_user_dialog.ui b/src/yuzu/configuration/system/new_user_dialog.ui
index e20628b024..f67216307f 100644
--- a/src/yuzu/configuration/system/new_user_dialog.ui
+++ b/src/yuzu/configuration/system/new_user_dialog.ui
@@ -57,7 +57,7 @@
- Eglantine
+ Frameropia
diff --git a/src/yuzu/deps_dialog.ui b/src/yuzu/deps_dialog.ui
index bd5be97606..05f74a1048 100644
--- a/src/yuzu/deps_dialog.ui
+++ b/src/yuzu/deps_dialog.ui
@@ -11,7 +11,7 @@
- Eglantine Dependencies
+ Frameropia Dependencies
@@ -69,7 +69,7 @@
- <html><head/><body><p><span style=" font-size:28pt;">Eglantine Dependencies</span></p></body></html>
+ <html><head/><body><p><span style=" font-size:28pt;">Frameropia Dependencies</span></p></body></html>
@@ -82,7 +82,7 @@
- <html><head/><body><p>The projects that make Eglantine possible</p></body></html>
+ <html><head/><body><p>The projects that make Frameropia possible</p></body></html>
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 3a8b28e587..5bc03ac85e 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -194,7 +194,7 @@ int main(int argc, char* argv[]) {
// Init settings params
QCoreApplication::setOrganizationName(QStringLiteral("eden"));
- QCoreApplication::setApplicationName(QStringLiteral("Eglantine"));
+ QCoreApplication::setApplicationName(QStringLiteral("Frameropia"));
// Increases the maximum open file limit.
// TODO: This should be common to all frontends.
@@ -246,7 +246,7 @@ int main(int argc, char* argv[]) {
// Fix the Wayland appId. This needs to match the name of the .desktop file without the .desktop
// suffix.
- QGuiApplication::setDesktopFileName(QStringLiteral("dev.eglantine.eglantine"));
+ QGuiApplication::setDesktopFileName(QStringLiteral("io.github.framerr.frameropia"));
#endif
auto rounding_policy = GetHighDpiRoundingPolicy();
diff --git a/src/yuzu/main.ui b/src/yuzu/main.ui
index 5fe25aa252..6b760aaf10 100644
--- a/src/yuzu/main.ui
+++ b/src/yuzu/main.ui
@@ -11,11 +11,11 @@
- Eglantine
+ Frameropia
- :/img/eglantine.ico:/img/eglantine.ico
+ :/img/frameropia.ico:/img/frameropia.ico
QTabWidget::TabShape::Rounded
@@ -59,7 +59,7 @@
- Open &Eglantine Folders
+ Open &Frameropia Folders
@@ -292,7 +292,7 @@
- &About Eglantine
+ &About Frameropia
@@ -555,7 +555,7 @@
- &Eglantine Dependencies
+ &Frameropia Dependencies
diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp
index 9b3170ed7e..9554e6b7e1 100644
--- a/src/yuzu/main_window.cpp
+++ b/src/yuzu/main_window.cpp
@@ -420,7 +420,7 @@ MainWindow::MainWindow(bool has_broken_vulkan)
default_theme_paths = QIcon::themeSearchPaths();
UpdateUITheme();
- SetDiscordEnabled(UISettings::values.enable_discord_presence.GetValue());
+ SetDiscordEnabled(false);
discord_rpc->Update();
play_time_manager = std::make_unique();
@@ -1300,7 +1300,7 @@ void MainWindow::InitializeHotkeys() {
hotkey_registry.LoadHotkeys();
LinkActionShortcut(ui->action_Load_File, QStringLiteral("Load File"));
- LinkActionShortcut(ui->action_Exit, QStringLiteral("Exit Eglantine"));
+ LinkActionShortcut(ui->action_Exit, QStringLiteral("Exit Frameropia"));
LinkActionShortcut(ui->action_Restart, QStringLiteral("Restart Emulation"));
LinkActionShortcut(ui->action_Pause, QStringLiteral("Continue/Pause Emulation"));
LinkActionShortcut(ui->action_Stop, QStringLiteral("Stop Emulation"));
@@ -1850,8 +1850,8 @@ bool MainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPar
tr("This is usually caused by outdated GPU drivers. "
"Please see the log for more details. See: "
""
+ "href='https://github.com/Framerr/Frameropia/blob/"
+ "nx2/docs/user/HowToAccessLogs.md'>"
"How to access log files."));
break;
default:
@@ -1865,7 +1865,7 @@ bool MainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPar
tr("Error while loading ROM! %1", "%1 signifies a numeric error code.")
.arg(QString::fromStdString(error_code));
const auto description =
- tr("%1 Please redump your files or ask on Discord/Stoat for help.",
+ tr("%1 Please redump your files or report the problem on the Frameropia GitHub issue tracker.",
"%1 signifies an error string.")
.arg(QString::fromStdString(
GetResultStatusString(static_cast(error_id))));
@@ -1933,7 +1933,7 @@ void MainWindow::BootGame(const QString& filename, Service::AM::FrontendAppletPa
if (close_pending) {
return;
}
- LOG_INFO(Frontend, "Eglantine starting...");
+ LOG_INFO(Frontend, "Frameropia starting...");
if (params.program_id == 0 ||
params.program_id > static_cast(Service::AM::AppletProgramId::MaxProgramId)) {
@@ -1976,7 +1976,7 @@ void MainWindow::BootGame(const QString& filename, Service::AM::FrontendAppletPa
"Vulkan, 1x resolution, GPU Fast, asynchronous shaders, BC3, conservative VRAM, "
"reactive flushing off, FIFO Relaxed VSync, handheld mode, ScaleForce, and "
"FXAA.\n\n"
- "They apply to Mario Kart World until Eglantine is closed. Your saved settings "
+ "They apply to Mario Kart World until Frameropia is closed. Your saved settings "
"are not changed."),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes;
LOG_INFO(Config, "MKW recommended settings accepted: {}", use_recommended_mkw_settings);
@@ -1997,7 +1997,7 @@ void MainWindow::BootGame(const QString& filename, Service::AM::FrontendAppletPa
"Vulkan, 1x resolution, GPU Fast, asynchronous shaders, BC3, conservative VRAM, "
"reactive flushing on, FIFO Relaxed VSync, docked mode, ScaleForce, and "
"FXAA.\n\n"
- "They apply to Ocarina of Time until Eglantine is closed. Your saved settings "
+ "They apply to Ocarina of Time until Frameropia is closed. Your saved settings "
"are not changed."),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes;
LOG_INFO(Config, "OOT recommended settings accepted: {}", use_recommended_oot_settings);
@@ -3361,7 +3361,7 @@ void MainWindow::OnOpenModsPage() {
void MainWindow::OnOpenUserHandbook() {
OpenURL(QUrl(QStringLiteral(
- "https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/README.md")));
+ "https://github.com/Framerr/Frameropia/blob/nx2/docs/user/README.md")));
}
void MainWindow::ToggleFullscreen() {
@@ -3588,7 +3588,6 @@ void MainWindow::ToggleShowGameName() {
void MainWindow::OnConfigure() {
const auto old_theme = UISettings::values.theme;
- const bool old_discord_presence = UISettings::values.enable_discord_presence.GetValue();
const auto old_language_index = Settings::values.language_index.GetValue();
const bool old_gamemode = UISettings::values.enable_gamemode.GetValue();
#ifdef __unix__
@@ -3652,9 +3651,6 @@ void MainWindow::OnConfigure() {
if (UISettings::values.theme != old_theme) {
UpdateUITheme();
}
- if (UISettings::values.enable_discord_presence.GetValue() != old_discord_presence) {
- SetDiscordEnabled(UISettings::values.enable_discord_presence.GetValue());
- }
if (UISettings::values.enable_gamemode.GetValue() != old_gamemode) {
SetGamemodeEnabled(UISettings::values.enable_gamemode.GetValue());
}
@@ -4911,7 +4907,7 @@ void MainWindow::OnCheckGraphicsBackend() {
UISettings::values.gui_force_x11.SetValue(true);
GraphicsBackend::SetForceX11(true);
QMessageBox::information(this, tr("Restart Required"),
- tr("Restart Eglantine to apply the X11 backend."));
+ tr("Restart Frameropia to apply the X11 backend."));
}
}
#endif
@@ -5030,8 +5026,8 @@ bool MainWindow::ConfirmClose() {
UISettings::values.confirm_before_stopping.GetValue() == ConfirmStop::Ask_Based_On_Game)
return true;
- const auto text = tr("Are you sure you want to close Eglantine?");
- return question(this, tr("Eglantine"), text);
+ const auto text = tr("Are you sure you want to close Frameropia?");
+ return question(this, tr("Frameropia"), text);
}
void MainWindow::closeEvent(QCloseEvent* event) {
@@ -5137,7 +5133,7 @@ bool MainWindow::ConfirmChangeGame() {
// Use custom question to link controller navigation
return question(
- this, tr("Eglantine"),
+ this, tr("Frameropia"),
tr("Are you sure you want to stop the emulation? Any unsaved progress will be lost."),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
@@ -5147,10 +5143,10 @@ bool MainWindow::ConfirmForceLockedExit() {
return true;
const auto text =
- tr("The currently running application has requested Eglantine to not exit.\n\n"
+ tr("The currently running application has requested Frameropia to not exit.\n\n"
"Would you like to bypass this and exit anyway?");
- return question(this, tr("Eglantine"), text);
+ return question(this, tr("Frameropia"), text);
}
void MainWindow::RequestGameExit() {
diff --git a/src/yuzu/ryujinx_dialog.ui b/src/yuzu/ryujinx_dialog.ui
index 511a6c5ba0..daf697562e 100644
--- a/src/yuzu/ryujinx_dialog.ui
+++ b/src/yuzu/ryujinx_dialog.ui
@@ -23,9 +23,9 @@
- Linking save data to Ryujinx lets both Ryujinx and Eglantine reference the same save files for your games.
+ Linking save data to Ryujinx lets both Ryujinx and Frameropia reference the same save files for your games.
-By selecting "From Eglantine", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx".
+By selecting "From Frameropia", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx".true
@@ -37,7 +37,7 @@ By selecting "From Eglantine", previous save data stored in Ryujinx wi
- From Eglantine
+ From Frameropia
diff --git a/src/yuzu/util/icon_search.cpp b/src/yuzu/util/icon_search.cpp
index e16e12f372..d219a1dfd2 100644
--- a/src/yuzu/util/icon_search.cpp
+++ b/src/yuzu/util/icon_search.cpp
@@ -211,7 +211,7 @@ HttpResult HttpGet(const std::string& full_url, std::chrono::steady_clock::time_
#ifdef YUZU_BUNDLED_OPENSSL
client.load_ca_cert_store(kCert, sizeof(kCert));
#endif
- httplib::Headers headers{{"User-Agent", "Eglantine"}};
+ httplib::Headers headers{{"User-Agent", "Frameropia"}};
if (!bearer_token.empty()) {
headers.emplace("Authorization", "Bearer " + bearer_token);
}
diff --git a/src/yuzu/yuzu.qrc b/src/yuzu/yuzu.qrc
index e28b90cdfe..3065d22f34 100644
--- a/src/yuzu/yuzu.qrc
+++ b/src/yuzu/yuzu.qrc
@@ -5,6 +5,6 @@ SPDX-License-Identifier: GPL-2.0-or-later
- ../../dist/eden.ico
+ ../../dist/eden.ico
diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt
index cfc0c6e77e..c128dfcd84 100644
--- a/src/yuzu_cmd/CMakeLists.txt
+++ b/src/yuzu_cmd/CMakeLists.txt
@@ -38,6 +38,8 @@ add_executable(yuzu-cmd
${OPENGL_SOURCES}
)
+set_target_properties(yuzu-cmd PROPERTIES OUTPUT_NAME "frameropia-cli")
+
target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common video_core)
if (ENABLE_OPENGL)
target_link_libraries(yuzu-cmd PRIVATE glad)
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index bbf2776d5e..7325c70d22 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -531,8 +531,7 @@ extern "C" SDL_AppResult SDL_AppInit(void **appstate, int argc, char **argv) {
const u16 error_id = u16(load_result) - loader_id;
LOG_CRITICAL(Frontend,
"While attempting to load the ROM requested, an error occurred. Please "
- "refer to the Eden wiki for more information or the Eden discord for "
- "additional help.\n\nError Code: {:04X}-{:04X}\nError Description: {}",
+ "see https://github.com/Framerr/Frameropia/issues for support.\n\nError Code: {:04X}-{:04X}\nError Description: {}",
loader_id, error_id, Loader::ResultStatus(error_id));
return SDL_APP_FAILURE;
}
diff --git a/tools/ci/check-frameropia-branding.sh b/tools/ci/check-frameropia-branding.sh
new file mode 100644
index 0000000000..9e3c37db8e
--- /dev/null
+++ b/tools/ci/check-frameropia-branding.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+# Verifies public-facing branding and build-output wiring.
+set -euo pipefail
+
+require() {
+ local file="$1" expected="$2"
+ grep -Fq -- "$expected" "$file" || {
+ echo "Missing '$expected' in $file" >&2
+ exit 1
+ }
+}
+
+for file in README.md src/yuzu/main.ui src/yuzu/aboutdialog.ui; do
+ require "$file" "Frameropia"
+done
+require src/yuzu/configuration/configure.ui "Frameropia Configuration"
+require CMakeModules/GenerateSCMRev.cmake 'set(REPO_NAME "Frameropia")'
+require src/yuzu/CMakeLists.txt 'OUTPUT_NAME "frameropia"'
+require src/yuzu_cmd/CMakeLists.txt 'OUTPUT_NAME "frameropia-cli"'
+require .github/workflows/build-windows.yml 'frameropia.exe'
+require .github/workflows/build-linux.yml 'build/release/bin/frameropia'
+require .github/workflows/build-macos.yml 'build/release/bin/frameropia.app'
+require .github/workflows/release.yml 'pattern: frameropia-*'
+require src/yuzu/aboutdialog.ui 'https://github.com/Framerr/Frameropia'
+require src/yuzu/main_window.cpp 'https://github.com/Framerr/Frameropia'
+test -s dist/io.github.framerr.frameropia.desktop
+test -s dist/io.github.framerr.frameropia.metainfo.xml
+test -s dist/io.github.framerr.frameropia.xml
+require CMakeLists.txt 'dist/io.github.framerr.frameropia.desktop'
+require CMakeLists.txt 'dist/io.github.framerr.frameropia.metainfo.xml'
+require CMakeLists.txt 'dist/io.github.framerr.frameropia.xml'
+
+if grep -Eqi 'discord_group|toggle_discordrpc|discord\.gg|>Discord<' \
+ src/yuzu/configuration/configure_web.ui src/yuzu/aboutdialog.ui; then
+ echo "Discord options or links are still visible in the UI" >&2
+ exit 1
+fi
+
+echo "Frameropia branding and release packaging checks passed."
diff --git a/tools/ci/prepare.sh b/tools/ci/prepare.sh
index 1463d851a8..e109afcb60 100644
--- a/tools/ci/prepare.sh
+++ b/tools/ci/prepare.sh
@@ -69,7 +69,7 @@ case "$mode" in
tag="daily-$day"
refspec="$tag"
version="$day-${sha:0:7}"
- title="Eglantine Build $(date -u +%d/%m/%Y)"
+ title="Frameropia Build $(date -u +%d/%m/%Y)"
latest=$(daily_tags | head -n1 || true)
prev_tag=$(daily_tags | grep -vxF "$tag" | head -n1 || true)
if [[ "$force" == false && -n "$latest" ]] &&
@@ -82,7 +82,7 @@ case "$mode" in
tag="v$base"
refspec="$tag"
version="$tag"
- title="Eglantine $tag"
+ title="Frameropia $tag"
nightly=false
if [[ "$base" == *-rc* ]]; then
kind=rc
@@ -117,7 +117,7 @@ case "$mode" in
tag="branch-$slug"
refspec="$slug"
version="$slug-${sha:0:7}"
- title="Eglantine Branch: ${pr_title:-$branch}"
+ title="Frameropia Branch: ${pr_title:-$branch}"
;;
*)
diff --git a/tools/ci/release-notes.sh b/tools/ci/release-notes.sh
index 2e8546eba8..6dbf16ff2c 100644
--- a/tools/ci/release-notes.sh
+++ b/tools/ci/release-notes.sh
@@ -17,7 +17,7 @@ macos_ver="${macos_ver#macos-}"
link() { if [[ -e "$dir/$2" ]]; then printf '[%s](%s/%s)' "$1" "$base" "$2"; fi; return 0; }
join() { if [[ -n "$1" && -n "$2" ]]; then printf '%s · %s' "$1" "$2"; else printf '%s%s' "$1" "$2"; fi; }
-linux_cell() { join "$(link AppImage "eglantine-$1.AppImage")" "$(link tar.gz "eglantine-$1.tar.gz")"; }
+linux_cell() { join "$(link AppImage "frameropia-$1.AppImage")" "$(link tar.gz "frameropia-$1.tar.gz")"; }
row() { if [[ -n "$2$3" ]]; then printf '| %s | %s | %s | %s |\n' "$1" "$2" "$3" "${4:-}"; fi; }
commits() { git log --no-merges --pretty='- %s (`%h`)' "$@" 2>/dev/null | head -n 100 || true; }
@@ -38,7 +38,7 @@ commits() { git log --no-merges --pretty='- %s (`%h`)' "$@" 2>/dev/null | head -
# The checked-out default branch provides the trusted release notes.
# The matching CHANGELOG section above is still required and validated.
fork_notes="docs/releases/${tag}.md"
- if [[ "$repo" == "Framerr/Eglantine-Framer" && -s "$fork_notes" ]]; then
+ if [[ ( "$repo" == "Framerr/Frameropia" || "$repo" == "Framerr/Eglantine-Framer" ) && -s "$fork_notes" ]]; then
cat "$fork_notes"
printf '\n'
else
@@ -79,13 +79,13 @@ EOF2
printf '\n'
fi
- w_msvc=$(link 'MSVC zip' eglantine-windows-x86_64.zip)
- w_pgo=$(link 'MinGW PGO zip' eglantine-windows-x86_64-pgo.zip)
+ w_msvc=$(link 'MSVC zip' frameropia-windows-x86_64.zip)
+ w_pgo=$(link 'MinGW PGO zip' frameropia-windows-x86_64-pgo.zip)
if [[ -n "$w_msvc$w_pgo" ]]; then
cat <<'EOF2'
## Windows
-Windows packages are in-place zip files: extract and run `eglantine.exe`, or `eden-cli.exe` from a terminal.
+Windows packages are in-place zip files: extract and run `frameropia.exe`, or `frameropia-cli.exe` from a terminal.
| Build Type | Standard | PGO (Recommended) | Notes |
| --- | --- | --- | --- |
@@ -95,15 +95,15 @@ EOF2
printf '\n'
fi
- m_zip=$(link zip eglantine-macos-arm64.zip)
- m_dmg=$(link dmg eglantine-macos-arm64.dmg)
+ m_zip=$(link zip frameropia-macos-arm64.zip)
+ m_dmg=$(link dmg frameropia-macos-arm64.dmg)
if [[ -n "$m_zip$m_dmg" ]]; then
printf '## macOS\n\n| Build Type | Standard | PGO (Recommended) | Notes |\n| --- | --- | --- | --- |\n'
- row 'arm64 (Apple Silicon)' "$(join "$m_zip" "$m_dmg")" '' "macOS ${macos_ver} or newer. Not notarized: right-click and choose Open the first time, or run `xattr -dr com.apple.quarantine eglantine.app`. `eden-cli` is inside the app, in `Contents/MacOS`."
+ row 'arm64 (Apple Silicon)' "$(join "$m_zip" "$m_dmg")" '' "macOS ${macos_ver} or newer. Not notarized: right-click and choose Open the first time, or run `xattr -dr com.apple.quarantine frameropia.app`. `frameropia-cli` is inside the app, in `Contents/MacOS`."
printf '\n'
fi
if [[ -n "$x_pgo$a_pgo$w_pgo" ]]; then
- echo "The PGO builds are the same programs compiled with profile-guided optimization (clang plus Eglantine's profile); prefer them when your CPU supports it."
+ echo "The PGO builds are the same programs compiled with profile-guided optimization (clang plus the inherited Eglantine profile); prefer them when your CPU supports it."
fi
} > "$out"