Diff for /xmil/win9x/xmil.cpp between versions 1.6 and 1.13

version 1.6, 2004/08/04 17:09:25 version 1.13, 2004/08/08 16:39:04
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 215  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 215  LRESULT CALLBACK WndProc(HWND hWnd, UINT
                                         break;                                          break;
   
                                 case IDM_TURBOZ:                                  case IDM_TURBOZ:
                                         xmenu_setiplrom(3);                                          menu_setiplrom(3);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_TURBO:                                  case IDM_TURBO:
                                         xmenu_setiplrom(2);                                          menu_setiplrom(2);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_X1ROM:                                  case IDM_X1ROM:
                                         xmenu_setiplrom(1);                                          menu_setiplrom(1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_BOOT2D:                                  case IDM_BOOT2D:
                                         xmenu_setbootmedia(0);                                          menu_setbootmedia(0);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_BOOT2HD:                                  case IDM_BOOT2HD:
                                         xmenu_setbootmedia(DIPSW_BOOTMEDIA);                                          menu_setbootmedia(DIPSW_BOOTMEDIA);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_HIGHRES:                                  case IDM_HIGHRES:
                                         xmenu_setresolute(0);                                          menu_setresolute(0);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_LOWRES:                                  case IDM_LOWRES:
                                         xmenu_setresolute(DIPSW_RESOLUTE);                                          menu_setresolute(DIPSW_RESOLUTE);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
Line 259  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 259  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
                                 case IDM_WIDTH80:                                  case IDM_WIDTH80:
                                         crtc.s.TXT_XL = 80;                                          crtc.s.TXT_XL = 80;
                                         crtc.s.GRP_XL = 640;  //                                      crtc.s.GRP_XL = 640;
                                         vrambank_patch();                                          vrambank_patch();
                                         scrnallflash = 1;                                          scrnallflash = 1;
                                         break;                                          break;
   
                                 case IDM_WIDTH40:                                  case IDM_WIDTH40:
                                         crtc.s.TXT_XL = 40;                                          crtc.s.TXT_XL = 40;
                                         crtc.s.GRP_XL = 320;  //                                      crtc.s.GRP_XL = 320;
                                         vrambank_patch();                                          vrambank_patch();
                                         scrnallflash = 1;                                          scrnallflash = 1;
                                         break;                                          break;
   
                                 case IDM_DISPSYNC:                                  case IDM_DISPSYNC:
                                         xmenu_setdispmode(xmilcfg.DISPSYNC ^ 1);                                          menu_setdispmode(xmilcfg.DISPSYNC ^ 1);
                                           updateflag = SYS_UPDATECFG;
                                           break;
   
                                   case IDM_RASTER:
                                           menu_setraster(xmilcfg.RASTER ^ 1);
                                           updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_NOWAIT:                                  case IDM_NOWAIT:
                                         xmenu_setwaitflg(xmilcfg.NOWAIT ^ 1);                                          menu_setwaitflg(xmiloscfg.NOWAIT ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_RASTER:                                  case IDM_AUTOFPS:
                                         xmenu_setframe(0);                                          menu_setframe(0);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_60FPS:                                  case IDM_60FPS:
                                         xmenu_setframe(1);                                          menu_setframe(1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_30FPS:                                  case IDM_30FPS:
                                         xmenu_setframe(2);                                          menu_setframe(2);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_20FPS:                                  case IDM_20FPS:
                                         xmenu_setframe(3);                                          menu_setframe(3);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_15FPS:                                  case IDM_15FPS:
                                         xmenu_setframe(4);                                          menu_setframe(4);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_KEY:                                  case IDM_KEY:
                                         xmenu_setkey(0);                                          menu_setkey(0);
                                         break;                                          break;
   
                                 case IDM_JOY1:                                  case IDM_JOY1:
                                         xmenu_setkey(1);                                          menu_setkey(1);
                                         break;                                          break;
   
                                 case IDM_JOY2:                                  case IDM_JOY2:
                                         xmenu_setkey(2);                                          menu_setkey(2);
                                         break;                                          break;
   
                                 case IDM_FMBOARD:                                  case IDM_FMBOARD:
                                         xmenu_setsound(xmilcfg.SOUND_SW ^ 1);                                          menu_setsound(xmilcfg.SOUND_SW ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_JOYSTICK:                                  case IDM_JOYSTICK:
                                         xmenu_setjoystick(xmiloscfg.JOYSTICK ^ 1);                                          menu_setjoystick(xmiloscfg.JOYSTICK ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_MOUSE:                                  case IDM_MOUSE:
                                 //      mousemng_toggle(MOUSEPROC_SYSTEM);                                  //      mousemng_toggle(MOUSEPROC_SYSTEM);
                                         xmenu_setmouse(xmilcfg.MOUSE_SW ^ 1);                                          menu_setmouse(xmilcfg.MOUSE_SW ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_8MHZ:                                  case IDM_8MHZ:
                                         xmenu_setcpuspeed(xmilcfg.CPU8MHz ^ 1);                                          menu_setcpuspeed(xmilcfg.CPU8MHz ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_SEEKSND:                                  case IDM_SEEKSND:
                                         xmenu_setmotorflg(xmilcfg.MOTOR ^ 1);                                          menu_setmotorflg(xmilcfg.MOTOR ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
Line 356  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 362  LRESULT CALLBACK WndProc(HWND hWnd, UINT
                                         break;                                          break;
   
                                 case IDM_DISPCLOCK:                                  case IDM_DISPCLOCK:
                                         xmenu_setdispclk(xmiloscfg.DISPCLK ^ 1);                                          menu_setdispclk(xmiloscfg.DISPCLK ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_DISPFRAME:                                  case IDM_DISPFRAME:
                                         xmenu_setdispclk(xmiloscfg.DISPCLK ^ 2);                                          menu_setdispclk(xmiloscfg.DISPCLK ^ 2);
                                         updateflag = SYS_UPDATECFG;  
                                         break;  
   
                                 case IDM_SKIPLINE:  
                                         xmenu_setskipline(xmilcfg.SKIP_LINE ^ 1);  
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_JOYX:                                  case IDM_JOYX:
                                         xmenu_setbtnmode(xmilcfg.BTN_MODE ^ 1);                                          menu_setbtnmode(xmilcfg.BTN_MODE ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_RAPID:                                  case IDM_RAPID:
                                         xmenu_setbtnrapid(xmilcfg.BTN_RAPID ^ 1);                                          menu_setbtnrapid(xmilcfg.BTN_RAPID ^ 1);
                                         updateflag = SYS_UPDATECFG;                                          updateflag = SYS_UPDATECFG;
                                         break;                                          break;
   
                                 case IDM_HALFBMP:  
                                         winuienter();  
                                         bmpsavehalf();  
                                         winuileave();  
                                         break;  
   
                                 case IDM_Z80SAVE:                                  case IDM_Z80SAVE:
                                         debugsub_status();                                          debugsub_status();
                                         break;                                          break;
Line 402  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 397  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 498  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 493  LRESULT CALLBACK WndProc(HWND hWnd, UINT
                 case WM_KEYDOWN:                  case WM_KEYDOWN:
                         if (wParam == VK_F12) {                          if (wParam == VK_F12) {
                                 mousemng_toggle(MOUSEPROC_SYSTEM);                                  mousemng_toggle(MOUSEPROC_SYSTEM);
                         //      xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1);                          //      menu_setmouse(np2oscfg.MOUSE_SW ^ 1);
                         //      sysmng_update(SYS_UPDATECFG);                          //      sysmng_update(SYS_UPDATECFG);
                         }                          }
                         else {                          else {
Line 578  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 573  LRESULT CALLBACK WndProc(HWND hWnd, UINT
   
                 case WM_MBUTTONDOWN:                  case WM_MBUTTONDOWN:
                         mousemng_toggle(MOUSEPROC_SYSTEM);                          mousemng_toggle(MOUSEPROC_SYSTEM);
                 //      xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1);                  //      menu_setmouse(np2oscfg.MOUSE_SW ^ 1);
                 //      sysmng_update(SYS_UPDATECFG);                  //      sysmng_update(SYS_UPDATECFG);
                         break;                          break;
   
Line 629  LRESULT CALLBACK WndProc(HWND hWnd, UINT Line 624  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 672  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 721  int WINAPI WinMain(HINSTANCE hInstance, 
         hWndMain = hWnd;          hWndMain = hWnd;
         scrnmng_initialize();          scrnmng_initialize();
   
         sysmng_updatecaption(3);          menu_setiplrom(xmilcfg.ROM_TYPE);
           menu_setbootmedia(xmilcfg.DIP_SW);
         xmenu_setiplrom(xmilcfg.ROM_TYPE);          menu_setresolute(xmilcfg.DIP_SW);
         xmenu_setsound(xmilcfg.SOUND_SW);          menu_setdispmode(xmilcfg.DISPSYNC);
         xmenu_setskipline(xmilcfg.SKIP_LINE);          menu_setraster(xmilcfg.RASTER);
         xmenu_setresolute(xmilcfg.DIP_SW);          menu_setwaitflg(xmiloscfg.NOWAIT);
         xmenu_setbootmedia(xmilcfg.DIP_SW);          menu_setframe(xmiloscfg.DRAW_SKIP);
         xmenu_setkey(0);          menu_setkey(0);
         xmenu_setbtnrapid(xmilcfg.BTN_RAPID);          menu_setsound(xmilcfg.SOUND_SW);
         xmenu_setbtnmode(xmilcfg.BTN_MODE);          menu_setjoystick(xmiloscfg.JOYSTICK);
         xmenu_setcpuspeed(xmilcfg.CPU8MHz);          menu_setmouse(xmilcfg.MOUSE_SW);
         xmenu_setwaitflg(xmilcfg.NOWAIT);          menu_setcpuspeed(xmilcfg.CPU8MHz);
         xmenu_setframe(xmilcfg.DRAW_SKIP);          menu_setmotorflg(xmilcfg.MOTOR);
         xmenu_setmotorflg(xmilcfg.MOTOR);          menu_setdispclk(xmiloscfg.DISPCLK);
         xmenu_setz80save(xmiloscfg.Z80SAVE);          menu_setbtnmode(xmilcfg.BTN_MODE);
         xmenu_setjoystick(xmiloscfg.JOYSTICK);          menu_setbtnrapid(xmilcfg.BTN_RAPID);
         xmenu_setdispclk(xmiloscfg.DISPCLK);  
         xmenu_setdispmode(xmilcfg.DISPSYNC);  
         xmenu_setmouse(xmilcfg.MOUSE_SW);  
   
         ShowWindow(hWnd, nCmdShow);          ShowWindow(hWnd, nCmdShow);
         UpdateWindow(hWnd);          UpdateWindow(hWnd);
   
         sysmenu_initialize();          sysmenu_initialize();
 //      xmenu_initialize();          menu_initialize();
         DrawMenuBar(hWnd);          DrawMenuBar(hWnd);
   
         sysmenu_setwinsnap(xmiloscfg.WINSNAP);          sysmenu_setwinsnap(xmiloscfg.WINSNAP);
Line 720  int WINAPI WinMain(HINSTANCE hInstance,  Line 759  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);
                 soundmng_pcmload(SOUND_PCMSEEK1, OEMTEXT("fddseek1.wav"), 0);                  soundmng_pcmload(SOUND_PCMSEEK1, OEMTEXT("fddseek1.wav"), 0);
Line 733  int WINAPI WinMain(HINSTANCE hInstance,  Line 770  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 793  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);
                                                   }
                                           }
                                   }
                                   else if (xmiloscfg.DRAW_SKIP) {         // frame skip
                                           if (framecnt < xmiloscfg.DRAW_SKIP) {
                                                   exec1frame();
                                           }
                                           else {
                                                   processwait(xmiloscfg.DRAW_SKIP);
                                         }                                          }
                                 }                                  }
                                 if ((xmilcfg.NOWAIT) || (timing_getcount())) {                                  else {                                                          // auto skip
                                         timing_setcount(0);                                          if (!waitcnt) {
                                         joymng_sync();                                                  UINT cnt;
                                         mousemng_sync();                                                  exec1frame();
                                         juliet2_sync(25);                                                  cnt = timing_getcount();
                                         x1r_exec();                                                  if (framecnt > cnt) {
                                         x1f_sync();                                                          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.6  
changed lines
  Added in v.1.13


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