shithub: m8c

Download patch

ref: b7c471678a96bbb0b7f2735822bea6b86a8de14c
parent: 71dbd528c3b2ae1e4f39e4cbee08369d4c70edb7
author: SpaceyKasey <87594618+SpaceyKasey@users.noreply.github.com>
date: Sun Mar 20 12:51:03 EDT 2022

fix and add sample

--- a/config.c
+++ b/config.c
@@ -59,51 +59,52 @@
   SDL_Log("Writing config file to %s", config_path);
 
   // Entries for the config file
-  char ini_values[34][50];
-  sprintf(ini_values[0], "[graphics]\n");
-  sprintf(ini_values[1], "fullscreen=%s\n",
+  char ini_values[35][50];
+  int initPointer = 0;
+  sprintf(ini_values[initPointer++], "[graphics]\n");
+  sprintf(ini_values[initPointer++], "fullscreen=%s\n",
           conf->init_fullscreen ? "true" : "false");
-  sprintf(ini_values[1], "software=%s\n",
+  sprintf(ini_values[initPointer++], "software=%s\n",
           conf->init_fullscreen ? "true" : "false");
-  sprintf(ini_values[2], "[keyboard]\n");
-  sprintf(ini_values[3], "key_up=%d\n", conf->key_up);
-  sprintf(ini_values[4], "key_left=%d\n", conf->key_left);
-  sprintf(ini_values[5], "key_down=%d\n", conf->key_down);
-  sprintf(ini_values[6], "key_right=%d\n", conf->key_right);
-  sprintf(ini_values[7], "key_select=%d\n", conf->key_select);
-  sprintf(ini_values[8], "key_select_alt=%d\n", conf->key_select_alt);
-  sprintf(ini_values[9], "key_start=%d\n", conf->key_start);
-  sprintf(ini_values[10], "key_start_alt=%d\n", conf->key_start_alt);
-  sprintf(ini_values[11], "key_opt=%d\n", conf->key_opt);
-  sprintf(ini_values[12], "key_opt_alt=%d\n", conf->key_opt_alt);
-  sprintf(ini_values[13], "key_edit=%d\n", conf->key_edit);
-  sprintf(ini_values[14], "key_edit_alt=%d\n", conf->key_edit_alt);
-  sprintf(ini_values[15], "key_delete=%d\n", conf->key_delete);
-  sprintf(ini_values[16], "key_reset=%d\n", conf->key_reset);
-  sprintf(ini_values[17], "[gamepad]\n");
-  sprintf(ini_values[18], "gamepad_up=%d\n", conf->gamepad_up);
-  sprintf(ini_values[19], "gamepad_left=%d\n", conf->gamepad_left);
-  sprintf(ini_values[20], "gamepad_down=%d\n", conf->gamepad_down);
-  sprintf(ini_values[21], "gamepad_right=%d\n", conf->gamepad_right);
-  sprintf(ini_values[22], "gamepad_select=%d\n", conf->gamepad_select);
-  sprintf(ini_values[23], "gamepad_start=%d\n", conf->gamepad_start);
-  sprintf(ini_values[24], "gamepad_opt=%d\n", conf->gamepad_opt);
-  sprintf(ini_values[25], "gamepad_edit=%d\n", conf->gamepad_edit);
-  sprintf(ini_values[26], "gamepad_analog_threshold=%d\n",
+  sprintf(ini_values[initPointer++], "[keyboard]\n");
+  sprintf(ini_values[initPointer++], "key_up=%d\n", conf->key_up);
+  sprintf(ini_values[initPointer++], "key_left=%d\n", conf->key_left);
+  sprintf(ini_values[initPointer++], "key_down=%d\n", conf->key_down);
+  sprintf(ini_values[initPointer++], "key_right=%d\n", conf->key_right);
+  sprintf(ini_values[initPointer++], "key_select=%d\n", conf->key_select);
+  sprintf(ini_values[initPointer++], "key_select_alt=%d\n", conf->key_select_alt);
+  sprintf(ini_values[initPointer++], "key_start=%d\n", conf->key_start);
+  sprintf(ini_values[initPointer++], "key_start_alt=%d\n", conf->key_start_alt);
+  sprintf(ini_values[initPointer++], "key_opt=%d\n", conf->key_opt);
+  sprintf(ini_values[initPointer++], "key_opt_alt=%d\n", conf->key_opt_alt);
+  sprintf(ini_values[initPointer++], "key_edit=%d\n", conf->key_edit);
+  sprintf(ini_values[initPointer++], "key_edit_alt=%d\n", conf->key_edit_alt);
+  sprintf(ini_values[initPointer++], "key_delete=%d\n", conf->key_delete);
+  sprintf(ini_values[initPointer++], "key_reset=%d\n", conf->key_reset);
+  sprintf(ini_values[initPointer++], "[gamepad]\n");
+  sprintf(ini_values[initPointer++], "gamepad_up=%d\n", conf->gamepad_up);
+  sprintf(ini_values[initPointer++], "gamepad_left=%d\n", conf->gamepad_left);
+  sprintf(ini_values[initPointer++], "gamepad_down=%d\n", conf->gamepad_down);
+  sprintf(ini_values[initPointer++], "gamepad_right=%d\n", conf->gamepad_right);
+  sprintf(ini_values[initPointer++], "gamepad_select=%d\n", conf->gamepad_select);
+  sprintf(ini_values[initPointer++], "gamepad_start=%d\n", conf->gamepad_start);
+  sprintf(ini_values[initPointer++], "gamepad_opt=%d\n", conf->gamepad_opt);
+  sprintf(ini_values[initPointer++], "gamepad_edit=%d\n", conf->gamepad_edit);
+  sprintf(ini_values[initPointer++], "gamepad_analog_threshold=%d\n",
           conf->gamepad_analog_threshold);
-  sprintf(ini_values[27], "gamepad_analog_invert=%s\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_invert=%s\n",
           conf->gamepad_analog_invert ? "true" : "false");
-  sprintf(ini_values[28], "gamepad_analog_axis_updown=%d\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_axis_updown=%d\n",
           conf->gamepad_analog_axis_updown);
-  sprintf(ini_values[29], "gamepad_analog_axis_leftright=%d\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_axis_leftright=%d\n",
           conf->gamepad_analog_axis_leftright);
-  sprintf(ini_values[30], "gamepad_analog_axis_select=%d\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_axis_select=%d\n",
           conf->gamepad_analog_axis_select);
-  sprintf(ini_values[31], "gamepad_analog_axis_start=%d\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_axis_start=%d\n",
           conf->gamepad_analog_axis_start);
-  sprintf(ini_values[32], "gamepad_analog_axis_opt=%d\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_axis_opt=%d\n",
           conf->gamepad_analog_axis_opt);
-  sprintf(ini_values[33], "gamepad_analog_axis_edit=%d\n",
+  sprintf(ini_values[initPointer++], "gamepad_analog_axis_edit=%d\n",
           conf->gamepad_analog_axis_edit);
 
   if (rw != NULL) {
@@ -141,25 +142,30 @@
   read_key_config(ini, conf);
   read_gamepad_config(ini, conf);
 
+  //Write any new default options after loading
+  write_config(conf);
+
   // Frees the mem used for the config
   ini_free(ini);
 }
 
 void read_graphics_config(ini_t *ini, config_params_s *conf) {
-  const char *param = ini_get(ini, "graphics", "fullscreen");
+  const char *param_fs = ini_get(ini, "graphics", "fullscreen");
+  const char *param_sw = ini_get(ini, "graphics", "software");
   // This obviously requires the parameter to be a lowercase true to enable
   // fullscreen
-  if (strcmp(param, "true") == 0) {
+  if (strcmp(param_fs, "true") == 0) {
     conf->init_fullscreen = 1;
   } else
     conf->init_fullscreen = 0;
 
-    param = ini_get(ini, "graphics", "software");
+  if(param_sw != NULL){
+    if (strcmp(param_sw, "true") == 0) {
+      conf->init_software = 1;
+    } else
+      conf->init_software = 0;
+  }
 
-  if (strcmp(param, "true") == 0) {
-    conf->init_software = 1;
-  } else
-    conf->init_software = 0;
 }
 
 void read_key_config(ini_t *ini, config_params_s *conf) {
--- a/config.ini.sample
+++ b/config.ini.sample
@@ -1,6 +1,8 @@
 [graphics]
 ; set this to true to have m8c start fullscreen
 fullscreen=false
+; set this to true to run m8c in software rendering mode (use for raspberry pi)
+software=false
 
 [keyboard]
 ; these need to be the decimal value of the SDL scancodes.
--