mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-03 13:31:18 +12:00
commit
8cd570a3f4
16 changed files with 72 additions and 46 deletions
34
.github/ISSUE_TEMPLATE/bug-report-feature-request.md
vendored
Normal file
34
.github/ISSUE_TEMPLATE/bug-report-feature-request.md
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
name: Bug Report / Feature Request
|
||||
about: Tech support does not belong here. You should only file an issue here if you think you have experienced an actual bug with Cemu or you are requesting a feature you believe would make Cemu better.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Please keep in mind Cemu is EXPERIMENTAL SOFTWARE.
|
||||
|
||||
Please read the FAQ:
|
||||
https://cemu.info/faq.html/
|
||||
|
||||
THIS IS NOT A SUPPORT FORUM, FOR SUPPORT GO TO:
|
||||
https://discord.com/invite/5psYsup/
|
||||
|
||||
If the FAQ does not answer your question, please go to:
|
||||
https://discord.com/invite/5psYsup/
|
||||
|
||||
When submitting an issue, please check the following:
|
||||
|
||||
- You have read the above.
|
||||
- You have provided the version (commit hash) of Cemu you are using.
|
||||
- You have provided sufficient detail for the issue to be reproduced.
|
||||
- You have provided system specs (if relevant).
|
||||
- Please also provide:
|
||||
- For any issues, a log file
|
||||
- For crashes, a backtrace.
|
||||
- For graphical issues, comparison screenshots with real hardware.
|
||||
- For emulation inaccuracies, a test-case (if able).
|
||||
|
||||
-->
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Cemu Discord
|
||||
url: https://discord.com/invite/5psYsup
|
||||
about: If you are experiencing an issue with Cemu, and you need tech support, or if you have a general question, try asking in the official Cemu Discord linked here. Piracy is not allowed.
|
17
.github/workflows/build.yml
vendored
17
.github/workflows/build.yml
vendored
|
@ -26,9 +26,6 @@ env:
|
|||
jobs:
|
||||
build-ubuntu:
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
install_vulkan_folder: "$GITHUB_WORKSPACE/vulkan_sdk"
|
||||
install_vulkan_version: "1.3.216.0"
|
||||
steps:
|
||||
- name: "Checkout repo"
|
||||
uses: actions/checkout@v3
|
||||
|
@ -53,13 +50,9 @@ jobs:
|
|||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install -y ninja-build cmake libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm
|
||||
wget https://sdk.lunarg.com/sdk/download/${{ env.install_vulkan_version }}/linux/vulkansdk-linux-x86_64-${{ env.install_vulkan_version }}.tar.gz -q -O vulkansdk.tar.gz
|
||||
mkdir -p "${{ env.install_vulkan_folder }}"
|
||||
tar -xf vulkansdk.tar.gz --directory ${{ env.install_vulkan_folder }}
|
||||
|
||||
- name: "Bootstrap vcpkg"
|
||||
run: |
|
||||
export VULKAN_SDK="${{ env.install_vulkan_folder }}/${{ env.install_vulkan_version }}/x86_64"
|
||||
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
||||
|
||||
- name: 'Setup NuGet Credentials for vcpkg'
|
||||
|
@ -78,7 +71,6 @@ jobs:
|
|||
|
||||
- name: "cmake"
|
||||
run: |
|
||||
export VULKAN_SDK="${{ env.install_vulkan_folder }}/${{ env.install_vulkan_version }}/x86_64"
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
||||
|
@ -98,9 +90,6 @@ jobs:
|
|||
|
||||
build-windows:
|
||||
runs-on: windows-2022
|
||||
env:
|
||||
install_vulkan_folder: "$GITHUB_WORKSPACE/vulkan_sdk"
|
||||
install_vulkan_version: "1.3.216.0"
|
||||
steps:
|
||||
- name: "Checkout repo"
|
||||
uses: actions/checkout@v3
|
||||
|
@ -121,12 +110,6 @@ jobs:
|
|||
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "Build mode is debug"
|
||||
|
||||
- name: Prepare Vulkan SDK
|
||||
uses: humbletim/setup-vulkan-sdk@v1.2.0
|
||||
with:
|
||||
vulkan-query-version: 1.3.216.0
|
||||
vulkan-components: Vulkan-Headers, Vulkan-Loader
|
||||
vulkan-use-cache: false
|
||||
|
||||
- name: Workaround
|
||||
run: |
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -16,6 +16,7 @@
|
|||
|
||||
build/
|
||||
out/
|
||||
.cache/
|
||||
|
||||
# Cemu bin files
|
||||
otp.bin
|
||||
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -10,3 +10,6 @@
|
|||
path = dependencies/vcpkg
|
||||
url = https://github.com/microsoft/vcpkg
|
||||
shallow = true
|
||||
[submodule "dependencies/Vulkan-Headers"]
|
||||
path = dependencies/Vulkan-Headers
|
||||
url = https://github.com/KhronosGroup/Vulkan-Headers
|
||||
|
|
18
BUILD.md
18
BUILD.md
|
@ -5,13 +5,12 @@
|
|||
Prerequisites:
|
||||
- A recent version of Visual Studio 2022 with CMake tools component
|
||||
- git
|
||||
- Vulkan SDK ([https://vulkan.lunarg.com/](https://vulkan.lunarg.com/)). Don't forget to restart after installing.
|
||||
|
||||
Instructions:
|
||||
|
||||
1) Run `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||
2) Launch `Cemu/build_vs_solution.bat`. If you installed VS to a custom location you may need to manually adjust the path inside the bat file
|
||||
3) Wait until done, then open build/Cemu.sln in Visual Studio
|
||||
2) Launch `Cemu/generate_vs_solution.bat`. If you installed VS to a custom location you may need to manually adjust the path inside the bat file
|
||||
3) Wait until done, then open `Cemu/build/Cemu.sln` in Visual Studio
|
||||
4) Right click 'CemuBin' project -> Set as startup project
|
||||
5) Then build the solution and once finished you can run and debug it
|
||||
|
||||
|
@ -23,12 +22,11 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
|
|||
|
||||
For ubuntu and most derivatives:
|
||||
|
||||
1) Make sure vulkansdk is installed and the VULKAN_SDK environment variable is set correctly.
|
||||
2) `sudo apt install -y libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm`
|
||||
3) Run `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||
4) `cd Cemu`
|
||||
5) `mkdir build && cd build`
|
||||
6) `cmake .. -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`
|
||||
8) `ninja`
|
||||
1) `sudo apt install -y libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm ninja-build`
|
||||
2) Run `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||
3) `cd Cemu`
|
||||
4) `mkdir build && cd build`
|
||||
5) `cmake .. -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja`
|
||||
6) `ninja`
|
||||
|
||||
Build instructions for other distributions will be added in the future!
|
||||
|
|
|
@ -70,8 +70,7 @@ find_package(ZLIB REQUIRED)
|
|||
find_package(zstd CONFIG REQUIRED)
|
||||
|
||||
if (ENABLE_VULKAN)
|
||||
find_package(Vulkan REQUIRED)
|
||||
include_directories("${Vulkan_INCLUDE_DIRS}")
|
||||
include_directories("dependencies/Vulkan-Headers/include")
|
||||
endif()
|
||||
|
||||
if (ENABLE_OPENGL)
|
||||
|
|
|
@ -22,13 +22,13 @@ Cemu is currently only available for 64-bit Windows and Linux devices.
|
|||
|
||||
## Download
|
||||
|
||||
You can download the latest Cemu releases from the [Github Releases](https://github.com/cemu-project/Cemu/releases/) or from [Cemu's website](http://cemu.info).
|
||||
You can download the latest Cemu releases from the [Github Releases](https://github.com/cemu-project/Cemu/releases/) or from [Cemu's website](https://cemu.info).
|
||||
|
||||
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.
|
||||
|
||||
Pre-2.0 releases can be found on Cemu's [changelog page](http://cemu.info/changelog.html).
|
||||
Pre-2.0 releases can be found on Cemu's [changelog page](https://cemu.info/changelog.html).
|
||||
|
||||
## Build Instructions
|
||||
|
||||
|
|
1
dependencies/Vulkan-Headers
vendored
Submodule
1
dependencies/Vulkan-Headers
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 715673702f5b18ffb8e5832e67cf731468d32ac6
|
|
@ -432,7 +432,7 @@ void LatteShaderCache_ShowProgress(const std::function <bool(void)>& loadUpdateF
|
|||
}
|
||||
|
||||
ImGui::SetCursorPosX(width - ImGui::CalcTextSize(text.c_str()).x / 2);
|
||||
ImGui::Text(text.c_str());
|
||||
ImGui::Text("%s", text.c_str());
|
||||
|
||||
float percentLoaded;
|
||||
if(isPipelines)
|
||||
|
@ -446,7 +446,7 @@ void LatteShaderCache_ShowProgress(const std::function <bool(void)>& loadUpdateF
|
|||
else
|
||||
text = fmt::format("{}/{} ({}%%)", g_shaderCacheLoaderState.loadedShaderFiles, g_shaderCacheLoaderState.shaderFileCount, (int)(percentLoaded * 100));
|
||||
ImGui::SetCursorPosX(width - ImGui::CalcTextSize(text.c_str()).x / 2);
|
||||
ImGui::Text(text.c_str());
|
||||
ImGui::Text("%s", text.c_str());
|
||||
ImGui::End();
|
||||
}
|
||||
ImGui::PopFont();
|
||||
|
|
|
@ -531,6 +531,6 @@ void VKRMemoryManager::appendOverlayHeapDebugInfo()
|
|||
uint32 heapSizeMB = (heapSize / 1024 / 1024);
|
||||
uint32 allocatedBytesMB = (allocatedBytes / 1024 / 1024);
|
||||
|
||||
ImGui::Text(fmt::format("{0:#08x} Size: {1}MB/{2}MB", itr.first, allocatedBytesMB, heapSizeMB).c_str());
|
||||
ImGui::Text("%s", fmt::format("{0:#08x} Size: {1}MB/{2}MB", itr.first, allocatedBytesMB, heapSizeMB).c_str());
|
||||
}
|
||||
}
|
|
@ -538,7 +538,6 @@ namespace coreinit
|
|||
|
||||
void coreinitExport_MEMAllocFromAllocator(PPCInterpreter_t* hCPU)
|
||||
{
|
||||
debug_printf("MEMAllocFromAllocator(0x%x, 0x%x)\n", hCPU->gpr[3], hCPU->gpr[4]);
|
||||
MEMAllocator* memAllocator = (MEMAllocator*)memory_getPointerFromVirtualOffset(hCPU->gpr[3]);
|
||||
// redirect execution to allocator alloc callback
|
||||
hCPU->instructionPointer = memAllocator->func->funcAlloc.GetMPTR();
|
||||
|
@ -546,7 +545,6 @@ namespace coreinit
|
|||
|
||||
void coreinitExport_MEMFreeToAllocator(PPCInterpreter_t* hCPU)
|
||||
{
|
||||
debug_printf("MEMFreeToAllocator(0x%x, 0x%08x)\n", hCPU->gpr[3], hCPU->gpr[4]);
|
||||
MEMAllocator* memAllocator = (MEMAllocator*)memory_getPointerFromVirtualOffset(hCPU->gpr[3]);
|
||||
// redirect execution to allocator free callback
|
||||
hCPU->instructionPointer = memAllocator->func->funcFree.GetMPTR();
|
||||
|
@ -568,11 +566,10 @@ namespace coreinit
|
|||
|
||||
void coreinitExport_MEMInitAllocatorForDefaultHeap(PPCInterpreter_t* hCPU)
|
||||
{
|
||||
debug_printf("MEMInitAllocatorForDefaultHeap(0x%08x)", hCPU->gpr[3]);
|
||||
ppcDefineParamStructPtr(memAllocator, MEMAllocator, 0);
|
||||
|
||||
gDefaultHeapAllocator->funcAlloc = _swapEndianU32(PPCInterpreter_makeCallableExportDepr(_DefaultHeapAllocator_Alloc));
|
||||
gDefaultHeapAllocator->funcFree = _swapEndianU32(PPCInterpreter_makeCallableExportDepr(_DefaultHeapAllocator_Free));
|
||||
gDefaultHeapAllocator->funcAlloc = PPCInterpreter_makeCallableExportDepr(_DefaultHeapAllocator_Alloc);
|
||||
gDefaultHeapAllocator->funcFree = PPCInterpreter_makeCallableExportDepr(_DefaultHeapAllocator_Free);
|
||||
|
||||
memAllocator->func = gDefaultHeapAllocator.GetPtr();
|
||||
memAllocator->heap = MEMPTR<void>(MEMGetBaseHeapHandle(1));
|
||||
|
|
|
@ -831,8 +831,8 @@ SysAllocator<MEMAllocatorFunc> gExpHeapDefaultAllocator;
|
|||
void MEMInitAllocatorForExpHeap(MEMAllocator* allocator, MEMHeapHandle heap, sint32 alignment)
|
||||
{
|
||||
allocator->func = gExpHeapDefaultAllocator.GetPtr();
|
||||
gExpHeapDefaultAllocator->funcAlloc = _swapEndianU32(PPCInterpreter_makeCallableExportDepr(_DefaultAllocatorForExpHeap_Alloc));
|
||||
gExpHeapDefaultAllocator->funcFree = _swapEndianU32(PPCInterpreter_makeCallableExportDepr(_DefaultAllocatorForExpHeap_Free));
|
||||
gExpHeapDefaultAllocator->funcAlloc = PPCInterpreter_makeCallableExportDepr(_DefaultAllocatorForExpHeap_Alloc);
|
||||
gExpHeapDefaultAllocator->funcFree = PPCInterpreter_makeCallableExportDepr(_DefaultAllocatorForExpHeap_Free);
|
||||
|
||||
allocator->heap = heap;
|
||||
allocator->param1 = alignment;
|
||||
|
|
|
@ -390,7 +390,7 @@ void swkbd_render(bool mainWindow)
|
|||
ImGui::PushFont(font);
|
||||
if (ImGui::Begin("Keyboard Input", nullptr, kPopupFlags))
|
||||
{
|
||||
ImGui::Text(_utf8WrapperPtr(ICON_FA_KEYBOARD));
|
||||
ImGui::Text("%s", _utf8WrapperPtr(ICON_FA_KEYBOARD));
|
||||
ImGui::SameLine(70);
|
||||
auto text = boost::nowide::narrow(fmt::format(L"{}", swkbdInternalState->formStringBuffer));
|
||||
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
//Temporary Workaround for static_assert related errors in libstdc++12
|
||||
//TODO: Make a proper fix
|
||||
#ifdef __clang__
|
||||
#define static_assert(...) static_assert(true, "")
|
||||
#endif
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdlib.h> // for size_t
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
"default-features": false
|
||||
},
|
||||
"rapidjson",
|
||||
"vulkan",
|
||||
"sdl2",
|
||||
"boost-tokenizer",
|
||||
"boost-container",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue