From f5f28a4f6773e00e0f53454e881fb6d46dfbe6da Mon Sep 17 00:00:00 2001 From: James Rowe Date: Thu, 11 Jan 2018 20:38:17 -0700 Subject: Get yuzu sdl to start compiling --- src/yuzu_cmd/CMakeLists.txt | 4 +- src/yuzu_cmd/citra.cpp | 175 --------------------------- src/yuzu_cmd/citra.rc | 17 --- src/yuzu_cmd/config.cpp | 5 +- src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | 6 +- src/yuzu_cmd/yuzu.cpp | 176 ++++++++++++++++++++++++++++ src/yuzu_cmd/yuzu.rc | 17 +++ 7 files changed, 200 insertions(+), 200 deletions(-) delete mode 100644 src/yuzu_cmd/citra.cpp delete mode 100644 src/yuzu_cmd/citra.rc create mode 100644 src/yuzu_cmd/yuzu.cpp create mode 100644 src/yuzu_cmd/yuzu.rc diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt index c6c527eb6..802e060f4 100644 --- a/src/yuzu_cmd/CMakeLists.txt +++ b/src/yuzu_cmd/CMakeLists.txt @@ -2,9 +2,9 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) set(SRCS emu_window/emu_window_sdl2.cpp - citra.cpp config.cpp - citra.rc + yuzu.cpp + yuzu.rc ) set(HEADERS emu_window/emu_window_sdl2.h diff --git a/src/yuzu_cmd/citra.cpp b/src/yuzu_cmd/citra.cpp deleted file mode 100644 index e524c5535..000000000 --- a/src/yuzu_cmd/citra.cpp +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2014 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include -#include -#include -#include - -// This needs to be included before getopt.h because the latter #defines symbols used by it -#include "common/microprofile.h" - -#ifdef _MSC_VER -#include -#else -#include -#include -#endif - -#ifdef _WIN32 -// windows.h needs to be included before shellapi.h -#include - -#include -#endif - -#include "citra/config.h" -#include "citra/emu_window/emu_window_sdl2.h" -#include "common/logging/backend.h" -#include "common/logging/filter.h" -#include "common/logging/log.h" -#include "common/scm_rev.h" -#include "common/scope_exit.h" -#include "common/string_util.h" -#include "core/core.h" -#include "core/gdbstub/gdbstub.h" -#include "core/loader/loader.h" -#include "core/settings.h" - -static void PrintHelp(const char* argv0) { - std::cout << "Usage: " << argv0 - << " [options] \n" - "-g, --gdbport=NUMBER Enable gdb stub on port NUMBER\n" - "-h, --help Display this help and exit\n" - "-v, --version Output version information and exit\n"; -} - -static void PrintVersion() { - std::cout << "Citra " << Common::g_scm_branch << " " << Common::g_scm_desc << std::endl; -} - -/// Application entry point -int main(int argc, char** argv) { - Config config; - int option_index = 0; - bool use_gdbstub = Settings::values.use_gdbstub; - u32 gdb_port = static_cast(Settings::values.gdbstub_port); - char* endarg; -#ifdef _WIN32 - int argc_w; - auto argv_w = CommandLineToArgvW(GetCommandLineW(), &argc_w); - - if (argv_w == nullptr) { - LOG_CRITICAL(Frontend, "Failed to get command line arguments"); - return -1; - } -#endif - std::string filepath; - - static struct option long_options[] = { - {"gdbport", required_argument, 0, 'g'}, - {"help", no_argument, 0, 'h'}, - {"version", no_argument, 0, 'v'}, - {0, 0, 0, 0}, - }; - - while (optind < argc) { - char arg = getopt_long(argc, argv, "g:hv", long_options, &option_index); - if (arg != -1) { - switch (arg) { - case 'g': - errno = 0; - gdb_port = strtoul(optarg, &endarg, 0); - use_gdbstub = true; - if (endarg == optarg) - errno = EINVAL; - if (errno != 0) { - perror("--gdbport"); - exit(1); - } - break; - case 'h': - PrintHelp(argv[0]); - return 0; - case 'v': - PrintVersion(); - return 0; - } - } else { -#ifdef _WIN32 - filepath = Common::UTF16ToUTF8(argv_w[optind]); -#else - filepath = argv[optind]; -#endif - optind++; - } - } - -#ifdef _WIN32 - LocalFree(argv_w); -#endif - - Log::Filter log_filter(Log::Level::Debug); - Log::SetFilter(&log_filter); - - MicroProfileOnThreadCreate("EmuThread"); - SCOPE_EXIT({ MicroProfileShutdown(); }); - - if (filepath.empty()) { - LOG_CRITICAL(Frontend, "Failed to load ROM: No ROM specified"); - return -1; - } - - log_filter.ParseFilterString(Settings::values.log_filter); - - // Apply the command line arguments - Settings::values.gdbstub_port = gdb_port; - Settings::values.use_gdbstub = use_gdbstub; - Settings::Apply(); - - std::unique_ptr emu_window{std::make_unique()}; - - Core::System& system{Core::System::GetInstance()}; - - SCOPE_EXIT({ system.Shutdown(); }); - - const Core::System::ResultStatus load_result{system.Load(emu_window.get(), filepath)}; - - switch (load_result) { - case Core::System::ResultStatus::ErrorGetLoader: - LOG_CRITICAL(Frontend, "Failed to obtain loader for %s!", filepath.c_str()); - return -1; - case Core::System::ResultStatus::ErrorLoader: - LOG_CRITICAL(Frontend, "Failed to load ROM!"); - return -1; - case Core::System::ResultStatus::ErrorLoader_ErrorEncrypted: - LOG_CRITICAL(Frontend, "The game that you are trying to load must be decrypted before " - "being used with Citra. \n\n For more information on dumping and " - "decrypting games, please refer to: " - "https://citra-emu.org/wiki/dumping-game-cartridges/"); - return -1; - case Core::System::ResultStatus::ErrorLoader_ErrorInvalidFormat: - LOG_CRITICAL(Frontend, "Error while loading ROM: The ROM format is not supported."); - return -1; - case Core::System::ResultStatus::ErrorNotInitialized: - LOG_CRITICAL(Frontend, "CPUCore not initialized"); - return -1; - case Core::System::ResultStatus::ErrorSystemMode: - LOG_CRITICAL(Frontend, "Failed to determine system mode!"); - return -1; - case Core::System::ResultStatus::ErrorVideoCore: - LOG_CRITICAL(Frontend, "VideoCore not initialized"); - return -1; - case Core::System::ResultStatus::Success: - break; // Expected case - } - - Core::Telemetry().AddField(Telemetry::FieldType::App, "Frontend", "SDL"); - - while (emu_window->IsOpen()) { - system.RunLoop(); - } - - return 0; -} diff --git a/src/yuzu_cmd/citra.rc b/src/yuzu_cmd/citra.rc deleted file mode 100644 index c490ef302..000000000 --- a/src/yuzu_cmd/citra.rc +++ /dev/null @@ -1,17 +0,0 @@ -#include "winresrc.h" -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -CITRA_ICON ICON "../../dist/citra.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// RT_MANIFEST -// - -1 RT_MANIFEST "../../dist/citra.manifest" diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 94d1a9f1c..eee3f5c5e 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -5,13 +5,14 @@ #include #include #include -#include "citra/config.h" -#include "citra/default_ini.h" #include "common/file_util.h" #include "common/logging/log.h" #include "common/param_package.h" #include "core/settings.h" #include "input_common/main.h" +#include "yuzu_cmd/config.h" +#include "yuzu_cmd/default_ini.h" + Config::Config() { // TODO: Don't hardcode the path; let the frontend decide where to put the config files. diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp index e65b04e4b..7cbffba52 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp @@ -8,7 +8,6 @@ #define SDL_MAIN_HANDLED #include #include -#include "citra/emu_window/emu_window_sdl2.h" #include "common/logging/log.h" #include "common/scm_rev.h" #include "common/string_util.h" @@ -16,7 +15,8 @@ #include "input_common/keyboard.h" #include "input_common/main.h" #include "input_common/motion_emu.h" -#include "network/network.h" +#include "yuzu_cmd/emu_window/emu_window_sdl2.h" + void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) { TouchMoved((unsigned)std::max(x, 0), (unsigned)std::max(y, 0)); @@ -59,7 +59,6 @@ void EmuWindow_SDL2::OnResize() { EmuWindow_SDL2::EmuWindow_SDL2() { InputCommon::Init(); - Network::Init(); SDL_SetMainReady(); @@ -116,7 +115,6 @@ EmuWindow_SDL2::~EmuWindow_SDL2() { SDL_GL_DeleteContext(gl_context); SDL_Quit(); - Network::Shutdown(); InputCommon::Shutdown(); } diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp new file mode 100644 index 000000000..5efbf3910 --- /dev/null +++ b/src/yuzu_cmd/yuzu.cpp @@ -0,0 +1,176 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include +#include +#include + +// This needs to be included before getopt.h because the latter #defines symbols used by it +#include "common/microprofile.h" + +#ifdef _MSC_VER +#include +#else +#include +#include +#endif + +#ifdef _WIN32 +// windows.h needs to be included before shellapi.h +#include + +#include +#endif + +#include "common/logging/backend.h" +#include "common/logging/filter.h" +#include "common/logging/log.h" +#include "common/scm_rev.h" +#include "common/scope_exit.h" +#include "common/string_util.h" +#include "core/core.h" +#include "core/gdbstub/gdbstub.h" +#include "core/loader/loader.h" +#include "core/settings.h" +#include "yuzu_cmd/config.h" +#include "yuzu_cmd/emu_window/emu_window_sdl2.h" + + +static void PrintHelp(const char* argv0) { + std::cout << "Usage: " << argv0 + << " [options] \n" + "-g, --gdbport=NUMBER Enable gdb stub on port NUMBER\n" + "-h, --help Display this help and exit\n" + "-v, --version Output version information and exit\n"; +} + +static void PrintVersion() { + std::cout << "Citra " << Common::g_scm_branch << " " << Common::g_scm_desc << std::endl; +} + +/// Application entry point +int main(int argc, char** argv) { + Config config; + int option_index = 0; + bool use_gdbstub = Settings::values.use_gdbstub; + u32 gdb_port = static_cast(Settings::values.gdbstub_port); + char* endarg; +#ifdef _WIN32 + int argc_w; + auto argv_w = CommandLineToArgvW(GetCommandLineW(), &argc_w); + + if (argv_w == nullptr) { + LOG_CRITICAL(Frontend, "Failed to get command line arguments"); + return -1; + } +#endif + std::string filepath; + + static struct option long_options[] = { + {"gdbport", required_argument, 0, 'g'}, + {"help", no_argument, 0, 'h'}, + {"version", no_argument, 0, 'v'}, + {0, 0, 0, 0}, + }; + + while (optind < argc) { + char arg = getopt_long(argc, argv, "g:hv", long_options, &option_index); + if (arg != -1) { + switch (arg) { + case 'g': + errno = 0; + gdb_port = strtoul(optarg, &endarg, 0); + use_gdbstub = true; + if (endarg == optarg) + errno = EINVAL; + if (errno != 0) { + perror("--gdbport"); + exit(1); + } + break; + case 'h': + PrintHelp(argv[0]); + return 0; + case 'v': + PrintVersion(); + return 0; + } + } else { +#ifdef _WIN32 + filepath = Common::UTF16ToUTF8(argv_w[optind]); +#else + filepath = argv[optind]; +#endif + optind++; + } + } + +#ifdef _WIN32 + LocalFree(argv_w); +#endif + + Log::Filter log_filter(Log::Level::Debug); + Log::SetFilter(&log_filter); + + MicroProfileOnThreadCreate("EmuThread"); + SCOPE_EXIT({ MicroProfileShutdown(); }); + + if (filepath.empty()) { + LOG_CRITICAL(Frontend, "Failed to load ROM: No ROM specified"); + return -1; + } + + log_filter.ParseFilterString(Settings::values.log_filter); + + // Apply the command line arguments + Settings::values.gdbstub_port = gdb_port; + Settings::values.use_gdbstub = use_gdbstub; + Settings::Apply(); + + std::unique_ptr emu_window{std::make_unique()}; + + Core::System& system{Core::System::GetInstance()}; + + SCOPE_EXIT({ system.Shutdown(); }); + + const Core::System::ResultStatus load_result{system.Load(emu_window.get(), filepath)}; + + switch (load_result) { + case Core::System::ResultStatus::ErrorGetLoader: + LOG_CRITICAL(Frontend, "Failed to obtain loader for %s!", filepath.c_str()); + return -1; + case Core::System::ResultStatus::ErrorLoader: + LOG_CRITICAL(Frontend, "Failed to load ROM!"); + return -1; + case Core::System::ResultStatus::ErrorLoader_ErrorEncrypted: + LOG_CRITICAL(Frontend, "The game that you are trying to load must be decrypted before " + "being used with Citra. \n\n For more information on dumping and " + "decrypting games, please refer to: " + "https://citra-emu.org/wiki/dumping-game-cartridges/"); + return -1; + case Core::System::ResultStatus::ErrorLoader_ErrorInvalidFormat: + LOG_CRITICAL(Frontend, "Error while loading ROM: The ROM format is not supported."); + return -1; + case Core::System::ResultStatus::ErrorNotInitialized: + LOG_CRITICAL(Frontend, "CPUCore not initialized"); + return -1; + case Core::System::ResultStatus::ErrorSystemMode: + LOG_CRITICAL(Frontend, "Failed to determine system mode!"); + return -1; + case Core::System::ResultStatus::ErrorVideoCore: + LOG_CRITICAL(Frontend, "VideoCore not initialized"); + return -1; + case Core::System::ResultStatus::Success: + break; // Expected case + } + + Core::Telemetry().AddField(Telemetry::FieldType::App, "Frontend", "SDL"); + + while (emu_window->IsOpen()) { + system.RunLoop(); + } + + return 0; +} diff --git a/src/yuzu_cmd/yuzu.rc b/src/yuzu_cmd/yuzu.rc new file mode 100644 index 000000000..7cb8a14e1 --- /dev/null +++ b/src/yuzu_cmd/yuzu.rc @@ -0,0 +1,17 @@ +#include "winresrc.h" +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +CITRA_ICON ICON "../../dist/yuzu.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// RT_MANIFEST +// + +1 RT_MANIFEST "../../dist/yuzu.manifest" -- cgit v1.2.3