8 #define DIE(format, ...) do { \
9 fprintf(stderr, "Died at %s:%d: ", __FILE__, __LINE__ ); \
10 fprintf(stderr, format "\n", ## __VA_ARGS__); \
17 static HgwContext *hgw;
21 // hildon-games-wrapper sets this env variable for itself.
22 char* service = getenv("HGW_EXEC_SERVICE");
25 // Not launched from hildon-games-wrapper
30 hgw = hgw_context_init();
33 fprintf(stderr, "Error opening hgw context\n");
38 printf("Loading in HGW mode\n");
43 if (!hgwLaunched) return;
45 hgw_context_destroy(hgw,
46 (Config.snapshotSave ? HGW_BYE_PAUSED : HGW_BYE_INACTIVE));
53 if (!hgwLaunched) return;
55 Config.fullscreen = true;
57 char romFile[PATH_MAX + 1];
58 if (hgw_conf_request_string(hgw, kGConfRomFile, romFile) == HGW_ERR_NONE) {
59 S9xSetRomFile(romFile);
61 hgw_context_destroy(hgw, HGW_BYE_INACTIVE);
62 DIE("No Rom in Gconf!");
65 char no_audio = FALSE;
66 if (hgw_conf_request_bool(hgw, kGConfDisableAudio, &no_audio) == HGW_ERR_NONE) {
67 Config.enableAudio = no_audio ? true : false;
71 if (hgw_conf_request_bool(hgw, kGConfTurboMode, &turbo) == HGW_ERR_NONE) {
72 Settings.TurboMode = turbo ? TRUE : FALSE;
76 if (hgw_conf_request_int(hgw, kGConfFrameskip, &frameskip) == HGW_ERR_NONE) {
77 Settings.SkipFrames = (frameskip > 0 ? frameskip : AUTO_FRAMERATE);
81 if (hgw_conf_request_int(hgw, kGConfFrameskip, &speedhacks) == HGW_ERR_NONE) {
82 if (speedhacks <= 0) {
83 Settings.HacksEnabled = FALSE;
84 Settings.HacksFilter = FALSE;
85 } else if (speedhacks == 1) {
86 Settings.HacksEnabled = TRUE;
87 Settings.HacksFilter = TRUE;
89 Settings.HacksEnabled = TRUE;
90 Settings.HacksFilter = FALSE;
94 HgwStartCommand cmd = hgw_context_get_start_command(hgw);
97 case HGW_COMM_NONE: // called from libosso
99 Config.snapshotLoad = true;
100 Config.snapshotSave = true;
102 case HGW_COMM_RESTART:
103 Config.snapshotLoad = false;
104 Config.snapshotSave = true;
108 Config.snapshotLoad = false;
109 Config.snapshotSave = false;
110 Config.quitting = true;
117 if (!hgwLaunched) return;
120 HgwMessageFlags flags = HGW_MSG_FLAG_NONE;
122 if ( hgw_msg_check_incoming(hgw, &msg, flags) == HGW_ERR_COMMUNICATION ) {
123 // Message Incoming, process msg
126 case HGW_MSG_TYPE_CBREQ:
130 Config.quitting = true;
134 case HGW_MSG_TYPE_DEVSTATE:
136 case HGW_DEVICE_STATE_SHUTDOWN:
137 Config.quitting = true; // try to quit gracefully
146 hgw_msg_free_data(&msg);