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:
Nora 2022-03-01 18:49:20 -05:00 committed by GitHub
parent 2b811d8272
commit d6098f5499
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 583 additions and 254 deletions

48
.github/workflows/linux.yml vendored Normal file
View 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
View 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/

View file

@ -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

Before After
Before After

284
Readme.md
View file

@ -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)

View 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

View file

@ -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

View file

@ -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) -->

View file

@ -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);

View file

@ -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();

View file

@ -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);
}