mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-04 05:51:19 +12:00
Merge pull request #1 from ArtemisX64/gcc1
Fixed WIndows Builds and some Linux Fixes
This commit is contained in:
commit
f8da4557a3
16 changed files with 53 additions and 28 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -17,6 +17,7 @@
|
||||||
build/
|
build/
|
||||||
out/
|
out/
|
||||||
.cache/
|
.cache/
|
||||||
|
bin/Cemu
|
||||||
|
|
||||||
# Cemu bin files
|
# Cemu bin files
|
||||||
bin/otp.bin
|
bin/otp.bin
|
||||||
|
|
1
dist/linux/info.cemu.Cemu.desktop
vendored
1
dist/linux/info.cemu.Cemu.desktop
vendored
|
@ -7,6 +7,7 @@ Exec=cemu
|
||||||
Comment=Software to emulate Wii U games and applications on PC
|
Comment=Software to emulate Wii U games and applications on PC
|
||||||
Comment[de]=Software zum emulieren von Wii U Spielen und Anwendungen auf dem PC
|
Comment[de]=Software zum emulieren von Wii U Spielen und Anwendungen auf dem PC
|
||||||
Comment[ru]=Программа для эмуляции игр и приложений Wii U на PC
|
Comment[ru]=Программа для эмуляции игр и приложений Wii U на PC
|
||||||
|
Comment[fr]=Application pour émuler des jeux et des applications Wii U sur PC
|
||||||
Categories=Game;Emulator;
|
Categories=Game;Emulator;
|
||||||
Keywords=Nintendo;
|
Keywords=Nintendo;
|
||||||
MimeType=application/x-wii-u-rom;
|
MimeType=application/x-wii-u-rom;
|
||||||
|
|
4
dist/linux/info.cemu.Cemu.metainfo.xml
vendored
4
dist/linux/info.cemu.Cemu.metainfo.xml
vendored
|
@ -5,6 +5,7 @@
|
||||||
<name>Cemu</name>
|
<name>Cemu</name>
|
||||||
<summary>Software to emulate Wii U games and applications on PC</summary>
|
<summary>Software to emulate Wii U games and applications on PC</summary>
|
||||||
<summary xml:lang="de">Software zum emulieren von Wii U Spielen und Anwendungen auf dem PC</summary>
|
<summary xml:lang="de">Software zum emulieren von Wii U Spielen und Anwendungen auf dem PC</summary>
|
||||||
|
<summary xml:lang="fr">Application pour émuler des jeux et applications Wii U sur PC</summary>
|
||||||
<developer_name>Cemu Project</developer_name>
|
<developer_name>Cemu Project</developer_name>
|
||||||
<launchable type="desktop-id">info.cemu.Cemu.desktop</launchable>
|
<launchable type="desktop-id">info.cemu.Cemu.desktop</launchable>
|
||||||
<metadata_license>CC0-1.0</metadata_license>
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
@ -12,10 +13,13 @@
|
||||||
<description>
|
<description>
|
||||||
<p>Cemu is a Nintendo Wii U emulator that is able to run most Wii U games and homebrew in a playable state. Created by Exzap, and written in C/C++.</p>
|
<p>Cemu is a Nintendo Wii U emulator that is able to run most Wii U games and homebrew in a playable state. Created by Exzap, and written in C/C++.</p>
|
||||||
<p xml:lang="de">Cemu ist ein Nintendo Wii U-Emulator, der die meisten Wii U Spiele und Homebrew in einem spielbaren Zustand ausführen kann. Erstellt von Exzap, und geschrieben in C/C++.</p>
|
<p xml:lang="de">Cemu ist ein Nintendo Wii U-Emulator, der die meisten Wii U Spiele und Homebrew in einem spielbaren Zustand ausführen kann. Erstellt von Exzap, und geschrieben in C/C++.</p>
|
||||||
|
<p xml:lang="fr">Cemu est un émulateur de Wii U capable de lancer la plupart des jeux Wii U et des homebrews en interface de jeu. Crée par Exzap, et développé en C/C++.</p>
|
||||||
<p>This emulator aims at providing both high-accuracy and performance, and is actively being developed with new features and fixes to increase compatibility, convenience and usability.</p>
|
<p>This emulator aims at providing both high-accuracy and performance, and is actively being developed with new features and fixes to increase compatibility, convenience and usability.</p>
|
||||||
<p xml:lang="de">Dieser Emulator zielt darauf ab, sowohl hohe Genauigkeit als auch Leistung zu bieten, und wird aktiv mit neuen Funktionen und Korrekturen weiterentwickelt, um Kompatibilität, Komfort und Benutzerfreundlichkeit zu verbessern.</p>
|
<p xml:lang="de">Dieser Emulator zielt darauf ab, sowohl hohe Genauigkeit als auch Leistung zu bieten, und wird aktiv mit neuen Funktionen und Korrekturen weiterentwickelt, um Kompatibilität, Komfort und Benutzerfreundlichkeit zu verbessern.</p>
|
||||||
|
<p xml:lang="fr">Cet émulateur vise à la fois à offrir fidélité et performance, il est activement développé avec des nouvelles fonctionnalités et des correctifs pour augmenter la compatibilité, la commodité et la facilité d'utilisation.</p>
|
||||||
<p>It was written from scratch and development on the project began roughly early 2015.</p>
|
<p>It was written from scratch and development on the project began roughly early 2015.</p>
|
||||||
<p xml:lang="de">Er wird seit Anfang 2015 entwickelt.</p>
|
<p xml:lang="de">Er wird seit Anfang 2015 entwickelt.</p>
|
||||||
|
<p xml:lang="fr">Il a été écrit à partir de zéro et son développement a débuté vers le début de l'année 2015.</p>
|
||||||
</description>
|
</description>
|
||||||
<screenshots>
|
<screenshots>
|
||||||
<screenshot type="default">
|
<screenshot type="default">
|
||||||
|
|
|
@ -28,7 +28,11 @@ elseif(UNIX)
|
||||||
add_definitions(-fpermissive)
|
add_definitions(-fpermissive)
|
||||||
add_definitions(-maes)
|
add_definitions(-maes)
|
||||||
# warnings
|
# warnings
|
||||||
add_compile_options(-Wno-switch -Wno-ignored-attributes -Wno-deprecated-enum-enum-conversion -Wno-ambiguous-reversed-operator)
|
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
add_compile_options(-Wno-ambiguous-reversed-operator)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_compile_options(-Wno-switch -Wno-ignored-attributes -Wno-deprecated-enum-enum-conversion)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_definitions(-DVK_NO_PROTOTYPES)
|
add_definitions(-DVK_NO_PROTOTYPES)
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
#include "input/InputManager.h"
|
#include "input/InputManager.h"
|
||||||
|
|
||||||
|
#include <cinttypes>
|
||||||
|
|
||||||
#if BOOST_OS_WINDOWS
|
#if BOOST_OS_WINDOWS
|
||||||
#include <Psapi.h>
|
#include <Psapi.h>
|
||||||
#include <winternl.h>
|
#include <winternl.h>
|
||||||
|
@ -405,16 +407,16 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
||||||
if (s_pipeline_count_async > 0)
|
if (s_pipeline_count_async > 0)
|
||||||
{
|
{
|
||||||
if (s_pipeline_count > 1)
|
if (s_pipeline_count > 1)
|
||||||
ImGui::Text("Compiled %d new pipelines... (%d async) TotalSync: %lldms", s_pipeline_count, s_pipeline_count_async, totalTime);
|
ImGui::Text("Compiled %d new pipelines... (%d async) TotalSync: %" PRIu64 "ms", s_pipeline_count, s_pipeline_count_async, totalTime);
|
||||||
else
|
else
|
||||||
ImGui::Text("Compiled %d new pipeline... (%d async) TotalSync: %lldms", s_pipeline_count, s_pipeline_count_async, totalTime);
|
ImGui::Text("Compiled %d new pipeline... (%d async) TotalSync: %" PRIu64 "ms", s_pipeline_count, s_pipeline_count_async, totalTime);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (s_pipeline_count > 1)
|
if (s_pipeline_count > 1)
|
||||||
ImGui::Text("Compiled %d new pipelines... TotalSync: %lldms", s_pipeline_count, totalTime);
|
ImGui::Text("Compiled %d new pipelines... TotalSync: %" PRIu64 "ms", s_pipeline_count, totalTime);
|
||||||
else
|
else
|
||||||
ImGui::Text("Compiled %d new pipeline... TotalSync: %lldms", s_pipeline_count, totalTime);
|
ImGui::Text("Compiled %d new pipeline... TotalSync: %" PRIu64 "ms", s_pipeline_count, totalTime);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (s_pipeline_count_async > 0)
|
if (s_pipeline_count_async > 0)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "Cafe/OS/libs/coreinit/coreinit_IOS.h"
|
#include "Cafe/OS/libs/coreinit/coreinit_IOS.h"
|
||||||
#include "Cafe/OS/libs/coreinit/coreinit_Time.h"
|
#include "Cafe/OS/libs/coreinit/coreinit_Time.h"
|
||||||
|
|
||||||
|
#include <cinttypes>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ namespace acp
|
||||||
{
|
{
|
||||||
// found the entry! -> update timestamp
|
// found the entry! -> update timestamp
|
||||||
xml::XMLElement* timestamp = account->FirstChildElement("timestamp");
|
xml::XMLElement* timestamp = account->FirstChildElement("timestamp");
|
||||||
sprintf(tmp, "%016llx", _acpGetTimestamp());
|
sprintf(tmp, "%" PRIx64, _acpGetTimestamp());
|
||||||
if (timestamp)
|
if (timestamp)
|
||||||
timestamp->SetText(tmp);
|
timestamp->SetText(tmp);
|
||||||
else
|
else
|
||||||
|
@ -125,7 +126,7 @@ namespace acp
|
||||||
|
|
||||||
tinyxml2::XMLElement* timestamp = doc.NewElement("timestamp");
|
tinyxml2::XMLElement* timestamp = doc.NewElement("timestamp");
|
||||||
{
|
{
|
||||||
sprintf(tmp, "%016llx", _acpGetTimestamp());
|
sprintf(tmp, "%" PRIx64, _acpGetTimestamp());
|
||||||
timestamp->SetText(tmp);
|
timestamp->SetText(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -647,8 +647,8 @@ std::string TitleInfo::GetInstallPath() const
|
||||||
TitleIdParser tip(titleId);
|
TitleIdParser tip(titleId);
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
if (tip.IsSystemTitle())
|
if (tip.IsSystemTitle())
|
||||||
tmp = fmt::format("sys\\title\\{:08x}\\{:08x}", GetTitleIdHigh(titleId), GetTitleIdLow(titleId));
|
tmp = fmt::format("sys/title/{:08x}/{:08x}", GetTitleIdHigh(titleId), GetTitleIdLow(titleId));
|
||||||
else
|
else
|
||||||
tmp = fmt::format("usr\\title\\{:08x}\\{:08x}", GetTitleIdHigh(titleId), GetTitleIdLow(titleId));
|
tmp = fmt::format("usr/title/{:08x}/{:08x}", GetTitleIdHigh(titleId), GetTitleIdLow(titleId));
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
|
@ -15,6 +15,7 @@
|
||||||
#include "Cafe/Filesystem/FST/FST.h"
|
#include "Cafe/Filesystem/FST/FST.h"
|
||||||
#include "Cafe/TitleList/TitleList.h"
|
#include "Cafe/TitleList/TitleList.h"
|
||||||
|
|
||||||
|
#include <cinttypes>
|
||||||
#include <charconv>
|
#include <charconv>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
|
@ -580,7 +581,7 @@ void DownloadManager::searchForIncompleteDownloads()
|
||||||
uint64 titleId;
|
uint64 titleId;
|
||||||
uint32 version;
|
uint32 version;
|
||||||
std::string name = p.path().filename().generic_string();
|
std::string name = p.path().filename().generic_string();
|
||||||
if( sscanf(name.c_str(), "cemu_%016llx_v%u", &titleId, &version) != 2)
|
if( sscanf(name.c_str(), "cemu_% " PRIx64 "_v%u", &titleId, &version) != 2)
|
||||||
continue;
|
continue;
|
||||||
std::unique_lock<std::recursive_mutex> _l(m_mutex);
|
std::unique_lock<std::recursive_mutex> _l(m_mutex);
|
||||||
for (auto& itr : m_ticketCache)
|
for (auto& itr : m_ticketCache)
|
||||||
|
|
|
@ -225,16 +225,19 @@ typedef union _LARGE_INTEGER {
|
||||||
#define DEBUG_BREAK __debugbreak()
|
#define DEBUG_BREAK __debugbreak()
|
||||||
#define ALIGN(N) __declspec(align(N))
|
#define ALIGN(N) __declspec(align(N))
|
||||||
#define NOINLINE __declspec(noinline)
|
#define NOINLINE __declspec(noinline)
|
||||||
#define ASSUME(X) __assume((X)
|
#define ASSUME(X) __assume(X)
|
||||||
#define THREAD_LOCAL __declspec(thread)
|
#define THREAD_LOCAL __declspec(thread)
|
||||||
#define POPCNT(X) __popcnt((X))
|
#define POPCNT(X) __popcnt((X))
|
||||||
#else
|
#else
|
||||||
#define DLLEXPORT
|
#define DLLEXPORT
|
||||||
#define DLLIMPORT
|
#define DLLIMPORT
|
||||||
#define DEBUG_BREAK
|
// fixme: random stack overflow solution. use with caution
|
||||||
|
#include <csignal>
|
||||||
|
#define DEBUG_BREAK raise(SIGTRAP)
|
||||||
#define ALIGN(N) __attribute__((aligned (N)))
|
#define ALIGN(N) __attribute__((aligned (N)))
|
||||||
#define NOINLINE __attribute__((noinline))
|
#define NOINLINE __attribute__((noinline))
|
||||||
#define ASSUME(X)
|
// fixme: random stack overflow solution. use it with caution
|
||||||
|
#define ASSUME(X) do { if (!(X)) __builtin_unreachable(); } while (0)
|
||||||
#define THREAD_LOCAL __thread
|
#define THREAD_LOCAL __thread
|
||||||
#define POPCNT(X) __builtin_popcount((X))
|
#define POPCNT(X) __builtin_popcount((X))
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -421,6 +421,10 @@ void GraphicPacksWindow2::OnTreeSelectionChanged(wxTreeEvent& event)
|
||||||
{
|
{
|
||||||
wxWindowUpdateLocker lock(this);
|
wxWindowUpdateLocker lock(this);
|
||||||
|
|
||||||
|
bool item_deselected = m_graphic_pack_tree->GetSelection() == m_graphic_pack_tree->GetRootItem();
|
||||||
|
if (item_deselected)
|
||||||
|
return;
|
||||||
|
|
||||||
const auto selection = m_graphic_pack_tree->GetSelection();
|
const auto selection = m_graphic_pack_tree->GetSelection();
|
||||||
if (selection.IsOk())
|
if (selection.IsOk())
|
||||||
{
|
{
|
||||||
|
|
|
@ -400,7 +400,7 @@ void MemorySearcherTool::OnResultListClick(wxMouseEvent& event)
|
||||||
auto currValue = m_listResults->GetItemText(selectedIndex, 1);
|
auto currValue = m_listResults->GetItemText(selectedIndex, 1);
|
||||||
|
|
||||||
char addressString[256];
|
char addressString[256];
|
||||||
sprintf(addressString, "0x%08x", address);
|
sprintf(addressString, "0x%08lx", address);
|
||||||
|
|
||||||
// description, address, type, value, freeze
|
// description, address, type, value, freeze
|
||||||
wxVector<wxVariant> data;
|
wxVector<wxVariant> data;
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
#include "Cafe/OS/RPL/rpl.h"
|
#include "Cafe/OS/RPL/rpl.h"
|
||||||
#include "Cafe/OS/RPL/rpl_symbol_storage.h"
|
#include "Cafe/OS/RPL/rpl_symbol_storage.h"
|
||||||
|
|
||||||
|
#include <cinttypes>
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
// options
|
// options
|
||||||
|
@ -233,11 +235,11 @@ void DebugPPCThreadsWindow::RefreshThreadList()
|
||||||
m_thread_list->SetItem(i, 7, tempStr);
|
m_thread_list->SetItem(i, 7, tempStr);
|
||||||
// last awake in cycles
|
// last awake in cycles
|
||||||
uint64 lastWakeUpTime = cafeThread->wakeUpTime;
|
uint64 lastWakeUpTime = cafeThread->wakeUpTime;
|
||||||
sprintf(tempStr, "%I64u", lastWakeUpTime);
|
sprintf(tempStr, "%" PRIu64, lastWakeUpTime);
|
||||||
m_thread_list->SetItem(i, 8, tempStr);
|
m_thread_list->SetItem(i, 8, tempStr);
|
||||||
// awake time in cycles
|
// awake time in cycles
|
||||||
uint64 awakeTime = cafeThread->totalCycles;
|
uint64 awakeTime = cafeThread->totalCycles;
|
||||||
sprintf(tempStr, "%I64u", awakeTime);
|
sprintf(tempStr, "%" PRIu64, awakeTime);
|
||||||
m_thread_list->SetItem(i, 9, tempStr);
|
m_thread_list->SetItem(i, 9, tempStr);
|
||||||
// thread name
|
// thread name
|
||||||
const char* threadName = "NULL";
|
const char* threadName = "NULL";
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#include "util/Zir/Core/IR.h"
|
#include "util/Zir/Core/IR.h"
|
||||||
#include "util/Zir/Core/ZpIRDebug.h"
|
#include "util/Zir/Core/ZpIRDebug.h"
|
||||||
|
|
||||||
|
#include <cinttypes>
|
||||||
|
|
||||||
namespace ZpIR
|
namespace ZpIR
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -201,15 +203,15 @@ namespace ZpIR
|
||||||
void DebugPrinter::debugPrintBlock(ZpIRBasicBlock* block)
|
void DebugPrinter::debugPrintBlock(ZpIRBasicBlock* block)
|
||||||
{
|
{
|
||||||
// print name
|
// print name
|
||||||
printf("IRBasicBlock %016llx\n", (uintptr_t)block);
|
printf("IRBasicBlock %" PRIxPTR "\n", (uintptr_t)block);
|
||||||
// print imports
|
// print imports
|
||||||
printf("Imports:\n");
|
printf("Imports:\n");
|
||||||
for(auto itr : block->m_imports)
|
for(auto itr : block->m_imports)
|
||||||
printf(" reg: %s sym:0x%llx\n", getRegisterName(block, itr.reg).c_str(), itr.name);
|
printf(" reg: %s sym:0x%lux\n", getRegisterName(block, itr.reg).c_str(), itr.name);
|
||||||
// print exports
|
// print exports
|
||||||
printf("Exports:\n");
|
printf("Exports:\n");
|
||||||
for (auto itr : block->m_exports)
|
for (auto itr : block->m_exports)
|
||||||
printf(" reg: %s sym:0x%llx\n", getRegisterName(block, itr.reg).c_str(), itr.name);
|
printf(" reg: %s sym:0x%lux\n", getRegisterName(block, itr.reg).c_str(), itr.name);
|
||||||
// print instructions
|
// print instructions
|
||||||
printf("Assembly:\n");
|
printf("Assembly:\n");
|
||||||
IR::__InsBase* instruction = block->m_instructionFirst;
|
IR::__InsBase* instruction = block->m_instructionFirst;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue