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
16DECLARE_FLAG(std::string, rom_file);
17DEFINE_FLAG(std::string, rom_file, "", "The ROM file to load.");
18
19int main(int argc, char** argv) {
20 absl::InitializeSymbolizer(argv[0]);
21 absl::FailureSignalHandlerOptions options;
22 options.symbolize_stacktrace = true;
23 options.use_alternate_stack = true;
24 options.alarm_on_failure_secs = true;
25 options.call_previous_handler = true;
26 absl::InstallFailureSignalHandler(options);
28 RETURN_IF_EXCEPTION(parser.Parse(argc, argv));
29 std::string rom_filename = "";
30 if (!FLAGS_rom_file->Get().empty()) {
31 rom_filename = FLAGS_rom_file->Get();
32 }
33
34#ifdef __APPLE__
35 return yaze_run_cocoa_app_delegate(rom_filename.c_str());
36#elif defined(_WIN32)
37 // We set SDL_MAIN_HANDLED for Win32 to avoid SDL hijacking main()
38 SDL_SetMainReady();
39#endif
40
41 auto controller = std::make_unique<core::Controller>();
42 EXIT_IF_ERROR(controller->OnEntry(rom_filename))
43
44 while (controller->IsActive()) {
45 controller->OnInput();
46 if (auto status = controller->OnLoad(); !status.ok()) {
47 std::cerr << status.message() << std::endl;
48 break;
49 }
50 controller->DoRender();
51 }
52 controller->OnExit();
53
54 return EXIT_SUCCESS;
55}
void Parse(int argc, char **argv)
Definition flag.h:121
#define DECLARE_FLAG(type, name)
Definition flag.h:105
#define DEFINE_FLAG(type, name, default_val, help_text)
Definition flag.h:108
#define RETURN_IF_EXCEPTION(expression)
Definition macro.h:112
#define EXIT_IF_ERROR(expression)
Definition macro.h:44
int main(int argc, char **argv)
Definition main.cc:19
FlagRegistry * global_flag_registry()
Definition flag.h:99
Main namespace for the application.
Definition controller.cc:18