e81d57dea34ad69771458f30c269cb4a6513da73
[clinton/Virtual-Jaguar-Rx.git] / src / settings.h
1 //
2 // settings.h: Header file
3 //
4 // JPM = Jean-Paul Mari <djipi.mari@gmail.com>
5 //
6 // Who When What
7 // --- ---------- ------------------------------------------------------------
8 // JPM 06/19/2016 Soft debugger support
9 // JPM Sept./2018 Added the new Models and BIOS handler, and a screenshot settings
10 // JPM 10/10/2018 Added search paths in settings
11 //
12
13 #ifndef __SETTINGS_H__
14 #define __SETTINGS_H__
15
16 // MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...
17 #ifdef __GCCUNIX__
18 #include <limits.h>
19 #define MAX_PATH _POSIX_PATH_MAX
20 #else
21 #include <stdlib.h> // for MAX_PATH on MinGW/Darwin
22 // Kludge for Win64
23 #ifndef MAX_PATH
24 #define MAX_PATH _MAX_PATH // Urgh.
25 #endif
26 #endif
27 #include <stdint.h>
28
29 #define MaxMemory1BrowserWindow 4
30
31
32 // List the erase settings possibilities
33 enum
34 {
35 SETTINGS_NONE = 0,
36 SETTINGS_ALL,
37 SETTINGS_UI,
38 SETTINGS_ALPINE,
39 SETTINGS_DEBUGGER,
40 SETTINGS_END
41 };
42
43
44 // Key bindings settings structure
45 struct KBSettings
46 {
47 //char KBSettingName[100];
48 char KBSettingValue[100];
49 //char KBSettingDefaultValue[100];
50 };
51
52
53 // functions declarations
54 extern bool EraseSettings(char *Setting);
55
56
57 // Settings struct
58 struct VJSettings
59 {
60 bool useJoystick; // Joystick usage
61 int32_t joyport; // Joystick port
62 bool hardwareTypeNTSC; // Set to false for PAL, otherwise it is NTSC
63 bool useJaguarBIOS; // Use of any Jaguar BIOS
64 bool useRetailBIOS; // Use of Retail BIOS
65 bool useDevBIOS; // Use of Development BIOS
66 bool GPUEnabled; // Use of GPU
67 bool DSPEnabled; // Use of DSP
68 bool usePipelinedDSP;
69 bool fullscreen; // Emulator in full screen mode so video output display only
70 bool useOpenGL; // OpenGL support (always 'true')
71 uint32_t glFilter;
72 bool hardwareTypeAlpine; // Alpine mode
73 bool softTypeDebugger; // Soft type debugger mode
74 bool audioEnabled;
75 uint32_t frameSkip;
76 uint32_t renderType;
77 uint32_t refresh;
78 bool allowWritesToROM; // Allow writing to ROM cartdridge
79 uint32_t biosType; // Bios type used
80 uint32_t jaguarModel; // Jaguar model
81 size_t nbrdisasmlines; // Number of lines to show in the M68K tracing window
82 bool disasmopcodes;
83 bool displayHWlabels;
84 bool useFastBlitter;
85 bool displayFullSourceFilename;
86 size_t nbrmemory1browserwindow; // Number of memory browser windows
87 size_t DRAM_size; // DRAM size
88
89 // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
90 uint32_t p1KeyBindings[21];
91 uint32_t p2KeyBindings[21];
92
93 // Keybindings
94 KBSettings KBContent[100];
95
96 // Paths
97 char ROMPath[MAX_PATH];
98 //char jagBootPath[MAX_PATH];
99 //char CDBootPath[MAX_PATH];
100 char EEPROMPath[MAX_PATH];
101 char alpineROMPath[MAX_PATH];
102 char debuggerROMPath[MAX_PATH];
103 char absROMPath[MAX_PATH];
104 char screenshotPath[MAX_PATH];
105 char sourcefilesearchPaths[4096];
106 };
107
108 // Render types
109 enum { RT_NORMAL = 0, RT_TV = 1 };
110
111 // Jaguar models
112 enum { JAG_NULL_SERIES, JAG_K_SERIES, JAG_M_SERIES };
113
114 // BIOS types
115 enum { BT_NULL, BT_K_SERIES, BT_M_SERIES, BT_STUBULATOR_1, BT_STUBULATOR_2 };
116
117 // Exported variables
118 extern VJSettings vjs;
119
120 #endif // __SETTINGS_H__