24 Commits
Author SHA1 Message Date
ExzapandGitHub 101ff7783e Revert accidental removal of release tag 2022-09-24 12:55:13 +02:00
ExzapandGitHub 9caf57c2c5 Vulkan: Fix incorrect encoding for substituted R4G4 format (#288)
Fixed incorrect channel order when VK_FORMAT_R4G4_UNORM_PACK8 is substituted with VK_FORMAT_R4G4B4A4_UNORM_PACK16
2022-09-24 11:44:44 +02:00
ExzapandGitHub 8e89187f95 Remove misleading link from generated experimental releases 2022-09-24 11:11:54 +02:00
ExzapandGitHub 3bceb39966 Remove PUBLIC_RELEASE flag and tie asserts to debug config (#287)
Removes the -DPUBLIC_RELEASE flag. Cemu's debug asserts are now only enabled if the build configuration is Debug. Similarly, on Windows the console is only shown for Debug builds.
2022-09-24 08:43:27 +02:00
jcrm1andGitHub b720d17a97 CI: Add macOS x64 to build check and releases (#274) 2022-09-23 11:17:50 +02:00
ExzapandGitHub 9b76b0e2d3 CI: Fix Windows build running out of disk space (#284)
- Clean package temporaries during building to save disk space
- Remove msvc workaround which is no longer needed
2022-09-22 11:34:13 +02:00
TillsunsetandGitHub 030d15900d Add MacOS build instructions (#279) 2022-09-20 20:26:54 +02:00
TillsunsetandGitHub 7864d76eca fixed the string encoding issue on macOS (#277) 2022-09-20 14:50:34 +02:00
Crementif 6fa0ac6eaa [docs] Recommend PUBLIC_RELEASE
Most people following the guide are currently not really developers and this was a fairly hidden option that's easily missed.

The disabled version will later change to be an actual custom cmake target instead of a preprocessor flag, but that'll require more code to be adjusted.

Not using the flag means that Cemu keeps some (performance-costing) debug checks in, alongside more logging and a debug logging console on Windows.
2022-09-20 00:15:53 +02:00
Crementif 510d80038d [coreinit] Add OSIsDebuggerPresent 2022-09-19 21:41:01 +02:00
SSimcoandGitHub 9f02733a0d Use unordered_map for keydown to allow codes above 255 (#248)
- Adds internal support for 32bit key codes, required for proper keyboard input on Linux
- Use gdk_keyval_name to get key name on Linux
2022-09-19 03:07:26 +02:00
ExzapandGitHub 5e968eff4f Fix 1x1 symbols in debugger window + Load icons from headers on all platforms
- Fixed an issue where the toolbar icons for the debugger were resized to 1x1
- On Windows we now load the PNG UI icons from the header-embedded pngs (`resource/embedded`) instead of via `cemu.rc` to match behavior of other platforms
2022-09-18 15:53:10 +02:00
TillsunsetandGitHub 867c0c5ca2 Fix some issues with building on macOS (#268)
* fixed building on macos, needs OBJC and OBJXX to be enabled
* changed to weak ordering due to string comparison not being strong ordering
* Use raw PNG bytes from "resource/embedded/resources.h" in all windows too
2022-09-18 14:39:00 +02:00
ExzapandGitHub 12b6830546 GX2: Add crash workaround for FFL uninitialized texture (#264)
When a game tries to generate Miis without the FFL files being dumped (<mlc>/sys/title/0005001b/10056000/content/) it will cause it to create and use a texture with invalid parameters.
This workaround catches and replaces bad texture parameters to avoid crashing further down the line.

Resolves crashes in Sonic Lost World, Super Mario 3D World and probably a few others.

We had this workaround in pre-2.0 Cemu already but it was dropped during refactoring.
2022-09-17 16:32:46 +02:00
dd14778561 [docs] Explain how to update local cemu repo + General fixes (#227)
Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
2022-09-17 14:53:46 +02:00
TillsunsetandGitHub 41dcd48048 Fix a small regression when building in Macos (#262) 2022-09-17 13:52:12 +02:00
Crementif c113565fe3 [deps] Update zarchive 2022-09-17 10:45:27 +02:00
Herman SemenovandGitHub 03f5967408 Fix incorrect streamout buffer index in GS + refactor various code (#258) 2022-09-17 03:45:18 +02:00
Maximilian Downey TwissandGitHub 4a3d02db55 Properly list files in CMakeLists instead of using GLOB (#249) 2022-09-17 03:24:57 +02:00
ExzapandGitHub 910cdf4d5c Refactor wxGameList color code and match previous style on light theme (#261)
Refactored to pre-calculate the game list row colors at the beginning of the function. If the background color is almost white as it is on Windows, we'll use the previous bluish secondary color instead of grey-scale lightness adjustment.
2022-09-17 02:39:52 +02:00
ShoegzerandGitHub 6ef36152c2 Use system color definitions for wxGameList (#241)
Previously it would use hard-coded bright colors which clashed with dark themes on Linux
2022-09-17 01:06:36 +02:00
ExzapandGitHub 63206eb9a8 coreinit: Return error code instead of success in Acquire failure (#260)
Spotted by @Fs00
It's currently not known if any games are affected by this
2022-09-16 14:25:38 +02:00
Francesco SaltoriandGitHub 664d7ee902 Clean up more Cemuhook leftovers (#253) 2022-09-16 13:34:41 +02:00
CrementifandGitHub cebdccfdf5 Update readme about matrix server
Supersedes https://github.com/cemu-project/Cemu/pull/245
2022-09-15 04:06:40 +02:00
147 changed files with 1403 additions and 655 deletions
+70 -32
View File
@@ -27,7 +27,7 @@ jobs:
if: ${{ inputs.deploymode == 'release' }}
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
@@ -99,7 +99,7 @@ jobs:
if: ${{ inputs.deploymode == 'release' }}
run: |
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
@@ -114,35 +114,6 @@ jobs:
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: Workaround
run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$componentsToRemove= @(
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64.Spectre"
)
[string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " + $_}
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
# should be run twice
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
- name: Configure MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
@@ -174,7 +145,7 @@ jobs:
cd build
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }}
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
- name: "Build Cemu"
run: |
@@ -191,3 +162,70 @@ jobs:
with:
name: cemu-bin-windows-x64
path: ./bin/Cemu.exe
build-macos:
runs-on: macos-12
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Setup release mode parameters (for deploy)
if: ${{ inputs.deploymode == 'release' }}
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
run: |
echo "BUILD_MODE=debug" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is debug"
- name: Setup version for experimental
if: ${{ inputs.experimentalversion != '' }}
run: |
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
- name: "Install system dependencies"
run: |
brew install llvm@14 ninja nasm molten-vk
- name: "Bootstrap vcpkg"
run: |
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
- name: 'Setup NuGet Credentials for vcpkg'
shell: 'bash'
run: |
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ secrets.GITHUB_TOKEN }}"
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: "cmake"
run: |
mkdir build
cd build
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/local/opt/llvm@14/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@14/bin/clang++ -G Ninja
- name: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
if: ${{ inputs.deploymode == 'release' }}
run: chmod a+x bin/Cemu_release && mv bin/Cemu_release bin/Cemu
- name: Upload artifact
uses: actions/upload-artifact@v3
if: ${{ inputs.deploymode == 'release' }}
with:
name: cemu-bin-macos-x64
path: ./bin/Cemu
@@ -25,6 +25,11 @@ jobs:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- uses: actions/download-artifact@v3
with:
name: cemu-bin-macos-x64
path: cemu-bin-macos-x64
- name: Initialize
run: |
mkdir upload
@@ -57,10 +62,19 @@ jobs:
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-20.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from macos-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-macos-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-macos-12-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
tar xvzf ghr.tar.gz; rm ghr.tar.gz
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
ghr_v0.15.0_linux_amd64/ghr -prerelease -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }} (Experimental)" -b "Cemu experimental release - [changelog](https://cemu.info/changelog.html)" "v${{ env.CEMU_VERSION }}" ./upload
ghr_v0.15.0_linux_amd64/ghr -prerelease -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }} (Experimental)" -b "Cemu experimental release" "v${{ env.CEMU_VERSION }}" ./upload
+15 -1
View File
@@ -27,6 +27,11 @@ jobs:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- uses: actions/download-artifact@v3
with:
name: cemu-bin-macos-x64
path: cemu-bin-macos-x64
- name: Initialize
run: |
mkdir upload
@@ -61,7 +66,16 @@ jobs:
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-20.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from macos-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-macos-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-macos-12-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
+37 -7
View File
@@ -12,11 +12,11 @@ Instructions:
1. Run `git clone --recursive https://github.com/cemu-project/Cemu`
2. Launch `Cemu/generate_vs_solution.bat`.
- If you installed VS to a custom location or use VS 2019, you may need to manually change the path inside the .bat file
3. Wait until it's done, then open `Cemu/build/Cemu.sln` in Visual Studio
- If you installed VS to a custom location or use VS 2019, you may need to manually change the path inside the .bat file.
3. Wait until it's done, then open `Cemu/build/Cemu.sln` in Visual Studio.
4. Then build the solution and once finished you can run and debug it, or build it and check the /bin folder for the final Cemu_release.exe.
You can also skip steps 3-5 and open the root folder of the cloned repo directly in Visual Studio (as a folder) and use the built-in cmake support but be warned that cmake support in VS can be a bit finicky.
You can also skip steps 3-5 and open the root folder of the cloned repo directly in Visual Studio (as a folder) and use the built-in CMake support but be warned that cmake support in VS can be a bit finicky.
## Linux
@@ -25,14 +25,15 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
### Installing dependencies
#### For Ubuntu and derivatives:
`sudo apt install -y git curl cmake ninja-build nasm libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev libpulse-dev`
Additionally, for ubuntu 20.04 only:
`sudo apt install -y git curl cmake ninja-build nasm libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev libpulse-dev`
*Additionally, for Ubuntu 22.04 only:*
- `sudo apt install -y clang-12`
- At step 3 while building, use
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
#### For Arch and derivatives:
`sudo pacman -S git cmake clang ninja nasm base-devel linux-headers gtk3 libsecret libgcrypt systemd freeglut zip libpulse`
`sudo pacman -S git cmake clang ninja nasm base-devel linux-headers gtk3 libsecret libgcrypt systemd freeglut zip unzip libpulse`
#### For Fedora and derivatives:
`sudo dnf install git cmake clang ninja-build nasm kernel-headers gtk3-devel libsecret-devel libgcrypt-devel systemd-devel freeglut-devel perl-core zlib-devel cubeb-devel`
@@ -56,4 +57,33 @@ You can use it by replacing the step 3 with the following:
- If step 3 is still failing or if you're not able to find the cause, please make an issue on our Github about it!
- If step 4 gives you an error that contains something like `main.cpp.o: in function 'std::__cxx11::basic_string...`, you likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see below.
- If step 4 gives you a different error, you could report it to this repo or try using GCC. Just make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
- If step 4 gives you undefined libdecor_xx, you are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile
- If step 4 gives you undefined libdecor_xx, you are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile.
## MacOS
To compile Cemu, a recent enough compiler and STL with C++20 support is required! LLVM 13 and
below, built in LLVM, and Xcode LLVM don't support the C++20 feature set required. Currently,
LLVM 15 isn't supported due to compatibility issues with Boost dependency. The OpenGL graphics
API isn't support on MacOS, Vulkan must be used. Additionally Vulkan must be used through the
Molten-VK compatibility layer.
### Installing dependencies
`brew install git cmake llvm@14 ninja nasm molten-vk`
### Build Cemu using cmake and clang
1. `git clone --recursive https://github.com/cemu-project/Cemu`
2. `cd Cemu`
3. `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DPUBLIC_RELEASE=ON
-DCMAKE_C_COMPILER=/usr/local/opt/llvm@14/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@14/bin/clang++ -G Ninja`
4. `cmake --build build`
5. You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
#### Troubleshooting steps
- If step 3 gives you an error about not being able to find ninja, try appending `-DCMAKE_MAKE_PROGRAM=/usr/local/bin/ninja` to the command and running it again.
## Updating Cemu and source code
1. To update your Cemu local repository, use the command `git pull --recurse-submodules` (run this command on the Cemu root).
- This should update your local copy of Cemu and all of its dependencies.
2. Then, you can rebuild Cemu using the steps listed above, according to whether you use Linux or Windows.
If CMake complains about Cemu already being compiled or another similar error, try deleting the `CMakeCache.txt` file inside the `build` folder and retry building.
+12 -9
View File
@@ -1,6 +1,5 @@
cmake_minimum_required(VERSION 3.21.1)
option(PUBLIC_RELEASE "Compile with debug asserts disabled and no console" OFF)
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
set(EXPERIMENTAL_VERSION "" CACHE STRING "") # used by CI script to set experimental version
@@ -29,13 +28,14 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (PUBLIC_RELEASE)
add_compile_definitions(PUBLIC_RELEASE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) # enable LTO
endif()
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# enable link time optimization for release builds
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
if (MSVC)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin)
# floating point model: precise, fiber safe optimizations
@@ -48,10 +48,13 @@ if (MSVC)
else()
add_compile_options(/GT)
endif()
if (PUBLIC_RELEASE)
message(STATUS "Using additional optimization flags for MSVC")
add_compile_options(/Oi /Ot) # enable intrinsic functions, favor speed
endif()
# enable additional optimization flags for release builds
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Oi>) # enable intrinsic functions
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Ot>) # favor speed
endif()
if (APPLE)
enable_language(OBJC OBJCXX)
endif()
option(ENABLE_OPENGL "Enables the OpenGL backend" ON)
+3 -4
View File
@@ -1,7 +1,7 @@
{
"configurations": [
{
"name": "Release",
"name": "RelWithDebInfo",
"configurationType": "RelWithDebInfo",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
@@ -9,13 +9,12 @@
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "Public Release",
"configurationType": "RelWithDebInfo",
"name": "Release",
"configurationType": "Release",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "-DPUBLIC_RELEASE=ON"
},
{
"name": "Debug",
+5 -4
View File
@@ -2,7 +2,7 @@
[![Build Process](https://github.com/cemu-project/Cemu/actions/workflows/build.yml/badge.svg)](https://github.com/cemu-project/Cemu/actions/workflows/build.yml)
[![Discord](https://img.shields.io/discord/286429969104764928?label=Cemu&logo=discord&logoColor=FFFFFF)](https://discord.gg/5psYsup)
[![Matrix Server](https://img.shields.io/matrix/dev:cemu.info?server_fqdn=matrix.cemu.info&label=dev:cemu.info&logo=matrix&logoColor=FFFFFF)](https://matrix.to/#/#dev:cemu.info)
[![Matrix Server](https://img.shields.io/matrix/cemu:cemu.info?server_fqdn=matrix.cemu.info&label=cemu:cemu.info&logo=matrix&logoColor=FFFFFF)](https://matrix.to/#/#cemu:cemu.info)
This is the code repository of Cemu, a Wii U emulator that is able to run most Wii U games and homebrew in a playable state.
It's written in C/C++ and is being actively developed with new features and fixes to increase compatibility, convenience and usability.
@@ -15,6 +15,7 @@ Cemu is currently only available for 64-bit Windows and Linux devices.
- [Compatibility List/Wiki](https://wiki.cemu.info/wiki/Main_Page)
- [Official Subreddit](https://reddit.com/r/Cemu)
- [Official Discord](https://discord.gg/5psYsup)
- [Official Matrix Server](https://matrix.to/#/#cemu:cemu.info)
- [Unofficial Setup Guide](https://cemu.cfw.guide)
#### Other relevant repositories:
@@ -27,7 +28,7 @@ You can download the latest Cemu releases from the [GitHub Releases](https://git
Cemu is currently only available in a portable format so no installation is required besides extracting it in a safe place.
See [Current State Of Linux builds](https://github.com/cemu-project/Cemu/issues/1) for information on using Cemu natively on Linux.
The native Linux build is currently a work-in-progress. See [Current State Of Linux builds](https://github.com/cemu-project/Cemu/issues/107) for more information about the things to be aware of.
Pre-2.0 releases can be found on Cemu's [changelog page](https://cemu.info/changelog.html).
@@ -42,11 +43,11 @@ The old bug tracker can be found at [bugs.cemu.info](https://bugs.cemu.info) and
## Contributing
Pull requests are very welcome. For easier coordination you can visit the developer discussion channel on Discord: [https://discord.gg/5psYsup](https://discord.gg/5psYsup).
Pull requests are very welcome. For easier coordination you can visit the developer discussion channel on [Discord](https://discord.gg/5psYsup) or alternatively the [Matrix Server](https://matrix.to/#/#cemu:cemu.info).
If coding isn't your thing, testing games and making detailed bug reports or updating the (usually outdated) compatibility wiki is also appreciated!
Questions about Cemu's software architecture can also be answered on Discord. Alternative communication channels (like IRC) are being considered.
Questions about Cemu's software architecture can also be answered on Discord (through the Matrix bridge).
## License
Cemu is licensed under [Mozilla Public License 2.0](/LICENSE.txt). Exempt from this are all files in the dependencies directory for which the licenses of the original code apply as well as some individual files in the src folder, as specified in those file headers respectively.
+5 -11
View File
@@ -54,17 +54,10 @@ add_subdirectory(imgui)
add_subdirectory(resource)
add_subdirectory(asm)
if(PUBLIC_RELEASE)
add_executable(CemuBin WIN32
main.cpp
mainLLE.cpp
)
else()
add_executable(CemuBin
main.cpp
mainLLE.cpp
)
endif()
add_executable(CemuBin
main.cpp
mainLLE.cpp
)
if(WIN32)
target_sources(CemuBin PRIVATE
@@ -73,6 +66,7 @@ if(WIN32)
endif()
set_property(TARGET CemuBin PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
set_property(TARGET CemuBin PROPERTY WIN32_EXECUTABLE $<NOT:$<CONFIG:Debug>>)
set_target_properties(CemuBin PROPERTIES
# multi-configuration generators will add a config subdirectory to RUNTIME_OUTPUT_DIRECTORY if no generator expression is used
+468 -8
View File
@@ -1,13 +1,473 @@
project(CemuCafe)
file(GLOB_RECURSE CPP_FILES *.cpp)
file(GLOB_RECURSE H_FILES *.h)
add_library(CemuCafe
Account/Account.cpp
Account/AccountError.h
Account/Account.h
CafeSystem.cpp
CafeSystem.h
Filesystem/fsc.cpp
Filesystem/fscDeviceHostFS.cpp
Filesystem/fscDeviceHostFS.h
Filesystem/fscDeviceRedirect.cpp
Filesystem/fscDeviceWua.cpp
Filesystem/fscDeviceWud.cpp
Filesystem/fsc.h
Filesystem/FST/FST.cpp
Filesystem/FST/FST.h
Filesystem/FST/fstUtil.h
Filesystem/FST/KeyCache.cpp
Filesystem/FST/KeyCache.h
Filesystem/WUD/wud.cpp
Filesystem/WUD/wud.h
GamePatch.cpp
GamePatch.h
GameProfile/GameProfile.cpp
GameProfile/GameProfile.h
GraphicPack/GraphicPack2.cpp
GraphicPack/GraphicPack2.h
GraphicPack/GraphicPack2PatchesApply.cpp
GraphicPack/GraphicPack2Patches.cpp
GraphicPack/GraphicPack2Patches.h
GraphicPack/GraphicPack2PatchesParser.cpp
GraphicPack/GraphicPackError.h
HW/ACR/ACR.cpp
HW/AI/AI.cpp
HW/AI/AI.h
HW/Common/HwReg.h
HW/Espresso/Const.h
HW/Espresso/Debugger/Debugger.cpp
HW/Espresso/Debugger/Debugger.h
HW/Espresso/Debugger/DebugSymbolStorage.cpp
HW/Espresso/Debugger/DebugSymbolStorage.h
HW/Espresso/EspressoISA.h
HW/Espresso/Interpreter/PPCInterpreterALU.hpp
HW/Espresso/Interpreter/PPCInterpreterFPU.cpp
HW/Espresso/Interpreter/PPCInterpreterHelper.h
HW/Espresso/Interpreter/PPCInterpreterHLE.cpp
HW/Espresso/Interpreter/PPCInterpreterImpl.cpp
HW/Espresso/Interpreter/PPCInterpreterInternal.h
HW/Espresso/Interpreter/PPCInterpreterLoadStore.hpp
HW/Espresso/Interpreter/PPCInterpreterMain.cpp
HW/Espresso/Interpreter/PPCInterpreterOPC.cpp
HW/Espresso/Interpreter/PPCInterpreterOPC.hpp
HW/Espresso/Interpreter/PPCInterpreterPS.cpp
HW/Espresso/Interpreter/PPCInterpreterSPR.hpp
HW/Espresso/PPCCallback.h
HW/Espresso/PPCScheduler.cpp
HW/Espresso/PPCSchedulerLLE.cpp
HW/Espresso/PPCState.h
HW/Espresso/PPCTimer.cpp
HW/Espresso/Recompiler/PPCFunctionBoundaryTracker.h
HW/Espresso/Recompiler/PPCRecompiler.cpp
HW/Espresso/Recompiler/PPCRecompiler.h
HW/Espresso/Recompiler/PPCRecompilerImlAnalyzer.cpp
HW/Espresso/Recompiler/PPCRecompilerImlGen.cpp
HW/Espresso/Recompiler/PPCRecompilerImlGenFPU.cpp
HW/Espresso/Recompiler/PPCRecompilerIml.h
HW/Espresso/Recompiler/PPCRecompilerImlOptimizer.cpp
HW/Espresso/Recompiler/PPCRecompilerImlRanges.cpp
HW/Espresso/Recompiler/PPCRecompilerImlRanges.h
HW/Espresso/Recompiler/PPCRecompilerImlRegisterAllocator2.cpp
HW/Espresso/Recompiler/PPCRecompilerImlRegisterAllocator.cpp
HW/Espresso/Recompiler/PPCRecompilerIntermediate.cpp
HW/Espresso/Recompiler/PPCRecompilerX64AVX.cpp
HW/Espresso/Recompiler/PPCRecompilerX64BMI.cpp
HW/Espresso/Recompiler/PPCRecompilerX64.cpp
HW/Espresso/Recompiler/PPCRecompilerX64FPU.cpp
HW/Espresso/Recompiler/PPCRecompilerX64Gen.cpp
HW/Espresso/Recompiler/PPCRecompilerX64GenFPU.cpp
HW/Espresso/Recompiler/PPCRecompilerX64.h
HW/Espresso/Recompiler/x64Emit.hpp
HW/Latte/Common/RegisterSerializer.cpp
HW/Latte/Common/RegisterSerializer.h
HW/Latte/Common/ShaderSerializer.cpp
HW/Latte/Common/ShaderSerializer.h
HW/Latte/Core/FetchShader.cpp
HW/Latte/Core/FetchShader.h
HW/Latte/Core/LatteAsyncCommands.cpp
HW/Latte/Core/LatteAsyncCommands.h
HW/Latte/Core/LatteBufferCache.cpp
HW/Latte/Core/LatteBufferCache.h
HW/Latte/Core/LatteBufferData.cpp
HW/Latte/Core/LatteCachedFBO.h
HW/Latte/Core/LatteCommandProcessor.cpp
HW/Latte/Core/LatteConst.h
HW/Latte/Core/LatteDefaultShaders.cpp
HW/Latte/Core/LatteDefaultShaders.h
HW/Latte/Core/LatteDraw.h
HW/Latte/Core/LatteGSCopyShaderParser.cpp
HW/Latte/Core/Latte.h
HW/Latte/Core/LatteIndices.cpp
HW/Latte/Core/LatteIndices.h
HW/Latte/Core/LatteOverlay.cpp
HW/Latte/Core/LatteOverlay.h
HW/Latte/Core/LattePerformanceMonitor.cpp
HW/Latte/Core/LattePerformanceMonitor.h
HW/Latte/Core/LattePM4.h
HW/Latte/Core/LatteQuery.cpp
HW/Latte/Core/LatteQueryObject.h
HW/Latte/Core/LatteRenderTarget.cpp
HW/Latte/Core/LatteRingBuffer.cpp
HW/Latte/Core/LatteRingBuffer.h
HW/Latte/Core/LatteShaderAssembly.h
HW/Latte/Core/LatteShaderCache.cpp
HW/Latte/Core/LatteShaderCache.h
HW/Latte/Core/LatteShader.cpp
HW/Latte/Core/LatteShaderGL.cpp
HW/Latte/Core/LatteShader.h
HW/Latte/Core/LatteSoftware.cpp
HW/Latte/Core/LatteSoftware.h
HW/Latte/Core/LatteStreamoutGPU.cpp
HW/Latte/Core/LatteSurfaceCopy.cpp
HW/Latte/Core/LatteTextureCache.cpp
HW/Latte/Core/LatteTexture.cpp
HW/Latte/Core/LatteTexture.h
HW/Latte/Core/LatteTextureLegacy.cpp
HW/Latte/Core/LatteTextureLoader.cpp
HW/Latte/Core/LatteTextureLoader.h
HW/Latte/Core/LatteTextureReadback.cpp
HW/Latte/Core/LatteTextureReadbackInfo.h
HW/Latte/Core/LatteTextureView.cpp
HW/Latte/Core/LatteTextureView.h
HW/Latte/Core/LatteThread.cpp
HW/Latte/Core/LatteTiming.cpp
HW/Latte/Core/LatteTiming.h
HW/Latte/ISA/LatteInstructions.h
HW/Latte/ISA/LatteReg.h
HW/Latte/ISA/RegDefines.h
HW/Latte/LatteAddrLib/AddrLibFastDecode.h
HW/Latte/LatteAddrLib/LatteAddrLib_Coord.cpp
HW/Latte/LatteAddrLib/LatteAddrLib.cpp
HW/Latte/LatteAddrLib/LatteAddrLib.h
HW/Latte/LegacyShaderDecompiler/LatteDecompilerAnalyzer.cpp
HW/Latte/LegacyShaderDecompiler/LatteDecompiler.cpp
HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSLAttrDecoder.cpp
HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSL.cpp
HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSLHeader.hpp
HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h
HW/Latte/LegacyShaderDecompiler/LatteDecompilerInstructions.h
HW/Latte/LegacyShaderDecompiler/LatteDecompilerInternal.h
HW/Latte/LegacyShaderDecompiler/LatteDecompilerRegisterDataTypeTracker.cpp
HW/Latte/Renderer/OpenGL/CachedFBOGL.h
HW/Latte/Renderer/OpenGL/LatteTextureGL.cpp
HW/Latte/Renderer/OpenGL/LatteTextureGL.h
HW/Latte/Renderer/OpenGL/LatteTextureViewGL.cpp
HW/Latte/Renderer/OpenGL/LatteTextureViewGL.h
HW/Latte/Renderer/OpenGL/OpenGLQuery.cpp
HW/Latte/Renderer/OpenGL/OpenGLRendererCore.cpp
HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp
HW/Latte/Renderer/OpenGL/OpenGLRenderer.h
HW/Latte/Renderer/OpenGL/OpenGLRendererStreamout.cpp
HW/Latte/Renderer/OpenGL/OpenGLRendererUniformData.cpp
HW/Latte/Renderer/OpenGL/OpenGLSurfaceCopy.cpp
HW/Latte/Renderer/OpenGL/OpenGLTextureReadback.h
HW/Latte/Renderer/OpenGL/RendererShaderGL.cpp
HW/Latte/Renderer/OpenGL/RendererShaderGL.h
HW/Latte/Renderer/OpenGL/TextureReadbackGL.cpp
HW/Latte/Renderer/Renderer.cpp
HW/Latte/Renderer/Renderer.h
HW/Latte/Renderer/RendererOuputShader.cpp
HW/Latte/Renderer/RendererOuputShader.h
HW/Latte/Renderer/RendererShader.cpp
HW/Latte/Renderer/RendererShader.h
HW/Latte/Renderer/Vulkan/CachedFBOVk.cpp
HW/Latte/Renderer/Vulkan/CachedFBOVk.h
HW/Latte/Renderer/Vulkan/CocoaSurface.h
HW/Latte/Renderer/Vulkan/LatteTextureViewVk.cpp
HW/Latte/Renderer/Vulkan/LatteTextureViewVk.h
HW/Latte/Renderer/Vulkan/LatteTextureVk.cpp
HW/Latte/Renderer/Vulkan/LatteTextureVk.h
HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp
HW/Latte/Renderer/Vulkan/RendererShaderVk.h
HW/Latte/Renderer/Vulkan/TextureReadbackVk.cpp
HW/Latte/Renderer/Vulkan/VKRBase.h
HW/Latte/Renderer/Vulkan/VKRMemoryManager.cpp
HW/Latte/Renderer/Vulkan/VKRMemoryManager.h
HW/Latte/Renderer/Vulkan/VKRPipelineInfo.cpp
HW/Latte/Renderer/Vulkan/VsyncDriver.cpp
HW/Latte/Renderer/Vulkan/VsyncDriver.h
HW/Latte/Renderer/Vulkan/VulkanAPI.cpp
HW/Latte/Renderer/Vulkan/VulkanAPI.h
HW/Latte/Renderer/Vulkan/VulkanPipelineCompiler.cpp
HW/Latte/Renderer/Vulkan/VulkanPipelineCompiler.h
HW/Latte/Renderer/Vulkan/VulkanPipelineStableCache.cpp
HW/Latte/Renderer/Vulkan/VulkanPipelineStableCache.h
HW/Latte/Renderer/Vulkan/VulkanQuery.cpp
HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp
HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp
HW/Latte/Renderer/Vulkan/VulkanRenderer.h
HW/Latte/Renderer/Vulkan/VulkanSurfaceCopy.cpp
HW/Latte/Renderer/Vulkan/VulkanTextureReadback.h
HW/Latte/ShaderInfo/ShaderDescription.cpp
HW/Latte/ShaderInfo/ShaderInfo.h
HW/Latte/ShaderInfo/ShaderInstanceInfo.cpp
HW/Latte/Transcompiler/LatteTC.cpp
HW/Latte/Transcompiler/LatteTCGenIR.cpp
HW/Latte/Transcompiler/LatteTC.h
HW/MMU/MMU.cpp
HW/MMU/MMU.h
HW/SI/SI.cpp
HW/SI/si.h
HW/VI/VI.cpp
IOSU/fsa/fsa_types.h
IOSU/fsa/iosu_fsa.cpp
IOSU/fsa/iosu_fsa.h
IOSU/iosu_ipc_common.h
IOSU/iosu_types_common.h
IOSU/kernel/iosu_kernel.cpp
IOSU/kernel/iosu_kernel.h
IOSU/legacy/iosu_acp.cpp
IOSU/legacy/iosu_acp.h
IOSU/legacy/iosu_act.cpp
IOSU/legacy/iosu_act.h
IOSU/legacy/iosu_boss.cpp
IOSU/legacy/iosu_boss.h
IOSU/legacy/iosu_crypto.cpp
IOSU/legacy/iosu_crypto.h
IOSU/legacy/iosu_fpd.cpp
IOSU/legacy/iosu_fpd.h
IOSU/legacy/iosu_ioctl.cpp
IOSU/legacy/iosu_ioctl.h
IOSU/legacy/iosu_mcp.cpp
IOSU/legacy/iosu_mcp.h
IOSU/legacy/iosu_nim.cpp
IOSU/legacy/iosu_nim.h
IOSU/nn/iosu_nn_service.cpp
IOSU/nn/iosu_nn_service.h
IOSU/PDM/iosu_pdm.cpp
IOSU/PDM/iosu_pdm.h
OS/common/OSCommon.cpp
OS/common/OSCommon.h
OS/common/OSUtil.h
OS/common/PPCConcurrentQueue.h
OS/libs/avm/avm.cpp
OS/libs/avm/avm.h
OS/libs/camera/camera.cpp
OS/libs/camera/camera.h
OS/libs/coreinit/coreinit_Alarm.cpp
OS/libs/coreinit/coreinit_Alarm.h
OS/libs/coreinit/coreinit_Atomic.cpp
OS/libs/coreinit/coreinit_Atomic.h
OS/libs/coreinit/coreinit_BSP.cpp
OS/libs/coreinit/coreinit_BSP.h
OS/libs/coreinit/coreinit_Callbacks.cpp
OS/libs/coreinit/coreinit_CodeGen.cpp
OS/libs/coreinit/coreinit_CodeGen.h
OS/libs/coreinit/coreinit_Coroutine.cpp
OS/libs/coreinit/coreinit_Coroutine.h
OS/libs/coreinit/coreinit.cpp
OS/libs/coreinit/coreinit_DynLoad.cpp
OS/libs/coreinit/coreinit_DynLoad.h
OS/libs/coreinit/coreinit_FG.cpp
OS/libs/coreinit/coreinit_FG.h
OS/libs/coreinit/coreinit_FS.cpp
OS/libs/coreinit/coreinit_FS.h
OS/libs/coreinit/coreinit_GHS.cpp
OS/libs/coreinit/coreinit_GHS.h
OS/libs/coreinit/coreinit.h
OS/libs/coreinit/coreinit_HWInterface.cpp
OS/libs/coreinit/coreinit_HWInterface.h
OS/libs/coreinit/coreinit_IM.cpp
OS/libs/coreinit/coreinit_IM.h
OS/libs/coreinit/coreinit_Init.cpp
OS/libs/coreinit/coreinit_IOS.cpp
OS/libs/coreinit/coreinit_IOS.h
OS/libs/coreinit/coreinit_IPCBuf.cpp
OS/libs/coreinit/coreinit_IPCBuf.h
OS/libs/coreinit/coreinit_IPC.cpp
OS/libs/coreinit/coreinit_IPC.h
OS/libs/coreinit/coreinit_LockedCache.cpp
OS/libs/coreinit/coreinit_LockedCache.h
OS/libs/coreinit/coreinit_MCP.cpp
OS/libs/coreinit/coreinit_MCP.h
OS/libs/coreinit/coreinit_MEM_BlockHeap.cpp
OS/libs/coreinit/coreinit_MEM_BlockHeap.h
OS/libs/coreinit/coreinit_MEM.cpp
OS/libs/coreinit/coreinit_MEM_ExpHeap.cpp
OS/libs/coreinit/coreinit_MEM_ExpHeap.h
OS/libs/coreinit/coreinit_MEM_FrmHeap.cpp
OS/libs/coreinit/coreinit_MEM_FrmHeap.h
OS/libs/coreinit/coreinit_MEM.h
OS/libs/coreinit/coreinit_Memory.cpp
OS/libs/coreinit/coreinit_Memory.h
OS/libs/coreinit/coreinit_MemoryMapping.cpp
OS/libs/coreinit/coreinit_MemoryMapping.h
OS/libs/coreinit/coreinit_MEM_UnitHeap.cpp
OS/libs/coreinit/coreinit_MEM_UnitHeap.h
OS/libs/coreinit/coreinit_MessageQueue.cpp
OS/libs/coreinit/coreinit_MessageQueue.h
OS/libs/coreinit/coreinit_Misc.cpp
OS/libs/coreinit/coreinit_Misc.h
OS/libs/coreinit/coreinit_MPQueue.cpp
OS/libs/coreinit/coreinit_MPQueue.h
OS/libs/coreinit/coreinit_OSScreen.cpp
OS/libs/coreinit/coreinit_OSScreen_font.h
OS/libs/coreinit/coreinit_OSScreen.h
OS/libs/coreinit/coreinit_OverlayArena.cpp
OS/libs/coreinit/coreinit_OverlayArena.h
OS/libs/coreinit/coreinit_Scheduler.cpp
OS/libs/coreinit/coreinit_Scheduler.h
OS/libs/coreinit/coreinit_Spinlock.cpp
OS/libs/coreinit/coreinit_Spinlock.h
OS/libs/coreinit/coreinit_Synchronization.cpp
OS/libs/coreinit/coreinit_SysHeap.cpp
OS/libs/coreinit/coreinit_SysHeap.h
OS/libs/coreinit/coreinit_SystemInfo.cpp
OS/libs/coreinit/coreinit_SystemInfo.h
OS/libs/coreinit/coreinit_Thread.cpp
OS/libs/coreinit/coreinit_Thread.h
OS/libs/coreinit/coreinit_ThreadQueue.cpp
OS/libs/coreinit/coreinit_Time.cpp
OS/libs/coreinit/coreinit_Time.h
OS/libs/dmae/dmae.cpp
OS/libs/dmae/dmae.h
OS/libs/drmapp/drmapp.cpp
OS/libs/drmapp/drmapp.h
OS/libs/erreula/erreula.cpp
OS/libs/erreula/erreula.h
OS/libs/gx2/GX2_AddrTest.cpp
OS/libs/gx2/GX2_Blit.cpp
OS/libs/gx2/GX2_Blit.h
OS/libs/gx2/GX2_Command.cpp
OS/libs/gx2/GX2_Command.h
OS/libs/gx2/GX2_ContextState.cpp
OS/libs/gx2/GX2.cpp
OS/libs/gx2/GX2_Draw.cpp
OS/libs/gx2/GX2_Draw.h
OS/libs/gx2/GX2_Event.cpp
OS/libs/gx2/GX2_Event.h
OS/libs/gx2/GX2.h
OS/libs/gx2/GX2_Memory.cpp
OS/libs/gx2/GX2_Memory.h
OS/libs/gx2/GX2_Misc.cpp
OS/libs/gx2/GX2_Misc.h
OS/libs/gx2/GX2_Query.cpp
OS/libs/gx2/GX2_Query.h
OS/libs/gx2/GX2_RenderTarget.cpp
OS/libs/gx2/GX2_Resource.cpp
OS/libs/gx2/GX2_Resource.h
OS/libs/gx2/GX2_Shader.cpp
OS/libs/gx2/GX2_Shader.h
OS/libs/gx2/GX2_shader_legacy.cpp
OS/libs/gx2/GX2_State.cpp
OS/libs/gx2/GX2_State.h
OS/libs/gx2/GX2_Streamout.cpp
OS/libs/gx2/GX2_Streamout.h
OS/libs/gx2/GX2_Surface_Copy.cpp
OS/libs/gx2/GX2_Surface_Copy.h
OS/libs/gx2/GX2_Surface.cpp
OS/libs/gx2/GX2_Surface.h
OS/libs/gx2/GX2_Texture.cpp
OS/libs/gx2/GX2_Texture.h
OS/libs/gx2/GX2_TilingAperture.cpp
OS/libs/h264_avc/H264Dec.cpp
OS/libs/h264_avc/h264dec.h
OS/libs/h264_avc/parser
OS/libs/h264_avc/parser/H264Parser.cpp
OS/libs/h264_avc/parser/H264Parser.h
OS/libs/mic/mic.cpp
OS/libs/mic/mic.h
OS/libs/nlibcurl/nlibcurl.cpp
OS/libs/nlibcurl/nlibcurlDebug.hpp
OS/libs/nlibcurl/nlibcurl.h
OS/libs/nlibnss/nlibnss.cpp
OS/libs/nlibnss/nlibnss.h
OS/libs/nn_ac/nn_ac.cpp
OS/libs/nn_ac/nn_ac.h
OS/libs/nn_acp/nn_acp.cpp
OS/libs/nn_acp/nn_acp.h
OS/libs/nn_act/nn_act.cpp
OS/libs/nn_act/nn_act.h
OS/libs/nn_aoc/nn_aoc.cpp
OS/libs/nn_aoc/nn_aoc.h
OS/libs/nn_boss/nn_boss.cpp
OS/libs/nn_boss/nn_boss.h
OS/libs/nn_ccr/nn_ccr.cpp
OS/libs/nn_ccr/nn_ccr.h
OS/libs/nn_cmpt/nn_cmpt.cpp
OS/libs/nn_cmpt/nn_cmpt.h
OS/libs/nn_common.h
OS/libs/nn_ec/nn_ec.cpp
OS/libs/nn_ec/nn_ec.h
OS/libs/nn_fp/nn_fp.cpp
OS/libs/nn_fp/nn_fp.h
OS/libs/nn_idbe/nn_idbe.cpp
OS/libs/nn_idbe/nn_idbe.h
OS/libs/nn_ndm/nn_ndm.cpp
OS/libs/nn_ndm/nn_ndm.h
OS/libs/nn_nfp/AmiiboCrypto.h
OS/libs/nn_nfp/nn_nfp.cpp
OS/libs/nn_nfp/nn_nfp.h
OS/libs/nn_nim/nn_nim.cpp
OS/libs/nn_nim/nn_nim.h
OS/libs/nn_olv/nn_olv.cpp
OS/libs/nn_olv/nn_olv.h
OS/libs/nn_pdm/nn_pdm.cpp
OS/libs/nn_pdm/nn_pdm.h
OS/libs/nn_save/nn_save.cpp
OS/libs/nn_save/nn_save.h
OS/libs/nn_temp/nn_temp.cpp
OS/libs/nn_temp/nn_temp.h
OS/libs/nn_uds/nn_uds.cpp
OS/libs/nn_uds/nn_uds.h
OS/libs/nsyshid/nsyshid.cpp
OS/libs/nsyshid/nsyshid.h
OS/libs/nsyskbd/nsyskbd.cpp
OS/libs/nsyskbd/nsyskbd.h
OS/libs/nsysnet/nsysnet.cpp
OS/libs/nsysnet/nsysnet.h
OS/libs/padscore/padscore.cpp
OS/libs/padscore/padscore.h
OS/libs/proc_ui/proc_ui.cpp
OS/libs/proc_ui/proc_ui.h
OS/libs/snd_core/ax_aux.cpp
OS/libs/snd_core/ax_exports.cpp
OS/libs/snd_core/ax.h
OS/libs/snd_core/ax_internal.h
OS/libs/snd_core/ax_ist.cpp
OS/libs/snd_core/ax_mix.cpp
OS/libs/snd_core/ax_multivoice.cpp
OS/libs/snd_core/ax_out.cpp
OS/libs/snd_core/ax_voice.cpp
OS/libs/snd_user/snd_user.cpp
OS/libs/snd_user/snd_user.h
OS/libs/swkbd/swkbd.cpp
OS/libs/swkbd/swkbd.h
OS/libs/sysapp/sysapp.cpp
OS/libs/sysapp/sysapp.h
OS/libs/TCL/TCL.cpp
OS/libs/TCL/TCL.h
OS/libs/vpad/vpad.cpp
OS/libs/vpad/vpad.h
OS/libs/zlib125
OS/libs/zlib125/zlib125.cpp
OS/libs/zlib125/zlib125.h
OS/RPL/elf.cpp
OS/RPL/rpl.cpp
OS/RPL/rpl_debug_symbols.cpp
OS/RPL/rpl_debug_symbols.h
OS/RPL/rpl.h
OS/RPL/rpl_structs.h
OS/RPL/rpl_symbol_storage.cpp
OS/RPL/rpl_symbol_storage.h
TitleList/BaseInfo.cpp
TitleList/BaseInfo.h
TitleList/GameInfo.h
TitleList/MetaInfo.cpp
TitleList/MetaInfo.h
TitleList/ParsedMetaXml.h
TitleList/SaveInfo.cpp
TitleList/SaveInfo.h
TitleList/SaveList.cpp
TitleList/SaveList.h
TitleList/TitleId.h
TitleList/TitleInfo.cpp
TitleList/TitleInfo.h
TitleList/TitleList.cpp
TitleList/TitleList.h
)
if(APPLE)
file(GLOB_RECURSE MM_FILES *.mm)
add_library(CemuCafe ${CPP_FILES} ${MM_FILES} ${H_FILES})
else()
add_library(CemuCafe ${CPP_FILES} ${H_FILES})
target_sources(CemuCafe PRIVATE "HW/Latte/Renderer/Vulkan/CocoaSurface.mm")
endif()
set_property(TARGET CemuCafe PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
+1 -1
View File
@@ -577,7 +577,7 @@ namespace CafeSystem
const auto file = fsc_open(rpxPath.c_str(), FSC_ACCESS_FLAG::OPEN_FILE | FSC_ACCESS_FLAG::READ_PERMISSION, &status);
if (file)
{
_pathToExecutable = rpxPath;
_pathToExecutable = std::move(rpxPath);
fsc_close(file);
}
}
+1 -1
View File
@@ -143,7 +143,7 @@ sint32 fsc_mount(std::string_view mountPath, std::string_view targetPath, fscDev
}
node->device = fscDevice;
node->ctx = ctx;
node->deviceTargetPath = targetPathWithSlash;
node->deviceTargetPath = std::move(targetPathWithSlash);
fscLeave();
return FSC_STATUS_OK;
}
+5 -5
View File
@@ -199,7 +199,7 @@ MPTR hle_locate(uint8* data, uint8* mask, sint32 dataLength)
}
else
{
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
if (mask[0] != 0xFF)
assert_dbg();
#endif
@@ -299,7 +299,7 @@ void GamePatch_scan()
hleAddr = hle_locate(xcx_gpuHangDetection_degradeFramebuffer, NULL, sizeof(xcx_gpuHangDetection_degradeFramebuffer));
if( hleAddr )
{
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
forceLog_printf("HLE: XCX GPU hang detection");
#endif
// remove the ADDI r25, r25, 1 instruction
@@ -309,7 +309,7 @@ void GamePatch_scan()
hleAddr = hle_locate(xcx_framebufferReductionSignature, xcx_framebufferReductionMask, sizeof(xcx_framebufferReductionSignature));
if( hleAddr )
{
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
forceLog_printf("HLE: Prevent XCX rendertarget reduction");
#endif
uint32 bl = memory_readU32(hleAddr+0x14);
@@ -325,7 +325,7 @@ void GamePatch_scan()
hleAddr = hle_locate(botw_busyLoopSignature, botw_busyLoopMask, sizeof(botw_busyLoopSignature));
if (hleAddr)
{
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
forceLog_printf("HLE: Patch BotW busy loop 1 at 0x%08x", hleAddr);
#endif
sint32 functionIndex = hleIndex_h000000001;
@@ -336,7 +336,7 @@ void GamePatch_scan()
hleAddr = hle_locate(botw_busyLoopSignature2, botw_busyLoopMask2, sizeof(botw_busyLoopSignature2));
if (hleAddr)
{
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
forceLog_printf("HLE: Patch BotW busy loop 2 at 0x%08x", hleAddr);
#endif
sint32 functionIndex = hleIndex_h000000002;
+3 -3
View File
@@ -1020,9 +1020,9 @@ bool GraphicPack2::Deactivate()
m_upscaling_shader_ud.reset();
m_downscaling_shader_ud.reset();
m_output_shader_source = "";
m_upscaling_shader_source = "";
m_downscaling_shader_source = "";
m_output_shader_source.clear();
m_upscaling_shader_source.clear();
m_downscaling_shader_source.clear();
if (HasCustomVSyncFrequency())
{
+2 -6
View File
@@ -121,12 +121,8 @@ bool GraphicPack2::LoadCemuPatches()
void GraphicPack2::LoadPatchFiles()
{
// order of loading patches:
// 1) If Cemuhook is loaded:
// 1.1) Check if patches.txt exists and if it does, stop here and do nothing (Cemuhook takes over patching)
// 1.2) Load Cemu-style patches (patch_<name>.asm)
// 2) If Cemuhook is not loaded:
// 1.1) Load Cemu-style patches (patch_<name>.asm), stop here if at least one patch file exists
// 1.2) Load Cemuhook patches.txt
// 1) Load Cemu-style patches (patch_<name>.asm), stop here if at least one patch file exists
// 2) Load Cemuhook patches.txt
// update: As of 1.20.2b Cemu always takes over patching since Cemuhook patching broke due to other internal changes (memory allocation changed and some reordering on when graphic packs get loaded)
if (LoadCemuPatches())
+1 -1
View File
@@ -101,7 +101,7 @@ namespace Espresso
struct BOField
{
BOField() {};
BOField() = default;
BOField(uint8 bo) : bo(bo) {};
bool conditionInverted() const
@@ -384,7 +384,7 @@ static void PPCInterpreter_MULHW_(PPCInterpreter_t* hCPU, uint32 opcode)
hCPU->gpr[rD] = ((uint64)c) >> 32;
if (opcode & PPC_OPC_RC) {
// update cr0 flags
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
#endif
ppc_update_cr0(hCPU, hCPU->gpr[rD]);
@@ -139,7 +139,7 @@ public:
return vAddr;
}
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
if (hCPU->memoryException)
assert_dbg(); // should not be set anymore
#endif
@@ -456,7 +456,7 @@ public:
{
case 0:
debug_printf("ZERO[NOP] | 0x%08X\n", (unsigned int)hCPU->instructionPointer);
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
while (true) std::this_thread::sleep_for(std::chrono::seconds(1));
#endif
@@ -712,7 +712,7 @@ public:
PPCInterpreter_CMP(hCPU, opcode);
break;
case 4:
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
debug_printf("TW instruction executed at %08x\n", hCPU->instructionPointer);
#endif
PPCInterpreter_TW(hCPU, opcode);
@@ -998,7 +998,7 @@ public:
break;
default:
debug_printf("Unknown execute %04X as [31] at %08X\n", PPC_getBits(opcode, 30, 10), hCPU->instructionPointer);
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
#endif
hCPU->instructionPointer += 4;
@@ -559,7 +559,7 @@ static void PPCSprSupervisor_set(PPCInterpreter_t* hCPU, uint32 spr, uint32 newV
break;
default:
debug_printf("[C%d] Set unhandled SPR 0x%x to %08x (supervisor mode)\n", hCPU->spr.UPIR, spr, newValue);
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
#endif
break;
@@ -598,7 +598,7 @@ static void PPCSpr_set(PPCInterpreter_t* hCPU, uint32 spr, uint32 newValue)
break;
default:
debug_printf("[C%d] Set unhandled SPR %d to %08x\n", hCPU->spr.UPIR, spr, newValue);
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
#endif
break;
@@ -782,7 +782,7 @@ static uint32 PPCSprSupervisor_get(PPCInterpreter_t* hCPU, uint32 spr)
break;
default:
debug_printf("[C%d] Get unhandled SPR %d\n", hCPU->spr.UPIR, spr);
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
#endif
break;
@@ -840,7 +840,7 @@ static uint32 PPCSpr_get(PPCInterpreter_t* hCPU, uint32 spr)
break;
default:
debug_printf("[C%d] Get unhandled SPR %d\n", hCPU->spr.UPIR, spr);
#ifndef PUBLIC_RELEASE
#ifdef CEMU_DEBUG_ASSERT
assert_dbg();
#endif
break;
-1
View File
@@ -65,7 +65,6 @@ struct PPCInterpreter_t
// LWARX and STWCX
uint32 reservedMemAddr;
uint32 reservedMemValue;
/* Note: Everything above is potentially hardcoded into Cemuhook. Do not touch anything or it will risk breaking compatibility */
// temporary storage for recompiler
FPR_t temporaryFPR[8];
uint32 temporaryGPR[4];

Some files were not shown because too many files have changed in this diff Show More