summaryrefslogtreecommitdiff
path: root/win32/plugins/dfsound/winsrc/cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'win32/plugins/dfsound/winsrc/cfg.c')
-rw-r--r--win32/plugins/dfsound/winsrc/cfg.c256
1 files changed, 256 insertions, 0 deletions
diff --git a/win32/plugins/dfsound/winsrc/cfg.c b/win32/plugins/dfsound/winsrc/cfg.c
new file mode 100644
index 00000000..4ac6ee94
--- /dev/null
+++ b/win32/plugins/dfsound/winsrc/cfg.c
@@ -0,0 +1,256 @@
+/***************************************************************************
+ cfg.c - description
+ -------------------
+ begin : Wed May 15 2002
+ copyright : (C) 2002 by Pete Bernert
+ email : BlackDove@addcom.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. See also the license.txt file for *
+ * additional informations. *
+ * *
+ ***************************************************************************/
+
+#include "stdafx.h"
+
+#define _IN_CFG
+
+#include "externals.h"
+
+////////////////////////////////////////////////////////////////////////
+// WINDOWS CONFIG/ABOUT HANDLING
+////////////////////////////////////////////////////////////////////////
+
+#include "resource.h"
+
+////////////////////////////////////////////////////////////////////////
+// simple about dlg handler
+////////////////////////////////////////////////////////////////////////
+
+BOOL CALLBACK AboutDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch(uMsg)
+ {
+ case WM_COMMAND:
+ {
+ switch(LOWORD(wParam))
+ {case IDOK: EndDialog(hW,TRUE);return TRUE;}
+ }
+ }
+ return FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////
+// READ CONFIG: from win registry
+////////////////////////////////////////////////////////////////////////
+
+void ReadConfig(void)
+{
+ HKEY myKey;
+ DWORD temp;
+ DWORD type;
+ DWORD size;
+
+ iVolume=1; // init vars
+ iXAPitch=1;
+ iUseTimer=2;
+ iSPUIRQWait=1;
+ iDebugMode=0;
+ iRecordMode=0;
+ iUseReverb=2;
+ iUseInterpolation=2;
+ iDisStereo=0;
+
+ if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Vision Thing\\PSEmu Pro\\SPU\\PeopsSound",0,KEY_ALL_ACCESS,&myKey)==ERROR_SUCCESS)
+ {
+ size = 4;
+ if(RegQueryValueEx(myKey,"Volume",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iVolume=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"XAPitch",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iXAPitch=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"UseTimer",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iUseTimer=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"SPUIRQWait",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iSPUIRQWait=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"DebugMode",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iDebugMode=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"RecordMode",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iRecordMode=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"UseReverb",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iUseReverb=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"UseInterpolation",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iUseInterpolation=(int)temp;
+ size = 4;
+ if(RegQueryValueEx(myKey,"DisStereo",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
+ iDisStereo=(int)temp;
+
+ RegCloseKey(myKey);
+ }
+
+ if(iUseTimer>2) iUseTimer=2; // some checks
+ if(iVolume<1) iVolume=1;
+ if(iVolume>4) iVolume=4;
+}
+
+////////////////////////////////////////////////////////////////////////
+// WRITE CONFIG: in win registry
+////////////////////////////////////////////////////////////////////////
+
+void WriteConfig(void)
+{
+ HKEY myKey;
+ DWORD myDisp;
+ DWORD temp;
+
+ RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Vision Thing\\PSEmu Pro\\SPU\\PeopsSound",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&myKey,&myDisp);
+ temp=iVolume;
+ RegSetValueEx(myKey,"Volume",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iXAPitch;
+ RegSetValueEx(myKey,"XAPitch",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iUseTimer;
+ RegSetValueEx(myKey,"UseTimer",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iSPUIRQWait;
+ RegSetValueEx(myKey,"SPUIRQWait",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iDebugMode;
+ RegSetValueEx(myKey,"DebugMode",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iRecordMode;
+ RegSetValueEx(myKey,"RecordMode",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iUseReverb;
+ RegSetValueEx(myKey,"UseReverb",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iUseInterpolation;
+ RegSetValueEx(myKey,"UseInterpolation",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+ temp=iDisStereo;
+ RegSetValueEx(myKey,"DisStereo",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
+
+ RegCloseKey(myKey);
+}
+
+////////////////////////////////////////////////////////////////////////
+// INIT WIN CFG DIALOG
+////////////////////////////////////////////////////////////////////////
+
+BOOL OnInitDSoundDialog(HWND hW)
+{
+ HWND hWC;
+
+ ReadConfig();
+
+ if(iXAPitch) CheckDlgButton(hW,IDC_XAPITCH,TRUE);
+
+ hWC=GetDlgItem(hW,IDC_VOLUME);
+ ComboBox_AddString(hWC, "0: low");
+ ComboBox_AddString(hWC, "1: medium");
+ ComboBox_AddString(hWC, "2: loud");
+ ComboBox_AddString(hWC, "3: loudest");
+ ComboBox_SetCurSel(hWC,4-iVolume);
+
+ if(iSPUIRQWait) CheckDlgButton(hW,IDC_IRQWAIT,TRUE);
+ if(iDebugMode) CheckDlgButton(hW,IDC_DEBUGMODE,TRUE);
+ if(iRecordMode) CheckDlgButton(hW,IDC_RECORDMODE,TRUE);
+ if(iDisStereo) CheckDlgButton(hW,IDC_DISSTEREO,TRUE);
+
+ hWC=GetDlgItem(hW,IDC_USETIMER);
+ ComboBox_AddString(hWC, "0: Fast mode (thread, less compatible spu timing)");
+ ComboBox_AddString(hWC, "1: High compatibility mode (timer event, slower)");
+ ComboBox_AddString(hWC, "2: Use SPUasync (must be supported by the emu)");
+ ComboBox_SetCurSel(hWC,iUseTimer);
+
+ hWC=GetDlgItem(hW,IDC_USEREVERB);
+ ComboBox_AddString(hWC, "0: No reverb (fastest)");
+ ComboBox_AddString(hWC, "1: Simple reverb (fakes the most common effects)");
+ ComboBox_AddString(hWC, "2: PSX reverb (best quality)");
+ ComboBox_SetCurSel(hWC,iUseReverb);
+
+ hWC=GetDlgItem(hW,IDC_INTERPOL);
+ ComboBox_AddString(hWC, "0: None (fastest)");
+ ComboBox_AddString(hWC, "1: Simple interpolation");
+ ComboBox_AddString(hWC, "2: Gaussian interpolation (good quality)");
+ ComboBox_AddString(hWC, "3: Cubic interpolation (better treble)");
+ ComboBox_SetCurSel(hWC,iUseInterpolation);
+
+ return TRUE;
+}
+
+////////////////////////////////////////////////////////////////////////
+// WIN CFG DLG OK
+////////////////////////////////////////////////////////////////////////
+
+void OnDSoundOK(HWND hW)
+{
+ HWND hWC;
+
+ if(IsDlgButtonChecked(hW,IDC_XAPITCH))
+ iXAPitch=1; else iXAPitch=0;
+
+ hWC=GetDlgItem(hW,IDC_VOLUME);
+ iVolume=4-ComboBox_GetCurSel(hWC);
+
+ hWC=GetDlgItem(hW,IDC_USETIMER);
+ iUseTimer=ComboBox_GetCurSel(hWC);
+
+ hWC=GetDlgItem(hW,IDC_USEREVERB);
+ iUseReverb=ComboBox_GetCurSel(hWC);
+
+ hWC=GetDlgItem(hW,IDC_INTERPOL);
+ iUseInterpolation=ComboBox_GetCurSel(hWC);
+
+ if(IsDlgButtonChecked(hW,IDC_IRQWAIT))
+ iSPUIRQWait=1; else iSPUIRQWait=0;
+
+ if(IsDlgButtonChecked(hW,IDC_DEBUGMODE))
+ iDebugMode=1; else iDebugMode=0;
+
+ if(IsDlgButtonChecked(hW,IDC_RECORDMODE))
+ iRecordMode=1; else iRecordMode=0;
+
+ if(IsDlgButtonChecked(hW,IDC_DISSTEREO))
+ iDisStereo=1; else iDisStereo=0;
+
+ WriteConfig(); // write registry
+
+ EndDialog(hW,TRUE);
+}
+
+////////////////////////////////////////////////////////////////////////
+// WIN CFG DLG CANCEL
+////////////////////////////////////////////////////////////////////////
+
+void OnDSoundCancel(HWND hW)
+{
+ EndDialog(hW,FALSE);
+}
+
+////////////////////////////////////////////////////////////////////////
+// WIN CFG PROC
+////////////////////////////////////////////////////////////////////////
+
+BOOL CALLBACK DSoundDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch(uMsg)
+ {
+ case WM_INITDIALOG:
+ return OnInitDSoundDialog(hW);
+
+ case WM_COMMAND:
+ {
+ switch(LOWORD(wParam))
+ {
+ case IDCANCEL: OnDSoundCancel(hW);return TRUE;
+ case IDOK: OnDSoundOK(hW); return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}