OSDN Git Service

[UI][OSD][Qt][CONFIG] Add option: Emulate cursor keys as "2468" or "1235".
[csp-qt/common_source_project-fm7.git] / source / src / config.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2006.08.18 -
6
7         [ config ]
8 */
9
10 #ifndef _CONFIG_H_
11 #define _CONFIG_H_
12
13 #include "vm/vm.h"
14 #include "fileio.h"
15 #if defined(_USE_QT)
16 #define USE_FIXED_CONFIG 1
17 #include "qt/gui/csp_logger.h"
18 #else
19   #if defined(USE_SHARED_DLL)
20   #define USE_FIXED_CONFIG 1
21   #endif
22 #endif
23
24 enum {
25         CONFIG_RENDER_TYPE_STD = 0,
26         CONFIG_RENDER_TYPE_TV,
27         CONFIG_RENDER_TYPE_END
28 };
29 enum {
30         CONFIG_RENDER_PLATFORM_OPENGL_MAIN = 0,
31         CONFIG_RENDER_PLATFORM_OPENGL_CORE = 1,
32         CONFIG_RENDER_PLATFORM_OPENGL_ES   = 2,
33         CONFIG_RENDER_PLATFORM_QT3D        = 8,
34         CONFIG_RENDER_PLATFORM_VULKAN      = 16,
35         CONFIG_RENDER_PLATFORM_DIRECTDRAW  = 24,
36         CONFIG_RENDER_PLATFORM_SDLFB       = 25,
37         CONFIG_RENDER_PLATFORM_DIRECTX     = 32,
38 };
39
40 /*
41  * ToDo: Apply keyboard types for emulation.
42  */
43 enum {
44         CONFIG_HOST_KEYBOARD_TYPE_AT_JP   = 0x00000000,
45         CONFIG_HOST_KEYBOARD_TYPE_AT_EN   = 0x00010000,
46         CONFIG_HOST_KEYBOARD_TYPE_AT_83   = 0x00030000,
47         CONFIG_HOST_KEYBOARD_TYPE_AT_84   = 0x00040000,
48         CONFIG_HOST_KEYBOARD_TYPE_AT_MISC = 0x00ff0000,
49         CONFIG_HOST_KEYBOARD_TYPE_PC98    = 0x00980000,
50         CONFIG_HOST_KEYBOARD_TYPE_MAC     = 0x00fe0000,
51 };      
52
53 enum {
54         CONFIG_HOST_KEYBOARD_AT_106JP    = CONFIG_HOST_KEYBOARD_TYPE_AT_JP + 106,
55         CONFIG_HOST_KEYBOARD_AT_101      = CONFIG_HOST_KEYBOARD_TYPE_AT_EN + 101,
56         CONFIG_HOST_KEYBOARD_AT_102      = CONFIG_HOST_KEYBOARD_TYPE_AT_EN + 102,
57         CONFIG_HOST_KEYBOARD_AT_104      = CONFIG_HOST_KEYBOARD_TYPE_AT_EN + 104,
58         CONFIG_HOST_KEYBOARD_AT_109JP    = CONFIG_HOST_KEYBOARD_TYPE_AT_JP + 109,
59         CONFIG_HOST_KEYBOARD_AT_83       = CONFIG_HOST_KEYBOARD_TYPE_AT_83 + 83,
60         CONFIG_HOST_KEYBOARD_AT_84       = CONFIG_HOST_KEYBOARD_TYPE_AT_84 + 84,
61         CONFIG_HOST_KEYBOARD_AT_MISC     = CONFIG_HOST_KEYBOARD_TYPE_AT_MISC,
62         CONFIG_HOST_KEYBOARD_MAC_US      = CONFIG_HOST_KEYBOARD_TYPE_MAC + 0,
63         CONFIG_HOST_KEYBOARD_MAC_JP      = CONFIG_HOST_KEYBOARD_TYPE_MAC + 1,
64         CONFIG_HOST_KEYBOARD_MAC_ANOTHER = CONFIG_HOST_KEYBOARD_TYPE_MAC + 0xff,
65 };      
66
67 enum {
68         CONFIG_CURSOR_AS_CURSOR = 0,
69         CONFIG_CURSOR_AS_2468 = 1,
70         CONFIG_CURSOR_AS_1235 = 2,
71 };
72
73 #define MAX_HISTORY     8
74
75 #ifdef USE_FIXED_CONFIG
76         #define MAX_CART_TMP    8
77         #define MAX_FD_TMP      16
78         #define MAX_QD_TMP      8
79         #define MAX_TAPE_TMP    8
80         #define MAX_BINARY_TMP  8
81         #define MAX_BUBBLE_TMP  16
82         #define MAX_VOLUME_TMP  32
83 #else
84         #define MAX_CART_TMP    MAX_CART
85         #define MAX_FD_TMP      MAX_FD
86         #define MAX_QD_TMP      MAX_QD
87         #define MAX_TAPE_TMP    MAX_TAPE
88         #define MAX_BINARY_TMP  MAX_BINARY
89         #define MAX_BUBBLE_TMP  MAX_BUBBLE
90         #ifdef USE_SOUND_VOLUME
91                 #define MAX_VOLUME_TMP  USE_SOUND_VOLUME
92         #endif
93 #endif
94
95 void DLL_PREFIX initialize_config();
96 void DLL_PREFIX load_config(const _TCHAR* config_path);
97 void DLL_PREFIX save_config(const _TCHAR* config_path);
98 void DLL_PREFIX save_config_state(void *f);
99 bool DLL_PREFIX load_config_state(void *f);
100
101 /*
102  * 20160407 Ohta:
103  * Qt:
104  *  To reduce time to build, compiling common blocks of GUI at once.
105  *  So, you should not separate items with #ifdef.
106  */ 
107 typedef struct {
108         // control
109         #if defined(USE_FIXED_CONFIG) || defined(USE_BOOT_MODE)
110                 int boot_mode;
111         #endif
112         #if defined(USE_FIXED_CONFIG) || defined(USE_CPU_TYPE)
113                 int cpu_type;
114         #endif
115         #if defined(USE_FIXED_CONFIG) || defined(USE_DIPSWITCH)
116                 uint32_t dipswitch;
117         #endif
118         #if defined(USE_FIXED_CONFIG) || defined(USE_DEVICE_TYPE)
119                 int device_type;
120         #endif
121         #if defined(USE_FIXED_CONFIG) || defined(USE_DRIVE_TYPE)
122                 int drive_type;
123         #endif
124         #if defined(USE_FIXED_CONFIG) || defined(USE_KEYBOARD_TYPE)
125                 int keyboard_type;
126         #endif
127         #if defined(USE_FIXED_CONFIG) || defined(USE_MOUSE_TYPE)
128                 int mouse_type;
129         #endif
130         #if defined(USE_FIXED_CONFIG) || defined(USE_JOYSTICK_TYPE)
131                 int joystick_type;
132         #endif
133         #if defined(USE_FIXED_CONFIG) || defined(USE_SOUND_TYPE)
134                 int sound_type;
135         #endif
136         #if defined(USE_FIXED_CONFIG) || defined(USE_MONITOR_TYPE)
137                 int monitor_type;
138         #endif
139         #if defined(USE_FIXED_CONFIG) || defined(USE_SCANLINE)
140                 bool scan_line;
141         #endif
142         #if defined(USE_FIXED_CONFIG) || defined(USE_PRINTER_TYPE)
143                 int printer_type;
144         #endif
145         #if defined(USE_FIXED_CONFIG) || defined(USE_FD1)
146                 bool correct_disk_timing[/*MAX_FD_TMP*/16];
147                 bool ignore_disk_crc[/*MAX_FD_TMP*/16];
148         #endif
149         #if defined(USE_FIXED_CONFIG) || defined(USE_TAPE1)
150                 bool wave_shaper[MAX_TAPE_TMP];
151                 bool direct_load_mzt[MAX_TAPE_TMP];
152                 bool baud_high[MAX_TAPE_TMP];
153         #endif
154         #if defined(USE_FIXED_CONFIG) || defined(USE_AUTO_KEY)
155                 bool romaji_to_kana;
156         #endif
157         
158         int cpu_power;
159         bool full_speed;
160         
161         // recent files
162         #if defined(USE_FIXED_CONFIG) || defined(USE_CART1)
163                 _TCHAR initial_cart_dir[_MAX_PATH];
164                 _TCHAR recent_cart_path[MAX_CART_TMP][MAX_HISTORY][_MAX_PATH];
165         #endif
166         #if defined(USE_FIXED_CONFIG) || defined(USE_FD1)
167                 _TCHAR initial_floppy_disk_dir[_MAX_PATH];
168                 _TCHAR recent_floppy_disk_path[MAX_FD_TMP][MAX_HISTORY][_MAX_PATH];
169         #endif
170         #if defined(USE_FIXED_CONFIG) || defined(USE_QD1)
171                 _TCHAR initial_quick_disk_dir[_MAX_PATH];
172                 _TCHAR recent_quick_disk_path[MAX_QD_TMP][MAX_HISTORY][_MAX_PATH];
173         #endif
174         #if defined(USE_FIXED_CONFIG) || defined(USE_TAPE1)
175                 _TCHAR initial_tape_dir[_MAX_PATH];
176                 _TCHAR recent_tape_path[MAX_TAPE_TMP][MAX_HISTORY][_MAX_PATH];
177         #endif
178         #if defined(USE_FIXED_CONFIG) || defined(USE_COMPACT_DISC)
179                 _TCHAR initial_compact_disc_dir[_MAX_PATH];
180                 _TCHAR recent_compact_disc_path[MAX_HISTORY][_MAX_PATH];
181         #endif
182         #if defined(USE_FIXED_CONFIG) || defined(USE_LASER_DISC)
183                 _TCHAR initial_laser_disc_dir[_MAX_PATH];
184                 _TCHAR recent_laser_disc_path[MAX_HISTORY][_MAX_PATH];
185         #endif
186         #if defined(USE_FIXED_CONFIG) || defined(USE_BINARY_FILE1)
187                 _TCHAR initial_binary_dir[_MAX_PATH];
188                 _TCHAR recent_binary_path[MAX_BINARY_TMP][MAX_HISTORY][_MAX_PATH];
189         #endif
190         #if defined(USE_FIXED_CONFIG) || defined(USE_BUBBLE1)
191                 _TCHAR initial_bubble_casette_dir[_MAX_PATH];
192                 _TCHAR recent_bubble_casette_path[MAX_BUBBLE_TMP][MAX_HISTORY][_MAX_PATH];
193         #endif
194
195         // screen
196         int window_mode;
197         int window_stretch_type;
198         int fullscreen_stretch_type;
199         //      #if defined(USE_FIXED_CONFIG) || defined(USE_SCREEN_ROTATE)
200                 int rotate_type;
201         //      #endif
202         
203         // filter
204         #if defined(USE_FIXED_CONFIG) || defined(USE_SCREEN_FILTER)
205                 int filter_type;
206         #endif
207
208 #if defined(_USE_QT)
209         bool use_opengl_scanline;
210         bool opengl_scanline_vert;
211         bool opengl_scanline_horiz;
212         bool use_opengl_filters;
213         bool focus_with_click;
214         int opengl_filter_num;
215         
216         
217         bool swap_kanji_pause;
218         int  cursor_as_ten_key;
219         bool enter_as_numpad_enter;
220         
221         int host_keyboard_type;
222         
223         /*
224          * TYPE : 
225          *    0 : OpenGL/Main Profile
226          *    1 : OpenGL/Core Profile
227          *    2 : OpenGL ES
228          *    8 : Qt3D(Will not implement)
229          *   16 : Vulkan (Will not implement)
230          *   24 : DirectDraw (Will not implement)
231          *   25 : SDLFB(Will not implement)
232      *   32 : DirectX(Will not implement)
233          */ 
234         int render_platform;
235         int render_major_version;
236         int render_minor_version;
237         bool disk_count_immediate[16]; // Hack for MB8877, FLEX for FM-7.
238 #endif  
239         
240         // sound
241         int sound_frequency;
242         int sound_latency;
243         bool sound_strict_rendering;
244 #if defined(_USE_QT)    
245         int general_sound_level;
246 #endif
247 #if defined(USE_FIXED_CONFIG) || defined(USE_FD1)
248         bool sound_noise_fdd;
249 #endif
250 #if defined(USE_FIXED_CONFIG) || defined(USE_TAPE1)
251         bool sound_noise_cmt;
252         bool sound_play_tape;
253 #endif
254 #if defined(USE_FIXED_CONFIG) || defined(USE_SOUND_VOLUME)
255         int sound_volume_l[MAX_VOLUME_TMP];
256         int sound_volume_r[MAX_VOLUME_TMP];
257 #endif
258         // input
259 #if defined(USE_FIXED_CONFIG) || defined(USE_JOYSTICK)
260         int joy_buttons[4][16];
261 #endif
262
263         // printer
264 #if defined(USE_FIXED_CONFIG) || defined(USE_PRINTER)
265         _TCHAR printer_dll_path[_MAX_PATH];
266 #endif
267
268 #if defined(_WIN32) && !defined(_USE_QT)
269         _TCHAR fmgen_dll_path[_MAX_PATH];
270         bool use_direct_input;
271         bool disable_dwm;
272
273         bool use_d3d9;
274         bool wait_vsync;
275         bool use_dinput;
276         bool show_status_bar;
277 #endif
278
279 #ifdef _USE_QT
280         _TCHAR assigned_joystick_name[16][256];
281
282         int video_width;
283         int video_height;
284         int video_codec_type;
285         int audio_codec_type;
286         
287         int video_h264_bitrate;
288         int video_h264_bframes;
289         int video_h264_b_adapt;
290         int video_h264_minq;
291         int video_h264_maxq;
292         int video_h264_subme;
293
294         int video_mpeg4_bitrate;
295         int video_mpeg4_bframes;
296         int video_mpeg4_minq;
297         int video_mpeg4_maxq;
298         
299         int video_threads;
300         int audio_bitrate;
301         int video_frame_rate; // FPS * 1000.0
302         bool log_to_syslog;
303         bool log_to_console;
304         bool dev_log_to_syslog[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1][8];
305         bool dev_log_to_console[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1][8];
306         bool dev_log_recording[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1][8];
307
308         int rendering_type;
309
310         int virtual_media_position; // -1 = none, 1, 2, 3, 4 = LRUD
311 #endif
312         
313 } config_t;
314
315 extern DLL_PREFIX config_t config;
316
317 #if defined(_USE_QT)
318 # include <string>
319 #endif
320
321 #endif
322