--- np2/win9x/np2.cpp 2004/02/18 06:52:34 1.41 +++ np2/win9x/np2.cpp 2007/12/28 22:12:05 1.76 @@ -8,7 +8,6 @@ #include "parts.h" #include "np2.h" #include "np2arg.h" -#include "cputype.h" #include "dosio.h" #include "extromio.h" #include "commng.h" @@ -23,7 +22,6 @@ #include "winloc.h" #include "sstp.h" #include "sstpmsg.h" -#include "dclock.h" #include "toolwin.h" #include "juliet.h" #include "np2class.h" @@ -43,53 +41,134 @@ #include "timing.h" #include "keystat.h" #include "debugsub.h" -#include "keydisp.h" -#include "kdispwin.h" +#include "subwind.h" #include "viewer.h" +#if !defined(_WIN64) +#include "cputype.h" +#endif +#if defined(SUPPORT_DCLOCK) +#include "dclock.h" +#endif #ifdef BETA_RELEASE #define OPENING_WAIT 1500 #endif -static char szClassName[] = "NP2-MainWindow"; - HWND hWndMain; - HINSTANCE hInst; - HINSTANCE hPrev; +static TCHAR szClassName[] = _T("NP2-MainWindow"); + HWND g_hWndMain; + HINSTANCE g_hInstance; + HINSTANCE g_hPrevInst; +#if !defined(_WIN64) int mmxflag; - BYTE np2break = 0; // ver0.30 +#endif + UINT8 np2break = 0; // ver0.30 BOOL winui_en; NP2OSCFG np2oscfg = { - "Neko Project II", "NP2", - CW_USEDEFAULT, CW_USEDEFAULT, 1, 1, 0, 1, 0, 0, + OEMTEXT(PROJECTNAME) OEMTEXT(PROJECTSUBNAME), + OEMTEXT("NP2"), + CW_USEDEFAULT, CW_USEDEFAULT, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, KEY_UNKNOWN, 0, 0, 0, 0, {1, 2, 2, 1}, - {5, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 - {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 - {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 - {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 + {5, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, + {0, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, + {0, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, + {0, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, 0xffffff, 0xffbf6a, 0, 0, - 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + 0, 1, 0, 9801, 0, 0, 0, 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]; + OEMCHAR fddfolder[MAX_PATH]; + OEMCHAR hddfolder[MAX_PATH]; + OEMCHAR bmpfilefolder[MAX_PATH]; + OEMCHAR modulefile[MAX_PATH]; static UINT framecnt = 0; static UINT waitcnt = 0; static UINT framemax = 1; -static BYTE np2stopemulate = 0; +static UINT8 np2stopemulate = 0; static int np2opening = 1; static int np2quitmsg = 0; -static HMENU hStat = NULL; -static BYTE scrnmode; +static UINT8 scrnmode; static WINLOCEX smwlex; +static HMODULE s_hModResource; -static const char np2help[] = "np2.chm"; -static const char np2flagext[] = "S%02d"; +static const OEMCHAR np2help[] = OEMTEXT("np2.chm"); +static const OEMCHAR np2flagext[] = OEMTEXT("S%02d"); +#if defined(_WIN64) +static const OEMCHAR szNp2ResDll[] = OEMTEXT("np2x64_%u.dll"); +#else // defined(_WIN64) +static const OEMCHAR szNp2ResDll[] = OEMTEXT("np2_%u.dll"); +#endif // defined(_WIN64) + + +// ---- + +static int messagebox(HWND hWnd, LPCTSTR lpcszText, UINT uType) +{ + int nRet; + LPTSTR lpszText; + +#if defined(OSLANG_UTF8) + TCHAR szCation[128]; + oemtotchar(szCaption, NELEMENTS(szCaption), np2oscfg.titles, -1); +#else // defined(OSLANG_UTF8) + LPCTSTR szCaption = np2oscfg.titles; +#endif // defined(OSLANG_UTF8) + + nRet = 0; + if (HIWORD(lpcszText)) + { + nRet = MessageBox(hWnd, lpcszText, szCaption, uType); + } + else + { + lpszText = lockstringresource(lpcszText); + nRet = MessageBox(hWnd, lpszText, szCaption, uType); + unlockstringresource(lpszText); + } + return nRet; +} + +// ---- +static HINSTANCE loadextinst(HINSTANCE hInstance) +{ + OEMCHAR szPath[MAX_PATH]; + OEMCHAR szDllName[32]; + HMODULE hMod; + + file_cpyname(szPath, modulefile, NELEMENTS(szPath)); + file_cutname(szPath); + OEMSPRINTF(szDllName, szNp2ResDll, GetOEMCP()); + file_catname(szPath, szDllName, NELEMENTS(szPath)); + hMod = LoadLibrary(szPath); + s_hModResource = hMod; + if (hMod != NULL) + { + hInstance = (HINSTANCE)hMod; + } + return(hInstance); +} + +static void unloadextinst(void) +{ + HMODULE hMod; + + hMod = s_hModResource; + s_hModResource = 0; + if (hMod) + { + FreeLibrary(hMod); + } +} + + +// ---- static void winuienter(void) { @@ -107,27 +186,31 @@ static void winuileave(void) { WINLOCEX np2_winlocexallwin(HWND base) { - HWND list[3]; UINT i; + UINT cnt; + HWND list[5]; - list[0] = hWndMain; - list[1] = toolwin_gethwnd(); - list[2] = kdispwin_gethwnd(); - for (i=0; i<3; i++) { + cnt = 0; + list[cnt++] = g_hWndMain; + list[cnt++] = toolwin_gethwnd(); + list[cnt++] = kdispwin_gethwnd(); + list[cnt++] = skbdwin_gethwnd(); + list[cnt++] = mdbgwin_gethwnd(); + for (i=0; i= IDM_FLAGSAVE) && - (cmd < (IDM_FLAGSAVE + SUPPORT_STATSAVE))) { - char ext[4]; - SPRINTF(ext, np2flagext, cmd - IDM_FLAGSAVE); + if ((uID >= IDM_FLAGSAVE) && + (uID < (IDM_FLAGSAVE + SUPPORT_STATSAVE))) { + OEMCHAR ext[4]; + OEMSPRINTF(ext, np2flagext, uID - 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); + else if ((uID >= IDM_FLAGLOAD) && + (uID < (IDM_FLAGLOAD + SUPPORT_STATSAVE))) { + OEMCHAR ext[4]; + OEMSPRINTF(ext, np2flagext, uID - IDM_FLAGLOAD); + flagload(hWnd, ext, _T("Status Load"), TRUE); } #endif break; @@ -870,7 +1057,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_TOOLWIN: sysmenu_settoolwin(np2oscfg.toolwin ^ 1); if (np2oscfg.toolwin) { - toolwin_create(); + toolwin_create(g_hInstance); } else { toolwin_destroy(); @@ -878,16 +1065,27 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT update |= SYS_UPDATEOSCFG; break; +#if defined(SUPPORT_KEYDISP) case IDM_KEYDISP: sysmenu_setkeydisp(np2oscfg.keydisp ^ 1); if (np2oscfg.keydisp) { - kdispwin_create(); + kdispwin_create(g_hInstance); } else { kdispwin_destroy(); } break; - +#endif +#if defined(SUPPORT_SOFTKBD) + case IDM_SOFTKBD: + skbdwin_create(g_hInstance); + break; +#endif +#if defined(CPUCORE_IA32) && defined(SUPPORT_MEMDBG32) + case IDM_MEMDBG32: + mdbgwin_create(g_hInstance); + break; +#endif case IDM_SCREENCENTER: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & @@ -919,19 +1117,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case IDM_DEBUGUTY: - viewer_open(); + viewer_open(g_hInstance); break; - case IDM_SCRNMUL4: // ver0.26 + case IDM_SCRNMUL4: 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); + !(GetWindowLong(g_hWndMain, GWL_STYLE) & WS_MINIMIZE)) + { + sysmenu_setscrnmul((UINT8)(wParam - IDM_SCRNMUL)); + scrnmng_setmultiple((int)(wParam - IDM_SCRNMUL)); } break; @@ -950,6 +1149,14 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT if (subwin) { ShowWindow(subwin, SW_SHOWNOACTIVATE); } + subwin = skbdwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } + subwin = mdbgwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } return(DefWindowProc(hWnd, msg, wParam, lParam)); default: @@ -959,7 +1166,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_COMMAND: - np2cmd(hWnd, LOWORD(wParam)); + OnCommand(hWnd, wParam); break; case WM_ACTIVATE: @@ -979,7 +1186,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_PAINT: hdc = BeginPaint(hWnd, &ps); if (np2opening) { - HINSTANCE hinst; + HINSTANCE hInstance; RECT rect; int width; int height; @@ -987,11 +1194,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT BITMAP bmp; HDC hmdc; HBRUSH hbrush; - hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + hInstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE); GetClientRect(hWnd, &rect); width = rect.right - rect.left; height = rect.bottom - rect.top; - hbmp = LoadBitmap(hinst, "NP2BMP"); + hbmp = LoadBitmap(hInstance, _T("NP2BMP")); GetObject(hbmp, sizeof(BITMAP), &bmp); hbrush = (HBRUSH)SelectObject(hdc, GetStockObject(BLACK_BRUSH)); @@ -1067,7 +1274,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_KEYDOWN: if (wParam == VK_F11) { - np2class_enablemenu(hWndMain, TRUE); + np2class_enablemenu(g_hWndMain, TRUE); return(DefWindowProc(hWnd, WM_SYSKEYDOWN, VK_F10, lParam)); } if ((wParam == VK_F12) && (!np2oscfg.F12COPY)) { @@ -1124,14 +1331,17 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT HTCAPTION, 0L)); } } +#if defined(SUPPORT_DCLOCK) else { POINT p; - if ((GetCursorPos(&p)) && (p.y >= 466)) { + if ((GetCursorPos(&p)) && + (scrnmng_isdispclockclick(&p))) { np2oscfg.clk_x++; sysmng_update(SYS_UPDATEOSCFG); dclock_reset(); } } +#endif return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; @@ -1142,7 +1352,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } break; - case WM_MBUTTONDOWN: // ver0.26 + case WM_MBUTTONDOWN: mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); @@ -1153,15 +1363,18 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT if (!scrnmng_isfullscreen()) { np2popup(hWnd, lParam); } +#if defined(SUPPORT_DCLOCK) else { POINT p; - if ((GetCursorPos(&p)) && (p.y >= 466) && - (np2oscfg.clk_x)) { + if ((GetCursorPos(&p)) && + (scrnmng_isdispclockclick(&p)) && + (np2oscfg.clk_x)) { np2oscfg.clk_fnt++; sysmng_update(SYS_UPDATEOSCFG); dclock_reset(); } } +#endif return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; @@ -1194,8 +1407,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } else if (sstpconfirm_exit()) { winuienter(); - if (MessageBox(hWnd, "Sure?", "Exit", - MB_ICONQUESTION | MB_YESNO) == IDYES) { + if (messagebox(hWnd, MAKEINTRESOURCE(IDS_CONFIRM_EXIT), + MB_ICONQUESTION | MB_YESNO) == IDYES) + { b = TRUE; } winuileave(); @@ -1207,7 +1421,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_DESTROY: - DestroyMenu(hStat); np2class_wmdestroy(hWnd); PostQuitMessage(0); break; @@ -1275,9 +1488,13 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT static void framereset(UINT cnt) { framecnt = 0; +#if defined(SUPPORT_DCLOCK) scrnmng_dispclock(); - kdispwin_draw((BYTE)cnt); - toolwin_draw((BYTE)cnt); +#endif + kdispwin_draw((UINT8)cnt); + skbdwin_process(); + mdbgwin_process(); + toolwin_draw((UINT8)cnt); viewer_allreload(FALSE); if (np2oscfg.DISPCLK & 3) { if (sysmng_workclockrenewal()) { @@ -1298,30 +1515,35 @@ static void processwait(UINT cnt) { soundmng_sync(); } - -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; HWND hWnd; UINT i; + DWORD style; #ifdef OPENING_WAIT UINT32 tick; #endif + BOOL xrollkey; _MEM_INIT(); - GetModuleFileName(NULL, modulefile, sizeof(modulefile)); + GetModuleFileName(NULL, modulefile, NELEMENTS(modulefile)); dosio_init(); file_setcd(modulefile); - np2arg_analize(lpszCmdLine); + np2arg_analize(); initload(); toolwin_readini(); kdispwin_readini(); + skbdwin_readini(); + mdbgwin_readini(); rand_setseed((unsigned)time(NULL)); - CopyMemory(szClassName, np2oscfg.winid, 3); + szClassName[0] = (TCHAR)np2oscfg.winid[0]; + szClassName[1] = (TCHAR)np2oscfg.winid[1]; + szClassName[2] = (TCHAR)np2oscfg.winid[2]; if ((hWnd = FindWindow(szClassName, NULL)) != NULL) { sstpmsg_running(); @@ -1331,16 +1553,20 @@ int WINAPI WinMain(HINSTANCE hInstance, return(FALSE); } - hInst = hInstance; - hPrev = hPreInst; + g_hInstance = loadextinst(hInstance); + g_hPrevInst = hPrevInst; +#if !defined(_WIN64) mmxflag = (havemmx())?0:MMXFLAG_NOTSUPPORT; mmxflag += (np2oscfg.disablemmx)?MMXFLAG_DISABLE:0; +#endif TRACEINIT(); - if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { // ver0.28 + xrollkey = (np2oscfg.xrollkey == 0); + if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { int keytype = GetKeyboardType(1); if ((keytype & 0xff00) == 0x0d00) { np2oscfg.KEYBOARD = KEY_PC98; + xrollkey = !xrollkey; } else if (!keytype) { np2oscfg.KEYBOARD = KEY_KEY101; @@ -1349,36 +1575,46 @@ int WINAPI WinMain(HINSTANCE hInstance, np2oscfg.KEYBOARD = KEY_KEY106; } } - keystat_reset(); + winkbd_roll(xrollkey); + winkbd_setf12(np2oscfg.F12COPY); + keystat_initialize(); - np2class_initialize(hInstance); - if (!hPreInst) { + np2class_initialize(g_hInstance); + if (!hPrevInst) { 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.cbWndExtra = NP2GWLP_SIZE; + wc.hInstance = g_hInstance; + wc.hIcon = LoadIcon(g_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)) { + unloadextinst(); + TRACETERM(); + dosio_term(); return(FALSE); } + + toolwin_initapp(g_hInstance); + kdispwin_initialize(g_hInstance); + skbdwin_initialize(g_hInstance); + mdbgwin_initialize(g_hInstance); + viewer_init(g_hInstance); } - toolwin_initapp(hInstance); - kdispwin_initialize(hPreInst); - viewer_init(hPreInst); mousemng_initialize(); - hWnd = CreateWindowEx(0, szClassName, np2oscfg.titles, - WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | - WS_THICKFRAME | WS_MINIMIZEBOX, + style = WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX; + if (np2oscfg.thickframe) { + style |= WS_THICKFRAME; + } + hWnd = CreateWindowEx(0, szClassName, np2oscfg.titles, style, np2oscfg.winx, np2oscfg.winy, 640, 400, - NULL, NULL, hInstance, NULL); - hWndMain = hWnd; + NULL, NULL, g_hInstance, NULL); + g_hWndMain = hWnd; scrnmng_initialize(); xmenu_setroltate(0); @@ -1415,8 +1651,7 @@ int WINAPI WinMain(HINSTANCE hInstance, xmenu_initialize(); DrawMenuBar(hWnd); - // ver0.30 - if (file_attr_c(np2help) == (short)-1) { + if (file_attr_c(np2help) == (short)-1) { // ver0.30 EnableMenuItem(GetMenu(hWnd), IDM_HELP, MF_GRAYED); } @@ -1425,7 +1660,7 @@ int WINAPI WinMain(HINSTANCE hInstance, sysmenu_setwinsnap(np2oscfg.WINSNAP); sysmenu_setbackground(np2oscfg.background); sysmenu_setbgsound(np2oscfg.background); - sysmenu_setscrnmul(8); // ver0.26 + sysmenu_setscrnmul(8); scrnmode = 0; if (np2arg.fullscreen) { @@ -1437,17 +1672,21 @@ int WINAPI WinMain(HINSTANCE hInstance, if (scrnmng_create(scrnmode) != SUCCESS) { scrnmode ^= SCRNMODE_FULLSCREEN; if (scrnmng_create(scrnmode) != SUCCESS) { - if (sstpmsg_dxerror()) { - MessageBox(hWnd, "Couldn't create DirectDraw Object", - np2oscfg.titles, MB_OK | MB_ICONSTOP); + if (sstpmsg_dxerror()) + { + messagebox(hWnd, MAKEINTRESOURCE(IDS_ERROR_DIRECTDRAW), + MB_OK | MB_ICONSTOP); } + unloadextinst(); + TRACETERM(); + dosio_term(); return(FALSE); } } if (soundmng_initialize() == SUCCESS) { - soundmng_pcmload(SOUND_PCMSEEK, "SEEKWAV", EXTROMIO_RES); - soundmng_pcmload(SOUND_PCMSEEK1, "SEEK1WAV", EXTROMIO_RES); + soundmng_pcmload(SOUND_PCMSEEK, OEMTEXT("SEEKWAV"), EXTROMIO_RES); + soundmng_pcmload(SOUND_PCMSEEK1, OEMTEXT("SEEK1WAV"), EXTROMIO_RES); soundmng_pcmvolume(SOUND_PCMSEEK, np2cfg.MOTORVOL); soundmng_pcmvolume(SOUND_PCMSEEK1, np2cfg.MOTORVOL); } @@ -1484,9 +1723,11 @@ int WINAPI WinMain(HINSTANCE hInstance, if (np2oscfg.resume) { int id; - id = flagload(str_sav, str_resume, FALSE); + id = flagload(hWnd, str_sav, _T("Resume"), FALSE); if (id == IDYES) { - for (i=0; i<4; i++) np2arg.disk[i] = NULL; + for (i=0; i<4; i++) { + np2arg.disk[i] = NULL; + } } else if (id == IDCANCEL) { DestroyWindow(hWnd); @@ -1496,28 +1737,28 @@ int WINAPI WinMain(HINSTANCE hInstance, sstp_destruct(); soundmng_deinitialize(); scrnmng_destroy(); + unloadextinst(); TRACETERM(); dosio_term(); viewer_term(); - return(0); + return(FALSE); } } #endif -// リセットしてから… コマンドラインのディスク挿入。 // ver0.29 +// リセットしてから… コマンドラインのディスク挿入。 for (i=0; i<4; i++) { if (np2arg.disk[i]) { - milstr_ncpy(diskdrv_fname[i], np2arg.disk[i], MAX_PATH); - diskdrv_delay[i] = 1; + diskdrv_readyfdd((REG8)i, np2arg.disk[i], 0); } } if (!(scrnmode & SCRNMODE_FULLSCREEN)) { if (np2oscfg.toolwin) { - toolwin_create(); + toolwin_create(g_hInstance); } if (np2oscfg.keydisp) { - kdispwin_create(); + kdispwin_create(g_hInstance); } } @@ -1539,7 +1780,9 @@ int WINAPI WinMain(HINSTANCE hInstance, joymng_sync(); mousemng_sync(); pccore_exec(framecnt == 0); +#if defined(SUPPORT_DCLOCK) dclock_callback(); +#endif if (np2oscfg.DRAW_SKIP) { // nowait frame skip framecnt++; if (framecnt >= np2oscfg.DRAW_SKIP) { @@ -1558,7 +1801,9 @@ int WINAPI WinMain(HINSTANCE hInstance, joymng_sync(); mousemng_sync(); pccore_exec(framecnt == 0); +#if defined(SUPPORT_DCLOCK) dclock_callback(); +#endif framecnt++; } else { @@ -1571,7 +1816,9 @@ int WINAPI WinMain(HINSTANCE hInstance, joymng_sync(); mousemng_sync(); pccore_exec(framecnt == 0); +#if defined(SUPPORT_DCLOCK) dclock_callback(); +#endif framecnt++; cnt = timing_getcount(); if (framecnt > cnt) { @@ -1611,6 +1858,8 @@ int WINAPI WinMain(HINSTANCE hInstance, } toolwin_destroy(); kdispwin_destroy(); + skbdwin_destroy(); + mdbgwin_destroy(); pccore_cfgupdate(); @@ -1640,14 +1889,19 @@ int WINAPI WinMain(HINSTANCE hInstance, initsave(); toolwin_writeini(); kdispwin_writeini(); + skbdwin_writeini(); + mdbgwin_writeini(); } + skbdwin_deinitialize(); + + unloadextinst(); TRACETERM(); _MEM_USED("report.txt"); dosio_term(); - viewer_term(); // ver0.30 + viewer_term(); // ver0.30 - return(msg.wParam); + return((int)msg.wParam); }