fix: Update CMake configuration for Apple support and improve legacy online service command handling

This commit is contained in:
2026-01-07 12:25:00 -03:00
parent cf4f813145
commit 3bb0d29aa1
5 changed files with 22 additions and 19 deletions

View File

@@ -158,7 +158,7 @@ set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundl
option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
set(EXT_DEFAULT OFF) set(EXT_DEFAULT OFF)
if (MSVC OR ANDROID) if (MSVC OR ANDROID OR APPLE)
set(EXT_DEFAULT ON) set(EXT_DEFAULT ON)
endif() endif()
option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched." ${EXT_DEFAULT}) option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched." ${EXT_DEFAULT})
@@ -530,7 +530,9 @@ if (APPLE)
# Umbrella framework for everything GUI-related # Umbrella framework for everything GUI-related
find_library(COCOA_LIBRARY Cocoa REQUIRED) find_library(COCOA_LIBRARY Cocoa REQUIRED)
find_library(IOKIT_LIBRARY IOKit REQUIRED) find_library(IOKIT_LIBRARY IOKit REQUIRED)
set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY}) find_library(COREVIDEO_LIBRARY CoreVideo REQUIRED)
find_library(VIDEOTOOLBOX_LIBRARY VideoToolbox REQUIRED)
set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY} ${VIDEOTOOLBOX_LIBRARY})
elseif (WIN32) elseif (WIN32)
# Target Windows 10 # Target Windows 10
add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00) add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00)

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project // SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
#include "core/internal_network/legacy_online.h" #include "core/internal_network/legacy_online.h"
@@ -586,7 +586,7 @@ void LegacyOnlineService::HttpServerLoop() {
// Step 5: Send Activation Commands immediately to authorize input and accel // Step 5: Send Activation Commands immediately to authorize input and accel
// 5a. Enable Input // 5a. Enable Input
std::string cmd1 = R"({"__class":"InputSetup_ConsoleCommandData","isEnabled":1,"inputSetup":{"isEnabled":1}})"; std::string cmd1 = R"({"__class":"InputSetup_ConsoleCommandData","isEnabled":1,"inputSetup":{"isEnabled":1}})";
std::vector<uint8_t> f1; f1.push_back(0x81); f1.push_back(cmd1.size()); for(char c:cmd1) f1.push_back(c); std::vector<uint8_t> f1; f1.push_back(0x81); f1.push_back(static_cast<uint8_t>(cmd1.size())); for(char c:cmd1) f1.push_back(static_cast<uint8_t>(c));
#ifdef _WIN32 #ifdef _WIN32
send(client_fd, reinterpret_cast<char*>(f1.data()), f1.size(), 0); send(client_fd, reinterpret_cast<char*>(f1.data()), f1.size(), 0);
#else #else
@@ -595,7 +595,7 @@ void LegacyOnlineService::HttpServerLoop() {
// 5b. Enable Accelerometer // 5b. Enable Accelerometer
std::string cmd2 = R"({"__class":"JD_EnableAccelValuesSending_ConsoleCommandData","isEnabled":1})"; std::string cmd2 = R"({"__class":"JD_EnableAccelValuesSending_ConsoleCommandData","isEnabled":1})";
std::vector<uint8_t> f2; f2.push_back(0x81); f2.push_back(cmd2.size()); for(char c:cmd2) f2.push_back(c); std::vector<uint8_t> f2; f2.push_back(0x81); f2.push_back(static_cast<uint8_t>(cmd2.size())); for(char c:cmd2) f2.push_back(static_cast<uint8_t>(c));
#ifdef _WIN32 #ifdef _WIN32
send(client_fd, reinterpret_cast<char*>(f2.data()), f2.size(), 0); send(client_fd, reinterpret_cast<char*>(f2.data()), f2.size(), 0);
#else #else
@@ -604,7 +604,7 @@ void LegacyOnlineService::HttpServerLoop() {
// 5c. UI Setup (optional but good for safety) // 5c. UI Setup (optional but good for safety)
std::string cmd3 = R"({"__class":"JD_PhoneUiSetupData","isPopup":0,"inputSetup":{"isEnabled":1}})"; std::string cmd3 = R"({"__class":"JD_PhoneUiSetupData","isPopup":0,"inputSetup":{"isEnabled":1}})";
std::vector<uint8_t> f3; f3.push_back(0x81); f3.push_back(cmd3.size()); for(char c:cmd3) f3.push_back(c); std::vector<uint8_t> f3; f3.push_back(0x81); f3.push_back(static_cast<uint8_t>(cmd3.size())); for(char c:cmd3) f3.push_back(static_cast<uint8_t>(c));
#ifdef _WIN32 #ifdef _WIN32
send(client_fd, reinterpret_cast<char*>(f3.data()), f3.size(), 0); send(client_fd, reinterpret_cast<char*>(f3.data()), f3.size(), 0);
#else #else

View File

@@ -97,15 +97,15 @@ public:
MemoryWrite32(vaddr + 4, static_cast<u32>(value >> 32)); MemoryWrite32(vaddr + 4, static_cast<u32>(value >> 32));
} }
void InterpreterFallback(u32 pc, size_t num_instructions) override { void InterpreterFallback(u32 /*pc*/, size_t /*num_instructions*/) override {
UNREACHABLE(); //ASSERT(false && "InterpreterFallback({:08x} && {}) code = {:08x}", pc, num_instructions, *MemoryReadCode(pc)); UNREACHABLE(); //ASSERT(false && "InterpreterFallback({:08x} && {}) code = {:08x}", pc, num_instructions, *MemoryReadCode(pc));
} }
void CallSVC(std::uint32_t swi) override { void CallSVC(std::uint32_t /*swi*/) override {
UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi); UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi);
} }
void ExceptionRaised(u32 pc, Dynarmic::A32::Exception /*exception*/) override { void ExceptionRaised(u32 /*pc*/, Dynarmic::A32::Exception /*exception*/) override {
UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:08x}) code = {:08x}", pc, *MemoryReadCode(pc)); UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:08x}) code = {:08x}", pc, *MemoryReadCode(pc));
} }
@@ -190,15 +190,15 @@ public:
return true; return true;
} }
void InterpreterFallback(std::uint32_t pc, size_t num_instructions) override { void InterpreterFallback(std::uint32_t /*pc*/, size_t /*num_instructions*/) override {
UNREACHABLE(); //ASSERT(false && "InterpreterFallback({:016x} && {})", pc, num_instructions); UNREACHABLE(); //ASSERT(false && "InterpreterFallback({:016x} && {})", pc, num_instructions);
} }
void CallSVC(std::uint32_t swi) override { void CallSVC(std::uint32_t /*swi*/) override {
UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi); UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi);
} }
void ExceptionRaised(std::uint32_t pc, Dynarmic::A32::Exception) override { void ExceptionRaised(std::uint32_t /*pc*/, Dynarmic::A32::Exception) override {
UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:016x})", pc); UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:016x})", pc);
} }

View File

@@ -105,15 +105,15 @@ public:
return true; return true;
} }
void InterpreterFallback(u64 pc, size_t num_instructions) override { void InterpreterFallback(u64 /*pc*/, size_t /*num_instructions*/) override {
UNREACHABLE(); // ASSERT(false&& "InterpreterFallback({:016x} && {})", pc, num_instructions); UNREACHABLE(); // ASSERT(false&& "InterpreterFallback({:016x} && {})", pc, num_instructions);
} }
void CallSVC(std::uint32_t swi) override { void CallSVC(std::uint32_t /*swi*/) override {
UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi); UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi);
} }
void ExceptionRaised(u64 pc, Dynarmic::A64::Exception /*exception*/) override { void ExceptionRaised(u64 /*pc*/, Dynarmic::A64::Exception /*exception*/) override {
UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:016x})", pc); UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:016x})", pc);
} }
@@ -208,15 +208,15 @@ public:
return true; return true;
} }
void InterpreterFallback(u64 pc, size_t num_instructions) override { void InterpreterFallback(u64 /*pc*/, size_t /*num_instructions*/) override {
ASSERT(ignore_invalid_insn && "InterpreterFallback"); ASSERT(ignore_invalid_insn && "InterpreterFallback");
} }
void CallSVC(std::uint32_t swi) override { void CallSVC(std::uint32_t /*swi*/) override {
UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi); UNREACHABLE(); //ASSERT(false && "CallSVC({})", swi);
} }
void ExceptionRaised(u64 pc, Dynarmic::A64::Exception) override { void ExceptionRaised(u64 /*pc*/, Dynarmic::A64::Exception) override {
UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:016x})", pc); UNREACHABLE(); //ASSERT(false && "ExceptionRaised({:016x})", pc);
} }

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project // SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -8,6 +8,7 @@
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/scope_exit.h" #include "common/scope_exit.h"
#include "common/settings.h" #include "common/settings.h"
#include <thread>
#include "core/memory.h" #include "core/memory.h"
#include "video_core/host1x/ffmpeg/ffmpeg.h" #include "video_core/host1x/ffmpeg/ffmpeg.h"
#include "video_core/memory_manager.h" #include "video_core/memory_manager.h"