51int main(
int argc,
char **argv) {
52 absl::InitializeSymbolizer(argv[0]);
56 absl::FailureSignalHandlerOptions options;
57 options.symbolize_stacktrace =
true;
58 options.use_alternate_stack =
60 options.alarm_on_failure_secs =
62 options.call_previous_handler =
true;
65 absl::InstallFailureSignalHandler(options);
77 std::set<std::string> log_categories;
78 std::string categories_str = FLAGS_log_categories->Get();
79 if (!categories_str.empty()) {
81 size_t end = categories_str.find(
',');
82 while (end != std::string::npos) {
83 log_categories.insert(categories_str.substr(start, end - start));
85 end = categories_str.find(
',', start);
87 log_categories.insert(categories_str.substr(start));
94 if (FLAGS_debug->Get()) {
96 LOG_INFO(
"Main",
"š YAZE started in debug mode");
99 std::string rom_filename =
"";
100 if (!FLAGS_rom_file->Get().empty()) {
101 rom_filename = FLAGS_rom_file->Get();
106 if (FLAGS_enable_test_harness->Get()) {
110 auto& server = yaze::test::ImGuiTestHarnessServer::Instance();
111 int port = FLAGS_test_harness_port->Get();
113 std::cout <<
"\nš Starting ImGui Test Harness on port " << port <<
"..." << std::endl;
114 auto status = server.Start(port, &test_manager);
116 std::cerr <<
"ā ERROR: Failed to start test harness server on port " << port << std::endl;
117 std::cerr <<
" " << status.message() << std::endl;
120 std::cout <<
"ā
Test harness ready on 127.0.0.1:" << port << std::endl;
121 std::cout <<
" Available RPCs: Ping, Click, Type, Wait, Assert, Screenshot\n" << std::endl;
126 return yaze_run_cocoa_app_delegate(rom_filename.c_str());
132 auto controller = std::make_unique<core::Controller>();
136 if (!FLAGS_editor->Get().empty()) {
137 controller->SetStartupEditor(FLAGS_editor->Get(), FLAGS_cards->Get());
140 while (controller->IsActive()) {
141 controller->OnInput();
142 if (
auto status = controller->OnLoad(); !status.ok()) {
143 std::cerr << status.message() << std::endl;
146 controller->DoRender();
148 controller->OnExit();
152 yaze::test::ImGuiTestHarnessServer::Instance().Shutdown();