|
|
| version 1.1, 2003/10/16 17:59:23 | version 1.7, 2005/02/07 14:46:15 |
|---|---|
| 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) |
| void disable_windowmenu(void) { | // ---- |
| HMENU hmenu = GetMenu(hWndMain); | static const char smenu_memdump[] = "&Memory Dump"; |
| EnableMenuItem(hmenu, IDM_WINDOW, MF_GRAYED); | void sysmenu_initialize(void) { |
| EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); | |
| } | |
| void xmenu_setsound(BYTE value) { | |
| HMENU hmenu = GetMenu(hWndMain); | HMENU hMenu; |
| sysmng_update(SYS_UPDATESBOARD); | if (np2oscfg.I286SAVE) { |
| np2cfg.SOUND_SW = value; | hMenu = GetSystemMenu(hWndMain, FALSE); |
| CheckMenuItem(hmenu, IDM_NOSOUND, MFCHECK(np2cfg.SOUND_SW == 0)); | InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_MEMORYDUMP, |
| CheckMenuItem(hmenu, IDM_PC9801_14, MFCHECK(np2cfg.SOUND_SW & 1)); | smenu_memdump); |
| CheckMenuItem(hmenu, IDM_PC9801_26K, MFCHECK(np2cfg.SOUND_SW & 2)); | InsertMenu(hMenu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); |
| CheckMenuItem(hmenu, IDM_PC9801_86, MFCHECK(np2cfg.SOUND_SW & 4)); | } |
| CheckMenuItem(hmenu, IDM_PC9801_118, MFCHECK(np2cfg.SOUND_SW & 8)); | |
| CheckMenuItem(hmenu, IDM_CHIBIOTO, MFCHECK(np2cfg.SOUND_SW & 0x10)); | |
| CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(np2cfg.SOUND_SW & 0x20)); | |
| CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(np2cfg.SOUND_SW & 0x40)); | |
| CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(np2cfg.SOUND_SW & 0x80)); | |
| } | } |
| void xmenu_setbeepvol(BYTE value) { | |
| HMENU hmenu = GetMenu(hWndMain); | // ---- |
| np2cfg.BEEP_VOL = value & 3; | static const char str_i286save[] = "&i286 save"; |
| CheckMenuItem(hmenu, IDM_BEEPOFF, MFCHECK(np2cfg.BEEP_VOL == 0)); | #if defined(SUPPORT_WAVEREC) |
| CheckMenuItem(hmenu, IDM_BEEPLOW, MFCHECK(np2cfg.BEEP_VOL == 1)); | static const char str_waverec[] = "&Wave Record"; |
| CheckMenuItem(hmenu, IDM_BEEPMID, MFCHECK(np2cfg.BEEP_VOL == 2)); | #endif |
| CheckMenuItem(hmenu, IDM_BEEPHIGH, MFCHECK(np2cfg.BEEP_VOL == 3)); | #if defined(SUPPORT_SCSI) |
| } | static const char xmenu_scsi[] = "SCSI #%d"; |
| static const char xmenu_open[] = "&Open..."; | |
| static const char xmenu_remove[] = "&Remove"; | |
| #endif | |
| void xmenu_setkey(BYTE value) { | #if defined(SUPPORT_SCSI) |
| static void addscsimenu(HMENU hMenu, UINT drv, UINT16 open, UINT16 eject) { | |
| HMENU hmenu = GetMenu(hWndMain); | HMENU hSubMenu; |
| char buf[16]; | |
| if (value >= 3) { | hSubMenu = CreatePopupMenu(); |
| value = 0; | AppendMenu(hSubMenu, MF_STRING, open, xmenu_open); |
| } | AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL); |
| np2cfg.KEY_MODE = value; | AppendMenu(hSubMenu, MF_STRING, eject, xmenu_remove); |
| CheckMenuItem(hmenu, IDM_KEY, MFCHECK(value == 0)); | |
| CheckMenuItem(hmenu, IDM_JOY1, MFCHECK(value == 1)); | |
| CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); | |
| } | |
| void xmenu_setbtnrapid(BYTE value) { | |
| np2cfg.BTN_RAPID = value; | SPRINTF(buf, xmenu_scsi, drv); |
| CheckMenuItem(GetMenu(hWndMain), IDM_RAPID, MFCHECK(np2cfg.BTN_RAPID)); | AppendMenu(hMenu, MF_POPUP, (UINT32)hSubMenu, buf); |
| } | } |
| #endif | |
| void xmenu_setbtnmode(BYTE value) { | void xmenu_initialize(void) { |
| np2cfg.BTN_MODE = value & 1; | HMENU hMenu; |
| CheckMenuItem(GetMenu(hWndMain), IDM_JOYX, MFCHECK(np2cfg.BTN_MODE)); | HMENU hSubMenu; |
| } | |
| void xmenu_setmsrapid(BYTE value) { | hMenu = GetMenu(hWndMain); |
| np2cfg.MOUSERAPID = value; | if (np2oscfg.I286SAVE) { |
| CheckMenuItem(GetMenu(hWndMain), IDM_MSRAPID, MFCHECK(np2cfg.MOUSERAPID)); | 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_setwaitflg(BYTE value) { | void xmenu_disablewindow(void) { |
| np2oscfg.NOWAIT = value & 1; | HMENU hmenu; |
| CheckMenuItem(GetMenu(hWndMain), IDM_NOWAIT, MFCHECK(np2oscfg.NOWAIT)); | |
| hmenu = GetMenu(hWndMain); | |
| EnableMenuItem(hmenu, IDM_WINDOW, MF_GRAYED); | |
| EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); | |
| } | } |
| void xmenu_setframe(BYTE value) { | void xmenu_setroltate(UINT8 value) { |
| HMENU hmenu = GetMenu(hWndMain); | HMENU hmenu; |
| np2oscfg.DRAW_SKIP = value; | hmenu = GetMenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_AUTOFPS, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_ROLNORMAL, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_60FPS, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_ROLLEFT, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_30FPS, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); |
| CheckMenuItem(hmenu, IDM_20FPS, MFCHECK(value == 3)); | |
| CheckMenuItem(hmenu, IDM_15FPS, MFCHECK(value == 4)); | |
| } | } |
| 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_setmouse(BYTE value) { | void xmenu_setraster(UINT8 value) { |
| value &= 1; | value &= 1; |
| np2oscfg.MOUSE_SW = value; | np2cfg.RASTER = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_MOUSE, MFCHECK(value)); | CheckMenuItem(GetMenu(hWndMain), IDM_RASTER, MFCHECK(value)); |
| } | } |
| void xmenu_setmotorflg(BYTE value) { | void xmenu_setwaitflg(UINT8 value) { |
| np2cfg.MOTOR = value & 1; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_SEEKSND, MFCHECK(np2cfg.MOTOR)); | |
| } | |
| void xmenu_seti286save(BYTE value) { | value &= 1; |
| np2oscfg.NOWAIT = value; | |
| if (!value) { | CheckMenuItem(GetMenu(hWndMain), IDM_NOWAIT, MFCHECK(value)); |
| EnableMenuItem(GetMenu(hWndMain), IDM_I286SAVE, MF_GRAYED); | |
| } | |
| } | } |
| void xmenu_setroltate(BYTE value) { | void xmenu_setframe(UINT8 value) { |
| HMENU hmenu = GetMenu(hWndMain); | HMENU hmenu; |
| CheckMenuItem(hmenu, IDM_ROLNORMAL, MFCHECK(value == 0)); | np2oscfg.DRAW_SKIP = value; |
| CheckMenuItem(hmenu, IDM_ROLLEFT, MFCHECK(value == 1)); | hmenu = GetMenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_AUTOFPS, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_60FPS, MFCHECK(value == 1)); | |
| CheckMenuItem(hmenu, IDM_30FPS, MFCHECK(value == 2)); | |
| CheckMenuItem(hmenu, IDM_20FPS, MFCHECK(value == 3)); | |
| CheckMenuItem(hmenu, IDM_15FPS, MFCHECK(value == 4)); | |
| } | } |
| void xmenu_sets98logging(BYTE value) { | void xmenu_setkey(UINT8 value) { |
| CheckMenuItem(GetMenu(hWndMain), IDM_S98LOGGING, MFCHECK(value)); | HMENU hmenu; |
| if (value >= 4) { | |
| value = 0; | |
| } | |
| np2cfg.KEY_MODE = value; | |
| hmenu = GetMenu(hWndMain); | |
| CheckMenuItem(hmenu, IDM_KEY, MFCHECK(value == 0)); | |
| CheckMenuItem(hmenu, IDM_JOY1, MFCHECK(value == 1)); | |
| CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); | |
| } | } |
| void xmenu_setxshift(BYTE value) { | void xmenu_setxshift(UINT8 value) { |
| HMENU hmenu = GetMenu(hWndMain); | HMENU hmenu; |
| np2cfg.XSHIFT = value; | np2cfg.XSHIFT = value; |
| hmenu = GetMenu(hWndMain); | |
| CheckMenuItem(hmenu, IDM_XSHIFT, MFCHECK(value & 1)); | CheckMenuItem(hmenu, IDM_XSHIFT, MFCHECK(value & 1)); |
| CheckMenuItem(hmenu, IDM_XCTRL, MFCHECK(value & 2)); | CheckMenuItem(hmenu, IDM_XCTRL, MFCHECK(value & 2)); |
| 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 = GetMenu(hWndMain); | HMENU hmenu; |
| if (value >= 3) { | if (value > 4) { |
| value = 0; | value = 0; |
| } | } |
| np2oscfg.F12COPY = value; | np2oscfg.F12COPY = value; |
| hmenu = GetMenu(hWndMain); | |
| CheckMenuItem(hmenu, IDM_F12MOUSE, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_F12MOUSE, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_F12COPY, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_F12COPY, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_F12STOP, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_F12STOP, MFCHECK(value == 2)); |
| CheckMenuItem(hmenu, IDM_F12EQU, MFCHECK(value == 3)); | |
| CheckMenuItem(hmenu, IDM_F12COMMA, MFCHECK(value == 4)); | |
| } | |
| void xmenu_setbeepvol(UINT8 value) { | |
| HMENU hmenu; | |
| value &= 3; | |
| np2cfg.BEEP_VOL = value; | |
| hmenu = GetMenu(hWndMain); | |
| CheckMenuItem(hmenu, IDM_BEEPOFF, MFCHECK(value == 0)); | |
| CheckMenuItem(hmenu, IDM_BEEPLOW, MFCHECK(value == 1)); | |
| CheckMenuItem(hmenu, IDM_BEEPMID, MFCHECK(value == 2)); | |
| CheckMenuItem(hmenu, IDM_BEEPHIGH, MFCHECK(value == 3)); | |
| } | |
| void xmenu_setsound(UINT8 value) { | |
| HMENU hmenu; | |
| sysmng_update(SYS_UPDATESBOARD); | |
| np2cfg.SOUND_SW = value; | |
| hmenu = GetMenu(hWndMain); | |
| CheckMenuItem(hmenu, IDM_NOSOUND, MFCHECK(value == 0x00)); | |
| CheckMenuItem(hmenu, IDM_PC9801_14, MFCHECK(value == 0x01)); | |
| CheckMenuItem(hmenu, IDM_PC9801_26K, MFCHECK(value == 0x02)); | |
| CheckMenuItem(hmenu, IDM_PC9801_86, MFCHECK(value == 0x04)); | |
| CheckMenuItem(hmenu, IDM_PC9801_26_86, MFCHECK(value == 0x06)); | |
| CheckMenuItem(hmenu, IDM_PC9801_86_CB, MFCHECK(value == 0x14)); | |
| CheckMenuItem(hmenu, IDM_PC9801_118, MFCHECK(value == 0x08)); | |
| CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(value == 0x20)); | |
| CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(value == 0x40)); | |
| CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80)); | |
| } | |
| void xmenu_setjastsound(UINT8 value) { | |
| value &= 1; | |
| np2oscfg.jastsnd = value; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_JASTSOUND, MFCHECK(value)); | |
| } | |
| void xmenu_setmotorflg(UINT8 value) { | |
| value &= 1; | |
| np2cfg.MOTOR = value; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); | |
| } | } |
| void xmenu_setextmem(BYTE value) { // ver0.28 | void xmenu_setextmem(UINT8 value) { |
| HMENU hmenu = GetMenu(hWndMain); | HMENU hmenu; |
| sysmng_update(SYS_UPDATEMEMORY); | sysmng_update(SYS_UPDATEMEMORY); |
| np2cfg.EXTMEM = value; | np2cfg.EXTMEM = value; |
| hmenu = GetMenu(hWndMain); | |
| CheckMenuItem(hmenu, IDM_MEM640, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_MEM640, MFCHECK(value == 0)); |
| 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(UINT8 value) { | |
| value &= 1; | |
| np2oscfg.MOUSE_SW = value; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_MOUSE, MFCHECK(value)); | |
| } | } |
| void xmenu_setraster(BYTE value) { | #if defined(SUPPORT_S98) |
| void xmenu_sets98logging(UINT8 value) { | |
| CheckMenuItem(GetMenu(hWndMain), IDM_S98LOGGING, MFCHECK(value)); | |
| } | |
| #endif | |
| #if defined(SUPPORT_WAVEREC) | |
| void xmenu_setwaverec(UINT8 value) { | |
| CheckMenuItem(GetMenu(hWndMain), IDM_WAVEREC, MFCHECK(value)); | |
| } | |
| #endif | |
| np2cfg.RASTER = (value & 1); | void xmenu_setbtnmode(UINT8 value) { |
| CheckMenuItem(GetMenu(hWndMain), IDM_RASTER, MFCHECK(np2cfg.RASTER)); | |
| value &= 1; | |
| np2cfg.BTN_MODE = value; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_JOYX, MFCHECK(value)); | |
| } | |
| void xmenu_setbtnrapid(UINT8 value) { | |
| value &= 1; | |
| np2cfg.BTN_RAPID = value; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_RAPID, MFCHECK(value)); | |
| } | |
| void xmenu_setmsrapid(UINT8 value) { | |
| value &= 1; | |
| np2cfg.MOUSERAPID = value; | |
| CheckMenuItem(GetMenu(hWndMain), IDM_MSRAPID, MFCHECK(value)); | |
| } | } |