Diff for /np2/x11/np2.c between versions 1.2 and 1.27

version 1.2, 2003/11/17 16:12:27 version 1.27, 2007/01/23 15:48:20
Line 10 Line 10
  * 2. Redistributions in binary form must reproduce the above copyright   * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the   *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.   *    documentation and/or other materials provided with the distribution.
  * 3. The name of the author may not be used to endorse or promote products  
  *    derived from this software without specific prior written permission.  
  *   *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
Line 28 Line 26
 #include "compiler.h"  #include "compiler.h"
   
 #include "np2.h"  #include "np2.h"
   #include "pccore.h"
 #include "dosio.h"  #include "dosio.h"
 #include "scrndraw.h"  #include "scrndraw.h"
 #include "statsave.h"  
 #include "timing.h"  #include "timing.h"
 #include "toolkit.h"  #include "toolkit.h"
   
 #include "keydisp.h"  #include "kdispwin.h"
 #include "toolwin.h"  #include "toolwin.h"
   #include "viewer.h"
   #include "debugwin.h"
   #include "skbdwin.h"
   
 #include "commng.h"  #include "commng.h"
   #include "joymng.h"
 #include "kbdmng.h"  #include "kbdmng.h"
 #include "mousemng.h"  #include "mousemng.h"
 #include "scrnmng.h"  #include "scrnmng.h"
 #include "soundmng.h"  #include "soundmng.h"
 #include "sysmng.h"  #include "sysmng.h"
   #include "taskmng.h"
   
   
 NP2OSCFG np2oscfg = {  NP2OSCFG np2oscfg = {
 #if !defined(CPU386)            /* titles */  #if !defined(CPUCORE_IA32)              /* titles */
         "Neko Project II",          "Neko Project II",
 #else  #else
         "Neko Project II + IA32",          "Neko Project II + IA32",
 #endif  #endif
   
         2,                      /* paddingx */          0,                      /* paddingx */
         2,                      /* paddingy */          0,                      /* paddingy */
   
         0,                      /* NOWAIT */          0,                      /* NOWAIT */
         2,                      /* DRAW_SKIP */          0,                      /* DRAW_SKIP */
   
         0,                      /* DISPCLK */          0,                      /* DISPCLK */
   
         KEY_KEY106,             /* KEYBOARD */          KEY_KEY106,             /* KEYBOARD */
         0,                      /* F12COPY */          0,                      /* F12KEY */
   
         0,                      /* MOUSE_SW */          0,                      /* MOUSE_SW */
   
         0,                      /* JOYPAD1 */          0,                      /* JOYPAD1 */
         0,                      /* JOYPAD2 */          0,                      /* JOYPAD2 */
         { 0, 0, 0, 0 },         /* JOY1BTN */          { 1, 2, 5, 6 },         /* JOY1BTN */
           {
                   { 0, 1 },               /* JOYAXISMAP[0] */
                   { 0, 1 },               /* JOYAXISMAP[1] */
           },
           {
                   { 0, 1, 0xff, 0xff },   /* JOYBTNMAP[0] */
                   { 0, 1, 0xff, 0xff },   /* JOYBTNMAP[1] */
           },
           { "", "" },             /* JOYDEV */
   
         { COMPORT_MIDI, 0, 0x3e, 19200, "", "", "", "" },       /* mpu */          { COMPORT_MIDI, 0, 0x3e, 19200, "", "", "", "" },       /* mpu */
           {
                   { COMPORT_NONE, 0, 0x3e, 19200, "", "", "", "" },/* com1 */
                   { COMPORT_NONE, 0, 0x3e, 19200, "", "", "", "" },/* com2 */
                   { COMPORT_NONE, 0, 0x3e, 19200, "", "", "", "" },/* com3 */
           },
   
         0,                      /* confirm */          0,                      /* confirm */
   
Line 77  NP2OSCFG np2oscfg = { Line 95  NP2OSCFG np2oscfg = {
         0,                      /* statsave */          0,                      /* statsave */
         0,                      /* toolwin */          0,                      /* toolwin */
         0,                      /* keydisp */          0,                      /* keydisp */
           0,                      /* softkbd */
         0,                      /* hostdrv_write */          0,                      /* hostdrv_write */
           0,                      /* jastsnd */
         0,                      /* I286SAVE */          0,                      /* I286SAVE */
   
         SNDDRV_NODRV,           /* snddrv */          SNDDRV_SDL,             /* snddrv */
         "",                     /* audiodev */  
         { "", "" },             /* MIDIDEV */          { "", "" },             /* MIDIDEV */
         0,                      /* MIDIWAIT */          0,                      /* MIDIWAIT */
   
         MOUSE_RATIO_100,        /* mouse_move_ratio */          MOUSE_RATIO_100,        /* mouse_move_ratio */
   
 #if defined(USE_GTK)            /* toolkit */  
         "gtk",  
 #else  
         "qt",  
 #endif  
   
         MMXFLAG_DISABLE,        /* disablemmx */          MMXFLAG_DISABLE,        /* disablemmx */
           INTERP_NEAREST,         /* drawinterp */
           0,                      /* F11KEY */
 };  };
   
 BOOL np2running = FALSE;  volatile sig_atomic_t np2running = 0;
 BYTE scrnmode = 0;  BYTE scrnmode = 0;
   
 UINT framecnt = 0;  UINT framecnt = 0;
Line 112  char bmpfilefolder[MAX_PATH]; Line 127  char bmpfilefolder[MAX_PATH];
 char modulefile[MAX_PATH];  char modulefile[MAX_PATH];
 char statpath[MAX_PATH];  char statpath[MAX_PATH];
   
   #ifndef FONTFACE
   #define FONTFACE "-misc-fixed-%s-r-normal--%d-*-*-*-*-*-*-*"
   #endif
   char fontname[1024] = FONTFACE;
   
   #ifndef FONTNAME_DEFAULT
   #define FONTNAME_DEFAULT        "./default.ttf"
   #endif
   char fontfilename[MAX_PATH] = FONTNAME_DEFAULT;
   
 char timidity_cfgfile_path[MAX_PATH];  char timidity_cfgfile_path[MAX_PATH];
   
   int verbose = 0;
   
   
 UINT32  UINT32
 gettick(void)  gettick(void)
Line 180  flagload(const char* ext, const char* ti Line 207  flagload(const char* ext, const char* ti
   
         getstatfilename(path, ext, sizeof(path));          getstatfilename(path, ext, sizeof(path));
         ret = statsave_check(path, buf, sizeof(buf));          ret = statsave_check(path, buf, sizeof(buf));
         if (ret & (~NP2FLAG_DISKCHG)) {          if (ret & (~STATFLAG_DISKCHG)) {
                 fprintf(stderr, "Couldn't restart\n");                  fprintf(stderr, "Couldn't restart\n");
                 rv = 1;                  rv = 1;
         } else if ((!force) && (ret & NP2FLAG_DISKCHG)) {          } else if ((!force) && (ret & STATFLAG_DISKCHG)) {
                 fprintf(stderr, "Conflict\n");                  fprintf(stderr, "Conflict\n");
                 rv = 1;                  rv = 1;
         }          }
Line 214  changescreen(BYTE newmode) Line 241  changescreen(BYTE newmode)
         if (renewal) {          if (renewal) {
                 if (renewal & SCRNMODE_FULLSCREEN) {                  if (renewal & SCRNMODE_FULLSCREEN) {
                         toolwin_destroy();                          toolwin_destroy();
                         keydisp_destroy();                          kdispwin_destroy();
                 }                  }
                 soundmng_stop();                  soundmng_stop();
                 mouse_running(MOUSE_STOP);                  mouse_running(MOUSE_STOP);
Line 234  changescreen(BYTE newmode) Line 261  changescreen(BYTE newmode)
                                         toolwin_create();                                          toolwin_create();
                                 }                                  }
                                 if (np2oscfg.keydisp) {                                  if (np2oscfg.keydisp) {
                                         keydisp_create();                                          kdispwin_create();
                                 }                                  }
                         }                          }
                 }                  }
Line 251  framereset(UINT cnt) Line 278  framereset(UINT cnt)
   
         framecnt = 0;          framecnt = 0;
         scrnmng_dispclock();          scrnmng_dispclock();
         keydisp_draw((BYTE)cnt);          kdispwin_draw((BYTE)cnt);
           skbdwin_process();
           debugwin_process();
         toolwin_draw((BYTE)cnt);          toolwin_draw((BYTE)cnt);
           viewer_allreload(FALSE);
         if (np2oscfg.DISPCLK & 3) {          if (np2oscfg.DISPCLK & 3) {
                 if (sysmng_workclockrenewal()) {                  if (sysmng_workclockrenewal()) {
                         sysmng_updatecaption(3);                          sysmng_updatecaption(3);
Line 268  processwait(UINT cnt) Line 298  processwait(UINT cnt)
                 timing_setcount(0);                  timing_setcount(0);
                 framereset(cnt);                  framereset(cnt);
         } else {          } else {
                 usleep(1);                  taskmng_sleep(1);
         }          }
 }  }
   
 #if defined(__GNUC__) && (defined(i386) || defined(__i386__))  int
   mainloop(void *p)
   {
   
           UNUSED(p);
   
           if (np2oscfg.NOWAIT) {
                   joymng_sync();
                   mousemng_callback();
                   pccore_exec(framecnt == 0);
                   if (np2oscfg.DRAW_SKIP) {
                           /* nowait frame skip */
                           framecnt++;
                           if (framecnt >= np2oscfg.DRAW_SKIP) {
                                   processwait(0);
                           }
                   } else {
                           /* nowait auto skip */
                           framecnt = 1;
                           if (timing_getcount()) {
                                   processwait(0);
                           }
                   }
           } else if (np2oscfg.DRAW_SKIP) {
                   /* frame skip */
                   if (framecnt < np2oscfg.DRAW_SKIP) {
                           joymng_sync();
                           mousemng_callback();
                           pccore_exec(framecnt == 0);
                           framecnt++;
                   } else {
                           processwait(np2oscfg.DRAW_SKIP);
                   }
           } else {
                   /* auto skip */
                   if (waitcnt == 0) {
                           UINT cnt;
                           joymng_sync();
                           mousemng_callback();
                           pccore_exec(framecnt == 0);
                           framecnt++;
                           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;
                   }
           }
   
           return TRUE;
   }
   
   #if defined(GCC_CPU_ARCH_IA32)
 int mmxflag;  int mmxflag;
   
 int  int
Line 280  havemmx(void) Line 377  havemmx(void)
 {  {
         int rv;          int rv;
   
   #if defined(GCC_CPU_ARCH_AMD64)
           rv = 1;
   #else   /* !GCC_CPU_ARCH_AMD64 */
         asm volatile (          asm volatile (
                 "pushf;"                  "pushf;"
                 "popl   %%eax;"                  "popl   %%eax;"
Line 300  havemmx(void) Line 400  havemmx(void)
                 "andl   $0x00800000, %0;"                  "andl   $0x00800000, %0;"
         ".nocpuid:"          ".nocpuid:"
                 : "=a" (rv));                  : "=a" (rv));
   #endif /* GCC_CPU_ARCH_AMD64 */
         return rv;          return rv;
 }  }
 #endif  
   #endif /* GCC_CPU_ARCH_IA32 */

Removed from v.1.2  
changed lines
  Added in v.1.27


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