--- np2/embed/menu/dlgcfg.c 2003/12/26 02:02:09 1.3 +++ np2/embed/menu/dlgcfg.c 2005/02/07 14:46:09 1.6 @@ -15,6 +15,9 @@ enum { DID_MULTIPLE, DID_MULSTR, DID_CLOCKSTR, + DID_MODELVM, + DID_MODELVX, + DID_MODELEPSON, DID_RATE11, DID_RATE22, DID_RATE44, @@ -42,23 +45,31 @@ static const MENUPRM res_cfg[] = { {DLGTYPE_RTEXT, DID_CLOCKSTR, 0, NULL, 105, 51, 80, 11}, {DLGTYPE_FRAME, DID_STATIC, 0, - "Sound", 6, 70, 244, 52}, + "Architecture", 6, 70, 244, 30}, + {DLGTYPE_RADIO, DID_MODELVM, MENU_TABSTOP, + "PC-9801VM", 16, 84, 78, 11}, + {DLGTYPE_RADIO, DID_MODELVX, 0, + "PC-9801VX", 96, 84, 78, 11}, + {DLGTYPE_RADIO, DID_MODELEPSON, 0, + "EPSON", 176, 84, 60, 11}, + {DLGTYPE_FRAME, DID_STATIC, 0, + "Sound", 6, 106, 244, 52}, {DLGTYPE_LTEXT, DID_STATIC, 0, - "Rate", 16, 85, 40, 11}, + "Rate", 16, 121, 40, 11}, {DLGTYPE_RADIO, DID_RATE11, MENU_TABSTOP, - "11KHz", 60, 85, 60, 11}, + "11KHz", 60, 121, 60, 11}, {DLGTYPE_RADIO, DID_RATE22, 0, - "22KHz", 120, 85, 60, 11}, + "22KHz", 120, 121, 60, 11}, {DLGTYPE_RADIO, DID_RATE44, 0, - "44KHz", 180, 85, 60, 11}, + "44KHz", 180, 121, 60, 11}, {DLGTYPE_LTEXT, DID_STATIC, 0, - "Buffer", 16, 103, 40, 11}, + "Buffer", 16, 139, 40, 11}, {DLGTYPE_SLIDER, DID_BUFFER, MSS_BOTH | MENU_TABSTOP, - (void *)SLIDERPOS(100, 1000), 60, 102, 140, 13}, + (void *)SLIDERPOS(100, 1000), 60, 138, 140, 13}, {DLGTYPE_RTEXT, DID_BUFSTR, 0, - NULL, 200, 103, 44, 11}, + NULL, 200, 139, 44, 11}, {DLGTYPE_CHECK, DID_RESUME, MENU_TABSTOP, - str_resume, 6, 128, 128, 11}, + str_resume, 6, 164, 128, 11}, {DLGTYPE_BUTTON, DID_OK, MENU_TABSTOP, mstr_ok, 197, 11, 52, 15}, {DLGTYPE_BUTTON, DID_CANCEL, MENU_TABSTOP, @@ -82,23 +93,31 @@ static const MENUPRM res_cfg[] = { {DLGTYPE_RTEXT, DID_CLOCKSTR, 0, NULL, 124, 59, 80, 13}, {DLGTYPE_FRAME, DID_STATIC, 0, - "Sound", 8, 83, 288, 60}, + "Architecture", 8, 83, 288, 38}, + {DLGTYPE_RADIO, DID_MODELVM, MENU_TABSTOP, + "PC-9801VM", 20, 100, 98, 13}, + {DLGTYPE_RADIO, DID_MODELVX, 0, + "PC-9801VX", 120, 100, 98, 13}, + {DLGTYPE_RADIO, DID_MODELEPSON, 0, + "EPSON", 220, 100, 60, 13}, + {DLGTYPE_FRAME, DID_STATIC, 0, + "Sound", 8, 128, 288, 60}, {DLGTYPE_LTEXT, DID_STATIC, 0, - "Rate", 20, 100, 48, 13}, + "Rate", 20, 145, 48, 13}, {DLGTYPE_RADIO, DID_RATE11, MENU_TABSTOP, - "11KHz", 68, 100, 66, 13}, + "11KHz", 68, 145, 66, 13}, {DLGTYPE_RADIO, DID_RATE22, 0, - "22KHz", 134, 100, 66, 13}, + "22KHz", 134, 145, 66, 13}, {DLGTYPE_RADIO, DID_RATE44, 0, - "44KHz", 200, 100, 66, 13}, + "44KHz", 200, 145, 66, 13}, {DLGTYPE_LTEXT, DID_STATIC, 0, - "Buffer", 20, 120, 48, 13}, + "Buffer", 20, 165, 48, 13}, {DLGTYPE_SLIDER, DID_BUFFER, MSS_BOTH | MENU_TABSTOP, - (void *)SLIDERPOS(100, 1000), 68, 120, 160, 13}, + (void *)SLIDERPOS(100, 1000), 68, 165, 160, 13}, {DLGTYPE_RTEXT, DID_BUFSTR, 0, - NULL, 228, 120, 48, 13}, + NULL, 228, 165, 48, 13}, {DLGTYPE_CHECK, DID_RESUME, MENU_TABSTOP, - "Resume", 8, 152, 288, 13}, + "Resume", 8, 197, 288, 13}, {DLGTYPE_BUTTON, DID_OK, MENU_TABSTOP, mstr_ok, 218, 13, 77, 21}, {DLGTYPE_BUTTON, DID_CANCEL, MENU_TABSTOP, @@ -172,7 +191,7 @@ static void dlginit(void) { MENUID id; - menudlg_appends(res_cfg, sizeof(res_cfg)/sizeof(MENUPRM)); + menudlg_appends(res_cfg, NELEMETS(res_cfg)); if (np2cfg.baseclock < ((PCBASECLOCK25 + PCBASECLOCK20) / 2)) { id = DID_CLOCK1; } @@ -181,6 +200,18 @@ static void dlginit(void) { } menudlg_setval(id, 1); menudlg_setval(DID_MULTIPLE, np2cfg.multiple); + + if (!milstr_cmp(np2cfg.model, str_VM)) { + id = DID_MODELVM; + } + else if (!milstr_cmp(np2cfg.model, str_EPSON)) { + id = DID_MODELEPSON; + } + else { + id = DID_MODELVX; + } + menudlg_setval(id, 1); + if (np2cfg.samplingrate < ((11025 + 22050) / 2)) { id = DID_RATE11; } @@ -192,17 +223,26 @@ static void dlginit(void) { } menudlg_setval(id, 1); menudlg_setval(DID_BUFFER, np2cfg.delayms); + menudlg_setval(DID_RESUME, np2oscfg.resume); setmulstr(); setclockstr(); setbufstr(); + +#if defined(DISABLE_SOUND) + menudlg_setenable(DID_RATE11, FALSE); + menudlg_setenable(DID_RATE22, FALSE); + menudlg_setenable(DID_RATE44, FALSE); + menudlg_setenable(DID_BUFFER, FALSE); +#endif } static void dlgupdate(void) { UINT update; UINT val; +const char *str; update = 0; if (menudlg_getval(DID_CLOCK1)) { @@ -241,6 +281,35 @@ static void dlgupdate(void) { update |= SYS_UPDATECFG | SYS_UPDATERATE; soundrenewal = 1; } + + if (menudlg_getval(DID_MODELVM)) { + str = str_VM; + } + else if (menudlg_getval(DID_MODELEPSON)) { + str = str_EPSON; + } + else { + str = str_VX; + } + if (milstr_cmp(np2cfg.model, str)) { + milstr_ncpy(np2cfg.model, str, sizeof(np2cfg.model)); + update |= SYS_UPDATECFG; + } + + if (menudlg_getval(DID_RATE11)) { + val = 11025; + } + else if (menudlg_getval(DID_RATE44)) { + val = 44100; + } + else { + val = 22050; + } + if (np2cfg.samplingrate != (UINT16)val) { + np2cfg.samplingrate = (UINT16)val; + update |= SYS_UPDATECFG | SYS_UPDATERATE; + soundrenewal = 1; + } val = menudlg_getval(DID_BUFFER); if (val < 100) { val = 100;