2 // SETTINGS.CPP: Virtual Jaguar configuration loading/saving support
5 // (C) 2010 Underground Software
7 // JLH = James L. Hammons <jlhamm@acm.org>
10 // --- ---------- -------------------------------------------------------------
11 // JLH 01/16/2010 Created this log
19 #include "sdlemu_config.h"
23 bool smoothGLOutput = false;
31 // Private function prototypes
33 void CheckForTrailingSlash(char * path);
36 // Load Virtual Jaguar's settings
38 void LoadVJSettings(void)
40 if (sdlemu_init_config("./vj.cfg") == 0 // CWD
41 && sdlemu_init_config("~/vj.cfg") == 0 // Home
42 && sdlemu_init_config("~/.vj/vj.cfg") == 0 // Home under .vj directory
43 && sdlemu_init_config("vj.cfg") == 0) // Somewhere in the path
44 WriteLog("Settings: Couldn't find VJ configuration file. Using defaults...\n");
46 vjs.useJoystick = sdlemu_getval_bool("useJoystick", false);
47 vjs.joyport = sdlemu_getval_int("joyport", 0);
48 vjs.hardwareTypeNTSC = sdlemu_getval_bool("hardwareTypeNTSC", true);
49 vjs.frameSkip = sdlemu_getval_int("frameSkip", 0);
50 vjs.useJaguarBIOS = sdlemu_getval_bool("useJaguarBIOS", false);
51 vjs.DSPEnabled = sdlemu_getval_bool("DSPEnabled", false);
52 vjs.usePipelinedDSP = sdlemu_getval_bool("usePipelinedDSP", false);
53 vjs.fullscreen = sdlemu_getval_bool("fullscreen", false);
54 vjs.useOpenGL = sdlemu_getval_bool("useOpenGL", true);
55 vjs.glFilter = sdlemu_getval_int("glFilterType", 0);
56 vjs.renderType = sdlemu_getval_int("renderType", 0);
58 // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
59 vjs.p1KeyBindings[0] = sdlemu_getval_int("p1k_up", SDLK_UP);
60 vjs.p1KeyBindings[1] = sdlemu_getval_int("p1k_down", SDLK_DOWN);
61 vjs.p1KeyBindings[2] = sdlemu_getval_int("p1k_left", SDLK_LEFT);
62 vjs.p1KeyBindings[3] = sdlemu_getval_int("p1k_right", SDLK_RIGHT);
63 vjs.p1KeyBindings[4] = sdlemu_getval_int("p1k_c", SDLK_z);
64 vjs.p1KeyBindings[5] = sdlemu_getval_int("p1k_b", SDLK_x);
65 vjs.p1KeyBindings[6] = sdlemu_getval_int("p1k_a", SDLK_c);
66 vjs.p1KeyBindings[7] = sdlemu_getval_int("p1k_option", SDLK_QUOTE);
67 vjs.p1KeyBindings[8] = sdlemu_getval_int("p1k_pause", SDLK_RETURN);
68 vjs.p1KeyBindings[9] = sdlemu_getval_int("p1k_0", SDLK_KP0);
69 vjs.p1KeyBindings[10] = sdlemu_getval_int("p1k_1", SDLK_KP1);
70 vjs.p1KeyBindings[11] = sdlemu_getval_int("p1k_2", SDLK_KP2);
71 vjs.p1KeyBindings[12] = sdlemu_getval_int("p1k_3", SDLK_KP3);
72 vjs.p1KeyBindings[13] = sdlemu_getval_int("p1k_4", SDLK_KP4);
73 vjs.p1KeyBindings[14] = sdlemu_getval_int("p1k_5", SDLK_KP5);
74 vjs.p1KeyBindings[15] = sdlemu_getval_int("p1k_6", SDLK_KP6);
75 vjs.p1KeyBindings[16] = sdlemu_getval_int("p1k_7", SDLK_KP7);
76 vjs.p1KeyBindings[17] = sdlemu_getval_int("p1k_8", SDLK_KP8);
77 vjs.p1KeyBindings[18] = sdlemu_getval_int("p1k_9", SDLK_KP9);
78 vjs.p1KeyBindings[19] = sdlemu_getval_int("p1k_pound", SDLK_KP_DIVIDE);
79 vjs.p1KeyBindings[20] = sdlemu_getval_int("p1k_star", SDLK_KP_MULTIPLY);
81 vjs.p2KeyBindings[0] = sdlemu_getval_int("p2k_up", SDLK_UP);
82 vjs.p2KeyBindings[1] = sdlemu_getval_int("p2k_down", SDLK_DOWN);
83 vjs.p2KeyBindings[2] = sdlemu_getval_int("p2k_left", SDLK_LEFT);
84 vjs.p2KeyBindings[3] = sdlemu_getval_int("p2k_right", SDLK_RIGHT);
85 vjs.p2KeyBindings[4] = sdlemu_getval_int("p2k_c", SDLK_z);
86 vjs.p2KeyBindings[5] = sdlemu_getval_int("p2k_b", SDLK_x);
87 vjs.p2KeyBindings[6] = sdlemu_getval_int("p2k_a", SDLK_c);
88 vjs.p2KeyBindings[7] = sdlemu_getval_int("p2k_option", SDLK_QUOTE);
89 vjs.p2KeyBindings[8] = sdlemu_getval_int("p2k_pause", SDLK_RETURN);
90 vjs.p2KeyBindings[9] = sdlemu_getval_int("p2k_0", SDLK_KP0);
91 vjs.p2KeyBindings[10] = sdlemu_getval_int("p2k_1", SDLK_KP1);
92 vjs.p2KeyBindings[11] = sdlemu_getval_int("p2k_2", SDLK_KP2);
93 vjs.p2KeyBindings[12] = sdlemu_getval_int("p2k_3", SDLK_KP3);
94 vjs.p2KeyBindings[13] = sdlemu_getval_int("p2k_4", SDLK_KP4);
95 vjs.p2KeyBindings[14] = sdlemu_getval_int("p2k_5", SDLK_KP5);
96 vjs.p2KeyBindings[15] = sdlemu_getval_int("p2k_6", SDLK_KP6);
97 vjs.p2KeyBindings[16] = sdlemu_getval_int("p2k_7", SDLK_KP7);
98 vjs.p2KeyBindings[17] = sdlemu_getval_int("p2k_8", SDLK_KP8);
99 vjs.p2KeyBindings[18] = sdlemu_getval_int("p2k_9", SDLK_KP9);
100 vjs.p2KeyBindings[19] = sdlemu_getval_int("p2k_pound", SDLK_KP_DIVIDE);
101 vjs.p2KeyBindings[20] = sdlemu_getval_int("p2k_star", SDLK_KP_MULTIPLY);
103 strcpy(vjs.jagBootPath, sdlemu_getval_string("JagBootROM", "./BIOS/jagboot.rom"));
104 strcpy(vjs.CDBootPath, sdlemu_getval_string("CDBootROM", "./BIOS/jagcd.rom"));
105 strcpy(vjs.EEPROMPath, sdlemu_getval_string("EEPROMs", "./EEPROMs"));
106 strcpy(vjs.ROMPath, sdlemu_getval_string("ROMs", "./ROMs"));
107 CheckForTrailingSlash(vjs.EEPROMPath);
108 CheckForTrailingSlash(vjs.ROMPath);
110 vjs.hardwareTypeAlpine = false; // No external setting for this yet...
114 // Save Virtual Jaguar's settings
116 void SaveVJSettings(void)
121 // Check path for a trailing slash, and append if not present
123 void CheckForTrailingSlash(char * path)
125 if (strlen(path) > 0)
126 if (path[strlen(path) - 1] != '/')
127 strcat(path, "/"); // NOTE: Possible buffer overflow