[ config ]
*/
-#if defined(_USE_AGAR)
-#include <SDL/SDL.h>
-#include <agar/core.h>
+#if defined(_USE_QT)
#include <string>
#include <vector>
#include "fileio.h"
-#include "agar_logger.h"
-#endif
-
-#ifdef _USE_QT
-//# include <SDL/SDL.h>
-#include <string>
-#include <vector>
-#include "fileio.h"
-#include "agar_logger.h"
+#include "csp_logger.h"
#include "qt_main.h"
-#else
-#include <windows.h>
+# if defined(Q_OS_WIN)
+# include <windows.h>
+# endif
#endif
#include <stdlib.h>
#define CONFIG_NAME "conf"
#endif
-#if defined(_USE_AGAR) || defined(_USE_QT)
-bool WritePrivateProfileString(char *lpAppName, char *lpKeyName, char *Value, FILEIO *lpFileName)
-{
- std::string s;
-
- s = lpAppName;
- s = s + ".";
- s = s + lpKeyName + "=";
- s = s + Value + "\n";
-
- lpFileName->Fwrite((void *)s.c_str(), s.length(), 1);
- return true;
-}
-
-bool WritePrivateProfileInt(char *lpAppName, char *lpKeyName, int Value, FILEIO *lpFileName)
+//extern _TCHAR* get_parent_dir(_TCHAR* file);
+BOOL MyWritePrivateProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, int Value, LPCTSTR lpFileName)
{
- std::string s;
- int l;
- char valuebuf[256];
- memset(valuebuf, 0x00, 256);
-
- l = snprintf(valuebuf, 254, "%d", Value);
- if((l <= 0) || (l >= 253)) return false;
- s = lpAppName;
- s = s + ".";
- s = s + lpKeyName + "=";
- s = s + valuebuf + "\n";
- lpFileName->Fwrite((void *)s.c_str(), s.length(), 1);
-
- return true;
-}
-
-BOOL WritePrivateProfileBool(char *lpAppName, char *lpKeyName, bool Value, FILEIO *lpFileName)
-{
- int v = 0;
- if(Value) v = 1;
- return WritePrivateProfileInt(lpAppName, lpKeyName, v, lpFileName);
+ _TCHAR String[32];
+ return MyWritePrivateProfileString(lpAppName, lpKeyName, create_string(_T("%d"), Value), lpFileName);
}
-
-
-std::string GetPrivateProfileStr(char *lpAppName, char *lpKeyName, FILEIO *lpFileName)
+BOOL MyWritePrivateProfileBool(LPCTSTR lpAppName, LPCTSTR lpKeyName, bool Value, LPCTSTR lpFileName)
{
- std::string key;
- char ibuf[4096 + 102];
- uint64_t i;
- int l_len;
- int c = '\0';
- std::string::size_type pos;
- std::string key_str;
- std::string got_str;
-
- key = lpAppName;
- key = key + ".";
- key = key + lpKeyName;
- AGAR_DebugLog(AGAR_LOG_DEBUG, "Try App: %s Key: %s", lpAppName, lpKeyName);
- lpFileName->Fseek(0, FILEIO_SEEK_SET);
- do {
- key_str = key;
- ibuf[0] = '\0';
- i = 0;
- l_len = 0;
- while(1) {
- if(l_len > (4096 + 100)) { // Too long, read dummy.
- c = (char)lpFileName->Fgetc();
- if((c != EOF) && (c != '\n') && (c != '\0')) continue;
- break;
- }
- c = (char)lpFileName->Fgetc();
- if((c == EOF) || (c == '\n') || (c == '\0')) break;
- ibuf[i] = (char)c;
- i++;
- l_len++;
- }
- l_len = 0;
- ibuf[i] = '\0';
- got_str = ibuf;
- //AGAR_DebugLog(AGAR_LOG_DEBUG, "Got: %s %d chars.\n", got_str.c_str(), i);
- key_str = key_str + "=";
- pos = got_str.find(key_str);
- if(pos != std::string::npos) break;
- if(c == EOF) return "";
- } while(c != EOF);
-
- got_str.erase(0, pos + key_str.length());
- //AGAR_DebugLog(AGAR_LOG_DEBUG, "Ok. Got %s = %s.\n", key, got_str.c_str());
- return got_str;
+ return MyWritePrivateProfileString(lpAppName, lpKeyName, create_string(_T("%d"), Value ? 1 : 0), lpFileName);
}
-
-void GetPrivateProfileString(char *section, char *key, char *defaultstr, char *str, int max_len, FILEIO *p)
-{
- std::string sp = GetPrivateProfileStr(section, key, p);
-// printf("Got: %s\n", sp.c_str());
-
- if((!sp.empty()) && (max_len > 1)){
- strncpy(str, sp.c_str(), max_len);
- } else {
- strncpy(str, defaultstr, max_len);
- }
- printf("Got: %s\n", str);
-}
-
-int GetPrivateProfileInt(char *lpAppName, char *lpKeyName, int nDefault, FILEIO *lpFileName)
-{
- int i;
- std::string s = GetPrivateProfileStr(lpAppName,lpKeyName, lpFileName);
-
- if(s.empty()) {
- i = nDefault;
- } else {
- i = strtol(s.c_str(), NULL, 10);
- }
- printf("Got: %d\n", i);
- return i;
-}
-
-
-
-bool GetPrivateProfileBool(char *lpAppName, char *lpKeyName, bool bDefault, FILEIO *lpFileName)
-{
-
- return (GetPrivateProfileInt(lpAppName, lpKeyName, bDefault ? 1 : 0, lpFileName) != 0);
-}
-
-#else
-BOOL WritePrivateProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, int Value, LPCTSTR lpFileName)
-{
- _TCHAR String[32];
- _stprintf_s(String, 32, _T("%d"), Value);
- return WritePrivateProfileString(lpAppName, lpKeyName, String, lpFileName);
-}
-
-BOOL WritePrivateProfileBool(LPCTSTR lpAppName, LPCTSTR lpKeyName, bool Value, LPCTSTR lpFileName)
-{
- _TCHAR String[32];
- _stprintf_s(String, 32, _T("%d"), Value ? 1 : 0);
- return WritePrivateProfileString(lpAppName, lpKeyName, String, lpFileName);
-}
-
-bool GetPrivateProfileBool(LPCTSTR lpAppName, LPCTSTR lpKeyName, bool bDefault, LPCTSTR lpFileName)
+bool MyGetPrivateProfileBool(LPCTSTR lpAppName, LPCTSTR lpKeyName, bool bDefault, LPCTSTR lpFileName)
{
- return (GetPrivateProfileInt(lpAppName, lpKeyName, bDefault ? 1 : 0, lpFileName) != 0);
+ return (MyGetPrivateProfileInt(lpAppName, lpKeyName, bDefault ? 1 : 0, lpFileName) != 0);
}
-#endif
-void init_config()
+void initialize_config()
{
+ int i;
// initial settings
memset(&config, 0, sizeof(config_t));
-
-#if !(defined(USE_BITMAP) || defined(USE_LED))
- config.use_d3d9 = true;
- config.stretch_type = 1; // Stretch (Aspect)
+ config.window_mode = 1;
+ // control
+#if defined(USE_BOOT_MODE) && defined(BOOT_MODE_DEFAULT)
+ config.boot_mode = BOOT_MODE_DEFAULT;
#endif
- config.sound_frequency = 6; // 48KHz
- config.sound_latency = 1; // 100msec
-
+#if defined(USE_CPU_TYPE) && defined(CPU_TYPE_DEFAULT)
+ config.cpu_type = CPU_TYPE_DEFAULT;
+#endif
+#if defined(USE_DIPSWITCH) && defined(DIPSWITCH_DEFAULT)
+ config.dipswitch = DIPSWITCH_DEFAULT;
+#endif
+#if defined(USE_DEVICE_TYPE) && defined(DEVICE_TYPE_DEFAULT)
+ config.device_type = DEVICE_TYPE_DEFAULT;
+#endif
+#if defined(USE_DRIVE_TYPE) && defined(DRIVE_TYPE_DEFAULT)
+ config.drive_type = DRIVE_TYPE_DEFAULT;
+#endif
+#if defined(USE_FD1)
+ for(int drv = 0; drv < MAX_FD; drv++) {
+#if defined(CORRECT_DISK_TIMING_DEFAULT)
+ config.correct_disk_timing[drv] = CORRECT_DISK_TIMING_DEFAULT;
+#else
+ config.correct_disk_timing[drv] = true;
+#endif
+#if defined(IGNORE_DISK_CRC_DEFAULT)
+ config.ignore_disk_crc[drv] = IGNORE_DISK_CRC_DEFAULT;
+#endif
+ }
+#elif defined(USE_FD1)
+ for(int drv = 0; drv < MAX_FD; drv++) {
+ config.ignore_disk_crc[drv] = false;
+ }
+#endif
#if defined(USE_TAPE)
config.wave_shaper = true;
config.direct_load_mzt = true;
config.baud_high = true;
#endif
-#if defined(USE_DIPSWITCH) && defined(DIPSWITCH_DEFAULT)
- config.dipswitch = DIPSWITCH_DEFAULT;
+
+ // sound
+#if defined(SOUND_RATE_DEFAULT)
+ config.sound_frequency = SOUND_RATE_DEFAULT;
+#else
+ config.sound_frequency = 6; // 48KHz
+#endif
+ config.sound_latency = 1; // 100msec
+ config.general_sound_level = 0;
+#if defined(USE_SOUND_DEVICE_TYPE) && defined(SOUND_DEVICE_TYPE_DEFAULT)
+ config.sound_device_type = SOUND_DEVICE_TYPE_DEFAULT;
+#elif defined(USE_SOUND_DEVICE_TYPE)
+ config.sound_device_type = 0;
+#endif
+
+ // input
+#ifdef _WIN32
+ config.use_direct_input = true;
+ config.disable_dwm = false;
+#endif
+ config.keyboard_type = 0;
+#ifdef USE_JOYSTICK
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 16; j++) {
+ config.joy_buttons[i][j] = (i << 4) | j;
+ }
+ }
+#endif
+ // printer
+#if defined(USE_PRINTER) && defined(PRINTER_DEVICE_TYPE_DEFAULT)
+ config.printer_device_type = PRINTER_DEVICE_TYPE_DEFAULT;
+#elif defined(USE_PRINTER)
+ config.printer_device_type = 0;
+#endif
+#if defined(USE_QT)
+ config.video_width = 640;
+ config.video_height = 480;
+ config.video_codec_type = 0; // MPEG4
+
+ config.video_h264_bitrate = 512;
+ config.video_h264_bframes = 4;
+ config.video_h264_b_adapt = 2;
+ config.video_h264_minq = 14;
+ config.video_h264_maxq = 25;
+ config.video_h264_subme = 8;
+
+ config.video_mpeg4_bitrate = 512;
+ config.video_mpeg4_bframes = 4;
+ config.video_mpeg4_minq = 1;
+ config.video_mpeg4_maxq = 20;
+
+ config.audio_codec_type = 0;
+ config.video_threads = 0;
+ config.audio_bitrate = 160;
+ config.video_frame_rate = 30;
+#endif
+ // screen
+#ifndef ONE_BOARD_MICRO_COMPUTER
+#ifdef _WIN32
+ config.use_d3d9 = true;
#endif
-#if defined(_HC80)
- config.device_type = 2; // Nonintelligent ram disk
-#endif
-#if defined(_PC8801MA)
- config.boot_mode = 2; // V2 mode, 4MHz
- config.cpu_type = 1;
-#endif
-#if defined(_X1TURBO) || defined(_X1TURBOZ)
- config.device_type = 1; // Keyboard mode B
-#endif
-#if defined(_X1) || defined(_X1TWIN) || defined(_X1TURBO) || defined(_X1TURBOZ)
- config.sound_device_type = 1; // CZ-8BS1
-#endif
- // FM7 Series:
- // 0 = PSG or NONE
- // 1 = OPN (+PSG)
- // 2 = WHG (+PSG)
- // 3 = WHG + OPN (+PSG)
- // 4 = THG (+PSG)
- // 5 = THG + OPN (+PSG)
- // 6 = THG + WHG (+PSG)
- // 7 = THG + WHG + OPN (+PSG)
-#if defined(_FM8)
- config.sound_device_type = 0; // WITHOUT PSG?
-#elif defined(_FM7) || defined(_FMNEW7) || defined(_FM77) || defined(_FM77L4) || defined(_FM77L2)
- config.sound_device_type = 0; // PSG ONLY
-#elif defined(_FM77AV) || defined(_FM77AV20) || defined(_FM77AV40) || defined(_FM77AV40EX) || defined(_FM77AV40SX)
- config.sound_device_type = 1; // OPN
-#endif
+ config.fullscreen_stretch_type = 1; // Stretch (Aspect)
+#endif
+
+#if defined(_USE_QT)
+ config.use_opengl_scanline = false;
+ config.opengl_scanline_vert = false;
+ config.opengl_scanline_horiz = false;
+ config.use_opengl_filters = false;
+ config.opengl_filter_num = 0;
+
+ config.log_to_syslog = false;
+ config.log_to_console = true;
+#endif
}
-void load_config()
+void load_config(const _TCHAR *config_path)
{
- int drv, i;
+ int drv, i;
// initial settings
- init_config();
-
- // get config path
-
-#if defined(_USE_AGAR) || defined(_USE_QT)
- char app_path2[_MAX_PATH], *ptr;
- FILEIO *config_path = new FILEIO();
-
- memset(app_path2, 0x00, _MAX_PATH);
- cpp_confdir.copy(app_path2, _MAX_PATH, 0);
-
- strncat(app_path2, CONFIG_NAME, _MAX_PATH);
- strncat(app_path2, ".ini", _MAX_PATH);
-
- AGAR_DebugLog(AGAR_LOG_INFO, "Try to read config: %s", app_path2);
- if(!config_path->Fopen(app_path2, FILEIO_READ_ASCII)) return;
-#else
- _TCHAR app_path[_MAX_PATH], config_path[_MAX_PATH], *ptr;
- GetModuleFileName(NULL, config_path, _MAX_PATH);
- GetFullPathName(config_path, _MAX_PATH, app_path, &ptr);
- *ptr = _T('\0');
- _stprintf_s(config_path, _MAX_PATH, _T("%s%s.ini"), app_path, _T(CONFIG_NAME));
-#endif
-
-
+ initialize_config();
+
// control
#ifdef USE_BOOT_MODE
- config.boot_mode = GetPrivateProfileInt(_T("Control"), _T("BootMode"), config.boot_mode, config_path);
+ config.boot_mode = MyGetPrivateProfileInt(_T("Control"), _T("BootMode"), config.boot_mode, config_path);
#endif
#ifdef USE_CPU_TYPE
- config.cpu_type = GetPrivateProfileInt(_T("Control"), _T("CPUType"), config.cpu_type, config_path);
+ config.cpu_type = MyGetPrivateProfileInt(_T("Control"), _T("CPUType"), config.cpu_type, config_path);
#endif
#ifdef USE_DIPSWITCH
- config.dipswitch = GetPrivateProfileInt(_T("Control"), _T("DipSwitch"), config.dipswitch, config_path);
+ config.dipswitch = MyGetPrivateProfileInt(_T("Control"), _T("DipSwitch"), config.dipswitch, config_path);
#endif
#ifdef USE_DEVICE_TYPE
- config.device_type = GetPrivateProfileInt(_T("Control"), _T("DeviceType"), config.device_type, config_path);
+ config.device_type = MyGetPrivateProfileInt(_T("Control"), _T("DeviceType"), config.device_type, config_path);
#endif
#ifdef USE_DRIVE_TYPE
- config.drive_type = GetPrivateProfileInt(_T("Control"), _T("DriveType"), config.drive_type, config_path);
+ config.drive_type = MyGetPrivateProfileInt(_T("Control"), _T("DriveType"), config.drive_type, config_path);
#endif
#ifdef USE_FD1
- config.ignore_crc = GetPrivateProfileBool(_T("Control"), _T("IgnoreCRC"), config.ignore_crc, config_path);
+ {
+ for(drv = 0; drv < MAX_FD; drv++) {
+ config.correct_disk_timing[drv] = MyGetPrivateProfileBool(_T("Control"), create_string(_T("CorrectDiskTiming%d"), drv + 1), config.correct_disk_timing[drv], config_path);
+ config.ignore_disk_crc[drv] = MyGetPrivateProfileBool(_T("Control"), create_string(_T("IgnoreDiskCRC%d"), drv + 1), config.ignore_disk_crc[drv], config_path);
+ }
+ }
#endif
+
#ifdef USE_TAPE
- config.tape_sound = GetPrivateProfileBool(_T("Control"), _T("TapeSound"), config.tape_sound, config_path);
- config.wave_shaper = GetPrivateProfileBool(_T("Control"), _T("WaveShaper"), config.wave_shaper, config_path);
- config.direct_load_mzt = GetPrivateProfileBool(_T("Control"), _T("DirectLoadMZT"), config.direct_load_mzt, config_path);
- config.baud_high = GetPrivateProfileBool(_T("Control"), _T("BaudHigh"), config.baud_high, config_path);
+ config.tape_sound = MyGetPrivateProfileBool(_T("Control"), _T("TapeSound"), config.tape_sound, config_path);
+ config.wave_shaper = MyGetPrivateProfileBool(_T("Control"), _T("WaveShaper"), config.wave_shaper, config_path);
+ config.direct_load_mzt = MyGetPrivateProfileBool(_T("Control"), _T("DirectLoadMZT"), config.direct_load_mzt, config_path);
+ config.baud_high = MyGetPrivateProfileBool(_T("Control"), _T("BaudHigh"), config.baud_high, config_path);
#endif
// recent files
#ifdef USE_CART1
- GetPrivateProfileString(_T("RecentFiles"), _T("InitialCartDir"), _T(""), config.initial_cart_dir, _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialCartDir"), _T(""), config.initial_cart_dir, _MAX_PATH, config_path);
for(drv = 0; drv < MAX_CART; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
- _stprintf_s(name, 64, _T("RecentCartPath%d_%d"), drv + 1, i + 1);
-// sprintf(name, _T("RecentCartPath%d_%d"), drv + 1, i + 1);
- GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_cart_path[drv][i], _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("RecentCartPath%d_%d"), drv + 1, i + 1), _T(""), config.recent_cart_path[drv][i], _MAX_PATH, config_path);
}
}
#endif
#ifdef USE_FD1
- GetPrivateProfileString(_T("RecentFiles"), _T("InitialDiskDir"), _T(""), config.initial_disk_dir, _MAX_PATH, config_path);
- get_parent_dir(config.initial_disk_dir);
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialDiskDir"), _T(""), config.initial_floppy_disk_dir, _MAX_PATH, config_path);
+ // get_parent_dir(config.initial_disk_dir);
for(drv = 0; drv < MAX_FD; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentDiskPath%d_%d"), drv + 1, i + 1);
- _stprintf_s(name, 64, _T("RecentDiskPath%d_%d"), drv + 1, i + 1);
- GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_disk_path[drv][i], _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("RecentDiskPath%d_%d"), drv + 1, i + 1), _T(""), config.recent_floppy_disk_path[drv][i], _MAX_PATH, config_path);
}
}
#endif
#ifdef USE_QD1
- GetPrivateProfileString(_T("RecentFiles"), _T("InitialQuickDiskDir"), _T(""), config.initial_quickdisk_dir, _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialQuickDiskDir"), _T(""), config.initial_quick_disk_dir, _MAX_PATH, config_path);
for(drv = 0; drv < MAX_QD; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentQuickDiskPath%d_%d"), drv + 1, i + 1);
- _stprintf_s(name, 64, _T("RecentQuickDiskPath%d_%d"), drv + 1, i + 1);
- GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_quickdisk_path[drv][i], _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("RecentQuickDiskPath%d_%d"), drv + 1, i + 1), _T(""), config.recent_quick_disk_path[drv][i], _MAX_PATH, config_path);
}
}
#endif
+
#ifdef USE_TAPE
- GetPrivateProfileString(_T("RecentFiles"), _T("InitialTapeDir"), _T(""), config.initial_tape_dir, _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialTapeDir"), _T(""),
+ config.initial_tape_dir, _MAX_PATH, config_path);
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentTapePath1_%d"), i + 1);
- _stprintf_s(name, 64, _T("RecentTapePath1_%d"), i + 1);
- GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_tape_path[i], _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("RecentTapePath1_%d"), i + 1), _T(""), config.recent_tape_path[i], _MAX_PATH, config_path);
}
#endif
+
#ifdef USE_LASER_DISC
- GetPrivateProfileString(_T("RecentFiles"), _T("InitialLaserDiscDir"), _T(""), config.initial_laser_disc_dir, _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialLaserDiscDir"), _T(""),
+ config.initial_laser_disc_dir, _MAX_PATH, config_path);
for(int i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentLaserDiscPath1_%d"), i + 1);
- _stprintf_s(name, 64, _T("RecentLaserDiscPath1_%d"), i + 1);
- GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_laser_disc_path[i], _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("RecentLaserDiscPath1_%d"), i + 1), _T(""), config.recent_laser_disc_path[i], _MAX_PATH, config_path);
}
#endif
#ifdef USE_BINARY_FILE1
- GetPrivateProfileString(_T("RecentFiles"), _T("InitialBinaryDir"), _T(""), config.initial_binary_dir, _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialBinaryDir"), _T(""),
+ config.initial_binary_dir, _MAX_PATH, config_path);
for(drv = 0; drv < MAX_BINARY; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
_TCHAR name[64];
-// sprintf(name, _T("RecentBinaryPath%d_%d"), drv + 1, i + 1);
- _stprintf_s(name, 64, _T("RecentBinaryPath%d_%d"), drv + 1, i + 1);
- GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_binary_path[drv][i], _MAX_PATH, config_path);
+ my_stprintf_s(name, 64, _T("RecentBinaryPath%d_%d"), drv + 1, i + 1);
+ MyGetPrivateProfileString(_T("RecentFiles"), (const _TCHAR *)name, _T(""),
+ config.recent_binary_path[drv][i], _MAX_PATH, config_path);
+ }
+ }
+#endif
+#if defined(USE_BUBBLE1)
+ MyGetPrivateProfileString(_T("RecentFiles"), _T("InitialBubbleDir"), _T(""),
+ config.initial_bubble_casette_dir, _MAX_PATH, config_path);
+ for(drv = 0; drv < MAX_BUBBLE; drv++) {
+ for(i = 0; i < MAX_HISTORY; i++) {
+ _TCHAR name[64];
+ my_stprintf_s(name, 64, _T("RecentBubblePath%d_%d"), drv + 1, i + 1);
+ MyGetPrivateProfileString(_T("RecentFiles"), (const _TCHAR *)name, _T(""),
+ config.recent_bubble_casette_path[drv][i], _MAX_PATH, config_path);
}
}
#endif
// screen
-#if !(defined(USE_BITMAP) || defined(USE_LED))
- config.window_mode = GetPrivateProfileInt(_T("Screen"), _T("WindowMode"), config.window_mode, config_path);
- config.use_d3d9 = GetPrivateProfileBool(_T("Screen"), _T("UseD3D9"), config.use_d3d9, config_path);
- config.wait_vsync = GetPrivateProfileBool(_T("Screen"), _T("WaitVSync"), config.wait_vsync, config_path);
- config.stretch_type = GetPrivateProfileInt(_T("Screen"), _T("StretchType"), config.stretch_type, config_path);
+#ifndef ONE_BOARD_MICRO_COMPUTER
+ config.window_mode = MyGetPrivateProfileInt(_T("Screen"), _T("WindowMode"), config.window_mode, config_path);
+#ifdef _WIN32
+ config.use_d3d9 = MyGetPrivateProfileBool(_T("Screen"), _T("UseD3D9"), config.use_d3d9, config_path);
+ config.wait_vsync = MyGetPrivateProfileBool(_T("Screen"), _T("WaitVSync"), config.wait_vsync, config_path);
+#endif
+//- config.stretch_type = MyGetPrivateProfileInt(_T("Screen"), _T("StretchType"), config.stretch_type, config_path);
+ config.window_stretch_type = MyGetPrivateProfileInt(_T("Screen"), _T("WindowStretchType"), config.window_stretch_type, config_path);
+ config.fullscreen_stretch_type = MyGetPrivateProfileInt(_T("Screen"), _T("FullScreenStretchType"), config.fullscreen_stretch_type, config_path);
+
+#else
+ config.window_mode = MyGetPrivateProfileInt(_T("Screen"), _T("WindowMode"), config.window_mode, config_path);
#endif
#ifdef USE_MONITOR_TYPE
- config.monitor_type = GetPrivateProfileInt(_T("Screen"), _T("MonitorType"), config.monitor_type, config_path);
+ config.monitor_type = MyGetPrivateProfileInt(_T("Screen"), _T("MonitorType"), config.monitor_type, config_path);
#endif
#ifdef USE_CRT_FILTER
- config.crt_filter = GetPrivateProfileBool(_T("Screen"), _T("CRTFilter"), config.crt_filter, config_path);
+ config.crt_filter = MyGetPrivateProfileBool(_T("Screen"), _T("CRTFilter"), config.crt_filter, config_path);
#endif
#ifdef USE_SCANLINE
- config.scan_line = GetPrivateProfileBool(_T("Screen"), _T("ScanLine"), config.scan_line, config_path);
+ config.scan_line = MyGetPrivateProfileBool(_T("Screen"), _T("ScanLine"), config.scan_line, config_path);
#endif
#ifdef USE_SCREEN_ROTATE
- config.rotate_type = GetPrivateProfileBool(_T("Screen"), _T("RotateType"), config.rotate_type, config_path);
-#endif
-
+ config.rotate_type = MyGetPrivateProfileInt(_T("Screen"), _T("RotateType"), config.rotate_type, config_path);
+#endif
+#if defined(_USE_QT)
+ config.use_opengl_scanline = MyGetPrivateProfileBool(_T("Screen"), _T("UseOpenGLScanLine"),
+ config.use_opengl_scanline, config_path);
+ config.opengl_scanline_vert = MyGetPrivateProfileBool(_T("Screen"), _T("OpenGLScanLineVert"),
+ config.opengl_scanline_vert, config_path);;
+ config.opengl_scanline_horiz = MyGetPrivateProfileBool(_T("Screen"), _T("OpenGLScanLineHoriz"),
+ config.opengl_scanline_horiz, config_path);;
+ config.use_opengl_filters = MyGetPrivateProfileBool(_T("Screen"), _T("UseOpenGLFilters"),
+ config.use_opengl_filters, config_path);
+ config.opengl_filter_num = MyGetPrivateProfileInt(_T("Screen"), _T("OpenGLFilterNum"),
+ config.opengl_filter_num, config_path);
+#endif
// sound
- config.sound_frequency = GetPrivateProfileInt(_T("Sound"), _T("Frequency"), config.sound_frequency, config_path);
- config.sound_latency = GetPrivateProfileInt(_T("Sound"), _T("Latency"), config.sound_latency, config_path);
+ config.sound_frequency = MyGetPrivateProfileInt(_T("Sound"), _T("Frequency"), config.sound_frequency, config_path);
+ config.sound_latency = MyGetPrivateProfileInt(_T("Sound"), _T("Latency"), config.sound_latency, config_path);
#ifdef USE_SOUND_DEVICE_TYPE
- config.sound_device_type = GetPrivateProfileInt(_T("Sound"), _T("DeviceType"), config.sound_device_type, config_path);
+ config.sound_device_type = MyGetPrivateProfileInt(_T("Sound"), _T("DeviceType"), config.sound_device_type, config_path);
#endif
-#if defined(DATAREC_SOUND) && defined(USE_TAPE)
-// config.cmt_sound = GetPrivateProfileBool(_T("Sound"), _T("CMT"), false, config_path);
-// config.cmt_volume = GetPrivateProfileInt(_T("Sound"), _T("CMTVolume"), 0x1800, config_path);
+#ifdef USE_SOUND_VOLUME
+ for(int i = 0; i < USE_SOUND_VOLUME; i++) {
+ int tmp_l = MyGetPrivateProfileInt(_T("Sound"), create_string(_T("VolumeLeft%d"), i + 1), config.sound_volume_l[i], config_path);
+ int tmp_r = MyGetPrivateProfileInt(_T("Sound"), create_string(_T("VolumeRight%d"), i + 1), config.sound_volume_r[i], config_path);
+#ifdef _USE_QT
+ // Note: when using balance , levels are -40±20db to 0±20db.
+ config.sound_volume_l[i] = max(-60, min(20, tmp_l));
+ config.sound_volume_r[i] = max(-60, min(20, tmp_r));
+#else
+ config.sound_volume_l[i] = max(-40, min(0, tmp_l));
+ config.sound_volume_r[i] = max(-40, min(0, tmp_r));
+#endif
+ }
#endif
-// GetPrivateProfileString(_T("Sound"), _T("FMGenDll"), _T("mamefm.dll"), config.fmgen_dll_path, _MAX_PATH, config_path);
+ MyGetPrivateProfileString(_T("Sound"), _T("FMGenDll"), _T("mamefm.dll"), config.fmgen_dll_path, _MAX_PATH, config_path);
+ config.general_sound_level = MyGetPrivateProfileInt(_T("Sound"), _T("GeneralSoundLevel"), config.general_sound_level, config_path);
+ // input
+#ifdef _WIN32
+ config.use_direct_input = MyGetPrivateProfileBool(_T("Input"), _T("UseDirectInput"), config.use_direct_input, config_path);
+ config.disable_dwm = MyGetPrivateProfileBool(_T("Input"), _T("DisableDwm"), config.disable_dwm, config_path);
+#endif
+ config.keyboard_type = MyGetPrivateProfileInt(_T("Input"), _T("KeyboardType"), config.keyboard_type, config_path);
+#ifdef USE_JOYSTICK
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 16; j++) {
+ config.joy_buttons[i][j] = MyGetPrivateProfileInt(_T("Input"), create_string(_T("JoyButtons%d_%d"), i + 1, j + 1), config.joy_buttons[i][j], config_path);
+ }
+ }
+#endif
+#if defined(_USE_QT)
+ for(i = 0; i < 16; i++) {
+ _TCHAR name[256];
+ my_stprintf_s(name, 256, _T("AssignedJoystick"), i + 1);
+ MyGetPrivateProfileString(_T("Input"), (const _TCHAR *)name, _T(""),
+ config.assigned_joystick_name[i], 256, config_path);
+ }
+#endif
+ // printer
+#ifdef USE_PRINTER
+ config.printer_device_type = MyGetPrivateProfileInt(_T("Printer"), _T("DeviceType"), config.printer_device_type, config_path);
+ MyGetPrivateProfileString(_T("Printer"), _T("PrinterDll"), _T("printer.dll"), config.printer_dll_path, _MAX_PATH, config_path);
+#endif
+#if defined(_USE_QT)
+ config.video_width = MyGetPrivateProfileInt(_T("Video"), _T("VideoWidth"), config.video_width, config_path);
+ if(config.video_width < 128) config.video_width = 128;
+ config.video_height = MyGetPrivateProfileInt(_T("Video"), _T("VideoHeight"), config.video_height, config_path);
+ if(config.video_height < 80) config.video_height = 80;
+
+ config.video_codec_type = MyGetPrivateProfileInt(_T("Video"), _T("VideoCodecType"), config.video_codec_type, config_path);
+ if(config.video_codec_type > 1) config.video_codec_type = 1;
+ if(config.video_codec_type < 0) config.video_codec_type = 0;
+
+ config.audio_codec_type = MyGetPrivateProfileInt(_T("Video"), _T("AudioCodecType"), config.audio_codec_type, config_path);
+ if(config.video_codec_type > 2) config.audio_codec_type = 2;
+ if(config.video_codec_type < 0) config.audio_codec_type = 0;
+
+ config.video_h264_bitrate = MyGetPrivateProfileInt(_T("Video"), _T("H264Bitrate"), config.video_h264_bitrate, config_path);
+ if(config.video_h264_bitrate < 64) config.video_h264_bitrate = 64;
-#if defined(_USE_AGAR) || defined(_USE_QT)
- config_path->Fclose();
- delete config_path;
- AGAR_DebugLog(AGAR_LOG_INFO, "Read Done.");
+ config.video_h264_bframes = MyGetPrivateProfileInt(_T("Video"), _T("H264BFrames"), config.video_h264_bframes, config_path);
+ if(config.video_h264_bframes < 0) config.video_h264_bframes = 0;
+ if(config.video_h264_bframes > 10) config.video_h264_bframes = 10;
+
+ config.video_h264_b_adapt = MyGetPrivateProfileInt(_T("Video"), _T("H264BAdapt"), config.video_h264_b_adapt, config_path);
+ if(config.video_h264_b_adapt < 0) config.video_h264_b_adapt = 0;
+ if(config.video_h264_b_adapt > 2) config.video_h264_b_adapt = 2;
+
+ config.video_h264_subme = MyGetPrivateProfileInt(_T("Video"), _T("H264Subme"), config.video_h264_subme, config_path);
+ if(config.video_h264_subme < 0) config.video_h264_subme = 0;
+ if(config.video_h264_subme > 11) config.video_h264_subme = 11;
+
+ config.video_h264_minq = MyGetPrivateProfileInt(_T("Video"), _T("H264MinQ"), config.video_h264_minq, config_path);
+ if(config.video_h264_minq < 0) config.video_h264_minq = 0;
+ if(config.video_h264_minq > 63) config.video_h264_minq = 63;
+
+ config.video_h264_maxq = MyGetPrivateProfileInt(_T("Video"), _T("H264MaxQ"), config.video_h264_maxq, config_path);
+ if(config.video_h264_maxq < 0) config.video_h264_maxq = 0;
+ if(config.video_h264_maxq > 63) config.video_h264_maxq = 63;
+
+ config.video_mpeg4_bitrate = MyGetPrivateProfileInt(_T("Video"), _T("MPEG4Bitrate"), config.video_mpeg4_bitrate, config_path);
+ if(config.video_mpeg4_bitrate < 64) config.video_mpeg4_bitrate = 64;
+
+ config.video_mpeg4_bframes = MyGetPrivateProfileInt(_T("Video"), _T("MPEG4BFrames"), config.video_mpeg4_bframes, config_path);
+ if(config.video_mpeg4_bframes < 0) config.video_mpeg4_bframes = 0;
+ if(config.video_mpeg4_bframes > 10) config.video_mpeg4_bframes = 10;
+
+ config.video_mpeg4_minq = MyGetPrivateProfileInt(_T("Video"), _T("MPEG4MinQ"), config.video_mpeg4_minq, config_path);
+ if(config.video_mpeg4_minq < 1) config.video_mpeg4_minq = 1;
+ if(config.video_mpeg4_minq > 31) config.video_mpeg4_minq = 31;
+
+ config.video_mpeg4_maxq = MyGetPrivateProfileInt(_T("Video"), _T("MPEG4MaxQ"), config.video_mpeg4_maxq, config_path);
+ if(config.video_mpeg4_maxq < 1) config.video_mpeg4_maxq = 1;
+ if(config.video_mpeg4_maxq > 31) config.video_mpeg4_maxq = 31;
+ if(config.video_mpeg4_maxq < config.video_mpeg4_minq) {
+ int n;
+ n = config.video_mpeg4_maxq;
+ config.video_mpeg4_maxq = config.video_mpeg4_minq;
+ config.video_mpeg4_minq = n;
+ }
+
+ config.video_threads = MyGetPrivateProfileInt(_T("Video"), _T("VideoThreads"), config.video_threads, config_path);
+ if(config.video_threads < 0) config.video_threads = 0;
+ if(config.video_threads > 16) config.video_threads = 16;
+
+ config.audio_bitrate = MyGetPrivateProfileInt(_T("Video"), _T("AudioBitrate"), config.audio_bitrate, config_path);
+ if(config.audio_bitrate < 16) config.audio_bitrate = 16;
+ if(config.audio_bitrate > 448) config.audio_bitrate = 448;
+
+ config.video_frame_rate = MyGetPrivateProfileInt(_T("Video"), _T("VideoFramerate"), config.video_frame_rate, config_path);
+ if(config.video_frame_rate < 15) config.video_frame_rate = 15;
+ if(config.video_frame_rate > 75) config.video_frame_rate = 75;
+
+#endif
+#if defined(_USE_QT)
+ config.log_to_syslog = MyGetPrivateProfileBool(_T("Emulator"), _T("WriteToSyslog"), config.log_to_syslog, config_path);
+ config.log_to_console = MyGetPrivateProfileBool(_T("Emulator"), _T("WriteToConsole"), config.log_to_console, config_path);
+ for(int ii = 0; ii < (CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1); ii++) {
+ uint32_t flags = 0;
+ flags = MyGetPrivateProfileInt(_T("Emulator"), create_string(_T("SyslogEnabled%d"), ii), 0x0000, config_path);
+ for(int jj = 0; jj < 8; jj++) {
+ config.dev_log_to_syslog[ii][jj] = ((flags & 0x0001) != 0) ? true : false;
+ csp_logger->set_device_node_log(ii, 1, jj, config.dev_log_to_syslog[ii][jj]);
+ flags >>= 1;
+ }
+ flags = 0;
+ flags = MyGetPrivateProfileInt(_T("Emulator"), create_string(_T("ConsoleLogEnabled%d"), ii), 0xffff, config_path);
+ for(int jj = 0; jj < 8; jj++) {
+ config.dev_log_to_console[ii][jj] = ((flags & 0x0001) != 0) ? true : false;
+ csp_logger->set_device_node_log(ii, 2, jj, config.dev_log_to_console[ii][jj]);
+ flags >>= 1;
+ }
+ flags = MyGetPrivateProfileInt(_T("Emulator"), create_string(_T("RecordLogEnabled%d"), ii), 0xffff, config_path);
+ for(int jj = 0; jj < 8; jj++) {
+ config.dev_log_recording[ii][jj] = ((flags & 0x0001) != 0) ? true : false;
+ csp_logger->set_device_node_log(ii, 0, jj, config.dev_log_recording[ii][jj]);
+ flags >>= 1;
+ }
+ }
+#endif
+#if defined(_USE_QT)
+ csp_logger->debug_log(CSP_LOG_INFO, CSP_LOG_TYPE_GENERAL, "Read config done.");
#endif
}
-void save_config()
+void save_config(const _TCHAR *config_path)
{
- int drv, i;
-
- // get config path
-#if defined(_USE_AGAR) || defined(_USE_QT)
- char app_path2[_MAX_PATH], *ptr;
- FILEIO *config_path = new FILEIO();
-
- app_path2[0] = '\0';
- //GetFullPathName(config_path, _MAX_PATH, app_path, &ptr);
- memset(app_path2, 0x00, _MAX_PATH);
- cpp_confdir.copy(app_path2, _MAX_PATH, 0);
-
- strncat(app_path2, CONFIG_NAME, _MAX_PATH);
- strncat(app_path2, ".ini", _MAX_PATH);
-
- AGAR_DebugLog(AGAR_LOG_INFO, "Try to write config: %s", app_path2);
- if(config_path->Fopen(app_path2, FILEIO_WRITE_ASCII) != true) return;
-#else
- _TCHAR app_path[_MAX_PATH], config_path[_MAX_PATH], *ptr;
- GetModuleFileName(NULL, config_path, _MAX_PATH);
- GetFullPathName(config_path, _MAX_PATH, app_path, &ptr);
- *ptr = _T('\0');
- _stprintf_s(config_path, _MAX_PATH, _T("%s%s.ini"), app_path, _T(CONFIG_NAME));
+ int drv, i;
+#if !defined(_MSC_VER)
+ {
+ FILEIO *pt = new FILEIO;
+ if(pt->Fopen(config_path, FILEIO_WRITE_ASCII) != true) {
+ delete pt;
+ return;
+ }
+ pt->Fclose();
+ delete pt;
+ }
+
#endif
// control
-
# ifdef USE_BOOT_MODE
- WritePrivateProfileInt(_T("Control"), _T("BootMode"), config.boot_mode, config_path);
+ MyWritePrivateProfileInt(_T("Control"), _T("BootMode"), config.boot_mode, config_path);
#endif
#ifdef USE_CPU_TYPE
- WritePrivateProfileInt(_T("Control"), _T("CPUType"), config.cpu_type, config_path);
+ MyWritePrivateProfileInt(_T("Control"), _T("CPUType"), config.cpu_type, config_path);
#endif
#ifdef USE_DIPSWITCH
- WritePrivateProfileInt(_T("Control"), _T("DipSwitch"), config.dipswitch, config_path);
+ MyWritePrivateProfileInt(_T("Control"), _T("DipSwitch"), config.dipswitch, config_path);
#endif
#ifdef USE_DEVICE_TYPE
- WritePrivateProfileInt(_T("Control"), _T("DeviceType"), config.device_type, config_path);
+ MyWritePrivateProfileInt(_T("Control"), _T("DeviceType"), config.device_type, config_path);
#endif
#ifdef USE_DRIVE_TYPE
- WritePrivateProfileInt(_T("Control"), _T("DriveType"), config.drive_type, config_path);
+ MyWritePrivateProfileInt(_T("Control"), _T("DriveType"), config.drive_type, config_path);
#endif
#ifdef USE_FD1
- WritePrivateProfileBool(_T("Control"), _T("IgnoreCRC"), config.ignore_crc, config_path);
+ {
+ for(drv = 0; drv < MAX_FD; drv++) {
+ MyWritePrivateProfileBool(_T("Control"), create_string(_T("CorrectDiskTiming%d"), drv + 1), config.correct_disk_timing[drv], config_path);
+ MyWritePrivateProfileBool(_T("Control"), create_string(_T("IgnoreDiskCRC%d"), drv + 1), config.ignore_disk_crc[drv], config_path);
+ }
+ }
+
#endif
#ifdef USE_TAPE
- WritePrivateProfileBool(_T("Control"), _T("TapeSound"), config.tape_sound, config_path);
- WritePrivateProfileBool(_T("Control"), _T("WaveShaper"), config.wave_shaper, config_path);
- WritePrivateProfileBool(_T("Control"), _T("DirectLoadMZT"), config.direct_load_mzt, config_path);
- WritePrivateProfileBool(_T("Control"), _T("BaudHigh"), config.baud_high, config_path);
+ MyWritePrivateProfileBool(_T("Control"), _T("TapeSound"), config.tape_sound, config_path);
+ MyWritePrivateProfileBool(_T("Control"), _T("WaveShaper"), config.wave_shaper, config_path);
+ MyWritePrivateProfileBool(_T("Control"), _T("DirectLoadMZT"), config.direct_load_mzt, config_path);
+ MyWritePrivateProfileBool(_T("Control"), _T("BaudHigh"), config.baud_high, config_path);
#endif
// recent files
#ifdef USE_CART1
- WritePrivateProfileString(_T("RecentFiles"), _T("InitialCartDir"), config.initial_cart_dir, config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialCartDir"), config.initial_cart_dir, config_path);
for(drv = 0; drv < MAX_CART; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
- _stprintf_s(name, 64, _T("RecentCartPath%d_%d"), drv + 1, i + 1);
-// sprintf(name, _T("RecentCartPath%d_%d"), drv + 1, i + 1);
- WritePrivateProfileString(_T("RecentFiles"), name, config.recent_cart_path[drv][i], config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentCartPath%d_%d"), drv + 1, i + 1), config.recent_cart_path[drv][i], config_path);
}
}
#endif
#ifdef USE_FD1
- WritePrivateProfileString(_T("RecentFiles"), _T("InitialDiskDir"), config.initial_disk_dir, config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialDiskDir"), config.initial_floppy_disk_dir, config_path);
for(drv = 0; drv < MAX_FD; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentDiskPath%d_%d"), drv + 1, i + 1);
- _stprintf_s(name, 64, _T("RecentDiskPath%d_%d"), drv + 1, i + 1);
- WritePrivateProfileString(_T("RecentFiles"), name, config.recent_disk_path[drv][i], config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentDiskPath%d_%d"), drv + 1, i + 1), config.recent_floppy_disk_path[drv][i], config_path);
}
}
#endif
#ifdef USE_QD1
- WritePrivateProfileString(_T("RecentFiles"), _T("InitialQuickDiskDir"), config.initial_quickdisk_dir, config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialQuickDiskDir"), config.initial_quick_disk_dir, config_path);
for(drv = 0; drv < MAX_QD; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
- _stprintf_s(name, 64, _T("RecentQuickDiskPath%d_%d"), drv + 1, i + 1);
-// sprintf(name, _T("RecentQuickDiskPath%d_%d"), drv + 1, i + 1);
- WritePrivateProfileString(_T("RecentFiles"), name, config.recent_quickdisk_path[drv][i], config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentQuickDiskPath%d_%d"), drv + 1, i + 1), config.recent_quick_disk_path[drv][i], config_path);
}
}
#endif
#ifdef USE_TAPE
- WritePrivateProfileString(_T("RecentFiles"), _T("InitialTapeDir"), config.initial_tape_dir, config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialTapeDir"), config.initial_tape_dir, config_path);
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentTapePath1_%d"), i + 1);
- _stprintf_s(name, 64, _T("RecentTapePath1_%d"), i + 1);
- WritePrivateProfileString(_T("RecentFiles"), name, config.recent_tape_path[i], config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentTapePath1_%d"), i + 1), config.recent_tape_path[i], config_path);
+ }
+#endif
+#ifdef USE_COMPACT_DISC
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialCompactDiscDir"), config.initial_compact_disc_dir, config_path);
+ for(int i = 0; i < MAX_HISTORY; i++) {
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentCompactDiscPath1_%d"), i + 1), config.recent_compact_disc_path[i], config_path);
}
#endif
#ifdef USE_LASER_DISC
- WritePrivateProfileString(_T("RecentFiles"), _T("InitialLaserDiscDir"), config.initial_laser_disc_dir, config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialLaserDiscDir"), config.initial_laser_disc_dir, config_path);
for(int i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentLaserDiscPath1_%d"), i + 1);
- _stprintf_s(name, 64, _T("RecentLaserDiscPath1_%d"), i + 1);
- WritePrivateProfileString(_T("RecentFiles"), name, config.recent_laser_disc_path[i], config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentLaserDiscPath1_%d"), i + 1), config.recent_laser_disc_path[i], config_path);
}
#endif
#ifdef USE_BINARY_FILE1
- WritePrivateProfileString(_T("RecentFiles"), _T("InitialBinaryDir"), config.initial_binary_dir, config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialBinaryDir"), config.initial_binary_dir, config_path);
for(drv = 0; drv < MAX_BINARY; drv++) {
for(i = 0; i < MAX_HISTORY; i++) {
- _TCHAR name[64];
-// sprintf(name, _T("RecentBinaryPath%d_%d"), drv + 1, i + 1);
- _stprintf_s(name, 64, _T("RecentBinaryPath%d_%d"), drv + 1, i + 1);
- WritePrivateProfileString(_T("RecentFiles"), name, config.recent_binary_path[drv][i], config_path);
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentBinaryPath%d_%d"), drv + 1, i + 1), config.recent_binary_path[drv][i], config_path);
+ }
+ }
+#endif
+#if defined(USE_BUBBLE1)
+ MyWritePrivateProfileString(_T("RecentFiles"), _T("InitialBubbleDir"), config.initial_bubble_casette_dir, config_path);
+ for(drv = 0; drv < MAX_BUBBLE; drv++) {
+ for(i = 0; i < MAX_HISTORY; i++) {
+ MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentBubblePath%d_%d"), drv + 1, i + 1), config.recent_bubble_casette_path[drv][i], config_path);
}
}
#endif
+#if defined(_USE_QT)
+ config.use_opengl_scanline = MyGetPrivateProfileBool(_T("Screen"), _T("UseOpenGLScanLine"), config.use_opengl_scanline, config_path);
+ config.opengl_scanline_vert = MyGetPrivateProfileBool(_T("Screen"), _T("OpenGLScanLineVert"), config.opengl_scanline_vert, config_path);;
+ config.opengl_scanline_horiz = MyGetPrivateProfileBool(_T("Screen"), _T("OpenGLScanLineHoriz"), config.opengl_scanline_horiz, config_path);;
+ config.use_opengl_filters = MyGetPrivateProfileBool(_T("Screen"), _T("UseOpenGLFilters"), config.use_opengl_filters, config_path);
+ config.opengl_filter_num = MyGetPrivateProfileInt(_T("Screen"), _T("OpenGLFilterNum"), config.opengl_filter_num, config_path);
+#endif
// screen
-#if !(defined(USE_BITMAP) || defined(USE_LED))
- WritePrivateProfileInt(_T("Screen"), _T("WindowMode"), config.window_mode, config_path);
- WritePrivateProfileBool(_T("Screen"), _T("UseD3D9"), config.use_d3d9, config_path);
- WritePrivateProfileBool(_T("Screen"), _T("WaitVSync"), config.wait_vsync, config_path);
- WritePrivateProfileInt(_T("Screen"), _T("StretchType"), config.stretch_type, config_path);
+#ifndef ONE_BOARD_MICRO_COMPUTER
+ MyWritePrivateProfileInt(_T("Screen"), _T("WindowMode"), config.window_mode, config_path);
+#ifdef _WIN32
+ MyWritePrivateProfileBool(_T("Screen"), _T("UseD3D9"), config.use_d3d9, config_path);
+ MyWritePrivateProfileBool(_T("Screen"), _T("WaitVSync"), config.wait_vsync, config_path);
+#endif
+ //MyWritePrivateProfileInt(_T("Screen"), _T("StretchType"), config.stretch_type, config_path);
+ MyWritePrivateProfileInt(_T("Screen"), _T("WindowStretchType"), config.window_stretch_type, config_path);
+ MyWritePrivateProfileInt(_T("Screen"), _T("FullScreenStretchType"), config.fullscreen_stretch_type, config_path);
+
+#else
+ MyWritePrivateProfileInt(_T("Screen"), _T("WindowMode"), config.window_mode, config_path);
#endif
#ifdef USE_MONITOR_TYPE
- WritePrivateProfileInt(_T("Screen"), _T("MonitorType"), config.monitor_type, config_path);
+ MyWritePrivateProfileInt(_T("Screen"), _T("MonitorType"), config.monitor_type, config_path);
#endif
#ifdef USE_CRT_FILTER
- WritePrivateProfileBool(_T("Screen"), _T("CRTFilter"), config.crt_filter, config_path);
+ MyWritePrivateProfileBool(_T("Screen"), _T("CRTFilter"), config.crt_filter, config_path);
#endif
#ifdef USE_SCANLINE
- WritePrivateProfileBool(_T("Screen"), _T("ScanLine"), config.scan_line, config_path);
+ MyWritePrivateProfileBool(_T("Screen"), _T("ScanLine"), config.scan_line, config_path);
#endif
#ifdef USE_SCREEN_ROTATE
- WritePrivateProfileBool(_T("Screen"), _T("RotateType"), config.rotate_type, config_path);
-#endif
+ MyWritePrivateProfileInt(_T("Screen"), _T("RotateType"), config.rotate_type, config_path);
+#endif
+#if defined(_USE_QT)
+ MyWritePrivateProfileBool(_T("Screen"), _T("UseOpenGLScanLine"),
+ config.use_opengl_scanline, config_path);
+ MyWritePrivateProfileBool(_T("Screen"), _T("OpenGLScanLineVert"),
+ config.opengl_scanline_vert, config_path);;
+ MyWritePrivateProfileBool(_T("Screen"), _T("OpenGLScanLineHoriz"),
+ config.opengl_scanline_horiz, config_path);;
+ MyWritePrivateProfileBool(_T("Screen"), _T("UseOpenGLFilters"),
+ config.use_opengl_filters, config_path);
+ MyWritePrivateProfileInt(_T("Screen"), _T("OpenGLFilterNum"),
+ config.opengl_filter_num, config_path);
+#endif
// sound
- WritePrivateProfileInt(_T("Sound"), _T("Frequency"), config.sound_frequency, config_path);
- WritePrivateProfileInt(_T("Sound"), _T("Latency"), config.sound_latency, config_path);
+ MyWritePrivateProfileInt(_T("Sound"), _T("Frequency"), config.sound_frequency, config_path);
+ MyWritePrivateProfileInt(_T("Sound"), _T("Latency"), config.sound_latency, config_path);
#ifdef USE_SOUND_DEVICE_TYPE
- WritePrivateProfileInt(_T("Sound"), _T("DeviceType"), config.sound_device_type, config_path);
+ MyWritePrivateProfileInt(_T("Sound"), _T("DeviceType"), config.sound_device_type, config_path);
+#endif
+#ifdef USE_SOUND_VOLUME
+ for(int i = 0; i < USE_SOUND_VOLUME; i++) {
+ MyWritePrivateProfileInt(_T("Sound"), create_string(_T("VolumeLeft%d"), i + 1), config.sound_volume_l[i], config_path);
+ MyWritePrivateProfileInt(_T("Sound"), create_string(_T("VolumeRight%d"), i + 1), config.sound_volume_r[i], config_path);
+ }
+#endif
+
+ MyWritePrivateProfileString(_T("Sound"), _T("FMGenDll"), config.fmgen_dll_path, config_path);
+ MyWritePrivateProfileInt(_T("Sound"), _T("GeneralSoundLevel"), config.general_sound_level, config_path);
+ // input
+#ifdef _WIN32
+ MyWritePrivateProfileBool(_T("Input"), _T("UseDirectInput"), config.use_direct_input, config_path);
+ MyWritePrivateProfileBool(_T("Input"), _T("DisableDwm"), config.disable_dwm, config_path);
#endif
-#if defined(DATAREC_SOUND) && defined(USE_TAPE)
-// WritePrivateProfileBool(_T("Sound"), _T("CMT"), config.cmt_sound, config_path);
-// WritePrivateProfileInt(_T("Sound"), _T("CMTVolume"), config.cmt_volume, config_path);
+ MyWritePrivateProfileInt(_T("Input"), _T("KeyboardType"), config.keyboard_type, config_path);
+#ifdef USE_JOYSTICK
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 16; j++) {
+ MyWritePrivateProfileInt(_T("Input"), create_string(_T("JoyButtons%d_%d"), i + 1, j + 1), config.joy_buttons[i][j], config_path);
+ }
+ }
+#endif
+#if defined(_USE_QT)
+ for(i = 0; i < 16; i++) {
+ _TCHAR name[256];
+ my_stprintf_s(name, 256, _T("AssignedJoystick%d"), i + 1);
+ MyWritePrivateProfileString(_T("Input"), (const _TCHAR *)name,
+ config.assigned_joystick_name[i], config_path);
+ }
+#endif
+
+ // printer
+#ifdef USE_PRINTER
+ MyWritePrivateProfileInt(_T("Printer"), _T("DeviceType"), config.printer_device_type, config_path);
+#endif
+#if defined(_USE_QT)
+ MyWritePrivateProfileInt(_T("Video"), _T("VideoWidth"), config.video_width, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("VideoHeight"), config.video_height, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("VideoCodecType"), config.video_codec_type, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("AudioCodecType"), config.audio_codec_type, config_path);
+
+ MyWritePrivateProfileInt(_T("Video"), _T("H264Bitrate"), config.video_h264_bitrate, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("H264BFrames"), config.video_h264_bframes, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("H264BAdapt"), config.video_h264_b_adapt, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("H264MinQ"), config.video_h264_minq, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("H264MaxQ"), config.video_h264_maxq, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("H264Subme"), config.video_h264_subme, config_path);
+
+ MyWritePrivateProfileInt(_T("Video"), _T("MPEG4Bitrate"), config.video_mpeg4_bitrate, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("MPEG4BFrames"), config.video_mpeg4_bframes, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("MPEG4MinQ"), config.video_mpeg4_minq, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("MPEG4MaxQ"), config.video_mpeg4_maxq, config_path);
+
+ MyWritePrivateProfileInt(_T("Video"), _T("VideoThreads"), config.video_threads, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("AudioBitrate"), config.audio_bitrate, config_path);
+ MyWritePrivateProfileInt(_T("Video"), _T("VideoFramerate"), config.video_frame_rate, config_path);
+#endif
+#if defined(_USE_QT)
+ MyWritePrivateProfileBool(_T("Emulator"), _T("WriteToSyslog"), config.log_to_syslog, config_path);
+ MyWritePrivateProfileBool(_T("Emulator"), _T("WriteToConsole"), config.log_to_console, config_path);
+
+ for(int ii = 0; ii < (CSP_LOG_TYPE_VM_DEVICE_END - CSP_LOG_TYPE_VM_DEVICE_0 + 1); ii++) {
+ uint32_t flags = 0;
+ flags = 0;
+ for(int jj = 0; jj < 8; jj++) {
+ flags <<= 1;
+ if(config.dev_log_to_syslog[ii][jj]) flags |= 0x0001;
+ }
+ flags = MyWritePrivateProfileInt(_T("Emulator"), create_string(_T("SyslogEnabled%d"), ii), flags, config_path);
+
+ flags = 0;
+ for(int jj = 0; jj < 8; jj++) {
+ flags <<= 1;
+ if(config.dev_log_to_console[ii][jj]) flags |= 0x0001;
+ }
+ flags = MyWritePrivateProfileInt(_T("Emulator"), create_string(_T("ConsoleLogEnabled%d"), ii), flags, config_path);
+
+ flags = 0;
+ for(int jj = 0; jj < 8; jj++) {
+ flags <<= 1;
+ if(config.dev_log_recording[ii][jj]) flags |= 0x0001;
+ }
+ flags = MyWritePrivateProfileInt(_T("Emulator"), create_string(_T("RecordLogEnabled%d"), ii), flags, config_path);
+ }
#endif
-#if defined(_USE_AGAR) || defined(_USE_QT)
- config_path->Fclose();
- delete config_path;
- AGAR_DebugLog(AGAR_LOG_INFO, "Write done.");
+#if defined(_USE_QT) && !defined(Q_OS_WIN)
+ csp_logger->debug_log(CSP_LOG_INFO, CSP_LOG_TYPE_GENERAL, "Write config done.");
#endif
+
}
-#define STATE_VERSION 1
+#define STATE_VERSION 5
void save_config_state(void *f)
{
FILEIO *state_fio = (FILEIO *)f;
+ int drv;
state_fio->FputUint32(STATE_VERSION);
state_fio->FputInt32(config.drive_type);
#endif
#ifdef USE_FD1
- state_fio->FputBool(config.ignore_crc);
+ for(int drv = 0; drv < MAX_FD; drv++) {
+ state_fio->FputBool(config.correct_disk_timing[drv]);
+ state_fio->FputBool(config.ignore_disk_crc[drv]);
+ }
+// for(int drv = 0; drv < MAX_FD; drv++) {
+// state_fio->FputBool(config.fdd_hack_fast_transfer[drv]);
+// }
#endif
#ifdef USE_MONITOR_TYPE
state_fio->FputInt32(config.monitor_type);
#ifdef USE_SOUND_DEVICE_TYPE
state_fio->FputInt32(config.sound_device_type);
#endif
+#ifdef USE_PRINTER
+ state_fio->FputInt32(config.printer_device_type);
+#endif
+ state_fio->FputInt32(config.keyboard_type);
}
bool load_config_state(void *f)
config.drive_type = state_fio->FgetInt32();
#endif
#ifdef USE_FD1
- config.ignore_crc = state_fio->FgetBool();
+ for(int drv = 0; drv < MAX_FD; drv++) {
+ config.correct_disk_timing[drv] = state_fio->FgetBool();
+ config.ignore_disk_crc[drv] = state_fio->FgetBool();
+ }
+// for(int drv = 0; drv < MAX_FD; drv++) {
+// config.fdd_hack_fast_transfer[drv] = state_fio->FgetBool();
+// }
#endif
#ifdef USE_MONITOR_TYPE
config.monitor_type = state_fio->FgetInt32();
#ifdef USE_SOUND_DEVICE_TYPE
config.sound_device_type = state_fio->FgetInt32();
#endif
+#ifdef USE_PRINTER
+ config.printer_device_type = state_fio->FgetInt32();
+#endif
+ config.keyboard_type = state_fio->FgetInt32();
return true;
}