2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
14 #include "vm/vm_template.h"
17 #define USE_FIXED_CONFIG 1
18 #include "qt/gui/csp_logger.h"
20 #if defined(USE_SHARED_DLL)
21 #define USE_FIXED_CONFIG 1
26 CONFIG_RENDER_TYPE_STD = 0,
27 CONFIG_RENDER_TYPE_TV,
28 CONFIG_RENDER_TYPE_END
31 CONFIG_RENDER_PLATFORM_OPENGL_MAIN = 0,
32 CONFIG_RENDER_PLATFORM_OPENGL_CORE = 1,
33 CONFIG_RENDER_PLATFORM_OPENGL_ES = 2,
34 CONFIG_RENDER_PLATFORM_QT3D = 8,
35 CONFIG_RENDER_PLATFORM_VULKAN = 16,
36 CONFIG_RENDER_PLATFORM_DIRECTDRAW = 24,
37 CONFIG_RENDER_PLATFORM_SDLFB = 25,
38 CONFIG_RENDER_PLATFORM_DIRECTX = 32,
42 * ToDo: Apply keyboard types for emulation.
45 CONFIG_HOST_KEYBOARD_TYPE_AT_JP = 0x00000000,
46 CONFIG_HOST_KEYBOARD_TYPE_AT_EN = 0x00010000,
47 CONFIG_HOST_KEYBOARD_TYPE_AT_83 = 0x00030000,
48 CONFIG_HOST_KEYBOARD_TYPE_AT_84 = 0x00040000,
49 CONFIG_HOST_KEYBOARD_TYPE_AT_MISC = 0x00ff0000,
50 CONFIG_HOST_KEYBOARD_TYPE_PC98 = 0x00980000,
51 CONFIG_HOST_KEYBOARD_TYPE_MAC = 0x00fe0000,
55 CONFIG_HOST_KEYBOARD_AT_106JP = CONFIG_HOST_KEYBOARD_TYPE_AT_JP + 106,
56 CONFIG_HOST_KEYBOARD_AT_101 = CONFIG_HOST_KEYBOARD_TYPE_AT_EN + 101,
57 CONFIG_HOST_KEYBOARD_AT_102 = CONFIG_HOST_KEYBOARD_TYPE_AT_EN + 102,
58 CONFIG_HOST_KEYBOARD_AT_104 = CONFIG_HOST_KEYBOARD_TYPE_AT_EN + 104,
59 CONFIG_HOST_KEYBOARD_AT_109JP = CONFIG_HOST_KEYBOARD_TYPE_AT_JP + 109,
60 CONFIG_HOST_KEYBOARD_AT_83 = CONFIG_HOST_KEYBOARD_TYPE_AT_83 + 83,
61 CONFIG_HOST_KEYBOARD_AT_84 = CONFIG_HOST_KEYBOARD_TYPE_AT_84 + 84,
62 CONFIG_HOST_KEYBOARD_AT_MISC = CONFIG_HOST_KEYBOARD_TYPE_AT_MISC,
63 CONFIG_HOST_KEYBOARD_MAC_US = CONFIG_HOST_KEYBOARD_TYPE_MAC + 0,
64 CONFIG_HOST_KEYBOARD_MAC_JP = CONFIG_HOST_KEYBOARD_TYPE_MAC + 1,
65 CONFIG_HOST_KEYBOARD_MAC_ANOTHER = CONFIG_HOST_KEYBOARD_TYPE_MAC + 0xff,
69 CONFIG_CURSOR_AS_CURSOR = 0,
70 CONFIG_CURSOR_AS_2468 = 1,
71 CONFIG_CURSOR_AS_1235 = 2,
76 #ifdef USE_FIXED_CONFIG
77 #define USE_CART_TMP 8
78 #define USE_FLOPPY_DISK_TMP 16
79 #define USE_QUICK_DISK_TMP 8
80 #define USE_HARD_DISK_TMP 8
81 #define USE_TAPE_TMP 8
82 #define USE_COMPACT_DISC_TMP 8
83 #define USE_LASER_DISC_TMP 8
84 #define USE_BINARY_FILE_TMP 8
85 #define USE_BUBBLE_TMP 16
86 #define MAX_VOLUME_TMP 32
88 #define USE_CART_TMP USE_CART
89 #define USE_FLOPPY_DISK_TMP USE_FLOPPY_DISK
90 #define USE_QUICK_DISK_TMP USE_QUICK_DISK
91 #define USE_HARD_DISK_TMP USE_HARD_DISK
92 #define USE_TAPE_TMP USE_TAPE
93 #define USE_COMPACT_DISC_TMP USE_COMPACT_DISC
94 #define USE_LASER_DISC_TMP USE_LASER_DISC
95 #define USE_BINARY_FILE_TMP USE_BINARY_FILE
96 #define USE_BUBBLE_TMP USE_BUBBLE
97 #ifdef USE_SOUND_VOLUME
98 #define MAX_VOLUME_TMP USE_SOUND_VOLUME
102 void initialize_config();
103 void load_config(const _TCHAR* config_path);
104 void save_config(const _TCHAR* config_path);
105 bool process_config_state(void *f, bool loading);
110 * To reduce time to build, compiling common blocks of GUI at once.
111 * So, you should not separate items with #ifdef.
115 #if defined(USE_FIXED_CONFIG) || defined(USE_BOOT_MODE)
118 #if defined(USE_FIXED_CONFIG) || defined(USE_CPU_TYPE)
121 #if defined(USE_FIXED_CONFIG) || defined(USE_DIPSWITCH)
124 #if defined(USE_FIXED_CONFIG) || defined(USE_DEVICE_TYPE)
127 #if defined(USE_FIXED_CONFIG) || defined(USE_DRIVE_TYPE)
130 #if defined(USE_FIXED_CONFIG) || defined(USE_KEYBOARD_TYPE)
133 #if defined(USE_FIXED_CONFIG) || defined(USE_MOUSE_TYPE)
134 int mouse_type; /*!< Emulated type of mouse by VM */
136 #if defined(USE_FIXED_CONFIG) || defined(USE_JOYSTICK_TYPE)
137 int joystick_type; /*!< Emulated type of joystick by VM */
139 #if defined(USE_FIXED_CONFIG) || defined(USE_SOUND_TYPE)
142 #if defined(USE_FIXED_CONFIG) || defined(USE_MONITOR_TYPE)
145 #if defined(USE_FIXED_CONFIG) || defined(USE_SCANLINE)
149 #if defined(USE_FIXED_CONFIG) || defined(USE_PRINTER_TYPE)
152 #if defined(USE_FIXED_CONFIG) || defined(USE_SERIAL_TYPE)
155 #if defined(USE_SHARED_DLL) || defined(USE_FLOPPY_DISK)
156 bool correct_disk_timing[/*USE_FLOPPY_DISK_TMP*/16];
157 bool ignore_disk_crc[/*USE_FLOPPY_DISK_TMP*/16];
159 #if defined(USE_SHARED_DLL) || defined(USE_TAPE)
160 bool wave_shaper[USE_TAPE_TMP];
161 bool direct_load_mzt[USE_TAPE_TMP];
162 bool baud_high[USE_TAPE_TMP];
164 #if defined(USE_SHARED_DLL) || defined(USE_VARIABLE_MEMORY)
165 uint32_t current_ram_size;
172 #if defined(USE_SHARED_DLL) || defined(USE_CART)
173 _TCHAR initial_cart_dir[_MAX_PATH];
174 _TCHAR recent_cart_path[USE_CART_TMP][MAX_HISTORY][_MAX_PATH];
176 #if defined(USE_SHARED_DLL) || defined(USE_FLOPPY_DISK)
177 _TCHAR initial_floppy_disk_dir[_MAX_PATH];
178 _TCHAR recent_floppy_disk_path[USE_FLOPPY_DISK_TMP][MAX_HISTORY][_MAX_PATH];
180 #if defined(USE_SHARED_DLL) || defined(USE_QUICK_DISK)
181 _TCHAR initial_quick_disk_dir[_MAX_PATH];
182 _TCHAR recent_quick_disk_path[USE_QUICK_DISK_TMP][MAX_HISTORY][_MAX_PATH];
184 #if defined(USE_SHARED_DLL) || defined(USE_HARD_DISK)
185 _TCHAR initial_hard_disk_dir[_MAX_PATH];
186 _TCHAR recent_hard_disk_path[USE_HARD_DISK_TMP][MAX_HISTORY][_MAX_PATH];
187 _TCHAR last_hard_disk_path[USE_HARD_DISK_TMP][_MAX_PATH];
189 #if defined(USE_SHARED_DLL) || defined(USE_TAPE)
190 _TCHAR initial_tape_dir[_MAX_PATH];
191 _TCHAR recent_tape_path[USE_TAPE_TMP][MAX_HISTORY][_MAX_PATH];
193 #if defined(USE_SHARED_DLL) || defined(USE_COMPACT_DISC)
194 _TCHAR initial_compact_disc_dir[_MAX_PATH];
195 _TCHAR recent_compact_disc_path[USE_COMPACT_DISC_TMP][MAX_HISTORY][_MAX_PATH];
196 bool swap_audio_byteorder[USE_COMPACT_DISC_TMP];
198 #if defined(USE_SHARED_DLL) || defined(USE_LASER_DISC)
199 _TCHAR initial_laser_disc_dir[_MAX_PATH];
200 _TCHAR recent_laser_disc_path[USE_LASER_DISC_TMP][MAX_HISTORY][_MAX_PATH];
202 #if defined(USE_SHARED_DLL) || defined(USE_BINARY_FILE)
203 _TCHAR initial_binary_dir[_MAX_PATH];
204 _TCHAR recent_binary_path[USE_BINARY_FILE_TMP][MAX_HISTORY][_MAX_PATH];
206 #if defined(USE_SHARED_DLL) || defined(USE_BUBBLE)
207 _TCHAR initial_bubble_casette_dir[_MAX_PATH];
208 _TCHAR recent_bubble_casette_path[USE_BUBBLE_TMP][MAX_HISTORY][_MAX_PATH];
213 int window_stretch_type;
214 int fullscreen_stretch_type;
215 // #if defined(USE_FIXED_CONFIG) || defined(USE_SCREEN_ROTATE)
220 #if defined(USE_FIXED_CONFIG) || defined(USE_SCREEN_FILTER)
224 uint32_t mouse_sensitivity; /*!< SENSITIVITY of MOUSE , Value * 2^12, limit is 2^16-1 */
225 // NOTE: Belows contain STAGED CONFIGURATION.
227 bool use_separate_thread_draw;
228 bool use_opengl_scanline;
229 bool use_osd_virtual_media;
230 bool opengl_scanline_vert;
231 bool opengl_scanline_horiz;
232 bool use_opengl_filters;
233 bool focus_with_click;
234 int opengl_filter_num;
236 // STAGED CONFIG VALUES
237 bool swap_kanji_pause;
238 int cursor_as_ten_key;
239 bool numpad_enter_as_fullkey;
240 int host_keyboard_type;
244 * 0 : OpenGL/Main Profile
245 * 1 : OpenGL/Core Profile
247 * 8 : Qt3D(Will not implement)
248 * 16 : Vulkan (Will not implement)
249 * 24 : DirectDraw (Will not implement)
250 * 25 : SDLFB(Will not implement)
251 * 32 : DirectX(Will not implement)
254 int render_major_version;
255 int render_minor_version;
256 bool disk_count_immediate[16]; // Hack for MB8877, FLEX for FM-7.
257 _TCHAR debugwindow_font[1024];
258 _TCHAR logwindow_font[1024];
259 int debugwindow_width;
260 int debugwindow_height;
262 int logwindow_height;
269 bool sound_strict_rendering;
270 _TCHAR sound_device_name[1024];
273 int general_sound_level;
275 #if defined(USE_FIXED_CONFIG) || defined(USE_FLOPPY_DISK)
276 bool sound_noise_fdd;
278 #if defined(USE_FIXED_CONFIG) || defined(USE_TAPE)
279 bool sound_noise_cmt;
280 bool sound_tape_signal;
281 bool sound_tape_voice;
283 #if defined(USE_FIXED_CONFIG) || defined(USE_SOUND_VOLUME)
284 int sound_volume_l[MAX_VOLUME_TMP];
285 int sound_volume_r[MAX_VOLUME_TMP];
287 #if defined(USE_SHARED_DLL) || defined(_WIN32) && !defined(_USE_QT)
288 _TCHAR mame2151_dll_path[_MAX_PATH];
289 _TCHAR mame2608_dll_path[_MAX_PATH];
292 #if defined(USE_FIXED_CONFIG) || defined(USE_JOYSTICK)
293 int joy_buttons[4][16];
295 int joy_to_key_type; // Note: ADD "1235" as type 3.20181218 K.O
296 bool joy_to_key_numpad5;
297 int joy_to_key_buttons[16];
298 _TCHAR assigned_joystick_name[16][256];
299 int assigned_joystick_num[16];
300 bool emulated_joystick_dpad[4];
302 #if defined(USE_FIXED_CONFIG) || defined(USE_AUTO_KEY)
307 #if defined(USE_FIXED_CONFIG) || defined(USE_PRINTER)
308 _TCHAR printer_dll_path[_MAX_PATH];
311 bool special_debug_fdc;
312 bool print_statistics;
315 #if defined(_WIN32) && !defined(_USE_QT)
316 bool use_direct_input;
323 bool show_status_bar;
330 int video_codec_type;
331 int audio_codec_type;
333 int video_h264_bitrate;
334 int video_h264_bframes;
335 int video_h264_b_adapt;
338 int video_h264_subme;
340 int video_mpeg4_bitrate;
341 int video_mpeg4_bframes;
342 int video_mpeg4_minq;
343 int video_mpeg4_maxq;
347 int video_frame_rate; // FPS * 1000.0
350 bool dev_log_to_syslog[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1][8];
351 bool dev_log_to_console[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1][8];
352 bool dev_log_recording[CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1][8];
354 bool state_log_to_console;
355 bool state_log_to_syslog;
356 bool state_log_to_recording;
360 int virtual_media_position; // -1 = none, 1, 2, 3, 4 = LRUD
363 // Belows are machine features config (without DIPSW. I.E. joystick ports
364 #if defined(USE_FIXED_CONFIG) || defined(USE_MACHINE_FEATURES)
365 uint32_t machine_features[32];
369 extern config_t DLL_PREFIX_I config;