Diff for /xmil/win9x/xmil.cpp between versions 1.7 and 1.11

version 1.7, 2004/08/05 11:30:12 version 1.11, 2004/08/08 06:59:22
Line 10 Line 10
 #include        "scrnmng.h"  #include        "scrnmng.h"
 #include        "soundmng.h"  #include        "soundmng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
 #include        "scrndraw.h"  
 #include        "ddrawbmp.h"  #include        "ddrawbmp.h"
 #include        "winloc.h"  #include        "winloc.h"
 #include        "dclock.h"  #include        "dclock.h"
 #include        "winkbd.h"  #include        "winkbd.h"
 #include        "menu.h"  #include        "menu.h"
 #include        "ini.h"  #include        "ini.h"
   #include        "juliet.h"
 #include        "extclass.h"  #include        "extclass.h"
 #include        "dialog.h"  #include        "dialog.h"
   
 #include        "z80core.h"  #include        "z80core.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "timing.h"  #include        "timing.h"
 #include        "draw.h"  #include        "keystat.h"
 #include        "fdd_ini.h"  
 #include        "juliet.h"  
 #include        "diskdrv.h"  
 #include        "debugsub.h"  #include        "debugsub.h"
   #include        "scrndraw.h"
   #include        "makescrn.h"
   #include        "diskdrv.h"
   #include        "fdd_ini.h"
 #include        "x1f.h"  #include        "x1f.h"
   
   
Line 36  static const OEMCHAR szClassName[] = OEM Line 36  static const OEMCHAR szClassName[] = OEM
   
                 XMILOSCFG       xmiloscfg = {                  XMILOSCFG       xmiloscfg = {
                                                         CW_USEDEFAULT, CW_USEDEFAULT,                                                          CW_USEDEFAULT, CW_USEDEFAULT,
                                                         1, 0, 0,                                                          1, 0, 0, 0, 1,
                                                         0, 0, 0,                                                          0, 0, 0,
                                                         0, 0, 0xffffff, 0xffbf6a};                                                          0, 0, 0xffffff, 0xffbf6a};
   
Line 48  static const OEMCHAR szClassName[] = OEM Line 48  static const OEMCHAR szClassName[] = OEM
                 OEMCHAR         fddfolder[MAX_PATH];                  OEMCHAR         fddfolder[MAX_PATH];
                 OEMCHAR         bmpfilefolder[MAX_PATH];                  OEMCHAR         bmpfilefolder[MAX_PATH];
   
 static  BYTE            xmilforeground = 0;  static  BRESULT         xmilstopemulate = FALSE;
                 BYTE            xmilopening = 1;                  UINT8           xmilopening = 1;
   
   
 static void wincentering(HWND hWnd) {  static void wincentering(HWND hWnd) {
Line 273  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 273  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
                                 case IDM_DISPSYNC:                                  case IDM_DISPSYNC:
                                         xmenu_setdispmode(xmilcfg.DISPSYNC ^ 1);                                          xmenu_setdispmode(xmilcfg.DISPSYNC ^ 1);
                                           updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
   //                              case IDM_RASTER:
   //                                      menu_setraster(xmilcfg.RASTER ^ 1);
   //                                      updateflag = SYS_UPDATECFG;
   //                                      break;
   
                                 case IDM_NOWAIT:                                  case IDM_NOWAIT:
                                         xmenu_setwaitflg(xmilcfg.NOWAIT ^ 1);                                          xmenu_setwaitflg(xmiloscfg.NOWAIT ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_RASTER:                                  case IDM_AUTOFPS:
                                         xmenu_setframe(0);                                          xmenu_setframe(0);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
Line 402  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 408  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
                 case WM_ACTIVATE:                  case WM_ACTIVATE:
                         if (LOWORD(wParam) != WA_INACTIVE) {                          if (LOWORD(wParam) != WA_INACTIVE) {
                                 xmilforeground = 0;                                  xmilstopemulate = FALSE;
                                 scrnmng_update();                                  scrnmng_update();
                                 mousemng_enable(MOUSEPROC_BG);                                  mousemng_enable(MOUSEPROC_BG);
                                 soundmng_enable(SNDPROC_MASTER);                                  soundmng_enable(SNDPROC_MASTER);
                         }                          }
                         else {                          else {
                                 xmilforeground = 1;  
                                 mousemng_disable(MOUSEPROC_BG);                                  mousemng_disable(MOUSEPROC_BG);
                                   xmilstopemulate = (xmiloscfg.background & 1)?TRUE:FALSE;
                                 if (xmiloscfg.background) {                                  if (xmiloscfg.background) {
                                         soundmng_disable(SNDPROC_MASTER);                                          soundmng_disable(SNDPROC_MASTER);
                                 }                                  }
Line 629  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 635  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
 // ----  // ----
   
   static  UINT    framecnt = 0;
   static  UINT    waitcnt = 0;
   static  UINT    framemax = 1;
   
   static void framereset(UINT cnt) {
   
           framecnt = 0;
           scrnmng_dispclock();
   //      kdispwin_draw((BYTE)cnt);
   //      skbdwin_process();
   //      mdbgwin_process();
   //      toolwin_draw((BYTE)cnt);
   //      viewer_allreload(FALSE);
           if (xmiloscfg.DISPCLK & 3) {
                   if (sysmng_workclockrenewal()) {
                           sysmng_updatecaption(3);
                   }
           }
   }
   
   static void processwait(UINT cnt) {
   
           if (timing_getcount() >= cnt) {
                   timing_setcount(0);
                   framereset(cnt);
           }
           else {
                   Sleep(1);
           }
           soundmng_sync();
   }
   
   static void exec1frame(void) {
   
           joymng_sync();
           mousemng_sync();
           pccore_exec(framecnt == 0);
           dclock_callback();
           framecnt++;
   }
   
 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
                                                                                 LPSTR lpszCmdLine, int nCmdShow) {                                                                                  LPSTR lpszCmdLine, int nCmdShow) {
   
Line 636  int WINAPI WinMain(HINSTANCE hInstance,  Line 683  int WINAPI WinMain(HINSTANCE hInstance, 
         WNDCLASS        wc;          WNDCLASS        wc;
         MSG                     msg;          MSG                     msg;
   
           GetModuleFileName(NULL, modulefile, sizeof(modulefile));
           dosio_init();
           file_setcd(modulefile);
           initload();
   
   //      rand_setseed((unsigned)time(NULL));
   
         hWnd = FindWindow(szClassName, NULL);          hWnd = FindWindow(szClassName, NULL);
         if (hWnd != NULL) {          if (hWnd != NULL) {
                 ShowWindow(hWnd, SW_RESTORE);                  ShowWindow(hWnd, SW_RESTORE);
                 SetForegroundWindow(hWnd);                  SetForegroundWindow(hWnd);
                   dosio_term();
                 return(FALSE);                  return(FALSE);
         }          }
   
         GetModuleFileName(NULL, modulefile, sizeof(modulefile));  
         file_setcd(modulefile);  
         initload();  
   
         hInst = hInstance;          hInst = hInstance;
         hPreI = hPreInst;          hPreI = hPreInst;
         TRACEINIT();          TRACEINIT();
   
   //      keystat_initialize();
   
         if (!hPreInst) {          if (!hPreInst) {
                 wc.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW;                  wc.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW;
                 wc.lpfnWndProc = WndProc;                  wc.lpfnWndProc = WndProc;
Line 679  int WINAPI WinMain(HINSTANCE hInstance,  Line 732  int WINAPI WinMain(HINSTANCE hInstance, 
         hWndMain = hWnd;          hWndMain = hWnd;
         scrnmng_initialize();          scrnmng_initialize();
   
         sysmng_updatecaption(3);  
   
         xmenu_setiplrom(xmilcfg.ROM_TYPE);          xmenu_setiplrom(xmilcfg.ROM_TYPE);
         xmenu_setsound(xmilcfg.SOUND_SW);  
         xmenu_setskipline(xmilcfg.SKIP_LINE);  
         xmenu_setresolute(xmilcfg.DIP_SW);  
         xmenu_setbootmedia(xmilcfg.DIP_SW);          xmenu_setbootmedia(xmilcfg.DIP_SW);
           xmenu_setresolute(xmilcfg.DIP_SW);
           xmenu_setdispmode(xmilcfg.DISPSYNC);
   //      xmenu_setraster(xmilcfg.RASTER);
           xmenu_setwaitflg(xmiloscfg.NOWAIT);
           xmenu_setframe(xmiloscfg.DRAW_SKIP);
         xmenu_setkey(0);          xmenu_setkey(0);
         xmenu_setbtnrapid(xmilcfg.BTN_RAPID);          xmenu_setsound(xmilcfg.SOUND_SW);
         xmenu_setbtnmode(xmilcfg.BTN_MODE);          xmenu_setjoystick(xmiloscfg.JOYSTICK);
           xmenu_setmouse(xmilcfg.MOUSE_SW);
         xmenu_setcpuspeed(xmilcfg.CPU8MHz);          xmenu_setcpuspeed(xmilcfg.CPU8MHz);
         xmenu_setwaitflg(xmilcfg.NOWAIT);  
         xmenu_setframe(xmilcfg.DRAW_SKIP);  
         xmenu_setmotorflg(xmilcfg.MOTOR);          xmenu_setmotorflg(xmilcfg.MOTOR);
         xmenu_setz80save(xmiloscfg.Z80SAVE);  
         xmenu_setjoystick(xmiloscfg.JOYSTICK);  
         xmenu_setdispclk(xmiloscfg.DISPCLK);          xmenu_setdispclk(xmiloscfg.DISPCLK);
         xmenu_setdispmode(xmilcfg.DISPSYNC);          xmenu_setskipline(xmilcfg.SKIP_LINE);
         xmenu_setmouse(xmilcfg.MOUSE_SW);          xmenu_setbtnmode(xmilcfg.BTN_MODE);
           xmenu_setbtnrapid(xmilcfg.BTN_RAPID);
           xmenu_setz80save(xmiloscfg.Z80SAVE);
   
         ShowWindow(hWnd, nCmdShow);          ShowWindow(hWnd, nCmdShow);
         UpdateWindow(hWnd);          UpdateWindow(hWnd);
Line 720  int WINAPI WinMain(HINSTANCE hInstance,  Line 772  int WINAPI WinMain(HINSTANCE hInstance, 
                         return(FALSE);                          return(FALSE);
                 }                  }
         }          }
         joymng_initialize();  
   
         juliet_load();          juliet_load();
         juliet_prepare();          juliet_prepare();
   
 //      juliet2_reset();  //      juliet2_reset();
         if (soundmng_initialize() == SUCCESS) {          if (soundmng_initialize() == SUCCESS) {
                 soundmng_pcmload(SOUND_PCMSEEK, OEMTEXT("fddseek.wav"), 0);                  soundmng_pcmload(SOUND_PCMSEEK, OEMTEXT("fddseek.wav"), 0);
Line 733  int WINAPI WinMain(HINSTANCE hInstance,  Line 783  int WINAPI WinMain(HINSTANCE hInstance, 
                 soundmng_pcmvolume(SOUND_PCMSEEK1, xmilcfg.MOTORVOL);                  soundmng_pcmvolume(SOUND_PCMSEEK1, xmilcfg.MOTORVOL);
         }          }
   
           sysmng_initialize();
           joymng_initialize();
   
         pccore_initialize();          pccore_initialize();
         pccore_reset();          pccore_reset();
   
Line 753  int WINAPI WinMain(HINSTANCE hInstance,  Line 806  int WINAPI WinMain(HINSTANCE hInstance, 
         xmilopening = 0;          xmilopening = 0;
   
         while(1) {          while(1) {
                 if (!(xmiloscfg.background & xmilforeground)) {                  if (!xmilstopemulate) {
                         if (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) {                          if (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) {
                                 if (!GetMessage(&msg, NULL, 0, 0)) {                                  if (!GetMessage(&msg, NULL, 0, 0)) {
                                         break;                                          break;
                                 }                                  }
                                 if ((msg.message != WM_SYSKEYDOWN) &&                                  if ((msg.hwnd != hWnd) ||
                                         (msg.message != WM_SYSKEYUP)) {                                          ((msg.message != WM_SYSKEYDOWN) &&
                                           (msg.message != WM_SYSKEYUP))) {
                                         TranslateMessage(&msg);                                          TranslateMessage(&msg);
                                 }                                  }
                                 DispatchMessage(&msg);                                  DispatchMessage(&msg);
                         }                          }
                         else {                          else {
                                 if (xmiloscfg.DISPCLK) {                                  if (xmiloscfg.NOWAIT) {
                                         if (sysmng_workclockrenewal()) {                                          exec1frame();
                                                 sysmng_updatecaption(2);                                          if (xmiloscfg.DRAW_SKIP) {              // nowait frame skip
                                                   if (framecnt >= xmiloscfg.DRAW_SKIP) {
                                                           processwait(0);
                                                   }
                                           }
                                           else {                                                  // nowait auto skip
                                                   if (timing_getcount()) {
                                                           processwait(0);
                                                   }
                                         }                                          }
                                 }                                  }
                                 if ((xmilcfg.NOWAIT) || (timing_getcount())) {                                  else if (xmiloscfg.DRAW_SKIP) {         // frame skip
                                         timing_setcount(0);                                          if (framecnt < xmiloscfg.DRAW_SKIP) {
                                         joymng_sync();                                                  exec1frame();
                                         mousemng_sync();                                          }
 //                                      juliet2_sync(25);                                          else {
                                         x1r_exec();                                                  processwait(xmiloscfg.DRAW_SKIP);
                                         x1f_sync();                                          }
                                   }
                                   else {                                                          // auto skip
                                           if (!waitcnt) {
                                                   UINT cnt;
                                                   exec1frame();
                                                   cnt = timing_getcount();
                                                   if (framecnt > cnt) {
                                                           waitcnt = framecnt;
                                                           if (framemax > 1) {
                                                                   framemax--;
                                                           }
                                                   }
                                                   else if (framecnt >= framemax) {
                                                           if (framemax < 12) {
                                                                   framemax++;
                                                           }
                                                           if (cnt >= 12) {
                                                                   timing_reset();
                                                           }
                                                           else {
                                                                   timing_setcount(cnt - framecnt);
                                                           }
                                                           framereset(0);
                                                   }
                                           }
                                           else {
                                                   processwait(waitcnt);
                                                   waitcnt = framecnt;
                                           }
                                 }                                  }
                                 soundmng_sync();  
 //                              juliet2_exec();  
                         }                          }
                 }                  }
                 else {                  else {                                                                                  // background sleep
                         if (!GetMessage(&msg, NULL, 0, 0)) {                          if (!GetMessage(&msg, NULL, 0, 0)) {
                                 break;                                  break;
                         }                          }

Removed from v.1.7  
changed lines
  Added in v.1.11


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