Diff for /np2/wince/np2.cpp between versions 1.1 and 1.24

version 1.1, 2003/11/24 11:46:54 version 1.24, 2005/04/01 15:35:50
Line 6 Line 6
 #include        "resource.h"  #include        "resource.h"
 #include        "strres.h"  #include        "strres.h"
 #include        "np2.h"  #include        "np2.h"
   #include        "oemtext.h"
 #include        "dosio.h"  #include        "dosio.h"
 #include        "commng.h"  #include        "commng.h"
 #include        "inputmng.h"  #include        "inputmng.h"
Line 29 Line 30
 #include        "fddfile.h"  #include        "fddfile.h"
 #include        "font.h"  #include        "font.h"
 #include        "timing.h"  #include        "timing.h"
 #include        "statsave.h"  #include        "keystat.h"
 #include        "vramhdl.h"  #include        "vramhdl.h"
 #include        "menubase.h"  #include        "menubase.h"
 #include        "sysmenu.h"  #include        "sysmenu.h"
   #include        "softkbd.h"
   
   
 static const TCHAR szAppCaption[] = STRLITERAL("Neko Project II");  static const TCHAR szAppCaption[] = _T("Neko Project II");
 static const TCHAR szClassName[] = STRLITERAL("NP2-MainWindow");  static const TCHAR szClassName[] = _T("NP2-MainWindow");
   
   
                 NP2OSCFG        np2oscfg = {0, 2, 0, 0};                  NP2OSCFG        np2oscfg = {0, 0, 0, 0,
   #if !defined(GX_DLL)
                                                                   CW_USEDEFAULT, CW_USEDEFAULT,
   #endif
   #if defined(WIN32_PLATFORM_PSPC)
                                                                   0, 0,
   #endif
                                                                   0};
                 HWND            hWndMain;                  HWND            hWndMain;
                 HINSTANCE       hInst;                  HINSTANCE       hInst;
                 HINSTANCE       hPrev;                  HINSTANCE       hPrev;
                 char            modulefile[MAX_PATH];                  OEMCHAR         modulefile[MAX_PATH];
                   GXKeyList       gx_keylist;
   
 static  BOOL            sysrunning;  enum {
           SYSRUNNING_MAIN         = 1,
           SYSRUNNING_FORE         = 2
   };
   
   static  UINT            sysrunning;
 static  UINT            framecnt;  static  UINT            framecnt;
 static  UINT            waitcnt;  static  UINT            waitcnt;
 static  UINT            framemax = 1;  static  UINT            framemax = 1;
Line 53  static UINT  framemax = 1; Line 68  static UINT  framemax = 1;
   
 // ---- resume  // ---- resume
   
 static void getstatfilename(char *path, const char *ext, int size) {  static void getstatfilename(OEMCHAR *path, const OEMCHAR *ext, int size) {
   
         file_cpyname(path, modulefile, size);          file_cpyname(path, modulefile, size);
         file_cutext(path);          file_cutext(path);
Line 61  static void getstatfilename(char *path,  Line 76  static void getstatfilename(char *path, 
         file_catname(path, ext, size);          file_catname(path, ext, size);
 }  }
   
 static int flagsave(const char *ext) {  static int flagsave(const OEMCHAR *ext) {
   
         int             ret;          int             ret;
         char    path[MAX_PATH];          OEMCHAR path[MAX_PATH];
   
         getstatfilename(path, ext, sizeof(path));          getstatfilename(path, ext, NELEMENTS(path));
         ret = statsave_save(path);          ret = statsave_save(path);
         if (ret) {          if (ret) {
                 file_delete(path);                  file_delete(path);
Line 74  static int flagsave(const char *ext) { Line 89  static int flagsave(const char *ext) {
         return(ret);          return(ret);
 }  }
   
 static void flagdelete(const char *ext) {  static void flagdelete(const OEMCHAR *ext) {
   
         char    path[MAX_PATH];          OEMCHAR path[MAX_PATH];
   
         getstatfilename(path, ext, sizeof(path));          getstatfilename(path, ext, NELEMENTS(path));
         file_delete(path);          file_delete(path);
 }  }
   
 static int flagload(const char *ext, const char *title, BOOL force) {  static int flagload(const OEMCHAR *ext, const OEMCHAR *title, BOOL force) {
   
         int             ret;          int             ret;
         int             id;          int             id;
         char    path[MAX_PATH];          OEMCHAR path[MAX_PATH];
         char    buf[1024];          OEMCHAR buf[1024];
         char    buf2[1024 + 256];          OEMCHAR buf2[1024 + 256];
   
         getstatfilename(path, ext, sizeof(path));          getstatfilename(path, ext, NELEMENTS(path));
         id = DID_YES;          id = DID_YES;
         ret = statsave_check(path, buf, sizeof(buf));          ret = statsave_check(path, buf, NELEMENTS(buf));
         if (ret & (~NP2FLAG_DISKCHG)) {          if (ret & (~STATFLAG_DISKCHG)) {
                 menumbox("Couldn't restart", title, MBOX_OK | MBOX_ICONSTOP);                  menumbox(OEMTEXT("Couldn't restart"), title, MBOX_OK | MBOX_ICONSTOP);
                 id = DID_NO;                  id = DID_NO;
         }          }
         else if ((!force) && (ret & NP2FLAG_DISKCHG)) {          else if ((!force) && (ret & STATFLAG_DISKCHG)) {
                 SPRINTF(buf2, "Conflict!\n\n%s\nContinue?", buf);                  OEMSPRINTF(buf2, OEMTEXT("Conflict!\n\n%s\nContinue?"), buf);
                 id = menumbox(buf2, title, MBOX_YESNOCAN | MBOX_ICONQUESTION);                  id = menumbox(buf2, title, MBOX_YESNOCAN | MBOX_ICONQUESTION);
         }          }
         if (id == DID_YES) {          if (id == DID_YES) {
Line 135  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 150  LRESULT CALLBACK WndProc(HWND hWnd, UINT
                         EndPaint(hWnd, &ps);                          EndPaint(hWnd, &ps);
                         break;                          break;
   
   #if defined(WIN32_PLATFORM_PSPC)
                   case WM_ERASEBKGND:
                           if (sysrunning) {
                                   scrndraw_redraw();
                           }
                           break;
   #endif
   
                 case WM_KEYDOWN:                  case WM_KEYDOWN:
                         if (wParam == VK_F11) {                          if (wParam == VK_F11) {
                                 if (menuvram == NULL) {                                  if (menuvram == NULL) {
Line 153  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 176  LRESULT CALLBACK WndProc(HWND hWnd, UINT
                         winkbd_keyup(wParam, lParam);                          winkbd_keyup(wParam, lParam);
                         break;                          break;
   
 #if !defined(_WIN32_WCE)  #if 1 // !defined(_WIN32_WCE)
                 case WM_SYSKEYDOWN:                  case WM_SYSKEYDOWN:
                         winkbd_keydown(wParam, lParam);                          winkbd_keydown(wParam, lParam);
                         break;                          break;
Line 165  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 188  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
                 case WM_MOUSEMOVE:                  case WM_MOUSEMOVE:
                         if (scrnmng_mousepos(&lParam) == SUCCESS) {                          if (scrnmng_mousepos(&lParam) == SUCCESS) {
                                 if (menuvram == NULL) {                                  if (menuvram) {
                                 }  
                                 else {  
                                         menubase_moving(LOWORD(lParam), HIWORD(lParam), 0);                                          menubase_moving(LOWORD(lParam), HIWORD(lParam), 0);
                                 }                                  }
                         }                          }
Line 175  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 196  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
                 case WM_LBUTTONDOWN:                  case WM_LBUTTONDOWN:
                         if (scrnmng_mousepos(&lParam) == SUCCESS) {                          if (scrnmng_mousepos(&lParam) == SUCCESS) {
                                 if (menuvram == NULL) {                                  if (menuvram) {
                                 }  
                                 else {  
                                         menubase_moving(LOWORD(lParam), HIWORD(lParam), 1);                                          menubase_moving(LOWORD(lParam), HIWORD(lParam), 1);
                                 }                                  }
                                   else if (scrnmng_kbdpos(&lParam) == SUCCESS) {
   #if defined(SUPPORT_SOFTKBD)
                                           softkbd_down(LOWORD(lParam), HIWORD(lParam));
   #endif
                                   }
                         }                          }
                         break;                          break;
   
                 case WM_LBUTTONUP:                  case WM_LBUTTONUP:
                         if (scrnmng_mousepos(&lParam) == SUCCESS) {                          if (scrnmng_mousepos(&lParam) == SUCCESS) {
                                 if (menuvram == NULL) {  #if defined(SUPPORT_SOFTKBD)
                                         sysmenu_menuopen(0, LOWORD(lParam), HIWORD(lParam));                                  softkbd_up();
                                 }  #endif
                                 else {                                  if (menuvram) {
                                         menubase_moving(LOWORD(lParam), HIWORD(lParam), 2);                                          menubase_moving(LOWORD(lParam), HIWORD(lParam), 2);
                                 }                                  }
                                   else if (scrnmng_ismenu(lParam)) {
                                           sysmenu_menuopen(0, LOWORD(lParam), HIWORD(lParam));
                                   }
                           }
                           break;
   
   #if !defined(GX_DLL)
                   case WM_MOVE:
   #if !defined(_WIN32_WCE)
                           if (!(GetWindowLong(hWnd, GWL_STYLE) &
                                                                                           (WS_MAXIMIZE | WS_MINIMIZE)))
   #endif
                           {
                                   RECT rc;
                                   GetWindowRect(hWnd, &rc);
                                   np2oscfg.winx = rc.left;
                                   np2oscfg.winy = rc.top;
                                   sysmng_update(SYS_UPDATEOSCFG);
                         }                          }
                         break;                          break;
   #endif
   
 #if !defined(_WIN32_WCE)  #if !defined(_WIN32_WCE)
                 case WM_ENTERSIZEMOVE:                  case WM_ENTERSIZEMOVE:
Line 217  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 260  LRESULT CALLBACK WndProc(HWND hWnd, UINT
                         if (sysrunning) {                          if (sysrunning) {
                                 if (LOWORD(wParam) != WA_INACTIVE) {                                  if (LOWORD(wParam) != WA_INACTIVE) {
                                         GXResume();                                          GXResume();
   #if defined(GX_DLL)
                                         scrnmng_enable(TRUE);                                          scrnmng_enable(TRUE);
   #endif
                                         scrndraw_redraw();                                          scrndraw_redraw();
                                         soundmng_enable(SNDPROC_MAIN);                                          soundmng_enable(SNDPROC_MAIN);
                                           sysrunning |= SYSRUNNING_FORE;
                                 }                                  }
                                 else {                                  else {
                                           sysrunning &= ~SYSRUNNING_FORE;
                                         soundmng_disable(SNDPROC_MAIN);                                          soundmng_disable(SNDPROC_MAIN);
   #if defined(GX_DLL)
                                         scrnmng_enable(FALSE);                                          scrnmng_enable(FALSE);
   #endif
                                         GXSuspend();                                          GXSuspend();
                                 }                                  }
                         }                          }
Line 250  static void processwait(UINT cnt) { Line 299  static void processwait(UINT cnt) {
                 timing_setcount(0);                  timing_setcount(0);
                 framereset(cnt);                  framereset(cnt);
         }          }
   #if !defined(_WIN32_WCE)
         else {          else {
                 Sleep(1);                  Sleep(1);
         }          }
   #endif
 }  }
   
   
 // ----  // ----
   
 #if !defined(UNICODE)  #if defined(_WIN32_WCE)
 #define GetModuleFileName_A(a, b, c)    GetModuleFileName(a, b, c)  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
                                                                                   LPWSTR lpszCmdLine, int nCmdShow)
   #elif defined(UNICODE)
   int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
                                                                                   LPSTR lpszCmdLine, int nCmdShow)
 #else  #else
 static DWORD GetModuleFileName_A(HMODULE hModule,  
                                                                 LPSTR lpFileName, DWORD nSize) {  
   
         TCHAR   *FileNameW;  
         DWORD   len;  
   
         if (nSize) {  
                 FileNameW = (TCHAR *)_MALLOC(nSize * sizeof(TCHAR), "ModuleFile");  
                 if (FileNameW) {  
                         len = GetModuleFileName(hModule, FileNameW, nSize);  
                         nSize = WideCharToMultiByte(CP_ACP, 0, FileNameW, -1,  
                                                                                 lpFileName, nSize, NULL, NULL);  
                         if (nSize) {  
                                 nSize--;  
                         }  
                         _MFREE(FileNameW);  
                 }  
                 else {  
                         nSize = 0;  
                 }  
         }  
         return(nSize);  
 }  
 #endif  
   
 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
                                                                                 LPTSTR lpszCmdLine, int nCmdShow) {                                                                                  LPSTR lpszCmdLine, int nCmdShow)
   #endif
   {
         HWND            hWnd;          HWND            hWnd;
         WNDCLASS        np2;          WNDCLASS        np2;
         int                     id;          int                     id;
Line 306  int WINAPI WinMain(HINSTANCE hInstance,  Line 337  int WINAPI WinMain(HINSTANCE hInstance, 
                 return(0);                  return(0);
         }          }
   
         GetModuleFileName_A(NULL, modulefile, sizeof(modulefile));  #if defined(OEMCHAR_SAME_TCHAR)
           GetModuleFileName(NULL, modulefile, NELEMENTS(modulefile));
   #else
           TCHAR _modulefile[MAX_PATH];
           GetModuleFileName(NULL, _modulefile, NELEMENTS(_modulefile));
           tchartooem(modulefile, NELEMENTS(modulefile), _modulefile, (UINT)-1);
   #endif
         dosio_init();          dosio_init();
         file_setcd(modulefile);          file_setcd(modulefile);
         initload();          initload();
Line 318  int WINAPI WinMain(HINSTANCE hInstance,  Line 355  int WINAPI WinMain(HINSTANCE hInstance, 
         TRACEINIT();          TRACEINIT();
   
         inputmng_init();          inputmng_init();
         keystat_reset();          keystat_initialize();
   
 //      if (!hPreInst) {  //      if (!hPreInst) {
                 np2.style = CS_HREDRAW | CS_VREDRAW;                  np2.style = CS_HREDRAW | CS_VREDRAW;
Line 336  int WINAPI WinMain(HINSTANCE hInstance,  Line 373  int WINAPI WinMain(HINSTANCE hInstance, 
                 }                  }
 //      }  //      }
   
 #if !defined(WIN32_PLATFORM_PSPC)  #if !defined(GX_DLL)
         hWnd = CreateWindow(szClassName, szAppCaption,          hWnd = CreateWindow(szClassName, szAppCaption,
                                                 WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION |                                                  WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION |
                                                 WS_MINIMIZEBOX,                                                  WS_MINIMIZEBOX,
                                                 0, 0, FULLSCREEN_WIDTH, FULLSCREEN_HEIGHT,                                                  np2oscfg.winx, np2oscfg.winy,
                                                   FULLSCREEN_WIDTH, FULLSCREEN_HEIGHT,
                                                 NULL, NULL, hInstance, NULL);                                                  NULL, NULL, hInstance, NULL);
 #else  #else
         hWnd = CreateWindow(szClassName, szAppCaption,          hWnd = CreateWindow(szClassName, szAppCaption,
                                                 WS_VISIBLE,                                                  WS_VISIBLE,
                                                 0, 0,                                                   0, 0,
                                         GetSystemMetrics(SM_CXSCREEN),                                          GetSystemMetrics(SM_CXSCREEN),
                                         GetSystemMetrics(SM_CYSCREEN),                                          GetSystemMetrics(SM_CYSCREEN),
                                                 NULL, NULL, hInstance, NULL);                                                  NULL, NULL, hInstance, NULL);
Line 366  int WINAPI WinMain(HINSTANCE hInstance,  Line 404  int WINAPI WinMain(HINSTANCE hInstance, 
         }          }
         if (scrnmng_create(hWnd, FULLSCREEN_WIDTH, FULLSCREEN_HEIGHT)          if (scrnmng_create(hWnd, FULLSCREEN_WIDTH, FULLSCREEN_HEIGHT)
                                                                                                                                 != SUCCESS) {                                                                                                                                  != SUCCESS) {
                 MessageBox(hWnd, STRLITERAL("Couldn't create DirectDraw Object"),                  MessageBox(hWnd, _T("Couldn't create DirectDraw Object"),
                                                                         szAppCaption, MB_OK | MB_ICONSTOP);                                                                          szAppCaption, MB_OK | MB_ICONSTOP);
                 DestroyWindow(hWnd);                  DestroyWindow(hWnd);
                 goto np2main_err2;                  goto np2main_err2;
Line 376  int WINAPI WinMain(HINSTANCE hInstance,  Line 414  int WINAPI WinMain(HINSTANCE hInstance, 
                 DestroyWindow(hWnd);                  DestroyWindow(hWnd);
                 goto np2main_err3;                  goto np2main_err3;
         }          }
           gx_keylist = GXGetDefaultKeys(GX_NORMALKEYS);
           scrnmng_keybinds();
   #if defined(WIN32_PLATFORM_PSPC)
           winkbd_bindinit();
   #endif
   
         soundmng_initialize();          soundmng_initialize();
         commng_initialize();          commng_initialize();
Line 387  int WINAPI WinMain(HINSTANCE hInstance,  Line 430  int WINAPI WinMain(HINSTANCE hInstance, 
         pccore_reset();          pccore_reset();
         scrndraw_redraw();          scrndraw_redraw();
   
         sysrunning = TRUE;  #if defined(WIN32_PLATFORM_PSPC)
           winkbd_bindcur(np2oscfg.bindcur);
           winkbd_bindbtn(np2oscfg.bindbtn);
   #endif
   
           sysrunning |= SYSRUNNING_MAIN | SYSRUNNING_FORE;
   
         if (np2oscfg.resume) {          if (np2oscfg.resume) {
                 id = flagload(str_sav, str_resume, FALSE);                  id = flagload(str_sav, str_resume, FALSE);
Line 402  int WINAPI WinMain(HINSTANCE hInstance,  Line 450  int WINAPI WinMain(HINSTANCE hInstance, 
                         if (!GetMessage(&msg, NULL, 0, 0)) {                          if (!GetMessage(&msg, NULL, 0, 0)) {
                                 break;                                  break;
                         }                          }
 #if !defined(_WIN32_WCE)  #if 1 // !defined(_WIN32_WCE)
                         if ((msg.hwnd != hWnd) ||                          if ((msg.hwnd != hWnd) ||
                                 ((msg.message != WM_SYSKEYDOWN) &&                                  ((msg.message != WM_SYSKEYDOWN) &&
                                 (msg.message != WM_SYSKEYUP))) {                                  (msg.message != WM_SYSKEYUP))) {
Line 413  int WINAPI WinMain(HINSTANCE hInstance,  Line 461  int WINAPI WinMain(HINSTANCE hInstance, 
 #endif  #endif
                         DispatchMessage(&msg);                          DispatchMessage(&msg);
                 }                  }
                 else {                  else if (sysrunning & SYSRUNNING_FORE) {
                         if (np2oscfg.NOWAIT) {                          if (np2oscfg.NOWAIT) {
                                 pccore_exec(framecnt == 0);                                  pccore_exec(framecnt == 0);
                                 if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip                                  if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip
Line 469  int WINAPI WinMain(HINSTANCE hInstance,  Line 517  int WINAPI WinMain(HINSTANCE hInstance, 
                                 }                                  }
                         }                          }
                 }                  }
                   else {
                           Sleep(100);
                   }
         }          }
   
         soundmng_disable(SNDPROC_MAIN);          soundmng_disable(SNDPROC_MAIN);

Removed from v.1.1  
changed lines
  Added in v.1.24


RetroPC.NET-CVS <cvs@retropc.net>