yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
main.cc
Go to the documentation of this file.
1#if __APPLE__
3#endif
4
5#include "absl/debugging/failure_signal_handler.h"
6#include "absl/debugging/symbolize.h"
8#include "util/flag.h"
9
14using namespace yaze;
15
16DEFINE_FLAG(std::string, rom_file, "", "The ROM file to load.");
17
18int main(int argc, char** argv) {
19 absl::InitializeSymbolizer(argv[0]);
20 absl::FailureSignalHandlerOptions options;
21 options.symbolize_stacktrace = true;
22 options.use_alternate_stack = true;
23 options.alarm_on_failure_secs = true;
24 options.call_previous_handler = true;
25 absl::InstallFailureSignalHandler(options);
27 RETURN_IF_EXCEPTION(parser.Parse(argc, argv));
28 std::string rom_filename = "";
29 if (!FLAGS_rom_file->Get().empty()) {
30 rom_filename = FLAGS_rom_file->Get();
31 }
32
33#ifdef __APPLE__
34 return yaze_run_cocoa_app_delegate(rom_filename.c_str());
35#elif defined(_WIN32)
36 // We set SDL_MAIN_HANDLED for Win32 to avoid SDL hijacking main()
37 SDL_SetMainReady();
38#endif
39
40 auto controller = std::make_unique<core::Controller>();
41 EXIT_IF_ERROR(controller->OnEntry(rom_filename))
42
43 while (controller->IsActive()) {
44 controller->OnInput();
45 if (auto status = controller->OnLoad(); !status.ok()) {
46 std::cerr << status.message() << std::endl;
47 break;
48 }
49 controller->DoRender();
50 }
51 controller->OnExit();
52
53 return EXIT_SUCCESS;
54}
void Parse(int argc, char **argv)
Definition flag.h:119
#define DEFINE_FLAG(type, name, default_val, help_text)
Definition flag.h:106
#define RETURN_IF_EXCEPTION(expression)
Definition macro.h:101
#define EXIT_IF_ERROR(expression)
Definition macro.h:33
int main(int argc, char **argv)
Definition main.cc:18
FlagRegistry * global_flag_registry()
Definition flag.h:99
Main namespace for the application.
Definition controller.cc:18