pcsx2/plugins/spu2ghz/config.cpp

581 lines
19 KiB
C++
Raw Blame History

///GiGaHeRz's SPU2 Driver
//Copyright (c) 2003-2008, David Quintana <gigaherz@gmail.com>
//
//This library is free software; you can redistribute it and/or
//modify it under the terms of the GNU Lesser General Public
//License as published by the Free Software Foundation; either
//version 2.1 of the License, or (at your option) any later version.
//
//This library is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
//Lesser General Public License for more details.
//
//You should have received a copy of the GNU Lesser General Public
//License along with this library; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
#include "spu2.h"
#include "dialogs.h"
// Config Vars
// DEBUG
bool DebugEnabled=false;
bool MsgToConsole=false;
bool MsgKeyOnOff=false;
bool MsgVoiceOff=false;
bool MsgDMA=false;
bool MsgAutoDMA=false;
bool AccessLog=false;
bool DMALog=false;
bool WaveLog=false;
bool CoresDump=false;
bool MemDump=false;
bool RegDump=false;
char AccessLogFileName[255];
char WaveLogFileName[255];
char DMA4LogFileName[255];
char DMA7LogFileName[255];
char CoresDumpFileName[255];
char MemDumpFileName[255];
char RegDumpFileName[255];
int WaveDumpFormat;
int AutoDMAPlayRate[2]={0,0};
// MIXING
int Interpolation=1;
/* values:
0: no interpolation (use nearest)
1. linear interpolation
2. cubic interpolation
*/
// EFFECTS
bool EffectsEnabled=false;
// OUTPUT
int SampleRate=48000;
int CurBufferSize=1024;
int MaxBufferCount=8;
int CurBufferCount=MaxBufferCount;
int OutputModule=OUTPUT_DSOUND;
int VolumeMultiplier=1;
int VolumeDivisor=1;
int LimitMode=0;
/* values:
0. No limiter
1. Soft limiter -- less cpu-intensive, but can cause problems
2. Hard limiter -- more cpu-intensive while limiting, but should give better (constant) speeds
*/
u32 GainL =256;
u32 GainR =256;
u32 GainSL =200;
u32 GainSR =200;
u32 GainC =200;
u32 GainLFE=256;
u32 AddCLR = 56;
u32 LowpassLFE=80;
// MISC
bool LimiterToggleEnabled=true;
int LimiterToggle=VK_SUBTRACT;
// DSP
bool dspPluginEnabled=false;
char dspPlugin[256];
int dspPluginModule=0;
bool timeStretchEnabled=false;
// OUTPUT MODULES
char AsioDriver[129]="";
/// module-specific settings
char DSoundDevice[255];
//////
char CfgFile[]="inis\\SPU2Ghz.ini";
/*| Config File Format: |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*\
+--+---------------------+------------------------+
| |
| Option=Value |
| |
| |
| Boolean Values: TRUE,YES,1,T,Y mean 'true', |
| everything else means 'false'. |
| |
| All Values are limited to 255 chars. |
| |
+-------------------------------------------------+
\*_____________________________________________*/
void CfgWriteBool(char *Section, char*Name, bool Value) {
char *Data=Value?"TRUE":"FALSE";
WritePrivateProfileString(Section,Name,Data,CfgFile);
}
void CfgWriteInt(char *Section, char*Name, int Value) {
char Data[255];
_itoa(Value,Data,10);
WritePrivateProfileString(Section,Name,Data,CfgFile);
}
void CfgWriteStr(char *Section, char*Name,char *Data) {
WritePrivateProfileString(Section,Name,Data,CfgFile);
}
/*****************************************************************************/
bool CfgReadBool(char *Section,char *Name,bool Default) {
char Data[255]="";
GetPrivateProfileString(Section,Name,"",Data,255,CfgFile);
Data[254]=0;
if(strlen(Data)==0) {
CfgWriteBool(Section,Name,Default);
return Default;
}
if(strcmp(Data,"1")==0) return true;
if(strcmp(Data,"Y")==0) return true;
if(strcmp(Data,"T")==0) return true;
if(strcmp(Data,"YES")==0) return true;
if(strcmp(Data,"TRUE")==0) return true;
return false;
}
int CfgReadInt(char *Section, char*Name,int Default) {
char Data[255]="";
GetPrivateProfileString(Section,Name,"",Data,255,CfgFile);
Data[254]=0;
if(strlen(Data)==0) {
CfgWriteInt(Section,Name,Default);
return Default;
}
return atoi(Data);
}
void CfgReadStr(char *Section, char*Name,char *Data,int DataSize,char *Default) {
int sl;
GetPrivateProfileString(Section,Name,"",Data,DataSize,CfgFile);
if(strlen(Data)==0) {
sl=(int)strlen(Default);
strncpy(Data,Default,sl>255?255:sl);
CfgWriteStr(Section,Name,Data);
}
}
/*****************************************************************************/
void ReadSettings()
{
DebugEnabled=CfgReadBool("DEBUG","Global_Debug_Enabled",0);
MsgToConsole=DebugEnabled&CfgReadBool("DEBUG","Show_Messages",0);
MsgKeyOnOff =DebugEnabled&MsgToConsole&CfgReadBool("DEBUG","Show_Messages_Key_On_Off",0);
MsgVoiceOff =DebugEnabled&MsgToConsole&CfgReadBool("DEBUG","Show_Messages_Voice_Off",0);
MsgDMA =DebugEnabled&MsgToConsole&CfgReadBool("DEBUG","Show_Messages_DMA_Transfer",0);
MsgAutoDMA =DebugEnabled&MsgToConsole&CfgReadBool("DEBUG","Show_Messages_AutoDMA",0);
AccessLog =DebugEnabled&CfgReadBool("DEBUG","Log_Register_Access",0);
DMALog =DebugEnabled&CfgReadBool("DEBUG","Log_DMA_Transfers",0);
WaveLog =DebugEnabled&CfgReadBool("DEBUG","Log_WAVE_Output",0);
CoresDump =DebugEnabled&CfgReadBool("DEBUG","Dump_Info",0);
MemDump =DebugEnabled&CfgReadBool("DEBUG","Dump_Memory",0);
RegDump =DebugEnabled&CfgReadBool("DEBUG","Dump_Regs",0);
CfgReadStr("DEBUG","Access_Log_Filename",AccessLogFileName,255,"logs\\SPU2Log.txt");
CfgReadStr("DEBUG","WaveLog_Filename", WaveLogFileName, 255,"logs\\SPU2log.wav");
CfgReadStr("DEBUG","DMA4Log_Filename", DMA4LogFileName, 255,"logs\\SPU2dma4.dat");
CfgReadStr("DEBUG","DMA7Log_Filename", DMA7LogFileName, 255,"logs\\SPU2dma7.dat");
CfgReadStr("DEBUG","Info_Dump_Filename",CoresDumpFileName,255,"logs\\SPU2Cores.txt");
CfgReadStr("DEBUG","Mem_Dump_Filename", MemDumpFileName, 255,"logs\\SPU2mem.dat");
CfgReadStr("DEBUG","Reg_Dump_Filename", RegDumpFileName, 255,"logs\\SPU2regs.dat");
WaveDumpFormat=CfgReadInt("DEBUG","Wave_Log_Format",0);
Interpolation=CfgReadInt("MIXING","Interpolation",1);
AutoDMAPlayRate[0]=CfgReadInt("MIXING","AutoDMA_Play_Rate_0",0);
AutoDMAPlayRate[1]=CfgReadInt("MIXING","AutoDMA_Play_Rate_1",0);
EffectsEnabled=CfgReadBool("EFFECTS","Enable_Effects",0);
SampleRate=CfgReadInt("OUTPUT","Sample_Rate",48000);
CurBufferSize=CfgReadInt("OUTPUT","Buffer_Size",1024);
MaxBufferCount=CfgReadInt("OUTPUT","Buffer_Count",8);
if(MaxBufferCount<3) MaxBufferCount=3;
CurBufferCount=MaxBufferCount;
OutputModule=CfgReadInt("OUTPUT","Output_Module",OUTPUT_DSOUND);
VolumeMultiplier=CfgReadInt("OUTPUT","Volume_Multiplier",1);
VolumeDivisor =CfgReadInt("OUTPUT","Volume_Divisor",1);
GainL =CfgReadInt("OUTPUT","Channel_Gain_L", 256);
GainR =CfgReadInt("OUTPUT","Channel_Gain_R", 256);
GainC =CfgReadInt("OUTPUT","Channel_Gain_C", 256);
GainLFE=CfgReadInt("OUTPUT","Channel_Gain_LFE",256);
GainSL =CfgReadInt("OUTPUT","Channel_Gain_SL", 200);
GainSR =CfgReadInt("OUTPUT","Channel_Gain_SR", 200);
AddCLR =CfgReadInt("OUTPUT","Channel_Center_In_LR", 56);
LowpassLFE = CfgReadInt("OUTPUT","LFE_Lowpass_Frequency", 80);
LimitMode=CfgReadInt("OUTPUT","Speed_Limit_Mode",0);
CfgReadStr("OUTPUT","Asio_Driver_Name",AsioDriver,128,"");
CfgReadStr("DSP PLUGIN","Filename",dspPlugin,255,"");
dspPluginModule = CfgReadInt("DSP PLUGIN","ModuleNum",0);
dspPluginEnabled= CfgReadBool("DSP PLUGIN","Enabled",false);
timeStretchEnabled = CfgReadBool("DSP","Timestretch_Enable",false);
LimiterToggleEnabled = CfgReadBool("KEYS","Limiter_Toggle_Enabled",true);
LimiterToggle = CfgReadInt ("KEYS","Limiter_Toggle",VK_SUBTRACT);
CfgReadStr("DirectSound Output (Stereo)","Device",DSoundDevice,255,"");
if(VolumeMultiplier<0) VolumeMultiplier=-VolumeMultiplier;
else if(VolumeMultiplier==0) VolumeMultiplier=1;
if(VolumeDivisor<0) VolumeDivisor=-VolumeDivisor;
else if(VolumeDivisor==0) VolumeDivisor=1;
}
/*****************************************************************************/
void WriteSettings()
{
CfgWriteBool("DEBUG","Global_Debug_Enabled",DebugEnabled);
if(DebugEnabled) {
CfgWriteBool("DEBUG","Show_Messages", MsgToConsole);
CfgWriteBool("DEBUG","Show_Messages_Key_On_Off", MsgKeyOnOff);
CfgWriteBool("DEBUG","Show_Messages_Voice_Off", MsgVoiceOff);
CfgWriteBool("DEBUG","Show_Messages_DMA_Transfer",MsgDMA);
CfgWriteBool("DEBUG","Show_Messages_AutoDMA", MsgAutoDMA);
CfgWriteBool("DEBUG","Log_Register_Access",AccessLog);
CfgWriteBool("DEBUG","Log_DMA_Transfers", DMALog);
CfgWriteBool("DEBUG","Log_WAVE_Output", WaveLog);
CfgWriteBool("DEBUG","Dump_Info", CoresDump);
CfgWriteBool("DEBUG","Dump_Memory",MemDump);
CfgWriteBool("DEBUG","Dump_Regs", RegDump);
CfgWriteStr("DEBUG","Access_Log_Filename",AccessLogFileName);
CfgWriteStr("DEBUG","WaveLog_Filename", WaveLogFileName);
CfgWriteStr("DEBUG","DMA4Log_Filename", DMA4LogFileName);
CfgWriteStr("DEBUG","DMA7Log_Filename", DMA7LogFileName);
CfgWriteStr("DEBUG","Info_Dump_Filename",CoresDumpFileName);
CfgWriteStr("DEBUG","Mem_Dump_Filename", MemDumpFileName);
CfgWriteStr("DEBUG","Reg_Dump_Filename", RegDumpFileName);
CfgWriteInt("DEBUG","Wave_Log_Format", WaveDumpFormat);
}
CfgWriteInt("MIXING","Interpolation",Interpolation);
CfgWriteInt("MIXING","AutoDMA_Play_Rate_0",AutoDMAPlayRate[0]);
CfgWriteInt("MIXING","AutoDMA_Play_Rate_1",AutoDMAPlayRate[1]);
CfgWriteBool("EFFECTS","Enable_Effects",EffectsEnabled);
CfgWriteInt("OUTPUT","Output_Module",OutputModule);
CfgWriteInt("OUTPUT","Sample_Rate",SampleRate);
CfgWriteInt("OUTPUT","Buffer_Size",CurBufferSize);
CfgWriteInt("OUTPUT","Buffer_Count",MaxBufferCount);
CfgWriteInt("OUTPUT","Volume_Multiplier",VolumeMultiplier);
CfgWriteInt("OUTPUT","Volume_Divisor",VolumeDivisor);
CfgWriteInt("OUTPUT","Channel_Gain_L", GainL);
CfgWriteInt("OUTPUT","Channel_Gain_R", GainR);
CfgWriteInt("OUTPUT","Channel_Gain_C", GainC);
CfgWriteInt("OUTPUT","Channel_Gain_LFE",GainLFE);
CfgWriteInt("OUTPUT","Channel_Gain_SL", GainSL);
CfgWriteInt("OUTPUT","Channel_Gain_SR", GainSR);
CfgWriteInt("OUTPUT","Channel_Center_In_LR", AddCLR);
CfgWriteInt("OUTPUT","LFE_Lowpass_Frequency", LowpassLFE);
CfgWriteInt("OUTPUT","Speed_Limit_Mode",LimitMode);
CfgWriteStr("OUTPUT","Asio_Driver_Name",AsioDriver);
CfgWriteStr("DSP PLUGIN","Filename",dspPlugin);
CfgWriteInt("DSP PLUGIN","ModuleNum",dspPluginModule);
CfgWriteBool("DSP PLUGIN","Enabled",dspPluginEnabled);
CfgWriteBool("DSP","Timestretch_Enable",timeStretchEnabled);
CfgWriteBool("KEYS","Limiter_Toggle_Enabled",LimiterToggleEnabled);
CfgWriteInt ("KEYS","Limiter_Toggle",LimiterToggle);
CfgWriteStr("DirectSound Output (Stereo)","Device",DSoundDevice);
}
BOOL CALLBACK ConfigProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
int wmId,wmEvent;
char temp[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
switch(uMsg)
{
case WM_PAINT:
SET_CHECK(IDC_EFFECTS, EffectsEnabled);
SET_CHECK(IDC_DEBUG, DebugEnabled);
SET_CHECK(IDC_MSGKEY, DebugEnabled&MsgToConsole);
SET_CHECK(IDC_MSGKEY, DebugEnabled&MsgKeyOnOff);
SET_CHECK(IDC_MSGVOICE,DebugEnabled&MsgVoiceOff);
SET_CHECK(IDC_MSGDMA, DebugEnabled&MsgDMA);
SET_CHECK(IDC_MSGADMA, DebugEnabled&MsgDMA&MsgAutoDMA);
SET_CHECK(IDC_LOGREGS, AccessLog);
SET_CHECK(IDC_LOGDMA, DMALog);
SET_CHECK(IDC_LOGWAVE, WaveLog);
SET_CHECK(IDC_DUMPCORE,CoresDump);
SET_CHECK(IDC_DUMPMEM, MemDump);
SET_CHECK(IDC_DUMPREGS,RegDump);
SET_CHECK(IDC_SPEEDLIMIT,LimitMode);
return FALSE;
case WM_INITDIALOG:
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_RESETCONTENT,0,0);
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_ADDSTRING,0,(LPARAM)"16000");
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_ADDSTRING,0,(LPARAM)"22050");
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_ADDSTRING,0,(LPARAM)"24000");
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_ADDSTRING,0,(LPARAM)"32000");
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_ADDSTRING,0,(LPARAM)"44100");
SendMessage(GetDlgItem(hWnd,IDC_SRATE),CB_ADDSTRING,0,(LPARAM)"48000");
sprintf(temp,"%d",SampleRate);
SetDlgItemText(hWnd,IDC_SRATE,temp);
SendMessage(GetDlgItem(hWnd,IDC_INTERPOLATE),CB_RESETCONTENT,0,0);
SendMessage(GetDlgItem(hWnd,IDC_INTERPOLATE),CB_ADDSTRING,0,(LPARAM)"0 - Nearest (none)");
SendMessage(GetDlgItem(hWnd,IDC_INTERPOLATE),CB_ADDSTRING,0,(LPARAM)"1 - Linear (mid)");
SendMessage(GetDlgItem(hWnd,IDC_INTERPOLATE),CB_ADDSTRING,0,(LPARAM)"2 - Cubic (good)");
SendMessage(GetDlgItem(hWnd,IDC_INTERPOLATE),CB_SETCURSEL,Interpolation,0);
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_RESETCONTENT,0,0);
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_ADDSTRING,0,(LPARAM)"0 - Disabled (Emulate only)");
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_ADDSTRING,0,(LPARAM)"1 - waveOut (Slow/Laggy)");
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_ADDSTRING,0,(LPARAM)"2 - DSound (Typical)");
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_ADDSTRING,0,(LPARAM)"3 - DSound 5.1 (Experimental)");
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_ADDSTRING,0,(LPARAM)"4 - ASIO (Low Latency, BROKEN)");
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_ADDSTRING,0,(LPARAM)"5 - XAudio2 (Experimental)");
SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_SETCURSEL,OutputModule,0);
INIT_SLIDER(IDC_BUFFER,512,16384,4096,2048,512);
SendMessage(GetDlgItem(hWnd,IDC_BUFFER),TBM_SETPOS,TRUE,CurBufferSize);
sprintf(temp,"%d",CurBufferSize);
SetWindowText(GetDlgItem(hWnd,IDC_BSIZE),temp);
sprintf(temp,"%d",MaxBufferCount);
SetWindowText(GetDlgItem(hWnd,IDC_BCOUNT),temp);
ENABLE_CONTROL(IDC_MSGSHOW, DebugEnabled);
ENABLE_CONTROL(IDC_MSGKEY, DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGVOICE,DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGDMA, DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGADMA, DebugEnabled&MsgToConsole&MsgDMA);
ENABLE_CONTROL(IDC_LOGREGS, DebugEnabled);
ENABLE_CONTROL(IDC_LOGDMA, DebugEnabled);
ENABLE_CONTROL(IDC_LOGWAVE, DebugEnabled);
ENABLE_CONTROL(IDC_DUMPCORE,DebugEnabled);
ENABLE_CONTROL(IDC_DUMPMEM, DebugEnabled);
ENABLE_CONTROL(IDC_DUMPREGS,DebugEnabled);
SET_CHECK(IDC_EFFECTS, EffectsEnabled);
SET_CHECK(IDC_DEBUG, DebugEnabled);
SET_CHECK(IDC_MSGSHOW, MsgToConsole);
SET_CHECK(IDC_MSGKEY, MsgKeyOnOff);
SET_CHECK(IDC_MSGVOICE,MsgVoiceOff);
SET_CHECK(IDC_MSGDMA, MsgDMA);
SET_CHECK(IDC_MSGADMA, MsgAutoDMA);
SET_CHECK(IDC_LOGREGS, AccessLog);
SET_CHECK(IDC_LOGDMA, DMALog);
SET_CHECK(IDC_LOGWAVE, WaveLog);
SET_CHECK(IDC_DUMPCORE,CoresDump);
SET_CHECK(IDC_DUMPMEM, MemDump);
SET_CHECK(IDC_DUMPREGS,RegDump);
SET_CHECK(IDC_SPEEDLIMIT,LimitMode);
SET_CHECK(IDC_DSP_ENABLE,dspPluginEnabled);
SET_CHECK(IDC_TS_ENABLE,timeStretchEnabled);
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDOK:
GetDlgItemText(hWnd,IDC_SRATE,temp,20);
temp[19]=0;
SampleRate=atoi(temp);
GetDlgItemText(hWnd,IDC_BSIZE,temp,20);
temp[19]=0;
CurBufferSize=atoi(temp);
if(CurBufferSize<512) CurBufferSize=512;
if(CurBufferSize>16384) CurBufferSize=16384;
GetDlgItemText(hWnd,IDC_BCOUNT,temp,20);
temp[19]=0;
MaxBufferCount=atoi(temp);
if(MaxBufferCount<4) MaxBufferCount=4;
if(MaxBufferCount>50) MaxBufferCount=50;
Interpolation=(int)SendMessage(GetDlgItem(hWnd,IDC_INTERPOLATE),CB_GETCURSEL,0,0);
OutputModule=(int)SendMessage(GetDlgItem(hWnd,IDC_OUTPUT),CB_GETCURSEL,0,0);
/*
if((BufferSize*CurBufferCount)<9600)
{
int ret=MessageBoxEx(hWnd,"The total buffer space is too small and might cause problems.\n"
"Press [Cancel] to go back and increase the buffer size or number.",
"WARNING",MB_OKCANCEL | MB_ICONEXCLAMATION, 0);
if(ret==IDCANCEL)
break;
}
*/
DebugEnabled=DebugEnabled;
MsgToConsole=DebugEnabled&MsgToConsole;
MsgKeyOnOff =DebugEnabled&MsgToConsole&MsgKeyOnOff;
MsgVoiceOff =DebugEnabled&MsgToConsole&MsgVoiceOff;
MsgDMA =DebugEnabled&MsgToConsole&MsgDMA;
MsgAutoDMA =DebugEnabled&MsgToConsole&MsgAutoDMA;
AccessLog =DebugEnabled&AccessLog;
DMALog =DebugEnabled&DMALog;
WaveLog =DebugEnabled&WaveLog;
CoresDump =DebugEnabled&CoresDump;
MemDump =DebugEnabled&MemDump;
RegDump =DebugEnabled&RegDump;
WriteSettings();
EndDialog(hWnd,0);
break;
case IDCANCEL:
EndDialog(hWnd,0);
break;
case IDC_OUTCONF:
SndConfigure(hWnd);
break;
HANDLE_CHECK(IDC_EFFECTS,EffectsEnabled);
HANDLE_CHECKNB(IDC_DEBUG,DebugEnabled);
ENABLE_CONTROL(IDC_MSGSHOW, DebugEnabled);
ENABLE_CONTROL(IDC_MSGKEY, DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGVOICE,DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGDMA, DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGADMA, DebugEnabled&MsgToConsole&MsgDMA);
ENABLE_CONTROL(IDC_LOGREGS, DebugEnabled);
ENABLE_CONTROL(IDC_LOGDMA, DebugEnabled);
ENABLE_CONTROL(IDC_LOGWAVE, DebugEnabled);
ENABLE_CONTROL(IDC_DUMPCORE,DebugEnabled);
ENABLE_CONTROL(IDC_DUMPMEM, DebugEnabled);
ENABLE_CONTROL(IDC_DUMPREGS,DebugEnabled);
break;
HANDLE_CHECKNB(IDC_MSGSHOW,MsgToConsole);
ENABLE_CONTROL(IDC_MSGKEY, DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGVOICE,DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGDMA, DebugEnabled&MsgToConsole);
ENABLE_CONTROL(IDC_MSGADMA, DebugEnabled&MsgToConsole&MsgDMA);
break;
HANDLE_CHECK(IDC_MSGKEY,MsgKeyOnOff);
HANDLE_CHECK(IDC_MSGVOICE,MsgVoiceOff);
HANDLE_CHECKNB(IDC_MSGDMA,MsgDMA);
ENABLE_CONTROL(IDC_MSGADMA, DebugEnabled&MsgToConsole&MsgDMA);
break;
HANDLE_CHECK(IDC_MSGADMA,MsgAutoDMA);
HANDLE_CHECK(IDC_LOGREGS,AccessLog);
HANDLE_CHECK(IDC_LOGDMA, DMALog);
HANDLE_CHECK(IDC_LOGWAVE,WaveLog);
HANDLE_CHECK(IDC_DUMPCORE,CoresDump);
HANDLE_CHECK(IDC_DUMPMEM, MemDump);
HANDLE_CHECK(IDC_DUMPREGS,RegDump);
HANDLE_CHECK(IDC_SPEEDLIMIT,LimitMode);
HANDLE_CHECK(IDC_DSP_ENABLE,dspPluginEnabled);
HANDLE_CHECK(IDC_TS_ENABLE,timeStretchEnabled);
default:
return FALSE;
}
break;
case WM_HSCROLL:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId) {
//case TB_ENDTRACK:
//case TB_THUMBPOSITION:
case TB_LINEUP:
case TB_LINEDOWN:
case TB_PAGEUP:
case TB_PAGEDOWN:
wmEvent=(int)SendMessage((HWND)lParam,TBM_GETPOS,0,0);
case TB_THUMBTRACK:
if(wmEvent<512) wmEvent=512;
if(wmEvent>24000) wmEvent=24000;
SendMessage((HWND)lParam,TBM_SETPOS,TRUE,wmEvent);
sprintf(temp,"%d",wmEvent);
SetDlgItemText(hWnd,IDC_BSIZE,temp);
break;
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
}
void configure()
{
INT_PTR ret;
ReadSettings();
ret=DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_CONFIG),GetActiveWindow(),(DLGPROC)ConfigProc,1);
if(ret==-1)
{
MessageBoxEx(GetActiveWindow(),"Error Opening the config dialog.","OMG ERROR!",MB_OK,0);
return;
}
ReadSettings();
}