shithub: m8c

Download patch

ref: cf2c76a70b5f74ad82051447dc1d90250dd4f528
parent: 2aa5ce2fb094339ddd5aae6ebb1dc10be7043419
author: SpaceyKasey <87594618+SpaceyKasey@users.noreply.github.com>
date: Sun Mar 20 11:59:11 EDT 2022

Add config option

--- a/config.c
+++ b/config.c
@@ -10,6 +10,7 @@
   c.filename = "config.ini"; // default config file to load
 
   c.init_fullscreen = 0; // default fullscreen state at load
+  c.init_software = 0;
 
   c.key_up = SDL_SCANCODE_UP;
   c.key_left = SDL_SCANCODE_LEFT;
@@ -62,6 +63,8 @@
   sprintf(ini_values[0], "[graphics]\n");
   sprintf(ini_values[1], "fullscreen=%s\n",
           conf->init_fullscreen ? "true" : "false");
+  sprintf(ini_values[1], "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);
@@ -150,6 +153,13 @@
     conf->init_fullscreen = 1;
   } else
     conf->init_fullscreen = 0;
+
+    param = ini_get(ini, "graphics", "software");
+
+  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.h
+++ b/config.h
@@ -9,6 +9,7 @@
 typedef struct config_params_s {
   char *filename;
   int init_fullscreen;
+  int init_software;
 
   int key_up;
   int key_left;
--- a/main.c
+++ b/main.c
@@ -61,7 +61,7 @@
   if (enable_and_reset_display(port) == -1)
     run = 0;
 
-  if (initialize_sdl(conf.init_fullscreen) == -1)
+  if (initialize_sdl(conf.init_fullscreen, conf.init_software) == -1)
     run = 0;
 
   uint8_t prev_input = 0;
--- a/render.c
+++ b/render.c
@@ -20,7 +20,7 @@
 uint8_t fullscreen = 0;
 
 // Initializes SDL and creates a renderer and required surfaces
-int initialize_sdl(int init_fullscreen) {
+int initialize_sdl(int init_fullscreen, int init_software) {
 
   ticks = SDL_GetTicks();
 
@@ -37,7 +37,7 @@
                          SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL |
                              SDL_WINDOW_RESIZABLE | init_fullscreen);
 
-  rend = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
+  rend = SDL_CreateRenderer(win, -1, init_software ? SDL_RENDERER_SOFTWARE : SDL_RENDERER_ACCELERATED);
 
   SDL_RenderSetLogicalSize(rend, 320, 240);
 
--- a/render.h
+++ b/render.h
@@ -6,7 +6,7 @@
 
 #include "command.h"
 
-int initialize_sdl();
+int initialize_sdl(int init_fullscreen, int init_software);
 void close_renderer();
 
 int process_queues(struct command_queues *queues);
--