--- np2/win9x/np2.cpp 2003/10/16 17:58:56 1.1 +++ np2/win9x/np2.cpp 2003/10/28 13:03:48 1.13 @@ -1,10 +1,14 @@ #include "compiler.h" #include +#ifndef __GNUC__ #include +#endif #include "resource.h" #include "strres.h" +#include "parts.h" #include "np2.h" #include "np2arg.h" +#include "cputype.h" #include "dosio.h" #include "extromio.h" #include "commng.h" @@ -16,18 +20,19 @@ #include "winkbd.h" #include "ini.h" #include "menu.h" -#include "dialog.h" #include "winloc.h" #include "sstp.h" #include "sstpmsg.h" #include "dclock.h" +#ifdef USE_ROMEO +#include "juliet.h" +#endif +#include "dialog.h" #include "memory.h" #include "pccore.h" #include "iocore.h" #include "pc9861k.h" #include "mpu98ii.h" -#include "timing.h" -#include "debugsub.h" #include "bios.h" #include "scrndraw.h" #include "sound.h" @@ -35,14 +40,11 @@ #include "s98.h" #include "diskdrv.h" #include "fddfile.h" - -#ifdef USE_ROMEO -#include "juliet.h" -#endif - +#include "timing.h" +#include "statsave.h" +#include "debugsub.h" #include "keydisp.h" #include "viewer.h" -#include "statsave.h" #ifdef BETA_RELEASE @@ -51,13 +53,11 @@ #define STATSAVEMAX 10 -static char np2help[] = "np2.hlp"; -static char np2resume[] = "sav"; - static char szClassName[] = "NP2-MainWindow"; HWND hWndMain; HINSTANCE hInst; HINSTANCE hPrev; + int mmxflag; NP2OSCFG np2oscfg = { "Neko Project II", "NP2", @@ -69,7 +69,7 @@ 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}; // ver0.34 + 0, 1, 0, 9801, 0, 0, 0, 0, 0}; // ver0.38 char fddfolder[MAX_PATH]; char hddfolder[MAX_PATH]; @@ -86,6 +86,9 @@ static int np2opening = 1; static int np2quitmsg = 0; HMENU hStat = NULL; +static const char np2help[] = "np2.hlp"; +static const char np2resume[] = "sav"; + typedef struct { const char *str; @@ -217,6 +220,14 @@ static int flagsave(const char *ext) { return(ret); } +static void flagdelete(const char *ext) { + + char path[MAX_PATH]; + + getstatfilename(path, ext, sizeof(path)); + file_delete(path); +} + static int flagload(const char *ext, const char *title, BOOL force) { int ret; @@ -275,7 +286,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT switch (msg) { case WM_CREATE: sstp_construct(hWnd); +#ifndef __GNUC__ WINNLSEnableIME(hWnd, FALSE); +#endif // DragAcceptFiles(hWnd, TRUE); break; @@ -323,13 +336,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_SCRNMUL10: case IDM_SCRNMUL12: case IDM_SCRNMUL16: -#if 0 - if ((SCREENMODE & SCMD_WINDOWED) && + if ((!scrnmng_isfullscreen()) && !(GetWindowLong(hWndMain, GWL_STYLE) & WS_MINIMIZE)) { xmenu_setscrnmul(wParam - IDM_SCRNMUL); - ddraws_setmul(wParam - IDM_SCRNMUL); + scrnmng_setmultiple(wParam - IDM_SCRNMUL); } -#endif break; default: @@ -810,6 +821,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT if (LOWORD(wParam) != WA_INACTIVE) { np2break &= ~NP2BREAK_MAIN; scrnmng_update(); + keystat_allrelease(); mouse_running(MOUSE_CONT_M); } else { @@ -822,34 +834,31 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_PAINT: hdc = BeginPaint(hWnd, &ps); if (np2opening) { - - HDC hmdc; - HBITMAP hbmp; - BITMAP bmp; - HINSTANCE hinst; - int sx = 640 + np2oscfg.paddingx; - int sy = 400 + np2oscfg.paddingy; - - hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); -#if 1 - hbmp = LoadBitmap(hinst, "NP2BMP"); - GetObject(hbmp, sizeof(BITMAP), &bmp); - hmdc = CreateCompatibleDC(hdc); - SelectObject(hmdc, hbmp); - BitBlt(hdc, (sx - 252) / 2, (sy - 28) / 2, - bmp.bmWidth, bmp.bmHeight, hmdc, 0, 0, SRCCOPY); - DeleteDC(hmdc); - DeleteObject(hbmp); -#else - hbmp = LoadBitmap(hinst, "NP2EXT"); - GetObject(hbmp, sizeof(BITMAP), &bmp); - hmdc = CreateCompatibleDC(hdc); - SelectObject(hmdc, hbmp); - BitBlt(hdc, (sx - 160) / 2, (sy - 140) / 2, + HINSTANCE hinst; + RECT rect; + int width; + int height; + HBITMAP hbmp; + BITMAP bmp; + HDC hmdc; + HBRUSH hbrush; + hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + GetClientRect(hWnd, &rect); + width = rect.right - rect.left; + height = rect.bottom - rect.top; + hbmp = LoadBitmap(hinst, "NP2BMP"); + GetObject(hbmp, sizeof(BITMAP), &bmp); + hbrush = (HBRUSH)SelectObject(hdc, + GetStockObject(BLACK_BRUSH)); + PatBlt(hdc, 0, 0, width, height, PATCOPY); + SelectObject(hdc, hbrush); + hmdc = CreateCompatibleDC(hdc); + SelectObject(hmdc, hbmp); + BitBlt(hdc, (width - bmp.bmWidth) / 2, + (height - bmp.bmHeight) / 2, bmp.bmWidth, bmp.bmHeight, hmdc, 0, 0, SRCCOPY); - DeleteDC(hmdc); - DeleteObject(hbmp); -#endif + DeleteDC(hmdc); + DeleteObject(hbmp); } else { // scrnmng_update(); @@ -903,6 +912,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_KEYDOWN: if (wParam == VK_F11) { + scrnmng_enablemenubar(); return(DefWindowProc(hWnd, WM_SYSKEYDOWN, VK_F10, lParam)); } if ((wParam == VK_F12) && (!np2oscfg.F12COPY)) { @@ -914,6 +924,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT winkeydown106(wParam, lParam); } break; + case WM_KEYUP: if (wParam == VK_F11) { return(DefWindowProc(hWnd, WM_SYSKEYUP, VK_F10, lParam)); @@ -941,10 +952,19 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT winkeyup106(wParam, lParam); break; + case WM_MOUSEMOVE: + if (scrnmng_isfullscreen()) { + POINT p; + if (GetCursorPos(&p)) { + scrnmng_fullscrnmenu(p.y); + } + } + break; + case WM_LBUTTONDOWN: if (!mouse_btn(MOUSE_LEFTDOWN)) { if (scrnmng_isfullscreen()) { - POINT p; + POINT p; if ((GetCursorPos(&p)) && (p.y >= 466)) { np2oscfg.clk_x++; sysmng_update(SYS_UPDATEOSCFG); @@ -954,6 +974,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; + case WM_LBUTTONUP: if (!mouse_btn(MOUSE_LEFTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); @@ -1071,7 +1092,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } -static void processwait(WORD cnt) { +static void processwait(UINT cnt) { if (timing_getcount() >= cnt) { timing_setcount(0); @@ -1079,9 +1100,9 @@ static void processwait(WORD cnt) { scrnmng_dispclock(); keydisp_draw(np2oscfg.DRAW_SKIP); viewer_allreload(FALSE); - if (np2oscfg.DISPCLK & 2) { + if (np2oscfg.DISPCLK & 3) { if (sysmng_workclockrenewal()) { - sysmng_updatecaption(2); + sysmng_updatecaption(3); } } } @@ -1097,7 +1118,7 @@ int WINAPI WinMain(HINSTANCE hInstance, MSG msg; HMENU hMenu; HWND hwndorg; - int i; + UINT i; #ifdef OPENING_WAIT UINT32 tick; #endif @@ -1105,12 +1126,10 @@ int WINAPI WinMain(HINSTANCE hInstance, GetModuleFileName(NULL, modulefile, sizeof(modulefile)); dosio_init(); file_setcd(modulefile); - np2arg_analize(lpszCmdLine); // タイミング修正 // ver0.29 + np2arg_analize(lpszCmdLine); initload(); - srand((unsigned)time(NULL)); - -// np2arg_analize(lpszCmdLine); + rand_setseed((unsigned)time(NULL)); CopyMemory(szClassName, np2oscfg.winid, 3); @@ -1124,6 +1143,8 @@ int WINAPI WinMain(HINSTANCE hInstance, hInst = hInstance; hPrev = hPreInst; + mmxflag = (havemmx())?0:MMXFLAG_NOTSUPPORT; + mmxflag += (np2oscfg.disablemmx)?MMXFLAG_DISABLE:0; TRACEINIT(); if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { // ver0.28 @@ -1148,7 +1169,7 @@ int WINAPI WinMain(HINSTANCE hInstance, np2.hInstance = hInstance; np2.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); np2.hCursor = LoadCursor(NULL, IDC_ARROW); - np2.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); + np2.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); np2.lpszMenuName = MAKEINTRESOURCE(IDM_MAIN); np2.lpszClassName = szClassName; if (!RegisterClass(&np2)) { @@ -1369,22 +1390,30 @@ int WINAPI WinMain(HINSTANCE hInstance, } else { // auto skip if (!waitcnt) { + UINT cnt; joy_flash(); mouse_callback(); pccore_exec(framecnt == 0); dclock_callback(); framecnt++; - if (timing_getcount() < framecnt) { + cnt = timing_getcount(); + if (framecnt > cnt) { waitcnt = framecnt; if (framemax > 1) { framemax--; } } else if (framecnt >= framemax) { - waitcnt = framecnt; if (framemax < 12) { framemax++; } + if (cnt >= 12) { + timing_reset(); + } + else { + timing_setcount(cnt - framecnt); + } + processwait(0); } } else { @@ -1413,7 +1442,7 @@ int WINAPI WinMain(HINSTANCE hInstance, flagsave(np2resume); } else { -// DeleteFile(file_getcd(np2resume)); + flagdelete(np2resume); } #ifdef USE_ROMEO