Diff for /np2/win9x/dialog/d_config.cpp between versions 1.4 and 1.15

version 1.4, 2003/10/30 12:45:38 version 1.15, 2007/11/11 07:11:28
Line 2 Line 2
 #include        "strres.h"  #include        "strres.h"
 #include        "resource.h"  #include        "resource.h"
 #include        "np2.h"  #include        "np2.h"
   #include        "oemtext.h"
 #include        "dosio.h"  #include        "dosio.h"
 #include        "sysmng.h"  #include        "sysmng.h"
 #include        "dialog.h"  #include        "dialog.h"
Line 9 Line 10
 #include        "pccore.h"  #include        "pccore.h"
   
   
 static const char str_2halfmhz[] = "2.4576MHz";  static const CBPARAM cpBase[] =
 static const char str_2mhz[] = "1.9968MHz";  {
 static const char *basecstr[2] = {str_2halfmhz, str_2mhz};          {MAKEINTRESOURCE(IDS_2_0MHZ),   PCBASECLOCK20},
           {MAKEINTRESOURCE(IDS_2_5MHZ),   PCBASECLOCK25},
   };
 static const UINT32 mulval[10] = {1, 2, 4, 5, 6, 8, 10, 12, 16, 20};  static const UINT32 mulval[10] = {1, 2, 4, 5, 6, 8, 10, 12, 16, 20};
 static const char str_clockfmt[] = "%2u.%.4u";  static const TCHAR str_clockfmt[] = _T("%2u.%.4u");
   
   
 static void setclock(HWND hWnd, UINT multiple) {  static void setclock(HWND hWnd, UINT uMultiple)
   {
           UINT    uClock;
           TCHAR   szWork[32];
   
         UINT32  clock;          uClock = dlgs_getcbcur(hWnd, IDC_BASECLOCK, PCBASECLOCK20);
         char    work[32];  
   
         GetDlgItemText(hWnd, IDC_BASECLOCK, work, sizeof(work));          if (uMultiple == 0)
         if (work[0] == '1') {          {
                 clock = PCBASECLOCK20 / 100;                  GetDlgItemText(hWnd, IDC_MULTIPLE, szWork, NELEMENTS(szWork));
                   uMultiple = (UINT)miltchar_solveINT(szWork);
         }          }
         else {          uMultiple = max(uMultiple, 1);
                 clock = PCBASECLOCK25 / 100;          uMultiple = min(uMultiple, 32);
   
           uClock = (uClock / 100) * uMultiple;
           wsprintf(szWork, str_clockfmt, uClock / 10000, uClock % 10000);
           SetDlgItemText(hWnd, IDC_CLOCKMSG, szWork);
   }
   
   static void cfgcreate(HWND hWnd) {
   
           TCHAR   work[32];
           UINT    val;
   
           dlgs_setcbitem(hWnd, IDC_BASECLOCK, cpBase, NELEMENTS(cpBase));
           if (np2cfg.baseclock < AVE(PCBASECLOCK25, PCBASECLOCK20))
           {
                   val = PCBASECLOCK20;
           }
           else
           {
                   val = PCBASECLOCK25;
           }
           dlgs_setcbcur(hWnd, IDC_BASECLOCK, val);
   
           SETLISTUINT32(hWnd, IDC_MULTIPLE, mulval);
           wsprintf(work, tchar_u, np2cfg.multiple);
           SetDlgItemText(hWnd, IDC_MULTIPLE, work);
   
           if (!milstr_cmp(np2cfg.model, str_VM))
           {
                   val = IDC_MODELVM;
         }          }
         if (multiple == 0) {          else if (!milstr_cmp(np2cfg.model, str_EPSON))
                 GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work));          {
                 multiple = (UINT)milstr_solveINT(work);                  val = IDC_MODELEPSON;
         }          }
         if (multiple < 1) {          else
                 multiple = 1;          {
                   val = IDC_MODELVX;
         }          }
         else if (multiple > 32) {          SetDlgItemCheck(hWnd, val, TRUE);
                 multiple = 32;  
           if (np2cfg.samplingrate < AVE(11025, 22050))
           {
                   val = IDC_RATE11;
           }
           else if (np2cfg.samplingrate < AVE(22050, 44100))
           {
                   val = IDC_RATE22;
           }
           else
           {
                   val = IDC_RATE44;
           }
           SetDlgItemCheck(hWnd, val, TRUE);
           wsprintf(work, tchar_u, np2cfg.delayms);
           SetDlgItemText(hWnd, IDC_SOUNDBUF, work);
   
           SetDlgItemCheck(hWnd, IDC_ALLOWRESIZE, np2oscfg.thickframe);
   #if !defined(_WIN64)
           if (mmxflag & MMXFLAG_NOTSUPPORT)
           {
                   EnableWindow(GetDlgItem(hWnd, IDC_DISABLEMMX), FALSE);
                   SetDlgItemCheck(hWnd, IDC_DISABLEMMX, TRUE);
           }
           else
           {
                   SetDlgItemCheck(hWnd, IDC_DISABLEMMX, np2oscfg.disablemmx);
         }          }
         clock *= multiple;  #endif
         wsprintf(work, str_clockfmt, clock / 10000, clock % 10000);          SetDlgItemCheck(hWnd, IDC_COMFIRM, np2oscfg.comfirm);
         SetDlgItemText(hWnd, IDC_CLOCKMSG, work);          SetDlgItemCheck(hWnd, IDC_RESUME, np2oscfg.resume);
           setclock(hWnd, 0);
           SetFocus(GetDlgItem(hWnd, IDC_BASECLOCK));
 }  }
   
 LRESULT CALLBACK CfgDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {  static void cfgupdate(HWND hWnd)
   {
           UINT            update;
           TCHAR           work[32];
           UINT            val;
   const OEMCHAR   *str;
   
           update = 0;
   
           val = dlgs_getcbcur(hWnd, IDC_BASECLOCK, PCBASECLOCK20);
           if (np2cfg.baseclock != val)
           {
                   np2cfg.baseclock = val;
                   update |= SYS_UPDATECFG | SYS_UPDATECLOCK;
           }
   
         char    work[128];          GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work));
         BYTE    bval;          val = (UINT)miltchar_solveINT(work);
         WORD    wval;          if (val < 1) {
         UINT32  dval;                  val = 1;
         UINT    val;          }
         UINT    update;          else if (val > 32) {
                   val = 32;
           }
           if (np2cfg.multiple != val) {
                   np2cfg.multiple = val;
                   update |= SYS_UPDATECFG | SYS_UPDATECLOCK;
           }
   
         switch (msg) {          if (GetDlgItemCheck(hWnd, IDC_MODELVM)) {
                 case WM_INITDIALOG:                  str = str_VM;
                         SETLISTSTR(hWnd, IDC_BASECLOCK, basecstr);          }
                         if (np2cfg.baseclock >= AVE(PCBASECLOCK25, PCBASECLOCK20)) {          else if (GetDlgItemCheck(hWnd, IDC_MODELEPSON)) {
                                 val = 0;                  str = str_EPSON;
                         }          }
                         else {          else {
                                 val = 1;                  str = str_VX;
                         }          }
                         SendDlgItemMessage(hWnd, IDC_BASECLOCK, CB_SETCURSEL, val, 0);          if (milstr_cmp(np2cfg.model, str)) {
                         SETLISTUINT32(hWnd, IDC_MULTIPLE, mulval);                  milstr_ncpy(np2cfg.model, str, NELEMENTS(np2cfg.model));
                         wsprintf(work, str_u, np2cfg.multiple);                  update |= SYS_UPDATECFG;
                         SetDlgItemText(hWnd, IDC_MULTIPLE, work);          }
   
                         if (np2cfg.samplingrate < AVE(11025, 22050)) {          if (GetDlgItemCheck(hWnd, IDC_RATE11)) {
                                 wval = IDC_RATE11;                  val = 11025;
                         }          }
                         else if (np2cfg.samplingrate < AVE(22050, 44100)) {          else if (GetDlgItemCheck(hWnd, IDC_RATE22)) {
                                 wval = IDC_RATE22;                  val = 22050;
                         }          }
                         else {          else {
                                 wval = IDC_RATE44;                  val = 44100;
                         }          }
                         SetDlgItemCheck(hWnd, wval, TRUE);          if (np2cfg.samplingrate != (UINT16)val) {
                         wsprintf(work, str_u, np2cfg.delayms);                  np2cfg.samplingrate = (UINT16)val;
                         SetDlgItemText(hWnd, IDC_SOUNDBUF, work);                  update |= SYS_UPDATECFG | SYS_UPDATERATE;
                   soundrenewal = 1;
                         if (mmxflag & MMXFLAG_NOTSUPPORT) {          }
                                 EnableWindow(GetDlgItem(hWnd, IDC_DISABLEMMX), FALSE);  
                                 SetDlgItemCheck(hWnd, IDC_DISABLEMMX, TRUE);  
                         }  
                         else {  
                                 SetDlgItemCheck(hWnd, IDC_DISABLEMMX, np2oscfg.disablemmx);  
                         }  
                         SetDlgItemCheck(hWnd, IDC_COMFIRM, np2oscfg.comfirm);  
                         SetDlgItemCheck(hWnd, IDC_RESUME, np2oscfg.resume);  
                         setclock(hWnd, 0);  
                         SetFocus(GetDlgItem(hWnd, IDC_BASECLOCK));  
                         return(FALSE);  
   
                 case WM_COMMAND:          GetDlgItemText(hWnd, IDC_SOUNDBUF, work, NELEMENTS(work));
                         switch (LOWORD(wp)) {          val = (UINT)miltchar_solveINT(work);
                                 case IDOK:          if (val < 40) {
                                         update = 0;                  val = 40;
                                         GetDlgItemText(hWnd, IDC_BASECLOCK, work, sizeof(work));          }
                                         if (work[0] == '1') {          else if (val > 1000) {
                                                 dval = PCBASECLOCK20;                  val = 1000;
                                         }          }
                                         else {          if (np2cfg.delayms != (UINT16)val) {
                                                 dval = PCBASECLOCK25;                  np2cfg.delayms = (UINT16)val;
                                         }                  update |= SYS_UPDATECFG | SYS_UPDATESBUF;
                                         if (np2cfg.baseclock != dval) {                  soundrenewal = 1;
                                                 np2cfg.baseclock = dval;          }
                                                 update |= SYS_UPDATECFG | SYS_UPDATECLOCK;  
                                         }  
   
                                         GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work));          val = GetDlgItemCheck(hWnd, IDC_ALLOWRESIZE);
                                         val = (UINT)milstr_solveINT(work);          if (np2oscfg.thickframe != (UINT8)val) {
                                         if (val < 1) {                  np2oscfg.thickframe = (UINT8)val;
                                                 val = 1;                  update |= SYS_UPDATEOSCFG;
                                         }          }
                                         else if (val > 32) {  
                                                 val = 32;  
                                         }  
                                         if (np2cfg.multiple != val) {  
                                                 np2cfg.multiple = val;  
                                                 update |= SYS_UPDATECFG | SYS_UPDATECLOCK;  
                                         }  
   
                                         if (GetDlgItemCheck(hWnd, IDC_RATE11)) {  #if !defined(_WIN64)
                                                 wval = 11025;          if (!(mmxflag & MMXFLAG_NOTSUPPORT))
                                         }          {
                                         else if (GetDlgItemCheck(hWnd, IDC_RATE22)) {                  val = GetDlgItemCheck(hWnd, IDC_DISABLEMMX);
                                                 wval = 22050;                  if (np2oscfg.disablemmx != (UINT8)val)
                                         }                  {
                                         else {                          np2oscfg.disablemmx = (UINT8)val;
                                                 wval = 44100;                          mmxflag &= ~MMXFLAG_DISABLE;
                                         }                          mmxflag |= (val)?MMXFLAG_DISABLE:0;
                                         if (np2cfg.samplingrate != wval) {                          update |= SYS_UPDATEOSCFG;
                                                 np2cfg.samplingrate = wval;                  }
                                                 update |= SYS_UPDATECFG | SYS_UPDATERATE;          }
                                                 soundrenewal = 1;  #endif
                                         }  
   
                                         GetDlgItemText(hWnd, IDC_SOUNDBUF, work, sizeof(work));          val = GetDlgItemCheck(hWnd, IDC_COMFIRM);
                                         val = (UINT)milstr_solveINT(work);          if (np2oscfg.comfirm != (UINT8)val)
                                         if (val < 100) {          {
                                                 val = 100;                  np2oscfg.comfirm = (UINT8)val;
                                         }                  update |= SYS_UPDATEOSCFG;
                                         else if (val > 1000) {          }
                                                 val = 1000;  
                                         }  
                                         if (np2cfg.delayms != (UINT16)val) {  
                                                 soundrenewal = 1;  
                                                 np2cfg.delayms = (UINT16)val;  
                                                 update |= SYS_UPDATECFG | SYS_UPDATESBUF;  
                                         }  
   
                                         if (!(mmxflag & MMXFLAG_NOTSUPPORT)) {          val = GetDlgItemCheck(hWnd, IDC_RESUME);
                                                 bval = GetDlgItemCheck(hWnd, IDC_DISABLEMMX);          if (np2oscfg.resume != (UINT8)val)
                                                 if (np2oscfg.disablemmx != bval) {          {
                                                         np2oscfg.disablemmx = bval;                  np2oscfg.resume = (UINT8)val;
                                                         mmxflag &= ~MMXFLAG_DISABLE;                  update |= SYS_UPDATEOSCFG;
                                                         mmxflag |= (bval)?MMXFLAG_DISABLE:0;          }
                                                         update |= SYS_UPDATEOSCFG;          sysmng_update(update);
                                                 }  }
                                         }  
   
                                         bval = GetDlgItemCheck(hWnd, IDC_COMFIRM);  LRESULT CALLBACK CfgDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
                                         if (np2oscfg.comfirm != bval) {  
                                                 np2oscfg.comfirm = bval;  
                                                 update |= SYS_UPDATEOSCFG;  
                                         }  
   
                                         bval = GetDlgItemCheck(hWnd, IDC_RESUME);          switch (msg) {
                                         if (np2oscfg.resume != bval) {                  case WM_INITDIALOG:
                                                 np2oscfg.resume = bval;                          cfgcreate(hWnd);
                                                 update |= SYS_UPDATEOSCFG;                          return(FALSE);
                                         }  
                                         sysmng_update(update);                  case WM_COMMAND:
                           switch(LOWORD(wp)) {
                                   case IDOK:
                                           cfgupdate(hWnd);
                                         EndDialog(hWnd, IDOK);                                          EndDialog(hWnd, IDOK);
                                         break;                                          break;
   
Line 185  LRESULT CALLBACK CfgDialogProc(HWND hWnd Line 239  LRESULT CALLBACK CfgDialogProc(HWND hWnd
   
                                 case IDC_MULTIPLE:                                  case IDC_MULTIPLE:
                                         if (HIWORD(wp) == CBN_SELCHANGE) {                                          if (HIWORD(wp) == CBN_SELCHANGE) {
                                                   UINT val;
                                                 val = (UINT)SendDlgItemMessage(hWnd, IDC_MULTIPLE,                                                  val = (UINT)SendDlgItemMessage(hWnd, IDC_MULTIPLE,
                                                                                                                 CB_GETCURSEL, 0, 0);                                                                                                                  CB_GETCURSEL, 0, 0);
                                                 if (val < sizeof(mulval)/sizeof(UINT32)) {                                                  if (val < NELEMENTS(mulval)) {
                                                         setclock(hWnd, mulval[val]);                                                          setclock(hWnd, mulval[val]);
                                                 }                                                  }
                                         }                                          }

Removed from v.1.4  
changed lines
  Added in v.1.15


RetroPC.NET-CVS <cvs@retropc.net>