mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-20 12:55:45 +00:00
[yuzu_cmd] gdbstub option (#43)
Co-authored-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/43 Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
parent
ae02310bdf
commit
d5c58342e0
1 changed files with 33 additions and 22 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -80,6 +83,7 @@ static void PrintHelp(const char* argv0) {
|
||||||
" Nickname, password, address and port for multiplayer\n"
|
" Nickname, password, address and port for multiplayer\n"
|
||||||
"-p, --program Pass following string as arguments to executable\n"
|
"-p, --program Pass following string as arguments to executable\n"
|
||||||
"-u, --user Select a specific user profile from 0 to 7\n"
|
"-u, --user Select a specific user profile from 0 to 7\n"
|
||||||
|
"-d, --debug Run the GDB stub on a port from 1 to 65535\n"
|
||||||
"-v, --version Output version information and exit\n";
|
"-v, --version Output version information and exit\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,24 +166,22 @@ static void OnMessageReceived(const Network::ChatEntry& msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnStatusMessageReceived(const Network::StatusMessageEntry& msg) {
|
static void OnStatusMessageReceived(const Network::StatusMessageEntry& msg) {
|
||||||
std::string message;
|
std::string message = [&]() {
|
||||||
switch (msg.type) {
|
switch (msg.type) {
|
||||||
case Network::IdMemberJoin:
|
case Network::IdMemberJoin:
|
||||||
message = fmt::format("{} has joined", msg.nickname);
|
return fmt::format("{} has joined", msg.nickname);
|
||||||
break;
|
|
||||||
case Network::IdMemberLeave:
|
case Network::IdMemberLeave:
|
||||||
message = fmt::format("{} has left", msg.nickname);
|
return fmt::format("{} has left", msg.nickname);
|
||||||
break;
|
|
||||||
case Network::IdMemberKicked:
|
case Network::IdMemberKicked:
|
||||||
message = fmt::format("{} has been kicked", msg.nickname);
|
return fmt::format("{} has been kicked", msg.nickname);
|
||||||
break;
|
|
||||||
case Network::IdMemberBanned:
|
case Network::IdMemberBanned:
|
||||||
message = fmt::format("{} has been banned", msg.nickname);
|
return fmt::format("{} has been banned", msg.nickname);
|
||||||
break;
|
|
||||||
case Network::IdAddressUnbanned:
|
case Network::IdAddressUnbanned:
|
||||||
message = fmt::format("{} has been unbanned", msg.nickname);
|
return fmt::format("{} has been unbanned", msg.nickname);
|
||||||
break;
|
default:
|
||||||
|
return std::string{};
|
||||||
}
|
}
|
||||||
|
}();
|
||||||
if (!message.empty())
|
if (!message.empty())
|
||||||
std::cout << std::endl << "* " << message << std::endl << std::endl;
|
std::cout << std::endl << "* " << message << std::endl << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -209,10 +211,10 @@ int main(int argc, char** argv) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
std::string filepath;
|
std::string filepath;
|
||||||
std::optional<std::string> config_path;
|
std::optional<std::string> config_path{};
|
||||||
std::string program_args;
|
std::string program_args;
|
||||||
std::optional<int> selected_user;
|
std::optional<int> selected_user{};
|
||||||
|
std::optional<u16> override_gdb_port{};
|
||||||
bool use_multiplayer = false;
|
bool use_multiplayer = false;
|
||||||
bool fullscreen = false;
|
bool fullscreen = false;
|
||||||
std::string nickname{};
|
std::string nickname{};
|
||||||
|
@ -222,6 +224,7 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
{"debug", no_argument, 0, 'd'},
|
||||||
{"config", required_argument, 0, 'c'},
|
{"config", required_argument, 0, 'c'},
|
||||||
{"fullscreen", no_argument, 0, 'f'},
|
{"fullscreen", no_argument, 0, 'f'},
|
||||||
{"help", no_argument, 0, 'h'},
|
{"help", no_argument, 0, 'h'},
|
||||||
|
@ -235,9 +238,12 @@ int main(int argc, char** argv) {
|
||||||
};
|
};
|
||||||
|
|
||||||
while (optind < argc) {
|
while (optind < argc) {
|
||||||
int arg = getopt_long(argc, argv, "g:fhvp::c:u:", long_options, &option_index);
|
int arg = getopt_long(argc, argv, "g:fhvp::c:u:d:", long_options, &option_index);
|
||||||
if (arg != -1) {
|
if (arg != -1) {
|
||||||
switch (static_cast<char>(arg)) {
|
switch (static_cast<char>(arg)) {
|
||||||
|
case 'd':
|
||||||
|
override_gdb_port = static_cast<uint16_t>(atoi(optarg));
|
||||||
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
config_path = optarg;
|
config_path = optarg;
|
||||||
break;
|
break;
|
||||||
|
@ -323,6 +329,11 @@ int main(int argc, char** argv) {
|
||||||
Settings::values.current_user = std::clamp(*selected_user, 0, 7);
|
Settings::values.current_user = std::clamp(*selected_user, 0, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (override_gdb_port.has_value()) {
|
||||||
|
Settings::values.use_gdbstub = true;
|
||||||
|
Settings::values.gdbstub_port = *override_gdb_port;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
LocalFree(argv_w);
|
LocalFree(argv_w);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue