* DolphinQt: Remove unneeded Win32 code Dolphin already uses QStyleHints::colorScheme to detect dark mode, so this code is now redundant. * VideoBackendBase: Only populate backend info when uninitialized Prevent potential issues when creating the Graphics window (and thus calling PopulateBackendInfo) while the core state is Stopping, like we already do while it's Starting or Running. * linux: Use D-Bus to inhibit screensaver * Android: Add 16 KiB page size support So far, Dolphin hasn't been able to run on Android devices that use a 16 KiB page size. 16 KiB page sizes are a very new Android feature that no phones have shipped with so far, so we're still compatible with the phones that exist out there, but let's get this fixed before phones start shipping with 16 KiB page sizes. Because I couldn't get Android Studio's emulator to work, I haven't been able to confirm that this change actually makes Dolphin fully compatible with devices that use a 16 KiB page size. But I have confirmed that this doesn't break anything on a regular 4 KiB page size device. * Android: Use enableEdgeToEdge Dolphin has been using edge-to-edge rendering for a little while now, but it has required a bit of manual work. Now that edge-to-edge is becoming something expected of apps in Android 15, there's a nicer API we can use. Tested on Android 8, 11 and 13, with no changes in behavior noted. * GameINI: Fix Cheats for Conduit 2 These codes are actually Gecko codes so setting that correctly. There were errors which pop up when running this game as the comments for AR codes need to be set with hash(#) instead of asterisk(*). I replaced those anyways. Removed the url in the comment since it's inaccessible and not on wayback machine either. Also corrected the GameID, the wrong one is listed. * GameINI: Remove Obsolete Settings in Super Metroid Demo (Brawl VC) Both UseXFB and UseRealXFB are obsolete since Hybrid XFB. * GameINI: Remove Obsolete Setting in FaceBreaker K.O. Party Hack is not a valid setting. Also updated the GameID. * GameINI: Rename INI for Naruto Collection (Demo) The wrong filename was used so the settings weren't being applied. (All it does is reset the Texture Cache Accuracy to the default setting.) * GameINI: Disable AA in Sonic Heroes The use of any anti-aliasing will cause graphical corruption, which occurs on the ground. MaxAnisotropy is supposed to be for [Video_Enhancements], but also it doesn't cause any of the issues in game so it is being removed rather than set under the correct heading. Added a comment on why these values are set. * GameINI: Set Texture Cache Accuracy to "Safe" for UFC Personal Trainer: The Ultimate Fitness System SafeTextureCacheColorSamples is supposed to be for [Video_Settings], but also the medium setting isn't enough to display the missing text. * Boot: write Apploader version into memory When HLE-ing the apploader, this is necessary to avoid "Error #002" errors. Homebrew doesn't care. * VolumeVerifier: Promote `DEBUG_ASSERT` to `static_assert` This runtime assertion was added before `std::is_sorted` became constexpr in the codebase. * VideoBackends:Metal: Use ios_use_simdgroup_functions with SPIRV-Cross It defaults to trying to emulate simdgroup functions on iOS * VideoCommon: Dirty pixel shader manager on efb scale changes * WII_IPC: rewrite multiply as 100_tbticks literal (NFC) * GameSettings: safe texture cache for "Winter Sports 3: The Great Tournament" This is required to avoid glitches during Downhill Skiing. * VideoBackends:Metal: subgroup_ops requires Apple7, not Apple6 SIMD-scoped permute operations are Apple6, but reduction operations are Apple7 * Revert "Allow shared zlib-ng" This reverts commit |
||
---|---|---|
.github/workflows | ||
.tx | ||
CMake | ||
Data | ||
docs | ||
Externals | ||
Flatpak | ||
Installer | ||
Languages | ||
LICENSES | ||
Source | ||
Tools | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.mailmap | ||
AndroidSetup.md | ||
build-appimage.sh | ||
build-linux.sh | ||
build-mac.sh | ||
BuildMacOSUniversalBinary.py | ||
CMakeLists.txt | ||
CMakeSettings.json | ||
CODE_OF_CONDUCT.md | ||
Contributing.md | ||
COPYING | ||
Readme.md |
Slippi Mainline
This is a WIP effort to port the functionality of https://github.com/project-slippi/Ishiiruka to mainline Dolphin. Currently, we are close enough to upstream main and close to on par with project-slippi/Ishii main. Netplay functionality works everywhere except teams, playback is busted, rust code is hooked up Last updated 2023-09-01
How can I contribute?
The project board is visible here: https://github.com/r2dliu/dolphin/projects/1
Read through the list of issues, and comment on one to claim it. You can also create a new issue if one does not exist already. Create a pull request and then submit it for approval.
Other questions
Ping or message nikki (metonym) in the Slippi Discord. https://slippi.gg/discord
Dolphin - A GameCube and Wii Emulator
Homepage | Project Site | Buildbot | Forums | Wiki | GitHub Wiki | Issue Tracker | Coding Style | Transifex Page
Dolphin is an emulator for running GameCube and Wii games on Windows, Linux, macOS, and recent Android devices. It's licensed under the terms of the GNU General Public License, version 2 or later (GPLv2+).
Please read the FAQ before using Dolphin.
System Requirements
Desktop
- OS
- Windows (10 1703 or higher).
- Linux.
- macOS (10.15 Catalina or higher).
- Unix-like systems other than Linux are not officially supported but might work.
- Processor
- A CPU with SSE2 support.
- A modern CPU (3 GHz and Dual Core, not older than 2008) is highly recommended.
- Graphics
- A reasonably modern graphics card (Direct3D 11.1 / OpenGL 3.3).
- A graphics card that supports Direct3D 11.1 / OpenGL 4.4 is recommended.
Android
- OS
- Android (5.0 Lollipop or higher).
- Processor
- A processor with support for 64-bit applications (either ARMv8 or x86-64).
- Graphics
- A graphics processor that supports OpenGL ES 3.0 or higher. Performance varies heavily with driver quality.
- A graphics processor that supports standard desktop OpenGL features is recommended for best performance.
Dolphin can only be installed on devices that satisfy the above requirements. Attempting to install on an unsupported device will fail and display an error message.
Build Process
Dolphin requires CMake for all systems. Many libraries are bundled with Dolphin and used if they're not installed on your system. CMake will inform you if a bundled library is used or if you need to install any missing packages yourself.
Rust
This fork includes a Rust submodule that needs to be built and linked to the final executable. This means that you will need to install a Rust compiler for your current system; to do this, simply visit rustup.rs. Once installed, CMake should be able to automatically handle the rest for you.
Windows
Visual Studio 2019 16.3 or later is a hard requirement. Open the folder that contains the base CMakeLists.txt file to build Dolphin on Windows. Other compilers might able to build Dolphin on Windows but have not been tested and are not recommended to be used. Git and Windows 11 SDK must be installed when building.
Make sure to pull submodules before building:
git submodule update --init --recursive
The "Release" solution configuration includes performance optimizations for the best user experience but complicates debugging Dolphin. The "Debug" solution configuration is significantly slower, more verbose and less permissive but makes debugging Dolphin easier.
Building for Linux and macOS
Dolphin requires CMake for systems other than Windows. You need a recent version of GCC or Clang with decent c++20 support. CMake will inform you if your compiler is too old. Many libraries are bundled with Dolphin and used if they're not installed on your system. CMake will inform you if a bundled library is used or if you need to install any missing packages yourself. You may refer to the wiki for more information.
Make sure to pull submodules before building:
git submodule update --init --recursive
macOS Build Steps:
A binary supporting a single architecture can be built using the following steps:
mkdir build
cd build
cmake ..
make -j $(sysctl -n hw.logicalcpu)
An application bundle will be created in ./Binaries
.
A script is also provided to build universal binaries supporting both x64 and ARM in the same application bundle using the following steps:
mkdir build
cd build
python ../BuildMacOSUniversalBinary.py
- Universal binaries will be available in the
universal
folder
Doing this is more complex as it requires installation of library dependencies for both x64 and ARM (or universal library equivalents) and may require specifying additional arguments to point to relevant library locations. Execute BuildMacOSUniversalBinary.py --help for more details.
Linux Global Build Steps:
To install to your system.
mkdir build
cd build
cmake ..
make -j $(nproc)
sudo make install
Linux Local Build Steps:
Useful for development as root access is not required.
mkdir Build
cd Build
cmake .. -DLINUX_LOCAL_DEV=true
make
ln -s ../../Overwrite/{Sys,User} Binaries/
Linux Portable Build Steps:
Can be stored on external storage and used on different Linux systems. Or useful for having multiple distinct Dolphin setups for testing/development/TAS.
mkdir Build
cd Build
cmake .. -DLINUX_LOCAL_DEV=true
make
cp -r ../Overwrite/{Sys,User} Binaries/
touch Binaries/portable.txt
Building for Android
These instructions assume familiarity with Android development. If you do not have an Android dev environment set up, see AndroidSetup.md.
Make sure to pull submodules before building:
git submodule update --init --recursive
If using Android Studio, import the Gradle project located in ./Source/Android
.
Android apps are compiled using a build system called Gradle. Dolphin's native component, however, is compiled using CMake. The Gradle script will attempt to run a CMake build automatically while building the Java code.
Uninstalling
On Windows, simply remove the extracted directory, unless it was installed with the NSIS installer, in which case you can uninstall Dolphin like any other Windows application.
Linux users can run cat install_manifest.txt | xargs -d '\n' rm
as root from the build directory
to uninstall Dolphin from their system.
macOS users can simply delete Dolphin.app to uninstall it.
Additionally, you'll want to remove the global user directory if you don't plan on reinstalling Dolphin.
Command Line Usage
Usage: Dolphin.exe [options]... [FILE]...
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-u USER, --user=USER User folder path
-m MOVIE, --movie=MOVIE
Play a movie file
-e <file>, --exec=<file>
Load the specified file
-n <16-character ASCII title ID>, --nand_title=<16-character ASCII title ID>
Launch a NAND title
-C <System>.<Section>.<Key>=<Value>, --config=<System>.<Section>.<Key>=<Value>
Set a configuration option
-s <file>, --save_state=<file>
Load the initial save state
-i <file>, --slippi_input=<file>
Load replay
-d, --debugger Show the debugger pane and additional View menu options
-l, --logger Open the logger
-b, --batch Run Dolphin without the user interface (Requires
--exec or --nand-title)
-c, --confirm Set Confirm on Stop
-v VIDEO_BACKEND, --video_backend=VIDEO_BACKEND
Specify a video backend
-a AUDIO_EMULATION, --audio_emulation=AUDIO_EMULATION
Choose audio emulation from [HLE|LLE]
Available DSP emulation engines are HLE (High Level Emulation) and LLE (Low Level Emulation). HLE is faster but less accurate whereas LLE is slower but close to perfect. Note that LLE has two submodes (Interpreter and Recompiler) but they cannot be selected from the command line.
Available video backends are "D3D" and "D3D12" (they are only available on Windows), "OGL", and "Vulkan". There's also "Null", which will not render anything, and "Software Renderer", which uses the CPU for rendering and is intended for debugging purposes only.
DolphinTool Usage
usage: dolphin-tool COMMAND -h
commands supported: [convert, verify, header, extract]
Usage: convert [options]... [FILE]...
Options:
-h, --help show this help message and exit
-u USER, --user=USER User folder path, required for temporary processing
files.Will be automatically created if this option is
not set.
-i FILE, --input=FILE
Path to disc image FILE.
-o FILE, --output=FILE
Path to the destination FILE.
-f FORMAT, --format=FORMAT
Container format to use. Default is RVZ. [iso|gcz|wia|rvz]
-s, --scrub Scrub junk data as part of conversion.
-b BLOCK_SIZE, --block_size=BLOCK_SIZE
Block size for GCZ/WIA/RVZ formats, as an integer.
Suggested value for RVZ: 131072 (128 KiB)
-c COMPRESSION, --compression=COMPRESSION
Compression method to use when converting to WIA/RVZ.
Suggested value for RVZ: zstd [none|zstd|bzip|lzma|lzma2]
-l COMPRESSION_LEVEL, --compression_level=COMPRESSION_LEVEL
Level of compression for the selected method. Ignored
if 'none'. Suggested value for zstd: 5
Usage: verify [options]...
Options:
-h, --help show this help message and exit
-u USER, --user=USER User folder path, required for temporary processing
files.Will be automatically created if this option is
not set.
-i FILE, --input=FILE
Path to disc image FILE.
-a ALGORITHM, --algorithm=ALGORITHM
Optional. Compute and print the digest using the
selected algorithm, then exit. [crc32|md5|sha1|rchash]
Usage: header [options]...
Options:
-h, --help show this help message and exit
-i FILE, --input=FILE
Path to disc image FILE.
-b, --block_size Optional. Print the block size of GCZ/WIA/RVZ formats,
then exit.
-c, --compression Optional. Print the compression method of GCZ/WIA/RVZ
formats, then exit.
-l, --compression_level
Optional. Print the level of compression for WIA/RVZ
formats, then exit.
Usage: extract [options]...
Options:
-h, --help show this help message and exit
-i FILE, --input=FILE
Path to disc image FILE.
-o FOLDER, --output=FOLDER
Path to the destination FOLDER.
-p PARTITION, --partition=PARTITION
Which specific partition you want to extract.
-s SINGLE, --single=SINGLE
Which specific file/directory you want to extract.
-l, --list List all files in volume/partition. Will print the
directory/file specified with --single if defined.
-q, --quiet Mute all messages except for errors.
-g, --gameonly Only extracts the DATA partition.