mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 17:32:30 +00:00
Fix buildbot (#2)
* more stuff * buildbot from dolphin-mpn-src to dolphin-mpn-advanced-src * Fix Netplay Traversal Error * Update linux.yml * Update macos.yml * Update linux.yml * fix linux buildbot * rename binary automatically to dolphin-mpn * Update Readme.md Co-authored-by: JosJuice <josjuice@gmail.com>
This commit is contained in:
parent
2b811d8272
commit
d6098f5499
11 changed files with 583 additions and 254 deletions
48
.github/workflows/linux.yml
vendored
Normal file
48
.github/workflows/linux.yml
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# This is a basic workflow to help you get started with Actions
|
||||||
|
|
||||||
|
name: Linux CI
|
||||||
|
|
||||||
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||||
|
# events but only for the master branch
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
# This workflow contains a single job called "build"
|
||||||
|
build:
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
# Setup CMake
|
||||||
|
- name: Setup CMake
|
||||||
|
uses: Symbitic/install-cmake@v0.1.1
|
||||||
|
with:
|
||||||
|
platform: linux
|
||||||
|
# Submoudle
|
||||||
|
- name: Checkout Submodles
|
||||||
|
run: git submodule update --init --recursive
|
||||||
|
# Setup Packages
|
||||||
|
- name: Setup Packages
|
||||||
|
run: sudo apt update && sudo apt upgrade && sudo apt install curl ffmpeg git libao-dev libasound-dev libavcodec-dev libavformat-dev libbluetooth-dev libevdev-dev libgtk2.0-dev libhidapi-dev libmbedtls-dev libminiupnpc-dev libopenal-dev libpangocairo-1.0-0 libpulse-dev libsfml-dev libswscale-dev libudev-dev libusb-1.0-0-dev libxrandr-dev qt5-default qtbase5-private-dev
|
||||||
|
# Run CMake
|
||||||
|
- name: Run CMake
|
||||||
|
run: mkdir build && cd build && cmake .. -G Ninja -DLINUX_LOCAL_DEV=true
|
||||||
|
# Build Project
|
||||||
|
- name: Run Make
|
||||||
|
run: cd build && ninja -j4
|
||||||
|
# Configure Dolphin
|
||||||
|
- name: Configure Dolphin
|
||||||
|
run: cd build && cp -r ../Data/Sys/ Binaries/ && cp -r ../Data/User/ Binaries/ && cp -r ../Data/dolphin-emu.png Binaries/ && touch Binaries/portable.txt
|
||||||
|
# Upload Artifact
|
||||||
|
- name: Upload Build Artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: DolphinMPN-Linux
|
||||||
|
path: /home/runner/work/dolphin-mpn-advanced-src/dolphin-mpn-advanced-src/build/Binaries/
|
51
.github/workflows/macos.yml
vendored
Normal file
51
.github/workflows/macos.yml
vendored
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
# This is a basic workflow to help you get started with Actions
|
||||||
|
|
||||||
|
name: macOS CI
|
||||||
|
|
||||||
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||||
|
# events but only for the master branch
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
# This workflow contains a single job called "build"
|
||||||
|
build:
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: macos-latest
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
# Setup CMake
|
||||||
|
- name: Setup CMake
|
||||||
|
uses: Symbitic/install-cmake@v0.1.1
|
||||||
|
with:
|
||||||
|
platform: mac
|
||||||
|
# Setup Packages
|
||||||
|
- name: Setup Packages
|
||||||
|
run: brew install qt5 pkgconfig
|
||||||
|
# Use Static ZSTD
|
||||||
|
- name: Remove ZSTD
|
||||||
|
run: brew uninstall zstd curl php --force --ignore-dependencies
|
||||||
|
# Submoudle
|
||||||
|
- name: Checkout Submodles
|
||||||
|
run: git submodule update --init --recursive
|
||||||
|
# Run CMake
|
||||||
|
- name: Run CMake
|
||||||
|
run: mkdir -p build && cd build && cmake .. -G Ninja -DCMAKE_CXX_FLAGS="-Xclang -fcolor-diagnostics" -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
|
||||||
|
# Build Project
|
||||||
|
- name: Run Ninja
|
||||||
|
run: cd build && ninja -j4
|
||||||
|
# Configure Dolphin
|
||||||
|
- name: Configure Dolphin
|
||||||
|
run: cd build && cp -r ../Data/Sys/ Binaries/ && cp -r ../Data/User/ Binaries/ && cp -r ../Data/dolphin-emu.png Binaries/ && touch Binaries/portable.txt
|
||||||
|
# Upload Artifact
|
||||||
|
- name: Upload Build Artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: DolphinMPN-macOS
|
||||||
|
path: /Users/runner/work/dolphin-mpn-advanced-src/dolphin-mpn-advanced-src/build/Binaries/
|
4
.github/workflows/windows.yml
vendored
4
.github/workflows/windows.yml
vendored
|
@ -31,10 +31,10 @@ jobs:
|
||||||
vs-version: '16.6.2'
|
vs-version: '16.6.2'
|
||||||
# Run MSBuild
|
# Run MSBuild
|
||||||
- name: Build Solution
|
- name: Build Solution
|
||||||
run: msbuild "D:\a\dolphin-mpn-src\dolphin-mpn-src\Source\dolphin-emu.sln" /verbosity:minimal /property:Configuration=Release /property:Platform=x64
|
run: msbuild "D:\a\dolphin-mpn-advanced-src\dolphin-mpn-advanced-src\Source\dolphin-emu.sln" /verbosity:minimal /property:Configuration=Release /property:Platform=x64
|
||||||
# Upload Artifact
|
# Upload Artifact
|
||||||
- name: Upload Build Artifact
|
- name: Upload Build Artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: DolphinMPN-win32
|
name: DolphinMPN-win32
|
||||||
path: D:\a\dolphin-mpn-src\dolphin-mpn-src\Binary\x64
|
path: D:\a\dolphin-mpn-advanced-src\dolphin-mpn-advanced-src\Binary\x64
|
Binary file not shown.
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 445 KiB |
284
Readme.md
284
Readme.md
|
@ -1,252 +1,50 @@
|
||||||
# Dolphin - A GameCube and Wii Emulator
|
# Dolphin MPN
|
||||||
|
|
||||||
[Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Buildbot](https://dolphin.ci) | [Forums](https://forums.dolphin-emu.org/) | [Wiki](https://wiki.dolphin-emu.org/) | [Issue Tracker](https://bugs.dolphin-emu.org/projects/emulator/issues) | [Coding Style](https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md) | [Transifex Page](https://www.transifex.com/projects/p/dolphin-emu/)
|
Dolphin MPN is an emulator for running GameCube and Wii games on Windows, macOS, and Linux
|
||||||
|
|
||||||
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](https://dolphin-emu.org/docs/faq/) before using Dolphin.
|
## Info
|
||||||
|
This emulator bundled a modified version of Dolphin
|
||||||
|
|
||||||
## System Requirements
|
## Installation
|
||||||
|
<sub>(note: ROMs will need to be downloaded separately)</sub>
|
||||||
|
|
||||||
### Desktop
|
## Compiling
|
||||||
|
|
||||||
* OS
|
Windows:
|
||||||
* Windows (7 SP1 or higher).
|
1) Install [Git](https://gitforwindows.org/) and [Visual Studio 2019](https://visualstudio.microsoft.com/downloads/) (community is fine) if you haven't already
|
||||||
* Linux.
|
1) Clone the Git Repo `git clone https://github.com/MarioPartyNetplay/dolphin-mpn --recursive`
|
||||||
* macOS (10.13 High Sierra or higher).
|
2) Open the **Source/dolphin-emu.sln** project in Visual Studio 2019
|
||||||
* Unix-like systems other than Linux are not officially supported but might work.
|
3) Set Build Path to **Release** -> **x64**
|
||||||
* Processor
|
4) Click Build
|
||||||
* A CPU with SSE2 support.
|
5: Open Dolphin
|
||||||
* A modern CPU (3 GHz and Dual Core, not older than 2008) is highly recommended.
|
**Dolphin is Located at Binaries/x64/**
|
||||||
* 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
|
Linux:
|
||||||
|
1) Open Terminal
|
||||||
|
2) Install Required Packages:
|
||||||
|
**Ubuntu** `sudo apt install curl ffmpeg git libao-dev libasound-dev libavcodec-dev libavformat-dev libbluetooth-dev libevdev-dev libgtk2.0-dev libhidapi-dev libmbedtls-dev libminiupnpc-dev libopenal-dev libpangocairo-1.0-0 libpulse-dev libsfml-dev libswscale-dev libudev-dev libusb-1.0-0-dev libxrandr-dev qt5-default qtbase5-private-dev`
|
||||||
|
3) Clone the Git Repo: `git clone https://github.com/MarioPartyNetplay/dolphin-mpn`
|
||||||
|
4) Enter the Cloned Repo: `cd dolphin-mpn`
|
||||||
|
5) Make the Build Directory: `mkdir build && cd build`
|
||||||
|
6) Setup CMake: `cmake .. -G Ninja -DLINUX_LOCAL_DEV=true`
|
||||||
|
7) Build Dolphin `ninja`
|
||||||
|
8) Copy Important Files `cp -r ../Data/Sys/ Binaries/ && cp -r ../Data/User/ Binaries/ && cp -r ../Data/dolphin-emu.png Binaries/ && touch Binaries/portable.txt`
|
||||||
|
9) Run Dolphin
|
||||||
|
**Dolphin is Located at build/Binaries/dolphin-emu**
|
||||||
|
|
||||||
* OS
|
macOS:
|
||||||
* Android (5.0 Lollipop or higher).
|
1) Install [Xcode Command Line Tools](https://developer.apple.com/xcode/features/) & [Brew](https://brew.sh/) if you havent
|
||||||
* Processor
|
2) Open a Terminal
|
||||||
* A processor with support for 64-bit applications (either ARMv8 or x86-64).
|
3) Install Brew: `brew install cmake qt5 ninja pkgconfig git`
|
||||||
* Graphics
|
4) Clone the Git Repo: `git clone https://github.com/MarioPartyNetplay/dolphin-mpn`
|
||||||
* A graphics processor that supports OpenGL ES 3.0 or higher. Performance varies heavily with [driver quality](https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/).
|
5) Enter the Cloned Repo: `cd dolphin-mpn`
|
||||||
* A graphics processor that supports standard desktop OpenGL features is recommended for best performance.
|
6) Make the Build Directory: `mkdir -p build && cd build`
|
||||||
|
7) Setup CMake: `cmake .. -G Ninja -DCMAKE_CXX_FLAGS="-Xclang -fcolor-diagnostics" -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)`
|
||||||
|
8) Build Dolphin: `ninja`
|
||||||
|
9) Copy Important Files: `cp -r ../Data/Sys/ Binaries/ && cp -r ../Data/User/ Binaries/ && cp -r ../Data/dolphin-emu.png Binaries/ && touch Binaries/portable.txt`
|
||||||
|
10) Run Dolphin
|
||||||
|
**Dolphin is Located at build/Binaries/dolphin-emu**
|
||||||
|
|
||||||
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.
|
### License
|
||||||
|
Dolphin MPN is licensed under the [GNU General Public License v2.0](license.txt)
|
||||||
## Building for Windows
|
|
||||||
|
|
||||||
Use the solution file `Source/dolphin-emu.sln` to build Dolphin on Windows.
|
|
||||||
Visual Studio 2022 17.0 or later is a hard requirement. Other compilers might be
|
|
||||||
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:
|
|
||||||
```sh
|
|
||||||
git submodule update --init
|
|
||||||
```
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
An installer can be created by using the `Installer.nsi` script in the
|
|
||||||
Installer directory. This will require the Nullsoft Scriptable Install System
|
|
||||||
(NSIS) to be installed. Creating an installer is not necessary to run Dolphin
|
|
||||||
since the Binary directory contains a working Dolphin distribution.
|
|
||||||
|
|
||||||
## Building for Linux and macOS
|
|
||||||
|
|
||||||
Dolphin requires [CMake](https://cmake.org/) for systems other than Windows. 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.
|
|
||||||
|
|
||||||
Make sure to pull submodules before building:
|
|
||||||
```sh
|
|
||||||
git submodule update --init
|
|
||||||
```
|
|
||||||
|
|
||||||
### macOS Build Steps:
|
|
||||||
|
|
||||||
A binary supporting a single architecture can be built using the following steps:
|
|
||||||
|
|
||||||
1. `mkdir build`
|
|
||||||
2. `cd build`
|
|
||||||
3. `cmake ..`
|
|
||||||
4. `make`
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
1. `mkdir build`
|
|
||||||
2. `cd build`
|
|
||||||
3. `python ../BuildMacOSUniversalBinary.py`
|
|
||||||
4. 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.
|
|
||||||
|
|
||||||
1. `mkdir build`
|
|
||||||
2. `cd build`
|
|
||||||
3. `cmake ..`
|
|
||||||
4. `make`
|
|
||||||
5. `sudo make install`
|
|
||||||
|
|
||||||
### Linux Local Build Steps:
|
|
||||||
|
|
||||||
Useful for development as root access is not required.
|
|
||||||
|
|
||||||
1. `mkdir Build`
|
|
||||||
2. `cd Build`
|
|
||||||
3. `cmake .. -DLINUX_LOCAL_DEV=true`
|
|
||||||
4. `make`
|
|
||||||
5. `ln -s ../../Data/Sys 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.
|
|
||||||
|
|
||||||
1. `mkdir Build`
|
|
||||||
2. `cd Build`
|
|
||||||
3. `cmake .. -DLINUX_LOCAL_DEV=true`
|
|
||||||
4. `make`
|
|
||||||
5. `cp -r ../Data/Sys/ Binaries/`
|
|
||||||
6. `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](AndroidSetup.md).
|
|
||||||
|
|
||||||
Make sure to pull submodules before building:
|
|
||||||
```sh
|
|
||||||
git submodule update --init
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
When Dolphin has been installed with the NSIS installer, 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 (see below to
|
|
||||||
see where it's stored) if you don't plan to reinstall Dolphin.
|
|
||||||
|
|
||||||
## Command Line Usage
|
|
||||||
|
|
||||||
`Usage: Dolphin [-h] [-d] [-l] [-e <str>] [-b] [-v <str>] [-a <str>]`
|
|
||||||
|
|
||||||
* -h, --help Show this help message
|
|
||||||
* -d, --debugger Show the debugger pane and additional View menu options
|
|
||||||
* -l, --logger Open the logger
|
|
||||||
* -e, --exec=<str> Load the specified file (DOL,ELF,WAD,GCM,ISO)
|
|
||||||
* -b, --batch Exit Dolphin with emulator
|
|
||||||
* -v, --video_backend=<str> Specify a video backend
|
|
||||||
* -a, --audio_emulation=<str> Low level (LLE) or high level (HLE) audio
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Sys Files
|
|
||||||
|
|
||||||
* `wiitdb.txt`: Wii title database from [GameTDB](https://www.gametdb.com/)
|
|
||||||
* `totaldb.dsy`: Database of symbols (for devs only)
|
|
||||||
* `GC/font_western.bin`: font dumps
|
|
||||||
* `GC/font_japanese.bin`: font dumps
|
|
||||||
* `GC/dsp_coef.bin`: DSP dumps
|
|
||||||
* `GC/dsp_rom.bin`: DSP dumps
|
|
||||||
* `Wii/clientca.pem`: Wii network certificate
|
|
||||||
* `Wii/clientcakey.pem`: Wii network certificate key
|
|
||||||
* `Wii/rootca.pem`: Wii network certificate issuer / CA
|
|
||||||
|
|
||||||
The DSP dumps included with Dolphin have been written from scratch and do not
|
|
||||||
contain any copyrighted material. They should work for most purposes, however
|
|
||||||
some games implement copy protection by checksumming the dumps. You will need
|
|
||||||
to dump the DSP files from a console and replace the default dumps if you want
|
|
||||||
to fix those issues.
|
|
||||||
|
|
||||||
Wii network certificates must be extracted from a Wii IOS. A guide for that can be found [here](https://wiki.dolphin-emu.org/index.php?title=Wii_Network_Guide).
|
|
||||||
|
|
||||||
## Folder Structure
|
|
||||||
|
|
||||||
These folders are installed read-only and should not be changed:
|
|
||||||
|
|
||||||
* `GameSettings`: per-game default settings database
|
|
||||||
* `GC`: DSP and font dumps
|
|
||||||
* `Shaders`: post-processing shaders
|
|
||||||
* `Themes`: icon themes for GUI
|
|
||||||
* `Resources`: icons that are theme-agnostic
|
|
||||||
* `Wii`: default Wii NAND contents
|
|
||||||
|
|
||||||
## Packaging and udev
|
|
||||||
|
|
||||||
The Data folder contains a udev rule file for the official GameCube controller
|
|
||||||
adapter and the Mayflash DolphinBar. Package maintainers can use that file in their packages for Dolphin.
|
|
||||||
Users compiling Dolphin on Linux can also just copy the file to their udev
|
|
||||||
rules folder.
|
|
||||||
|
|
||||||
## User Folder Structure
|
|
||||||
|
|
||||||
A number of user writeable directories are created for caching purposes or for
|
|
||||||
allowing the user to edit their contents. On macOS and Linux these folders are
|
|
||||||
stored in `~/Library/Application Support/Dolphin/` and `~/.dolphin-emu`
|
|
||||||
respectively, but can be overwritten by setting the environment variable
|
|
||||||
`DOLPHIN_EMU_USERPATH`. On Windows the user directory is stored in the `My Documents`
|
|
||||||
folder by default, but there are various way to override this behavior:
|
|
||||||
|
|
||||||
* Creating a file called `portable.txt` next to the Dolphin executable will
|
|
||||||
store the user directory in a local directory called "User" next to the
|
|
||||||
Dolphin executable.
|
|
||||||
* If the registry string value `LocalUserConfig` exists in
|
|
||||||
`HKEY_CURRENT_USER/Software/Dolphin Emulator` and has the value **1**,
|
|
||||||
Dolphin will always start in portable mode.
|
|
||||||
* If the registry string value `UserConfigPath` exists in
|
|
||||||
`HKEY_CURRENT_USER/Software/Dolphin Emulator`, the user folders will be
|
|
||||||
stored in the directory given by that string. The other two methods will be
|
|
||||||
prioritized over this setting.
|
|
||||||
|
|
||||||
List of user folders:
|
|
||||||
|
|
||||||
* `Cache`: used to cache the ISO list
|
|
||||||
* `Config`: configuration files
|
|
||||||
* `Dump`: anything dumped from Dolphin
|
|
||||||
* `GameConfig`: additional settings to be applied per-game
|
|
||||||
* `GC`: memory cards and system BIOS
|
|
||||||
* `Load`: custom textures
|
|
||||||
* `Logs`: logs, if enabled
|
|
||||||
* `ScreenShots`: screenshots taken via Dolphin
|
|
||||||
* `StateSaves`: save states
|
|
||||||
* `Wii`: Wii NAND contents
|
|
||||||
|
|
||||||
## Custom Textures
|
|
||||||
|
|
||||||
Custom textures have to be placed in the user directory under
|
|
||||||
`Load/Textures/[GameID]/`. You can find the Game ID by right-clicking a game
|
|
||||||
in the ISO list and selecting "ISO Properties".
|
|
||||||
|
|
318
Source/Core/Common/GLideN64.custom.ini
Normal file
318
Source/Core/Common/GLideN64.custom.ini
Normal file
|
@ -0,0 +1,318 @@
|
||||||
|
; Custom game settings
|
||||||
|
[General]
|
||||||
|
version=13
|
||||||
|
|
||||||
|
[TWINE]
|
||||||
|
Good_Name=007 - The World Is Not Enough (E)(U)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[40%20WINKS]
|
||||||
|
Good_Name=40 Winks (E) (M3) (Prototype)
|
||||||
|
graphics2D\enableNativeResTexrects=1
|
||||||
|
|
||||||
|
[BIOFREAKS]
|
||||||
|
Good_Name=Bio F.R.E.A.K.S. (E)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[BioHazard%20II]
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[52150A67]
|
||||||
|
Good_Name=Bokujou Monogatari 2 (J)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[67000C2B]
|
||||||
|
Good_Name=Eikou no Saint Andrews (J)
|
||||||
|
frameBufferEmulation\forceDepthBufferClear=1
|
||||||
|
|
||||||
|
[CAL%20SPEED]
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
|
||||||
|
[CASTLEVANIA2]
|
||||||
|
Good_Name=Castlevania - Legacy Of Darkness (E)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[DMPJ]
|
||||||
|
Good_Name=Mario Artist Paint Studio (J) (64DD)
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
frameBufferEmulation\nativeResFactor=1
|
||||||
|
generalEmulation\rdramImageDitheringMode=0
|
||||||
|
|
||||||
|
[DMTJ]
|
||||||
|
Good_Name=Mario Artist Talent Studio (J) (64DD)
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[DINO%20PLANET]
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[DONKEY%20KONG%2064]
|
||||||
|
Good_Name=Donkey Kong 64 (E)(J)(U)
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=1
|
||||||
|
frameBufferEmulation\N64DepthCompare=0
|
||||||
|
|
||||||
|
[DR.MARIO%2064]
|
||||||
|
Good_Name=Dr. Mario 64 (U)
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
|
||||||
|
[EXTREME_G]
|
||||||
|
Good_Name=Extreme-G (E)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[EXTREME-G]
|
||||||
|
Good_Name=Extreme-G (J)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[EXTREMEG]
|
||||||
|
Good_Name=Extreme-G (U)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[EXTREME%20G%202]
|
||||||
|
Good_Name=Extreme-G XG2 (E) (U)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[208E05CD]
|
||||||
|
Good_Name=Extreme-G XG2 (J)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[F1%20POLE%20POSITION%2064]
|
||||||
|
Good_Name=F-1 Pole Position 64 (E)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[FLAPPYBIRD64]
|
||||||
|
Good_Name=FlappyBird64
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
|
||||||
|
[GOEMON2%20DERODERO]
|
||||||
|
Good_Name=Ganbare Goemon - Dero Dero Douchuu Obake Tenkomori (J)
|
||||||
|
graphics2D\enableNativeResTexrects=1
|
||||||
|
|
||||||
|
[GOEMONS%20GREAT%20ADV]
|
||||||
|
Good_Name=Goemons Great Adventure (U)
|
||||||
|
graphics2D\enableNativeResTexrects=1
|
||||||
|
|
||||||
|
[HARVESTMOON64]
|
||||||
|
Good_Name=Harvest Moon 64 (U)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[5CFA0A2E]
|
||||||
|
Good_Name=Heiwa Pachinko World 64 (J)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[HEXEN]
|
||||||
|
Good_Name=Hexen (E)(F)(G)(J)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[HUMAN%20GRAND%20PRIX]
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[I%20S%20S%2064]
|
||||||
|
Good_Name=International Superstar Soccer 64 (E) (U)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[JET%20FORCE%20GEMINI]
|
||||||
|
Good_Name=Jet Force Gemini (E)(U)
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[J%20F%20G%20DISPLAY]
|
||||||
|
; See Jet Force Gemini for notes
|
||||||
|
Good_Name=Jet Force Gemini Kiosk Demo (U)
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[J%20WORLD%20SOCCER3]
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[301E07CC]
|
||||||
|
Good_Name=Mahjong Master (J)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[DMGJ]
|
||||||
|
Good_Name=Mario Artist Polygon Studio (J)
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[KEN%20GRIFFEY%20SLUGFEST]
|
||||||
|
Good_Name=Ken Griffey Jr.'s Slugfest
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
|
||||||
|
[KIRBY64]
|
||||||
|
Good_Name=Kirby 64 - The Crystal Shards (E)(J)(U)
|
||||||
|
graphics2D\enableNativeResTexrects=1
|
||||||
|
|
||||||
|
[MARIOGOLF64]
|
||||||
|
Good_Name=Mario Golf (E)(J)(U)
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[MARIOKART64]
|
||||||
|
Good_Name=Mario Kart 64 (E)(J)(U)
|
||||||
|
graphics2D\enableNativeResTexrects=1
|
||||||
|
graphics2D\enableTexCoordBounds=1
|
||||||
|
|
||||||
|
[MARIO%20STORY]
|
||||||
|
Good_Name=Mario Story (J)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[MEGA%20MAN%2064]
|
||||||
|
Good_Name=Mega Man 64 (U)
|
||||||
|
graphics2D\correctTexrectCoords=2
|
||||||
|
|
||||||
|
[MEGAMAN%2064]
|
||||||
|
Good_Name=Mega Man 64 (Proto)
|
||||||
|
graphics2D\correctTexrectCoords=2
|
||||||
|
|
||||||
|
[MLB%20FEATURING%20K%20G%20JR]
|
||||||
|
Good_Name=Major League Baseball Featuring Ken Griffey Jr.
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
|
||||||
|
[MYSTICAL%20NINJA2%20SG]
|
||||||
|
Good_Name=Mystical Ninja 2 Starring Goemon (E)
|
||||||
|
graphics2D\enableNativeResTexrects=1
|
||||||
|
|
||||||
|
[NASCAR%202000]
|
||||||
|
Good_Name=NASCAR 2000 (U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[NASCAR%2099]
|
||||||
|
Good_Name=NASCAR 99 (U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[NUD-DMPJ-JPN_convert]
|
||||||
|
Good_Name=Mario Paint Studio (cart hack)
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
|
||||||
|
[NUD-DMTJ-JPN_convert]
|
||||||
|
Good_Name=Mario Artist Talent Studio (cart hack)
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[OGREBATTLE64]
|
||||||
|
Good_Name=Ogre Battle 64 - Person of Lordly Caliber (U)
|
||||||
|
graphics2D\enableTexCoordBounds=1
|
||||||
|
|
||||||
|
[OLYMPIC%20HOCKEY]
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
|
||||||
|
[PAPER%20MARIO]
|
||||||
|
Good_Name=Paper Mario (E)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
graphics2D\enableTexCoordBounds=1
|
||||||
|
|
||||||
|
[PENNY%20RACERS]
|
||||||
|
Good_Name=Penny Racers (E)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
|
||||||
|
[PERFECT%20STRIKER]
|
||||||
|
Good_Name=Jikkyou J.League Perfect Striker (J)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[POKEMON%20SNAP]
|
||||||
|
Good_Name=Pokemon Snap (U)
|
||||||
|
generalEmulation\rdramImageDitheringMode=1
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
|
||||||
|
[POKEMON%20STADIUM]
|
||||||
|
Good_Name=Pokemon Stadium (U)
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[POKEMON%20STADIUM%202]
|
||||||
|
Good_Name=Pokemon Stadium 2 (E)(F)(G)(I)(J)(S)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[POKEMON%20STADIUM%20G%26S]
|
||||||
|
Good_Name=Pokemon Stadium Kin Gin (J)
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[PUZZLE%20LEAGUE%20N64]
|
||||||
|
Good_Name=Pokemon Puzzle League (E)(F)(G)(U)
|
||||||
|
texture\enableHalosRemoval=1
|
||||||
|
|
||||||
|
[RAT%20ATTACK]
|
||||||
|
Good_Name=Rat Attack
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
|
||||||
|
[RESIDENT%20EVIL%20II]
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[ROCKMAN%20DASH]
|
||||||
|
Good_Name=Rockman Dash - Hagane no Boukenshin (J)
|
||||||
|
graphics2D\correctTexrectCoords=2
|
||||||
|
|
||||||
|
[RUSH%202]
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
graphics2D\correctTexrectCoords=2
|
||||||
|
|
||||||
|
[SAN%20FRANCISCO%20RUSH]
|
||||||
|
Good_Name=San Francisco Rush Extreme Racing (U)
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
graphics2D\enableNativeResTexrects=2
|
||||||
|
|
||||||
|
[S.F.RUSH]
|
||||||
|
Good_Name=San Francisco Rush Extreme Racing (E)
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
graphics2D\enableNativeResTexrects=2
|
||||||
|
|
||||||
|
[S.F.%20RUSH]
|
||||||
|
Good_Name=San Francisco Rush Extreme Racing (U)
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
graphics2D\enableNativeResTexrects=2
|
||||||
|
|
||||||
|
[SHADOWMAN]
|
||||||
|
Good_Name=Shadow Man (B)(E)(F)(G)(U)
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=0
|
||||||
|
|
||||||
|
[SPACE%20INVADERS]
|
||||||
|
Good_Name=Space Invaders (U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=0
|
||||||
|
|
||||||
|
[STAR%20TWINS]
|
||||||
|
; See Jet Force Gemini for notes
|
||||||
|
Good_Name=Star Twins (J)
|
||||||
|
frameBufferEmulation\fbInfoDisabled=0
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
|
||||||
|
[TEST]
|
||||||
|
Good_Name=Mario Artist Paint Studio (J) (1999-02-11 Prototype) (64DD)
|
||||||
|
frameBufferEmulation\copyAuxToRDRAM=1
|
||||||
|
frameBufferEmulation\copyFromRDRAM=1
|
||||||
|
generalEmulation\rdramImageDitheringMode=0
|
||||||
|
|
||||||
|
[TETRISPHERE]
|
||||||
|
Good_Name=Tetrisphere (U)
|
||||||
|
generalEmulation\correctTexrectCoords=2
|
||||||
|
|
||||||
|
[TIGGER%27S%20HONEY%20HUNT]
|
||||||
|
Good_Name=Tiggers Honey Hunt (E)(U)
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
||||||
|
|
||||||
|
[TONIC%20TROUBLE]
|
||||||
|
Good_Name=Tonic Trouble (E)(U)
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[TG%20RALLY%202]
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[TOP%20GEAR%20RALLY%202]
|
||||||
|
frameBufferEmulation\copyToRDRAM=1
|
||||||
|
|
||||||
|
[TUROK_DINOSAUR_HUNTE]
|
||||||
|
Good_Name=Turok - Dinosaur Hunter (E)(G)(U)(J)
|
||||||
|
frameBufferEmulation\copyDepthToRDRAM=1
|
||||||
|
|
||||||
|
[W.G.%203DHOCKEY]
|
||||||
|
frameBufferEmulation\bufferSwapMode=1
|
||||||
|
|
||||||
|
[MARIOPARTY3]
|
||||||
|
frameBufferEmulation\N64DepthCompare=1
|
|
@ -404,6 +404,10 @@ add_library(core
|
||||||
IOS/WFS/WFSSRV.h
|
IOS/WFS/WFSSRV.h
|
||||||
LibusbUtils.cpp
|
LibusbUtils.cpp
|
||||||
LibusbUtils.h
|
LibusbUtils.h
|
||||||
|
MarioPartyNetplay/Discord.cpp
|
||||||
|
MarioPartyNetplay/Discord.h
|
||||||
|
MarioPartyNetplay/Gamestate.cpp
|
||||||
|
MarioPartyNetplay/Gamestate.h
|
||||||
MemTools.cpp
|
MemTools.cpp
|
||||||
MemTools.h
|
MemTools.h
|
||||||
Movie.cpp
|
Movie.cpp
|
||||||
|
|
|
@ -17,6 +17,12 @@
|
||||||
<Import Project="$(VSPropsDir)QtCompile.props" />
|
<Import Project="$(VSPropsDir)QtCompile.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<TargetName>Dolphin-MPN</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<TargetName>Dolphin-MPN</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<!-- 5054 operator '+': deprecated between enumerations of different types (types defined in Qt headers) -->
|
<!-- 5054 operator '+': deprecated between enumerations of different types (types defined in Qt headers) -->
|
||||||
|
|
|
@ -944,6 +944,110 @@ bool MainWindow::RequestStop()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MainWindow::RequestStopNetplay()
|
||||||
|
{
|
||||||
|
if (!Core::IsRunning())
|
||||||
|
{
|
||||||
|
Core::QueueHostJob([this] { OnStopComplete(); }, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool rendered_widget_was_active =
|
||||||
|
m_render_widget->isActiveWindow() && !m_render_widget->isFullScreen();
|
||||||
|
QWidget* confirm_parent = (!m_rendering_to_main && rendered_widget_was_active) ?
|
||||||
|
m_render_widget :
|
||||||
|
static_cast<QWidget*>(this);
|
||||||
|
const bool was_cursor_locked = m_render_widget->IsCursorLocked();
|
||||||
|
|
||||||
|
if (!m_render_widget->isFullScreen())
|
||||||
|
m_render_widget_geometry = m_render_widget->saveGeometry();
|
||||||
|
else
|
||||||
|
FullScreen();
|
||||||
|
|
||||||
|
if (Config::Get(Config::MAIN_CONFIRM_ON_STOP))
|
||||||
|
{
|
||||||
|
if (std::exchange(m_stop_confirm_showing, true))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
Common::ScopeGuard confirm_lock([this] { m_stop_confirm_showing = false; });
|
||||||
|
|
||||||
|
const Core::State state = Core::GetState();
|
||||||
|
|
||||||
|
// Only pause the game, if NetPlay is not running
|
||||||
|
bool pause = !Settings::Instance().GetNetPlayClient();
|
||||||
|
|
||||||
|
if (pause)
|
||||||
|
Core::SetState(Core::State::Paused);
|
||||||
|
|
||||||
|
if (rendered_widget_was_active)
|
||||||
|
{
|
||||||
|
// We have to do this before creating the message box, otherwise we might receive the window
|
||||||
|
// activation event before we know we need to lock the cursor again.
|
||||||
|
m_render_widget->SetCursorLockedOnNextActivation(was_cursor_locked);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is to avoid any "race conditions" between the "Window Activate" message and the
|
||||||
|
// message box returning, which could break cursor locking depending on the order
|
||||||
|
m_render_widget->SetWaitingForMessageBox(true);
|
||||||
|
auto confirm = ModalMessageBox::question(
|
||||||
|
confirm_parent, tr("Quitter!"),
|
||||||
|
m_stop_requested ? tr("A user closed down their game from the netplay lobby. "
|
||||||
|
"This could the Netplay session has ended due to someone ragequitting! "
|
||||||
|
"Do you want to stop the current emulation?") :
|
||||||
|
tr("A user closed down their game from the netplay lobby. "
|
||||||
|
"This could the Netplay session has ended due to someone ragequitting"
|
||||||
|
"Do you want to stop the current emulation?"),
|
||||||
|
QMessageBox::Yes | QMessageBox::No, QMessageBox::NoButton, Qt::ApplicationModal);
|
||||||
|
|
||||||
|
// If a user confirmed stopping the emulation, we do not capture the cursor again,
|
||||||
|
// even if the render widget will stay alive for a while.
|
||||||
|
// If a used rejected stopping the emulation, we instead capture the cursor again,
|
||||||
|
// and let them continue playing as if nothing had happened
|
||||||
|
// (assuming cursor locking is on).
|
||||||
|
if (confirm != QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
m_render_widget->SetWaitingForMessageBox(false);
|
||||||
|
|
||||||
|
if (pause)
|
||||||
|
Core::SetState(state);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_render_widget->SetCursorLockedOnNextActivation(false);
|
||||||
|
// This needs to be after SetCursorLockedOnNextActivation(false) as it depends on it
|
||||||
|
m_render_widget->SetWaitingForMessageBox(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OnStopRecording();
|
||||||
|
// TODO: Add Debugger shutdown
|
||||||
|
|
||||||
|
if (!m_stop_requested && UICommon::TriggerSTMPowerEvent())
|
||||||
|
{
|
||||||
|
m_stop_requested = true;
|
||||||
|
|
||||||
|
// Unpause because gracefully shutting down needs the game to actually request a shutdown.
|
||||||
|
// TODO: Do not unpause in debug mode to allow debugging until the complete shutdown.
|
||||||
|
if (Core::GetState() == Core::State::Paused)
|
||||||
|
Core::SetState(Core::State::Running);
|
||||||
|
|
||||||
|
// Tell NetPlay about the power event
|
||||||
|
if (NetPlay::IsNetPlayRunning())
|
||||||
|
NetPlay::SendPowerButtonEvent();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ForceStop();
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
// Allow windows to idle or turn off display again
|
||||||
|
SetThreadExecutionState(ES_CONTINUOUS);
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::ForceStop()
|
void MainWindow::ForceStop()
|
||||||
{
|
{
|
||||||
Core::Stop();
|
Core::Stop();
|
||||||
|
@ -1392,7 +1496,7 @@ void MainWindow::NetPlayInit()
|
||||||
m_netplay_discord = new DiscordHandler(this);
|
m_netplay_discord = new DiscordHandler(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
connect(m_netplay_dialog, &NetPlayDialog::Stop, this, &MainWindow::RequestStop);
|
connect(m_netplay_dialog, &NetPlayDialog::Stop, this, &MainWindow::RequestStopNetplay);
|
||||||
connect(m_netplay_dialog, &NetPlayDialog::rejected, this, &MainWindow::NetPlayQuit);
|
connect(m_netplay_dialog, &NetPlayDialog::rejected, this, &MainWindow::NetPlayQuit);
|
||||||
connect(m_netplay_setup_dialog, &NetPlaySetupDialog::Join, this, &MainWindow::NetPlayJoin);
|
connect(m_netplay_setup_dialog, &NetPlaySetupDialog::Join, this, &MainWindow::NetPlayJoin);
|
||||||
connect(m_netplay_setup_dialog, &NetPlaySetupDialog::Host, this, &MainWindow::NetPlayHost);
|
connect(m_netplay_setup_dialog, &NetPlaySetupDialog::Host, this, &MainWindow::NetPlayHost);
|
||||||
|
|
|
@ -87,6 +87,7 @@ private:
|
||||||
|
|
||||||
// May ask for confirmation. Returns whether or not it actually stopped.
|
// May ask for confirmation. Returns whether or not it actually stopped.
|
||||||
bool RequestStop();
|
bool RequestStop();
|
||||||
|
bool RequestStopNetplay();
|
||||||
void ForceStop();
|
void ForceStop();
|
||||||
void Reset();
|
void Reset();
|
||||||
void FrameAdvance();
|
void FrameAdvance();
|
||||||
|
|
|
@ -507,12 +507,11 @@ void NetPlaySetupDialog::UpdateListBrowser()
|
||||||
});
|
});
|
||||||
|
|
||||||
auto* hor_header = m_table_widget->horizontalHeader();
|
auto* hor_header = m_table_widget->horizontalHeader();
|
||||||
|
hor_header->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
hor_header->setSectionResizeMode(0, QHeaderView::Stretch);
|
hor_header->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
hor_header->setSectionResizeMode(1, QHeaderView::Stretch);
|
hor_header->setSectionResizeMode(1, QHeaderView::Stretch);
|
||||||
hor_header->setSectionResizeMode(2, QHeaderView::Stretch);
|
hor_header->setSectionResizeMode(2, QHeaderView::ResizeToContents);
|
||||||
hor_header->setSectionResizeMode(3, QHeaderView::ResizeToContents);
|
hor_header->setSectionResizeMode(3, QHeaderView::ResizeToContents);
|
||||||
hor_header->setSectionResizeMode(4, QHeaderView::ResizeToContents);
|
|
||||||
hor_header->setHighlightSections(false);
|
hor_header->setHighlightSections(false);
|
||||||
|
|
||||||
m_table_widget->setRowCount(session_count);
|
m_table_widget->setRowCount(session_count);
|
||||||
|
@ -531,10 +530,10 @@ void NetPlaySetupDialog::UpdateListBrowser()
|
||||||
for (const auto& item : {name, game_id, player_count, in_game})
|
for (const auto& item : {name, game_id, player_count, in_game})
|
||||||
item->setFlags(enabled ? Qt::ItemIsEnabled | Qt::ItemIsSelectable : Qt::NoItemFlags);
|
item->setFlags(enabled ? Qt::ItemIsEnabled | Qt::ItemIsSelectable : Qt::NoItemFlags);
|
||||||
|
|
||||||
m_table_widget->setItem(i, 1, name);
|
m_table_widget->setItem(i, 0, name);
|
||||||
m_table_widget->setItem(i, 2, game_id);
|
m_table_widget->setItem(i, 1, game_id);
|
||||||
m_table_widget->setItem(i, 3, player_count);
|
m_table_widget->setItem(i, 2, player_count);
|
||||||
m_table_widget->setItem(i, 4, in_game);
|
m_table_widget->setItem(i, 3, in_game);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue