mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-19 15:31:53 +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'
|
||||
# Run MSBuild
|
||||
- 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
|
||||
- name: Upload Build Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
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 (7 SP1 or higher).
|
||||
* Linux.
|
||||
* macOS (10.13 High Sierra 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.
|
||||
Windows:
|
||||
1) Install [Git](https://gitforwindows.org/) and [Visual Studio 2019](https://visualstudio.microsoft.com/downloads/) (community is fine) if you haven't already
|
||||
1) Clone the Git Repo `git clone https://github.com/MarioPartyNetplay/dolphin-mpn --recursive`
|
||||
2) Open the **Source/dolphin-emu.sln** project in Visual Studio 2019
|
||||
3) Set Build Path to **Release** -> **x64**
|
||||
4) Click Build
|
||||
5: Open Dolphin
|
||||
**Dolphin is Located at Binaries/x64/**
|
||||
|
||||
### 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
|
||||
* 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](https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/).
|
||||
* A graphics processor that supports standard desktop OpenGL features is recommended for best performance.
|
||||
macOS:
|
||||
1) Install [Xcode Command Line Tools](https://developer.apple.com/xcode/features/) & [Brew](https://brew.sh/) if you havent
|
||||
2) Open a Terminal
|
||||
3) Install Brew: `brew install cmake qt5 ninja pkgconfig git`
|
||||
4) Clone the Git Repo: `git clone https://github.com/MarioPartyNetplay/dolphin-mpn`
|
||||
5) Enter the Cloned Repo: `cd dolphin-mpn`
|
||||
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.
|
||||
|
||||
## 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".
|
||||
### License
|
||||
Dolphin MPN is licensed under the [GNU General Public License v2.0](license.txt)
|
||||
|
|
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
|
||||
LibusbUtils.cpp
|
||||
LibusbUtils.h
|
||||
MarioPartyNetplay/Discord.cpp
|
||||
MarioPartyNetplay/Discord.h
|
||||
MarioPartyNetplay/Gamestate.cpp
|
||||
MarioPartyNetplay/Gamestate.h
|
||||
MemTools.cpp
|
||||
MemTools.h
|
||||
Movie.cpp
|
||||
|
|
|
@ -17,6 +17,12 @@
|
|||
<Import Project="$(VSPropsDir)QtCompile.props" />
|
||||
</ImportGroup>
|
||||
<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>
|
||||
<ClCompile>
|
||||
<!-- 5054 operator '+': deprecated between enumerations of different types (types defined in Qt headers) -->
|
||||
|
|
|
@ -944,6 +944,110 @@ bool MainWindow::RequestStop()
|
|||
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()
|
||||
{
|
||||
Core::Stop();
|
||||
|
@ -1392,7 +1496,7 @@ void MainWindow::NetPlayInit()
|
|||
m_netplay_discord = new DiscordHandler(this);
|
||||
#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_setup_dialog, &NetPlaySetupDialog::Join, this, &MainWindow::NetPlayJoin);
|
||||
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.
|
||||
bool RequestStop();
|
||||
bool RequestStopNetplay();
|
||||
void ForceStop();
|
||||
void Reset();
|
||||
void FrameAdvance();
|
||||
|
|
|
@ -507,12 +507,11 @@ void NetPlaySetupDialog::UpdateListBrowser()
|
|||
});
|
||||
|
||||
auto* hor_header = m_table_widget->horizontalHeader();
|
||||
|
||||
hor_header->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
hor_header->setSectionResizeMode(0, 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(4, QHeaderView::ResizeToContents);
|
||||
hor_header->setHighlightSections(false);
|
||||
|
||||
m_table_widget->setRowCount(session_count);
|
||||
|
@ -531,10 +530,10 @@ void NetPlaySetupDialog::UpdateListBrowser()
|
|||
for (const auto& item : {name, game_id, player_count, in_game})
|
||||
item->setFlags(enabled ? Qt::ItemIsEnabled | Qt::ItemIsSelectable : Qt::NoItemFlags);
|
||||
|
||||
m_table_widget->setItem(i, 1, name);
|
||||
m_table_widget->setItem(i, 2, game_id);
|
||||
m_table_widget->setItem(i, 3, player_count);
|
||||
m_table_widget->setItem(i, 4, in_game);
|
||||
m_table_widget->setItem(i, 0, name);
|
||||
m_table_widget->setItem(i, 1, game_id);
|
||||
m_table_widget->setItem(i, 2, player_count);
|
||||
m_table_widget->setItem(i, 3, in_game);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue