|
|
| version 1.7, 2005/02/07 15:39:27 | version 1.12, 2007/12/29 12:56:22 |
|---|---|
| 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 "commng.h" | #include "commng.h" |
| #include "sysmng.h" | #include "sysmng.h" |
| #include "dialog.h" | #include "dialog.h" |
| Line 20 extern COMMNG cm_mpu98; | Line 21 extern COMMNG cm_mpu98; |
| } | } |
| #endif | #endif |
| static const char *mpuinterrupt[4] = {str_int0, str_int1, str_int2, str_int5}; | static const CBPARAM cpInt[] = |
| { | |
| {MAKEINTRESOURCE(IDS_INT0), 0}, | |
| {MAKEINTRESOURCE(IDS_INT1), 1}, | |
| {MAKEINTRESOURCE(IDS_INT2), 2}, | |
| {MAKEINTRESOURCE(IDS_INT5), 3}, | |
| }; | |
| static UINT8 mpu = 0; | static UINT8 mpu = 0; |
| static void setmpuio(HWND hWnd, UINT8 cValue) | |
| static void setmpuiopara(HWND hWnd, UINT16 res, UINT8 value) { | { |
| dlgs_setcbcur(hWnd, IDC_MPUIO, (cValue & 0xf0)); | |
| SendDlgItemMessage(hWnd, res, CB_SETCURSEL, | |
| (WPARAM)((value >> 4) & 15), (LPARAM)0); | |
| } | } |
| static UINT8 getmpuio(HWND hWnd, UINT16 res) { | static UINT8 getmpuio(HWND hWnd) |
| { | |
| char work[8]; | return dlgs_getcbcur(hWnd, IDC_MPUIO, 0x00); |
| GetDlgItemText(hWnd, res, work, sizeof(work)); | |
| return((milstr_solveHEX(work) >> 6) & 0xf0); | |
| } | } |
| static void setmpuintpara(HWND hWnd, UINT16 res, UINT8 value) { | static void setmpuint(HWND hWnd, UINT8 cValue) |
| { | |
| SendDlgItemMessage(hWnd, res, CB_SETCURSEL, | dlgs_setcbcur(hWnd, IDC_MPUINT, (cValue & 0x03)); |
| (WPARAM)(value & 3), (LPARAM)0); | |
| } | } |
| static UINT8 getmpuint(HWND hWnd, UINT16 res) { | static UINT8 getmpuint(HWND hWnd) |
| { | |
| char work[8]; | return dlgs_getcbcur(hWnd, IDC_MPUINT, 0x00); |
| UINT8 ret; | |
| GetDlgItemText(hWnd, res, work, sizeof(work)); | |
| ret = work[3] - '0'; | |
| if (ret >= 3) { | |
| ret = 3; | |
| } | |
| return(ret); | |
| } | } |
| static void setmpujmp(HWND hWnd, UINT8 value, UINT8 bit) { | static void setmpujmp(HWND hWnd, UINT8 cValue, UINT8 cBit) |
| { | |
| if ((mpu ^ value) & bit) { | if ((mpu ^ cValue) & cBit) |
| mpu &= ~bit; | { |
| mpu |= value; | mpu &= ~cBit; |
| mpu |= cValue; | |
| InvalidateRect(GetDlgItem(hWnd, IDC_MPUDIP), NULL, TRUE); | InvalidateRect(GetDlgItem(hWnd, IDC_MPUDIP), NULL, TRUE); |
| } | } |
| } | } |
| Line 70 static void setmpujmp(HWND hWnd, UINT8 v | Line 64 static void setmpujmp(HWND hWnd, UINT8 v |
| // ---- | // ---- |
| static void mpucreate(HWND hWnd) { | static void mpucreate(HWND hWnd) |
| { | |
| UINT i; | UINT i; |
| char buf[8]; | TCHAR szBuf[8]; |
| int nIndex; | |
| HWND sub; | HWND sub; |
| mpu = np2cfg.mpuopt; | mpu = np2cfg.mpuopt; |
| for (i=0; i<16; i++) { | for (i=0; i<16; i++) |
| wsprintf(buf, str_4X, 0xC0D0 + (i << 10)); | { |
| SendDlgItemMessage(hWnd, IDC_MPUIO, | wsprintf(szBuf, tchar_4X, 0xC0D0 + (i << 10)); |
| CB_INSERTSTRING, (WPARAM)i, (LPARAM)buf); | nIndex = (int)SendDlgItemMessage(hWnd, IDC_MPUIO, CB_ADDSTRING, |
| } | 0, (LPARAM)szBuf); |
| setmpuiopara(hWnd, IDC_MPUIO, mpu); | if (nIndex >= 0) |
| SETLISTSTR(hWnd, IDC_MPUINT, mpuinterrupt); | { |
| setmpuintpara(hWnd, IDC_MPUINT, mpu); | SendDlgItemMessage(hWnd, IDC_MPUIO, CB_SETITEMDATA, |
| (WPARAM)nIndex, (LPARAM)(i << 4)); | |
| } | |
| } | |
| setmpuio(hWnd, mpu); | |
| dlgs_setcbitem(hWnd, IDC_MPUINT, cpInt, NELEMENTS(cpInt)); | |
| setmpuint(hWnd, mpu); | |
| dlgs_setlistmidiout(hWnd, IDC_MPU98MMAP, np2oscfg.mpu.mout); | dlgs_setlistmidiout(hWnd, IDC_MPU98MMAP, np2oscfg.mpu.mout); |
| dlgs_setlistmidiin(hWnd, IDC_MPU98MDIN, np2oscfg.mpu.min); | dlgs_setlistmidiin(hWnd, IDC_MPU98MDIN, np2oscfg.mpu.min); |
| Line 104 static void mpucreate(HWND hWnd) { | Line 106 static void mpucreate(HWND hWnd) { |
| static void mpuupdate(HWND hWnd) { | static void mpuupdate(HWND hWnd) { |
| union { | union { |
| char mmap[MAXPNAMELEN]; | OEMCHAR mmap[MAXPNAMELEN]; |
| char mmdl[64]; | OEMCHAR mmdl[64]; |
| char mdef[MAX_PATH]; | OEMCHAR mdef[MAX_PATH]; |
| char mdin[MAXPNAMELEN]; | OEMCHAR mdin[MAXPNAMELEN]; |
| } s; | } s; |
| UINT update; | UINT update; |
| Line 116 static void mpuupdate(HWND hWnd) { | Line 118 static void mpuupdate(HWND hWnd) { |
| np2cfg.mpuopt = mpu; | np2cfg.mpuopt = mpu; |
| update |= SYS_UPDATECFG | SYS_UPDATEMIDI; | update |= SYS_UPDATECFG | SYS_UPDATEMIDI; |
| } | } |
| GetDlgItemText(hWnd, IDC_MPU98MMAP, s.mmap, sizeof(s.mmap)); | GetDlgItemText(hWnd, IDC_MPU98MMAP, s.mmap, NELEMENTS(s.mmap)); |
| if (milstr_cmp(np2oscfg.mpu.mout, s.mmap)) { | if (milstr_cmp(np2oscfg.mpu.mout, s.mmap)) { |
| milstr_ncpy(np2oscfg.mpu.mout, s.mmap, sizeof(np2oscfg.mpu.mout)); | milstr_ncpy(np2oscfg.mpu.mout, s.mmap, NELEMENTS(np2oscfg.mpu.mout)); |
| update |= SYS_UPDATEOSCFG | SYS_UPDATEMIDI; | update |= SYS_UPDATEOSCFG | SYS_UPDATEMIDI; |
| } | } |
| GetDlgItemText(hWnd, IDC_MPU98MDIN, s.mdin, sizeof(s.mdin)); | GetDlgItemText(hWnd, IDC_MPU98MDIN, s.mdin, NELEMENTS(s.mdin)); |
| if (milstr_cmp(np2oscfg.mpu.min, s.mdin)) { | if (milstr_cmp(np2oscfg.mpu.min, s.mdin)) { |
| milstr_ncpy(np2oscfg.mpu.min, s.mdin, sizeof(np2oscfg.mpu.min)); | milstr_ncpy(np2oscfg.mpu.min, s.mdin, NELEMENTS(np2oscfg.mpu.min)); |
| update |= SYS_UPDATEOSCFG | SYS_UPDATEMIDI; | update |= SYS_UPDATEOSCFG | SYS_UPDATEMIDI; |
| } | } |
| GetDlgItemText(hWnd, IDC_MPU98MMDL, s.mmdl, sizeof(s.mmdl)); | GetDlgItemText(hWnd, IDC_MPU98MMDL, s.mmdl, NELEMENTS(s.mmdl)); |
| if (milstr_cmp(np2oscfg.mpu.mdl, s.mmdl)) { | if (milstr_cmp(np2oscfg.mpu.mdl, s.mmdl)) { |
| milstr_ncpy(np2oscfg.mpu.mdl, s.mmdl, sizeof(np2oscfg.mpu.mdl)); | milstr_ncpy(np2oscfg.mpu.mdl, s.mmdl, NELEMENTS(np2oscfg.mpu.mdl)); |
| update |= SYS_UPDATEOSCFG | SYS_UPDATEMIDI; | update |= SYS_UPDATEOSCFG | SYS_UPDATEMIDI; |
| } | } |
| Line 136 static void mpuupdate(HWND hWnd) { | Line 138 static void mpuupdate(HWND hWnd) { |
| if (cm_mpu98) { | if (cm_mpu98) { |
| cm_mpu98->msg(cm_mpu98, COMMSG_MIMPIDEFEN, np2oscfg.mpu.def_en); | cm_mpu98->msg(cm_mpu98, COMMSG_MIMPIDEFEN, np2oscfg.mpu.def_en); |
| } | } |
| GetDlgItemText(hWnd, IDC_MPU98DEFF, s.mdef, sizeof(s.mdef)); | GetDlgItemText(hWnd, IDC_MPU98DEFF, s.mdef, NELEMENTS(s.mdef)); |
| if (milstr_cmp(np2oscfg.mpu.def, s.mdef)) { | if (milstr_cmp(np2oscfg.mpu.def, s.mdef)) { |
| milstr_ncpy(np2oscfg.mpu.def, s.mdef, sizeof(np2oscfg.mpu.def)); | milstr_ncpy(np2oscfg.mpu.def, s.mdef, NELEMENTS(np2oscfg.mpu.def)); |
| if (cm_mpu98) { | if (cm_mpu98) { |
| cm_mpu98->msg(cm_mpu98, COMMSG_MIMPIDEFFILE, (long)s.mdef); | cm_mpu98->msg(cm_mpu98, COMMSG_MIMPIDEFFILE, (long)s.mdef); |
| } | } |
| Line 169 static void mpucmddipsw(HWND hWnd) { | Line 171 static void mpucmddipsw(HWND hWnd) { |
| if ((p.x >= 2) && (p.x < 6)) { | if ((p.x >= 2) && (p.x < 6)) { |
| bit = 0x80 >> (p.x - 2); | bit = 0x80 >> (p.x - 2); |
| mpu ^= bit; | mpu ^= bit; |
| setmpuiopara(hWnd, IDC_MPUIO, mpu); | setmpuio(hWnd, mpu); |
| redraw = TRUE; | redraw = TRUE; |
| } | } |
| else if ((p.x >= 9) && (p.x < 13)) { | else if ((p.x >= 9) && (p.x < 13)) { |
| Line 177 static void mpucmddipsw(HWND hWnd) { | Line 179 static void mpucmddipsw(HWND hWnd) { |
| if ((mpu ^ bit) & 3) { | if ((mpu ^ bit) & 3) { |
| mpu &= ~0x3; | mpu &= ~0x3; |
| mpu |= bit; | mpu |= bit; |
| setmpuintpara(hWnd, IDC_MPUINT, mpu); | setmpuint(hWnd, mpu); |
| redraw = TRUE; | redraw = TRUE; |
| } | } |
| } | } |
| Line 205 LRESULT CALLBACK MidiDialogProc(HWND hWn | Line 207 LRESULT CALLBACK MidiDialogProc(HWND hWn |
| break; | break; |
| case IDC_MPUIO: | case IDC_MPUIO: |
| setmpujmp(hWnd, getmpuio(hWnd, IDC_MPUIO), 0xf0); | setmpujmp(hWnd, getmpuio(hWnd), 0xf0); |
| return(FALSE); | return(FALSE); |
| case IDC_MPUINT: | case IDC_MPUINT: |
| setmpujmp(hWnd, getmpuint(hWnd, IDC_MPUINT), 0x03); | setmpujmp(hWnd, getmpuint(hWnd), 0x03); |
| return(FALSE); | return(FALSE); |
| case IDC_MPUDEF: | case IDC_MPUDEF: |
| mpu = 0x82; | mpu = 0x82; |
| setmpuiopara(hWnd, IDC_MPUIO, mpu); | setmpuio(hWnd, mpu); |
| setmpuintpara(hWnd, IDC_MPUINT, mpu); | setmpuint(hWnd, mpu); |
| InvalidateRect(GetDlgItem(hWnd, IDC_MPUDIP), NULL, TRUE); | InvalidateRect(GetDlgItem(hWnd, IDC_MPUDIP), NULL, TRUE); |
| return(FALSE); | return(FALSE); |