| version 1.3, 2003/12/27 02:29:44 | version 1.8, 2005/03/20 08:58:20 | 
| Line 2 | Line 2 | 
 | #include        "resource.h" | #include        "resource.h" | 
 | #include        "np2.h" | #include        "np2.h" | 
 | #include        "sysmng.h" | #include        "sysmng.h" | 
 | #include        "pccore.h" |  | 
 | #include        "menu.h" | #include        "menu.h" | 
 |  | #include        "pccore.h" | 
 |  |  | 
 |  |  | 
 | #define MFCHECK(a) ((a)?MF_CHECKED:MF_UNCHECKED) | #define MFCHECK(a) ((a)?MF_CHECKED:MF_UNCHECKED) | 
 |  |  | 
 | static const char menu_i286save[] = "&i286 save"; |  | 
 |  |  | 
 |  | // ---- | 
 |  |  | 
 |  | static const TCHAR smenu_memdump[] = _T("&Memory Dump"); | 
 |  |  | 
 |  | void sysmenu_initialize(void) { | 
 |  |  | 
 |  | HMENU   hMenu; | 
 |  |  | 
 |  | if (np2oscfg.I286SAVE) { | 
 |  | hMenu = GetSystemMenu(hWndMain, FALSE); | 
 |  | InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_MEMORYDUMP, | 
 |  | smenu_memdump); | 
 |  | InsertMenu(hMenu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); | 
 |  | } | 
 |  | } | 
 |  |  | 
 |  |  | 
 |  | // ---- | 
 |  |  | 
 |  | static const TCHAR str_i286save[] = _T("&i286 save"); | 
 |  | #if defined(SUPPORT_WAVEREC) | 
 |  | static const TCHAR str_waverec[] = _T("&Wave Record"); | 
 |  | #endif | 
 |  | #if defined(SUPPORT_SCSI) | 
 |  | static const TCHAR xmenu_scsi[] = _T("SCSI #%d"); | 
 |  | static const TCHAR xmenu_open[] = _T("&Open..."); | 
 |  | static const TCHAR xmenu_remove[] = _T("&Remove"); | 
 |  | #endif | 
 |  |  | 
 |  | #if defined(SUPPORT_SCSI) | 
 |  | static void addscsimenu(HMENU hMenu, UINT drv, UINT16 open, UINT16 eject) { | 
 |  |  | 
 |  | HMENU   hSubMenu; | 
 |  | TCHAR   buf[16]; | 
 |  |  | 
 |  | hSubMenu = CreatePopupMenu(); | 
 |  | AppendMenu(hSubMenu, MF_STRING, open, xmenu_open); | 
 |  | AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL); | 
 |  | AppendMenu(hSubMenu, MF_STRING, eject, xmenu_remove); | 
 |  |  | 
 |  | wsprintf(buf, xmenu_scsi, drv); | 
 |  | AppendMenu(hMenu, MF_POPUP, (UINT32)hSubMenu, buf); | 
 |  | } | 
 |  | #endif | 
 |  |  | 
 |  | void xmenu_initialize(void) { | 
 |  |  | 
 |  | HMENU   hMenu; | 
 |  | HMENU   hSubMenu; | 
 |  |  | 
 |  | hMenu = GetMenu(hWndMain); | 
 |  |  | 
 |  | if (np2oscfg.I286SAVE) { | 
 |  | hSubMenu = GetSubMenu(hMenu, 6); | 
 |  | InsertMenu(hSubMenu, 6, | 
 |  | MF_BYPOSITION | MF_STRING, IDM_I286SAVE, str_i286save); | 
 |  | } | 
 |  | #if defined(SUPPORT_WAVEREC) | 
 |  | hSubMenu = GetSubMenu(hMenu, 6); | 
 |  | InsertMenu(hSubMenu, 2, | 
 |  | MF_BYPOSITION | MF_STRING, IDM_WAVEREC, str_waverec); | 
 |  | #endif | 
 |  |  | 
 |  | #if defined(SUPPORT_SCSI) | 
 |  | hSubMenu = GetSubMenu(hMenu, 3); | 
 |  | AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL); | 
 |  | addscsimenu(hSubMenu, 0, IDM_SCSI0OPEN, IDM_SCSI0EJECT); | 
 |  | addscsimenu(hSubMenu, 1, IDM_SCSI1OPEN, IDM_SCSI1EJECT); | 
 |  | addscsimenu(hSubMenu, 2, IDM_SCSI2OPEN, IDM_SCSI2EJECT); | 
 |  | addscsimenu(hSubMenu, 3, IDM_SCSI3OPEN, IDM_SCSI3EJECT); | 
 |  | #endif | 
 |  | } | 
 |  |  | 
 | void xmenu_disablewindow(void) { | void xmenu_disablewindow(void) { | 
 |  |  | 
| Line 20  void xmenu_disablewindow(void) { | Line 91  void xmenu_disablewindow(void) { | 
 | EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); | EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); | 
 | } | } | 
 |  |  | 
| void xmenu_setroltate(BYTE value) { | void xmenu_setroltate(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 30  void xmenu_setroltate(BYTE value) { | Line 101  void xmenu_setroltate(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); | 
 | } | } | 
 |  |  | 
| void xmenu_setdispmode(BYTE value) { | void xmenu_setdispmode(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2cfg.DISPSYNC = value; | np2cfg.DISPSYNC = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_DISPSYNC, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_DISPSYNC, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setraster(BYTE value) { | void xmenu_setraster(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2cfg.RASTER = value; | np2cfg.RASTER = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_RASTER, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_RASTER, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setwaitflg(BYTE value) { | void xmenu_setwaitflg(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2oscfg.NOWAIT = value; | np2oscfg.NOWAIT = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_NOWAIT, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_NOWAIT, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setframe(BYTE value) { | void xmenu_setframe(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 64  void xmenu_setframe(BYTE value) { | Line 135  void xmenu_setframe(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_15FPS, MFCHECK(value == 4)); | CheckMenuItem(hmenu, IDM_15FPS, MFCHECK(value == 4)); | 
 | } | } | 
 |  |  | 
| void xmenu_setkey(BYTE value) { | void xmenu_setkey(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 78  void xmenu_setkey(BYTE value) { | Line 149  void xmenu_setkey(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); | 
 | } | } | 
 |  |  | 
| void xmenu_setxshift(BYTE value) { | void xmenu_setxshift(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 89  void xmenu_setxshift(BYTE value) { | Line 160  void xmenu_setxshift(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_XGRPH, MFCHECK(value & 4)); | CheckMenuItem(hmenu, IDM_XGRPH, MFCHECK(value & 4)); | 
 | } | } | 
 |  |  | 
| void xmenu_setf12copy(BYTE value) { | void xmenu_setf12copy(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| if (value >= 5) { | if (value > 4) { | 
 | value = 0; | value = 0; | 
 | } | } | 
 | np2oscfg.F12COPY = value; | np2oscfg.F12COPY = value; | 
| Line 105  void xmenu_setf12copy(BYTE value) { | Line 176  void xmenu_setf12copy(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_F12COMMA, MFCHECK(value == 4)); | CheckMenuItem(hmenu, IDM_F12COMMA, MFCHECK(value == 4)); | 
 | } | } | 
 |  |  | 
| void xmenu_setbeepvol(BYTE value) { | void xmenu_setbeepvol(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 118  void xmenu_setbeepvol(BYTE value) { | Line 189  void xmenu_setbeepvol(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_BEEPHIGH, MFCHECK(value == 3)); | CheckMenuItem(hmenu, IDM_BEEPHIGH, MFCHECK(value == 3)); | 
 | } | } | 
 |  |  | 
| void xmenu_setsound(BYTE value) { | void xmenu_setsound(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 137  void xmenu_setsound(BYTE value) { | Line 208  void xmenu_setsound(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80)); | CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80)); | 
 | } | } | 
 |  |  | 
| void xmenu_setjastsound(BYTE value) { | void xmenu_setjastsound(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2oscfg.jastsnd = value; | np2oscfg.jastsnd = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_JASTSOUND, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_JASTSOUND, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setmotorflg(BYTE value) { | void xmenu_setmotorflg(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2cfg.MOTOR = value; | np2cfg.MOTOR = value; | 
| CheckMenuItem(GetMenu(hWndMain), IDM_SEEKWAIT, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setextmem(BYTE value) { | void xmenu_setextmem(UINT8 value) { | 
 |  |  | 
 | HMENU   hmenu; | HMENU   hmenu; | 
 |  |  | 
| Line 162  void xmenu_setextmem(BYTE value) { | Line 233  void xmenu_setextmem(BYTE value) { | 
 | CheckMenuItem(hmenu, IDM_MEM16, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_MEM16, MFCHECK(value == 1)); | 
 | CheckMenuItem(hmenu, IDM_MEM36, MFCHECK(value == 3)); | CheckMenuItem(hmenu, IDM_MEM36, MFCHECK(value == 3)); | 
 | CheckMenuItem(hmenu, IDM_MEM76, MFCHECK(value == 7)); | CheckMenuItem(hmenu, IDM_MEM76, MFCHECK(value == 7)); | 
 |  | CheckMenuItem(hmenu, IDM_MEM116, MFCHECK(value == 11)); | 
 |  | CheckMenuItem(hmenu, IDM_MEM136, MFCHECK(value == 13)); | 
 | } | } | 
 |  |  | 
| void xmenu_setmouse(BYTE value) { | void xmenu_setmouse(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2oscfg.MOUSE_SW = value; | np2oscfg.MOUSE_SW = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_MOUSE, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_MOUSE, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_sets98logging(BYTE value) { | #if defined(SUPPORT_S98) | 
|  | void xmenu_sets98logging(UINT8 value) { | 
 |  |  | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_S98LOGGING, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_S98LOGGING, MFCHECK(value)); | 
 | } | } | 
 |  | #endif | 
 |  |  | 
| void xmenu_setbtnmode(BYTE value) { | #if defined(SUPPORT_WAVEREC) | 
|  | void xmenu_setwaverec(UINT8 value) { | 
|  |  | 
|  | CheckMenuItem(GetMenu(hWndMain), IDM_WAVEREC, MFCHECK(value)); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | void xmenu_setbtnmode(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2cfg.BTN_MODE = value; | np2cfg.BTN_MODE = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_JOYX, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_JOYX, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setbtnrapid(BYTE value) { | void xmenu_setbtnrapid(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2cfg.BTN_RAPID = value; | np2cfg.BTN_RAPID = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_RAPID, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_RAPID, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
| void xmenu_setmsrapid(BYTE value) { | void xmenu_setmsrapid(UINT8 value) { | 
 |  |  | 
 | value &= 1; | value &= 1; | 
 | np2cfg.MOUSERAPID = value; | np2cfg.MOUSERAPID = value; | 
 | CheckMenuItem(GetMenu(hWndMain), IDM_MSRAPID, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_MSRAPID, MFCHECK(value)); | 
 | } | } | 
 |  |  | 
 | void xmenu_seti286save(BYTE value) { |  | 
 |  |  | 
 | if (value) { |  | 
 | InsertMenu(GetSubMenu(GetMenu(hWndMain), 6), 10, |  | 
 | MF_BYPOSITION | MF_STRING, IDM_I286SAVE, menu_i286save); |  | 
 | } |  | 
 | } |  | 
 |  |  |