--- np2/win9x/np2.cpp 2003/10/28 18:21:05 1.14 +++ np2/win9x/np2.cpp 2004/03/07 07:51:26 1.43 @@ -25,11 +25,10 @@ #include "sstpmsg.h" #include "dclock.h" #include "toolwin.h" -#ifdef USE_ROMEO #include "juliet.h" -#endif +#include "np2class.h" #include "dialog.h" -#include "memory.h" +#include "cpucore.h" #include "pccore.h" #include "iocore.h" #include "pc9861k.h" @@ -42,9 +41,10 @@ #include "diskdrv.h" #include "fddfile.h" #include "timing.h" -#include "statsave.h" +#include "keystat.h" #include "debugsub.h" #include "keydisp.h" +#include "kdispwin.h" #include "viewer.h" @@ -52,17 +52,17 @@ #define OPENING_WAIT 1500 #endif -#define STATSAVEMAX 10 - static char szClassName[] = "NP2-MainWindow"; HWND hWndMain; HINSTANCE hInst; HINSTANCE hPrev; int mmxflag; + BYTE np2break = 0; // ver0.30 + BOOL winui_en; NP2OSCFG np2oscfg = { "Neko Project II", "NP2", - CW_USEDEFAULT, CW_USEDEFAULT, 1, 1, 0, 1, 0, 2, + CW_USEDEFAULT, CW_USEDEFAULT, 1, 1, 0, 1, 0, 0, 0, 0, KEY_UNKNOWN, 0, 0, 0, 0, {1, 2, 2, 1}, {5, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 @@ -70,36 +70,69 @@ static char szClassName[] = "NP2-MainWi {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 0xffffff, 0xffbf6a, 0, 0, - 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0}; // ver0.38 + 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + char fddfolder[MAX_PATH]; + char hddfolder[MAX_PATH]; + char bmpfilefolder[MAX_PATH]; + char modulefile[MAX_PATH]; + +static UINT framecnt = 0; +static UINT waitcnt = 0; +static UINT framemax = 1; +static BYTE np2stopemulate = 0; +static int np2opening = 1; +static int np2quitmsg = 0; +static HMENU hStat = NULL; +static BYTE scrnmode; +static WINLOCEX smwlex; + +static const char np2help[] = "np2.chm"; +static const char np2flagext[] = "S%02d"; - char fddfolder[MAX_PATH]; - char hddfolder[MAX_PATH]; - char bmpfilefolder[MAX_PATH]; - char mimpideffile[MAX_PATH]; - char modulefile[MAX_PATH]; - -static UINT framecnt = 0; -static UINT waitcnt = 0; -static UINT framemax = 1; - BYTE np2break = 0; // ver0.30 -static BYTE np2stopemulate = 0; -static int np2opening = 1; -static int np2quitmsg = 0; - HMENU hStat = NULL; -static const char np2help[] = "np2.hlp"; -static const char np2resume[] = "sav"; +static void winuienter(void) { + winui_en = TRUE; + soundmng_disable(SNDPROC_MAIN); + scrnmng_topwinui(); +} -static BYTE scrnmode; +static void winuileave(void) { + + scrnmng_clearwinui(); + soundmng_enable(SNDPROC_MAIN); + winui_en = FALSE; +} + +WINLOCEX np2_winlocexallwin(HWND base) { + + HWND list[3]; + UINT i; + + list[0] = hWndMain; + list[1] = toolwin_gethwnd(); + list[2] = kdispwin_gethwnd(); + for (i=0; i<3; i++) { + if (list[i] == base) { + list[i] = NULL; + } + } + if (base != hWndMain) { // hWndMainのみ全体移動 + base = NULL; + } + return(winlocex_create(base, list, 3)); +} static void changescreen(BYTE newmode) { - BYTE change; - BYTE renewal; + BYTE change; + BYTE renewal; + WINLOCEX wlex; change = scrnmode ^ newmode; renewal = (change & SCRNMODE_FULLSCREEN); + wlex = NULL; if (newmode & SCRNMODE_FULLSCREEN) { renewal |= (change & SCRNMODE_HIGHCOLOR); } @@ -107,9 +140,16 @@ static void changescreen(BYTE newmode) { renewal |= (change & SCRNMODE_ROTATEMASK); } if (renewal) { + if (renewal & SCRNMODE_FULLSCREEN) { + toolwin_destroy(); + kdispwin_destroy(); + } + else if (renewal & SCRNMODE_ROTATEMASK) { + wlex = np2_winlocexallwin(hWndMain); + winlocex_setholdwnd(wlex, hWndMain); + } soundmng_stop(); - mouse_running(MOUSE_STOP); - keydisp_destroy(); + mousemng_disable(MOUSEPROC_WINUI); scrnmng_destroy(); if (scrnmng_create(newmode) == SUCCESS) { scrnmode = newmode; @@ -121,7 +161,21 @@ static void changescreen(BYTE newmode) { } } scrndraw_redraw(); - mouse_running(MOUSE_CONT); + if (renewal & SCRNMODE_FULLSCREEN) { + if (!scrnmng_isfullscreen()) { + if (np2oscfg.toolwin) { + toolwin_create(); + } + if (np2oscfg.keydisp) { + kdispwin_create(); + } + } + } + else if (renewal & SCRNMODE_ROTATEMASK) { + winlocex_move(wlex); + winlocex_destroy(wlex); + } + mousemng_enable(MOUSEPROC_WINUI); soundmng_play(); } else { @@ -154,7 +208,7 @@ void np2active_renewal(void) { / if (np2break & (~NP2BREAK_MAIN)) { np2stopemulate = 2; - soundmng_disable(); + soundmng_disable(SNDPROC_MASTER); } else if (np2break & NP2BREAK_MAIN) { if (np2oscfg.background & 1) { @@ -164,18 +218,22 @@ void np2active_renewal(void) { / np2stopemulate = 0; } if (np2oscfg.background) { - soundmng_disable(); + soundmng_disable(SNDPROC_MASTER); } else { - soundmng_enable(); + soundmng_enable(SNDPROC_MASTER); } } else { np2stopemulate = 0; - soundmng_enable(); + soundmng_enable(SNDPROC_MASTER); } } + +// ---- resume and statsave + +#if defined(SUPPORT_RESUME) || defined(SUPPORT_STATSAVE) static void getstatfilename(char *path, const char *ext, int size) { file_cpyname(path, modulefile, size); @@ -215,15 +273,14 @@ static int flagload(const char *ext, con char buf[1024]; getstatfilename(path, ext, sizeof(path)); - soundmng_stop(); - scrnmng_topwinui(); + winuienter(); id = IDYES; ret = statsave_check(path, buf, sizeof(buf)); - if (ret & (~NP2FLAG_DISKCHG)) { + if (ret & (~STATFLAG_DISKCHG)) { MessageBox(hWndMain, "Couldn't restart", title, MB_OK | MB_ICONSTOP); id = IDNO; } - else if ((!force) && (ret & NP2FLAG_DISKCHG)) { + else if ((!force) && (ret & STATFLAG_DISKCHG)) { char buf2[1024 + 256]; wsprintf(buf2, "Conflict!\n\n%s\nContinue?", buf); id = MessageBox(hWndMain, buf2, title, @@ -236,583 +293,707 @@ static int flagload(const char *ext, con } sysmng_workclockreset(); sysmng_updatecaption(1); - scrnmng_clearwinui(); - soundmng_play(); + winuileave(); return(id); } +#endif // ---- proc -static void winuienter(void) { +static void np2popup(HWND hWnd, LPARAM lp) { - soundmng_stop(); - scrnmng_topwinui(); + HMENU mainmenu; + HMENU hMenu; + POINT pt; + + mainmenu = (HMENU)GetWindowLong(hWnd, NP2GWL_HMENU); + if (mainmenu == NULL) { + return; + } + hMenu = CreatePopupMenu(); + menu_addmenubar(hMenu, mainmenu); + pt.x = LOWORD(lp); + pt.y = HIWORD(lp); + ClientToScreen(hWnd, &pt); + TrackPopupMenu(hMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL); + DestroyMenu(hMenu); } -static void winuileave(void) { +// extern "C" void iptrace_out(void); - scrnmng_clearwinui(); - soundmng_play(); -} - -LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { +static void np2cmd(HWND hWnd, UINT16 cmd) { - PAINTSTRUCT ps; - RECT rc; - HDC hdc; - BOOL b; - UINT update; + UINT update; + BOOL b; - switch (msg) { - case WM_CREATE: - sstp_construct(hWnd); -#ifndef __GNUC__ - WINNLSEnableIME(hWnd, FALSE); -#endif + update = 0; + switch(cmd) { + case IDM_RESET: + b = FALSE; + if (!np2oscfg.comfirm) { + b = TRUE; + } + else if (sstpconfirm_reset()) { + winuienter(); + if (MessageBox(hWnd, "Sure?", "Reset", + MB_ICONQUESTION | MB_YESNO) == IDYES) { + b = TRUE; + } + winuileave(); + } + if (b) { + sstpmsg_reset(); + juliet_YMF288Reset(); + pccore_cfgupdate(); + pccore_reset(); + } break; - case WM_SYSCOMMAND: - update = 0; - switch(wParam) { - case IDM_TOOLWIN: - toolwin_open(); - break; - - case IDM_SCREENCENTER: - if ((!scrnmng_isfullscreen()) && - (!(GetWindowLong(hWnd, GWL_STYLE) & - (WS_MAXIMIZE | WS_MINIMIZE)))) { - wincentering(hWnd); - } - break; + case IDM_CONFIG: + winuienter(); + sstpmsg_config(); + DialogBox(hInst, MAKEINTRESOURCE(IDD_CONFIG), + hWnd, (DLGPROC)CfgDialogProc); + winuileave(); + break; - case IDM_SNAPENABLE: - xmenu_setwinsnap(np2oscfg.WINSNAP ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_NEWDISK: + winuienter(); + dialog_newdisk(hWnd); + winuileave(); + break; - case IDM_BACKGROUND: - xmenu_setbackground(np2oscfg.background ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_CHANGEFONT: + winuienter(); + dialog_font(hWnd); + winuileave(); + break; - case IDM_BGSOUND: - xmenu_setbgsound(np2oscfg.background ^ 2); - update |= SYS_UPDATECFG; - break; + case IDM_EXIT: + SendMessage(hWnd, WM_CLOSE, 0, 0L); + break; - case IDM_KEYDISP: - keydisp_create(); - break; + case IDM_FDD1OPEN: + winuienter(); + dialog_changefdd(hWnd, 0); + winuileave(); + break; - case IDM_MEMORYDUMP: - debugsub_memorydump(); - break; + case IDM_FDD1EJECT: + diskdrv_setfdd(0, NULL, 0); + toolwin_setfdd(0, NULL); + break; - case IDM_DEBUGUTY: - viewer_open(); - break; + case IDM_FDD2OPEN: + winuienter(); + dialog_changefdd(hWnd, 1); + winuileave(); + break; - case IDM_SCRNMUL4: // ver0.26 - case IDM_SCRNMUL6: - case IDM_SCRNMUL8: - case IDM_SCRNMUL10: - case IDM_SCRNMUL12: - case IDM_SCRNMUL16: - if ((!scrnmng_isfullscreen()) && - !(GetWindowLong(hWndMain, GWL_STYLE) & WS_MINIMIZE)) { - xmenu_setscrnmul(wParam - IDM_SCRNMUL); - scrnmng_setmultiple(wParam - IDM_SCRNMUL); - } - break; + case IDM_FDD2EJECT: + diskdrv_setfdd(1, NULL, 0); + toolwin_setfdd(1, NULL); + break; - default: - return(DefWindowProc(hWnd, msg, wParam, lParam)); - } - sysmng_update(update); + case IDM_FDD3OPEN: + winuienter(); + dialog_changefdd(hWnd, 2); + winuileave(); break; - case WM_COMMAND: - update = 0; - switch(LOWORD(wParam)) { - case IDM_RESET: - b = FALSE; - if (!np2oscfg.comfirm) { - b = TRUE; - } - else if (sstpconfirm_reset()) { - winuienter(); - if (MessageBox(hWnd, "Sure?", "Reset", - MB_ICONQUESTION | MB_YESNO) == IDYES) { - b = TRUE; - } - winuileave(); - } - if (b) { - sstpmsg_reset(); - pccore_cfgupdate(); - pccore_reset(); - } - break; + case IDM_FDD3EJECT: + diskdrv_setfdd(2, NULL, 0); + toolwin_setfdd(2, NULL); + break; - case IDM_CONFIG: - winuienter(); - sstpmsg_config(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_CONFIG), - hWnd, (DLGPROC)CfgDialogProc); - winuileave(); - break; + case IDM_FDD4OPEN: + winuienter(); + dialog_changefdd(hWnd, 3); + winuileave(); + break; - case IDM_NEWDISK: - winuienter(); - dialog_newdisk(hWnd); - winuileave(); - break; + case IDM_FDD4EJECT: + diskdrv_setfdd(3, NULL, 0); + toolwin_setfdd(3, NULL); + break; - case IDM_CHANGEFONT: - winuienter(); - dialog_font(hWnd); - winuileave(); - break; + case IDM_SASI1OPEN: + winuienter(); + dialog_changehdd(hWnd, 0x00); + winuileave(); + break; - case IDM_EXIT: - SendMessage(hWnd, WM_CLOSE, 0, 0L); - break; + case IDM_SASI1EJECT: + diskdrv_sethdd(0x00, NULL); + break; - case IDM_FDD1OPEN: - winuienter(); - dialog_changefdd(hWnd, 0); - winuileave(); - break; + case IDM_SASI2OPEN: + winuienter(); + dialog_changehdd(hWnd, 0x01); + winuileave(); + break; - case IDM_FDD1EJECT: - diskdrv_setfdd(0, NULL, 0); - toolwin_setfdd(0, NULL); - break; + case IDM_SASI2EJECT: + diskdrv_sethdd(0x01, NULL); + break; +#if defined(SUPPORT_SCSI) + case IDM_SCSI0OPEN: + winuienter(); + dialog_changehdd(hWnd, 0x20); + winuileave(); + break; - case IDM_FDD2OPEN: - winuienter(); - dialog_changefdd(hWnd, 1); - winuileave(); - break; + case IDM_SCSI0EJECT: + diskdrv_sethdd(0x20, NULL); + break; - case IDM_FDD2EJECT: - diskdrv_setfdd(1, NULL, 0); - toolwin_setfdd(1, NULL); - break; + case IDM_SCSI1OPEN: + winuienter(); + dialog_changehdd(hWnd, 0x21); + winuileave(); + break; - case IDM_SASI1OPEN: - winuienter(); - dialog_changehdd(hWnd, 0); - winuileave(); - break; + case IDM_SCSI1EJECT: + diskdrv_sethdd(0x21, NULL); + break; - case IDM_SASI1EJECT: - diskdrv_sethdd(0, NULL); - break; + case IDM_SCSI2OPEN: + winuienter(); + dialog_changehdd(hWnd, 0x22); + winuileave(); + break; - case IDM_SASI2OPEN: - winuienter(); - dialog_changehdd(hWnd, 1); - winuileave(); - break; + case IDM_SCSI2EJECT: + diskdrv_sethdd(0x22, NULL); + break; - case IDM_SASI2EJECT: - diskdrv_sethdd(1, NULL); - break; + case IDM_SCSI3OPEN: + winuienter(); + dialog_changehdd(hWnd, 0x23); + winuileave(); + break; - case IDM_WINDOW: - changescreen(scrnmode & (~SCRNMODE_FULLSCREEN)); - break; + case IDM_SCSI3EJECT: + diskdrv_sethdd(0x23, NULL); + break; +#endif + case IDM_WINDOW: + changescreen(scrnmode & (~SCRNMODE_FULLSCREEN)); + break; - case IDM_FULLSCREEN: - changescreen(scrnmode | SCRNMODE_FULLSCREEN); - break; + case IDM_FULLSCREEN: + changescreen(scrnmode | SCRNMODE_FULLSCREEN); + break; - case IDM_ROLNORMAL: - xmenu_setroltate(0); - changescreen(scrnmode & (~SCRNMODE_ROTATEMASK)); - break; + case IDM_ROLNORMAL: + xmenu_setroltate(0); + changescreen(scrnmode & (~SCRNMODE_ROTATEMASK)); + break; - case IDM_ROLLEFT: - xmenu_setroltate(1); - changescreen((scrnmode & (~SCRNMODE_ROTATEMASK)) | + case IDM_ROLLEFT: + xmenu_setroltate(1); + changescreen((scrnmode & (~SCRNMODE_ROTATEMASK)) | SCRNMODE_ROTATELEFT); - break; + break; - case IDM_ROLRIGHT: - xmenu_setroltate(2); - changescreen((scrnmode & (~SCRNMODE_ROTATEMASK)) | + case IDM_ROLRIGHT: + xmenu_setroltate(2); + changescreen((scrnmode & (~SCRNMODE_ROTATEMASK)) | SCRNMODE_ROTATERIGHT); - break; + break; - case IDM_DISPSYNC: - xmenu_setdispmode(np2cfg.DISPSYNC ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_DISPSYNC: + xmenu_setdispmode(np2cfg.DISPSYNC ^ 1); + update |= SYS_UPDATECFG; + break; - case IDM_RASTER: - xmenu_setraster(np2cfg.RASTER ^ 1); - if (np2cfg.RASTER) { - changescreen(scrnmode | SCRNMODE_HIGHCOLOR); - } - else { - changescreen(scrnmode & (~SCRNMODE_HIGHCOLOR)); - } - update |= SYS_UPDATECFG; - break; + case IDM_RASTER: + xmenu_setraster(np2cfg.RASTER ^ 1); + if (np2cfg.RASTER) { + changescreen(scrnmode | SCRNMODE_HIGHCOLOR); + } + else { + changescreen(scrnmode & (~SCRNMODE_HIGHCOLOR)); + } + update |= SYS_UPDATECFG; + break; - case IDM_NOWAIT: - xmenu_setwaitflg(np2oscfg.NOWAIT ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_NOWAIT: + xmenu_setwaitflg(np2oscfg.NOWAIT ^ 1); + update |= SYS_UPDATECFG; + break; - case IDM_AUTOFPS: - xmenu_setframe(0); - update |= SYS_UPDATECFG; - break; + case IDM_AUTOFPS: + xmenu_setframe(0); + update |= SYS_UPDATECFG; + break; - case IDM_60FPS: - xmenu_setframe(1); - update |= SYS_UPDATECFG; - break; + case IDM_60FPS: + xmenu_setframe(1); + update |= SYS_UPDATECFG; + break; - case IDM_30FPS: - xmenu_setframe(2); - update |= SYS_UPDATECFG; - break; + case IDM_30FPS: + xmenu_setframe(2); + update |= SYS_UPDATECFG; + break; - case IDM_20FPS: - xmenu_setframe(3); - update |= SYS_UPDATECFG; - break; + case IDM_20FPS: + xmenu_setframe(3); + update |= SYS_UPDATECFG; + break; - case IDM_15FPS: - xmenu_setframe(4); - update |= SYS_UPDATECFG; - break; + case IDM_15FPS: + xmenu_setframe(4); + update |= SYS_UPDATECFG; + break; - case IDM_SCREENOPT: - winuienter(); - dialog_scropt(hWnd); - winuileave(); - break; + case IDM_SCREENOPT: + winuienter(); + dialog_scropt(hWnd); + winuileave(); + break; - case IDM_KEY: - xmenu_setkey(0); - keystat_resetjoykey(); - break; + case IDM_KEY: + xmenu_setkey(0); + keystat_resetjoykey(); + update |= SYS_UPDATECFG; + break; - case IDM_JOY1: - xmenu_setkey(1); - keystat_resetjoykey(); - break; + case IDM_JOY1: + xmenu_setkey(1); + keystat_resetjoykey(); + update |= SYS_UPDATECFG; + break; - case IDM_JOY2: - xmenu_setkey(2); - keystat_resetjoykey(); - break; + case IDM_JOY2: + xmenu_setkey(2); + keystat_resetjoykey(); + update |= SYS_UPDATECFG; + break; - case IDM_XSHIFT: - xmenu_setxshift(np2cfg.XSHIFT ^ 1); - keystat_forcerelease(0x70); - break; + case IDM_XSHIFT: + xmenu_setxshift(np2cfg.XSHIFT ^ 1); + keystat_forcerelease(0x70); + update |= SYS_UPDATECFG; + break; - case IDM_XCTRL: - xmenu_setxshift(np2cfg.XSHIFT ^ 2); - keystat_forcerelease(0x74); - break; + case IDM_XCTRL: + xmenu_setxshift(np2cfg.XSHIFT ^ 2); + keystat_forcerelease(0x74); + update |= SYS_UPDATECFG; + break; - case IDM_XGRPH: - xmenu_setxshift(np2cfg.XSHIFT ^ 4); - keystat_forcerelease(0x73); - break; + case IDM_XGRPH: + xmenu_setxshift(np2cfg.XSHIFT ^ 4); + keystat_forcerelease(0x73); + update |= SYS_UPDATECFG; + break; - case IDM_F12MOUSE: - xmenu_setf12copy(0); - keystat_resetcopyhelp(); - update |= SYS_UPDATECFG; - break; + case IDM_F12MOUSE: + xmenu_setf12copy(0); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_F12COPY: - xmenu_setf12copy(1); - keystat_resetcopyhelp(); - update |= SYS_UPDATECFG; - break; + case IDM_F12COPY: + xmenu_setf12copy(1); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_F12STOP: - xmenu_setf12copy(2); - keystat_resetcopyhelp(); - update |= SYS_UPDATECFG; - break; + case IDM_F12STOP: + xmenu_setf12copy(2); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_BEEPOFF: - xmenu_setbeepvol(0); - beep_setvol(0); - update |= SYS_UPDATECFG; - break; + case IDM_F12EQU: + xmenu_setf12copy(3); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_BEEPLOW: - xmenu_setbeepvol(1); - beep_setvol(1); - update |= SYS_UPDATECFG; - break; + case IDM_F12COMMA: + xmenu_setf12copy(4); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_BEEPMID: - xmenu_setbeepvol(2); - beep_setvol(2); - update |= SYS_UPDATECFG; - break; + case IDM_USERKEY1: + xmenu_setf12copy(5); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_BEEPHIGH: - xmenu_setbeepvol(3); - beep_setvol(3); - update |= SYS_UPDATECFG; - break; + case IDM_USERKEY2: + xmenu_setf12copy(6); + winkbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; - case IDM_NOSOUND: - xmenu_setsound(0); - update |= SYS_UPDATECFG; - break; + case IDM_BEEPOFF: + xmenu_setbeepvol(0); + beep_setvol(0); + update |= SYS_UPDATECFG; + break; - case IDM_PC9801_14: - xmenu_setsound(1); - update |= SYS_UPDATECFG; - break; + case IDM_BEEPLOW: + xmenu_setbeepvol(1); + beep_setvol(1); + update |= SYS_UPDATECFG; + break; - case IDM_PC9801_26K: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 4) { - sw &= 6; - sw ^= 2; - } - else { - sw = 2; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } - break; + case IDM_BEEPMID: + xmenu_setbeepvol(2); + beep_setvol(2); + update |= SYS_UPDATECFG; + break; - case IDM_PC9801_86: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 2) { - sw &= 6; - sw ^= 4; - } - else if (!(sw & 4)) { - sw = 4; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } - break; + case IDM_BEEPHIGH: + xmenu_setbeepvol(3); + beep_setvol(3); + update |= SYS_UPDATECFG; + break; - case IDM_PC9801_118: - xmenu_setsound(8); - update |= SYS_UPDATECFG; - break; + case IDM_NOSOUND: + xmenu_setsound(0x00); + update |= SYS_UPDATECFG; + break; - case IDM_CHIBIOTO: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 4) { - sw &= 0x14; - sw ^= 0x10; - } - else { - sw = 0x14; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } - break; + case IDM_PC9801_14: + xmenu_setsound(0x01); + update |= SYS_UPDATECFG; + break; - case IDM_SPEAKBOARD: - xmenu_setsound(0x20); - update |= SYS_UPDATECFG; - break; + case IDM_PC9801_26K: + xmenu_setsound(0x02); + update |= SYS_UPDATECFG; + break; - case IDM_SPARKBOARD: - xmenu_setsound(0x40); - update |= SYS_UPDATECFG; - break; + case IDM_PC9801_86: + xmenu_setsound(0x04); + update |= SYS_UPDATECFG; + break; - case IDM_AMD98: - xmenu_setsound(0x80); - update |= SYS_UPDATECFG; - break; + case IDM_PC9801_26_86: + xmenu_setsound(0x06); + update |= SYS_UPDATECFG; + break; - case IDM_SNDOPT: - winuienter(); - dialog_sndopt(hWnd); - winuileave(); - break; + case IDM_PC9801_86_CB: + xmenu_setsound(0x14); + update |= SYS_UPDATECFG; + break; - case IDM_SEEKSND: - xmenu_setmotorflg(np2cfg.MOTOR ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_PC9801_118: + xmenu_setsound(0x08); + update |= SYS_UPDATECFG; + break; - case IDM_MEM640: - xmenu_setextmem(0); - update |= SYS_UPDATECFG; - break; + case IDM_SPEAKBOARD: + xmenu_setsound(0x20); + update |= SYS_UPDATECFG; + break; - case IDM_MEM16: - xmenu_setextmem(1); - update |= SYS_UPDATECFG; - break; + case IDM_SPARKBOARD: + xmenu_setsound(0x40); + update |= SYS_UPDATECFG; + break; - case IDM_MEM36: - xmenu_setextmem(3); - update |= SYS_UPDATECFG; - break; + case IDM_AMD98: + xmenu_setsound(0x80); + update |= SYS_UPDATECFG; + break; - case IDM_MEM76: - xmenu_setextmem(7); - update |= SYS_UPDATECFG; - break; + case IDM_JASTSOUND: + xmenu_setjastsound(np2oscfg.jastsnd ^ 1); + update |= SYS_UPDATEOSCFG; + break; - case IDM_MOUSE: - mouse_running(MOUSE_XOR); - xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_SEEKSND: + xmenu_setmotorflg(np2cfg.MOTOR ^ 1); + update |= SYS_UPDATECFG; + break; - case IDM_SERIAL1: - winuienter(); - dialog_serial(hWnd); - winuileave(); - break; + case IDM_MEM640: + xmenu_setextmem(0); + update |= SYS_UPDATECFG; + break; - case IDM_MPUPC98: - winuienter(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_MPUPC98), + case IDM_MEM16: + xmenu_setextmem(1); + update |= SYS_UPDATECFG; + break; + + case IDM_MEM36: + xmenu_setextmem(3); + update |= SYS_UPDATECFG; + break; + + case IDM_MEM76: + xmenu_setextmem(7); + update |= SYS_UPDATECFG; + break; + + case IDM_MOUSE: + mousemng_toggle(MOUSEPROC_SYSTEM); + xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_SERIAL1: + winuienter(); + dialog_serial(hWnd); + winuileave(); + break; + + case IDM_MPUPC98: + winuienter(); + DialogBox(hInst, MAKEINTRESOURCE(IDD_MPUPC98), hWnd, (DLGPROC)MidiDialogProc); - winuileave(); - break; + winuileave(); + break; - case IDM_MIDIPANIC: // ver0.29 - rs232c_midipanic(); - mpu98ii_midipanic(); - pc9861k_midipanic(); - break; + case IDM_MIDIPANIC: // ver0.29 + rs232c_midipanic(); + mpu98ii_midipanic(); + pc9861k_midipanic(); + break; - case IDM_BMPSAVE: - winuienter(); - dialog_writebmp(hWnd); - winuileave(); - break; + case IDM_SNDOPT: + winuienter(); + dialog_sndopt(hWnd); + winuileave(); + break; - case IDM_S98LOGGING: - winuienter(); - dialog_s98(hWnd); - winuileave(); - break; + case IDM_BMPSAVE: + winuienter(); + dialog_writebmp(hWnd); + winuileave(); + break; - case IDM_DISPCLOCK: - xmenu_setdispclk(np2oscfg.DISPCLK ^ 1); - update |= SYS_UPDATECFG; - break; + case IDM_S98LOGGING: + winuienter(); + dialog_s98(hWnd); + winuileave(); + break; - case IDM_DISPFRAME: - xmenu_setdispclk(np2oscfg.DISPCLK ^ 2); - update |= SYS_UPDATECFG; - break; + case IDM_DISPCLOCK: + xmenu_setdispclk(np2oscfg.DISPCLK ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_DISPFRAME: + xmenu_setdispclk(np2oscfg.DISPCLK ^ 2); + update |= SYS_UPDATECFG; + break; - case IDM_CALENDAR: - winuienter(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_CALENDAR), + case IDM_CALENDAR: + winuienter(); + DialogBox(hInst, MAKEINTRESOURCE(IDD_CALENDAR), hWnd, (DLGPROC)ClndDialogProc); - winuileave(); - break; + winuileave(); + break; + + case IDM_ALTENTER: + xmenu_setshortcut(np2oscfg.shortcut ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_ALTF4: + xmenu_setshortcut(np2oscfg.shortcut ^ 2); + update |= SYS_UPDATECFG; + break; + + case IDM_JOYX: + xmenu_setbtnmode(np2cfg.BTN_MODE ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_RAPID: + xmenu_setbtnrapid(np2cfg.BTN_RAPID ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_MSRAPID: + xmenu_setmsrapid(np2cfg.MOUSERAPID ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_SSTP: + xmenu_setsstp(np2oscfg.sstp ^ 1); + update |= SYS_UPDATECFG; + break; + + case IDM_I286SAVE: + debugsub_status(); + break; + + case IDM_HELP: + ShellExecute(hWnd, NULL, file_getcd(np2help), + NULL, NULL, SW_SHOWNORMAL); + break; + + case IDM_ABOUT: + sstpmsg_about(); + if (sstp_result() != SSTP_SENDING) { + winuienter(); + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT), + hWnd, (DLGPROC)AboutDialogProc); + winuileave(); + } + break; + + default: +#if defined(SUPPORT_STATSAVE) + if ((cmd >= IDM_FLAGSAVE) && + (cmd < (IDM_FLAGSAVE + SUPPORT_STATSAVE))) { + char ext[4]; + SPRINTF(ext, np2flagext, cmd - IDM_FLAGSAVE); + flagsave(ext); + } + else if ((cmd >= IDM_FLAGLOAD) && + (cmd < (IDM_FLAGLOAD + SUPPORT_STATSAVE))) { + char ext[4]; + SPRINTF(ext, np2flagext, cmd - IDM_FLAGLOAD); + flagload(ext, "Status Load", TRUE); + } +#endif + break; + } + sysmng_update(update); +} + +LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { + + PAINTSTRUCT ps; + RECT rc; + HDC hdc; + BOOL b; + UINT update; + HWND subwin; + WINLOCEX wlex; - case IDM_ALTENTER: - xmenu_setshortcut(np2oscfg.shortcut ^ 1); - update |= SYS_UPDATECFG; + switch (msg) { + case WM_CREATE: + np2class_wmcreate(hWnd); + np2class_windowtype(hWnd, np2oscfg.wintype); + sstp_construct(hWnd); +#ifndef __GNUC__ + WINNLSEnableIME(hWnd, FALSE); +#endif + break; + + case WM_SYSCOMMAND: + update = 0; + switch(wParam) { + case IDM_TOOLWIN: + sysmenu_settoolwin(np2oscfg.toolwin ^ 1); + if (np2oscfg.toolwin) { + toolwin_create(); + } + else { + toolwin_destroy(); + } + update |= SYS_UPDATEOSCFG; break; - case IDM_ALTF4: - xmenu_setshortcut(np2oscfg.shortcut ^ 2); - update |= SYS_UPDATECFG; + case IDM_KEYDISP: + sysmenu_setkeydisp(np2oscfg.keydisp ^ 1); + if (np2oscfg.keydisp) { + kdispwin_create(); + } + else { + kdispwin_destroy(); + } break; - case IDM_JOYX: - xmenu_setbtnmode(np2cfg.BTN_MODE ^ 1); - update |= SYS_UPDATECFG; + case IDM_SCREENCENTER: + if ((!scrnmng_isfullscreen()) && + (!(GetWindowLong(hWnd, GWL_STYLE) & + (WS_MAXIMIZE | WS_MINIMIZE)))) { + wlex = np2_winlocexallwin(hWnd); + wincentering(hWnd); + winlocex_move(wlex); + winlocex_destroy(wlex); + } break; - case IDM_RAPID: - xmenu_setbtnrapid(np2cfg.BTN_RAPID ^ 1); - update |= SYS_UPDATECFG; + case IDM_SNAPENABLE: + sysmenu_setwinsnap(np2oscfg.WINSNAP ^ 1); + update |= SYS_UPDATEOSCFG; break; - case IDM_MSRAPID: - xmenu_setmsrapid(np2cfg.MOUSERAPID ^ 1); - update |= SYS_UPDATECFG; + case IDM_BACKGROUND: + sysmenu_setbackground(np2oscfg.background ^ 1); + update |= SYS_UPDATEOSCFG; break; - case IDM_SSTP: - xmenu_setsstp(np2oscfg.sstp ^ 1); - update |= SYS_UPDATECFG; + case IDM_BGSOUND: + sysmenu_setbgsound(np2oscfg.background ^ 2); + update |= SYS_UPDATEOSCFG; break; - case IDM_I286SAVE: - debugsub_status(); + case IDM_MEMORYDUMP: + debugsub_memorydump(); break; - case IDM_HELP: - ShellExecute(hWnd, NULL, file_getcd(np2help), - NULL, NULL, SW_SHOWNORMAL); + case IDM_DEBUGUTY: + viewer_open(); break; - case IDM_ABOUT: - sstpmsg_about(); - if (sstp_result() != SSTP_SENDING) { - winuienter(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT), - hWnd, (DLGPROC)AboutDialogProc); - winuileave(); + case IDM_SCRNMUL4: // ver0.26 + case IDM_SCRNMUL6: + case IDM_SCRNMUL8: + case IDM_SCRNMUL10: + case IDM_SCRNMUL12: + case IDM_SCRNMUL16: + if ((!scrnmng_isfullscreen()) && + !(GetWindowLong(hWndMain, GWL_STYLE) & WS_MINIMIZE)) { + sysmenu_setscrnmul(wParam - IDM_SCRNMUL); + scrnmng_setmultiple(wParam - IDM_SCRNMUL); } break; - default: - if ((LOWORD(wParam) >= IDM_FLAGSAVE) && - (LOWORD(wParam) < IDM_FLAGSAVE + STATSAVEMAX)) { - char ext[4]; - wsprintf(ext, "S%02d", - (LOWORD(wParam) - IDM_FLAGSAVE) % 100); - flagsave(ext); - } - if ((LOWORD(wParam) >= IDM_FLAGLOAD) && - (LOWORD(wParam) < IDM_FLAGLOAD + STATSAVEMAX)) { - char ext[4]; - wsprintf(ext, "S%02d", - (LOWORD(wParam) - IDM_FLAGLOAD) % 100); - flagload(ext, "Status Load", TRUE); + case SC_MINIMIZE: + wlex = np2_winlocexallwin(hWnd); + winlocex_close(wlex); + winlocex_destroy(wlex); + return(DefWindowProc(hWnd, msg, wParam, lParam)); + + case SC_RESTORE: + subwin = toolwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } + subwin = kdispwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); } - break; + return(DefWindowProc(hWnd, msg, wParam, lParam)); + + default: + return(DefWindowProc(hWnd, msg, wParam, lParam)); } sysmng_update(update); break; + case WM_COMMAND: + np2cmd(hWnd, LOWORD(wParam)); + break; + case WM_ACTIVATE: if (LOWORD(wParam) != WA_INACTIVE) { np2break &= ~NP2BREAK_MAIN; scrnmng_update(); keystat_allrelease(); - mouse_running(MOUSE_CONT_M); + mousemng_enable(MOUSEPROC_BG); } else { np2break |= NP2BREAK_MAIN; - mouse_running(MOUSE_STOP_M); + mousemng_disable(MOUSEPROC_BG); } np2active_renewal(); break; @@ -858,9 +1039,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_MOVE: - toolwin_movingend(); if ((!scrnmng_isfullscreen()) && - (!(GetWindowLong(hWndMain, GWL_STYLE) & + (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { GetWindowRect(hWnd, &rc); np2oscfg.winx = rc.left; @@ -881,35 +1061,44 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_ENTERSIZEMOVE: - soundmng_stop(); - mouse_running(MOUSE_STOP); - winloc_movingstart(); - toolwin_movingstart(); - break; - - case WM_EXITSIZEMOVE: - mouse_running(MOUSE_CONT); - soundmng_play(); + soundmng_disable(SNDPROC_MAIN); + mousemng_disable(MOUSEPROC_WINUI); + winlocex_destroy(smwlex); + smwlex = np2_winlocexallwin(hWnd); + scrnmng_entersizing(); break; case WM_MOVING: if (np2oscfg.WINSNAP) { - winloc_movingproc((RECT *)lParam); + winlocex_moving(smwlex, (RECT *)lParam); } break; + case WM_SIZING: + scrnmng_sizing((UINT)wParam, (RECT *)lParam); + break; + + case WM_EXITSIZEMOVE: + scrnmng_exitsizing(); + winlocex_move(smwlex); + winlocex_destroy(smwlex); + smwlex = NULL; + mousemng_enable(MOUSEPROC_WINUI); + soundmng_enable(SNDPROC_MAIN); + break; + case WM_KEYDOWN: if (wParam == VK_F11) { - scrnmng_enablemenubar(); + np2class_enablemenu(hWndMain, TRUE); return(DefWindowProc(hWnd, WM_SYSKEYDOWN, VK_F10, lParam)); } if ((wParam == VK_F12) && (!np2oscfg.F12COPY)) { - mouse_running(MOUSE_XOR); + mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); } else { - winkeydown106(wParam, lParam); + winkbd_keydown(wParam, lParam); } break; @@ -918,7 +1107,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT return(DefWindowProc(hWnd, WM_SYSKEYUP, VK_F10, lParam)); } if ((wParam != VK_F12) || (np2oscfg.F12COPY)) { - winkeyup106(wParam, lParam); + winkbd_keyup(wParam, lParam); } break; @@ -933,11 +1122,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; } } - winkeydown106(wParam, lParam); + winkbd_keydown(wParam, lParam); break; case WM_SYSKEYUP: - winkeyup106(wParam, lParam); + winkbd_keyup(wParam, lParam); break; case WM_MOUSEMOVE: @@ -950,8 +1139,14 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_LBUTTONDOWN: - if (!mouse_btn(MOUSE_LEFTDOWN)) { - if (scrnmng_isfullscreen()) { + if (!mousemng_buttonevent(MOUSEMNG_LEFTDOWN)) { + if (!scrnmng_isfullscreen()) { + if (np2oscfg.wintype == 2) { + return(SendMessage(hWnd, WM_NCLBUTTONDOWN, + HTCAPTION, 0L)); + } + } + else { POINT p; if ((GetCursorPos(&p)) && (p.y >= 466)) { np2oscfg.clk_x++; @@ -964,21 +1159,24 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_LBUTTONUP: - if (!mouse_btn(MOUSE_LEFTUP)) { + if (!mousemng_buttonevent(MOUSEMNG_LEFTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_MBUTTONDOWN: // ver0.26 - mouse_running(MOUSE_XOR); + mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); break; case WM_RBUTTONDOWN: - if (!mouse_btn(MOUSE_RIGHTDOWN)) { - if (scrnmng_isfullscreen()) { - POINT p; + if (!mousemng_buttonevent(MOUSEMNG_RIGHTDOWN)) { + if (!scrnmng_isfullscreen()) { + np2popup(hWnd, lParam); + } + else { + POINT p; if ((GetCursorPos(&p)) && (p.y >= 466) && (np2oscfg.clk_x)) { np2oscfg.clk_fnt++; @@ -991,11 +1189,26 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_RBUTTONUP: - if (!mouse_btn(MOUSE_RIGHTUP)) { + if (!mousemng_buttonevent(MOUSEMNG_RIGHTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; + case WM_LBUTTONDBLCLK: + if (!scrnmng_isfullscreen()) { + np2oscfg.wintype++; + if (np2oscfg.wintype >= 3) { + np2oscfg.wintype = 0; + } + wlex = np2_winlocexallwin(hWnd); + winlocex_setholdwnd(wlex, hWnd); + np2class_windowtype(hWnd, np2oscfg.wintype); + winlocex_move(wlex); + winlocex_destroy(wlex); + sysmng_update(SYS_UPDATEOSCFG); + } + break; + case WM_CLOSE: b = FALSE; if (!np2oscfg.comfirm) { @@ -1010,7 +1223,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT winuileave(); } if (b) { - keydisp_destroy(); viewer_allclose(); DestroyWindow(hWnd); } @@ -1018,6 +1230,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_DESTROY: DestroyMenu(hStat); + np2class_wmdestroy(hWnd); PostQuitMessage(0); break; @@ -1034,6 +1247,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case NP2CMD_RESET: + juliet_YMF288Reset(); pccore_cfgupdate(); pccore_reset(); break; @@ -1080,52 +1294,61 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } +static void framereset(UINT cnt) { + + framecnt = 0; + scrnmng_dispclock(); + kdispwin_draw((BYTE)cnt); + toolwin_draw((BYTE)cnt); + viewer_allreload(FALSE); + if (np2oscfg.DISPCLK & 3) { + if (sysmng_workclockrenewal()) { + sysmng_updatecaption(3); + } + } +} + static void processwait(UINT cnt) { if (timing_getcount() >= cnt) { timing_setcount(0); - framecnt = 0; - scrnmng_dispclock(); - keydisp_draw(np2oscfg.DRAW_SKIP); - viewer_allreload(FALSE); - if (np2oscfg.DISPCLK & 3) { - if (sysmng_workclockrenewal()) { - sysmng_updatecaption(3); - } - } + framereset(cnt); } else { Sleep(1); } + soundmng_sync(); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { - WNDCLASS np2; + WNDCLASS wc; MSG msg; - HMENU hMenu; - HWND hwndorg; + HWND hWnd; UINT i; #ifdef OPENING_WAIT UINT32 tick; #endif + _MEM_INIT(); + GetModuleFileName(NULL, modulefile, sizeof(modulefile)); dosio_init(); file_setcd(modulefile); np2arg_analize(lpszCmdLine); initload(); toolwin_readini(); + kdispwin_readini(); rand_setseed((unsigned)time(NULL)); CopyMemory(szClassName, np2oscfg.winid, 3); - if ((hwndorg = FindWindow(szClassName, NULL)) != NULL) { + if ((hWnd = FindWindow(szClassName, NULL)) != NULL) { sstpmsg_running(); - ShowWindow(hwndorg, SW_RESTORE); - SetForegroundWindow(hwndorg); + ShowWindow(hWnd, SW_RESTORE); + SetForegroundWindow(hWnd); dosio_term(); return(FALSE); } @@ -1148,90 +1371,83 @@ int WINAPI WinMain(HINSTANCE hInstance, np2oscfg.KEYBOARD = KEY_KEY106; } } - keystat_reset(); + keystat_initialize(); + np2class_initialize(hInstance); if (!hPreInst) { - np2.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW; - np2.lpfnWndProc = WndProc; - np2.cbClsExtra = 0; - np2.cbWndExtra = 0; - np2.hInstance = hInstance; - np2.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); - np2.hCursor = LoadCursor(NULL, IDC_ARROW); - np2.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); - np2.lpszMenuName = MAKEINTRESOURCE(IDM_MAIN); - np2.lpszClassName = szClassName; - if (!RegisterClass(&np2)) { + wc.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; + wc.lpfnWndProc = WndProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = NP2GWL_SIZE; + wc.hInstance = hInstance; + wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); + wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN); + wc.lpszClassName = szClassName; + if (!RegisterClass(&wc)) { return(FALSE); } - toolwin_initapp(hInstance); } - keydisp_initialize(hPreInst); - viewer_init(hPreInst); // ver0.30 + toolwin_initapp(hInstance); + kdispwin_initialize(hPreInst); + viewer_init(hPreInst); + + mousemng_initialize(); - hWndMain = CreateWindowEx(0, szClassName, np2oscfg.titles, + hWnd = CreateWindowEx(0, szClassName, np2oscfg.titles, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | - WS_MINIMIZEBOX, + WS_THICKFRAME | WS_MINIMIZEBOX, np2oscfg.winx, np2oscfg.winy, 640, 400, NULL, NULL, hInstance, NULL); + hWndMain = hWnd; scrnmng_initialize(); - xmenu_setsound(np2cfg.SOUND_SW); - xmenu_setbeepvol(np2cfg.BEEP_VOL); - xmenu_setkey(0); - xmenu_setbtnrapid(np2cfg.BTN_RAPID); - xmenu_setbtnmode(np2cfg.BTN_MODE); - xmenu_setmsrapid(np2cfg.MOUSERAPID); + xmenu_setroltate(0); + xmenu_setdispmode(np2cfg.DISPSYNC); + xmenu_setraster(np2cfg.RASTER); xmenu_setwaitflg(np2oscfg.NOWAIT); xmenu_setframe(np2oscfg.DRAW_SKIP); - xmenu_setdispmode(np2cfg.DISPSYNC); - xmenu_setdispclk(np2oscfg.DISPCLK); - xmenu_seti286save(np2oscfg.I286SAVE); - xmenu_setmotorflg(np2cfg.MOTOR); - xmenu_setroltate(0); + + xmenu_setkey(0); xmenu_setxshift(0); xmenu_setf12copy(np2oscfg.F12COPY); + xmenu_setbeepvol(np2cfg.BEEP_VOL); + xmenu_setsound(np2cfg.SOUND_SW); + xmenu_setjastsound(np2oscfg.jastsnd); + xmenu_setmotorflg(np2cfg.MOTOR); xmenu_setextmem(np2cfg.EXTMEM); - xmenu_setraster(np2cfg.RASTER); - xmenu_setshortcut(np2oscfg.shortcut); // ver0.30 - xmenu_setsstp(np2oscfg.sstp); xmenu_setmouse(np2oscfg.MOUSE_SW); - ShowWindow(hWndMain, nCmdShow); - UpdateWindow(hWndMain); + xmenu_setshortcut(np2oscfg.shortcut); + xmenu_setdispclk(np2oscfg.DISPCLK); + xmenu_setbtnmode(np2cfg.BTN_MODE); + xmenu_setbtnrapid(np2cfg.BTN_RAPID); + xmenu_setmsrapid(np2cfg.MOUSERAPID); + xmenu_setsstp(np2oscfg.sstp); + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); #ifdef OPENING_WAIT tick = GetTickCount(); #endif - // めにゅー追加 - if (np2oscfg.statsave) { - char buf[16]; - hMenu = GetMenu(hWndMain); - hStat = CreatePopupMenu(); - for (i=0; i